#InterSystems IRIS for Health

0 关注者 · 966 帖子

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

文章 姚 鑫 · 七月 13, 2023 3m read

第五十七章 开发Productions - ObjectScript Productions - 不常见的任务 - 以编程方式使用查找表

IRIS 提供了名为 Lookup() 的实用函数,以便可以轻松地从业务规则或 DTL 数据转换中执行表查找。此功能仅在创建至少一个查找表并用适当的数据填充后才起作用。

有关定义查找表的信息,请参阅配置产品中的定义数据查找表。

如果需要比管理门户提供的更直接的查找表操作,请在类中使用 。此类公开查找表以通过对象或 进行访问。此外,它还提供类方法来清除表、将数据导出为 XML 以及从 导入数据。

提供以下字符串属性:

查找表的名称,最多 255 个字符。可以通过在 IRIS 门户中选择“互操作性”、“配置”和“数据查找表”,然后选择“打开”来查看命名空间中定义的查找表。

KeyName

查找表中条目的键,最多 个字符。这是互操作性 > 配置 > 数据查找表页面上键字段的值。

查找表中与此键关联的值,最多 个字符。这是互操作性 > 配置 > 数据查找表页面上的值字段中的值。

示例 查询是:

还提供了以下类方法:

删除指定查找表的内容。

从指定的 文件导入查找表数据。要成功导入,文件必须使用与此类的 方法提供的相同的 XML 格式。

将查找表数据导出到指定的 文件。如果该文件存在, 会用新数据覆盖它。

0
0 104
文章 Michael Lei · 七月 13, 2023 1m read

前不久,北京市人民政府印发了《关于更好发挥数据要素作用进一步加快发展数字经济的实施意见》的通知。其中提到要“率先探索数据跨境流通”。今年1月,北京市互联网信息办公室也发文公示,首都医科大学附属北京友谊医院与荷兰阿姆斯特丹大学医学中心合作研究项目成为全国首个被北京网信办批准的数据出境安全评估案例(编号20220001)。可以预见,为更好发挥数据要素作用将来可能出现越来越多的跨境数据流通。那么我们今天仅仅看下,在医疗领域国际主要流行的数据标准都有哪些。

以下是国际数字医疗合作组织的主要统计(该组织协同了世界卫生组织WHO,OECD和33个不同的国家和地区)

从上表可以看出,数据共享领域 DICOM,HL7 v2, CDA, FHIR,v3 是主要的标准,在临床术语方面 ICD9/10/11, SNOMED 和Lionc是目前国际上各个国家和地区最主流的医疗数据标准。供大家参考。

相关阅读

FHIR标准和国际基于FHIR的互联互通实践

论集成标准的选择对医院信息集成平台建设的影响

对话:“数据二十条”与FHIR标准

原文链接:https://www.healthit.gov/topic/global-digital-health-partnership

0
0 690
文章 姚 鑫 · 七月 12, 2023 3m read

第五十六章 开发Productions - ObjectScript Productions - 不常见的任务 - 在适配器类中包含凭据

在适配器类中包含凭据

要在适配器类中包含生产凭证,请在类定义中执行以下操作:

  • 包括名为 Credentials 的设置。
  • 定义一个名为 CredentialsSet() 的方法,该方法使用 Credentials 设置的值作为键来查找 Credentials 表中的用户名和密码。然后实例化一个包含用户名和密码的凭据对象。

覆盖Production凭证

虽然凭证系统集中管理并将登录数据保留在源代码之外,但有时需要编写代码以从其他来源获取凭证。例如,代码可能会从 Web 表单或 cookie 中检索用户名和密码,然后将它们与 出站适配器一起使用以连接到其他站点。

处理此问题的方法是在业务服务或业务操作代码中,在调用任何适配器方法之前执行以下两项操作:

  • 提供实例化凭证对象并向其分配用户名和密码值的代码
  • 请勿随后设置适配器 属性或调用适配器 方法,否则值可能会被重置。
  If ..Adapter.Credentials="" {
     Set ..Adapter.%CredentialsObj=##class(Ens.Config.Credentials).%New()
  }
  Set ..Adapter.%CredentialsObj.Username = tUsername
  Set ..Adapter.%CredentialsObj.Password = tPassword
0
0 103
文章 Kelly Huang · 七月 12, 2023 4m read

FHIR 通过提供标准化数据模型来构建医疗保健应用程序并促进不同医疗保健系统之间的数据交换,彻底改变了医疗保健行业。由于 FHIR 标准基于现代 API 驱动的方法,因此移动和 Web 开发人员更容易使用它。然而,与 FHIR API 交互仍然具有挑战性,尤其是在使用自然语言查询数据时。

隆重推出FHIR - AI 和 OpenAPI 链应用程序,该解决方案允许用户使用自然语言查询与 FHIR API 进行交互。该应用程序使用OpenAILangChainStreamlit构建,简化了查询 FHIR API 的过程并使其更加用户友好。

FHIR OpenAPI 规范是什么?

OpenAPI 规范(以前称为 Swagger,目前是OpenAPI Initiative的一部分)已成为软件开发领域的重要工具,使开发人员能够更有效地设计、记录 API 并与 API 交互。 OpenAPI 规范定义了一种标准的机器可读格式来描述 RESTful API,提供了一种清晰一致的方式来理解其功能并有效地使用它们。

