#HealthShare

0 关注者 · 94 帖子

InterSystems HealthShare 是一个医疗健康信息平台,用于医院、综合交付网络 (IDN) 以及地区和国家健康信息交换 (HIE)。HealthShare 包括健康信息交换、数据聚合、工作流、文本分析和分析技术。

了解更多信息

文章 Michael Lei · 三月 2, 2023 4m read

正式名称为Class Query 的意思可以追溯到 Caché 的早期。
使用CLASS是因为它嵌入在 COS 类中。
尽管官方文档中有精确的描述,但它仍然相当抽象。
我的教程应该通过 COS 中的一个简单示例逐步指导您,使您有直观的体会

0
0 127
公告 Michael Lei · 二月 28, 2023

我们很高兴地宣布我们的抢先体验计划的最新成员 - Health Data De-ID工具。

该工具将根据 *HIPAA 安全港* 对结构化临床数据进行去标识化处理,并允许在需要时进行重新标识。它使用 InterSystems 的 *SDA* 规范格式,该格式用于我们从一种格式到另一种格式的所有标准转换,例如 *HL7* 到 *CDA*、*HL7* 到 *FHIR* 等。虽然该工具使用 XSLT 转换来提高性能原因,它提供了辅助方法,您不需要成为 XSLT 专家的情况下更轻松地调整开箱即用的去标识化规则。

Health Data De-ID 适用于任何 InterSystems 产品,从 InterSystems IRIS for Health 到 Health Connect 再到 Unified Care Record。

您可以在此处加入抢先体验计划 - [如何注册抢先体验计划 (EAP)]?我们需要您的反馈,因此请在您完成整个过程或遇到任何问题时与我们联系。

0
0 140
文章 Lilian Huang · 二月 28, 2023 3m read

嗨,InterSystems 开发人员!

最近我更新了FHIR 开发模板,它发布了一个 IPM 包fhir-server ,使 InterSystems FHIR 服务器的设置成为一个微不足道的手动或自动或编程的程序,只需一条命令。

请参阅下文,了解如何从中受益。

TLDR

USER>zpm "install fhir-server"

以下所有详细信息。

0
0 149
文章 Hao Ma · 二月 16, 2023 9m read

A "big" or a "little" ask for ChatGPT?


几周前我尝试了 OpenAI GPT 的编码模型,看看它是否可以在医疗保健系统之间进行一些消息转换。它肯定可以,在相当大的程度上。
已经将近 3 周了,对于 ChatGPT 来说是很长很长的时间,所以我想知道它现在成长得有多快,以及它是否可以为我们做一些集成工程师的工作,例如它是否可以创建一个 InterSystems COS DTL将 HL7 转换为 FHIR 信息?

在不到一两分钟的时间内,我立即得到了一些答案。


测试

首先我想测试一下我是在和它背后的正确“人”说话

问题一:如何将HL7 V2.4报文转为FHIR STU3?

ChatGPT

将 HL7 V2.4 消息转换为 FHIR STU3 涉及多个步骤,因为这两个标准具有不同的数据模型和结构。以下是该过程的高级概述:

2
0 355
InterSystems 官方 Claire Zheng · 二月 15, 2023

InterSystems 纠正了一个可能导致 InterSystems IRIS® 和 Caché 无法在 Windows 上利用大页共享内存的问题,即使这些产品得到的信息是已分配到了大页内存。这会对系统性能产生不利影响。

该问题是由于 Windows 10 中的一个更改引起的,该更改需要 InterSystems IRIS® 和 Caché做相应的修改。请注意,此问题还会影响所有基于 InterSystems IRIS® 或 Caché 的 InterSystems 产品。以下版本的 Windows 会出现此问题:

Windows 10(版本 1703 及以上)

Windows 11

Windows Server 2019

Windows Server 2022

Windows Server 2016 不受影响。

作为参考,此问题的更正标识为 RJF533。此更正将包含在所有未来的 InterSystems IRIS® 和 Caché 发行版中。该更正也作为受支持产品版本的补丁提供。

