搜索​​​​

清除过滤器
文章
Michael Lei · 八月 19, 2022

IRIS 医疗版docker 容器初体验

我很高兴与大家分享我第一次使用docker容器版本的IRIS for Health的经验,以探索你对使用或试用的兴趣,利用docker容器的优势,它是轻量级的,易于部署。本文将通过使用Renan Lourenco编写的名为ENSDEMO的GitHub仓库的实施步骤。 设置IRIS for Health社区版docker容器环境的步骤: 启动运行Docker 下载docker 镜像image docker pull containers.intersystems.com/intersystems/irishealth-community:2022.2.0.304.0 从GitHub 克隆源repository git clone https://github.com/OneLastTry/irishealth-ensdemo 改一下文件目录. 从docker-compose.yml建立容器镜像 docker-compose build 运行你的容器 docker-compose up -d 在我最初的尝试中,我无法下载irishealth community:2022.2.0.304.0的确切版本,因为它在ENSDEMO的最初发布中已经发生了变化。修复方法是,当试图从InterSystems容器注册表拉出docker镜像时,在注册表中拉出最新的可用标签。 我遇到的另一个错误是在执行docker-compose build命令后显示"=>ERROR[internal]load metadata for docker pull containers.intersystems.com/intersystems/irishealth-community:2022.2.0.293.0" 。这是因为我下载的docker镜像的版本和Dockerfile中指定的容器镜像版本之间有冲突。 登录IRIS医疗版: 管理门户: http://localhost:9092/csp/sys/%25CSP.Portal.Home.zen 用户名: SuperUser 密码: SYS SuperServer 端口: 9091 Web 端口: 9092 命名空间: ENSDEMO 启动 IRIS 终端 session: docker exec -it ensdemo iris session iris 启动 bash session: docker exec -it ensdemo /bin/bash 视频: https://www.loom.com/share/36bd8c63db724eebae65debf0d89c821 参考: https://github.com/OneLastTry/irishealth-ensdemo by Renan Lourenco (Renan.Lourenco@intersystems.com) https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ACLOUD 咨询下,启动出现下边错误,是什么原因呢? [root@elite ~]# docker logs irishealth[INFO] Executing command /home/irisowner/irissys/startISCAgent.sh 2188...[INFO] Writing status to file: /home/irisowner/irissys/iscagent.statusReading configuration from file: /home/irisowner/irissys/iscagent.confISCAgent[18]: StartingISCAgent[19]: Starting ApplicationServer on *:2188[INFO] ...executed command /home/irisowner/irissys/startISCAgent.sh 2188[ERROR] Required Linux capability cap_setuid is missing.[ERROR] Required Linux capability cap_dac_override is missing.[ERROR] Required Linux capability cap_fowner is missing.[ERROR] Required Linux capability cap_setgid is missing.[ERROR] Required Linux capability cap_kill is missing.[FATAL] Your IRIS container is missing one or more required Linux capabilities.[INFO] Executing command /home/irisowner/irissys/startISCAgent.sh 2188... 最新docker引擎做了变化,运行IRIS的2022.2之前的版本,要增加一个参数--check-caps false,例如: docker run --name test2 --publish 1972:1972 --publish 52773:52773 docker.iscinternal.com/intersystems/irishealth:2021.1.0.215.0 --check-caps false --key <keyfile-path>
文章
姚 鑫 · 七月 25, 2023

第二章 HL7 架构和可用工具

# 第二章 HL7 架构和可用工具 - HL7 模式和消息概述 ## HL7 模式和消息概述 `InterSystems` 产品可以处理和传递 `HL7` 消息,而无需使用架构来解析它,但将架构与消息关联允许执行以下操作: - 解析消息并访问以下字段值: - 数据转换 - 路由规则 - 自定义 `ObjectScript` 代码 - 验证消息是否符合架构。 每个 `HL7` 消息均由消息类型标识,该消息类型在 `MSH` 段 `MessageType` 字段 (`MSH:9`) 中指定。一些消息类型共享相同的消息结构。例如,在`HL7`版本`2.3.1`中,用于预先接纳患者的`ADT_A05`消息具有与`ADT_A01`接纳消息相同的结构。该架构指定 `ADT_A05` 消息具有结构类型 `ADT_A01`。 为了解析 `HL7` 消息,需要两条信息: - 架构类别 — 这是 `HL7` 版本号,例如 `2.3.1` 或 `2.7`,或者它可能是 `InterSystems` 产品中定义的自定义架构的类别。`production` 从业务服务消息模式类别设置或从数据转换设置获取模式类别。尽管 `HL7` 消息在 `MSH` 段 `VersionID` 字段中包含模式版本号 (`MSH:12`),但 `InterSystems` 不使用此值,因为许多应用程序并未一致地设置此字段。 - 结构类型 - `production` 从 `MSH:9` 字段获取消息类型,然后检查架构定义以获取该消息的结构类型。 在某些情况下,使用 `MSH:9.3` 子字段来限定消息类型。 `MSH:9:`3 子字段在 `HL7` 消息中以两种方式使用:1) 作为消息类型的修饰符,或 2) 指定结构类型。如果 MSH:9:3 修改消息类型(通常为数字),InterSystems 产品会将其作为消息类型的一部分。如果 MSH:9:3 指定结构类型(例如 `ADT_A01`),则 `InterSystems` 在确定消息类型和设置 `Name` 属性时都会忽略它。 `InterSystems` 产品不需要 `MSH:9.3` 子字段来确定结构类型,因为它们从架构中获取结构类型。 当业务服务或数据转换创建 `EnsLib.HL7.Message` 对象来存储 `HL7` 消息时,它会组合架构类别和结构类型,并使用以下语法将其存储在 `DocType` 属性中: ``` category:structureType ``` 例如,类别 `2.3.1` 的有效 `DocType` 值包括 `2.3.1:ACK`、`2.3.1:ADT_A17`、`2.3.1:BAR_P01` 和 `2.3.1:PEX_P07`。消息类型可以与结构类型不同,存储在 `Name` 属性中。 如果在 `ObjectScript` 代码中创建 `EnsLib.HL7.Message` 对象,则应根据 `MSH:9` 字段中的值设置 `DocType` 和 `Name` 属性。 `HL7` 标准允许本地扩展,例如尾部 `Z` 段。这些段未在基本架构类别中定义。如果要访问数据转换、路由规则或 `ObjectScript` 中自定义 `Z` 段中的字段,则需要定义指定扩展消息的自定义架构类别。 可以将自定义 `HL7` 架构置于源代码管理之下。启用源代码控制后,源代码控制选项(例如签出和签入)可从主 `HL7` 模式页面使用,但在用于处理自定义模式的其他页面(例如 `HL7` 模式消息类型页面)上不可用。在使用其他页面编辑架构之前,必须从 `HL7` 架构页面检查整个架构。 `HL7` 模式主页面提供了源代码控制输出窗口,该窗口捕获所有相关 `HL7` 模式页面的源代码控制活动。有关设置源代码控制的信息,请参阅将 `IRIS` 与源代码控制系统集成。 这个应该只是讲的HL7 v2 的消息吧?
文章
姚 鑫 · 七月 15, 2022

