#InterSystems IRIS for Health

0 关注者 · 890 帖子

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

文章 Michael Lei · 八月 6, 2024 2m read

开发新的互操作性Production时,最初在Production中添加设置是很自然的做法。

不过,一旦要将Production从开发环境移动到测试或其他环境,你就会发现 HTTP 服务器、IP 地址和/或端口之类的设置都需要更改。 为了避免这些设置在后续重新部署时被覆盖,必须将这些设置从Production得设置中移动到系统默认设置(System Default Settings)。

虽然系统默认设置可以手动创建,但是当生产中有大量业务组件时会难以处理。 因此,@Wietze Drost 让我开发一个工具自动执行此流程,通过筛选表达式指定哪些设置必须创建为系统默认设置。

  • 这个表达式可以定义为“*:HTTPServer,SSLConfig*”,其中“\*”表示“为任何主机类名”。 冒号后面是需要移动的设置列表。 所以,这个表达式的意思是“为所有名为 HTTPServer 和 SSLConfig 的设置创建或更新系统默认设置”。
  • 可以定义多个筛选表达式,用分号分隔,例如 "*:HTTPServer,SSLConfig;FullClassName2:xxx,yyy"

根据他的请求,我编写了名为 GetSettingsFromProduction 的类方法,

1
0 124
文章 姚 鑫 · 八月 6, 2024 2m read

第二章 使用代理服务器

使用代理服务器

Web 客户端可以通过代理服务器与 Web 服务通信。要进行设置,请指定 Web 客户端实例的属性以指示要使用的代理服务器。这些属性如下:

HttpProxyServer

指定要使用的代理服务器的主机名。如果此属性不为空,则 HTTP 请求将定向到此计算机。

HttpProxyPort

指定代理服务器上要连接的端口。

HttpProxyHTTPS

如果使用代理服务器并且该代理服务器支持 HTTPS,则将其指定为 true

请注意,如果使用 HTTPS,则还必须将客户端的 SSLConfiguration 属性设置为 SSL/TLS 配置的名称;有关更多详细信息,请参阅配置客户端以使用 SSL

HttpProxyAuthorization

如果 Web 客户端需要向代理服务器验证自身身份,请将其指定为所需的 Proxy-Authorization 标头字段。

HttpProxyTunnel

0
0 93
文章 姚 鑫 · 八月 5, 2024 2m read

第一章 修改 Web 客户端

修改 Web 客户端

生成 Web 客户端类后,通常不需要编辑该类。相反,需要编写代码来创建该类的实例并提供客户端错误处理。本主题讨论了微调 Web 客户端的各种方法,可以通过修改 Web 客户端实例或(不太常见)修改生成的类来实现。

注意:不要创建生成的 Web 客户端类的子类。编译器不会生成正常运行所需的支持类,因此子类将无法使用。

禁用 Web 客户端的 Keep-Alive

默认情况下,如果重复使用 Web 客户端实例来发送多条请求消息,IRIS 会在一次 HTTP 传输中发送所有消息(使用 HTTP 1.1 保持活动连接)。具体来说,IRIS 保持 TCP/IP 套接字打开,这样 IRIS 就无需关闭并重新打开它。要禁用此保持活动行为,请执行以下操作之一:

  • 终止 Web 客户端实例并创建并使用一个新的。
  • 发送第一条消息后,将客户端的 HttpRequest.SocketTimeout 属性设置为 0。例如:
Set client.HttpRequest.SocketTimeout=0

注意:如果正在使用 WS-ReliableMessaging 并使用 SSL/TLSWeb 服务通信,请不要禁用保持活动。有关 WS-ReliableMessaging 的信息,请参阅保护 Web 服务。

控制空字符串参数的形式

0
0 93
文章 姚 鑫 · 八月 4, 2024 2m read

[toc]

第十二章 在 Web 服务中定义自定义处理 - 实现 ProcessBody()

实现 ProcessBody()

ProcessBody() 方法具有以下签名:

method ProcessBody(action As %String, requestBody As %CharacterStream, 
                   ByRef responseBody As %CharacterStream) as %Boolean