InterSystems 建议采取以下措施以避免潜在的严重系统性能下降:

  • 对于使用大页内存的系统,推迟升级到受影响的 Windows 版本,直到实施更正。
  • 对于已经运行受影响的 Windows 版本并使用大页内存的系统,在任何有计划的系统负载增加之前实施更正。
0
0 187
公告 Michael Lei · 二月 8, 2023

InterSystems 宣布其首个开发人员预览版,作为2023.1 版开发人员预览计划的一部分。 2023.1 中添加了许多更新和增强功能,还有全新的功能,例如对列存储Columnar Storage 的生产就绪支持、使用Bulk FHIR 的能力以及对MacOS 13 Ventura的支持。当前的开发人员预览版可能不提供其中一些功能或改进。

未来的预览版本预计每两周更新一次,我们将在功能准备就绪时添加它们。请通过开发者社区分享您的反馈,以便我们共同打造更好的产品。

可以在下面的这些链接中找到初始文档。它们将在接下来的几周内更新,直到正式宣布发布(一般可用性 - GA):

此外,查看此链接以获取与此版本相关的升级信息。

与往常一样,扩展维护 (EM) 版本附带适用于所有受支持平台的经典安装包,以及 Docker 容器格式的容器映像。有关完整列表,请参阅支持的平台文档

安装包和预览密钥可从 WRC 的预览下载站点或通过评估服务网站获得(使用标记“显示预览软件”以访问 2023.1)。

0
0 203
文章 TZ Zhuang · 二月 3, 2023 5m read

目的

这两个工具(RanRead 和 RanWrite)用于在数据库(或一对数据库)内生成随机读写事件,以测试每秒输入/输出的操作数 (IOPS)。它们可以一起使用或分开单独使用,以测试 IO 硬件容量、验证目标 IOPS 并确保系统拥有可接受的磁盘响应时间。从 IO 测试中收集的结果将因配置而异,具体取决于 IO 子系统。在运行这些测试之前,请确保相应的操作系统监控和存储级别监控已配置,这些捕获的 IO 性能指标可以为以后的分析提供帮助。我们推荐使用 IRIS 中捆绑的系统性能工具,例如^SystemPerformance。

请注意,这里使用的工具是对先前版本的更新。之前的版本可在这里找到。

安装

从 GitHub 下载 PerfTools.RanRead.xmlPerfTools.RanWrite.xml 工具 点击这里

将工具导入 USER 命名空间。

USER> do $system.OBJ.Load("/tmp/PerfTools.RanRead.xml","ckf")
USER> do $system.OBJ.Load("/tmp/PerfTools.RanWrite.xml","ckf")

运行帮助方法以查看所有入口点。所有命令都在 USER 中运行。

USER> do ##class(PerfTools.RanRead).Help()
  • do ##class(PerfTools.RanRead).Setup(Directory,DatabaseName,SizeGB,LogLevel) 创建具有相同名称的数据库和命名空间。日志级别必须在 0 到 3 的范围内,其中 0 是“无”,3 是“详细”。

  • do ##class(PerfTools.RanRead).Run(Directory,Processes,Count,Mode) 运行随机读取 IO 测试。模式参数,1(默认)代表时间,以秒为单位 ,2是循环次数,用前面的 Count 参数控制。

  • do ##class(PerfTools.RanRead).Stop() 终止所有后台作业。

  • do ##class(PerfTools.RanRead).Reset() 删除先前运行的统计信息。在测试之间运行这个很重要,否则之前运行的统计数据将平均到当前运行的统计数据中。

  • do ##class(PerfTools.RanRead).Purge(Directory) 删除同名的命名空间和数据库。

  • do ##class(PerfTools.RanRead).Export(Directory) 将所有随机读取测试历史的摘要导出到逗号分隔的文本文件。