在医疗保健领域,FHIR 成为数据交换和互操作性的领先标准。为了增强FHIR的互操作能力, HL7正式记录了FHIR OpenAPI规范,使开发人员能够将FHIR资源和操作无缝集成到他们的软件解决方案中。

0
0 517
文章 Lilian Huang · 七月 9, 2023 5m read

#Embedded Python #HL7 #InterSystems IRIS for Health

写在回复社区帖子《Python能否动态创建HL7消息》中。

前提条件和设置

使用一个启用了集成的命名空间。
注意:USER命名空间默认不启用互操作性。
如果以下建议创建一个新的互操作性命名空间来探索功能。

# 切换到
ZN "[互操作性名称空间名称]"

# 启动交互式Python shell:
Do $SYSTEM.Python.Shell()

启动脚本

#Load dependencies

import datetime as dt
import uuid

# Cache current time in CCYYMMDDHHMMss format
hl7_datetime_now=dt.datetime.now().strftime('%Y%m%d%H%M%S')

# Create HL7 Message
hl7=iris.cls("EnsLib.HL7.Message")._New()

# Set the doc type
# 2.5.1:ORU_R01 - Unsolicited transmission of an observation message
hl7.PokeDocType("2.5.1:ORU_R01")
0
0 603
文章 姚 鑫 · 七月 9, 2023 4m read

第五十三章 开发Productions - ObjectScript Productions - 不常见的任务 - 使用 Ens.Director 访问设置

使用 Ens.Director 访问设置

即使production未运行,类中的以下 Ens.Director 方法也允许检索生产设置:

GetAdapterSettings()

返回一个数组,其中包含所标识的配置项(业务服务或业务操作)的所有适配器设置的值。该数组由设置名称下标。可以使用 函数来访问数组的元素。此方法的第一个参数是一个字符串,其中包含由两个竖线 (||) 分隔的产品名称和配置项名称。返回值是状态值。如果状态值不是 $$$OK,则无法找到指定的生产名称 () 和配置项名称 () 组合。

 Set tSC=##class(Ens.Director).GetAdapterSettings("myProd||myOp",.tSettings)

返回标识的配置项的命名适配器设置的值:业务服务或业务操作。第一个参数是一个字符串,其中包含由两个竖线 () 分隔的产品名称和配置项名称。第二个参数是配置设置的名称。第三个输出参数返回调用的状态值。例如:

 Set val=##class(Ens.Director).GetAdapterSettingValue("myProd||myOp","QSize",.tSC)
0
0 137
文章 姚 鑫 · 七月 7, 2023 3m read

第五十一章 开发Productions - ObjectScript Productions - 不常见的任务

定义自定义实用函数

IRIS提供了一组可以从业务规则和DTL中调用的实用函数;这些在开发业务规则的Productions中使用的效用函数中有所描述。可以添加自己的功能,业务规则引擎和业务规则编辑器会自动适应您的扩展。

要添加新的效用函数:

  1. 创建一个新类,它是 Ens.Rule.FunctionSet 的子类。此类不得扩展任何其他超类,只能扩展 Ens.Rule.FunctionSet
  2. 对于希望定义的每个函数,将一个类方法添加到新函数集类中。不支持多态性,所以准确的说,你必须把这些类方法标记为。可以在现有的 方法中查看这个(是 的超类)。
  3. 编译新类。新函数现在可用于规则表达式。要调用这些函数,请使用子类中的 名称。与 中定义的函数不同,用户定义的方法名称必须使用它们所属的类进行完全限定。如果通过从管理门户中的向导中选择名称来添加它们,则会自动发生这种情况。

例如,以下函数集类提供了用于业务规则的日期和时间函数。它的类方法 和 调用 ObjectScript 函数 和 以从 特殊变量 中提取所需的日期和时间值:

/// Time functions to use in rule definitions.
Class Demo.MsgRouter.Functions Extends Ens.Rule.FunctionSet
{

/// Returns the ordinal position of the day in the week,
/// where 0 is Sunday, 1 is Monday, and so on.
ClassMethod DayOfWeek() As %Integer [ CodeMode = expression, Final ]
{
$zd($H,10)
}

/// Returns the time as a number of seconds since midnight.
ClassMethod TimeInSeconds() As %Integer [ CodeMode = expression, Final ]
{
$p($H,",",2)
}

}
0
0 143
文章 Jingwei Wang · 七月 7, 2023 2m read
  1. 主机和备机为什么总是切换,会不会是与仲裁机连接的心跳检测出问题了
    • 查看镜像状态 打开管理门户 - ‘系统操作’ - ‘镜像监视器’
    • 如遇到主备切换,可以通过消息日志查看切换原因 打开管理门户 - ‘系统操作’ - ‘系统日志’ - ‘消息日志’      
  2. 基础问题怎么查询
    • 通过管理门户查看日志 打开管理门户 - ‘系统操作’ - ‘系统日志’ - ‘消息日志’
    • 通过监控告警日志 告警日志文件:<intall-dir>/mgr/alerts.log文件      
  3. Production所有组件设置重试间隔、故障超时是什么意思
    • 重试间隔:与回复代码操作配合使用,当发生回复代码操作中设置的回复发生时,按照重试间隔设置的时间对外部业务系统再次访问。
    • 故障超时:发生故障时继续传递消息的总秒数,可以与回复代码操作配合使用。      
  4. 有队列出现怎么办
    • 查看队列的方式 打开管理门户 - ‘Interoperability’ - ‘监视器’ - ‘队列’ 首先,查看队列计数是否是在降低,及时有队列,但是队列在正常下降,此状态为正常情况。 但是,如果队列持续升高,没有任何下降趋势,查看产生队列的相应组件的日志,查看是否是平台内部有异常出现。如果平台内部没有异常,查看第三方下游业务系统是否能正常通信。