其中:

  • action 是入站消息中指定的 SOAP 操作。
  • requestBody%Library.CharacterStream 的一个实例,包含 SOAP<Body> 元素。该流包含 XML 片段,而不是完整的 XML 文档。
  • responseBody,是序列化为 %Library.CharacterStream 实例的响应主体。此流通过引用传递,最初为空。

如果在 Web 服务中实现此方法,则该方法应执行以下操作:

  1. 检查操作并相应地分支。例如:
 if action["action1" { 
  //details
 }
  1. 使用 requestBodyRead() 方法获取 SOAP <Body>。例如:
 set request=requestBody.Read()
  1. 使用 $EXTRACT 等工具解析此流。例如:
0
0 121
文章 Michael Lei · 八月 1, 2024 4m read

随着 IRIS 中向量数据类型和向量搜索功能的引入,应用程序的开发正在开启一个充满各种可能性的全新世界,其中一个应用程序示例是我最近在巴伦西亚卫生局的一次公开竞赛中看到的应用程序,他们要求提供一种工具,能够使用 AI 模型协助进行 ICD-10 编码。

我们如何实现与所要求的应用程序类似的应用程序? 我们来看看需要什么:

  1. ICD-10 代码列表,我们将使用它作为 RAG 应用程序的上下文,在纯文本中搜索诊断结果。
  2. 经过训练的模型,它会将文本向量化,我们将在其中查找 ICD-10 代码中的对应项。
  3. Python 库,用于对 ICD-10 代码和文本进行摄取和向量化。
  4. 一个支持文本的友好前端,我们会在其中查找可能的诊断结果。
  5. 从前端接收的请求的编排。

IRIS 为我们提供哪些功能来满足上述需求?

  1. CSV 导入,可以使用 RecordMapper 功能,也可以直接使用嵌入式 Python。
  2. 嵌入式 Python 使我们能够实现使用所选模型生成向量所需的 Python 代码。
  3. 发布将从前端应用程序调用的 REST API。
  4. 互操作性生产,以允许在 IRIS 中跟踪信息。

我们只需要看看开发的示例:

d[IA]gnosis

在本文中,您可以访问开发的应用程序,在后续文章中,我们将详细了解如何实现每个功能,包括模型的使用、向量的存储和向量搜索的使用。

我们来看看这个应用程序:

导入 ICD-10 代码

0
0 117
文章 姚 鑫 · 七月 30, 2024 3m read

第九章 使用进程私有全局变量来支持非常大的消息

使用进程私有全局变量来支持非常大的消息

默认情况下、 Web 服务在解析请求或响应时通常使用本地数组内存。可以强制它改用进程私有全局变量;这使 Web 服务能够处理非常大的消息。

为此,请指定 Web 服务类的 USEPPGHANDLER 参数,如下所示:

Parameter USEPPGHANDLER = 1;

如果此参数为 1,则 Web 服务在解析请求或响应时始终使用进程私有全局变量。如果此参数为 0,则 Web 服务始终使用本地数组内存来实现这些目的。如果未设置此参数,则 Web 服务使用默认值,通常是本地数组内存。

自定义 Web 服务的回调

可以通过覆盖其回调方法来定制 Web 服务的行为:

OnRequestMessage()

如果没有安全错误,则在 Web 服务收到请求消息时调用;如果出现安全错误,则不会调用此回调。系统在执行安全处理、检查信封是否有错误以及处理 WS-Addressing 标头中指定的操作(如果有)后调用此回调。此回调对于记录原始 SOAP 请求等任务很有用。

此方法具有以下签名:

Method OnRequestMessage(mode As %String, action As %String, request As %Stream.Object)

其中:

0
0 95
文章 姚 鑫 · 七月 25, 2024 2m read

第四章 覆盖 HTTP SOAP 操作和请求消息名称

覆盖 HTTP SOAP 操作和请求消息名称

当通过 HTTP 调用 Web 方法时,HTTP 标头必须包含 SOAP 操作,该操作是指示 SOAP HTTP 请求意图的 URI。对于 SOAP 1.1SOAP 操作作为 SOAPAction HTTP 标头包含在内。对于 SOAP 1.2,它包含在 Content-Type HTTP 标头中。

SOAP 操作指示 SOAP HTTP 请求的意图。该值是一个标识意图的 URI;它通常用于路由入站 SOAP 消息。例如,防火墙可以使用此标头适当地过滤 HTTP 中的 SOAP 请求消息。

对于 Web 服务中的 Web 方法,SOAPAction HTTP 标头默认具有以下形式(对于 SOAP 1.1):

SOAPAction: NAMESPACE/Package.Class.Method

其中 NAMESPACEWeb 服务的 NAMESPACE 参数的值,Package.Class.Method 是用作 Web 方法的方法的名称。例如:

SOAPAction: http://www.myapp.org/GSOAP.WebService.GetPerson
0
0 171
文章 Michael Lei · 七月 25, 2024 1m read

InterSystems 常见问题FAQ 

要编译包含映射修饰符的类rountine,请指定编译器修饰符“/mapped=1”或“/mapped”。例如,执行以下操作:

[示例 1] 获取类列表并编译

do$System.OBJ.GetClassList(.list,"/mapped")
 // build your classes starting from .listdo$System.OBJ.Compile(.list) 

[示例 2] 编译所有类 

do$system.OBJ.CompileAll("/mapped") 
0
0 121
文章 Michael Lei · 七月 18, 2024 1m read

InterSystems 常见问题系列

可以通过 TRY-CATCH 来完成:

#dim ex As%Exception.AbstractExceptionTRY {
    //Code that causes an error
  }
  CATCH ex {
     do ex.Log()
  }