USER> do ##class(PerfTools.RanWrite).Help()
  • do ##class(PerfTools.RanWrite).Setup(Directory,DatabaseName) 创建具有相同名称的数据库和命名空间。

  • do ##class(PerfTools.RanWrite).Run(Directory,NumProcs,RunTime,HangTime,HangVariationPct,Global name length,Global node depth,Global subnode length) 运行随机写入 IO 测试。除目录外的所有参数都有默认值。

  • do ##class(PerfTools.RanWrite).Stop() 终止所有后台作业。

  • do ##class(PerfTools.RanWrite).Reset() 删除先前运行的统计信息。

  • do ##class(PerfTools.RanWrite).Purge(Directory) 删除同名的命名空间和数据库。

  • do ##class(PerfTools.RanWrite).Export(Directory) 将所有随机写入测试历史的摘要导出到逗号分隔的文本文件。

配置

创建一个名为 RAN 的空(预扩展)数据库,其大小至少是要测试的物理主机内存的两倍。同时确保这个空数据库至少是存储控制器缓存大小的四倍。数据库需要大于物理内存以确保读取的数据不会缓存在文件系统缓存中。您可以手动创建或使用以下方法自动创建命名空间和数据库。

USER> do ##class(PerfTools.RanRead).Setup("/ISC/tests/TMP","RAN",200,1)

Created directory /ISC/tests/TMP/  
Creating 200GB database in /ISC/tests/TMP/  
Database created in /ISC/tests/TMP/

注意:RanRead 和 RanWrite 可以使用相同的数据库。如果需要一次测试多个磁盘或用于特定目的,也可以使用分开的数据库。 RanRead 代码允许指定数据库的大小,但 RanWrite 代码不允许,因此最好使用 RanRead Setup 命令来创建所需的任何预先确定大小的数据库,即使要创建 RanWrite 做测试的数据库也可以。

方法论

从少量进程和 30-60 秒运行时间开始测试。然后增加进程数,例如从 10 个作业开始,然后增加 10、20、40 等。继续运行单个测试,直到响应时间始终超过 10 毫秒或计算出的 IOPS 不再以线性方式增加。

该工具使用 ObjectScript VIEW 命令读取内存中的数据库块,因此如果您没有获得预期的结果,则可能所有数据库块都已在内存中。

作为指南,全闪存阵列通常可以接受以下 8KB 和 64KB 数据库随机读取(非缓存)的响应时间:

  • 平均 <= 2ms
  • 不超过 <= 5ms

运行

对于 RanRead,执行 Run 方法,逐渐增加进程数并在运行时记录响应时间。 RanRead IOPS 的主要驱动因素是进程数。

USER> do ##class(PerfTools.RanRead).Run("/ISC/tests/TMP",5,60)

InterSystems Random Read IO Performance Tool  
--------------------------------------------  
RanRead process 11742 creating 5 worker processes in the background.  
  Prepped RanReadJob 11768 for parent 11742  
  Prepped RanReadJob 11769 for parent 11742  
  Prepped RanReadJob 11770 for parent 11742  
  Prepped RanReadJob 11771 for parent 11742  
  Prepped RanReadJob 11772 for parent 11742  
Starting 5 processes for RanRead job number 11742 now!  
To terminate run:  do ##class(PerfTools.RanRead).Stop()  
Waiting to finish...............................................................  
Random read background jobs finished for parent 11742  
RanRead job 11742's 5 processes (62.856814 seconds) average response time = 1.23ms  
Calculated IOPS for RanRead job 11742 = 4065 

Run 命令的 Mode 参数默认为模式 1,它使用 Count 参数(上例中的 60)作为秒。将 Mode 设置为 2 会将 Count 参数读取为每个进程的循环次数,因此如果将其设置为 100,000,则 5 个作业中的每一个进程都将从数据库中读取 100,000 次。模式2是该软件最初使用的模式,但定时运行允许与监控工具(例如^SystemPerformance)和 RanWrite 工具进行更精确的协调,因为这些工具也是定时运行的。

对于 RanWrite,执行 Run 方法,逐渐减少 Hangtime 参数。该参数代表每次写入之间的等待时间(以秒为单位),并且是 RanWrite IOPS 的主要驱动因素。您也可以增加进程数作为 IOPS 的驱动因素。

