#InterSystems IRIS for Health

0 关注者 · 894 帖子

InterSystems IRIS for Health™ 是全球第一个也是唯一一个专门为医疗应用程序的快速开发而设计的数据平台,用于管理全世界最重要的数据。它包括强大的开箱即用的功能:事务处理和分析、可扩展的医疗保健数据模型、基于 FHIR 的解决方案开发、对医疗保健互操作性标准的支持等等。所有这些将使开发者能够快速实现价值并构建具有突破性的应用程序。了解更多信息

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

InterSystems 常见问题解答

通过在持久类(=table)定义中提供的%BuildIndices() 方法的参数中指定要重建索引的 ID 的开始值和结束值,您可以仅重建该范围内的索引。

例如,要仅针对 ID=10 到 20 重建 Sample.Person 类中的 NameIDX 索引和 ZipCode 索引,请执行以下代码(ID 范围在第 5 个和第 6 个参数中指定)。

 set status = ##class (Sample.Person). %BuildIndices ( $LB ( "NameIDX" , "ZipCode" ), 1 ,, 1 , 10 , 20 )

$LB() 是$ListBuild() 函数。 %BuildIndices() 方法使用它来指定索引名称。

有关如何重建索引的更多信息,请参阅文档

2018.1版本请参考此文档

0
0 259
文章 姚 鑫 · 八月 31, 2023 2m read

第十四章 ObjectScript - 系统函数

系统函数

本节重点介绍 ObjectScript 中一些最常用的系统函数。

这些函数的名称不区分大小写。

类库还提供了大量实用方法,可以像使用函数一样使用它们。

Value Choice

在给定一些输入的情况下,可以使用以下函数来选择一个值:

  • $CASE 将给定的测试表达式与一组比较值进行比较,然后返回与匹配的比较值关联的返回值。例如:
TESTNAMESPACE>set myvar=1
 
TESTNAMESPACE>write $CASE(myvar,0:"zero",1:"one",:"other")
one
  • $SELECT 检查一组表达式并返回与第一个 true 表达式关联的返回值。例如:
TESTNAMESPACE>set myvar=1
 
TESTNAMESPACE>write $SELECT(myvar=0:"branch A",1=1:"branch B")
branch B

存在函数

可以使用以下函数来测试变量或变量节点是否存在。

  • 要测试特定变量是否存在,请使用 $DATA 函数。

对于包含多个节点的变量,该函数可以指示给定节点是否存在,以及给定节点是否有值和子节点。

  • 要获取变量的值(如果存在)或获取默认值(如果不存在),请使用 $GET 函数。

列表函数

ObjectScript 提供本机列表格式。

0
0 102
文章 姚 鑫 · 八月 29, 2023 4m read

第十三章 ObjectScript - 特殊变量

特殊变量

一些特殊变量提供有关代码运行环境的信息。其中包括以下内容:

  • $HOROLOG,包含操作系统给出的当前进程的日期和时间。请参阅日期和时间值。
  • $USERNAME$ROLES,包含有关当前使用的用户名以及该用户所属角色的信息。
 write "You are logged in as: ", $USERNAME, !, "And you belong to these roles: ",$ROLES
  • $ZVERSION,其中包含标识当前运行的 IRIS 版本的字符串。

其他包括 $JOB$ZTIMEZONE$IO$ZDEVICE

其他变量提供有关代码处理状态的信息。其中包括 $STACK$TLEVEL$NAMESPACE$ZERROR

$SYSTEM 特殊变量

特殊变量 $SYSTEM 提供对大量实用方法的轻松访问。

特殊变量 $SYSTEM%SYSTEM 包的别名,其中包含提供可满足各种需求的类方法的类。引用 %SYSTEM 中方法的惯用方法是构建使用 $SYSTEM 变量的引用。例如,以下命令在类中执行 %SYSTEM.OBJ 中的 SetFlags() 方法:

 DO $SYSTEM.OBJ.
0
0 107
文章 姚 鑫 · 八月 28, 2023 3m read

第十二章 ObjectScript - 命令

命令

本节概述了在 ObjectScript 常用命令。其中包括与其他语言中的命令相似的命令,以及其他语言中没有等效项的其他命令。

