#Globals

0 关注者 · 36 帖子

Globals(有没有s)是存储在 InterSystems 数据平台的多维稀疏数组。InterSystems 产品的所有内容(类、表、文档、代码)都存储在Global中。

文档

InterSystems 官方 Claire Zheng · 十月 23

InterSystems IRIS® 数据平台、InterSystems IRIS® for HealthTM 和HealthShare® Health Connect 2025.1.2 2024.1.5 维护版本现已全面上市 (GA)。这些版本包括对最近发布的一些警报和建议的修复,其中包括以下内容:

请通过开发者社区分享您的反馈意见,以便我们共同打造更好的产品。

文档

您可以在这些页面上找到详细的变更列表和升级检查列表:

EAP计划

现在有许多 EAP 可用。请查看此页面并注册您感兴趣的项目。

如何获取软件?

0
0 0
InterSystems 官方 Claire Zheng · 七月 7

InterSystems 发布了新的点式更新,该更新解决的缺陷问题影响以下受支持的产品线的最新先前版本 2025.1.0、2024.1.4、2023.1.6 和 2022.1.7:

  • InterSystems IRIS
  • InterSystems IRIS for Health
  • HealthShare Health Connect

此问题可能导致在使用以下功能时出现意外的 <PROTECT> 错误或访问异常:

  • 隐式命名空间
  • 对数据库的混合只读/读写访问
  • 用于列出例程和全局变量的管理门户页面

症状包括:

  • 命名空间创建故障
  • 在列出例程时,间歇性出现“访问被拒”错误
  • 对于具有只读权限的用户,全局显示页面不返回数据

虽然这些问题并影响访问控制或用户权限,但它们会在多种场景下影响预期的系统行为。

问题得到解决的版本

以下点式版本中修复了该问题:

  • 2025.1.0.230.2
  • 2024.1.4.516.1
  • 2023.1.6.810.1
  • 2022.1.7.116.1

建议使用受影响版本的客户应用相关更新,以确保系统正常运行。

如果您有任何问题或需要支持,请联系 InterSystems 全球响应中心 (WRC)

0
0 0
InterSystems 官方 Claire Zheng · 七月 7

摘要

公告编号 受影响的产品和版本 风险类别和评分 明确要求

DP-439649

产品:

  • InterSystems IRIS®
  • InterSystems IRISfor Health
  • HealthShare®Health Connect

版本:

  • 2025.1.0.225.1
  • 2025.1.0.223.0
  • 2024.1.4
  • 2023.1.6
  • 2022.1.7

操作:
4 – 高风险

系统稳定性:
3 – 中等风险

此问题构成安全漏洞。 它允许用户绕过权限检查或访问其授权命名空间之外的数据

使用隐含命名空间、管理门户或数据库读写/只读混合访问权限

在命名空间之间切换或使用以下任何功能访问环境中的全局变量时,上面列出的 InterSystems 产品中的问题可能会引发意外的 <PROTECT>错误

  • 隐含命名空间
  • 只读访问默认数据库,但读写访问其他地方
  • 列出例程和全局项的管理门户页面

该问题的症状包括:

  • 存在命名空间创建故障 (DP-440830)
  • 在管理门户中列出例程时,间歇性出现访问被拒的情况 (DP-439622)
  • 全局显示实用工具不显示全局变量(如果用户只有只读权限)(DP-440744)
0
0 0
文章 姚 鑫 · 一月 30 2m read

第十一章 F - H 开头的术语

文件流 (file stream)

对象(Objects)

文件流提供了一个接口,用于在外部文件中操作和存储大量基于文本或二进制的数据。IRIS 的流接口可以在 ObjectScriptSQLJava 中用于操作文件流。

最终类 (final class)

对象(Objects)

不能被扩展或子类化的类。

最终方法 (final method)

对象(Objects)

不能被重写的方法。

最终属性 (final property)

对象(Objects)

不能被重写的属性。

外键 (foreign key)

InterSystems SQL

外键约束表中的一列指向另一表中的另一列。为第一列提供的值必须存在于第二列中。

基础 (foundation)

医疗保健(Health care)

InterSystems IRIS for Health&#x2122;HealthShare® 中,启用了医疗保健互操作性的命名空间。

以 G 开头的术语

全局 (global)

系统

多维存储结构。全局在 IRIS 数据库中使用平衡树技术实现。

全局数据库 (globals database)

系统

