#InterSystems IRIS for Health

0 关注者 · 862 帖子

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

文章 姚 鑫 · 六月 24, 2023 2m read

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

业务指标中的其他选项

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

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

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

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

Implementing OnInit()

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

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

    // invoke superclass implementation
    Quit ##super()
}

将业务指标添加到仪表板

要将业务指标添加到仪表板,请执行以下操作:

  1. 将它们添加到适当的生产中,就像添加任何其他业务服务一样。
  2. 根据需要为每个业务指标配置呼叫Call Interval
  3. 创建仪表板并向其添加业务指标。有关信息,请参阅配置作品。
  4. (可选)扩展生产监视器页面以显示来自您的业务指标的信息。请参阅下一节。

将业务指标添加到Production Monitor

除了在仪表板中显示业务指标外,还可以扩展 Production Monitor 页面以显示来自业务指标类的信息。为此,请在命名空间的 ^Ens.Monitor.Settings 全局设置节点,如下所示:

NodeValue
^Ens.Monitor.Settings("MetricClasses",n,"Metric")业务指标的配置名称,用于第 n 个业务指标。 Production Monitor 页面按照 n 指定的顺序列出业务指标。
^Ens.Monitor.Settings("MetricClasses",n,"Title")此业务指标的显示名称。默认为业务指标的配置名称
^Ens.Monitor.Settings("MetricClasses",n,"Instance")此业务指标的实例名称。如果指标没有实例,请忽略它。如果度量确实有实例而您忽略了它, IRIS 将使用第一个实例,同时考虑实例的定义顺序。

例如,在Terminal中执行以下操作:

 Set ^Ens.Monitor.Settings("MetricClasses",1,"Metric") = "MetricConfigName"
 Set ^Ens.Monitor.Settings("MetricClasses",1,"Title") = "Title for Display"
 Set ^Ens.Monitor.Settings("MetricClasses",1,"Instance") = "MetricInstanceName"

对于添加的每个业务指标,Production Monitor 页面会指示上次更新指标信息的时间、给定指标或实例是否有任何数据,以及给定指标当前是否正在运行。

0
0 104
文章 姚 鑫 · 六月 21, 2023 2m read

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

定义单实例业务指标

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

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

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

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

定义简单的业务指标属性

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

Property MetricProperty As Ens.DataType.Metric;

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

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

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

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

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

要使用自动历史定义业务指标属性,请将属性添加到业务指标类,如下所示:

Property MetricProperty As Ens.DataType.Metric (AUTOHISTORY=50) [MultiDimensional];

对于 AUTOHISTORY 参数,可以使用任何正整数。例如:

/// Recent Sales History
Property SalesHistory As Ens.DataType.Metric (AUTOHISTORY = 50) [ MultiDimensional ];

通常,这种属性的目的是随着时间的推移按时间间隔收集值,以便可以在图表上绘制生成的一系列数字。因此,分配的值通常是数字。

收集率由配置的业务指标的呼叫间隔设置控制。

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

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

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

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

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

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

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

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

  1. IRIS A 作为备份激活时,在 IRIS C 上执行正常关闭以故障转移到 IRIS A
  2. IRIS B(如果存在)提升为故障转移成员;它成为备份。
  3. 重新启动 IRIS C 上的 IRIS 实例,它会自动以其原始角色作为 DR 异步加入镜像。

如示例镜像体系结构和网络配置中所述,无法对故障转移成员的镜像专用地址进行网络访问的 DR 异步只能提升为主要功能,并且仅当没有其他故障转移成员时才应执行此操作在运行中。因此,在这种情况下,前面的过程是不合适的。相反,请遵循以下过程:

  1. IRIS B 执行正常关闭(如果存在),以便只有 IRIS A 作为故障转移成员(主要)运行。
  2. IRIS C 被赶上时(请参阅镜像成员日志传输和取消日志状态),在 IRIS A 上执行正常关闭。
  3. IRIS C 提升为主,如使用主 ISCAgent 的日志数据进行 DR 提升和手动故障转移中所述。新的主节点联系前主节点的 ISCAgent,以确认它在此过程中拥有最新的日志数据。
  4. 在可能希望在 IRIS C 上执行任何测试后,将其关闭。
  5. 重启 IRIS A;它自动成为主要的。
  6. 重启 IRIS B(如果存在);由于 IRIS C 的推广,它作为 DR async 加入。
  7. IRIS B 升级为备份。
  8. 重新启动 IRIS C,它会自动将镜像加入其作为 DR 异步的原始角色。

注意:在本节的两个过程中,如果 IRIS B 不存在,即镜像仅由主要和异步组成,则 IRIS C 在重新启动时成为备份。将其降级为 DR 异步,如备份故障转移成员的维护中所述。

使用提升的 DR 异步临时替换故障转移成员