命令名称不区分大小写,尽管按照惯例它们在运行文本中显示为全大写。

熟悉的命令

ObjectScript 提供命令来执行熟悉的任务,如下所示:

  • 要定义变量,请使用 SET(如前所示)。

  • 要删除变量,请使用 KILL,如前所示。

  • 要控制逻辑流程,请使用以下命令:

    • IFELSEIFELSE 一起工作
    • FOR
    • WHILE,可以单独使用
    • DOWHILE 可以一起使用
    • QUIT,也可以返回一个值

    还有其他用于流量控制的命令,但使用频率较低。

  • 要捕获错误,请使用 TRYCATCH,它们一起工作。

  • 要写入值,请使用 WRITE。这会将值写入当前设备(例如,终端或文件)。

    在不带参数的情况下使用该命令会写入所有局部变量的值。

    此命令可以使用一小组格式控制代码字符来定位输出。在现有代码中,可能会看到感叹号,它开始一个新行。例如:

     write "hello world",!,"another line"
    
  • 要从当前设备(例如终端)读取值,请使用 READ

  • 要使用主设备以外的设备,请使用以下命令:

    • OPEN 使设备可供使用。
0
0 114
文章 姚 鑫 · 八月 27, 2023 1m read

第十一章 ObjectScript - 操作符

操作符

ObjectScript 中的运算符优先级严格是从左到右;在表达式中,运算按照它们出现的顺序执行。可以在表达式中使用显式括号来强制某些操作先于其他操作执行。

通常,即使并不严格需要括号,也会使用括号。很有用,因为它使代码的意图更加清晰。

Familiar Operators