0
0 332
文章 Jingwei Wang · 七月 7, 2023 2m read

本篇文章主要介绍互联互通套件的一些基础问题:

  1. 基于互联互通套件通过互联互通成熟的测评的实施工作量
    • 电子病历共享文档部分:需要客户将业务系统数据灌入CCH套件SQL模型中
    • 服务部分:在平台做消息改造,或者直接做业务系统接口改造  
  2. 基于互联互通套件通过电子病例五级+互联互通成熟度测评四级需要的最低人员配备和项目总耗时
    • 需要了医院现有业务系统和人员配备,做进一步评估及分析  
  3. 目标只是通过互联互通成熟度测评需不需要FHIR
    • 不需要,如果只是过测评,只需要互联互通套件基础版就够了  
  4. BI相关功能如何实现
    • 可以使用DeepSee,基于Cubes做数据分析及钻取
  5. 如何使用Java进行快速开发
    • 可以使用PEX,支持Java开发,但是如果使用Production,推荐使用内置开发语言ObjectScript,学习成本更低,未来开发新特性能力更强大
  6. 有没有自带的ETL工具
    • InterSystems 互联互通套件中没有ETL工具,但是支持所有ETL工具的连接  
  7. 发送失败消息是否有记录
    • 所有错误消息都能够在平台监控到,且可以进行转发或者重发  
  8. 有没有按照单个服务流程进行整个业务流程的修改和查看
0
0 353
文章 姚 鑫 · 七月 6, 2023 3m read

第五十章 开发Productions - ObjectScript Productions - 高效处理批量记录

高效处理批量记录

RecordMap 功能一次导入一条记录,但如果正在导入或导出大量记录,则可以通过使用 RecordMap Batch 获得显着的效率提升。 RecordMap Batch 功能处理同类记录并一次处理一批中的所有记录。可以选择在批次之前加上一个标题记录,然后跟一个尾部记录。

要创建 批处理,需要实现一个继承自中的 和 EnsLib.RecordMap.Batch的类。 类包含处理解析和写出与特定批次关联的任何标头和尾部的方法。必须提供解析和编写标头的代码。对于简单的表头和表尾,可以使用类中的 ,它继承自 类,并提供处理简单表头和表尾的代码。如果需要处理更复杂的标头和尾数据,可以扩展这两个批处理实现中的任何一个。

批处理遵循用于其他消息格式(如 )的方法。这与处理 RecordMap 批处理对象的内置业务操作特别相关:这些业务操作接受 对象或扩展 的 对象,或 类型的请求。当接收到特定批次中的记录时,将打开批次并将批次标头写入临时文件,然后是该操作接收到的该批次中的对象。如果请求是同步的,类名、 和先前为该批次写入的记录数将在 中返回。

0
0 109
文章 Michael Lei · 七月 4, 2023 11m read

这是个实验项目,使用OpenAI API与FHIR资源和Python相结合来回答医疗行业的用户提问。

项目想法

生成式人工智能,如OpenAI上提供的LLM模型, 已被证明在理解和回答高层次问题方面具有显著能力。他们使用大量的数据来训练他们的模型,因此他们可以回答复杂的问题。

他们甚至可以使用编程语言,根据提示创建代码 --我不得不承认,让我的工作自动化的想法让我感到有些焦虑。但到目前为止,似乎这是人们必须要习惯的事情,不管你喜不喜欢。所以我决定做一些尝试。

这个项目的主要想法是在我读到这篇文章关于ChatARKit项目时产生的。这个项目使用OpenAI的API来解释语音命令,在智能手机摄像头的实时视频中渲染3D物体--非常酷的项目。而且,这似乎是一个热门话题,因为我发现最近有一篇论文遵循类似的想法。

让我最担心的是使用ChatGPT对AR进行**编程。由于有一个开放的github repo,我搜索了一下,发现作者是如何使用ChatGPT生成代码的。这种技术被称为提示工程Prompt Engineering--这是维基百科关于它的文章,或者这两个更实用的参考资料: 12

所以我想--为什么不结合FHIR和Python试试类似的东西?

1
0 295
文章 姚 鑫 · 七月 5, 2023 3m read

第四十九章 开发Productions - ObjectScript Productions - 使用复杂记录映射器 - 复杂的记录映射类结构

复杂的记录映射类结构