计划内中断程序和计划外中断程序中描述的一些程序涉及只有一个故障转移成员的镜像的临时操作。虽然没有必要始终维护一个正在运行的备份故障转移成员,但它确实可以保护免受数据库访问中断和发生主要故障时潜在的数据丢失的影响。因此,当由于计划内或计划外的故障转移成员中断而只有主要可用时,可以考虑临时将 DR 异步成员提升为备份故障转移成员。但是,在这样做之前,请考虑以下事项:

  • 如果 DR 异步位于与故障转移成员相距很远的单独数据中心,则它们之间可能存在大量网络延迟。当 DR 成员升级并成为活动故障转移成员时,这种往返延迟成为主备之间同步数据复制的一部分(请参阅镜像同步)并且会对访问镜像的应用程序的性能产生负面影响(请参阅网络延迟注意事项)。
  • 如果 DR 异步没有对故障转移成员的镜像专用地址的网络访问权限,如示例镜像体系结构和网络配置中所述,则不能在这些过程中使用它,因为它只能提升为主要功能,并且这只有当没有故障转移成员在运行时才应该这样做。
  • 如果镜像使用 VIP 自动重定向用户和应用程序(请参阅在故障转移或灾难恢复后重定向应用程序连接)并且 DR 异步无法获取镜像 VIP,因为它位于不同的子网上,通常不应使用这些过程。

注意:在使用此选项之前,请查看故障转移伙伴选择的讨论以及在将 DR 异步成员提升为故障转移成员中在升级时无法联系其代理的前故障转移成员上设置 ValidatedMember=0 的要求。

如果需要对当前备份故障转移成员IRIS B进行计划维护(参见备份故障转移成员维护),可以执行以下操作:

  1. 提升 IRIS C,这是一个被赶上的 DR 异步(请参阅镜像成员日志传输和取消日志状态)。 IRIS C 自动成为备份, IRIS B 降级为 DR 异步。
  2. 关闭 IRIS BIRIS 实例或主机系统并完成计划维护。
  3. 重新启动 IRIS B,它以 DR 异步方式加入镜像。
  4. IRIS B被追上时,将其提升为故障转移成员,将其恢复到原来的备份角色。 IRIS C 自动降级为 DR async,即其原始角色。

如果您需要对当前主要故障转移成员 IRIS A 执行计划维护(请参阅主要故障转移成员的维护),可以执行以下操作:

  1. IRIS B 处于活动状态时(请参阅镜像同步),在 IRIS A 上执行正常关闭。自动故障转移被触发,允许 IRIS B 接管为主。
  2. 推广 IRIS C,一个被赶上的 DR 异步。 IRIS C 自动成为备份。
  3. 完成 IRIS A 的计划维护,如果需要,关闭并重新启动主机系统。
  4. 重新启动 IRIS A 上的 IRIS 实例,它作为 DR 异步加入镜像。
  5. IRIS A被赶上时,将其提升为故障转移成员;它成为备份, IRIS C 自动降级,恢复到原来的角色。
  6. IRIS A 激活时,在 IRIS B 上执行正常关闭。自动故障转移被触发,将 IRIS A 恢复到其原始角色。
  7. 重新启动 IRIS B 上的 IRIS 实例,它以其原始角色加入镜像。

如果遇到 IRIS B 的意外中断,或者由于 IRIS A 的意外中断而自动或手动故障转移到 IRIS B(请参阅意外中断程序),可以执行以下操作:

  1. 推广 IRIS C,一个被赶上的 DR 异步。 IRIS C 自动成为备份。
  2. 重新启动失败的故障转移成员。如果在提升 DR 异步时无法联系故障成员的 ISCAgent,必须尽早并在重新启动 IRIS 之前在 IRIS 实例的配置参数文件的 [MirrorMember] 部分中设置 ValidatedMember=0(请参阅 [MirrorMember ] 在配置参数文件参考中)。促销说明指出,此更改是必需的。当重新启动前故障转移成员的 IRIS 实例时,它会作为 DR 异步加入镜像。
  3. 当重启的failover member被赶上时,将其提升为failover member;它成为备份, IRIS C 自动降级为 DR async,即其原始角色。
  4. 如果希望故障转移成员交换他们当前的角色,当备份变为活动状态时,在当前主数据库上执行正常关闭,触发自动故障转移。重启另一个故障转移成员;它作为备份加入镜像。
0
1 100
文章 Michael Lei · 六月 18, 2023 3m read

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

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

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

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

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

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

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

注意:如果 IRIS A 的主机系统已关闭,但 IRIS B 的主机系统已启动,尽管其 IRIS 实例未运行,请按照手动故障转移到活动备份中所述在 IRIS B 上运行 ^MIRROR 例程以确定 是否IRIS B 在发生故障时是一个活动备份。如果是这样,使用前面的过程,但在升级期间选择 IRIS B 作为故障转移伙伴,允许 IRIS CIRIS BISCAgent 获取最新的日志数据。