第六章 使用嵌入式 Python (三)

# 第六章 使用嵌入式 Python (三) # 从 ObjectScript 调用嵌入式 Python 代码 ## 使用 Python 库 嵌入式 `Python` 让可以轻松访问数以千计的有用库。通常称为“包”,它们需要从 `Python` 包索引 `(PyPI)` 安装到 `/mgr/python` 目录中,然后才能使用。 例如,`ReportLab Toolkit` 是一个用于生成 `PDF` 和图形的开源库。以下命令使用软件包安装程序 `irispip` 在 `Windows` 系统上安装 `ReportLab`: ```java C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python reportlab ``` 在基于 `UNIX` 的系统上,使用: ```java $ pip3 install --target /InterSystems/IRIS/mgr/python reportlab ``` 安装包后,可以使用 `%SYS.Python` 类的 `Import()` 方法在` ObjectScript` 代码中使用它。 给定一个文件位置,以下 `ObjectScript` 方法 `CreateSamplePDF()` 创建一个示例 `PDF` 文件并将其保存到该位置。 ```java Class Demo.PDF { ClassMethod CreateSamplePDF(fileloc As %String) As %Status { set canvaslib = ##class(%SYS.Python).Import("reportlab.pdfgen.canvas") set canvas = canvaslib.Canvas(fileloc) do canvas.drawImage("C:\Sample\isc.png", 150, 600) do canvas.drawImage("C:\Sample\python.png", 150, 200) do canvas.setFont("Helvetica-Bold", 24) do canvas.drawString(25, 450, "InterSystems IRIS & Python. Perfect Together.") do canvas.save() } } ``` 该方法的第一行从 `ReportLab` 的 `pdfgen` 子包中导入 `canvas.py` 文件。第二行代码实例化一个 `Canvas` 对象,然后继续调用它的方法,这与调用任何 `IRIS` 对象的方法很相似。 然后,可以以通常的方式调用该方法: ```java do ##class(Demo.PDF).CreateSamplePDF("C:\Sample\hello.pdf") ``` ## 调用用 `Python` 编写的 `IRIS` 类的方法 可以使用嵌入式 `Python` 在 `IRIS` 类中编写方法,然后从 `ObjectScript` 调用它,就像调用用 `ObjectScript` 编写的方法一样。 下一个示例使用 `usaddress-scourgify` 库,可以从 `Windows` 上的命令行安装,如下所示: ```java C:\InterSystems\IRIS\bin>irispip install --target C:\InterSystems\IRIS\mgr\python usaddress-scourgify ``` 在基于 `UNIX` 的系统上,使用: ```java $ pip3 install --target /InterSystems/IRIS/mgr/python usaddress-scourgify ``` 下面的演示类包含美国地址部分的属性和一个用 `Python` 编写的方法,该方法使用 `usaddress-scourgify` 根据美国邮政服务标准对地址进行规范化。 ```java Class Demo.Address Extends %Library.Persistent { Property AddressLine1 As %String; Property AddressLine2 As %String; Property City As %String; Property State As %String; Property PostalCode As %String; Method Normalize(addr As %String) [ Language = python ] { from scourgify import normalize_address_record normalized = normalize_address_record(addr) self.AddressLine1 = normalized['address_line_1'] self.AddressLine2 = normalized['address_line_2'] self.City = normalized['city'] self.State = normalized['state'] self.PostalCode = normalized['postal_code'] } } ``` 给定地址字符串作为输入,类的 `Normalize()` 实例方法规范化地址并将每个部分存储在 `Demo.Address` 对象的各种属性中。 可以按如下方式调用该方法: ```java USER>set a = ##class(Demo.Address).%New() USER>do a.Normalize("One Memorial Drive, 8th Floor, Cambridge, Massachusetts 02142") USER>zwrite a a=3@Demo.Address +----------------- general information --------------- | oref value: 3 | class name: Demo.Address | reference count: 2 +----------------- attribute values ------------------ | %Concurrency = 1 | AddressLine1 = "ONE MEMORIAL DR" | AddressLine2 = "FL 8TH" | City = "CAMBRIDGE" | PostalCode = "02142" | State = "MA" +----------------------------------------------------- ``` ## 运行用 `Python` 编写的 `SQL` 函数或存储过程 当使用嵌入式 `Python` 创建 `SQL` 函数或存储过程时, `IRIS` 会投影一个具有可从 `ObjectScript` 调用的方法的类,就像使用任何其他方法一样。 例如,本文档前面示例中的 `SQL` 函数会生成一个类 `User.functzconvert`,它有一个 `tzconvert()` 方法。从 `ObjectScript` 调用它,如下所示: ```java USER>zwrite ##class(User.functzconvert).tzconvert($zdatetime($h,3),"US/Eastern","UTC") "2021-10-20 15:09:26" ``` 这里,`$zdatetime($h,3)` 用于将当前日期和时间从 `$HOROLOG` 格式转换为 `ODBC` 日期格式。 ## 运行任意 Python 命令 有时,当开发或测试嵌入式 `Python` 代码时,从 `ObjectScript` 运行任意 `Python` 命令会很有帮助。可以使用 `%SYS.Python` 类的 `Run()` 方法来执行此操作。 也许想测试本文档前面使用的 `usaddress_scourgify` 包中的 `normalize_address_record()` 函数,但不记得它是如何工作的。可以使用 `%SYS.Python.Run()` 方法从终端输出函数的帮助,如下所示: ```java USER>set rslt = ##class(%SYS.Python).Run("from scourgify import normalize_address_record") USER>set rslt = ##class(%SYS.Python).Run("help(normalize_address_record)") Help on function normalize_address_record in module scourgify.normalize: normalize_address_record(address, addr_map=None, addtl_funcs=None, strict=True) Normalize an address according to USPS pub. 28 standards. Takes an address string, or a dict-like with standard address fields (address_line_1, address_line_2, city, state, postal_code), removes unacceptable special characters, extra spaces, predictable abnormal character sub-strings and phrases, abbreviates directional indicators and street types. If applicable, line 2 address elements (ie: Apt, Unit) are separated from line 1 inputs. . . . ``` `%SYS.Python.Run()` 方法在成功时返回 `0`,在失败时返回 `-1`。
文章
Claire Zheng · 十月 18, 2022