如果用了 ^%ETN, 从BACK 接入点 (BACK^%ETN)处调用.

请参考另外一篇文章: 如何使用命令获得应用错误 (^ERRORS)

0
0 133
文章 Yongfeng Hou · 十一月 23, 2023 3m read

        IRISHealth以其完备且系统化的安全特性在医疗行业的数据库中独树一帜,这些特性包括安全认证、安全授权、安全审计、数据加密以及安全配置。其中数据传输无疑是其中最重要的一环。为此,IRISHealth采用了SSL/TLS技术来对传输的数据进行加密,有效保障了从IRIS数据平台的超级服务数据传输、Telnet服务数据传输、java/.net/Studio客户端的访问数据传输、MIRROR与DB的数据传输,到DBServer和ECPApp之间的数据传输的安全性。


        本文是在两个IRISHealth2021实例之间进行ECP服务通信的示例,一个作为DBServer,一个作为ECPApp,两个实例之间通过使用SSL/TLS的ECP协议进行TCP的加密传输通信。

1.IRIS的DB和ECP环境:

DBServer 

ECPApp

10.1.30.231  10.1.30.232

 

2. CA证书的环境:

5
3 413
文章 Michael Lei · 七月 11, 2024 1m read

在当今充满活力的医疗保健行业,获取全面、精简的医疗记录对于做出明智的决策至关重要。人工智能驱动的健康图表应用程序是一个开创性的解决方案,旨在为医生提供一种获取和理解健康数据的有效方式。

主要功能

- 全面的数据检索: 健康图表应用程序通过提取各种健康数据,包括过敏症、病情、手术、免疫接种、药物、家族史、社会史、生命体征和化验结果,超越了传统记录。这种全面的视角可以让人们深入了解患者的健康历程。

- 通过人工智能增强洞察力:通过利用人工智能的力量,Health Chart 应用程序可以智能处理数据。人工智能引擎将原始信息转化为可操作的洞察,生成健康摘要和风险评估。这不仅节省了医生的宝贵时间,还提高了患者护理质量。

公司介绍:https://www.prairiebyte.com

软件试用

目标使用者--临床医生

类别--护理协调, 数据可视化, 疾病管理/基层医疗

应用程序类型--SMART ON FHIR应用程序

FHIR 版本--R4

支持的电子病历系统--Cerner、Epic等支持FHIR API的软件系统

0
0 243
文章 Michael Lei · 七月 9, 2024 1m read

Abstractive Health是一款医生人工智能助手,可帮助医生创建最佳病历。我们直接与国家 HIE 和 EHR 集成。我们的医疗摘要可用于门诊、住院和急诊护理,实现临床笔记的自动化,如 SOAP 笔记、进展笔记、护理过渡、ED Provider 笔记和出院摘要。我们使用生成式人工智能和 LLM 来压缩数百页的医疗笔记,从而节省您的时间,让您可以专注于病人护理。