USER> do ##class(PerfTools.RanWrite).Run("/ISC/tests/TMP",1,60,.001)

RanWrite process 11742 creating 1 worker processes in the background.  
  Prepped RanWriteJob 12100 for parent 11742  
Starting 1 processes for RanWrite job number 11742 now!  
To terminate run:  do ##class(PerfTools.RanWrite).Stop()  
Waiting to finish...............................................................  
Random write background jobs finished for parent 11742  
RanWrite job 11742's 1 processes (60 seconds) had average response time = .912ms  
Calculated IOPS for RanWrite job 11742 = 1096 

RanWrite 的其他参数通常可以保留默认值(除了极特殊情况)。这些参数是:

  • HangVariationPct:Hangtime参数的方差,用于模拟不确定性;它是Hangtime参数的百分比
  • Global name length:RanWrite 随机选择一个Global名称,这个参数是该名称的长度。例如,如果它设置为 6,Global可能会是 Xr6opg
  • Global node depth and Global subnode length:最上层的Global不是真正会填充数据的,实际填充的是它的子节点,因此将这些值设置为 2 和 4 将产生类似“set ^Xr6opg("drb7","xt8v") = [value]”的命令。这两个参数和 Global name length 的目的都是为了确保不会一遍又一遍地填充相同的Global,填充相同的Global会导致最少的 IO 事件。

为了能一起运行 RanRead 和 RanWrite,不要使用“do”命令。使用“job”命令在后台运行它们。

结果

为了获取保存在 USER命名空间 SQL 表 PerfTools.RanRead 和 PerfTools.RanWrite 中的每次测试运行的结果,请对每个工具使用Export命令,如下所示。

要将结果集导出到逗号分隔的文本文件 (csv),请运行以下命令:

USER> do ##class(PerfTools.RanRead).Export("/ISC/tests/TMP/ ")

Exporting summary of all random read statistics to /usr/iris/db/zranread/PerfToolsRanRead_20221023-1408.txt  
Done.

分析

建议使用内置的 SystemPerformance 工具来获取被分析的系统的真实情况。 SystemPerformance 的命令需要在 %SYS 命名空间中运行。要切换到那个命名空间,请使用 ZN 命令:

USER> ZN "%SYS"

要查找系统瓶颈的详细信息,或者如果需要系统如何以目标 IOPS 运行的更多详细信息,则应创建具有高频率数据采集的 SystemPerformance 配置文件:

%SYS> set rc=$$addprofile^SystemPerformance("5minhighdef","A 5-minute run sampling every second",1,300)

然后运行该配置文件(从 %SYS)并立即切换回 USER 并使用“job”而不是“do”来启动 RanRead 和/或 RanWrite:

%SYS> set runid=$$run^SystemPerformance("5minhighdef")
%SYS> ZN “USER”
USER> job ##class(PerfTools.RanRead).Run("/ISC/tests/TMP",5,60)
USER> job ##class(PerfTools.RanWrite).Run("/ISC/tests/TMP",1,60,.001)

然后可以等待 SystemPerformance 作业结束,并使用 yaspe 等工具分析生成的 html 文件。

清理

运行完测试后,需要删除历史记录:

%SYS> do ##class(PerfTools.RanRead).Reset()
0
0 215
公告 Michael Lei · 一月 23, 2023

InterSystems 很高兴地宣布,InterSystems IRIS、InterSystems IRIS for Health 和 HealthShare Health Connect 2022.1.2 的扩展维护版本现已推出。这些版本为 2022.1.0 和 2022.1.1 版本提供了一些选定的功能和错误修复。

您可以在这些页面上找到有关更改内容的更多信息:

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

 

如何获得软件

该软件以经典安装包和容器镜像的形式提供。有关可用安装程序和容器映像的完整列表,请参阅支持的平台网页

每个产品的完整安装包都可以从 WRC 的软件分发页面获得。

安装包和预览密钥可从 WRC 的预览下载站点或通过评估服务网站获得。

InterSystems IRIS 和 IRIS for Health 的企业版和社区版的容器镜像以及所有相应的组件都可以从InterSystems Container Registry获得。