四则优秀案例分享:医疗数据大规模集成

在美国各地,当需要实现大规模的应用集成时,医疗行业的领导者会使用InterSystems HealthShare Health Connect®。无论是为了连接电子病历,还是为了提升床边护理决策能力,无论是为了创新远程医疗和远程护理,还是为了业务增长,亦或是为未来做准备,InterSystems和Health Connect随时准备好帮助您和您的组织实现目标。我们在此提供几个InterSystems医疗行业的集成实例以作示范。 案例一:大规模的互操作性有助于成功部署Epic 美国东北部的一个主要综合交付网络(IDN)的IT系统每年为13家医院、数千名临床医生和150万名患者提供服务。当该机构将其内部开发的临床和财务应用程序替换为Epic时,Health Connect的集成功能通过以下管理帮助其实现顺利过渡: •连接5000个医疗设备 •得益于基因组学、新的影像技术和互联设备,在Epic之外的数据量增长了225%(从20TB增长到65TB) •Epic与其他IT系统的接口数量增加了34% •Epic部署完成后,消息量增加了近330%(每天7300万) Epic和Health Connect共同将该机构的医疗护理协同和标准化提升到一个新的水平,并将成为未来创新的平台。 案例二:从15个集成引擎减少到1个,节省2100万美元 如果没有收购很多不同的软件系统,你就不可能成为美国前三的综合交付网络(IDNs)之一。这包括集成引擎,它可以通过数千个遗留接口连接所有东西。 当这个IDN决定在一个集成平台上进行整合时,团队意识到他们投资的不只是软件,而是大规模的项目迁移。在仅有4名开发人员的情况下,该机构在21个月内将2000多个接口转换和部署到InterSystems HealthShare Health Connect上,实现了替换7000个接口的目标。更重要的是,IDN有望为每个接口节省3000美元的开发成本,预计总成本为2100万美元。通过支持世界上最大的集中式集成项目之一,Health Connect正在确保该机构能够继续发展和扩大互联医疗业务。 IDN对竞争解决方案的评估突出了HealthShare Health Connect的一个主要优势——可快速转换为新的产品质量接口。 案例三:零停机部署HealthShare Health Connect,提前1年完成计划 当COVID-19大流行来袭时,美国东南部的某大学医疗中心正在用InterSystems HealthShare Health Connect替换其使用了30年的本土数据集成引擎。在这个过程中不允许出现停机或任何切断临床医生和研究人员获取患者重要数据的风险。 该医疗中心与InterSystems公司合作,提前一年完成了集成引擎的更换。IT团队将来自60个医疗机构的临床医生和来自300个数据接口的信息连接了起来,与此同时,临床医护人员却没有感知到他们每天使用的应用程序底层发生的任何变化。由于没有发生停机,在疫情日益严重的情况下所有医疗护理资源得到了充分应用。 案例四:规模化集成,实现业务增长和护理创新 在美国西部,一家大型IDN已经发展到包括23家实体医院、1家线上医院、215家诊所、6个州的远程医疗操作、1个保险计划和4万名护理人员。该机构使用InterSystems集成技术来实现和管理这种增长,同时保持其敏捷和创新。自2014年以来,InterSystems技术通过以下方式服务于IDN的使命和目标: •每月处理2.25 - 2.5亿笔交易,绝对可靠 •集成220个独立应用的数据 •在线上医院中,将电子病历与家庭设备连接,并应用于远程医疗 •使用FHIR标准与外部合作伙伴共享数据 •利用FHIR简化消费者门户网站的数据披露 •规模化
文章
Louis Lu · 四月 15, 2021

2020线上峰会 —— 第2天数据平台专题会议精彩回顾