公司介绍:https://www.abstractivehealth.com

软件试用

目标使用者--临床医生

类别--护理协调, 数据可视化, 人口健康

应用程序类型--SMART ON FHIR应用程序

FHIR 版本--R4

支持的电子病历系统--Allscripts、Athena Health、Cerner、Epic等支持FHIR API的软件系统

安全和隐私政策: https://www.abstractivehealth.com/security-and-privacy

0
0 148
文章 Michael Lei · 七月 7, 2024 1m read

InterSystems 常见问题系列FAQ

如果要让超时功能失效, 在DSN设置查询超时为disabled:

Windows Control Panel > Administrative Tools > Data Sources (ODBC) > System DSN configuration

如果勾选了Disable query timeout , 超时就会失效.

如果想在应用侧修改,你可以在ODBC API 层设置:在连接数据源之前,调用ODBC SQLSetStmtAttr功能设置SQL_ATTR_QUERY_TIMEOUT 属性 

0
0 195
文章 Michael Lei · 七月 7, 2024 1m read

InterSystems 常见问题FAQ

如果您想在InterSystems 产品启动时执行一个操作系统可执行文件,命令或者程序,可以在SYSTEM^%ZSTART routine里面写明流程 ( %ZSTART routine在 %SYS 命名空间里面创建).

在 SYSTEM^%ZSTART 里面写代码之前, 请确保他可以在任何情况下能正常工作

如果 ^%ZSTART routine 写的不对,或者没有响应或者发生错误,InterSystems 产品可能会无法启动。

更多信息,请参考一下文档。

About writing %ZSTART and %ZSTOP routines [IRIS]
About writing %ZSTART and %ZSTOP routines

0
0 124
文章 Michael Lei · 七月 7, 2024 4m read

InterSystems  常见问题系列FAQ

InterSystems 产品里数据 (表、对象、实例数据) 是存在global 变量里的。
每个global 的数据大小可以从管理门户中中点击属性查看Management Portal > System > Configuration > Local Database > Globals page, 然后在global 属性页点击计算大小Calculate Size 按钮。
你可以在终端上调用^%GSIZE  来在命名空间里显示数据大小,方法如下.

0
0 153
文章 Jeff Liu · 六月 30, 2024 7m read
Purpose of this article

有两篇很棒的有关删除消息关联的孤儿记录的内容以及如何处理孤儿的问题的WRC议最佳实践文章Ensemble Orphaned Messages | InterSystems Developer Community | Best DeleteHelper - A Class to Help with Deleting Referenced Persistent Classes (intersystems.com)
本文并不是要取代 Intersystems 专业人员撰写的这些文章,而是要在此基础上介绍我们如何利用这些信息和其他讨论(包括我们实际清理这些数据的方法)来帮助我们的数据库变得更加紧凑。

情况说明:

我们的备份越来越多。年初的时候,我们遇到过一台服务器被强制故障的情况,需要进行还原。由于数据库庞大,即使复制这个数据库也需要很长时间,更不用说还原重建shadow服务器了。因此,我们不得不决定最终解决这一增长问题。最初的原因已经确定 

  1. 开箱即用的任务或者在某些时候假定已运行,但没有勾选信息体。这是因为在查询其中一个消息体时,我们得到了来自 10 多年前的 ID 1。该任务是最佳实践中提到的默认 Ens.Util.Tasks.Purge。这就引出了流程中的提示 1 

理解你的数据

0
0 233
公告 Claire Zheng · 六月 3, 2024
SUTA培训作为专业的InterSystems技术学习平台之一,汇聚了权威技术专家与值得探讨的技术主题,内容涵盖了InterSystems数据平台基础管理运维的技能和知识。通过SUTA培训,新客户能够系统学习管理运维工作的整体架构和基础概念,老客户可以更深入、全面地加强对管理运维工作的理解和提升。