使用来自日志文件的日志数据进行 DR 提升和手动故障转移

如果 IRIS AIRIS B 的主机系统都已关闭,但可以访问 IRIS A 的日志文件,或者 IRIS B 的日志文件和消息日志可用,您可以使用最新的日志数据更新 IRIS C从升级前的初级开始,使用以下过程。

  1. 使用 IRIS AIRIS B 的最新日志文件更新 IRIS C,如下所示:
  • 如果 IRIS A 的日志文件可用,则将最新的镜像日志文件从 IRIS A 复制到 IRIS C,从 IRIS C 上的最新日志文件开始,并包括来自 IRIS A 的任何后续文件。例如,如果 MIRROR -MIRRORA-20180220.001IRIS C 上的最新文件,复制 MIRROR-MIRRORA-20180220.001IRIS A 上的任何更新文件。

  • 如果 IRIS A 的日志文件不可用但 IRIS B 的日志文件和消息日志可用:

    1. 确认IRIS B很可能已被捕获,如下所示:

      a. 确认当A及其代理不可用时,B同时断开与 A的连接。可以通过在Messages.log文件中搜索类似于以下内容的消息来检查 IRIS B断开连接的时间:

      MirrorClient: Primary AckDaemon failed to answer status request
      

      b. 通过在其 messages.log 文件中搜索类似于以下内容的消息,确认 IRIS B 在断开连接时是活动备份:

      Failed to contact agent on former primary, can't take over
      

注意:messages.log 文件中的如下消息表明 IRIS B 在断开连接时未处于活动状态:

nonactive Backup is down

当无法确认它是否已被追上时强制提升的 DR 异步成为主数据库可能会导致它成为主数据库而没有镜像生成的所有日志数据。因此,一些全局更新操作可能会丢失,而其他镜像成员可能需要从备份中重建。

2. 如果可以确认  `IRIS B` 处于活动状态,请将最新的镜像日志文件从  `IRIS B` 复制到  `IRIS C`,从  `IRIS C` 上的最新日志文件开始,然后包括来自  `IRIS B` 的所有后续文件。例如,如果 `MIRROR-MIRRORA-20180220.001` 是 `InterSystems IRIS C` 上的最新文件,请从  `IRIS C` 复制 `MIRROR-MIRRORA-20180220.001` 和任何更新的文件。检查文件的权限和所有权,并在必要时更改它们以匹配现有日志文件。
  1. 在不选择故障转移合作伙伴的情况下将 IRIS C 提升为故障转移成员。 IRIS C 成为主要的。

  2. IRIS AIRIS B 的问题得到修复时,尽早并在重新启动 IRIS 之前,在每个成员上的 IRIS 实例的配置参数文件的 [MirrorMember] 部分中设置 ValidatedMember = 0(参见 [ MirrorMember] 在配置参数文件参考)。说明指出,此更改是必需的。完成此操作后,在每个成员上重新启动 IRIS,从 IRIS A(最近成为主成员的成员)开始。

    1. 如果成员在 IRIS 重新启动时作为备份或 DR 异步加入镜像,则不需要进一步的步骤。任何在故障成员上但不在当前主成员上的日志数据都已被丢弃。

    2. 如果在 IRIS 实例重新启动时成员无法加入镜像,如重建镜像成员中描述的引用不一致数据的消息日志消息所示,则成员上的最新数据库更改晚于存在于上的最新日志数据 IRIS C 成为主要时。要解决此问题,请按照该部分中的描述重建成员。

  3. 在大多数情况下,DR 异步系统不是主要故障转移成员的合适永久主机。在 IRIS AIRIS B 重新加入镜像后,使用使用升级的 DR 异步临时替换故障转移成员中描述的过程将所有成员返回到它们以前的角色。如果 IRIS AIRIS B 作为备份重新启动,则在备份处于活动状态时从正常关闭 IRIS C 开始,以故障转移到备份;如果 IRIS AIRIS B 都重新启动为 DR 异步,将其中一个提升为备份,然后在 IRIS C 上执行正常关闭。将另一个以前的故障转移成员提升为备份,然后将 IRIS C 作为 DR 异步重启。

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

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

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

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

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

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

  • 恢复故障转移成员之间的连接;当前一个备份与前一个主要联系时,成员进行协商,一个成为主要,另一个成为备份。
  • 在不恢复连接的情况下,如果可以在主服务器上打开终端窗口,请这样做并在主服务器上运行 ^MIRROR 例程(请参阅使用 ^MIRROR 例程)。该例程确认主实例处于不确定的故障状态,并为您提供两个选项:
    • 如果确认另一个故障转移成员已关闭(可能是因为您将其关闭),它从未成为主成员,并且它没有创建比主成员上的最新镜像日志文件晚的镜像日志文件,可以强制该成员恢复操作为主。一旦它这样做了,并且你恢复了主备之间的连接,备份恢复操作作为备份。
    • 如果无法确认这些条件,则可以关闭主节点。然后,可以使用在未发生自动故障转移时主故障转移成员的计划外中断中描述的过程之一手动故障转移到备份。
  • 如果无法在主服务器上打开终端窗口,但可以确认另一个故障转移成员已关闭,它从未成为主服务器,并且它没有在主服务器上创建比最新文件晚的镜像日志文件,可以重新启动主要的 IRIS 实例,并使用强制此节点成为主要的 ^MIRROR 例程的选项强制它成为主要的。或者,如果无法确认这些情况,可以确保主 IRIS 实例已关闭并将保持关闭状态,然后使用自动故障转移未发生时主故障转移成员的计划外中断中描述的过程之一手动故障转移到备份发生。