IRIS 的基础逻辑和物理数据存储结构,其中所有数据都存储在称为“全局”的多重下标数组系统中。

全局目录 (global directory)

系统

0
0 0
文章 liu bo · 九月 19, 2023 4m read

前言 {#1}

ensemble里边实现分页比较麻烦,毕竟对于sql的书写比较麻烦,单表的查询相对简单,对于多表的关联查询单纯的sql不好查询,我们使用sql进行先查询出主表满足条件的rowId,在根据根据满足条件的rowid进行遍历取值。

思路

我们先取对比一下其他数据库实现的原理。

2
0 308
文章 Michael Lei · 十一月 20, 2023 2m read

这是Java 编程比赛的相关文章。
我决定推出一个基于 IRIS Native API for Java 的 CRUD++  Global编辑器。
++因为它不仅仅是C reate、 R ead、 U pdate、 D elete
Global可视化对于立即查看结果始终很重要。

  • 为此,我使用模仿 ZWrite 的树查看器扩展了 API,并且还允许检查子树。
  • $Query Style Navigator 正向和反向操作可轻松找到感兴趣的全局节点。
  • 最后,ZKill 添加了一个选项,可以删除全局节点的内容而不删除下面的子树。

这需要在服务器端有一个小的帮助器类作为默认 API 的扩展

我的策略是拥有一个可从命令行使用的相当适度的界面
就像在 Docker 控制台或终端上一样,并使其尽可能简单。
花哨的图形界面只会分散示例的基本内容。

如果有任何默认值或先前的值,则会在输入提示中显示。
在 Docker 容器中,编辑器已经可以使用了。

  • docker-compose exec iris java gedi docker-compose exec iris java gedi

您首先连接到服务器

0
0 128
文章 water huang · 十月 6, 2023 3m read

iris 是数据平台,更是一种数据库。对于熟悉SQL语句的人来说,会认为“既然是数据库,数据应该就能使用sql语句来查询”。这是对的,但是因为有global这个概念,保存的数据可能在global里面,而没有对应的表,也可能保存在类的参数定义里面。这些数据,不能使用sql直接查询。要查询iris数据库的数据,通常有几种方式:1.直接查询表的数据。2.查询视图。3.调用存储过程(call 命令)。其中要查询“只存于global里面或者类参数里定义的数据”,只有使用存储过程。但是存储过程有个问题,就是程序如果迁移到低版本的cache数据库后,数据类型的定义会有问题,且不再支持使用select的方式,只能使用call。这对于第三方熟悉sql的人员来说很不友好。因此结合global和表的关系,介绍一种我称为“进程表”的表。进程表,指数据只存于该进程中,global的样式为"^||global名“。通常按照默认存储新加一个持久类(对应会生成一个表),然后手动的把global改成进程global,也就是加上”||“。然后写个方法,把需要查询出来的数据写入进程global。这样就能查询出来 了。调用形式为 SELECT * FROM People WHERE People_GLB()=1。

示例如下:

2
0 166
文章 liu bo · 九月 21, 2023 4m read

前言

对于第三方接口进行交互的时候,往往需要大量的进行参数合法性校验。以前的方法就是对每个参数进行验证。如下截图: image

上图的会存在大量的if else if else..,如果字段很多,那导致一个方法存在大量的验证的代码,那我们考虑是否可以进行统一的验证参数的合法性。

思路

平时建立类的时候我们可以写参数MAXLEN=100,TRUNCATE=1 是否截取等,那找找这些参数的定义地方。如截图:

image 那我们想要定义自己的参数,该如何定义呢?根据面向对象设计原则之一:

里氏替换原则(Liskov Substitution Principle,LSP):子类型必须能够替换掉他们的基类型。即,在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有是一个 (is-a) 关系

那我们可以自定义数据类型,继承%Library.String,这样子类继续使用父类的参数,还可以自定义自己的参数。此处以字符串为例,其他的数据类型一样的原理。 自定义类型就为String.

实现

  1. 自定义数据类型

`

1
1 169
文章 Michael Lei · 八月 17, 2023 1m read

受到@Evgeny Shvarov 的问题@Ashok Kumar T 的回复的启发
我已经创建了一个用于把Global下载成 XML 文件的基础

如何使用:
只需调用 http://<your_server>/csp/samples2/dc.Gdown.cls ?GBL=global_name之类的页面

gbl-name 不带首字母 ^(插入符号)
输出具有默认名称 <global_name>.XML 您可以选择。

已知限制:

  • 你必须将它安装在你的源服务器上
  • 它没有经过测试/跨命名空间工作
  • 没有部分下载
  • 错误处理只是基本或缺失

个人还有提升空间。
就是这样:

0
0 144
文章 Weiwei Gu · 八月 4, 2023 3m read

InterSystems IRIS 目前将类限制为 999 个属性。

但是,如果您需要为每个对象存储更多数据该怎么办?

本文将回答这个问题(附加了社区 Python 网关的客串以及如何将广泛的数据集传输到 Python 中)。

答案其实很简单 - InterSystems IRIS 目前将类限制为 999 个属性,但不限制 999 个基元(primitives)。 InterSystems IRIS 中的属性可以是具有 999 个属性的对象等等 - 该限制很容易被忽略。

0
0 141
文章 Michael Lei · 三月 10, 2023 3m read

InterSystems IRIS 2022.2 具有适用于 Python 的原生 SDK (https://docs.intersystems.com/iris20222/csp/docbook/Doc.View.cls?KEY=PA…)。

我们知道如何使用 IRIS Object Script $Order 函数遍历Global数据结构。

SET key= ""FOR { SET key= $ORDER ( ^myglobal (key)) QUIT :key= ""WRITE !, ^myglobal (key) }

如何使用 IRIS Native SDK 从 Python 执行相同的操作?这里有一个代码示例:

0
0 183
文章 Michael Lei · 三月 1, 2023 3m read

尽管作为一个没有资金支持的医科专业学生,Case Western Reserve大学的Jane Hinkle最近在不到一周的时间里利用EHR供应商Epic的去识别化病人数据库Cosmos进行了临床研究,还得了奖。

Cosmos是一个HIPAA限定的数据集,整合了超过1.22亿名患者的Epic EHR数据。

"我们围绕Cosmos建立的概念就是我们所说的自助分析,这意味着Cosmos中的大数据被设置为Cosmos的任何用户都可以访问,"Epic的临床信息学家Dave Little博士在采访中告诉EHRIntelligence。"在简的案例中,我们看到一个医科学生能够带着一个有针对性的问题,从1.22亿的患者数据中找到她所需要的数据来回答这个问题。这在研究界历来是闻所未闻的。"

Hinkle的研究发现,儿科病人从COVID-19引发心肌炎的可能性是COVID-19疫苗的三到五倍。她告诉EHRIntelligence,她最初关注的是一项使用大数据工具来分析阻塞性睡眠呼吸暂停的研究。然而,当关于心肌炎是否是COVID-19疫苗接种的不良反应的问题出现时,Hinkle和她的研究导师、公共卫生硕士、医学博士、MetroHealth 公司的首席医疗信息官David Kaelber转移了他们的重点。

0
0 312
文章 Lilian Huang · 一月 19, 2023 4m read

动机

这个项目是在我考虑如何通过Embedded Python让Python代码自然地处理IRIS globals所提供的可扩展的存储和高效的检索机制时想到的。

我最初的想法是使用globals创建一种Python字典的实现,但很快我就意识到,我应该首先处理对象的抽象问题。

所以,我开始创建一些可以包装Python对象的Python类,在globals中存储和检索它们的数据,也就是说,在IRIS globals中序列化和反序列化Python对象。

它是如何工作的?

像 ObjectScript 的%DispatchGetProperty()%DispatchSetProperty() 和%DispatchMethod()一样, Python 有委托对象的属性和方法调用的方式。

当你设置或获取一个对象属性时,Python 解释器让你通过方式 __setattr__(self, name, value) 和 __getattr(self, name)__来截获这个操作。

请看这个相当基本的例子。

0
0 147
文章 Nicky Zhu · 一月 6, 2023 8m read

国务院于2022年12月19日发布了《中共中央 国务院关于构建数据基础制度更好发挥数据要素作用的意见》(后简称《数据二十条》),如何有效利用数据已经成为下一步的趋势。另一方面,无论是基于数据中台还是数据编织理念,两者也都对如何利用数据提出了构想。因此医疗行业数字化建设的目标已不能再局限于如何收集数据,建立医疗行业数据的流通机制将会是为越来越普遍的需求。

时钟拨回几年前,数据中台概念开始火爆。人们对数据中台的定义、诠释尽管有诸多差异,通过数据中台降低数据共享和利用的成本则是共同的期望。但经过这几年的探索之后,中台已死的观点也在涌现。究其原因,除去中台概念在技术上的不确定,数据流通过程中的责权益的不清晰也是严重的制约因素。毕竟,数据中台自身作为一套技术框架并不能代替法律法规与市场自动将数据转变为商品从而创造出流通价值。

那么,如何能够使数据的流通合规合法,使数据能够如货币和商品一般自由流动,则是我们需要思考和探索的主题,这次《数据二十条》的出现,无疑为医疗信息技术工作者提供了一个明确的思考方向。

0
0 237
文章 Michael Lei · 九月 13, 2022 12m read

  

Globals是InterSystems IRIS的数据持久性的核心。它很灵活,允许存储JSON文档、关系数据、面向对象的数据、OLAP立方体和自定义数据模型,例如思维导图。要了解如何使用globals来存储、删除和获取思维导图数据,请遵循以下步骤:

1. 把repo Clone/git到任意本地目录

$ git clone https://github.com/yurimarx/global-mindmap.git

2. 在该目录下打开Docker 终端并执行:

$ docker-compose build

3. 启动 IRIS 容器:

$ docker-compose up -d

4. 访问 http://localhost:3000 来使用思维导图的前端并创建类似以上的思维导图

本例子的源代码

存储数据 (更多请访问: https://www.npmjs.com/package/mind-elixir):

0
0 236
文章 Michael Lei · 八月 9, 2022 23m read

在这篇文章中,你可以访问InterSystems开发者社区中与学习InterSystems IRIS最相关主题的文章库。找到按机器学习、嵌入式Python、JSON、API和REST应用、管理和配置InterSystems环境、Docker和云、VSCode、SQL、分析/BI、全局、安全、DevOps、互操作性、Native API排列的顶级发表的文章。快来享受学习的乐趣吧!

机器学习

机器学习是建立先进的数据分析和自动化人工活动的一种必要的技术,具有很好的效率。它可以创建认知模型,从现有的数据中学习,并根据其自我调整的算法进行预测、概率计算、分类、识别和 "非创造性 "的人类活动的自动化。

在所有情况下,InterSystems IRIS作为一个数据平台和环境来创建、执行、提供和使用这些机器学习模型。IRIS能够从SQL命令(IntegratedML)中使用ML,使用嵌入式Python和PMML(预测模型标记语言)来执行ML。你可以在以下文章中查看它的功能:

1
0 210
文章 Michael Lei · 六月 7, 2022 3m read

绕过ODBC使用ObjectScript访问远程系统

这是一个在 IRIS 2020.1 和 Caché 2018.1.3 上工作的代码示例
不会与新版本保持同步
也不会获得 InterSystems 提供的支持服务!   

我们经常会遇到这样的情况,由于各种原因ODBC是访问一个远程系统的唯一选择。如果你只需要检查或改变表,这就足够了。但你不能直接执行一些命令或改变一些Global。

特别感谢@Anna Golitsyna 启发我发表此文。

这个例子提供了3种 SQLprocedure 方法来实现访问远程系统这个目的,如果其他的访问方式被阻止,通常是被一些防火墙阻止。

0
0 127
公告 Jeff Liu · 四月 18, 2022

各位开发者们好, 

InterSystems IRIS 数据平台的最大特点之一是它允许您创建自己的自定义,您可以使用InterSystems IRIS 中支持的所有其他模型,例如对象和关系结构,而无需创建任何自定义结构。

⏯  InterSystems Globals与灵活的数据建模 Globals

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" width="650" scrolling="no" src="//player.bilibili.com/player.html?aid=980348263&bvid=BV1s44y1P78C&cid=563611041&page=1"></iframe>

0
0 100
文章 Michael Lei · 二月 23, 2022 2m read

开发者们大家好!

你可能已经注意到了在IRIS 2021 Global的名字是随机的。

如果你用DDL来创建类而且想给Global一个确定的名字,实际上是可以做的。

在CREATE Table  里使用 WITH %CLASSPARAMETER DEFAULTGLOBAL='^GLobalName' ,如文档。参考以下例子:

0
0 134
问题 Michael Lei · 六月 8, 2021

Hi colleagues!

Is there a way to export globals in XML if I have the access to Management Portal or any other web app?

Currently, it gives the option to export into gof format only.

Hi 同事们好!

是否有办法通过管理门户或任何其他的web app以XML的形式导出globals?

目前,它只提供了导出为gof格式的选项。

1
0 153