我们刚刚结束了第二天的专题会议,会议内容精彩纷呈!虽然大家无法同时观看多个平行会议,但是线上会议有一个优势,那就是您可以根据自己的需要回看错过的内容! 在昨天的博客文章(第一天会议亮点)中,我介绍了大部分值得关注的公告,如 InterSystems IRIS Adaptive Analytics 和FHIR加速器服务等。所以,今天我想更宽泛地讨论一些战略主题。 运营和系统管理 现在,越来越多的客户业务已经运行在云端,也有越来越多的人开始在本地部署现代部署策略。Mark Bolinsky今天主持了两场背靠背会议:CL003 云存储策略和CL004 云备份策略,为使用云端生产工作的用户带来了很多技术细节。我们新推出的系统警报和监控(SAM)模块也得到了不错的反馈。相关内容请查看DEV007 系统警报和监控和CL005 分布式部署。另一个另广大开发者兴奋的消息是,集群监控现在可以轻松实现。在此感谢所有参与并提出问题的与会者! 安全性 在安全性方面,InterSystems一直受到客户和分析师的高度好评,不过大多数人会认为这样做是为了保持自身产品的安全。这当然是我们的一个目标,但是我们还添加了许多新的安全特性。今天的SEC000 OCSP装订就是一个典型的例子。虽然OCSP(在线证书状态协议)可提供更强的安全性,但也会影响浏览器性能。使用OCSP装订功能后,服务器会检查X.509证书的有效性,并将状态进行装订响应给浏览器,从而大幅缩短响应时间,并增强安全性。 机器学习 去年,我们发布了一款纯SQL的嵌入式机器学习工具——IntegratedML。现在,这一工具已被广泛应用。今天,Tom Dyar向大家介绍了这款工具的入门教程,并深入探讨了H2O和DataRobot的合作。昨天的内容还包括我们的早期采用者Baystate的用例。更多关于机器学习平台的最佳实践的内容将在明天为大家揭晓! 数据仓库和商业智能 为了让InterSystems IRIS能够更加成功地应用于分析用例中,我们做了大量投资,新的自适应分析产品只是其中的一项。Benjamin De Boe在会上概述了公司在数据仓库技术方面所做出的努力,并向大家介绍了我们SQL引擎的一些内部结构。在终端用户方面,Mark Massias介绍了我们为用户提供的自由选择——用户可以自由选择商业智能和报告工具,以便将数据仓库中的数据可视化。最后,Carmen Logue介绍了我们的合作伙伴——来自BioReference Labs的Mike Senatore,他们采用了我们新的“Selective Cube Build”功能,以最大限度地提高其InterSystems IRIS BI环境的可用性。明天会介绍关于我们与新技术合作伙伴Altheryx在该领域的更多合作内容! 开发人员对话 在今天的几个会议中,我们的开发人员介绍了几款将数据和应用程序导入IRIS数据平台的强大工具。Harry介绍了如何使用Change Data Capture这一现代技术在数据库之间进行数据迁移。如果您想要构建客户端应用程序,请查看Bob Kuszewki的指南:对象、关系和本机客户端Java API。说到应用程序开发,如果您想要构建和部署IRIS应用程序,那么Tim Leavitt主持的ZPM软件包管理器专题会议不容错过。 互操作性和FHIR Matt Spielman在FHIR展望专题会议中回顾了自2014年开始的InterSystems对FHIR技术的研究历史。他概述了未来两年的FHIR路线图,包括bulk FHIR和FHIR分析。随着FHIR的发展,FHIR的需求增长越来越多地来自客户,而InterSystems工程师的推动作用越来越小。 InterSystems在增强X12支持方面将继续投入大量资金。IP004:新的X12增强功能展示专题会议简短介绍了X12的新功能,并演示了一些值得关注的功能,包括SNIP Level 1和2验证以及专门针对X12的合并DTL支持功能。 Stefan Wittmann在IP003:HL7 Feeds助力高效运行专题会议中提前展示了HL7生产力工具包的最新功能。InterSystems IRIS现在能够根据入站和出站HL7v2消息生成DTL存根,支持接口开发人员采用迭代模式改进DTL和重新测试。我们希望此功能可以进一步提高生产力。另一个功能是将用户跨命名空间或安装实例对production进行修改成为可能,从而显着降低升级成本。 自InterSystems API Manager(IAM)问世一年多以来,许多合作伙伴已经使用了InterSystems IRIS数据库平台的这一新功能。所以今天的会议对IAM进行了更深入的介绍。IP002:快速入门InterSystems API Manager 为尚未探索IAM的人士提供了一次快速了解IAM主要功能的机会,并介绍了下一版本IAM 1.5.0.3将包含的新特性。Stefan还在IP001:IAM的最佳实践专题会议中探讨了实现高可用性并对API流量提供最佳粒度控制的方法。 未来活动 专题会议将于明天结束,我们期待会议取得圆满成功。会后大家仍然可以通过多种方式与我们互动。欢迎通过VS2020questions@InterSystems.com发送您的问题和反馈。您还可以在当天结束时参与现场问答环节,充分利用下周的学习和工作时间。 如果想深入了解您感兴趣的话题,最好的途径是参与我们的咨询专家活动。欢迎提前预约10月30日或11月2日由专家或培训师主持的相关会议! 今天的线上峰会上您最喜欢的内容是什么?请在下方的评论中告诉我们。 祝明天的会议顺利! Jeff
公告
Claire Zheng · 六月 16, 2021

6月19日直播报名 | 国内外互联互通标准解读与实践

为了解国内外最新的互联互通标准,共同助推我国卫生信息互联互通标准化成熟度测评工作,指导各地医院信息平台的建设,《中国卫生信息管理杂志》社决定召开国内外互联互通标准解读与实践线上交流会。会议由《中国卫生信息管理杂志》社主办,InterSystems中国协办,欢迎报名参会!
公告
Claire Zheng · 二月 22, 2021

版主招募进行时

大家好! InterSystems开发者社区中文版正在招募版主,以更好地推动中文社区建设,期待每一位开发者的积极参与,共同打造一个高效沟通的技术社区! 欢迎点击报名(或扫描下方二维码),审核通过后,我们会与您详细沟通版主权益及义务。 - 已经停止收集拉 没有停止收集,请直接扫码报名
问题
li liao · 八月 30, 2023

Caché 2016.1 CDC

参考 https://blog.csdn.net/InterSystems/article/details/115350635 搭建 mirror ,获取数据变更,示例给出了获取数据变更的代码: Class ZCustom.MirrorDejournal Extends SYS.MirrorDejournal{ Method RunFilter( MirrorDBName As %String, GlobalReference As %String, RecordType As %String, Address As %Integer) As %Integer{ Set ^CDCLog( $I($^CDCLog))=$lb(MirrorDBName,GlobalReference,RecordType,Address) Quit 1} 示例代码将变更存储在 global 对象 CDCLog 中,想请问下获取变更前后数据,发送到外部系统,有哪些方式? 可以参考我们的CDC系列文章https://cn.community.intersystems.com/node/491941,谢谢!
公告
Michael Lei · 四月 29, 2022