此版本中所有套件和容器的数量为2022.1.2.574.0

0
0 113
文章 Lilian Huang · 一月 19, 2023 10m read

在上一篇文章中,我们看到了最常用的HL7消息类型之一--ADT(入院、出院、转院)的结构,以及ADT^A04的例子和它所有字段的描述。现在让我们来看看另一个数据流,它与测试订单的订购和履行有关。我说的是ORM(从2.5版本开始,你应该使用特定的消息来订购测试,如OMG、OML、OMD、OMS、OMN、OMI和OMP),ORL和ORU消息。在一个非常简化的情况下,数据的交换可能看起来像这样。

让我们更详细地看一下这些消息。

0
0 791
文章 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 170
文章 Lilian Huang · 十二月 31, 2022 10m read

在上一篇文章中,我们讨论了标准 HL7v2 的起源、结构和消息类型。现在让我们看一下最常用的消息类型之一及其结构示例。我说的是 ADT。

HL7 ADT 消息(入院、出院、转院)用于在医疗机构传达基本患者信息、就诊信息和患者状态。 ADT 消息是使用最广泛且容量最大的 HL7 消息类型之一,因为它为许多触发事件提供信息,包括患者入院、注册、取消、更新、出院、患者数据合并等。

0
0 1215
文章 shaosheng shengshao · 九月 14, 2022 3m read

 在AES的加密过程中,存在HEX和Base64的输出,目前在HEALTHSHARE自带有Base64的加解密规则,现在针对HEX的加解密进行对应的处理,实现和网上ASE加解密工具进行互相加解密。
在Ensemble的AES的CBC加密主要用到的是这俩个方法
$system.Encryption.AESCBCManagedKeyEncrypt(Plaintext,KeyID)
Plaintext是需要加密的字符串,需要进行$ZCONVERT(字符串,"O","UTF8")转换
KeyID是密钥的ID。
或者是
$SYSTEM.Encryption.AESCBCEncrypt(text,key,IV)
text是需要加密的字符串,需要进行$ZCONVERT(text,"O","UTF8")转换
Key 是密钥 键的长度必须为16、24或32个字符
IV  是偏移量 如果存在此参数,则必须为16个字符长。

第一个方法是在本地生成对应的密钥,暂时还不能和网站上的进行互相加解密的处理。
目前主要是针对第二个方法
$SYSTEM.Encryption.AESCBCEncrypt(text,key,IV)

8
1 637
文章 Weiwei Gu · 十二月 1, 2022 3m read

InterSystems 是一家已经深耕数据库平台领域达44年的公司,成立于1978年,现在已经在全球的80多个国家开展相关业务,每天有超过10亿患者的电子病历数据都跑在以我们的数据库平台构建的应用系统之上。

我们的客户遍布国内外,国内的大几百家三甲医院客户,中国复旦排行榜上超过1/3的顶级医院都在使用我们产品(包括北京协和医院,华西医院,湘雅等等),我们的技术合作伙伴,如东华医为,嘉和,和仁等也都是国内医疗信息领域的著名厂商。

   而在国外,我们也有非常多的顶级客户,仅仅以美国举例,美国最顶级的排名前20的所有医院,无一例外全部都是使用的interSystems公司的数据库平台产品。

 美国排名前20的所有顶级医院

2020-2021《美国新闻与世界报道》(U.S. News & World Report)最顶级医院名单(前20家医疗机构)均应用InterSystems公司的数据库平台:

0
0 471
文章 Lilian Huang · 十一月 30, 2022 5m read

HL7(Health Level 7)是一套技术规范,用于医院信息系统(HIS)之间临床、财务和管理数据的计算机互交换。这些规范被不同程度地被纳入美国(ANSI)和国际(ISO)正式标准的语料库中。