小心:如果在未确认列出的条件的情况下强制主节点作为主节点恢复操作,将面临数据丢失或两个故障转移成员同时充当主节点的风险。

两个故障转移成员的计划外中断

当两个故障转移成员由于同一事件或不同事件而意外失败时,适当的过程取决于您是否可以在可用性要求的限制内重新启动其中一个或两个故障转移成员。镜像停止运行的时间越长,可能拥有的选择就越多。

  • 如果可以重新启动两个代理和至少一个 IRIS 实例,则故障转移成员将相互协商并自动选择其中的一个作为主要代理,使镜像恢复运行而没有数据丢失的风险。
  • 如果确定知道哪个故障转移成员是最后一个主要成员并且可以重新启动它,如果它无法与其他故障转移成员的 IRIS 实例或代理(因为它们已关闭)通信,它不会自动成为主要成员,但可以使用 Force this node to become the primary option of the ^MIRROR routine (as Unplanned Outage of Primary Failover Member Without Automatic Failover) 中所述,手动强制它成为主节点,没有数据丢失的风险。
  • 如果只能重新启动其中一个故障转移成员但不知道它是否是最后一个主节点,则可以使用强制此节点成为 ^MIRROR 例程的主选项来手动强制它成为主节点,但有一些数据风险损失。

小心:如果强制一个不活动的备份成为主要备份,一些全局更新操作可能会丢失,并且其他镜像成员可能需要重建(如重建镜像成员中所述)。

如果无法重新启动任何一个故障转移成员,请继续执行灾难恢复过程。

0
1 112
文章 姚 鑫 · 六月 14, 2023 4m read

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

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

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

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

  1. 确认 IRIS 实例 IRIS A 上的 ISCAgent 实际上已关闭(并确保它们在整个手动故障转移过程中保持关闭状态)。
  2. IRIS B 上,在终端的 %SYS 命名空间中运行 ^MIRROR 例程(请参阅使用 ^MIRROR 例程)。
  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)
  1. 选择 Force this node to become the primary 选项。如果在联系丢失时备份处于活动状态,则会显示如下消息:
This instance was an active backup member the last time it was
connected so if the primary has not done any work since that time,
this instance can take over without having to rebuild the mirror
when the primary reconnects. If the primary has done any work
beyond this point (file #98),
     C:\InterSystems\MyIRIS\mgr\journal\MIRROR-GFS-20180815.009
then the consequence of forcing this instance to become the primary is
that some operations may be lost and the other mirror member may need
to be rebuilt from a backup of this node before it can join as
a backup node again.
Do you want to continue? <No>

如果有权访问主要文件的日志文件,则可以在继续之前确认引用的文件是最新的。

如果在与主服务器失去联系时备份未处于活动状态,则会显示如下消息:

Warning, this action can result in forcing this node to become
the primary when it does not have all of the journal data which
has been generated in the mirror. The consequence of this is that
some operations may be lost and the other mirror member may need
to be rebuilt from a backup of this node before it can join as
a backup node again.
Do you want to continue? <No>

手动故障转移到活动备份

如果 ^MIRROR 例程的 Force this node to become the primary 选项确认备份在失去与主节点的连接时处于活动状态,请完成手动故障转移过程,如下所示:

  1. 在要继续吗?提示继续该过程。 Force this node to become the primary 选项等待 60 秒以使镜像成员成为主要节点。如果操作未在 60 秒内成功完成,^MIRROR 报告操作可能未成功并指示您检查消息日志以确定操作是失败还是仍在进行中。
  2. 一旦 ^MIRROR 例程确认备份已成为主要备份,请在可以这样做时重新启动 IRIS A。当 IRIS 实例重新启动时, IRIS A 作为备份加入镜像。

备份不活动时手动故障转移

即使 ^MIRROR 例程未确认备份 ( IRIS B) 在与主 ( IRIS A) 失去连接时处于活动状态,仍然可以使用以下过程继续手动故障转移过程,但是如果这样做,会有数据丢失的风险。如本程序所述,可以在手动故障转移之前将最新的镜像日志文件从 IRIS A(如果有权访问)复制到 IRIS B,从而最大限度地降低这种风险。

  1. 如果有权访问主服务器的镜像日志文件,请将最新的文件复制到 IRIS B,从 IRIS B 上的最新日志文件开始,然后包括来自 IRIS A 的任何后续文件。例如,如果 MIRROR-MIRRORA-20180220.001IRIS B 上的最新文件,复制 MIRROR-MIRRORA-20180220.001IRIS A 上的任何更新文件。检查文件的权限和所有权,并在必要时更改它们以匹配现有日志文件。
  2. 如果接受数据丢失的风险,请在提示时输入 y 以确认要继续;备份成为主要的。 Force this node to become the primary 选项等待 60 秒以使镜像成员成为主要节点。如果操作未在 60 秒内成功完成,^MIRROR 报告操作可能未成功并指示您检查消息日志以确定操作是失败还是仍在进行中。
  3. 一旦 ^MIRROR 例程确认备份已成为主要备份,请在可以这样做时重新启动 IRIS A
  • 如果 IRIS AIRIS 实例重新启动时加入镜像作为备份,则不需要进一步的步骤。任何在故障成员上但不在当前主成员上的日志数据都已被丢弃。
  • 如果在 IRIS 实例重新启动时 IRIS A 无法加入镜像,如重建镜像成员中描述的引用不一致数据的消息日志消息所示 IRIS A 上的最新数据库更改晚于最新的日志数据当 IRIS B 被迫成为主服务器时,它会出现在 IRIS B 上。要解决此问题,请按照该部分中的描述重建 IRIS A
0
1 118
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 161
文章 姚 鑫 · 六月 13, 2023 4m read

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

计划外停机程序

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

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

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

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

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

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

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

具有自动故障转移的主要故障转移成员的计划外中断

如自动故障转移规则中所述,当主要 实例不可用时,备份可以自动接管主要实例

  • 备份处于活动状态并且
    • 从请求它接管的主要接收通信。
    • 从仲裁器接收到它也已与主节点失去联系的信息。
    • 如果仲裁器不可用或未配置仲裁器,则联系主实例的 ISCAgent 以确认主实例已关闭或挂起。
  • 备份不活动,但可以联系主实例的 ISCAgent 以确认主实例已关闭或挂起,并从 ISCAgent 获取主实例的最新日志数据。

当备份在计划外的主要中断后自动接管时,纠正导致中断的条件,然后重新启动以前的主要 实例或主机系统。当 实例重新启动时,它会自动加入镜像作为备份。如果想将以前的主要成员恢复到原来的角色,请在备份 实例上正常关闭以触发故障转移,然后重新启动它,如主要故障转移成员的维护中所述。

未发生自动故障转移时主要故障转移成员的计划外中断

如自动故障转移规则中所述,当主要主机系统(包括其 ISCAgent)不可用且满足以下任何条件时,备用 实例无法自动接管无响应的主要实例:

  • 备份未激活。
  • 备份因错误而无法接管。
  • 备份无法验证主服务器是否已关闭,因为没有配置仲裁器,或者因为它在与主 IRIS 实例及其 ISCAgent 失去联系之前或同时与仲裁器失去联系。

在这种情况下,有三种可能的情况,下面列出了每种情况以及可能的解决方案:

  1. 主要主机系统出现故障但可以重新启动。可以执行以下任一操作:
  • 重启主主机系统而不重启主 IRIS 实例。当主要的 ISCAgent 可用时,备份会在必要时从中获取最新的日志数据并成为主要的。
  • 重新启动主要主机系统,包括主要 实例。故障转移成员协商,直到一个成为主要成员,另一个成为备份成员。
  1. 主要主机系统出现故障且无法重新启动。可以手动强制备份接管。这个过程取决于备份在失去与主服务器的连接时是否处于活动状态;如以下各节所述,存在数据丢失的风险。
  2. 主主机系统正在运行,但与仲裁器和备份器网络隔离;有关过程,请参阅主要故障转移成员的计划外隔离。

手动强制故障转移成员成为主要成员

当故障转移成员无法成为主要成员时,可以强制它这样做,但如果在最后一个主要成员可能拥有比强制的成员更新的日志数据的任何情况下这样做,则存在数据丢失的风险。以下过程描述了如何确定和管理该风险。如果在无法确认某个成员具有最新的日志数据时强制使其成为主要成员,则其他镜像成员可能无法重新加入镜像,因此需要重建(如重建镜像成员中所述)。

小心:在继续之前,请确认主节点已关闭并将在此过程中保持关闭状态。如果您无法确认,最好中止此过程,以避免原始主节点再次可用的风险,导致两个成员同时充当主节点。

0
1 142
文章 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 资源。

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

0
1 206
文章 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.export = true 以激活)
  • 使用Graphviz可视化呈现规则和疾病模块