欢迎给我们提供创意!

我们很高兴向您介绍我们新的反馈门户网站--InterSystems Ideas! 我们的目标是改善我们的反馈机制,使您可以建议我们的产品如何发展以满足您的业务挑战。在开发者社区提问是与您的同行就特定的代码问题进行互动的好方法,而我们的客户支持网站WRC则一如既往地是解决实时问题的方法。 这个新的门户是为了获得您更高层次的想法。不是关于今天如何,更多是关于未来,您想看到我们的产品在未来如何更好地工作。您可以发布您自己的反馈,也可以对其他人提供的反馈进行评论/投票。InterSystems将查看你提交的任何反馈,直接回应你的反馈,并且如果您的建议有了任何进展,我们将及时更新状态。 所以,欢迎提出您的想法,为了我们共同的未来!谢谢!
公告
Claire Zheng · 十月 17, 2023

重要公告:征文大赛将延期至11月24日!欢迎继续投稿,参加InterSystems开发者社区中文版第二届技术征文大赛!

嗨,开发者们! 我们决定将🏆InterSystems开发者社区中文版第二届技术征文大赛 🏆的参赛时间延长至11月24日,请参赛者关注重要时间节点的变化。 📝 2023年9月19日-11月23日(北京时间),文章发布与点赞收集!在社区发布文章后即可开始为您的文章收集点赞。越早发布文章,就越有时间收集更多点赞(这是您获得“开发者社区奖”的关键)。 📝 2023年11月23日(北京时间),专家打分截止(专家提名奖)。 🎉 2023年11月24日(北京时间),公布获奖名单。 欢迎大家继续积极投稿,赢取大奖! 了解参赛规则及文章样例:点击此处 了解奖品详情:点击此处 欢迎投稿参赛! 快乐分享技术,期待您的大作!✨ 🏆InterSystems开发者社区中文版第二届技术征文大赛 🏆(←点击链接进入参赛页面,浏览所有参赛文章)
公告
Claire Zheng · 五月 24, 2021

CHIMA大讲堂第十九期“集成平台赋能智慧医院建设”将于5月27日开讲

5月27日,CHIMA大讲堂第十九期邀请医院信息化专家和InterSystems技术专家,共同探讨集成平台赋能智慧医院建设这一话题。欢迎大家围观参会!InterSystems专家演讲概要如下: 演讲人 李岩 ( @Li.Yan ),InterSystems中国业务拓展经理演讲主题构建更智慧的医院信息平台演讲概要在需求的拉动下和政策、标准的推动下,为了给患者提供更好的就医体验,给医务人员提供更好的临床服务,给管理者提供更好参考和手段,智慧医院的建设如火如荼地发展起来了。智慧医院的建设并不是某一应用、某一系统的点状建设,而是打通各个环节、各个系统的全面的建设。 作为医院系统互通的核心的医院信息平台,如何更加“智慧”,如何更好地赋能智慧医院建设?希望本期分享能为您带来一些启发。 演讲人 乔鹏 (@Qiao.Peng) ,InterSystems中国技术总监演讲主题从集成平台到医院信息平台演讲概要当前医院信息化建设是否需要一个集成平台?是不是仅仅因为互联互通才需要集成平台? 集成平台是否只是一个过渡性的产品?医院信息平台是集成平台的发展方向吗? 此次分享将和大家一起讨论这些问题,探究集成平台出现的原因、它的价值和不足,以及目前医疗信息化建设对集成平台的挑战。探讨医院信息平台作为集成平台的未来,它的核心价值、能力、设计思路和实施路径。 完整日程如下: 手机端请扫描图片中二维码,电脑端请复制下方链接观看。https://djt.chima.org.cn/ 欢迎大家报名、围观、参会! 陆主任会从目前平台建设存在的问题、平台框架选择、平台建设注意事项等全方位,多角度的介绍广医二院的医疗信息平台建设
文章
Qiao Peng · 四月 15, 2021

数据平台焦点会议第 3 天的亮点