HL7的L7表示它是在OSI模型的第7层,换句话说,在应用层运行的标准。这意味着HL7不需要考虑交换的安全性,也不需要考虑信息传输的安全性(这一点由较低层次的层来保证,例如用于安全的SSL/TLS或用于数据传输的TCP)。更准确地说,第7层支持终端用户进程和应用的通信,以及面向用户的软件应用的数据展示。作为OSI模型的最高层,也是最接近最终用户的层,第7层提供特定的应用功能,如识别通信伙伴和它们之间的服务质量,确定资源可用性,考虑隐私和用户认证,以及同步通信,并将应用与OSI模型的较低层连接起来。

回到HL7标准,HL7第二版标准(也称为Pipehat)最初创建于1989年,但目前仍在使用并定期更新,形成了2.1、2.2、2.3、2.3.1、2.4、2.5、2.5.1、2.6、2.7、2.7.1、2.8、2.8.1、2.8.2和2.9版本。v2.x标准是向后兼容的(例如,基于2.3版本的信息将被支持2.6版本的应用程序所理解),在更高的版本中,你会看到一些字段是专门为它而留的。

0
1 931
文章 王喆 👀 · 九月 13, 2022 4m read

背景

作为集成平台厂商,在医院同其它系统联调的时候所做的事情中,多的不是开发代码而是查消息。我先演示一下目前我正在使用的IRIS查消息的方式:

例子1:

需要看【个人信息注册服务】

我只需要在框中输入【个人信息注册】回车

点击【查看消息】,显示的是消息里面的内容,如图所示:

点击【查看流程】,显示的是IRIS消息可视化的页面,如图所示:

例子2:

    需要查询患者ID为【2874621】这患者在集成平台调用了哪些服务

    我只需要选择下拉选择【患者ID】,然后输入【2874621】,回车

   

这个是我们以用户需求的角度直观的查询到指定的消息,IRIS也有这个功能—消息查看器,它是如何使用的呢?首先,我们得知道这条消息使用了哪些Production组件,其次我们需要了解这个消息使用的实体类的结构。比如同样查这个人的消息,我需要输入request.Body.PatientID=“2874621”,选择消息类。如果我需要查多个服务的我还需要多选消息类 …… 本文不是来介绍如何使用消息查看器的,各位大概知道就好。

程序分析与设计思路

    原始消息查看器的使用

我们先使用IRIS自带的【消息查看器】查患者ID为【2874621】个人信息注册服务,如图所示:

3
0 453
文章 王喆 👀 · 九月 7, 2022 4m read

前言

自接触IRIS以来在医院之中使用最多的是其作为一个ESB集成引擎来使用,作为医院的集成平台+数据中心中的一环。但是其也可以进行CRUD作为前后端分离项目的后端使用:

文章目录

前言

文章目录

一、开发技术和工具

二、开发路径和相关代码

       1.数据库

       2.准备工作

       3.开发接口的相关步骤

       4.成果展示

总结

本文章将以一个简单的页面展示IRIS的相关CRUD操作:

是的,我计划使用IRIS重构Production页面,先展示一下我开发完的成果吧:

呃の好像是一毛一样,哈哈

一、开发技术和工具

工欲善其事,比先利其器:

后端:HealthConnect+Global
前端:vue

使用IRIS%CSP.REST开发的Rest API接口,前端使用vue简单的把接口相关内容展示,可以编辑、新增组件,控制production启动、停止、更新检测状态。

二、开发路径和相关代码

1.数据库

首先,我们找到Production的相关表,分别是:Ens_Config.Item Ens_Config.Production 如图所示:

所以代码的思路很明确了对Ens_Config.Item进行新增、删除、修改、查询操作对Ens_Config.Production进行查询操作。

2.准备工作

在正式开发之前我们得先做一些准备工作:比如开放网关

7
6 625
文章 Claire Zheng · 十月 18, 2022 3m read

在美国各地,当需要实现大规模的应用集成时,医疗行业的领导者会使用InterSystems HealthShare Health Connect®。无论是为了连接电子病历,还是为了提升床边护理决策能力,无论是为了创新远程医疗和远程护理,还是为了业务增长,亦或是为未来做准备,InterSystems和Health Connect随时准备好帮助您和您的组织实现目标。我们在此提供几个InterSystems医疗行业的集成实例以作示范。