支持的参数可见下图

0
1 351
讨论 王喆 👀 · 六月 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 钉钉

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

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

使用路由警报处理器

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

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

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

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

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

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

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

定义业务操作

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

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

警报管理允许将警报分配给用户、跟踪警报的状态以及管理解决警报的进度。有关警报管理的概述,请参阅配置警报管理,其中描述了如何配置警报管理组件以及定义警报管理的规则和数据转换。本节介绍如何将自定义代码添加到警报管理组件。

警报管理框架具有以下架构:

  • 托管警报在其整个生命周期中的单个持久对象。
  • Alert ManagerNotification ManagerAlert Monitor 具有相同的整体内部结构。当这些组件之一被调用时,它会分三个阶段执行其功能:
  1. 首先,如果组件由子类实现,则组件执行 OnProcess 方法。通过实施此方法,可以在组件中包含自定义代码。如果 OnProcess 方法设置了一个标志,指示处理已完成,则组件退出。
  2. 接下来,组件评估其规则或为通知管理器评估其数据转换,它设置控制组件操作的参数。
  3. 最后,组件根据规则设置的参数或组件配置设置的默认值执行其操作。
  • Alert Notification 操作是一个更简单的组件,它可以格式化消息并将消息转发到它的目的地。

警报管理器

警报管理器具有 Ens.Alerting.AlertManager类,并且必须命名为 Ens.Alert。警报管理器接收来自所有生产组件的警报。警报管理器可以根据规则中指定的条件将警报提升为托管警报。警报管理器将托管警报发送到通知管理器。

警报管理器分三个阶段执行:

  1. 如果组件的类覆盖了 OnCreateManagedAlert() 方法,则执行覆盖。可以提供自定义代码来处理警报请求并在此方法中创建托管警报。如果不希望基本警报管理器代码评估规则、创建托管警报并将其发送到通知管理器,应该将 tProcessingComplete 参数设置为 1。在这种情况下,警报管理器不会采取进一步的操作。
  2. 评估 CreateManagedAlertRule 规则。此规则可以访问 tAlertContext。如果它返回真值 (1),则警报管理器创建托管警报。如果它返回 false,则警报管理器不会创建托管警报,警报只会写入日志。警报上下文提供对以下内容的访问:
  • 传入警报
  • 为发出警报的组件配置的警报组
  • 为发出警报的组件配置的业务伙伴
  • 警报所有者

该规则可以通过返回 0 来禁止将警报提升为托管警报,或者可以通过返回 1 将警报提升为托管警报。

3. 如果规则将 tCreateAlert 设置为 1,则警报管理器会创建一个托管警报,或者,如果没有定义 CreateManagedAlertRule 规则,警报管理器将采取默认操作并创建一个托管警报。警报管理器通过调用 OnCreateManagedAlert() 方法创建托管警报,该方法可以被扩展 Ens.Alerting.AlertManager类覆盖。 OnCreateManagedAlert() 的默认实现在托管警报中设置生产名称,并将当前所有者设置为未分配,值为空字符串。如果警报管理器创建了托管警报,它会将其发送到通知管理器。

通知管理器

通知管理器具有 Ens.Alerting.NotificationManager类,负责确定要通知的组以及要使用的通知操作。

通知管理器分三个阶段执行:

  1. 如果组件的类覆盖了 OnProcessNotificationRequest() 方法,则执行覆盖。如果覆盖将 pProcessingComplete 参数设置为 1,则通知管理器不会评估转换或应用默认操作。
  2. 如果已配置,则执行数据转换。有关数据转换的信息,请参阅添加通知管理器并定义其数据转换。
  3. 如果转换将 target.Notify 属性设置为 1 或者没有数据转换,则通知管理器将警报通知发送到每个目标中列出的组件并将地址列表传递到目标。

通知管理器不接收或发送托管警报对象,而是使用通知请求对象,该对象包含对持久托管警报对象的引用。

警报监视器

警报监视器查询当前时间超过 NextActionTime 值的所有打开的托管警报。它进行以下 SQL 查询:

"SELECT ID FROM Ens_Alerting.ManagedAlert WHERE IsOpen = 1 AND NextActionTime <= ?"

其中 $$$timeUTC 返回的当前时间被指定为参数。