圆满结束! 所有的专题会议都已经播出了。当然,我们全部102部预录制的专题会议现在可以点播了,您可以随意观看,即使您错过了现场问答的机会。 说到现场问答,我们已经举办了6次现场会议,您也可以观看。我之前写过一篇单独的博客文章,题目是如何让您的问题会帮助我们做得更好。 智能工厂启动包 今天备受关注的亮点之一是Intersystems IRIS智能工厂启动包在OpenExchange上发布。为此,我们的合作伙伴ITVisors和他们的客户Vlisco与我们的Joe Lichtenberg一起举办了一场精彩的会议“MFG001:介绍适用于制造业的InterSystems IRIS智能工厂启动包”。 容器和Kubernetes平台 今天我们宣布了一个高度安全的新版IRIS容器,名为“iris-lockeddown”,这个容器非常适合在Kubernetes中使用加固型pod安全策略的团队。说到Kubernetes,Steve Lubars演示了我们新的InterSystems Kubernetes Operator,它让您可以很轻松地在Kubernetes 中部署IRIS集群。而Luca Ravazzolo则演示了如何用CPF合并文件配置您的IRIS实例,特别是如何自动化进行镜像配置。还有其他一些有趣的问题。 以上精彩内容尽在对话Ontario Systems公司企业架构师Jim Howell中,讲述了他们从庞大的旧系统迁移到Kubernetes现代化微服务架构的经历。 更多分析: 如果您觉得我们在分析领域没什么可谈论和宣布的了,再想想!Sergey在“DA014平台内AI的最佳实践”中分享了我们对平台内AI的观点,以及如何通过IRIS协调机器学习操作从而实现持续集成和交付(CI & CD)。作为“分析”板块的压轴,Benjamin展示了我们采用Alteryx的新协作项目,其允许业务分析师和主题专家不需要编程就可以构建分析工作流,并且可以轻松地将他们的工作融合到IRIS中。观看“DA011使用Alteryx搭配IRIS打造您的分析工作流”,了解更多关于这项合作的详情。 更多VS Code - ObjectScript https://intersystems.6connex.com/event/virtual-summit/en-us/contents/434914/share?rid=FocusSessions&nid=851040 我在第1天的博客中谈过这个,今天我们再次更深入地探讨了最热门的话题之一:源代码控制,观看“DEE006使用Visual Studio Code进行ObjectScript开发:选择IDE/源代码控制组合”和“DEE005使用Visual Studio Code进行ObjectScript开发:服务器端源代码控制”。我还注意到人们深入探讨了实战实验室并给与了高度评价——值得一试! 让我感到特别兴奋的是,我们在保持这一社区作为真正的开源社区的同时,还能提供大量InterSystems核心开发周期和InterSystems的深度支持。请加入社区并将您的建议反馈给我们! 是的,更多关于FHIR的内容 我们的FHIR板块一直很棒,第3天也不例外。 Russ Leftwich展示了一部很棒的动画,这部动画描绘了FHIR从起源到如今的整个发展历程,其中包括了所有最新的InterSystems FHIR技术。“FH008 FHIR:为未来设计的医疗数据标准”20分钟的总结,是我见过的最棒的关于FHIR的总结。 Kurt Dawn介绍了InterSystems客户非常关注的热门话题FHIR Profiles。他展示了如何将用于实现规范的FHIR包轻松导入IRIS医疗版。Jeff Morgan的IRIS医疗版中的FHIR实现模式演示了如何使用带生产和定制逻辑的FHIR服务器——高级开发者肯定想了解一下。 持续学习 还有很多其他的会议我没有提到;我建议大家去会议网站搜索自己感兴趣的话题——您可以看到所有板块的专题会议,演示区的各种演示,以及资源区的各种内容。 如果您先想看看亮点,然后再选择观看其他内容,您可以查看我的第1天和第2天总结,我们的紧密合作伙伴J2也一直在发布每日精彩回顾(查看J2第1天专题会议的精彩回顾和第2天专题会议的精彩回顾) 请教专家是深入了解任何您感兴趣的主题的好方法。现在预约10月30日或11月2日与专家或培训师会面也不迟!而且下周是实验室周——可以尝试实战实验室!您可以选择Office Hours以及On-Demand和Live Labs。 感谢参与我们的首次线上峰会! 您可以在下面评论或通过任何您喜欢的方式告诉我们您的想法。 查看原帖 由 @Jeff Fried 撰写
文章
Lele Yang · 二月 2, 2023

停止提供内置Apache Web 服务器(也称为私有 Web 服务器 (PWS))

正如之前在 2022 年全球峰会上宣布的那样,InterSystems 将停止交付或安装基于 Apache 的web服务器(通常称为私有web服务器或 PWS);此更改目前计划用于 InterSystems IRIS 2023.2。 使用这种新方法,您可以完全控制选择最适合您目的的 Web 服务器,以及如何配置、维护和更新它。这一变化的一个主要好处是您将不再需要等待 InterSystems 的更新套件来获得最新版本,这在安全漏洞情况下尤其重要。 InterSystems 将提供可用于帮助配置 Apache 或 IIS 的工具。 (请注意,InterSystems IRIS Community Edition 将继续安装 PWS。) 安装 Web 服务器是一个常见的过程,通常很容易 - 各个 Web 服务器供应商都有详细的文档记录。 以下是适用于 Ubuntu、Windows 和 macOS 的示例。它们演示了快速安装,因此您可以看到当 InterSystems 产品不包含或安装 Web 服务器时的新行为。 (请注意,此代码按原样提供,不受支持,也不足以托管关键任务或数据敏感的应用程序。) 提供了常见问题解答,其中提供了更多信息并可访问用于尝试此新过程的工具包。请参阅本文末尾链接的 PDF 以获取常见问题解答,或者如果您想添加到讨论中,请访问https://community.intersystems.com/post/discontinue-apache-web-server-installations-faq 。 安装 Web 服务器通常有多种方法,请选择您熟悉且最适合您的方法。 已为希望试用不包含 PWS 的新安装程序的客户创建了一个新的抢先体验计划 (EAP)。如果您希望成为此 EAP 的一部分并访问这些工具包,请发送电子邮件至 nopws@InterSystems.com 。 如需反馈或疑虑,请通过nopws@InterSystems.com联系我们。 以下是 Microsoft Windows 的示例: 使用 Microsoft Windows 安装 IIS。 安装后,您可以安装 InterSystems IRIS,它将询问用户是否应配置 IIS。 下面是一个使用 Ubuntu 的例子: 先决条件:允许用户使用 sudo,Ubuntu 操作系统,未安装 PWS 对于 Ubuntu,Apache 的官方存储库可以与 apt-get 命令一起使用。 更新存储库 $ sudo apt-get update 安装Apache $ sudo apt-get install apache2 验证是否已安装 $apache2 -v 安装 InterSystems IRIS 使用 SMP 进行测试 ( http://localhost/iris/csp/sys/UtilHome.csp ) 如果您只是出于测试目的安装了 apache2,您可以使用以下命令删除 apache2: $ sudo apt-get remove apache2 这是一个使用 macOS 的示例: 安装 $ brew install apache-httpd 在升级或安装后重新启动 httpd: $ brew services restart httpd 通过使用启动它 sudo apachectl -k start 或使用重新启动它 $ sudo apachectl -k restart 测试它是否通过将您的浏览器定位到 http://localhost:8080 它应该显示:"It works" 安装 IRIS(请注意新的安装对话框,因为它是新的) 重新启动web服务器 $ sudo apachectl -k restart 使用 SMP 进行测试 ( http://localhost:8080/iris/csp/sys/UtilHome.csp ) 如果您只是出于测试目的安装了 apache-http,您可以使用以下命令删除 apache-http: $ brew remove apache-httpd 删除 Apache 相关设置或安装 请小心删除设置或配置,并自行承担使用风险。 删除单个实例的 apache httpd 配置。 找到 Apache httpd.conf 文件。它的位置取决于平台: macOS:/usr/local/etc/httpd/httpd.conf SuSE Linux: /etc/apache2/httpd.conf 红帽 Linux:/etc/httpd/conf/httpd.conf Ubuntu Linux: /etc/apache2/apache2.conf AIX:/opt/freeware/etc/httpd/conf/httpd.conf_64(如果使用 64 位 httpd) /opt/freeware/etc/httpd/conf/httpd.conf(如果使用 32 位 httpd) 以 root 身份编辑 httpd.conf 并在文件末尾删除以下部分,从 #### 开始-ApacheCSP-SECTION-<INSTANCENAME> #### 开始结束于 #### 开始-ApacheCSP-SECTION-<INSTANCENAME> ####。 使用命令“sudo apachectl -k restart”重新启动 Apache 要删除单个实例的 Web Gateway 配置: 如果更改了 WebGateway 安装目录的默认目录,请使用以下说明中的适当路径。 以 root 身份编辑 /opt/webgateway/conf/CSP.ini 并删除以下行: 在“[SYSTEM_INDEX]”部分中删除行 <INSTANCENAME>=Enabled 在“[APP_PATH_INDEX]”部分中删除行“/<nstancename>=Enabled” 删除部分“[APP_PATH:/<instancemame>]” 从所有 IRIS 实例中清除 Apache httpd: Apache配置 找到 Apache httpd.conf 文件。它的位置取决于平台: macOS:/usr/local/etc/httpd/httpd.conf SuSE Linux: /etc/apache2/httpd.conf 红帽 Linux:/etc/httpd/conf/httpd.conf Ubuntu Linux: /etc/apache2/apache2.conf AIX:/opt/freeware/etc/httpd/conf/httpd.conf_64(如果使用 64 位 httpd) /opt/freeware/etc/httpd/conf/httpd.conf(如果使用 32 位 httpd) 以 root 身份编辑 httpd.conf 并在文件末尾删除以下所有部分,以 #### 开始-ApacheCSP- 开始并结束于 #### 结束 ApacheCSP 使用命令“sudo apachectl -k restart”重新启动 Apache 要从所有 IRIS 实例中清除 Web Gateway: 要删除单个实例的 Web Gateway 配置: 如果更改了 WebGateway 安装目录的默认目录,请使用以下说明中的适当路径。 sudo rm -rf /opt/webgateway sudo rm -f /usr/local/etc/irissys/CSP_options PWS Removal FAQ
文章
Johnny Wang · 二月 6, 2022