0
0 458
问题 Liang Jianhui · 九月 30, 2022

访问了一个API,得到的返回结果里面有个时间字段,现在返回的格式是这样的 “2022-09-30T07:24:57.899Z”, 怎么样能转换成 YYYY/MM/DD hh:MM:ss的格式

1
0 188
文章 Qiao Peng · 十月 6, 2022 10m read

最近一些用户问到监控集成平台业务行为查询的问题,例如如何查询服务的平均耗时、发生错误的服务数量...

业务行为监控对于集成平台来说非常重要,可以帮助我们:

  • 监控系统健康情况 — 查看系统性能表现。例如发现队列积压和长耗时的消息处理,都可能是性能问题的表现。
  • 排查异常 — 通过查看业务行为数据,帮助我们判断特定的业务组件配置是否是造成性能瓶颈的主要原因。
  • 做业务规划 —  通过业务行为数据,了解各个业务量变化情况,并辅助我们做业务规划。
  • 做硬件规划 —  通过长期跟踪消息吞吐量的变化了解性能的变化和业务量的增长,进而辅助我们做硬件计划,避免出现在性能问题。

仅提供这些查询是很容易的,但要更好地监控集成平台的业务行为,需要更深入的了解InterSystems集成架构。

InterSystems集成架构

无论Ensemble、Health Connect还是InterSystems IRIS,它们都具有下面的集成架构:

通过业务服务向外发布服务、通过业务操作连接第三方接口、通过业务流程协同业务操作,它们统称为集成业务组件。可以简单理解为业务行为是由这些业务组件完成的:

  • 业务服务 = 服务,它启动一个业务流程;
  • 业务操作 = 接口,它通过接口操作第三方业务系统;
  • 业务流程 = 流程,它控制一笔业务需要按什么流程调用哪些接口。

要监控业务行为,服务、接口和流程都需要监控。

0
1 387
文章 王喆 👀 · 九月 18, 2022 4m read

       这是一篇笔记:

说明

       Restful是一种基于Http的网络应用程序的设计风格和开发方式,可以使用xml格式或者Json格式定义。

RESTFUL特点包括:

1、每一个URI代表1种资源;

2、客户端使用GETPOSTPUTDELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;

3、通过操作资源的表现形式来操作资源;

4、资源的表现形式是XML或者HTML

5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。

IRIS中实现

GET

0
0 244
文章 shaosheng shengshao · 九月 14, 2022 2m read

研究Healthshare2018在已经安装完成使用的情况下,部署IIS,并代理平台。之前看到可以通过单独的CSP Gateway安装包进行处理这种问题,该文主要是获取不到该安装包的时候可以如何实现IIS的处理。

第一步:首先按照网上教程部署IIS服务。安装完成之后会在C盘创建一个名叫intepub的包。

第二步:在inetpub包下面直接插入CSPGateway 。这个包是在其他先安装IIS下,后安装Healthshare的CSP网关服务的时候在inetpub下面自动插入的包,直接找一个复制过来。

第三步:打开IIS,创建一个叫csp的网站,按照下图配置。

  第四步:在点击模块进行CSPms模块的添加。
 

接下来是配置好的CSPms的模块。
 

1
0 387
文章 王喆 👀 · 九月 12, 2022 2m read

  大家都用过IRIS的消息查看器吧,其实这个页面有一个隐藏的功能,就是显示【显示查询】,如图所示:

那么这个东西是如何打开的呢?如果一句话概括就是: Terminal下输入: Set ^Ens.Debug("UtilEnsMessages","sql")=1,这个也是打开这个功能的思路,下面是详细的说明。

开启功能的步骤:

    1、进入Terminal,输入用户名\密码;

  2、进入需要打开显示查询的命名空间:如 zn "BKIP"

  3、执行 【Set ^Ens.Debug("UtilEnsMessages","sql")=1】打开显示查询。

打开消息查看器页面刷新:

成功!!! 