警报监视器分别处理每个返回的托管警报消息。对于每个托管警报,它分三个阶段进行处理:

  1. 如果组件的类覆盖了 OnProcessOverdueAlert() 方法,则执行覆盖。可以提供自定义代码来处理警报。如果不希望基本警报监视器代码评估规则、更新托管警报并将其发送到通知管理器,您应该将 tProcessingComplete 参数设置为 1。在这种情况下,警报监视器不会采取进一步的操作。
  2. 评估 OverdueAlertRule 规则。此规则可以访问 tOverdueContext。逾期上下文提供对以下内容的访问:
  • 传入警报
  • 当前时间
  • NewNextActionTime
  • NewEscalationLevel

该规则可以通过返回 0 来禁止发送提醒,可以通过设置 NewNextActionTime 来设置警报监视器下次找到托管警报的时间,或者可以通过设置 NewEscalationLevel 来升级或降级托管警报。

可以覆盖警报规则的上下文以及警报监视器如何处理结果:

  • 可以通过覆盖 GetOnOverdueAlertContext() 方法向警报规则上下文添加其他信息。
  • 可以通过覆盖 OnProcessOverdueRuleResult() 方法来覆盖警报监视器处理规则结果的方式。否则,在基类中执行此方法。 OnProcessOverdueRuleResult() 方法负责升级托管警报。覆盖可以访问托管警报、tOverdueContexttSendNotificationtNotificationType。请注意,您应该复制基类实现的功能或通过调用 ##super() 来调用它。
  1. 如果规则返回 1Alert Monitor 将托管警报发送到 Notification Manager

通知操作

通知操作向用户组发送通知。如果使用多种机制发送通知,可以为每种传输方法设置单独的通知操作。

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

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

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

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

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

这造成了几个挑战:

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

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

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

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

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

调用适配器方法

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

向生产中的目标发送请求

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

Ens.BusinessOperation 定义了一个可以使用的附加方法:DeferResponse()

DeferResponse() 方法

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

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

挂起消息

如果希望业务操作将其当前正在进行的消息标记为具有暂停状态,请将业务操作属性 SuspendMessage 设置为整数值 1 (true)。通常,业务操作会对由于某种原因被外部系统拒绝的消息执行此操作。

IRISSuspended 消息置于特殊队列中,以便系统管理员可以诊断问题、解决问题,然后重新发送消息。系统管理员可以执行简单的重新发送(到原始目标)或可以将其发送到新的目的地。有关信息,请参阅监控制作。

以下示例方法来自将文档发送到外部系统的业务操作。如果从对即将发送的文档的 Validate() 调用返回错误,则该方法将 SuspendMessage 属性设置为 1

Method validateAndIndex(pDoc As MyX12.Document) As %Status
{
  If ""=..Validation||'$method($this,"OnValidate",pDoc,..Validation,.tSC) {
    Set tSC=##class(MyX12.Validator).Validate(pDoc,..Validation)
  }
  Set:'$D(tSC) tSC=$$$OK
  If $$$ISERR(tSC) {
    Set ..SuspendMessage=1
    Do ..SendAlert(##class(Ens.AlertRequest).%New($LB(
        ..%ConfigName,"Suspended document "_pDoc.%Id()_
        " because it failed validation using spec '"
        _..Validation_"' with error "_
        $$$StatusDisplayString(tSC))))
    Quit tSC
  }
  If ""'=..SearchTableClass {
    TRY {
      Set tSCStore=$classmethod(..SearchTableClass,"IndexDoc",pDoc)
      If $$$ISERR(tSCStore)
        $$$LOGWARNING("Failed to create SearchTable entries")
    }
    CATCH errobj {
      $$$LOGWARNING("Failed to invoke SearchTable class")
     }
  }
  Quit $$$OK
}
0
0 106
文章 Jingwei Wang · 六月 8, 2023 2m read

