清除过滤器
公告
Jeff Liu · 一月 7, 2021
现在,InterSystems IRIS、IRIS for Health 和 IRIS Studio 的 2020.4 版发布了预览版本。由于是预览版本,因此我们渴望在下个月正式发布之前了解您对新版本的体验。
**InterSystems IRIS 数据平台 2020.4 **使开发、部署和管理增强型应用程序和业务流程(桥接数据和应用程序孤岛)变得更加容易。 其拥有众多新功能,包括:
面向应用程序和界面开发者的增强功能,包括:
使用 Oracle OpenJDK 和 AdoptOpenJDK 时均支持 Java SE 11 LTS
支持 JDBC 连接池
分段虚拟文档的路由规则新增“foreach”操作
面向数据库和系统管理员的增强功能,包括:
ICM 现在支持部署系统警报和监视 (SAM) 以及 InterSystems API 管理器(IAM)
常见管理任务的 SQL 语法得到扩展
InterSystems 报告的部署得到简化
** InterSystems IRIS for Health 2020.4 **包括 InterSystems IRIS 的所有增强功能。 另外,此版本还包括:
增强的 FHIR 支持,包括对 FHIR 配置文件的支持
支持 RMD IHE 配置文件
在 HL7 迁移工具中支持 DataGate
有关这些功能的更多详细信息,请参见产品文档:
InterSystems IRIS 2020.4 文档及版本说明
InterSystems IRIS for Health 2020.4 文档及版本说明
由于这是 CD 版本,因此仅以 OCI(开放容器计划) 亦即 Docker 容器格式提供。 容器映像可用于面向 Linux x86-64 和 Linux ARM64 的 OCI 兼容运行时间引擎,如[支持的平台文档](https://docs.intersystems.com/iris20204/csp/docbook/platforms/index.html)中详述。
**企业版**容器映像及其所有相应组件都可以使用以下命从[ InterSystems 容器注册表](https://docs.intersystems.com/components/csp/docbook/Doc.View.cls?KEY=PAGE_containerregistry)中获得:
docker pull containers.intersystems.com/intersystems/iris:2020.4.0.521.0
docker pull containers.intersystems.com/intersystems/irishealth:2020.4.0.521.0
有关可用映像的完整列表,请参阅[ ICR 文档](https://docs.intersystems.com/components/csp/docbook/Doc.View.cls?KEY=PAGE_containerregistry#PAGE_containerregistry_images)。
也可以使用以下命令从[ Docker 存储库](https://hub.docker.com/_/intersystems-iris-data-platform)提取**社区版**的容器映像:
docker pull store/intersystems/iris-community:2020.4.0.521.0
docker pull store/intersystems/iris-community-arm64:2020.4.0.521.0
docker pull store/intersystems/irishealth-community:2020.4.0.521.0
docker pull store/intersystems/irishealth-community-arm64:2020.4.0.521.0
另外,可以通过 WRC 的[预览版本下载网站](https://wrc.intersystems.com/wrc/coDistPreview.csp)获取所有容器映像的 tarball 版本。
InterSystems IRIS Studio 2020.4 是 Microsoft Windows 支持的独立开发映像。 其可以与 InterSystems IRIS 和 IRIS for Health 版本 2020.4 及更低版本一起使用,还可以与 Caché 和 Ensemble 一起使用。 可以通过 WRC 的[预览下载网站](https://wrc.intersystems.com/wrc/coDistPreview.csp)进行下载。
此预览版本的内部版本号是 2020.4.0.521.0。
公告
Nicky Zhu · 一月 8, 2021
现在,InterSystems **系统警报和监视**(简称 InterSystems _SAM_)第 1 版 (v1.0) 发布了预览版本。
InterSystems SAM v1.0 为基于 InterSystems IRIS 的产品提供现代化的监视解决方案。 其可对集群进行高级别查看,并且能够以单节点方式可视化深入探视指标,同时提供警报通知。 该第 1 个版本提供对一百多个 InterSystems IRIS 内核指标的可视化,并且用户可以根据自己的喜好扩展默认提供的 Grafana 模板。
V1.0 旨在成为简单直观的基准。 请进行尝试并向我们发送反馈,帮助我们使其变得更棒!
从版本 2019.4 开始,SAM 可以显示来自基于 InterSystems 的实例中的信息
SAM 仅以容器格式提供。 您将需要 SAM 管理器容器,以及一小组额外的开源_组件_(Prometheus 和 Grafana),它们由组合文件自动添加。
可从以下位置获取 SAM 组件和 SAM 管理器社区版
* [WRC 预览页面](https://wrc.intersystems.com/wrc/coDistPreview.csp):分别为“SAM 组件”和“SAM 管理器”
* 如果您要在 docker-compose 运行之前下载,可通过外部源[SAM 组件 Github repo](https://github.com/intersystems-community/sam) & [Docker Hub 上的 SAM 管理器](https://hub.docker.com/_/intersystems-system-alerting-and-monitoring)(后一个链接可能在几个小时内不可用,但容器是可获取的)
如果您正在旅行,或偏爱通过语音收听有关什么是 SAM 方面的提问与回答,我们为您准备了以下播客:
可在[此处](https://docs.intersystems.com/sam/csp/docbook/Doc.View.cls?KEY=ASAM)找到 SAM 文档
文章
Nicky Zhu · 一月 8, 2021
# 索引
下文按顺序列出了数据平台上容量计划和性能系列中的所有帖子。 也列出了我的其他帖子。 我将随着该系列中新帖子的增加进行更新。
#### 容量计划和性能系列
通常,每个帖子的内容都建立在上一个帖子的基础上,但您也可以直接浏览感兴趣的主题。
- [第 1 部分 - 入门:收集指标。](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-–-第-1-篇)
- [第 2 部分 - 研究收集的指标。](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-–-第-2篇)
- [第 3 部分 - 聚焦 CPU。](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-–-第-3-篇:聚焦-cpu)
- [第 4 部分 - 关注内存。](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-第-4-篇-关注内存)
- [第 5 部分 - 使用 SNMP 进行监控](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-第-5-篇-使用-snmp-进行监控)
- [第 6 部分 - Caché 存储 IO 配置文件。](https://cn.community.intersystems.com/post/数据平台和性能-第-6-部分-caché-存储-io-配置文件)
- [第 7 部分 - ECP的性能、可伸缩性和可用性 。](https://cn.community.intersystems.com/post/数据平台和性能-第-7-部分-用于确保性能、可伸缩性和可用性的企业缓存协议)
- [第 8 部分 - 超融合基础架构容量和性能计划](https://community.intersystems.com/post/intersystems-data-platforms-and-performance-%E2%80%93-part-8-hyper-converged-infrastructure-capacity)
- [第 9 部分 - CachéVMware 最佳实践指南](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-–-第-9-篇-intersystems-iris-vmware-最佳实践指南)
- [第 10 部分 - VM 备份和 Caché 冻结/解冻脚本](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-–-虚拟机备份和-caché-冻结解冻脚本)
- [第 11 部分 - 虚拟化大型数据库 - VMware cpu 容量计划](https://cn.community.intersystems.com/post/虚拟化大型数据库-vmware-cpu-容量规划)
#### 其他帖子
以下是我在社区中发布的与架构相关的帖子
- [使用内置 REST API监控 InterSystems IRIS - 使用 Prometheus 格式。](https://community.intersystems.com/post/monitoring-intersystems-iris-using-built-rest-api)
- [示例:使用默认的 REST API 从 InterSystems IRIS 查看监视器指标](https://community.intersystems.com/post/example-review-monitor-metrics-intersystems-iris-using-default-rest-api)
- [InterSystems 数据平台及性能 – 如何更新 pButton。](https://cn.community.intersystems.com/post/intersystems-数据平台和性能-–-如何更新-pbuttons)
- [将 pButtons 数据提取到 csv 文件中以便于绘制图表。](https://cn.community.intersystems.com/post/将-pbuttons-数据提取到-csv-文件以便绘制图表)
- [使用 Ansible 配置 Caché 应用程序 - 第 1 部分。](https://cn.community.intersystems.com/post/使用-ansible-预置-caché-应用程序-第-1)
- [Windows、Caché 和病毒扫描程序。](https://community.intersystems.com/post/windows-cach%C3%A9-and-virus-scanners)
- [ECP 魔术。](https://cn.community.intersystems.com/post/ecp-魔术)
- [创建社区帖子的 Markdown 工作流程。](https://community.intersystems.com/post/markdown-workflow-creating-community-posts)
- [Yape - 另一个 pButtons 提取程序(自动创建图表) ](https://cn.community.intersystems.com/post/yape-另一个-pbuttons-提取程序(自动创建图表))
- [加密一个数据库需要多久?](https://cn.community.intersystems.com/post/加密一个数据库需要多久?)
- [最低限度的监控和告警解决方案](https://cn.community.intersystems.com/post/最低限度的监视和警报解决方案)
- [LVM PE 条带化可最大化超融合存储吞吐量 ](https://cn.community.intersystems.com/post/lvm-pe-条带化使超聚合存储吞吐量最大化)
- [使用 Yape 解包 pButton - 更新说明和快速指南](https://cn.community.intersystems.com/post/使用-yape-解包-pbuttons-更新说明和快速指南)
Murray Oldfield InterSystems 技术架构师
请在社区关注@murray_oldfield 或我们中文版主
公告
Claire Zheng · 三月 8, 2021
亲爱的社区开发者们,
InterSystems 编程大奖赛 圆满结束!这是一场令人难以置信的竞赛,参与的应用程序和开发者数量创下了记录!
谢谢大家的参与!现在是时候宣布获奖者了!
让我们把掌声送给这些开发者们!
🏆 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出:
🥇 第一名,奖金 $6,000 获奖项目 e-intersystems-iris @Dmitry.Maslennikov
🥈 第二名,奖金 $3,000 获奖项目 iris-rad-studio @Henrique
🥉 第三名,奖金 $2,000 获奖项目 HealthInfoQueryLayer @Botai.Zhang
🏆 社区提名奖(Community Nomination) - 获得总投票数最多的应用:
🥇 第一名,奖金 $3,000 获奖项目 HealthInfoQueryLayer @Botai.Zhang
🥈 第二名,奖金 $1,500 获奖项目 Dictionary comparison scheme of cache database @Weiwei.Yang
🥉 第三名,奖金 $500 获奖项目 vscode-intersystems-iris @Dmitry.Maslennikov
恭喜所有获奖者和参赛者!
感谢大家对本次大赛的关注和在本次大赛中付出的努力! 恭喜中国获奖者 @Botai.Zhang @Weiwei.Yang !
感谢 @jingqi.LIu @Deming.xu 的参与!
期待其他开发者更多的作品! 非常荣幸参与其中,对所有的开发者来说,很棒的平台!
公告
Claire Zheng · 三月 17, 2021
通过持续进行云投资,InterSystems能够提供礼宾级的云服务。
InterSystems IRIS®数据平台和InterSystems IRIS医疗版™现已在亚马逊AWS云服务平台提供完全托管式服务,并可向客户提供一种风险最低、最便捷的充分利用云资源的途径。
客户在AWS基础架构中部署InterSystems环境后,InterSystems的礼宾级托管服务将帮助其处理性能、安全、可用性和操作问题。这种端对端服务可以让客户专注于自己的核心业务,而InterSystems则负责软件部署、基础架构、监测、高可用性、安全、补丁及升级等一系列工作。
InterSystems数据平台副总裁Scott Gnau表示:“在InterSystems,我们致力于通过云服务为客户提供礼宾级的托管式服务,并在AWS云端维持安全、可扩展、高性能的环境。”
“我们的完全托管式云服务可为客户提供两全其美的解决方案——客户既可以利用InterSystems的云端技术,又可以免去相关的担忧和复杂问题。这一最新服务再次证明了我们对云投资的持续承诺,同时也为更多的客户提供了获得所有云技术效益的机会,并彰显了我们一流的客户参与度和支持服务。”
作为一个独立于云的数据平台,InterSystems IRIS可部署在所有的大型公有云中,并支持多云和混合云环境。InterSystems IRIS无需集成多种技术,可以更加便捷地构建支持机器学习的高性能应用程序,从而连接数据和应用程序孤岛。 欢迎国内的云托管服务小伙伴们前来咨询
文章
Michael Lei · 六月 9, 2022
业务服务Business Service/BS是能够支持我们从外部数据来源获取数据强大的组件,在在大多数情况下,内置的现成组件就已经可以完成这项工作,但有时候我们还是需要写编码来自定义业务服务。在这样做的时候,有一些最佳实践供大家参考。
精益求精--业务服务的代码应该是最小化处理。这是由于如果在业务服务中发生任何错误,将不发送任何消息,从而将不创建任何跟踪。这使得它很难进行故障排除。相反,要尽可能快地完成Ensemble消息,并将其传递给适当的目标。有些人认为,如果有一个流进来,Ensemble消息应该包括一个流属性,然后由一个业务流程来解析这个流。(见文档中的例子3)还有人说,只要包括良好的错误检查,最小的处理就可以了。在这两种情况下,请记住,数据转换是存在的,可以在业务流程中使用,以便对该数据做进一步的翻译。这些转换不应该被从业务服务中调用。(参见文档中的示例1)。
可配置的目标:--在大多数情况下,业务服务的代码应该是一个可配置的目标,而不是将其硬编码到业务服务中。要做到这一点,你可以在业务服务类中创建一个名为TargetConfigNames的属性,其类型为Ens.DataType.ConfigName,使用SETTINGS参数并将此设置放在配置页上。
虽然这个属性不需要被命名为TargetConfigNames--但使用该名称与HL7组件中使用的内置设置相一致,这样做可以保持组件内的一致性。使用上面的代码只允许你选择一个目标。如果你需要向多个组件发送消息,有一些选项可以使这个设置成为多选的。请参考文档中的添加和删除设置,以了解更多关于如何做的内容。
你可以用下面的代码对该方法进行编码以处理多个目标:
For iTarget=1:1:$L(..TargetConfigNames, ",") { Set tOneTarget=$ZStrip($P(..TargetConfigNames,",",iTarget),"<>W") Continue:""=tOneTarget $$$sysTRACE("Sending input Stream ...") set tSC = ..SendRequestAsync(tOneTarget, pRequest)}
欢迎分享更多最佳实践!
公告
Claire Zheng · 二月 16, 2022
亲爱的开发者们!
“InterSystems中国”在B站现在已经有两百多位粉丝啦,欢迎查收2021年InterSystems中国在B站最受欢迎的视频列表!
2021 InterSystems中国在B站最受欢迎的视频(Top10)
№
视频(点击查看)
播放量
1
从Caché数据库升级到InterSystems IRIS数据平台的N个理由
466
2
Caché从零基础到精通-第0讲 前言
397
3
Caché从零基础到精通-第1讲-Caché 简介
346
4
Caché从零基础到精通-第2讲_初识M程序
324
5
FHIR标准和国际基于FHIR的互联互通实践
229
6
乔鹏-IRIS数据库在医疗行业发展(1):InterSystems IRIS架构
221
7
InterSystems Caché系统运维培训:InterSystems Caché架构、备份与恢复
200
8
【中文字幕】经济学人访谈录:凝望医疗健康数字化的未来
192
9
Caché从零基础到精通-第3讲_语法规则
188
10
InterSystems Caché系统运维培训:InterSystems Caché系统高可用与数据库镜像
177
欢迎大家B站搜索“InterSystems中国”关注我们,我们将持续上传优秀视频!
文章
Qiao Peng · 五月 15, 2022
在软件开发和业务集成中,规则无处不在:会员折扣的计算规则、根据消息类型和内容将其路由到不同目标系统的路由规则。还有一个规则发挥重要作用的地方- 辅助决策规则,例如临床知识库和医疗质量指标规则。
规则经常需要随业务调整和知识积累进行调整,而规则的调整是业务和行业专家定的。如果规则是以代码硬编码的,这些调整需要程序员改动,一来不直观、需要业务专家与程序员大量的沟通成本,二来硬编码改动会对应用伤筋动骨,甚至带来风险,三来没法控制新规则生效的时间 – 总不能让程序员在新规则生效的那一刻去编译和部署吧。
InterSystems规则引擎可以帮助我们解决这些问题,于构建、执行和记录消息路由规则和普通的业务规则,带给应用和集成方案充分的灵活性和可用性。甚至业务专家和临床信息学家都可以通过低代码的、图形化的规则编辑器修改规则和指定规则生效和失效时间。
InterSystems规则引擎是InterSystems IRIS数据平台和Health Connect与Ensemble集成平台的组件。创建的规则可以被单独调用,也可以被业务流程调用。
本篇介绍规则的如何使用InterSystems规则编辑器创建规则和规则引擎执行规则的逻辑。
1. 规则基本概念
在设计规则前,先了解一下规则的基本概念。
1.1 上下文
上下文是用于规则定义的数据模型。用于临床决策支持的上下文通常需要患者信息、诊断、体征与观察、过敏、医嘱等信息来制定规则。例如糖化血红蛋白(观察)超过10%,要提示紧急警告。因为上下文提供了建立规则判据的主要*数据,所以它非常关键。
医疗行业的数据格式非常复杂,有HL7 V2这种分隔符分隔的字符串、有HL7 CDA这样的XML字符串/字符流、有新的基于JSON的FHIR、还有SQL二维表的记录。这些数据格式都可能会被用做建立规则的上下文模型。
*注:除了上下文中的数据,还可以使用规则临时变量的数据作为判据。
1.2 规则类型
规则可以用于很多场景,InterSystems规则引擎支持多种规则类型,包括:
用于消息路由的规则
根据上下文(请求消息)信息类型和内容,决定消息路由的目标
InterSystems提供多种开箱即用的消息路由规则类,分别对应HL7 V2消息、行业虚拟文档消息(DICOM、X12等)、XML虚拟文档消息和普通对象消息
普通的业务判断规则
根据上下文内容,决定返回结果
上下文可以是普通对象、HL7消息、医疗行业虚拟文档、XML文档、JSON等
管理警告规则
根据系统警告信息路由警告给不同的用户
我们会介绍路由规则和普通业务规则。
无论创建哪种规则,InterSystems技术平台都以类定义保存规则逻辑,也就是创建规则类,从而方便的导入/导出。
1.3 规则辅助类
规则辅助类约束规则定义并决定规则可以使用哪些操作,例如路由规则可以使用“发送”操作,而普通业务规则可以使用“返回”操作。
系统提供的每个规则类型都有对应的规则辅助类,例如虚拟文档路由规则的规则辅助类是:EnsLib.MsgRouter.VDocRuleAssist。
在选定创建的规则类型后,规则编辑器会自动选择对应的规则辅助类,除非特殊场景,无需自己选择。通常规则辅助类不需要修改,我们将会在高级规则特性介绍文章中介绍用户自定义辅助规则类。
1.4 规则集、规则、条件、行为
规则定义由四层构成:
规则集:一个规则定义中可以定义一到多个规则集,同时只有一个规则集生效。当有多个规则集时,通常它们代表不同的版本,通过规则集不同的生效起止日期进行分别。这样,可以事先生成好新的规则集、并定义好生效时间,规则引擎会在生效时间开始后自动启用新的规则集。
规则:一个规则集中,可以有一到多个规则,这些规则同时生效。例如在HL7 V2路由规则定义中,每个规则可以处理不同类型的V2消息。规则按其在规则集中的顺序执行,只要规则没有返回(return)行为,后面的规则会继续执行。
规则条件:在一个规则中,可以处理多个规则条件,用when和otherwise定义。规则条件定义需要满足的条件和满足条件时的行为(action)。同一级别条件下,when可以有多个,但otherwise最多有一个,代表所有when都不满足的条件。不同条件间相当于if...elseif关系,因此一个条件满足时,后面的条件不会再进行判断。
行为:在规则条件下,可以执行一个或多个行为(action)。其中返回行为(return)是特殊行为,执行到这个行为会直接返回,进而中断后续的规则、条件和行为的执行。
2.使用规则编辑器
InterSystems规则引擎提供图形化的规则编辑器,通过管理门户>Interoperability>构建>业务规则 访问它。
第一步要确定我们要建立什么类型规则:是消息路由规则,还是普通业务规则,亦或是管理警告规则?
同时,规则是对象类,因此需要指定它的类包名(包)和类名(名称)。
2.1 消息路由规则的创建与编辑
本章介绍消息路由规则的创建与编辑,如果您是在找普通业务规则的创建方式,请跳到下一章。
消息路由流程本身是一种简单的业务流程,消息路由规则的上下文就是对应的业务流程对象,因此消息路由规则的上下文类型是固定的。
InterSystems提供4种开箱即用的消息路由规则,分别是:
路由规则类型
说明
上下文类
普通消息路由规则
用于用户自定义的对象类型消息的路由规则
EnsLib.MsgRouter.RoutingEngine
HL7 消息路由规则
用于HL7 V2消息的路由规则
EnsLib.HL7.MsgRouter.RoutingEngine
虚拟文档消息路由规则
用于XML、EDIFACT等虚拟文档类型消息的路由规则
EnsLib.MsgRouter.VDocRoutingEngine
基于消息段的虚拟文档消息路由规则
用于XML、EDIFACT等虚拟文档类型消息的路由规则,基于消息段,而非完整消息
EnsLib.EDI.MsgRouter.SegmentedRoutingEngine
2.1.1 HL7 v2消息路由规则的创建和部署
HL7 v2消息是使用分割符分隔的字符串,在InterSystems数据平台上使用内建的虚拟文档来操作,因此可以将HL7 v2消息的段(Segment)和属性(Field)作为对象和属性方式操作,非常简单。同时,InterSystems数据平台提供开箱即用的路由production模版,直接基于模版编辑即可。
2.1.1.1 创建HL7 v2路由规则的方法
方法1: 使用HL7 v2 production模版向导创建
在production创建向导中,选择production类型为HL7消息发送。这时同时创建用户HL7 v2路由的production和对应路由规则类。这种方法最简单,如果目标就是建立一个路由HL7 v2的产品,推荐使用这个模版向导。
向导会自动应用模版,创建如下的HL7 v2路由产品,它带处理输入HL7文件的BS和输出HL7文件的BO、一个路由规则BP:MsgRouter和一个异常警告BP:Ens.Alert。
选择MsgRouter,在右侧的业务规则名称中可以看到,向导自动创建了名为HIP.Prod.HL7Router.RoutingRule的路由规则。点击后面的放大镜图标,即可对该规则进行编辑。
方法2: 直接使用规则向导创建规则
在规则创建向导中,选择规则类型为:HL7 Message Routing Rule。
2.1.1.2 编辑规则
使用HL7 v2 production模版向导创建的规则定义已经包含了一个规则集(ruleSet),其中有一个规则(rule),而该规则下只有一个条件(when)。使用规则向导创建的v2路由规则是完全空白的规则定义,只有一个规则集。
我们以HL7 v2 production模版向导创建的规则定义为例介绍规则的编辑。
在规则编辑器页面,右侧是规则辅助,由规则辅助类提供支持,列出可以执行的操作。选中ruleset、rule、条件(when/otherwise)和行为,都会显示不同的可以执行的操作和相应的解释。
规则集(ruleSet)是一系列的规则的组合。
规则集可以设置生效时间范围:effectiveBegin和effectiveEnd。如果未定义生效时间范围,规则定义编译后即刻生效。当定义多个ruleSet时,应该定义每个ruleSet的生效时间范围;如果有生效时间范围的重叠,会使用第一个生效的规则集。
规则集有名称 name,建议设置为有意义的规则集说明。
规则(rule)是一系列条件的组合。
选中ruleSet,点击+号就可以添加规则。
规则可以设置:
名称(name): 应该设置为有意义的字符串,例如” ADT文件消息处理”。
是否禁用(disabled):默认是启用的(false)。
约束(constraint):设置本规则的消息约束。双击constraint即可编辑。对于HL7 v2消息,可以对下列信息进行约束:
源(source):对消息来源进行约束,本例中源被默认为HL7FileService,就是HL7文件源。如果这个路由规则需要处理多个HL7消息源,例如文件和TCP,可以把源约束删除掉。
Schema类别(Schema Category):对HL7 v2消息的Schema版本进行约束。如果路由规则只处理特定版本的消息,可以进行选择,例如2.5.1。
文档名称(Document Name):因为HL7 v2被作为虚拟文档对象进行处理,因此每种类型的v2消息都是一种虚拟文档。如果要对处理的v2消息类型进行约束,可以多选v2消息类型,例如ADT_A01和ADT_A03。
注意,这些约束项都是可选的。任何不符合约束的消息,都不会被路由,并且会被记录在规则日志(rule log)中。
规则条件(when/otherwise)设定条件(condition)。
选中rule,点击+号,即可增加条件when或otherwise。增加后,双击condition即可编辑。可以用在条件的判据数据就是上下文中的属性(数据),在表达式编辑窗口的文本输入栏会有属性提示,打首字母就会提示,也可以打任意字符并删除,从而显示所有上下文可用属性。
HL7消息是一种虚拟文档*,因此有Document特殊变量用于访问其虚拟文档内的数据。如果在上一步的规则约束中选择了虚拟文档的类型,如ADT_A01,那么引擎还会在Document.{ 后提供所有对应HL7 v2虚拟文档的段和属性提示,如下图。
*注:关于虚拟文档,我将在下一篇文章中介绍。
在表达式编辑窗口中,点击op打开操作符向导,选择操作符,例如判等、大于、包含等。点击fx打开函数向导,选择函数,例如ConvertDateTime函数可以将HL7的时间格式(YYYYMMDDhhmmss)转为ODBC格式(YYYY-MM-DD hh:mm:ss)。也可以直接写表达式,而不使用这些操作符和函数向导。用户可以扩展自定义函数,见第二部分的规则函数扩展章节。
行为(action)定义了满足条件时的行为。
例如满足条件,将消息做模型转换后发送给外部HL7接口。在右侧的规则辅助窗口列出可以执行的行为。注意在同一个规则条件下,可以有多个行为,例如向多个目标发送不同的消息。
对于路由规则,通常的行为时发送(send)。发送前,选中转换(transform)可以选择发送前要执行的数据转换;
发送目标(target)会列出production中的所有业务操作和业务流程,可以多选。
注意1:规则(rule)也是一种行为,即满足条件时,可以执行子规则。
注意2:返回(return)行为会中断当前规则条件下的后续行为。
<<未完待续>>
文章
Lucy Ma · 五月 18, 2022
InterSystems IRIS商业智能支持用多种方式使你的模型保持数据同步。这篇文章将展示如何构建和同步。当然有多种方式可以手动同步,但是这些是特殊案例,几乎所有的模型保持数据同步的方式都是通过构建和自动同步。
什么是构建?
构建开始于将所有的数据从模型中移除。这样保证了构建的过程是从一个干净的起点开始的。接着构建会逐步从每个源类查询所有数据条目。这里会提取所有的数据条目,或者有限制的数据条目。当构建到对应的数据条目时候,被模型选择的数据会插入到模型中。最终,一旦所有的数据都被插入到模型里,索引会被构建。在这个过程中,模型是不可用的,数据也不能被查询。构建的执行过程是单线程或者多线程的。它可以被初始化于UI或者终端界面。UI界面会默认是多线程。从终端界面来运行构建过程会默认成多线程,除非过程中设置传入的参数。在更多的场景下,多线程构建是可行的。也有特殊的场景是不允许执行多线程构建的,那么构建过程只能通过单线程完成。
什么是同步?
如果一个模型的源类是启动了DSTIME (参见文档),它就可以被同步。DSTime允许通过更改源类来被追踪。当同步过程被启动,只有在模型中设定的需要变更的数据条目会被插入,更新或者删除。当同步过程正在运行,模型是可以用于查询数据的。同步机制只能通过终端界面来启动。它可以在UI界面的模型管理器中设置定时任务,但是不能够直接从UI界面执行。默认场景是,同步只能是单线程,但是也可以通过参数设置来启动多线程同步。
一个永远不会出错的办法是通过构建来初始化模型,然后通过同步机制来保持数据的更新。
差异回顾
构建
同步
多少数据需要更新?
所有
只有变更的数据
可在UI界面操作?
是
否
多线程
是,默认
是,非默认
模型是否可被使用
否(*1)
是
需要源类的变更
否
是,DSTIME需要开启
构建更新
(*1)从InterSystems IRIS 2020.1开始,选择性构建功能可以作为一个选项来构建模型了。这个功能将允许模型在构建过程中能够被使用。更多信息请参考 Getting Started with Selective Build
同步更新
从 InterSystems IRIS 2021.2开始,DSTIME会作为一个新的“条件”选项。这个改动将允许实施有条件的开启DSTIME选项,专门服务于特殊的场景和安装。
文章
Jingwei Wang · 九月 16, 2022
连接前准备:
C++ 开发环境
InterSystems ODBC 驱动 (ODBC 驱动会随InterSystems IRIS安装包自动安装在服务器中)
Connection String
步骤:
Connection String:其中#include 用来导入需要使用的libraries,"Driver=InterSystems IRIS ODBC35;Host=localhost;Port=1972;Database=USER;UID=SQLAdmin;PWD=deployment-password;\0";是connection string。
#ifdef WIN32
#include <windows.h>
#endif
#include <sqlext.h>
#ifdef UNICODE
#include <sqlucode.h>
#endif
#include <stdio.h>
int main()
{
RETCODE rc; /* Return code for ODBC functions */
HENV henv = NULL; /* Environment handle */
HDBC hdbc = NULL; /* Connection handle */
unsigned char szOutConn[600];
SQLSMALLINT *cbOutConn = 0;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER*)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
char connect_cmd[255] = "Driver=InterSystems IRIS ODBC35;Host=localhost;Port=1972;Database=USER;UID=SQLAdmin;PWD=deployment-password;\0";
rc = SQLDriverConnect(hdbc, NULL, (SQLCHAR*) connect_cmd, SQL_NTS, szOutConn, 600, cbOutConn, SQL_DRIVER_COMPLETE);
if (rc == SQL_SUCCESS)
{
printf("Successfully connected!!\n");
}
else
{
printf("Failed to connect to IRIS\n");
exit(1);
}
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc); /* Free connection handle */
SQLFreeHandle(SQL_HANDLE_ENV, henv); /* Free environment handle */
return 0;
}
文章
Lilian Huang · 三月 15, 2022
这篇文章的目的是为了说明如何使用互操作菜单实现系统集成。
图片左侧窗口是接受外部系统发送信息的窗口。
信息接收方式种类很多,如定时监控指定目录来读取文件,定期查询数据库,输入且等待信息输出,或直接调用其他应用程序系统传送信息。
在系统集成配置中创建IRIS 互操作性菜单,接收到存储在一个对象中的信息被称为一条消息message(以下统称为消息)。消息被发送到组件component (以下统称为组件)中做后续处理。
使用所有接收到的信息或仅使用其中的一部分就能用来创建消息。
假设您要将信息中包含的消息发送给外部系统。这种情况下,需要将该消息发送给负责请求外网处理的组件(图右侧)。接收到消息的组件会请求外部系统对其进行处理。
此外,假设一条消息需要人工审查、数据转换或数据附加。这种情况下,消息会被发送到图表中间的业务流程管理组件(BPM),该组件负责协调处理流程。
消息用于在每个组件之间发送和接收数据。当发送或接收消息时,消息会被自动存储在数据库中。
由于消息存储在数据库中,因此在数据转换前后可以检查其差异性。在操作期间,或过程中间重新开始(重新发送),可以检查作为问题根源的消息。在开发、测试和操作的每个阶段可以验证正在使用的消息状态。
一个简单的系统集成图将分为三个部分(业务服务、业务流程和业务操作),如下图所示。
还有一个称为“生产环境Production”的定义,它存储有关要使用的组件信息(例如,连接信息)。
各组件功能如下:
业务服务Business Service
负责从外部源接收信息,创建消息,以及向其他组件发送消息。
业务流程Business Process
该功能在收到消息时被激活,并负责协调流程(按预先定义的顺序调用组件、等待响应、等待人工审核结果等)。
业务操作Business Operation
此功能在收到消息时被激活,会请求外部系统处理该消息。
消息是用于在组件之间发送和接收数据。
当收到一个消息时,业务服务以外的所有组件开启处理流程。
问题是,创建和使用此消息的目的是什么?
通过创建消息可获取中继到外部系统的数据并检索进入业务服务。
由于不是所有的外部系统都用相同类型的数据格式连接到 IRIS,并且要中继的内容各不相同,因此生产者可以根据信息自由定义消息类别。
有两种类型的消息:请求(= 请求消息)和响应(= 响应消息)。触发组件激活的消息被称为request(=请求消息),组件处理后响应的消息称为response(=响应消息)。
这些消息在考虑中继流程时会被设计。
在接下来的文章中,我们将使用一个案例来概述产品、消息和组件的创建。
文章
Jingwei Wang · 七月 21, 2022
在InterSystems IRIS数据平台管理门户中,有一些工具用于导入和导出数据。这些工具使用动态SQL,这意味着查询是在运行时准备和执行的。可以导入或导出的行的最大尺寸是3,641,144个字符。
你也可以使用%SQL.Import.Mgr类或LOAD DATA SQL命令导入数据,并使用%SQL.Export.Mgr类导出数据。
从文本文件中导入数据(.csv 和.txt)
你可以从一个文本文件中导入数据到一个合适的InterSystems IRIS类。当你这样做时,系统会在该类的表中创建并保存新的行。该类必须已经存在并且必须被编译。
步骤如下:
从管理门户中 选择系统资源管理器,然后选择SQL。用页面顶部的切换选项选择一个命名空间;这会显示可用的命名空间的列表。
在页面顶部,点击向导下拉列表,并选择数据导入。
在向导的第一页,首先指定外部文件的位置。对于导入文件所在的位置,点击要使用的服务器的名称。
然后输入文件的完整路径和文件名,文件可以是.csv 和 .txt格式。
然后选择你想要导入到schema的名称。
选择表名。
然后点击下一步。
在向导的第二页,选择需要导入数据的列。
然后点击下一步。
在向导的第三页,描述外部文件的格式。
在 "您的列所使用的分隔符? "中,点击与导入文件中的分隔符相对应的选项。
如果文件的第一行不包含数据,请点‘第一行是否包含列标题?’复选框。
对于字符串引号,点击表示该文件用于开始和结束字符串数据的引号定界符的选项。
对于日期格式,单击表示此文件中的日期格式的选项。
对于时间格式,点击表示此文件中的时间格式的选项。
对于时间戳格式,点击表示此文件中的时间戳格式的选项。
如果你不希望向导在导入时验证数据,请点击禁用验证复选框。
如果您不希望向导在导入时重建索引,请点击 ‘推迟 %SortBegin/%SortEnd 的索引构建?’ 复选框。如果勾选了 "延迟建立索引",向导会在将导入的数据插入到表中之前调用类的%SortBegin方法。当导入完成后,向导会调用%SortEnd方法。没有进行验证(与带有%NOCHECK的INSERT相同)。这是因为当使用%SortBegin/%SortEnd时,在SQL插入过程中不能检查索引的唯一性。
可以选择点击预览数据,看看向导将如何解析这个文件中的数据。
点击 "下一步"。
审查你的条目并点击完成。该向导显示数据导入结果对话框。
点击关闭。或者点击给定的链接,查看背景任务页面。在这两种情况下,向导会启动一个后台任务来完成导入工作。
导出数据到文本文件
你可以将一个给定类的数据导出到一个文本文件。
步骤如下:
从管理门户中 选择系统资源管理器,然后选择SQL。用页面顶部的切换选项选择一个命名空间;这将显示可用的命名空间的列表。
在页面的顶部,点击向导下拉列表,选择数据导出。
在向导的第一页。
输入你要创建的文件的完整路径和文件名,以保存导出的数据。
从下拉列表中,选择你要导出数据的命名空间、模式名称和表名称。
可以选择从字符集下拉列表中选择一个字符集;默认是设备默认值。
然后点击下一步。
在向导的第二页,选择要导出的列。然后点击下一步。
在向导的第三页,描述外部文件的格式。
在 "用什么分隔符分隔你的列?"中,单击与该文件中的分隔符相对应的选项。
如果你想把列头作为文件的第一行导出,请点击 ‘是否导出列标题?’ 复选框。
对于字符串引号,点击一个选项来表示如何在这个文件中开始和结束字符串数据。
对于日期格式,点击一个选项来表示在这个文件中使用的日期格式。
对于时间格式,点击一个选项来指示在此文件中使用的时间格式。
可以选择点击预览数据,看看结果会是什么样子。
然后点击下一步。
审查你的条目并点击完成。向导会显示 "数据导出结果 "对话框。
点击关闭。或者点击给定的链接,查看背景任务页面,向导会启动一个后台任务来完成导出工作。
文章
Claire Zheng · 十一月 7, 2022
作为开发者社区的一员,多年来我亲眼目睹了访问和共享数据的障碍是如何阻碍创新的。在与医疗科技领域的初创公司和大企业合作时,我看到了封闭的数据是如何阻碍了我们的合作,那种我们都意识到的对提供高质量医疗服务至关重要的合作。 随着我对FHIR®(快速医疗互操作性资源)标准的了解,我开始相信这是医疗创新的前进之路。我希望全世界的开发人员——包括我们全球InterSystems开发社区的1.1万余名开发人员——都能够充满激情地来了解如何使用FHIR推动数据驱动的医疗解决方案,来了解这种以前所未有的方式促进生态系统利益相关者之间合作的技术。 Sage Growth Partners的一项调查发现,医疗行业有一半的高管表示,数据集成和互操作性是实现其战略数据分析目标的最大障碍。只有20%的人对自己的数据充满信心。 他们渴望改变。其中约80%的高管表示,在整个组织内创建和共享高质量数据是他们的首要任务。一个全球性的运动正在呼吁更多的协作医疗,然而数据的缺陷阻碍了这一进程。 集成FHIR,就可以改变游戏规则。
协作医疗意味着协同IT
将医疗行业的利益相关者聚集在一起、交换信息和知识,毫无疑问将改善患者的结果。但是当你观察成功的协作医疗的背后,你会发现什么呢?
协同IT。这意味着实现健康信息的互操作性,无论是测试结果、报告患者监测数据、索赔信息还是电子健康记录(EHR)。随着医疗健康数据比以往任何时候都更加庞大和分散,从多个系统访问数据,以及从一个应用程序实时访问数据,能够使利益相关者更好地关注细节,并快速构建定制的医疗护理计划。
FHIR是医疗互操作性的未来
简单介绍一下背景知识:FHIR是一个全球互操作性标准,描述了机构间如何共享大约150种医疗健康“资源(Resource)”——例如药物、医疗设备数据、付款人信息以及跨EHR和其他系统托管的其他数据。
从去年开始,医疗计划必须允许成员通过使用安全FHIR Release 4 (R4) API的应用程序访问其医疗数据。这迎来了来自世界各地的开发人员的爆发式创新,开发人员能够构建FHIR应用程序、工具和技术,利用这一标准来促进协作医疗。
这惠及患者。现在,只需轻轻一划手指,患者就能轻松获取个人医疗健康信息,使用基于FHIR的应用程序编程接口(API)从移动设备上获取医疗健康数据。
用FHIR改变医疗
作为InterSystems开发者关系主管,我很自豪我们正在构建核心医疗IT的协作工具,帮助开发人员充分利用FHIR。InterSystems IRIS for Health(医疗版)、InterSystems HealthShare®和InterSystems IRIS云服务都利用FHIR来支持互操作性。 HL7 达芬奇项目(Da Vinci)是一项倡议,通过该倡议,医疗IT专家和行业领袖通过利用HL7 FHIR,在基于价值的医疗中改善跨社区数据共享。该项目侧重于在质量改进、覆盖率/减轻负担、成员访问、流程改进和临床数据交换方面取得成果。
看看正在进行和已经上市的产品,很明显,FHIR集成将改变医疗健康行业。当医疗服务提供者、支付方和医疗护理行业的其他人能够利用庞大的健康数据来改善患者的结果时,每个人都是赢家。
作者介绍
本文作者 Dean Andrews (社区ID: @Dean.Andrews2971 )是InterSystems数据平台开发者关系主管。他的团队管理着InterSystems开发者社区、黑客马拉松项目和创业加速器项目。Dean专注于为开发人员、创业公司和客户提供工具和信息,使他们能够在InterSystems技术上进行创新。Dean还是非营利组织HealthTech Build的顾问委员会成员,他是出版自己的专著,并且经常在行业活动中发表演讲。
原文链接可以点击此处查看:How Collaborative IT Can Unlock Collaborative Care