有两个类以类似于描述记录映射的两个类的方式描述复杂的记录映射。描述复杂记录映射的两个类是:

  • 复杂记录映射,描述复杂记录的外部结构并实现复杂记录解析器和编写器。
  • 生成的复杂记录类定义了包含数据的对象的结构。该对象允许在数据转换和路由规则条件中引用数据。

一个复杂的记录映射业务服务读取并解析传入的数据并创建一条消息,该消息是生成的记录类的一个实例。业务流程可以读取、修改或生成生成的复杂记录类的实例。最后,复杂记录映射业务操作使用实例中的数据,使用复杂记录映射作为格式化模板写入输出数据。复杂记录映射类和生成的复杂记录类都具有描述数据的层次结构。复杂记录映射类和生成的复杂记录类具有并行结构。这与 RecordMap 类不同,其中生成的记录类可以具有不同的层次结构。

当创建一个新的复杂记录映射并将其保存在管理门户中时,此操作定义了一个类,用于在扩展 EnsLib.RecordMap.ComplexMap和在类中扩展 Ens.RequestO。为了定义生成的记录类,必须单击管理门户中的生成,这会调用 EnsLib.ComplexGenerator 类中的 方法。仅编译

0
0 137
文章 Tete Zhang · 七月 4, 2023 3m read

本文讨论了在使用或维护InterSystems产品中遇到问题时,试图确定问题时可能用到的思路和工具。

一般故障排除

确定问题发生的地点和时间

  • 问题是什么时候开始的?多久发生一次?
  • 问题首先出现在哪里?
  • 问题在什么条件下会被触发?

审查日志中的警告、错误和警报