ObjectScript 为常见活动提供以下运算符:

  • 数学运算符:加法 (+)、减法 (-)、除法 (/)、乘法 (*)、整数除法 (\)、模数 (#) 和求幂 (**)
  • 一元运算符:正 (+) 和负 (-)
  • 字符串连接运算符 (_)
  • 逻辑比较运算符:等于(=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=)
  • 逻辑补码运算符 (')

可以在任何逻辑值之前以及逻辑比较运算符之前使用它。

  • 组合逻辑值的运算符:AND (&&)、OR (||)

请注意,ObjectScript 还支持其中每种形式的较旧的、效率较低的形式:&&& 运算符的一种形式,而 ! || 的一种形式操作员。可能会在现有代码中看到这些旧的形式。

Unfamiliar Operators

ObjectScript 还包括某些语言中没有等效项的运算符。最重要的如下:

  • 模式匹配运算符 (?) 测试其左操作数中的字符是否使用其右操作数中的模式。
0
0 104
文章 姚 鑫 · 八月 26, 2023 3m read

第十章 ObjectScript - 按值或按引用传递变量

按值或按引用传递变量

调用方法时,可以通过值或引用将变量值传递给该方法。在大多数情况下,这些变量是没有下标的局部变量,因此本节首先讨论这些变量。

与其他编程语言一样, IRIS 具有一个存储位置,其中包含每个局部变量的值。变量的名称充当内存位置的地址。

当将没有下标的局部变量传递给方法时,可以按值传递该变量。这意味着系统会复制该值,从而使原始值不受影响。要传递内存地址,请在参数列表中紧邻变量名称之前放置一个句点。

为了演示这一点,请考虑名为 Test.Parameters 的类中的以下方法:

ClassMethod Square(input As %Integer) As %Integer
{
    set answer=input*input
    set input=input + 10
    return answer
}

假设定义一个变量并将其按值传递给此方法:

TESTNAMESPACE>set myVariable = 5
 
TESTNAMESPACE>write ##class(Test.Parameters).
0
0 107
文章 Michael Lei · 八月 26, 2023 3m read

今年两会期间,有多名两会委员联名提出了《关于建设全国统一医院电子病历系统的提案》,国家卫健委相关部门也马上给予回应,称正在研究建立全国统一的电子健康档案、电子病历。结合数字中国的主要目标之一,让数据多跑腿,群众少走路,在这一背景下,从患者端开始,建立全国统一的电子病历APP已经变得迫切而重要。这不仅有助于提高医疗服务的效率和质量,还能够让患者更好地参与到医疗决策中,实现信息的共享和整合。

电子病历与患者共享的必要性和重要性

  1. 信息共享与医疗协同: 通过建立患者全国统一的电子病历系统,医疗机构之间可以更加方便地共享患者的健康信息。这对于多学科合作诊疗、转诊和患者就诊历史的追溯具有重要意义,可以避免重复检查和繁琐的病历复印过程,提高医疗协同效率。
  2. 患者参与和知情权的加强: 电子病历使患者能够更直接地了解自己的健康状况和诊疗过程。患者可以随时访问自己的电子病历,了解诊断结果、治疗方案和用药情况,从而更好地参与医疗决策,增强自己的知情权。
  3. 紧急情况下的救治效率提升: 在紧急情况下,如意外事故或突发疾病,医护人员可以通过电子病历迅速获取患者的基本健康信息,有助于快速判断病情,做出及时救治决策。

实现方案

  1. 使用通用数据模型Common Data Model: 制定统一的患者端电子病历数据交换标准,确保不同医疗机构产生的数据可以互通互用。
0
0 210
文章 姚 鑫 · 八月 25, 2023 2m read

第九章 ObjectScript - 多维数组

多维数组

ObjectScript 中,任何变量都可以是多维数组(也称为数组)。多维数组通常用于保存一组以某种方式相关的值。 ObjectScript 提供的命令和函数可以方便、快速地访问值。

可能会也可能不会直接使用多维数组,具体取决于使用的系统类和自己的偏好。当需要一个用于存储相关值集的容器时,IRIS 提供了一种基于类的替代方案。请参阅集合类。

Basics

多维数组由任意数量的节点组成,由下标定义。以下示例设置数组的几个节点,然后打印数组的内容:

 set myarray(1)="value A"
 set myarray(2)="value B"
 set myarray(3)="value C"
 zwrite myarray

此示例显示了一个典型的数组。

  • 该数组有一个下标。在这种情况下,下标是整数 123
  • 不需要提前声明数组的结构。
  • myarray 是数组本身的名称。
  • ObjectScript 提供可作用于整个数组或特定节点的命令和函数。例如:
 kill myarray

还可以KILL特定节点及其子节点。

0
0 95
文章 姚 鑫 · 八月 24, 2023 2m read

第八章 ObjectScript - 变量的可用性和范围

变量的可用性和范围

ObjectScript 支持以下程序流程,(在大多数方面)与其他编程语言支持的程序流程类似:

  1. 用户可能从用户界面调用方法。
  2. 该方法执行一些语句,然后调用另一个方法。
  3. 该方法定义了局部变量 ABC

变量 ABC 在此方法的范围内。它们对于该方法是私有的。

该方法还定义了Global ^D

  1. 第二个方法结束,控制返回到第一个方法。
  2. 第一个方法恢复执行。此方法不能使用不再定义的变量 AB 和 C。它可以使用^D,因为该变量立即保存到数据库中。

变量作用域总结

有几个因素控制变量在定义它的方法之外是否可用。在讨论这些之前,有必要指出以下环境细节:

  • IRIS 实例包含多个命名空间,其中包括多个系统命名空间,可能还包括定义的多个命名空间。

命名空间是任何代码运行的环境。

  • 可以在命名空间中同时运行多个进程。在典型的应用程序中,许多进程同时运行。

下表总结了可用变量的位置:

变量可用性,按变量类型细分.
0
0 112
文章 姚 鑫 · 八月 23, 2023 3m read

第七章 ObjectScript - Variables

Variables

ObjectScript 中,有两种变量,按它们保存数据的方式分类:

局部变量可以具有公共或私有范围。

  • 局部变量,在内存中保存数据。

局部变量可以具有公共或私有范围。

  • Global,在数据库中保存数据。这些也称为全局变量。与Global的所有交互都会立即影响数据库。例如,当设置Global值时,该更改会立即影响存储的内容;没有单独的步骤来存储值。同样,当删除Global时,数据会立即从数据库中删除。

变量名称

变量的命名遵循以下规则:

  • 对于大多数局部变量,第一个字符是字母,其余字符是字母或数字。有效名称包括 myvari
  • 对于大多数Global,第一个字符始终是脱字号 (^)。其余字符是字母、数字或句点。有效名称包括 ^myvar^my.var

IRIS 还支持一种特殊的变量,称为百分比变量;这些不太常见。百分比变量的名称以百分比字符 (%) 开头。百分比变量的特殊之处在于它们始终是公共的;也就是说,它们对进程中的所有代码都是可见的。这包括调用堆栈中的所有方法和所有过程。

定义百分比变量时,请使用以下规则:

  • 对于局部百分比变量,名称以 %Z%z 开头。其他名称保留供系统使用。
  • 对于global百分比变量,名称以 ^%Z^%z 开头。其他名称保留供系统使用。
0
0 110
文章 姚 鑫 · 八月 22, 2023 3m read

第六章 ObjectScript - Routine示例

Routine示例

下面显示了一个名为 demoroutine 的示例例程,它是用 ObjectScript 编写的。它包含的过程与上一节示例类中所示的方法执行完全相同的操作。

 ; this is demoroutine 
 write "Use one of the following entry points:"
 write !,"random"
 write !,"input"
 write !,"interesting"
 quit 
 
 //this procedure can be called from outside the routine
random() public {
    set rand=$RANDOM(10)+1        ; rand is an integer in the range 1-10
    write "Your random number: "_rand
    set name=$$getnumbername(rand)
    write !
0
0 93
文章 姚 鑫 · 八月 21, 2023 3m read

第五章 ObjectScript

方法和例程都可以用 ObjectScript 编写,但大多数现代代码都是使用方法编写的。方法包含在类中,这允许将类似的方法分组在一起,在类参考中自动生成文档,以及使用 IRIS 的面向对象功能。

这并不意味着routines 不重要。许多有用的系统实用程序都是作为例程编写的,并且在编译类时会生成例程。

示例类

下面显示了一个名为 User.DemoClass 的示例类,其中包含用 ObjectScript 编写的方法。此示例使我们有机会了解一些常见的 ObjectScript 命令、运算符和函数,并了解代码在方法内的组织方式。

Class User.DemoClass
{

/// Generate a random number.
/// This method can be called from outside the class.
ClassMethod Random() [ Language = objectscript ]
{
    set rand=$RANDOM(10)+1        ; rand is an integer in the range 1-10
    write "Your random number: "_rand
    set name=.
0
0 117
文章 姚 鑫 · 八月 20, 2023 2m read

第四章 IRIS 编程简介 - Macros

Macros

ObjectScript 还支持定义替换的宏。定义可以是一个值、整行代码或(使用 ##continue 指令)多行。使用宏来确保一致性。例如:

#define StringMacro "Hello, World!"

write $$$StringMacro

Include Files

可以在例程中定义宏,并稍后在同一例程中使用它们。更常见的是,在中心位置定义它们。为此,需要创建并使用包含文件。包含文件定义宏并且可以包含其他包含文件。

这些代码元素如何协同工作

可以混合使用 ObjectScriptPythonSQL、类定义、宏、例程等的原因是 IRIS 不直接使用编写的代码。相反,当编译代码时,系统会生成它使用的较低级别的代码。这是由 ObjectScript 引擎使用的 ObjectScriptOBJ 代码,以及由 Python 引擎使用的 PythonPYC 代码。

有多个步骤。无需详细了解这些步骤,但最好记住以下几点:

  • 对于除 Python 方法之外的所有元素,类编译器将类定义和 ObjectScript 代码处理为 INT 代码。 Python代码被处理成PY代码。

在某些情况下,编译器会生成并保存您不应编辑的其他类。例如,当编译定义 Web 服务和 Web 客户端的类时,就会发生这种情况。

0
0 167
文章 姚 鑫 · 八月 19, 2023 1m read

第三章 IRIS 编程简介 - SQL

SQL

IRIS 提供了 SQL 的实现,称为 SQL。可以在方法和例程中使用 SQL

ObjectScript 使用 SQL

可以使用以下一种或两种方式从 ObjectScript 执行 SQL

  • 动态 SQL%SQL.Statement%SQL.StatementResult 类),如下例所示:
 SET myquery = "SELECT TOP 5 Name, Title FROM Sample.Employee ORDER BY Salary"
 SET tStatement = ##class(%SQL.Statement).%New()
 SET tStatus = tStatement.%Prepare(myquery)
 SET rset = tStatement.%Execute()
 DO rset.%Display()
 WRITE !,"End of data"

可以在 ObjectScript 方法和例程中使用动态 SQL

  • 嵌入式SQL,如下例所示:
 &sql(SELECT COUNT(*) INTO :myvar FROM Sample.
0
0 146
文章 姚 鑫 · 八月 18, 2023 2m read

第二章 IRIS 编程简介 - 同时使用类和例程

同时使用类和例程

IRIS 中,可以使用例程中的类。例如,下面显示了例程的一部分,其中我们引用了 Sample.Employee 类:

 //get details of random employee and print them
showemployee() public {
    set rand=$RANDOM(10)+1        ; rand is an integer in the range 1-10
    write "Your random number: "_rand
    set employee=##class(Sample.Employee).%OpenId(rand)  
    do employee.PrintEmployee()
    write !,"This employee's salary: "_employee.Salary
      
    }

类似地,方法可以调用例程中的标签。例如,以下代码调用例程employeeutils中的标签ComputeRaise

Method RaiseSalary() As %Numeric
{
    set newsalary=$$ComputeRaise^employeeutils(.
0
0 102
文章 姚 鑫 · 八月 17, 2023 2m read

第一章 IRIS 编程简介

简介

IRIS 是一个高性能多模型数据平台,具有内置的通用编程语言 ObjectScript,以及对 Python 的内置支持。

IRIS 支持多进程并提供并发控制。每个进程都可以直接、高效地访问数据。

IRIS 中,可以根据喜好编写类、例程或它们的组合。在所有情况下,存储的数据最终都包含在称为全局变量的结构中。 IRIS 编程具有以下特点:

  • 类和例程可以互换使用。
  • 类和例程可以互相调用。
  • 类提供面向对象的功能。
  • 数据库存储已集成到 ObjectScriptPython 中。
  • 类可以以简化编程的方式保存数据。如果使用持久类,数据可以同时作为对象、SQL 表和全局变量使用。
  • 可以直接从类或例程访问全局变量,这意味着可以灵活地按照想要的方式存储和访问数据。

可以选择适合需求的方法。

Classes

IRIS 支持类。可以使用系统类,也可以定义自己的类。

IRIS 中,类可以包含熟悉的类元素,例如属性、方法和参数(在其他类语言中称为常量)。它还可以包含通常不在类中定义的项目,包括触发器、查询和索引。

IRIS 类定义使用类定义语言 (CDL) 来指定类及其成员,例如属性、方法和参数。可以使用 PythonObjectScript 在方法内部编写可执行代码。对于每个方法,使用 Language 关键字指定将使用哪种语言编写该方法,如下例所示。

0
0 375
文章 姚 鑫 · 八月 16, 2023 4m read

第二十四章 参考 - HL7业务服务的设置- 忽略入站 ACK

忽略入站 ACK

如果为 True,业务服务将忽略任何入站 ACK 消息,以避免创建 ACK 反馈循环。

Local Facility Application

以冒号分隔的 LocalFacility:LocalApplication 代码,表示通过此业务服务接收 HL7 消息的设施和应用程序。如果此业务服务创建自己的 ACK,则本地设施应用程序会为 ACK 消息提供 SendingFacility:SendingApplication 代码;否则,该设置将被忽略。

Message Schema Category

应用于传入消息类型以生成完整的 DocType 规范的类别。与文档类型名称 (MSH:9) 结合生成 MessageType 规范,然后使用该规范在给定 HL7 模式类别的 MessageTypes 部分中查找 MessageStructure / DocType

此设置还可以包含多个以逗号分隔的类型名称,后跟 =,然后是 DocTypeCategory 或完整的 DocType 值,以应用于包含该类型名称的 HL7 消息。给定部分类型名称末尾的尾随星号 (*) 与以该条目开头的任何类型匹配。

HL7 消息对象的 DocType 属性

例如:MessageSchemaCategory='2.3.1, ADT_*=2.

0
0 154
文章 姚 鑫 · 八月 15, 2023 3m read

第二十三章 参考 - HL7业务服务的设置- DocTypeResolution

DocTypeResolution

指定如何根据 MSH:9 中的消息类型解析 DocType。选择以下选项之一:

  • Standard标准 — 将有效消息架构类别值与在相应架构类别中查找 MSH:9 消息类型值的消息结构名称相结合。这是默认设置。
  • Ignore 9.3 — 与“标准”类似,但如果 MSH:9 有三个或更多部分,则忽略其他部分。标准行为是使用第 3 部分作为类型名称的一部分(如果它没有子部分),因为某些模式包含三部分类型名称。
  • Use 9.3 — 与“标准”类似,但如果 MSH:9 具有三个或更多部分,则使用附加部分作为适用模式类别中文档结构的文字名称。请谨慎使用,因为消息到达时可能带有 MSH:9.3 值,而所选架构类别中不存在其结构。
  • Literal 文字 — 将有效消息架构类别值与解释为消息结构名称的文字 MSH:9 消息类型值相结合。仅与每个消息类型都有相应的结构定义的自定义架构一起使用。

Override Segment Terminator

(仅限 FTP)用作段终止符的以逗号分隔的 ASCII 控制字符列表。这些值可以是十进制格式或十六进制格式,前面带有 x。例如,要将换行符指定为段终止符,请输入 10x0A。默认值为回车符,十进制值为 13,十六进制值为 x0D

0
0 172
文章 Michael Lei · 八月 10, 2023 2m read

InterSystems 常见问题解答

※如果您想比较使用Mirror、Shadow或其他机制复制的数据库,请使用此方法。

您可以使用 DATACHECK 实用程序来比较Global。请参阅下面的文档。
DataCheck 概述 [IRIS]

***

Routines比较使用系统例程 %RCMP 或管理门户。

以下是如何在管理门户中使用它。

0
0 225
文章 姚 鑫 · 八月 10, 2023 3m read

第十八章 定义 HL7 搜索表

HL7 搜索表类 EnsLib.HL7.SearchTable,自动索引填充的 HL7 属性。

如果需要搜索更多的项,可以创建一个子类。子类继承Identifier属性,以及使搜索表工作的基础结构。具体操作请参见在产品中使用虚拟文档中的“定义搜索表类”。

对于HL7, 支持PropType的附加值。除了在产品中使用虚拟文档中列出的类型之外,还可以使用DateTime:HL7

创建搜索表时,不要使用保留的包名;参见开发产品中的“保留包名”。

默认索引的属性

当选择EnsLib.HL7。searchtable作为搜索表类,使能够在HL7消息中搜索以下虚拟属性。

  • MSHTypeName

消息结构名称。为了创建这个字符串,将HL7消息中的以下值连接起来: - MSH消息头段

字段`9`(消息类型)

子字段`1`(消息类型`:ADT`, `ORM`等)

- 文字字符_
- `MSH`消息头段

字段`9`(消息类型)

子字段`2`(触发事件:`A01、A12、O01_2`等)

结果是一个格式为ADT_A01, ADT_A12, ORM_O01_2等的消息结构名称。

  • MSHControlID

此消息的唯一标识号。production程序从:

- `MSH`消息头段
- 字段10(消息控制ID)

将此值解释为区分大小写的字符串。

  • PatientID

此消息的患者标识符。

0
0 126
文章 姚 鑫 · 八月 8, 2023 3m read

第十六章 定义 HL7 的 DTL 数据转换 - 转换长段字段

转换长段字段

DTL 转换使用的 ObjectScript 方法 GetValueAtHL7 段字段截断为 3.6MB。因此,当转换长度超过 3.6MB 的字段时,无法在 DTL 编辑器中使用从左到右的拖动操作。例如,如果 OBX:5 字段超过 3.6MB,则无法使用 DTL 编辑器将源字段拖动到目标,因为它将被截断。同样,如果要转换的字段长度超过 3.6MB,则自定义代码不应调用 GetValueAt

要转换长度超过 3.6MB 的字段,需要使用代码操作将自定义代码添加到转换中。此自定义代码必须在的 EnsLib.HL7.Segment 中包含以下方法之一,以将字段的值从源读取到流中:GetFieldStreamRaw()GetFieldStreamUnescaped()GetFieldStreamBase64()

这些 Get 方法采用 3 个参数:流输出参数、字段的 VDoc 路径和 pRemainder 输出参数。 ``pRemainder` 参数将填充被提取的字段之后的所有字段。例如:

/// Segment:  OBX|1|2|3|4|5|6|7
do GetFieldStreamRaw(.stream, "OBX:5", .
0
0 141
文章 Weiwei Gu · 八月 7, 2023 1m read

InterSystems 常见问题解答标题

您可以为以下 Web Gateway 错误消息/系统响应设置单独的错误页面:

  • 服务器错误
  • 服务器繁忙
  • 服务器无法使用
  • 服务器超时
  • 连接关闭

在 Web Gateway 管理界面上进行设置([Management Portal] > [System Administration] > [Configuration] > [Web Gateway Management] > [Configuration] > [Default Parameters])。

在“默认参数”(Default Parameters  )菜单的“错误页面”部分中,设置要显示的 html 页面的文件名或发生错误时要重定向到的 URL。

 

0
0 181
文章 姚 鑫 · 八月 6, 2023 3m read

第十四章 配置Production - 定义 HL7 的路由规则集

HL7 接口创建路由规则集时,目标是根据源消息中找到的段告诉production如何处理源消息。有时找到哪些片段很重要;有时,在这些细分中找到哪些值很重要。

在普通规则集中,每个规则都会向调用该规则集的业务流程返回一个值。在路由规则集中,规则通常将 HL7 消息定向到目的地,并可能在发送之前转换 HL7 消息。

创建规则集时,不要使用保留的包名称

  1. 当使用业务规则向导创建新的 HL7 路由流程时, 会创建一个新的空路由规则集来伴随新的路由流程。其信息表包含以下值:
  • Package Name 包名称 - 包含production类的包。例如,如果使用向导将路由进程添加到名为 TestRule.MyTest 的产品中,则关联的路由规则的包名称为:TestRule
  • Rule Name规则名称 - 在向导中选择的简单路由规则名称,例如:MyRule

包名称和规则名称的组合在命名空间内唯一标识规则。任何规则定义的全名是由点 (.) 连接的包名称和规则名称,如下所示:TestRule.MyRule

配置 HL7 路由流程时,该全名(而不是规则名称)是 BusinessRuleName 字段中使用的正确值。业务流程向导会自动进行设置。

0
0 141
文章 姚 鑫 · 八月 4, 2023 3m read

第十二章 配置Production - 添加HL7序列管理器

添加HL7序列管理器

HL7消息可能由于各种原因而乱序,特别是在多个处理器处理它们时。在某些情况下,需要确保按照正确的顺序处理HL7消息。在这种情况下,可以将HL7序列管理器添加到production的适当部分。

HL7序列管理器是一个业务流程,它接受传入的HL7消息(可能来自多个源),然后按照消息中的MSH:13 SequenceNumbers字段指定的顺序将消息转发到目标配置项。

序列管理器可以检测重复的消息和消息之间的时间间隔。它还确定顺序消息之间的时间间隔何时大到足以表明问题。它的灵敏度级别可以使用它的配置设置来调整。

要构建用于HL7消息路由生产的HL7序列管理器,必须创建并配置它,然后将其集成到生产中。本主题将解释每个步骤。

重要:HL7序列管理器是HL7兼容的存储转发应用程序,不支持HL7标准第2章2.10.1节中定义的HL7序列号协议。

创建HL7序列管理器

HL7序列管理器添加到production中:

  1. Management Portal“production Configuration”页面(在“Home”页面选择“Interoperability > Configure > production”)中显示production结果。
  2. Processes列中,单击Add按钮(加号)。
0
0 124
InterSystems 官方 Claire Zheng · 八月 3, 2023

InterSystems 已纠正了两个缺陷。

第一个缺陷可能导致 ECP 应用程序服务器挂起。此缺陷仅与 ARM 和 IBM Power 处理器相关;存在于 InterSystems IRIS®、InterSystems IRIS for Health™ 和 HealthShare® Health Connect 版本2022.1.22022.1.3中。该修复被标识为 DP-423661。该缺陷将在所有未来版本中得到解决。

在极少数情况下,第二个缺陷可能会导致dejournaling挂起。此缺陷存在于 InterSystems IRIS®、InterSystems IRIS for Health™ 和 HealthShare® Health Connect 版本2020.42021.x2022.x2023.1中。该修复被标识为 DP-423505。该缺陷将在所有未来版本中得到解决,并已在2023.1.1中得到纠正。

InterSystems 已发布版本2022.1.3的更新发行版,以便快速提供这些修复。相关的版本标识符是:

  • 原发布:2022.1.3.668.0
  • 更新发布:2022.1.3.670.1

这些修复也可以通过 Ad hoc 分发获得。

如果您对此警报有任何疑问,请联系 全球响应中心

0
0 179
文章 姚 鑫 · 八月 3, 2023 3m read

第十一章 配置Production - 集成和配置 HL7 业务服务

集成和配置 HL7 业务服务

要将新的 HL7 业务服务集成到production中,必须将其与其中继消息的路由流程或业务操作相关联。此外,如果希望业务服务接收非标准消息结构,将需要创建自定义 HL7 架构定义来解析和验证这些消息。去做这个:

  1. 完成创建 HL7 业务服务所需的任何目标配置名称或消息架构类别项的说明。这些项目可能是:
  • HL7 路由进程(针对路由接口)。请参阅下一节。
  • HL7 业务操作(如果设计绕过此接口的路由过程,只是将消息从传入业务服务中继到传出业务操作)。请参阅本章后面的“添加 HL7 业务操作”。
  • 自定义 HL7 架构定义,用于解析传入的 HL7 消息。
  1. 返回生产配置页面上的图表。选择新的 HL7 业务服务。如果“目标配置名称”和“消息架构类别”字段之前为空,请立即配置它们,然后单击“应用”。
  2. 根据需要配置业务服务的其他设置。详细信息请参见“参考”中的“HL7业务服务设置”。

添加 HL7 路由进程

要将 HL7 路由流程添加到production中,必须创建它,将其集成到产品中,并根据需要对其进行配置。以下小节提供了详细信息。

创建 HL7 路由流程

要将 HL7 路由流程添加到production

  1. 在管理门户的生产配置页面中显示生产(从主页选择互操作性 > 配置 > Production)。
0
0 135
文章 姚 鑫 · 八月 2, 2023 3m read

第十章 配置Production

本章介绍如何配置产品以包含 HL7 路由接口。它还描述了如何创建新的 HL7 路由制作。

创建新的 HL7 路由Produtcion

可以创建一个新的HL7路由产品,如下所示:

  1. Management Portal中,切换到适当的名称空间。

为此,请在标题栏中选择Switch,单击名称空间,然后单击OK

  1. 选择互操作性>列表>产品。
  2. 选择New以调用Production Wizard
  3. 输入“Package Name”“Production Name”“Description”
  4. 选择HL7 Messaging production类型并选择OK

starter production有一个接口,其元素为:

  • HL7FileService — 一个禁用的HL7文件服务,具有默认设置
  • MsgRouterHL7路由进程,带有空路由规则集
  • HL7FileOperation - 一个禁用的HL7文件操作,具有默认设置

在构建HL7路由产品时,需要创建和配置许多这样的接口。可以从启用这些起始元素、复制它们、重命名它们并修改它们以满足需要开始。在构建接口时,经常会出现这样的情况:在配置一个项目时,必须输入尚未创建的另一个项目的名称。明确的命名约定对于避免混淆至关重要。

0
0 189
文章 Kelly Huang · 八月 2, 2023 18m read

k8s

这是一个使用 IKO 在 k3d 上部署  iris-oauth-fhir  的示例。

*  iris-oauth-fhir 是一个示例,用于部署带有 OAuth2 身份验证功能的 FHIR 服务器,InterSystems IRIS for Health 作为资源服务器,Google OpenId 则作为授权服务器。

* k3d 作为一个轻量级封装器,用于在 docker 中运行 k3s (Rancher Lab 的最小 Kubernetes 发行版)

IKO 是一个在 Kubernetes 上部署 InterSystems IRIS for Health 的工具。

2. 目录表

0
0 172