他有什么作用呢?举个栗子,当我修改基本条件为会话开始,点击【搜索】然后再点击【显示查询】

可以看到刚才在页面点击的操作生成了SQL并且显示在新的弹框里面了 すごい(四个一)。

基于此我们能做什么呢?一方面,指导我们分析IRIS的表结构,让我们得以去进行一些数据分析的操作。另一方面,在我们日常运维的时候,当我们需要直接知道消息的日吞吐量的时候,可以通过SQL去计算,具体的操作是这样:

1、修改开始和结束时间,把类型修改为会话开始点击显示查询会出现一段SQL,如图所示:

2、把这段SQL复制,打开【系统资源管理器】--【SQL】,粘贴SQL稍加修改执行,就能得到,上游请求集成平台次数,如图所示:

   

0
0 388
问题 Liang Jianhui · 八月 24, 2022

现在有一个需求。想将intersystems系统产生的alerts.log文件的内容保存到一个表中。有什么工具或者API 能自动格式化log文件到DB吗,还是需要手动解析log文件然后在存储到DB中。

1
0 147
文章 Lilian Huang · 六月 23, 2022 2m read

InterSystems许可证是指InterSystems发放的电子或纸质版的产品许可证,内容包括许可证订购日期、产品描述等。

激活码/License KeyInterSystems随许可证发放的许可软件激活码。通常情况下,客户收到的是电子许可证。

以下是一些许可证,激活码/License key常见咨询问题参考:

  1. 收到电子许可证后,如何获取纸质版许可证?

纸质版许可证或是安装介质盘,可通过合作伙伴或是致电原厂核验许可证信息后获取。

  1. 如需申请WRC支持,需要

申请准备:

  • WRC账号,如无请通过WRC联络信息申请WRC账号
  • 故障问题描述
  • 许可证或激活码/License key
  • 最终客户名称 

WRC全球响应中心联络信息:

  1. 如何查询您的授权文件客户名和授权密钥?

方法1: 使用管理门户

以管理员身份登录到系统管理门户,进入菜单:系统管理>软件许可颁发>软件许授权码 (或英文菜单:System Administartion>Licensing>License Key)

记录客户名和授权密钥:

方法2 :使用命令行

0
0 511
文章 Jingwei Wang · 六月 20, 2022 8m read

安装Arbiter

为了将自动故障转移扩展到尽可能广泛的故障情况,InterSystems建议你为每个镜像配置一个仲裁机。

要充当仲裁者,系统必须有一个正在运行的ISCAgent进程。由于ISCAgent是与InterSystems IRIS一起安装的,任何承载一个或多个InterSystems IRIS实例的系统都符合这一要求,可以被配置为仲裁者而无需进一步准备;但是,承载一个或多个故障转移或DR异步镜像成员的系统不应该被配置为该镜像的仲裁者。

没有托管InterSystems IRIS实例的系统可以通过安装Arbiter方式的作为仲裁者。请从InterSystems公司下载适合你的仲裁者系统平台的ISCAgent安装包,然后,安装ISCAgent。

注意:Arbiter的版本要和InterSystems IRIS安装版本保持一致。

在Windows上安装Arbiter

在Windows系统上,只需执行安装文件,例如ISCAgent-2020.1.0.540.0-win_x64.exe。

在Linux上安装Arbiter

0
1 652
文章 Lilian Huang · 六月 14, 2022 3m read

这篇文章是上一篇文章的延续https://cn.community.intersystems.com/post/首次使用intersystems-iris-互操作性-一个production是什么?

在上一篇文章:https://cn.community.intersystems.com/post/首次使用intersystems-iris-互操作性-一个production是什么?  我们查验了什么是Production. 我们运行了示例代码,并在Visual Trace 页面查验了如何将流动消息的内容引入进Production中。

本文将回顾消息messages的概念和定义,和消息如何在系统集成所需的开发内容中用于组件之间发送和接收数据。

在创建一个Message消息之前,让我们回顾一个案例研究。

一家公司经营着一个购物网站,并且正在为了适应季节而改变显示的产品信息顺序。

0
0 241