以下日志可能包含有关该问题的有用信息。可以尝试在以下日志中寻找问题开始前后的警告或报错。

  • 检查 messages.log(IRIS)或者 cconsole.log(Caché and Ensemble)
    • 通过文件系统(<install-dir>/mgr/messages.log)访问messages.log文件,或者
    • 通过管理门户(系统操作>系统日志>Messages Log)访问文件内容
  • 检查production事件日志 (详细信息请参见文档
  • 查看应用程序错误日志 (详细信息请参见文档
  • 查看Web Gateway/CSP Gateway日志
  • 查看网络服务器(IIS/Apache)日志

检查实例是否可以访问足够的存储空间

  • 检查文件系统剩余空间(推荐设置操作系统层级的存储空间低告警)
  • 检查数据库剩余空间
    • 通过管理门户(系统操作>数据库>Freespace View)查看数据库文件内剩余空间百分比
  • 检查Journal日志空间

检查CPU活动

  • 服务器的负载是否在正常范围内?
0
0 377
文章 姚 鑫 · 七月 1, 2023 4m read

第四十五章 开发Productions - ObjectScript Productions - 使用记录映射器 - 记录映射类结构

记录映射类结构

有两个类描述记录映射:

  • RecordMap 描述了记录的外部结构,实现了记录解析器和记录编写器。
  • 生成的记录类定义了包含数据的对象的结构。该对象允许在数据转换和路由规则条件中引用数据。

记录映射业务服务读取并解析传入数据并创建一条消息,该消息是生成的记录类的一个实例。业务流程可以读取、修改或生成生成的记录类的实例。最后,记录映射业务操作使用实例中的数据将 RecordMap 用作格式化模板来写入传出数据。 类和生成的记录类都具有描述数据的层次结构,但生成的对象结构不必与 RecordMap 结构相同。

当创建一个新的记录映射并将其保存在管理门户中时,此操作定义了一个扩展 类的类。为了定义生成的记录类,您必须在管理门户中单击“生成”,这会调用 中的 GenerateObject()方法。仅编译 类定义不会为生成的记录类创建代码。必须使用管理门户或从终端或代码调用 方法。

由一系列字段和组合组成:

  • 字段定义具有指定类型的数据字段。字段类型可以指定参数,例如 VALUELISTMAXVAL、 和 。在固定宽度的记录中,记录映射器使用字段宽度来设置 或 参数的默认值。
  • 组合由一系列字段和组合组成。
0
0 122
文章 姚 鑫 · 六月 24, 2023 2m read

第三十八章 开发Productions - ObjectScript Productions - Defining Business Metrics - 业务指标中的其他选项

业务指标中的其他选项

本节介绍业务指标类中的其他选项。

定义在仪表板中使用的操作

业务指标类可以定义操作,可以将这些操作公开为仪表板中的用户选项。一个操作可以执行客户端活动(例如过滤和刷新仪表板)和服务器端活动(例如调用您自己的 API)的组合。作用机制很一般。

要定义操作,请实施业务指标类的 %OnGetActionList()%OnDashboardAction() 方法。有关这些方法的信息,请参阅实施 商业智能中的定义自定义操作。

Implementing OnInit()

例如,还可以覆盖业务指标类的 回调以初始化任何属性。如果这样做,必须确保它显式调用其超类 BusinessMetric 提供的 OnInit() 方法,如下所示。如果不是,则相应的仪表板元素无法正常显示:

Method OnInit() As %Status
{
    // . . .

    // invoke superclass implementation
    Quit ##super()
}
0
0 131
文章 姚 鑫 · 六月 21, 2023 2m read

第三十五章 开发Productions - ObjectScript Productions - Defining Business Metrics - 定义单实例业务指标

定义单实例业务指标

要定义单实例业务指标,请定义一个满足以下要求的类:

  • 它必须是 Ens.BusinessMetric的子类。

对于此类,ADAPTER 参数是 Ens.InboundAdapter,它提供了 CallInterval 设置。这确保定期调用业务指标。

  • 它必须定义一个或多个业务度量属性。简单属性和具有自动历史的属性的细节不同。
  • 它可以选择性地为属性参数指定值,例如,以控制值的范围。
  • 它必须为业务度量属性分配值。为此,它必须实施 OnCalculateMetrics() 方法。

定义简单的业务指标属性

要定义一个简单的业务指标属性,请将一个属性添加到业务指标类,如下所示:

Property MetricProperty As Ens.DataType.Metric;

此属性可以包含数字或字符串值。

其中 是业务指标属性的名称。例如:

/// This metric tracks A/R totals
Property AccountsReceivable As Ens.DataType.Metric;

此属性可以包含数字或字符串值。

使用自动历史定义业务指标属性

0
0 141
文章 姚 鑫 · 六月 18, 2023 6m read

第六十一章 镜像中断程序 - 计划故障转移到提升的 DR 异步

计划故障转移到提升的 DR 异步

如果在镜像中包含一个或多个 DR 异步以提供灾难恢复功能,则最好通过计划的故障转移到每个 DR 异步来定期测试此功能。要执行此测试,或者当出于任何其他原因(例如包含故障转移成员的数据中心计划停电)而想要故障转移到 DR 异步时,请使用以下过程:

  1. IRIS C 提升为故障转移成员;因为 IRIS A 可用,所以不会要求您选择故障转移伙伴。 成为备份, (如果存在)降级为 异步。

注意:如果镜像仅包含一个故障转移成员,则过程相同;不需要选择故障转移伙伴, 成为备份,因此镜像现在有两个故障转移成员。

  1. IRIS C 变为活动状态时(请参阅备份状态和自动故障转移),在 IRIS A 上执行正常关闭。自动故障转移被触发,允许 IRIS C 接管为主。
  2. 在可能希望在 上执行任何测试后,重新启动 ,它会自动加入镜像作为备份。

或者,如果你想重启主服务器以保持同步而不自动成为备份,因为在真正的灾难中它不太可能可用,可以在重启之前将它降级为 DR 异步(通过它的 ),然后准备好后将其提升为故障转移成员。有关执行此操作的信息,请参阅将备份降级为 异步。

  1. IRIS A 作为备份激活时,在 上执行正常关闭以故障转移到 IRIS A
0
1 132
文章 Michael Lei · 六月 18, 2023 3m read

在数字化时代,数据的重要性无可置疑。数据作为新型生产要素,不仅在宏观政策层面得到党和政府的大力推动,也是医院高质量发展的关键和改变医疗行业的驱动力。随着医疗信息化的迅猛发展,我们正迈向一个数据随处可及、人人可用易用的医疗信息化时代。这一时代将数据与人的需求相结合,致力于让数据能“主动”找到需要他们的医护人员和患者,每一个行业从业者,都应致力于为医护人员和患者提供简单易用的软件解决方案,减少工作量,提高效率,推动医疗行业的进步。

数据与人的融合是实现医疗行业数字化转型的核心。当然,医疗数据的收集、存储和管理对于提供高质量的医疗服务至关重要。然而,仅仅有大量的数据并不足够,我们需要将数据与人的需求紧密结合起来。这意味着我们应该让更多的数据关联起来,并且能服务于更多的人群,让患者能够随时随地访问他们的电子病历,让医生和科研人员也能及时有效地获取病人在医院围墙内外进行治疗和健康管理的数据,并且以直观易懂的方式呈现给医护人员和患者,使他们能够快速、准确地获取所需的信息。数据的融合还包括将不同来源的数据整合起来,为医护人员提供全面、完整的视图,同时基于医疗诊断的规则,不管是通过CDSS的形式,还是通过ChatBot(聊天机器人),帮助他们做出更好的决策。

实现数据和人的融合要按照人的需求投放数据。数字化转型的重要目标是为医护人员和患者提供所需的数据,以支持决策和治疗过程。

0
0 186
文章 姚 鑫 · 六月 17, 2023 4m read

第六十章 镜像中断程序 - 使用主 ISCAgent 的日志数据进行 DR 提升和手动故障转移

使用主 ISCAgent 的日志数据进行 提升和手动故障转移

如果 IRIS A 的主机系统正在运行,但 实例没有且无法重新启动,您可以使用以下过程在通过升级后使用来自 IRIS A 的最新日志数据更新升级的 的 。

  1. 推广 IRIS C,选择 IRIS A 作为故障转移伙伴。 被提升为故障转移成员,从 的代理获取最新的日志数据,并成为主要成员。
  2. 重新启动 上的 实例,它作为备份重新加入镜像。
  3. 在 重新加入镜像并变为活动状态后,可以使用使用升级的 DR 异步临时替换故障转移成员中描述的过程,将所有成员返回到它们以前的角色,首先是正常关闭 ,然后在 IRIS B 的配置参数文件的 部分中设置 (请参阅配置参数文件参考中的 ),将 重新启动为 异步,将 提升为备份,并以 异步方式重新启动 。

注意:如果 的主机系统已关闭,但 的主机系统已启动,尽管其 实例未运行,请按照手动故障转移到活动备份中所述在 上运行 例程以确定 是否 在发生故障时是一个活动备份。如果是这样,使用前面的过程,但在升级期间选择

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

第五十八章 镜像中断程序 - 主要故障转移成员的计划外隔离

主要故障转移成员的计划外隔离

如自动故障转移机制中所述,当主节点同时与备份节点和仲裁节点失去联系时,它会进入无限期的故障状态并且不能再作为主节点运行。通常,发生这种情况时,备份会接管并成为主要的。当主服务器与备份服务器的连接恢复时,备份服务器强制关闭主服务器;或者,可以在恢复连接之前自行强制关闭主服务器。

但是,如果一个网络事件(或一系列网络事件)导致故障转移成员和仲裁器同时(或几乎同时)彼此失去联系,则可能没有主节点,因为备份无法接管并且主节点不再存在作为主要操作。这种情况显示为自动故障转移机制详细部分中仲裁模式下对丢失连接的镜像响应表中的最终方案。当主数据库变得孤立并且备份由于错误而无法接管时,可能会发生类似的情况。

当这些情况发生时,有以下选择:

  • 恢复故障转移成员之间的连接;当前一个备份与前一个主要联系时,成员进行协商,一个成为主要,另一个成为备份。
  • 在不恢复连接的情况下,如果可以在主服务器上打开终端窗口,请这样做并在主服务器上运行 ^MIRROR 例程(请参阅使用 ^MIRROR 例程)。该例程确认主实例处于不确定的故障状态,并为您提供两个选项:
    • 如果确认另一个故障转移成员已关闭(可能是因为您将其关闭),它从未成为主成员,并且它没有创建比主成员上的最新镜像日志文件晚的镜像日志文件,可以强制该成员恢复操作为主。
0
1 167
文章 姚 鑫 · 六月 14, 2023 4m read

第五十七章 镜像中断程序 - 在手动故障转移之前确定备份是否处于活动状态

在手动故障转移之前确定备份是否处于活动状态

假设有两个名为 IRIS AIRIS B 的故障转移成员。如果 ^MIRROR 例程确认备份 () 在与主 () 丢失联系时处于活动状态,因此具有最新的来自 的日志数据,可以使用单个过程手动进行故障转移。当连接因主要故障而丢失时,不会造成数据丢失的风险。但是,当发生多个故障时,活动备份可能没有来自主服务器的所有最新日志数据,因为主服务器在连接丢失后继续运行了一段时间。

使用以下过程确定备份是否处于活动状态:

  1. 确认 IRIS 实例 IRIS A 上的 实际上已关闭(并确保它们在整个手动故障转移过程中保持关闭状态)。
  2. 在 上,在终端的 命名空间中运行 例程(请参阅使用 例程)。
  3. 在主菜单中选择镜像管理,显示如下子菜单:
 1) Add mirrored database(s)
 2) Remove mirrored database(s)
 3) Activate or Catchup mirrored database(s)
 4) Change No Failover State
 5) Try to make this the primary
 6) Connect to Mirror
 7) Stop mirroring on this member
 8) Modify Database Size Field(s)
 9) Force this node to become the primary