数据分集 (测试数据可以在网上下载 https://catalog.data.gov/dataset/

1. 创建训练集,80%用于训练集。

CREATE TABLE DataMining.DiabetesTraining AS SELECT top 641 Pregnancies, Glucose, BloodPressure, SkinThickness, Insulin,BMI, Age, Outcome from DataMining.DSTable order by ID

2. 创建测试集,20%用于测试集。

CREATE TABLE DataMining.DiabetesTest AS SELECT top 127 Pregnancies, Glucose, BloodPressure, SkinThickness, Insulin, BMI,Age, Outcome from DataMining.DSTable order by ID DESC

 

Integrated ML

1. 创建ML配置

此步骤用来配置Provider 及不同Provider所使用的配置参数。

0
0 163
文章 Claire Zheng · 六月 8, 2023 1m read

医院管理者、信息中心、业务骨干,每个角色都有独特的业务诉求,InterSystems IRIS医疗版互联互通套件专为国内用户设计,可助力医院用户释放数据价值,推动应用创新!截至目前,InterSystems技术已助力150余家医院通过四级及以上医院信息互联互通标准化成熟度评测,其中,五级乙等用户近30家。

0
0 162
文章 Jingwei Wang · 六月 8, 2023 1m read

在InterSystems IRIS中重新加载更新后的Python模块的方式和直接使用Python 重新加载模块的方式是一样的。

Python3.4 之后到版本中,直接使用Python 重新加载模块的方式如下:

import importlib
​
importlib.reload(module)

同样,在在InterSystems IRIS中重新加载Python模块的方式与其没有区别,示例如下:

ClassMethod Hello() As %Status
{
 Set sc = $$$OK
 Set sm = ##class(%SYS.Python).Import("sample")
 Set importlib = ##class(%SYS.Python).Import("importlib")
 do importlib.reload(sm)
 write sm.hello()
 Return sc
}
​
0
0 129
文章 Claire Zheng · 六月 6, 2023 1m read

当数据资产已经成为医院的核心资产,如何有效利用数据核心资产,持续挖掘互联互通平台和各种数据中心的价值,成为医疗信息化工作的重中之重。欢迎扫码注册(或点击链接注册)观看多位大咖针对这一话题的解读。

0
0 128
文章 Michael Lei · 五月 29, 2023 2m read

开发者们可以让轻松让全世界了解他们如何与Epic软件进行连接

2022年12月,全球排名第一的电子病历厂商Epic宣布发布Connection Hub供应商服务平台,供全球供应商来分享他们与Epic软件实现互操作能力的平台。

这个新网站于2023年1月9日开放,将允许所有与Epic有连接的供应商列出他们的应用,并自我报告他们是否已经实现了成功的数据交换。网站访问者,包括Epic客户,可以看到供应商提供的信息,如应用描述和网站链接。

Connection Hub将对所有供应商开放,目的是使供应商更容易加入其在线产品目录。希望被列入名录的供应商可以通过提供他们的信息和完成一个可选填的问卷来加入。除了Connection Hub,Epic还将推出供应商服务--提供Epic的新闻通讯、详细的教程、扩大的测试沙盒和技术支持的访问。

EPIC现有应用市场将进行更新并计划在今年晚些时候重新启动。 目前在应用市场的供应商将自动迁移到Connection Hub供应商服务平台。所有连接将不会受到影响,在应用市场中接受服务、API和测试工具的供应商将继续通过Connection Hub进行。对于那些目前在应用市场中列有实时连接的供应商,EPIC将为他们提供一个简单的方法,将其现有信息转移到Connection Hub。

0
0 189
文章 Claire Zheng · 五月 23, 2023 1m read

实现医疗系统之间的互操作性是一项艰巨的挑战。随着FHIR日渐普及,对FHIR标准的兼容如今已成为许多国家医疗信息系统的全国性强制性要求。FHIR标准最有价值的一方面就是所有内容可被机器读取,使得FHIR应用跨机构使用成为可能,帮助您距离“语义互操作性”更近一步。

0
0 211
文章 Claire Zheng · 五月 23, 2023 1m read

不同系统在“对话”时候,如何让它们明白“带黑色条纹的白马”和“带白色条纹的黑马”是同一种动物(斑马)呢?FHIR是HL7国际(HL7 International)为满足当前医疗数据环境中的互操作性需求而创建的医疗数据标准,如今已成为许多国家医疗信息系统的全国性强制性要求。本视频介绍了FHIR的设计理念和关键构成,包括FHIR资源、FHIR Profile、FHIR扩展等。

0
0 165
文章 Meng Cao · 五月 10, 2023 1m read

今天从官网下载了IRISHealth-2023.1.0.229.0-lnxrh9x64版本的数据库安装包,在RHEL9.0上进行安装配置测试,遇到一个问题,趁热记录下来。

测试环境及软件版本:

操作系统——Red Hat Enterprise Linux release 9.0 (Plow)

数据库——IRISHealth-2023.1.0.229.0-lnxrh9x64

测试创建镜像时,配置好虚拟IP,点击保存。

保存后发现数据库没有变成主成员状态,一直是等待的状态,如下图所示:

这时查看控制台日志发现有大量报错,如下图所示:

从控制台日志看出,此时矛头指向了virtualIP.sh,经过查找发现这个脚本位置在安装目录下的bin目录中。

这里只是创建了MIRROR的配置,然后出现了问题,大概可以猜到可能是添加VIP的方法有什么问题,开启脚本的DEBUG,测试运行添加VIP的方法。

果然,发现了一处报错,如下图所示:

打开脚本文件,查看第588行代码。

研究发现RHEL9.0中,ID=`id | grep uid= | awk -F"=" '{print $2}' | awk -F"(" '{print $1}'`,$ID返回是空,不是数字,所以报错了,修改脚本,注释掉其中六行代码,并关闭DEBUG,如下:

保存脚本后,再次执行添加IP方法测试,IP可以正常添加。PS:不要忘记把测试添加的IP移除掉。

0
1 354