文章 姚 鑫 · 九月 8 阅读大约需 2 分钟 第二十二章 Classes - 调用类方法的快捷方式 第二十二章 Classes - 调用类方法的快捷方式 调用类方法的快捷方式 使用 ObjectScript 调用类方法时,在以下情况下可以省略包(或更高级别的包): - 引用是在一个类内,并且被引用的类在同一个包或子包中。 - 引用位于类内,并且该类使用 IMPORT 指令导入包含引用的类的包或子包。 - 该引用位于方法内,并且该方法使用 IMPORT 指令导入包含引用的类的包或子包。 从 ObjectScript 或 Python 调用类方法时,在以下情况下可以省略包(或更高级别的包): #InterSystems IRIS for Health 0 0 0 21
文章 姚 鑫 · 七月 7 阅读大约需 3 分钟 第五十一章 开发Productions - ObjectScript Productions - 不常见的任务 第五十一章 开发Productions - ObjectScript Productions - 不常见的任务 定义自定义实用函数 IRIS提供了一组可以从业务规则和DTL中调用的实用函数;这些在开发业务规则的Productions中使用的效用函数中有所描述。可以添加自己的功能,业务规则引擎和业务规则编辑器会自动适应您的扩展。 要添加新的效用函数: #InterSystems IRIS for Health 0 0 0 21
文章 Weiwei Gu · 九月 13 阅读大约需 1 分钟 去掉了 InstallFoundation 的方法 (IRIS 2023.2+ ) 我们最近发布了 IRIS 2023.2版本。 此版本从此类“HS.HC.Util.Installer”中删除了“InstallFoundation”。 这是一个没有记录在官方文档中的私有的方法,但它被社区广泛用来安装 FHIR 服务器。 所以如果你遇到这个错误:<METHOD DOES NOT EXIST> *InstallFoundation,HS.HC.Util.Installer 在构建我们自己的 FHIR 服务器的演示时,您可以通过替换此行来修复它: 把do ##class(HS.HC.Util.Installer).InstallFoundation (namespace) 替换成 Do ##class(HS.Util.Installer.Foundation).Install(namespace) ` #FHIR #InterSystems IRIS for Health 0 0 0 21
文章 姚 鑫 · 八月 10 阅读大约需 3 分钟 第十八章 定义 HL7 搜索表 第十八章 定义 HL7 搜索表 HL7 搜索表类 EnsLib.HL7.SearchTable,自动索引填充的 HL7 属性。 如果需要搜索更多的项,可以创建一个子类。子类继承Identifier属性,以及使搜索表工作的基础结构。具体操作请参见在产品中使用虚拟文档中的“定义搜索表类”。 对于HL7, 支持PropType的附加值。除了在产品中使用虚拟文档中列出的类型之外,还可以使用DateTime:HL7。 创建搜索表时,不要使用保留的包名;参见开发产品中的“保留包名”。 默认索引的属性 当选择EnsLib.HL7。searchtable作为搜索表类,使能够在HL7消息中搜索以下虚拟属性。 MSHTypeName 消息结构名称。为了创建这个字符串,将HL7消息中的以下值连接起来: - MSH消息头段 #InterSystems IRIS for Health 0 0 0 20
文章 姚 鑫 · 七月 1 阅读大约需 4 分钟 第四十五章 开发Productions - ObjectScript Productions - 使用记录映射器 - 记录映射类结构 第四十五章 开发Productions - ObjectScript Productions - 使用记录映射器 - 记录映射类结构 记录映射类结构 有两个类描述记录映射: RecordMap 描述了记录的外部结构,实现了记录解析器和记录编写器。 生成的记录类定义了包含数据的对象的结构。该对象允许在数据转换和路由规则条件中引用数据。 记录映射业务服务读取并解析传入数据并创建一条消息,该消息是生成的记录类的一个实例。业务流程可以读取、修改或生成生成的记录类的实例。最后,记录映射业务操作使用实例中的数据将 RecordMap 用作格式化模板来写入传出数据。 RecordMap 类和生成的记录类都具有描述数据的层次结构,但生成的对象结构不必与 RecordMap 结构相同。 #InterSystems IRIS for Health 0 0 0 20
文章 姚 鑫 · 七月 5 阅读大约需 3 分钟 第四十九章 开发Productions - ObjectScript Productions - 使用复杂记录映射器 - 复杂的记录映射类结构 第四十九章 开发Productions - ObjectScript Productions - 使用复杂记录映射器 - 复杂的记录映射类结构 复杂的记录映射类结构 有两个类以类似于描述记录映射的两个类的方式描述复杂的记录映射。描述复杂记录映射的两个类是: 复杂记录映射,描述复杂记录的外部结构并实现复杂记录解析器和编写器。 生成的复杂记录类定义了包含数据的对象的结构。该对象允许在数据转换和路由规则条件中引用数据。 一个复杂的记录映射业务服务读取并解析传入的数据并创建一条消息,该消息是生成的记录类的一个实例。业务流程可以读取、修改或生成生成的复杂记录类的实例。最后,复杂记录映射业务操作使用实例中的数据,使用复杂记录映射作为格式化模板写入输出数据。复杂记录映射类和生成的复杂记录类都具有描述数据的层次结构。复杂记录映射类和生成的复杂记录类具有并行结构。这与 RecordMap 类不同,其中生成的记录类可以具有不同的层次结构。 #InterSystems IRIS for Health 0 0 0 20
文章 Michael Lei · 十一月 20 阅读大约需 2 分钟 Java 大赛作品展示--基于IRIS 原生 Java API 的Global编辑器 这是Java 编程比赛的相关文章。我决定推出一个基于 IRIS Native API for Java 的 CRUD++ Global编辑器。++因为它不仅仅是C reate、 R ead、 U pdate、 D eleteGlobal可视化对于立即查看结果始终很重要。 为此,我使用模仿 ZWrite 的树查看器扩展了 API,并且还允许检查子树。 $Query Style Navigator 正向和反向操作可轻松找到感兴趣的全局节点。 最后,ZKill 添加了一个选项,可以删除全局节点的内容而不删除下面的子树。 这需要在服务器端有一个小的帮助器类作为默认 API 的扩展 我的策略是拥有一个可从命令行使用的相当适度的界面就像在 Docker 控制台或终端上一样,并使其尽可能简单。花哨的图形界面只会分散示例的基本内容。 #Globals #Java #工具 #InterSystems IRIS #InterSystems IRIS for Health Open Exchange app 0 0 0 19
文章 姚 鑫 · 八月 4 阅读大约需 3 分钟 第十二章 配置Production - 添加HL7序列管理器 第十二章 配置Production - 添加HL7序列管理器 添加HL7序列管理器 HL7消息可能由于各种原因而乱序,特别是在多个处理器处理它们时。在某些情况下,需要确保按照正确的顺序处理HL7消息。在这种情况下,可以将HL7序列管理器添加到production的适当部分。 HL7序列管理器是一个业务流程,它接受传入的HL7消息(可能来自多个源),然后按照消息中的MSH:13 SequenceNumbers字段指定的顺序将消息转发到目标配置项。 序列管理器可以检测重复的消息和消息之间的时间间隔。它还确定顺序消息之间的时间间隔何时大到足以表明问题。它的灵敏度级别可以使用它的配置设置来调整。 要构建用于HL7消息路由生产的HL7序列管理器,必须创建并配置它,然后将其集成到生产中。本主题将解释每个步骤。 #InterSystems IRIS for Health 0 0 0 19
文章 姚 鑫 · 七月 20 阅读大约需 3 分钟 第六十四章 开发Productions - ObjectScript Productions - Production品及其零部件的生命周期 第六十四章 开发Productions - ObjectScript Productions - Production品及其零部件的生命周期 此页面描述了Production及其组成部分的生命周期,以供参考。 Production的生命周期 Production启动 当Production开始时,动作顺序如下: #InterSystems IRIS for Health 0 0 0 19
文章 姚 鑫 · 七月 21 阅读大约需 3 分钟 第六十五章 开发Productions - ObjectScript Productions - Production品及其零部件的生命周期 - Runtime 第六十五章 开发Productions - ObjectScript Productions - Production品及其零部件的生命周期 - Runtime Runtime 当Production运行时,业务服务会重复调用入站适配器的 OnTask() 方法。此 OnTask 循环由业务服务的 CallInterval 设置和 %WaitForNextCallInterval 属性控制,如下所示: #InterSystems IRIS for Health 0 0 0 19
文章 姚 鑫 · 七月 13 阅读大约需 3 分钟 第五十七章 开发Productions - ObjectScript Productions - 不常见的任务 - 以编程方式使用查找表 第五十七章 开发Productions - ObjectScript Productions - 不常见的任务 - 以编程方式使用查找表 IRIS 提供了名为 Lookup() 的实用函数,以便可以轻松地从业务规则或 DTL 数据转换中执行表查找。此功能仅在创建至少一个查找表并用适当的数据填充后才起作用。 有关定义查找表的信息,请参阅配置产品中的定义数据查找表。 如果需要比管理门户提供的更直接的查找表操作,请在类中使用 Ens.Util.LookupTable。此类公开查找表以通过对象或 SQL 进行访问。此外,它还提供类方法来清除表、将数据导出为 XML 以及从 XML 导入数据。 Ens.Util.LookupTable提供以下字符串属性: #InterSystems IRIS for Health 0 0 0 18
文章 姚 鑫 · 八月 24 阅读大约需 2 分钟 第八章 ObjectScript - 变量的可用性和范围 第八章 ObjectScript - 变量的可用性和范围 变量的可用性和范围 ObjectScript 支持以下程序流程,(在大多数方面)与其他编程语言支持的程序流程类似: 用户可能从用户界面调用方法。 该方法执行一些语句,然后调用另一个方法。 该方法定义了局部变量 A、B 和 C。 变量 A、B 和 C 在此方法的范围内。它们对于该方法是私有的。 该方法还定义了Global ^D。 #InterSystems IRIS for Health 0 0 0 18
文章 姚 鑫 · 九月 9 阅读大约需 2 分钟 第二十三章 Classes - 属性 第二十三章 Classes - 属性 形式上 IRIS 有两种属性: 属性,保存值。该值可以是以下任意值: 单个文字值,通常基于数据类型。 对象值(包括集合对象和流对象)。 多维数组。这种情况不太常见。 属性一词通常仅指作为properties的attributes,而不是指具有关联的属性。 关系,保持对象之间的关联。 可以在包含 ObjectScript 方法、Python 方法或两者组合的类中定义属性。但是,无法从 Python 方法访问关系。本节展示了一个示例类,其中包含显示以下一些变体的属性定义: #InterSystems IRIS for Health 0 0 0 18
文章 姚 鑫 · 八月 16 阅读大约需 4 分钟 第二十四章 参考 - HL7业务服务的设置- 忽略入站 ACK 第二十四章 参考 - HL7业务服务的设置- 忽略入站 ACK 忽略入站 ACK 如果为 True,业务服务将忽略任何入站 ACK 消息,以避免创建 ACK 反馈循环。 Local Facility Application 以冒号分隔的 LocalFacility:LocalApplication 代码,表示通过此业务服务接收 HL7 消息的设施和应用程序。如果此业务服务创建自己的 ACK,则本地设施应用程序会为 ACK 消息提供 SendingFacility:SendingApplication 代码;否则,该设置将被忽略。 #InterSystems IRIS for Health 0 0 0 17
文章 姚 鑫 · 九月 3 阅读大约需 2 分钟 第十七章 ObjectScript - 使用宏和包含文件include file 第十七章 ObjectScript - 使用宏和包含文件 使用宏和包含文件 如前所述,可以定义宏并稍后在同一类或例程中使用它们。更常见的是,在包含文件中定义它们。 Macros ObjectScript 支持定义替换的宏。定义可以是一个值、整行代码或(使用 ##continue 指令)多行。 要定义宏,请使用#define 指令或其他预处理器指令。例如: #define macroname <definition> 要引用宏,请使用以下语法: $$$macroname 或者: $$$macroname(arguments) 使用宏来确保一致性。例如: #InterSystems IRIS for Health 0 0 0 17
文章 姚 鑫 · 八月 21 阅读大约需 3 分钟 第五章 ObjectScript 第五章 ObjectScript 方法和例程都可以用 ObjectScript 编写,但大多数现代代码都是使用方法编写的。方法包含在类中,这允许将类似的方法分组在一起,在类参考中自动生成文档,以及使用 IRIS 的面向对象功能。 这并不意味着routines 不重要。许多有用的系统实用程序都是作为例程编写的,并且在编译类时会生成例程。 示例类 下面显示了一个名为 User.DemoClass 的示例类,其中包含用 ObjectScript 编写的方法。此示例使我们有机会了解一些常见的 ObjectScript 命令、运算符和函数,并了解代码在方法内的组织方式。 #InterSystems IRIS for Health 0 0 0 17
文章 姚 鑫 · 八月 3 阅读大约需 3 分钟 第十一章 配置Production - 添加 HL7 路由进程 第十一章 配置Production - 集成和配置 HL7 业务服务 集成和配置 HL7 业务服务 要将新的 HL7 业务服务集成到production中,必须将其与其中继消息的路由流程或业务操作相关联。此外,如果希望业务服务接收非标准消息结构,将需要创建自定义 HL7 架构定义来解析和验证这些消息。去做这个: #InterSystems IRIS for Health 0 0 0 17
文章 Claire Zheng · 八月 28 阅读大约需 1 分钟 【动画视频】医院信息科Q&A:CDA文档数据该如何利用? 医院拥有丰富的CDA文档库,如何实现数据的有效利用和共享? //player.bilibili.com/player.html?aid=274423967&bvid=BV1mF411f77g&cid=1226555487&page=1[这是一个嵌入式链接,但由于您拒绝了访问嵌入式内容所需的 Cookie,您无法直接在网站上进行查看。要查看嵌入式内容,您需要在 Cookie 设置中接受所有 Cookie。] #FHIR #HL7 #InterSystems 业务解决方案和架构 #视频 #InterSystems IRIS for Health 0 0 0 16
文章 姚 鑫 · 八月 28 阅读大约需 3 分钟 第十二章 ObjectScript - 命令 第十二章 ObjectScript - 命令 命令 本节概述了在 ObjectScript 常用命令。其中包括与其他语言中的命令相似的命令,以及其他语言中没有等效项的其他命令。 命令名称不区分大小写,尽管按照惯例它们在运行文本中显示为全大写。 熟悉的命令 ObjectScript 提供命令来执行熟悉的任务,如下所示: - 要定义变量,请使用 SET(如前所示)。 - 要删除变量,请使用 KILL,如前所示。 - 要控制逻辑流程,请使用以下命令: - IF、ELSEIF 和 ELSE 一起工作 - FOR - WHILE,可以单独使用 - DO 和 WHILE 可以一起使用 - QUIT,也可以返回一个值 #InterSystems IRIS for Health 0 0 0 16
文章 姚 鑫 · 八月 18 阅读大约需 2 分钟 第二章 IRIS 编程简介 - 同时使用类和例程 第二章 IRIS 编程简介 - 同时使用类和例程 同时使用类和例程 在IRIS 中,可以使用例程中的类。例如,下面显示了例程的一部分,其中我们引用了 Sample.Employee类: #InterSystems IRIS for Health 0 0 0 16
文章 姚 鑫 · 九月 2 阅读大约需 2 分钟 第十六章 ObjectScript - 日期和时间值 第十六章 ObjectScript - 日期和时间值 日期和时间值 当地时间 要访问当前进程的日期和时间,可以使用 $HOROLOG 特殊变量。因此,在许多 IRIS 应用程序中,日期和时间都以此变量使用的格式存储和传输。这种格式通常称为$H 格式或$HOROLOG 格式。 $HOROLOG 从操作系统检索日期和时间,因此始终位于本地时区。 IRIS 类库包含以更常见的格式(例如 ODBC)表示日期的数据类型类,许多应用程序使用这些数据类型而不是 $H 格式。请注意,通过数据类型类中的 %Library.PosixTime支持 POSIX 时间,新应用程序应使用该类来表示日期/时间值。 #InterSystems IRIS for Health 0 0 0 16
文章 姚 鑫 · 七月 16 阅读大约需 2 分钟 第六十章 开发Productions - ObjectScript Productions - 从管理门户进行测试 - 调试Production代码 第六十章 开发Productions - ObjectScript Productions - 从管理门户进行测试 - 调试Production代码 调试Production代码 调试的第一步是启用跟踪,如监控生产中所述。如果这没有揭示问题,可以使用调试器单步调试代码,如下所示: 在 IDE 中编辑代码以在要开始调试的位置插入 BREAK 命令。 为使用要调试的类的业务主机启用前台设置。 开始Production。在步骤 2 中标记的作业在终端的前台运行。 当到达该 BREAK 命令时,终端将进入调试模式,可以单步调试代码。 启用 %ETN 日志记录 事件日志自动包含有关系统级异常(包括代码中的异常)的部分信息。默认情况下,这些事件日志条目的结尾如下: #InterSystems IRIS for Health 0 0 0 16
文章 姚 鑫 · 八月 26 阅读大约需 3 分钟 第十章 ObjectScript - 按值或按引用传递变量 第十章 ObjectScript - 按值或按引用传递变量 按值或按引用传递变量 调用方法时,可以通过值或引用将变量值传递给该方法。在大多数情况下,这些变量是没有下标的局部变量,因此本节首先讨论这些变量。 与其他编程语言一样, IRIS 具有一个存储位置,其中包含每个局部变量的值。变量的名称充当内存位置的地址。 当将没有下标的局部变量传递给方法时,可以按值传递该变量。这意味着系统会复制该值,从而使原始值不受影响。要传递内存地址,请在参数列表中紧邻变量名称之前放置一个句点。 为了演示这一点,请考虑名为 Test.Parameters 的类中的以下方法: ClassMethod Square(input As %Integer) As %Integer { set answer=input*input set input=input + 10 return answer } 假设定义一个变量并将其按值传递给此方法: #InterSystems IRIS for Health 0 0 0 16
文章 姚 鑫 · 八月 8 阅读大约需 3 分钟 第十六章 定义 HL7 的 DTL 数据转换 - 转换长段字段 第十六章 定义 HL7 的 DTL 数据转换 - 转换长段字段 转换长段字段 DTL 转换使用的 ObjectScript 方法 GetValueAt 将 HL7 段字段截断为 3.6MB。因此,当转换长度超过 3.6MB 的字段时,无法在 DTL 编辑器中使用从左到右的拖动操作。例如,如果 OBX:5 字段超过 3.6MB,则无法使用 DTL 编辑器将源字段拖动到目标,因为它将被截断。同样,如果要转换的字段长度超过 3.6MB,则自定义代码不应调用 GetValueAt。 #InterSystems IRIS for Health 0 0 0 16
文章 姚 鑫 · 九月 13 阅读大约需 2 分钟 第二十七章 Classes - 引用其他类成员 第二十七章 Classes - 引用其他类成员 引用其他类成员 在方法中,使用下面的语法来引用其他类成员: 要引用ObjectScript中的参数,使用如下表达式: ..#PARAMETERNAME 只能使用ObjectScript直接访问参数。要从Python访问参数,请使用ObjectScript包装器方法返回参数,并在需要时调用此方法。例如: #InterSystems IRIS for Health 0 0 0 15
文章 姚 鑫 · 八月 31 阅读大约需 2 分钟 第十四章 ObjectScript - 系统函数 第十四章 ObjectScript - 系统函数 系统函数 本节重点介绍 ObjectScript 中一些最常用的系统函数。 这些函数的名称不区分大小写。 类库还提供了大量实用方法,可以像使用函数一样使用它们。 Value Choice 在给定一些输入的情况下,可以使用以下函数来选择一个值: - $CASE 将给定的测试表达式与一组比较值进行比较,然后返回与匹配的比较值关联的返回值。例如: #InterSystems IRIS for Health 0 0 0 15
文章 姚 鑫 · 八月 22 阅读大约需 3 分钟 第六章 ObjectScript - Routine示例 第六章 ObjectScript - Routine示例 Routine示例 下面显示了一个名为 demoroutine 的示例例程,它是用 ObjectScript 编写的。它包含的过程与上一节示例类中所示的方法执行完全相同的操作。 #InterSystems IRIS for Health 0 0 0 15
文章 姚 鑫 · 九月 5 阅读大约需 2 分钟 第十九章 ObjectScript - 执行例程 第十九章 ObjectScript - 执行例程 执行例程 执行例程时,使用DO命令,如下所示: do ^routinename 要执行一个过程、函数或子程序(不访问其返回值),可以使用以下命令: do label^routinename 或 do label^routinename(arguments) 要执行过程、函数或子例程并引用其返回值,可以使用$$label^routinename或$$label^routinename(参数)形式的表达式。例如: set myvariable=$$label^routinename(arguments) 在所有情况下,如果标签位于同一个例程中,则可以省略插入符号和例程名称。例如: #InterSystems IRIS for Health 0 0 0 15
文章 姚 鑫 · 八月 27 阅读大约需 1 分钟 第十一章 ObjectScript - 操作符 第十一章 ObjectScript - 操作符 操作符 ObjectScript 中的运算符优先级严格是从左到右;在表达式中,运算按照它们出现的顺序执行。可以在表达式中使用显式括号来强制某些操作先于其他操作执行。 通常,即使并不严格需要括号,也会使用括号。很有用,因为它使代码的意图更加清晰。 Familiar Operators ObjectScript 为常见活动提供以下运算符: #InterSystems IRIS for Health 0 0 0 15
文章 姚 鑫 · 九月 4 阅读大约需 3 分钟 第十八章 ObjectScript - 使用例程 第十八章 ObjectScript - 使用例程 例程 可以将例程视为 ObjectScript 程序。例程可以从头开始编写,也可以在编译类时自动生成。 Procedures, Functions, and Subroutines 过程、函数和子程序 在 ObjectScript 例程中,标签定义以下代码单元之一的起点: Procedures过程(可选地返回一个值)。过程中定义的变量是该过程私有的,这意味着它们不可用于其他代码。对于函数和子例程来说,情况并非如此。 过程也称为过程块。 函数(返回值)。 子例程(不返回值)。 建议使用过程Procedures,因为这可以简化控制变量范围的任务。然而,在现有代码中,可能还会看到函数和子例程,并且能够识别它们非常有用。以下列表显示了所有这些形式的代码的外观。 #InterSystems IRIS for Health 0 0 0 14