10) Promote Async DR member to Failover member
11) Demote Backup member to Async DR member
12) Mark an inactive database as caught up
13) Manage mirror dejournaling on async member (disabled)
14) Pause dejournaling for database(s)
0
1 147
InterSystems 官方 Claire Zheng · 六月 14, 2023

InterSystems 已纠正导致进程内存使用量增加的缺陷。

具体来说,在对局部变量执行$Order$Query  或Merge时,会出现本地进程分区内存消耗增加的问题。虽然这对大多数运行环境没有不利影响,但支持大量进程或严格限制每个进程最大内存使用的环境可能会受到影响。某些进程可能会遇到<STORE> 错误

该缺陷存在于2023.1.0.229.0中,但它被重新发布为2023.1.0.235.1,并包含了修复程序,以加快修正,而无需客户等待维护版本。

此缺陷的更正标识为 DP-423127 和 DP-423237。这些将包含在所有未来版本中。

该缺陷出现在 InterSystems IRIS ® 、InterSystems IRIS for Health ™ 和HealthShare ® Health Connect 的版本 2022.2、2022.3 和 2023.1(内部版本 229)中。如果您运行的是这些版本之一,我们建议升级到 2023.1(内部版本 235)。

此修复也可通过 Ad hoc 分发获得。

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

0
1 198
文章 姚 鑫 · 六月 13, 2023 4m read

第五十六章 镜像中断程序 - 计划外停机程序

计划外停机程序