翻译文章-数据迁移工具 - 第二部分:从My SQL到IRIS

本文是上一篇关于如何从流行数据库(如 PostgreSQL 和 MySQL)迁移到 IRIS 的后续文章。 我们将使用与从 PostgreSQL 迁移相同的过程。 但是,您会发现它更容易,因为 MySQL 中的数据类型与 IRIS 非常相似。 这就是为什么我们不需要在列中创建转换规则。 获取示例数据到迁移过程 在 GitHub 中,可以下载 docker-compose 项目来构建和运行 2 个数据库: 源数据库:带有示例数据库的 MySQL 数据库 Docker 实例。 目标数据库:InterSystems IRIS 数据平台 Docker 实例,具有用于接收源数据库的现成模式。 要获取示例并运行它,请执行以下步骤: 转到 git 存储库 https://github.com/yurimarx/migration-mysql-iris。 克隆项目:https://github.com/yurimarx/migration-mysql-iris.git。 转到项目文件夹migration-mysql-iris。 进行构建:docker-compose build。 执行容器:docker-compose up -d。 如果一切正常,请使用实例检查您的 docker 桌面: 关于要迁移的数据 要迁移的数据与第一部分中使用的数据模型相同,在这里表示: 所以,从 MySQL 到 IRIS 的迁移过程会迁移: 8张表 5000行销售数据。 2500 行用户数据。 200 行产品数据。 50行商店数据。 100行国家数据。 30行城市数据。 5 行 status_name。 迁移目标将是 InterSystems IRIS 数据库中 USER 命名空间内的 dc_test 模式。 从 MySQL 迁移到 IRIS 的开源工具:DBeaver 在第一部分中,我们使用 DBeaver 社区版进行迁移。 我们将再次使用它。 DBeaver 是一个数据库工具,用于连接、创建、删除、选择、更新和删除市场上主要数据库产品中的数据对象。 从以下网址下载:https://openexchange. intersystems.com/package/DBeaver。 现在按照安装说明将这款出色的产品安装到您的笔记本电脑或台式机中。 DBeaver 可用于在数据库连接之间迁移数据,即使它们来自不同的制造商和版本。 使用 DBeaver 连接源数据库和目标数据库 现在我们将设置要迁移的数据库连接。 设置 MySQL 到 DBeaver 的连接: 1. 在 DBeaver 中,转到文件 > 新建。 2. 选择数据库连接并单击下一步: 3. 选择 SQL 选项卡 > MySQL,然后单击下一步: 4. 填写 Main 选项卡中的 MySQL 连接字段,如下图所示: 主机:本地主机 端口:3306 数据库:db 用户名:user 密码:密码 5. 转到驱动程序属性选项卡并将 allowPublicKeyRetrieval 设置为值 TRUE: 6. 在驱动程序属性选项卡中继续,并将 useSSL 设置为值 FALSE: 7. 如果 DBeaver 请求下载 MySQL 驱动程序,请按 Yes 或 OK。 8. 单击完成。 设置 InterSystems IRIS 与 DBeaver 的连接: 在第一部分中,您配置了 IRIS 连接,但如果您没有保存它,请执行以下操作: 1. 在 DBeaver 中,转到文件 > 新建。 2. 选择数据库连接并单击下一步: 3. 选择 SQL 选项卡 > InterSystems IRIS 并单击下一步: 4. 如果 DBeaver 请求下载 InterSystems IRIS 驱动程序,请按 Yes 或 OK。 5. 设置 InterSystems IRIS 连接字段,如下图所示: 主机:本地主机 数据库/架构:用户 用户名:_SYSTEM 密码:SYS 单击文本连接并完成。 连接(db 和 user)在 Database Navigator 中可用: 进行迁移 迁移过程与第一部分中描述的非常相似。只需按照以下步骤操作: 1. 展开 db connection > Databases > db > Tables 并选择所有表。 在选定的表上单击鼠标右键,然后选择导出数据,如下图所示: 2. 选择数据库,如图所示,然后单击下一步: 3. 单击选择按钮: 4. 选择 dc_test 并点击 OK(注:如果您需要在目标和源列之间创建高级转换,请点击 Columns 按钮)。 5. 现在,单击下一步。 6. 将 Fetch size 设置为 1000000,然后单击下一步。 7. 接受数据加载设置中的默认值,然后单击下一步。 8. 在确认中单击继续。 9. 现在,如果您打开 Database Navigator,您将能够看到 InterSystems IRIS dc_test 模式中的所有 MySQL 表。 就像 PostgreSQL 迁移一样,MySQL 迁移过程对于表来说非常简单。 但是,对于视图、函数、触发器和存储过程,您需要使用 ObjectScript 或 SQL 重写 SQL 源代码。 请跟第一篇连起来形成系列,谢谢!
文章
姚 鑫 · 九月 13, 2022