InterSystems 2024 SUTA培训现已启动,欢迎参加!

  • 如果您是首次参加SUTA培训,请点击此处 或 扫描下图左侧的二维码注册报名。报名信息需经过审核,请您耐心等待。审核通过的用户,点击此处 或 扫描下图右侧的二维码,使用报名时填写的手机号码登录查看课程。
  • 如果您曾报名参加过2022年、2023年的SUTA培训,无需重复注册报名。点击此处 或 扫描下图右侧的二维码,使用报名时填写的手机号码登录查看课程。

建议通过电脑端参加培训,点击进入直播间

0
0 214
InterSystems 官方 Claire Zheng · 五月 30, 2024

从发布InterSystems IRIS®数据平台2022.3开始,InterSystems修改了许可证强制执行机制,以包括REST和SOAP请求。由于这种变化,在升级后,使用REST或SOAP的非处理器核数的许可证环境下,用户可能会遇到更高的许可证消耗。要确定此警报是否适用于您的InterSystems许可证,请按照下面链接的FAQ中的说明进行操作。

下表总结了强制执行变更情况:

产品

许可证强制执行中是否包含REST & SOAP 请求?

InterSystems Caché®

InterSystems Ensemble®

InterSystems IRIS, InterSystems IRIS® for Health, and Health Connect prior to 2022.3

InterSystems IRIS, InterSystems IRIS for Health, and Health Connect 2022.3 and later

1
0 177
公告 Claire Zheng · 五月 20, 2024

为推动《“十四五”全民健康信息化规划》全面实施,充分发挥国家医疗健康信息互联互通标准化成熟度评测工作对区域医疗信息交换促进作用,为医疗数据合规高效流通使用奠定坚实基础。《中国卫生信息管理杂志》社主办、深圳市卫生健康信息协会协办、InterSystems中国承办的区域信息互联互通新发展研讨会于5月11日在深圳举办。

国家卫生健康委统计信息中心胡建平副主任线上参会并致辞、广东省卫生健康委员会事务中心傅承主副主任、深圳市卫生健康信息协会林德南会长参加会议并致辞。胡建平副主任在视频致辞中强调了医疗健康信息互联互通标准化成熟度测评对区域全民健康信息化和智慧医院建设起到的重要作用,总结了互联互通标准化成熟度测评主要开展的四方面工作,指出下一步工作要从网络通、应用通、数据通等三个维度持续发力,通过叠加区块链等信息技术,实现互联互通从1.0阶段向2.0阶段跃迁,赋能卫生健康事业高质量发展。

查看精彩内容回放:欢迎扫描下图中的二维码或点击此处如果您已报名过此次会议,使用报名时的手机号码即可登录查看,如首次登录,需填写报名信息后查看

 

0
0 136
InterSystems 官方 Claire Zheng · 五月 15, 2024

InterSystems 很高兴地宣布现已推出:

  • InterSystems IRIS Data Platform 2024.1.0.267.2
  • InterSystems IRIS for Health 2024.1.0.267.2
  • HealthShare Health Connect 2024.1.0.267.2

该版本新增了对 Ubuntu 24.04 操作系统的支持。Ubuntu 24.04 包括 Linux 内核 6.8、安全性改进以及安装程序和用户界面改进。 InterSystems IRIS IntegratedML 在 Ubuntu 24.04 上尚不可用。

此外,该版本还解决了所有平台的两个缺陷:

  • 修复了某些使用 "NOT %INLIST "的 SQL 查询返回错误结果的问题。我们以前曾就此错误发出过警告
  • 修正了某些特定情况下堆栈跟踪不完整的问题。

如何获取软件

与往常一样,Extended Maintenance (EM) 版本附带适用于所有支持平台的经典安装包,以及 Docker 容器格式的容器镜像。有关完整列表,请参阅 "受支持的平台 "页面。

经典安装包

安装包可从 WRC 的 "Extended Maintenance Releases"页面获取。此外,还可在Evaluation Services上找到安装包。

容器

0
0 135
文章 Qiao Peng · 五月 25, 2022 1m read

%SYS.Journal.Record 类有一个查询(query), List, 可以列出Journal文件中记录的数据修改历史。例如,要查询谁对global节点^QP(1,2)做过修改,可以使用如下代码。它查询Journal文件(输入参数pFilePath)中的global节点(输入参数pSearchGlobal)的操作:

1
2 416