当一个故障转移成员意外失败时,适当的程序取决于哪个 实例失败,镜像所处的故障转移模式(参见自动故障转移机制详述),另一个故障转移成员实例的状态,两个故障转移成员的 ISCAgent 的可用性, 和镜像的设置。

  • 备份故障转移成员的计划外中断
  • 具有自动故障转移的主要故障转移成员的计划外中断
  • 未发生自动故障转移时主要故障转移成员的计划外中断
  • 主要故障转移成员的计划外隔离
  • 两个故障转移成员的计划外中断

在阅读和使用本节时,您能需要查看对各种中断情况的镜像响应,其中讨论了主服务器变得不可用时备份行为的详细信息。

备份故障转移成员的计划外中断

当备份故障转移成员的 实例或其主机系统发生故障时,主要继续正常运行,尽管某些应用程序可能会出现短暂的暂停(有关详细信息,请参阅备份中断的影响)。

当备份发生意外中断时,纠正导致故障的条件,然后重新启动备份实例或主机系统。当备份的 实例重新启动时,它会自动加入镜像作为备份。

注意:如果备份在代理控制模式下失败(请参阅自动故障转移规则)并且无法联系到备份的 ISCAgent,则主的 实例在重新启动后无法成为主实例,因为它无法确定它是否是最近的主实例.因此,如果出于任何原因需要在备份主机系统关闭时重新启动实例,则必须使用维护备份故障转移成员中描述的过程来执行此操作。

0
1 173
文章 Michael Lei · 六月 12, 2023 1m read

将 FHIR 文档(例如患者信息表、出院摘要)发布到 FHIR 存储库时:

EndPoint端点/Bundle捆绑

您可以使用上述 URL 进行 POST。 (以下示例使用 IRIS for Health 提供的 FHIR 存储库。)

我将检查 GET 请求。

我能够确认我能够注册。

对于在FHIR repository注册的FHIR文档,如果能通过指定文档编号来GET会很方便,由于支持,无法对指定Composition.identifier的Bundle资源进行GET请求。

作为解决方法,将注册 Bundle 时设置为 Composition.identifier.value 的文档编号设置为 Bundle.identifier.value 然后 POST。通过这样做,您可以在 Bundle 的 Search Parameter: identifier 中指定文档编号并 GET 目标 Bundle 资源。