第三十一章 管理许可(四)

[toc] # 第三十一章 管理许可(四) ## 显示本地许可证信息的方法 下面列出的子例程转储实例共享内存中本地包含的许可证表的内容。一般来说,他们识别客户: `$System.License.DumpLocalAll` 将所有本地许可证表条目转储到当前目录中的 `all.dmp` 文件中: ```java USER> Do $System.License.DumpLocalAll() 25 条目转储到 c:\intersystems\irishealth\mgr\user\all.dmp ``` `all.dmp` 文件的内容示例: ![image](1A9A88C990F34F43A3BD77FEDC1F933F) `$System.License.DumpLocalInUse` 将所有正在使用的本地许可证表条目转储到当前目录中的 `inuse.dmp` 文件: ```java USER> Do $System.License.DumpLocalInUse() 2 条目转储到 c:\intersystems\irishealth\mgr\user\inuse.dmp ``` `inuse.dmp` 文件内容示例: ![image](F20698F5E3FF4303BBB43608AB0C58AD) `$System.License.DumpLocalPID` 将进程 `ID` 使用的本地许可证表转储到当前目录中的 `piduse.dmp` 文件中: ```java USER> Do $System.License.DumpLocalPID() 33 条目转储到 c:\intersystems\irishealth\mgr\user\piduse.dmp ``` ![image](EF5E73E9B2814D6E9E35EB45BC4CFAFE) ## 显示许可证服务器信息的方法 以下子例程转储许可证服务器维护的许可证表的内容。输出文件位于运行活动许可证服务器的主机上的指定目录中。 `$System.License.ShowSummary` 显示许可证服务器上的许可证信息摘要。分布式许可证使用部分提供许可证服务器当前支持的所有 `IRIS` 实例的许可证使用的集体视图。本地许可证使用部分展示了运行程序的单个 `IRIS` 实例的许可证使用视图: ```java USER> Do $System.License.ShowSummary() 软件许可服务器活动密钥摘要视图. 分布式软件许可使用: 当前使用的软件许可单元 = 2 使用的最大软件许可单元数 = 2 授权的软件许可单元 = 25 本地软件许可使用: 当前连接 = 2 最大连接数 = 6 当前用户 = 2 最大用户数 = 3 ``` `$System.License.DumpServer` 将与运行此例程的服务器相关的许可服务器数据库信息转储到运行许可服务器的主机上的文件 `dumpserver.txt` 中: ```java USER> Do $System.License.DumpServer() License server database dumped to: c:\intersystems\irishealth\mgr\dumpserver.txt at LAPTOP-ARLL3DSO ``` ![image](91029303049146BEB37C8B99303CC7EA) `$System.License.DumpServers` 将所有已知服务器的许可证服务器数据库信息转储到运行许可证服务器的主机上的文件 `dumpservers.txt` 中: ```java USER> Do $System.License.DumpServers() 1 server database[s] dumped to: c:\intersystems\irishealth\mgr\dumpservers.txt at LAPTOP-ARLL3DSO ``` ![image](E192C3B466DB41C6BF6105C102A9FDE1) `$System.License.DumpKey` 将此实例和共享它的实例使用的密钥转储到运行许可证服务器的主机上的文件 `dumpkey.txt` 中: ```java USER> Do $System.License.DumpKey() License server Client data dumped to: c:\intersystems\irishealth\mgr\dumpkey.txt at LAPTOP-ARLL3DSO ``` ![image](8F12D1DD7F8343D1AF364C4EA70795E2) `$System.License.DumpKeys` 转储所有密钥,将使用它们的实例和客户端显示到运行许可证服务器的主机上的文件 `dumpkeys.txt` 中: ```java USER> Do $System.License.DumpKeys() License server Client data (1 key[s]) dumped to: c:\intersystems\irishealth\mgr\dumpkeys.txt at LAPTOP-ARLL3DSO ``` ![image](4332B2E4448343F9B86ED55EB2AC5109) 注意:请注意,本地许可方法显示的信息比许可服务器方法显示的信息更新;许可证服务器只定期更新,而本地数据是实时的。 可能会暂时超出许可限制,因为登录是在本地控制的,但许可服务器会强制执行该限制。每个实例根据其在实例共享内存中维护的本地许可证表允许或拒绝登录。每个实例都会定期向许可证服务器发送更新,描述本地许可证表的更改。如果所有实例的组合许可证使用超过限制,则许可证服务器将发送否定确认以更新来自每个实例的消息。 这种否定确认会导致每个实例拒绝新的登录,因为没有额外的许可单元可用。当尝试启动的 `IRIS` 进程的许可用户 `ID` 与任何当前进程的许可用户 `` 不匹配时,登录被视为新登录。这种状态一直持续到所有实例的组合使用量低于授权限制,此时许可证服务器开始发送肯定确认以响应实例更新。然后各个实例允许新的登录。