文档示例:(这是部分摘录,因为它很长)

 { "resourceType""Bundle"

当返回 201 created 时,尝试 GET。


​​​​
这样能够确认添加到Bundle.

0
1 279
文章 Louis Lu · 六月 12, 2023 2m read

文章相关视频参见Synthea生成FHIR测试数据,以及FHIR服务器加载FHIR资源文件

1. 什么是Synthea

Synthea是一个开源软件包,可以模拟生成患者就诊数据。他的github地址在这里

生成的就诊模版从最初的模拟美国前十种常见病、前十种慢性病到现今超过90种不同的模型。详细模型参见这里

基于当前版本,Synthea的特性包括:

  • 从出生到死亡的全生命周期
  • 可配置的人口统计学信息(默认为美国马萨诸塞州人口普查数据)
  • 模块化规则系统
    • 插入通用模块
    • 用于附加功能的自定义 Java 规则模块
  • 主要医疗事件就诊、急诊室就诊和症状驱动的就诊
  • 症状、 过敏、药品、 疫苗接种、观察/生命体征、实验室、处置、 护理计划
  • 支持格式
    • HL7 FHIR(R4、STU3 v3.0.1 和 DSTU2 v1.0.2)
    • ndjson 格式的批量 FHIR(设置 exporter.fhir.bulk_data = true 以激活)
    • C-CDA (设置 exporter.ccda.export = true 以激活)
    • CSV (设置 exporter.csv.export = true 以激活)
    • CPCDS (设置 exporter.cpcds.
0
1 567
讨论 王喆 👀 · 六月 11, 2023

最近在换吃饭的家伙(笔记本),整理了一下当前开发使用的环境和工具,如下以目录展示,想问问社区的各位老师和同学,你们开发的各个环节使用的是什么工具,同时希望展示一下你们的硬件设备😁😁😁

1 Java环境

1.1 JDK-1.8

1.2 开发工具-IDEA

1.3 MySQL数据库

1.4 版本管理工具-git/svn

1.5 nacos

1.6 spring cloud alibaba

2 前端vue环境

2.1 node

2.2 vue

2.3 浏览器

2.3.1 谷歌

2.3.2 Firefox

2.3.3 Edge

3 esb环境--IRS

3.1 IRS for Heath 2023

3.2 Postman/ApiPost

3.3 SOAPUI

3.4 7Edit.2.x

3.5 Json&XML可视化工具

MissionKitEnt2014/Altova XMLSpy 2014

3.6 开发工具 VSCode

4 虚拟机环境

4.1 VMware Workstation Pro

4.2 镜像

4.2.1 Ubuntu20.04镜像

4.2.2 Windows 2012 R2镜像

4.2.3 Windows 10 镜像

4.3 Docker

4.4 FinalShell

5 远程链接

5.1 向日葵

5.2 ToDesk

6 数据环境

6.1 dbeaver

6.2 navicat

7 办公环境

7.1 腾讯会议

7.2 钉钉

7.

0
1 651
文章 姚 鑫 · 六月 11, 2023 4m read

第三十二章 开发Productions - ObjectScript Productions - 定义警报处理器 - 使用路由警报处理器

使用路由警报处理器

如果需要通过多种输出机制联系用户,警报处理器应该是一个业务流程,用于确定如何在消息中路由 Ens.AlertReques。在这种情况下,Productions必须为每个输出机制包含一个额外的业务操作,并且警报处理器将消息转发到这些业务操作。

将警报处理器定义为路由进程

要将警报处理器定义为路由流程,请创建一个可以在消息中接收 Ens.AlertRequest 的业务流程类。

业务流程将检查消息并将它们转发给不同的业务操作,具体取决于警报内容和包含的任何逻辑。

逻辑可能需要考虑以下因素:

  • 不同用户的不同要求
  • 根据一天中的时间不同的要求
  • 组织的问题解决政策和程序

可以在使用 类作为 Ens.Alert 路由进程。此类提供设置业务规则名称。如果将此设置指定为路由规则集的名称,则此业务主机会使用该规则集中的逻辑来转发它收到的所有消息。

定义业务操作

可以定义每个所需的业务操作,如使用简单电子邮件警报处理器或使用简单出站适配器警报处理器中所述。

将自定义代码添加到警报管理

警报管理允许将警报分配给用户、跟踪警报的状态以及管理解决警报的进度。

0
1 214
文章 Qiao Peng · 六月 11, 2023 7m read

数据平台一直在进化:从数据中心到数据中台,离散的数据资产得到进一步梳理和整合、按业务封装数据和操作数据的方法,并逐步提供了企业统一的访问、更新、检索、查询等数据服务。

然而市场上不乏听到数据平台的成功案例,却鲜见这些案例得到大规模推广。原因是什么呢?

一. 传统数据平台建设的挑战

传统数据平台的数据模型基于各自厂商的理解,缺乏统一行业数据模型和行业语义。可供参考的国内卫生信息数据元、数据集标准并非完整的行业语义,例如没有业务实体模型和数据元关系定义。传统的数据平台建设通常根据业务域,围绕数据应用需求组织数据。经常看到按业务域划分为CDR(临床数据中心)、ODR(运营数据中心)、RDR(科研数据中心)......

这造成了几个挑战:

1. 按业务域、而非业务实体来划分数据,虽然方便相应的业务域数据分析,但跨业务域重叠的业务实体数据,例如患者,需要跨数据中心同步。这些同步由于数据模型上的差异,往往非全息拷贝。随着同步次数越多,跨数据中心的数据越失真,造成数据资产多源不统一、数据资产一致性问题和时效性问题。

2. 数据平台产品语义表达上参差不齐,业务用户依赖数据工程师对数据理解和操作,无论是统计分析还是机器学习,海量的实施工作无法满足业务敏捷性要求;

3. 数据平台及数据应用建设依赖单一厂商的能力,而建设成果,包括数据工具、分析指标和应用都无法跨数据平台复用。

0
3 1279
文章 姚 鑫 · 六月 9, 2023 2m read

第三十章 开发Productions - ObjectScript Productions - 定义业务操作 - 调用适配器方法

调用适配器方法

最常见的是,业务操作不包含用于与外部系统通信的逻辑。相反,业务操作使用处理此逻辑的出站适配器。一旦业务操作与出站适配器相关联,它就会调用适配器的方法来发送和接收数据。有关调用适配器方法的详细信息,请参阅从业务主机访问属性和方法。

向生产中的目标发送请求

尽管业务操作主要负责向特定的外部应用程序传递请求,但它也可以根据需要向其他业务操作或业务流程发送消息。要将消息发送到生产中的目标,请调用 SendRequestSync()SendRequestAsync()SendDeferredResponse()

定义了一个可以使用的附加方法:。

DeferResponse() 方法

此方法中返回一个 %Status,指示成功或失败。它提供了一个引用参数 token,它返回稍后调用 SendDeferredResponse() 所需的延迟响应传递令牌。例如:

   Set sc=..DeferResponse(.token)
   // Send the token out somewhere...
   Quit $$$O

挂起消息

0
0 142
文章 Michael Lei · 六月 9, 2023 2m read

我们想介绍一些在 FHIR 相关培训期间我们从几个人那里收到的问题。


IRIS for Health FHIR 存储库会自动在存储库中分配一个唯一的逻辑 ID (id) 作为资源 POST 期间的默认行为。

例如,如果您发布一个 Patient 资源,例如

{ "resourceType""Patient"

如下面的“id”:“1”所示,资源 id 自动设置为存储库中的唯一值。 (摘自患者资源)

 "meta"

以Patient资源为例,我想使用patient ID,本来就是一个唯一值,作为FHIR repository的资源id!我将介绍在这种情况下如何注册。

POST 请求用于新注册,但 PUT 请求可用于执行指定资源 ID 的注册。

例如,如果患者 ID 为 P101001,则指定的 URL

http://localhost:52773/csp/healthshare/r4fhirnamespace/fhir/r4/Patient /P101001

指定喜欢

示例端点 URL = http://localhost:52773/csp/healthshare/r4fhirnamespace/fhir/r4

此外,在 Body 中指定的 Patient 资源的 JSON 中,

“编号”:“ P101001

指定

执行示例如下。

0
0 291