搜索​​​​

清除过滤器
公告
Claire Zheng · 八月 28, 2023

2023 SUTA培训报名启动啦!

SUTA培训是InterSystems专为SUTA有效期客户提供的原厂产品技术服务,具体包括产品的基础管理、编程管理、高级管理和开发培训等。2023 SUTA培训报名现已启动,汇聚技术专家,与新老客户一起探讨提升InterSystems数据平台基础管理运维的技能和知识: 新客户:系统学习管理运维工作的整体架构和基础概念 老客户:更加深入和全面地加强对管理运维工作的理解和提升 常见运维问题解析:助力您轻松应对日常工作中的问题和挑战 现场互动答疑:体验InterSystems技术专家的一对一诊断指导 点击此处,了解培训详情,报名参会(扫描下图中的二维码报名)。请关注InterSystems微信公众号,及时获取开播信息。 快来报名吧!
公告
Michael Lei · 八月 17, 2023

InterSystems 支持的平台更新 Q3-2023

我们经常收到有关 InterSystems IRIS 数据平台支持的平台和框架列表最近和即将发生的更改的问题。此更新旨在分享最近的变化以及我们对即将发生的变化的当前最佳知识,但预测未来是一件棘手的事情,这不应被视为承诺的路线图。 话虽如此,接下来是更新…… IRIS 生产环境操作系统和 CPU 架构 红帽Linux企业版RHEL 近期变动 RHEL 9.2 和 RHEL 8.8 于 2023 年 5 月发布。红帽计划为这些版本提供 4 年支持。 InterSystems 已通过我们称为“次要操作系统版本认证”的新流程完成了对 RHEL 9.2 和 RHEL 8.8 上的 IRIS 的额外测试,该流程旨在提供额外的安全性,确保次要操作系统更新不会破坏任何明显的功能。 RHEL 8.8 和 9.2 都成功通过了我们的测试。 随着 RHEL 9.2 的发布,红帽终止了对 RHEL 9.1 的公开支持。这与 Red Hat 自 RHEL 8.3 以来一直使用的“奇/偶”支持周期一致。 即将发生的变化 RHEL 9.3 计划于今年晚些时候推出。这将是 Red Hat 的短期支持版本,因此 InterSystems 不会执行次要操作系统认证或推荐将其用于生产部署。 之前的更新 IRIS 2022.1.2 添加了对RHEL 9.0的支持。 9.0 是一个主要操作系统版本,将 Linux 内核更新到 5.14、OpenSSL 更新到 3.0 以及 Python 3.9 IRIS 2022.2.0 删除了对 RHEL 7.x 的支持。早期版本的 IRIS 仍支持 RHEL 7.9。 进一步阅读: RHEL 发布页面 Ubuntu 近期变动 Ubuntu 分别于 2 月和 3 月发布了 22.04.2 LTS 和 20.04.6 LTS。 InterSystems 已通过次要操作系统版本认证,在 22.04.02 LTS 上完成了对 IRIS 的额外测试。 即将发生的变化 Ubuntu 的下一个主要更新是 24.04,预计将于 2024 年 4 月发布 之前的更新 IRIS 2022.1.1 添加了对Ubuntu 22.04 的支持。 22.04 是一个主要操作系统版本,将 Linux 内核更新到 5.15、OpenSSL 更新到 3.0.2 以及 Python 3.10.6 IRIS 2022.2.0 删除了对 Ubuntu 18.04 的支持。早期版本的 IRIS 仍支持 Ubuntu 18.04。 IRIS 2022.1.1 及更高版本容器基于 Ubuntu 22.04。 进一步阅读: Ubuntu 发布页面 SUSE Linux 即将发生的变化 SUSE Linux Enterprise Server 15 SP5 于 2023 年 6 月 20 日发布。SP5 包括 Linux Kernel 5.14.21、OpenSSL 3.0.8 和 Python 3.11。我们目前正在致力于次要操作系统认证。 之前的更新 IRIS 2022.3.0 添加了对SUSE Linux Enterprise Server 15 SP4的支持。 15 SP4 是一个主要操作系统版本,将 Linux 内核更新到 5.14、OpenSSL 更新到 3.0 以及 Python 3.9 SUSE 对 Linux Enterprise Server 15 SP3 的一般支持已于 2022 年 12 月 31 日结束,但扩展安全支持将持续到 2025 年 12 月。 延伸阅读: SUSE 生命周期 甲骨文Linux 即将发生的变化 Oracle 与 RHEL 9.2 几乎同时发布了 Oracle Linux 9.2,这让我们感到惊讶。我们目前正在开始次要操作系统认证。 之前的更新 IRIS 2022.3.0 增加了对Oracle Linux 9的支持。 Oracle Linux 9 是跟踪 RHEL 9 的主要操作系统版本,因此它也将 Linux 内核更新到 5.14、OpenSSL 更新到 3.0 以及 Python 3.9 进一步阅读: Oracle Linux 支持政策 微软Windows 即将发生的变化 Windows Server 2012 将于 2023 年 10 月结束扩展支持。如果您仍在该平台上运行,那么现在是计划迁移的时候了。 IRIS 2023.2+ 将不适用于Windows Server 2012。 之前的更新 自 IRIS 2022.1 中添加 Windows Server 2022 以来,我们没有对支持的 Windows 版本列表进行任何更改 延伸阅读: 微软生命周期 AIX 即将发生的变化 InterSystems 正在与 IBM 密切合作,增加对 OpenSSL 3.0 的支持。这不会包含在 IRIS 2023.2.0 中,因为 IBM 需要在进一步的 TL 版本中针对该功能。好消息是,IBM 正在寻求针对 AIX 7.2 和 7.3 发布 OpenSSL 3.0,而且时间看起来应该与 IRIS 2023.3 一致。 之前的更新 自 IRIS 2022.1 中添加 AIX 7.3 并删除 7.1 以来,我们没有对支持的 AIX 版本列表进行任何更改 延伸阅读: AIX 生命周期 容器Container 即将发生的变化 IRIS 容器将仅标记年份和版本,例如“2023.2”,而不是我们过去使用的完整版本号。这样,您的应用程序就可以默认获取您版本的最新维护版本。 我们还为最新的扩展维护和持续分发 IRIS 版本添加了“latest-em”和“latest-cd”标签。这些对于演示、示例和开发环境很有用。 我们还将开始使用“-preview”标记预览容器,以便清楚哪个容器是最新的 GA 版本。 之前的更新 我们现在正在发布 IRIS 容器的多架构清单。这意味着拉取标记为2022.3.0.606.0的 IRIS 容器将为您的计算机的 CPU 架构(Intel/AMD 或 ARM)下载正确的容器。 IRIS 开发环境操作系统和 CPU 架构 苹果系统 近期变动 我们在 IRIS 2023.1 中添加了对 MacOS 13 的支持 即将发生的变化 Apple 预计 MacOS 14 将于 9 月发布 GA,随后可能会在 IRIS 2024.1 中提供 IRIS 支持 CentOS 自 IRIS 2023.3 起,我们将取消对 CentOS/CentOS Stream 的支持。 红帽多年来一直在运行开发人员计划,该计划使开发人员能够获得非生产环境的免费许可证。鼓励当前使用 CentOS 的开发人员通过此计划切换到 RHEL。 CentOS Stream 现在是 RHEL 的“上游”,这意味着它具有 RHEL 中尚未包含的错误和功能。它还每天更新,这可能会给在平台上构建的开发人员带来问题(更不用说我们自己的测试人员了)。 自从我们在 IRIS 2022.1 中添加了对 CentOS 8-Stream 的支持并删除了对 CentOS 7.9 的支持以来,我们没有对受支持的 CentOS 版本列表进行任何更改 InterSystems组件 InterSystems Kubernetes 运营管理器 (IKO) IKO 3.6 于上周发布。 Caché & Ensemble 生产操作系统和 CPU 架构 之前的更新 Cache 2018.1.7 增加对 Windows 11 的支持 InterSystems 支持的平台文档 InterSystems 支持的平台文档是有关受支持技术的权威源信息。 IRIS 2023.1 支持的服务器平台 IRIS 2022.1 支持的服务器平台 IRIS 2021.1 支持的服务器平台 Caché & Ensemble 2018.1.7 支持的服务器平台 以上是全部。再次提醒大家,如果您还想了解更多信息,请告诉我们。
公告
Claire Zheng · 八月 16, 2023

2023 InterSystems开发者竞赛:Python 编程大赛

嗨,开发者, 我们很高兴邀请大家参加新的以 Python 为主题的 InterSystems 在线编程竞赛! 🏆 InterSystems Python 编程大赛🏆 时间: 2023年9月4日至24日(美国东部时间) 奖金池: 14,000 美元 话题 我们邀请您在新的编程竞赛中使用Embedded Python !也欢迎您使用Native API for Python或PEX for Python 开发应用程序。 提交一个开源的应用程序,通过InterSystems IRIS或InterSystems IRIS for Health(医疗版)使用嵌入式Python或原生Python API或Python PEX。 一般要求: 有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。 该应用程序应在 IRIS Community Edition 或 IRIS for Health Community Edition 上运行。两者都可作为host (Mac, Windows)版从Evaluation Site下载,或者可以按从InterSystems Container Registry或Community Container中提取的容器形式使用: intersystemsdc/iris-community:latest 或 intersystemsdc/irishealth-community:latest 。 该应用需开源并在GitHub上发布。 该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。 一名开发者只允许提交 3 份作品。 奖品 1. 专家提名奖(Experts Nomination)——获奖者由我们特别挑选的专家团选出: 🥇第一名 - 5,000 美元 🥈第二名 - 3,000 美元 🥉第三名 - 1,500 美元 🏅第四名 - 750 美元 🏅第五名 - 500 美元 🌟第 6-10 位 - 100 美元 2. 社区提名奖(Community Nomination)- 获得总票数最多的应用程序: 🥇第一名 - 1,000 美元 🥈第二名 - 750 美元 🥉第三名 - 500 美元 🏅第四名 - 300 美元 🏅第五名 - 200 美元 如果几位参与者获得相同数量的选票,他们都将被视为获胜者,奖金由获胜者分享。 谁可以参加? 任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个! 👥开发人员可以组队创建协作应用程序。一个团队允许 2 到 5 名开发人员。 请注意,要在您的README文件中标注您的团队成员——社区用户profil 重要截止日期: 🛠 应用程序开发和注册阶段: 2023 年 9 月 4 日(美国东部时间 00:00):比赛开始。 2023 年 9月 17日(美国东部时间 23:59):提交截止日期。 ✅ 投票时间: 2023 年 9月 18 日(美国东部时间 00:00):投票开始。 2023 年 9月 24 日(美国东部时间 23:59):投票结束。 注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应 资源助力 1. 使用 InterSystems IRIS 开发 Python 应用程序: Learning Path Writing Python Application with InterSystems Embedded Python Documentation Native API for Python Documentation PEX Documentation 2. ObjectScript Package Manager (IPM)初学者: How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS Package First Development Approach with InterSystems IRIS and ZPM 3. 如何将您的APP提交给大赛: 如何在 Open Exchange 上发布应用程序 如何提交比赛申请 4. 应用示例: embedded-python-template interoperability-python interoperability-python-template pex-demo python-examples django-iris-template Python Faker 5. 视频: Introduction to Embedded Python Embedded Python: Bring the Python Ecosystem to Your ObjectScript App Embedded Python for ObjectScript Developers: Working with Python and ObjectScript Side-By-Side Embedded Python with Interoperability InterSystems IRIS Native Python API in AWS Lambda 需要帮忙? 加入 InterSystems Discord 服务器上的竞赛频道或在本文评论中与我们交谈。 期待您的精彩提交 - 加入我们的编码大赛吧!来赢得胜利! ❗️参加本次比赛即表示您同意此处列出的比赛条款。请在继续之前仔细阅读它们。 ❗️
文章
Weiwei Gu · 八月 14, 2023

调试管理门户加载图片失败的原因

在提交的 WRC case中(Intersystems 全球技术支持响应中心),我们经常看到客户提出有关新 Web 网关设置的问题,其中管理门户加载一半,但不显示图像。本文将解释为什么会出现此错误,以及如何修复它。本说明主要针对服务 InterSystems IRIS 实例的 Web 网关,但相同的说明也应适用于服务 Caché 实例的 CSP 网关。 问题: 您刚刚在独立的 Web 服务器上安装了 Web Gateway。当你去加载管理门户时,你发现它无法显示或加载图像,如下所示: 为什么会发生这种情况: 问题是,为了完整加载管理门户,InterSystems IRIS 必须加载许多 .js、.css 和 .png 文件(静态文件)。如果您看到像上面这样的管理门户页面,请随时打开浏览器的开发人员工具小程序,导航到“网络”选项卡,并确认未提供各种 .js、.css 和 .png 组件: 最初安装 Web Gateway 时,我们仅为以下扩展设置映射: .csp .cls .zen .cxw 这些是客户在自己的自定义应用程序中最常使用的文件扩展名类型,以及用于为 Web Gateway 管理门户提供服务的 .cxw 扩展名。如果您想要加载其他管理门户组件,则必须注册其他文件类型以由 Web 网关提供服务。 如何解决该问题: 要使管理门户完全显示,您必须配置 Web 网关以提供其他文件类型。对于 IIS,您可以为 .js、.png、.css 等扩展名添加单独的映射,也可以添加通配符映射。可以在此处找到有关注册 IIS 的其他文件类型的文档:https: //docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls ?KEY=GCGI_win#GCGI_registering 如果您在 Unix / Linux 系统上的 Apache 之上运行 Web Gateway,您有几个选择。您可以通过添加其他文件扩展名(如 IIS 上的情况)来配置此功能,也可以添加 CSP 位置指令。请参阅此处的文档了解完整详细信息: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls ?KEY=GCGI_ux,位于“使用 CSP 注册其他文件类型”下
文章
Michael Lei · 八月 10, 2023

如何比较两个数据库中的多个Global和Routines

InterSystems 常见问题解答 ※如果您想比较使用Mirror、Shadow或其他机制复制的数据库,请使用此方法。 您可以使用 DATACHECK 实用程序来比较Global。请参阅下面的文档。DataCheck 概述 [IRIS] *** Routines比较使用系统例程 %RCMP 或管理门户。 以下是如何在管理门户中使用它。 例如,假设以下Routine位于 USER 命名空间中。 test() public{ quit "hello" } 假设以下Routine位于 USER2 命名空间中。 test() public{ quit "Hello" } 下面是在连接到 USER 命名空间的终端中运行 %RCOM 的结果。 * 在Compare : 中写入Routine名称以及要与: 进行比较的Routine名称要指定另一个命名空间中的Routine,请指定|“命名空间名称”|例程名称.MAC。 用户>执行 ^%RCMP比较:comptest.mac 与:|"USER2"|comptest.macCompare: // [备注] 如果没有可比较的内容,请按 Enter忽略评论差异?否 => 否忽略前导空格?否 => 否显示结果于Device: c:\temp\comp.txt // [备注] 指定文件名时的文件输出 参数? (“WNS”)=>comptest.MAC |“USER2”|comptest.MAC****************************************************** ******************************用户> 对比结果如下。 常规比较 2021 年 2 月 2 日 2:31 PM来自目录:c:\intersystems\iris\mgr\user\ comptest.MAC |“USER2”|comptest.MAC****************************************************** ******************************竞争测试.MAC+2 退出“你好”......................|“USER2”|comptest.MAC+2 退出“你好”****************************************************** **************************
文章
Weiwei Gu · 八月 7, 2023

如何自定义 Web 网关错误消息

InterSystems 常见问题解答标题 您可以为以下 Web Gateway 错误消息/系统响应设置单独的错误页面: 服务器错误 服务器繁忙 服务器无法使用 服务器超时 连接关闭 在 Web Gateway 管理界面上进行设置([Management Portal] > [System Administration] > [Configuration] > [Web Gateway Management] > [Configuration] > [Default Parameters])。 在“默认参数”(Default Parameters )菜单的“错误页面”部分中,设置要显示的 html 页面的文件名或发生错误时要重定向到的 URL。 ※Web网关管理界面也可以从以下URL访问。 http://<web server address>:<port>/csp/bin/Systems/Module.cxw 详细信息请参考以下文档自定义错误页面 [IRIS]
公告
Michael Lei · 八月 7, 2023

开发者圆桌在线论坛:医疗行业中的生成式人工智能用例

大家好, 与我们一起参加 8 月 31 日上午 10 点(美国东部时间)在线开发者圆桌会议,讨论医疗保健中的生成式 AI 使用案例。学习医疗保健领域的用例+参考架构,并观看关于大语言模型的Demo演示。我们将像往常一样有时间进行问答和公开讨论。 通过开发者社区Global Masters报名。 演讲者: @Nicholai.Mitchko ,InterSystems 解决方案合作伙伴销售工程师经理 背景: Nicholai 在 InterSystems 管理着一支由 10 名解决方案工程师组成的团队,帮助医疗保健公司大规模设计、开发和交付解决方案。在业余时间,Nicholai 致力于大型语言模型的研究,包括开发自己的模型,这些模型出现在Huggingface OpenLLM 排行榜上。 还不是Global Master会员?使用您的 InterSystems SSO (开发者社区帐号)登录。
文章
Weiwei Gu · 八月 4, 2023

InterSystems IRIS 中创建具有超过 999 个属性的类/表

InterSystems IRIS 目前将类限制为 999 个属性。 但是,如果您需要为每个对象存储更多数据该怎么办? 本文将回答这个问题(附加了社区 Python 网关的客串以及如何将广泛的数据集传输到 Python 中)。 答案其实很简单 - InterSystems IRIS 目前将类限制为 999 个属性,但不限制 999 个基元(primitives)。 InterSystems IRIS 中的属性可以是具有 999 个属性的对象等等 - 该限制很容易被忽略。 方法1 . 每个序列属性存储 100 个属性。首先创建一个存储一百个属性的存储类。 Class Test.Serial Extends %SerialObject { Property col0; ... Property col99; } 并在您的主类中添加您需要的尽可能多的属性: Class Test.Record Extends %Persistent{Property col00 As Test.Serial; Property col01 As Test.Serial;... Property col63 As Test.Serial;} 这会立即将您的限制提高到 99900 个属性。 这种方法通过 SQL 和对象层提供对所有属性的统一访问(我们总是通过其编号来了解属性引用)。 方法2 。 一个 $lb 属性: Class Test.Record Extends %Persistent{Property col As %List;} 这种方法更简单,但不提供显式的列名称。 使用 SQL $LIST* 函数访问列表元素。 方法3 。 使用集合(列表/数组)属性。 Class Test.Record Extends %Persistent{Property col As List Of %Integer;} 此方法也不为各个值提供显式的列名称(但您真的需要它吗?)使用属性参数将属性投影为 SQL 列/表。 集合属性的文档。 方法4 。 根本不要创建属性并通过 SQL 存储过程/ %DispatchGetProperty公开它们。 Class Test.Record Extends %Persistent{ Parameter GLVN = {..GLVN("Test.Record")}; /// SELECT Test_Record.col(ID, 123) /// FROM Test.Record////// w ##class(Test.Record).col(1, )ClassMethod col(id, num) As %Decimal [ SqlProc ]{ #define GLVN(%class) ##Expression(##class(Test.Record).GLVN(%class)) quit $lg($$$GLVN("Test.Record")(id), num + 1)} /// Refer to properties as: obj.col123 Method %DispatchGetProperty(Property As %String) [ CodeMode = expression ]{..col(..%Id(), $e(Property, 4, *))} /// Get data global/// w ##class(Test.Record).GLVN("Test.Record")ClassMethod GLVN(class As %Dictionary.CacheClassname = {$classname()}) As %String{ return:'$$$comClassDefined(class) "" set strategy = $$$comClassKeyGet(class, $$$cCLASSstoragestrategy) return $$$defMemberKeyGet(class, $$$cCLASSstorage, strategy, $$$cSDEFdatalocation)} 这里的技巧是将所有内容存储在主 $lb 中,并使用未分配的Schema存储空间来存储数据。 这是一篇关于Global存储的文章。 通过这种方法,您还可以通过ExecuteGlobal方法轻松地将数据传输到社区 Python 网关的 Python 环境中。 由于结构相似,这也是导入 CSV 文件的最快方法。 结论 999 个属性限制可以在 InterSystems IRIS 中轻松扩展。 您知道存储广泛数据集的其他方法吗?如果有,请分享!
公告
Claire Zheng · 八月 3, 2023

2023 年 8 月 1 日 – 警报:ECP 应用程序服务器挂起和 Dejournaling 挂起

InterSystems 已纠正了两个缺陷。 第一个缺陷可能导致 ECP 应用程序服务器挂起。此缺陷仅与 ARM 和 IBM Power 处理器相关;存在于 InterSystems IRIS®、InterSystems IRIS for Health™ 和 HealthShare® Health Connect 版本2022.1.2和2022.1.3中。该修复被标识为 DP-423661。该缺陷将在所有未来版本中得到解决。 在极少数情况下,第二个缺陷可能会导致dejournaling挂起。此缺陷存在于 InterSystems IRIS®、InterSystems IRIS for Health™ 和 HealthShare® Health Connect 版本2020.4 、 2021.x 、 2022.x和2023.1中。该修复被标识为 DP-423505。该缺陷将在所有未来版本中得到解决,并已在2023.1.1中得到纠正。 InterSystems 已发布版本2022.1.3的更新发行版,以便快速提供这些修复。相关的版本标识符是: 原发布:2022.1.3.668.0 更新发布:2022.1.3.670.1 这些修复也可以通过 Ad hoc 分发获得。 如果您对此警报有任何疑问,请联系 全球响应中心。
文章
Kelly Huang · 八月 2, 2023

在本地的K8s 上部署一台FHIR服务器

这是一个使用 IKO 在 k3d 上部署 iris-oauth-fhir 的示例。 * iris-oauth-fhir 是一个示例,用于部署带有 OAuth2 身份验证功能的 FHIR 服务器,InterSystems IRIS for Health 作为资源服务器,Google OpenId 则作为授权服务器。 * k3d 作为一个轻量级封装器,用于在 docker 中运行 k3s (Rancher Lab 的最小 Kubernetes 发行版) * IKO 是一个在 Kubernetes 上部署 InterSystems IRIS for Health 的工具。 2. 目录表 1. K3D + iris-operator + iris-oauth-fhir 2. Table of Contents 2.1. Prerequisites 2.2. Installation 2.2.1. Warning 2.2.2. Build iris-oauth-fhir image 2.2.3. Download k3d 2.2.4. Create a registry 2.2.4.1. add registry to hosts 2.2.4.1.1. mac 2.2.4.1.2. windows 2.3. Start the culster 2.3.1. Check the cluster 2.3.2. Install iris-operator 2.3.2.1. install helm 2.3.2.2. install iris-operator 2.3.3. Install iriscluster 2.3.3.1. What are we going to deploy? 2.3.3.2. Prepare the deployment for the data node 2.3.3.3. Prepare the deployment for the web gateway node 2.3.4. Deploy iriscluster 2.3.5. Deploy ingress 2.4. Easy scale 2.5. Quick init 2.6. Quick deployment 2.1 须知 Docker Git Helm k3d kubectl IKO 2.2 安装 2.2.1 警告 这将是很值得经历的一段漫长的过程,您将学到很多关于 Kubernetes 和 InterSystems IRIS for Health 的知识。 2.2.2 构建 iris-oauth-fhir 镜像 首先克隆下面这个存储库 git clone https://github.com/grongierisc/iris-oauth-fhir 然后按照 README.md 中的说明构建 iris-oauth-fhir 镜像。 接下来我们安装 k3d。 2.2.3 下载k3d curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash 2.2.4 创建一个注册表 我们必须创建一个注册表,因为目前 Docker Desktop 还没有将其内部注册表用作容器 ID 注册表。有一项实验性功能可将 Docker Desktop 注册表用作容器 ID 注册表,但目前还不稳定。因此,我们将使用 k3d 创建一个注册表。 k3d registry create registry.localhost --port 5000 该命令将在端口 5000 上创建一个注册表。我们将用它来推送图像。这是在 k3d 中使用图像的唯一方法。 现在,我们将把注册表添加到 hosts 文件中。这样,我们就能将其用作 DNS 名称。这一点很重要,因为我们将在部署中使用它。这个 DNS 名称对于我们的主机和 Kubernetes 都是一样的。 2.2.4.1 将注册表添加到主机中 2.2.4.1.1. mac sudo sh -c 'echo "127.0.0.1 k3d-registry.localhost" >> /etc/hosts' 2.2.4.1.2 windows Open Notepad as an administrator. Open the file C:\Windows\System32\Drivers\etc\hosts. Add the following line to the end of the file: 127.0.0.1 k3d-registry.localhost. Save the file and close Notepad. 2.3 启动群集 现在,我们将使用此命令行启动群集: k3d cluster create demo --servers 1 --agents 2 --volume $(pwd)/k8s/data:/var/lib/rancher/k3s/storage@all --registry-use k3d-registry.localhost:5000 -p "8081:80@loadbalancer" -p "4443:443@loadbalancer" --api-port 6550 --volume "$(pwd)/k8s/config/traefik-config.yaml:/var/lib/rancher/k3s/server/manifests/traefik-config.yaml" 有哪些选项 --servers 1 will create one server node, server nodes are the master nodes. --agents 2 will create two agent nodes, agent nodes are the worker nodes. --volume $(pwd)/k8s/data:/var/lib/rancher/k3s/storage@all will mount the k8s/data folder to the cluster. This is where we will store our data. --registry-use k3d-registry.localhost:5000 will use the registry we created before. -p "8081:80@loadbalancer" -p "4443:443@loadbalancer" will expose the port 8081 and 4443 to the host. This is where we will access our cluster. --api-port 6550 will expose the port 6550 to the host. This is where we will access the Kubernetes API. --volume "$(pwd)/k8s/config/traefik-config.yaml:/var/lib/rancher/k3s/server/manifests/traefik-config.yaml" will mount the k8s/config/traefik-config.yaml file to the cluster. This is the configuration file for the ingress controller. This will configure the ingress controller to allow traefik to route the data on the secure port without verification of the certificate. # k8s/config/traefik-config.yaml apiVersion: helm.cattle.io/v1 kind: HelmChartConfig metadata: name: traefik namespace: kube-system spec: valuesContent: |- globalArguments: - "--serversTransport.insecureSkipVerify=true" 2.3.1 检查群集 为了让你了解 Kubernetes 集群的样子,下面是一个示意图: kubectl get nodes 你应该看到如下的内容 NAME STATUS ROLES AGE VERSION k3d-demo-server-0 Ready control-plane,master 10m v1.21.2+k3s1 k3d-demo-agent-0 Ready <none> 10m v1.21.2+k3s1 k3d-demo-agent-1 Ready <none> 10m v1.21.2+k3s1 这意味着集群已准备就绪。现在,您拥有了一个包含一个主节点和两个工作节点的 Kubernetes 集群。 2.3.2 安装 iris-operator 我们现在开始安装 iris-operator。iris-operator是一个 Kubernetes 操作器,用于在 Kubernetes 上部署 InterSystems IRIS for Health。它可在 WRC 或 InterSystems Container Registry 上获取。我们将使用 3.6.6.100 版本。 例如,如果容器注册表有 IKO,可以使用此命令行: docker pull containers.intersystems.com/intersystems/iris-operator-amd:3.6.6.100 现在,我们将标记这个image,将其推送到注册表中: docker tag intersystems/iris-operator-amd:3.6.6.100 k3d-registry.localhost:5000/intersystems/iris-operator-amd:3.6.6.100 继续推送 docker push k3d-registry.localhost:5000/intersystems/iris-operator-amd:3.6.6.100 要安装 Iko 操作员,我们将使用 helm。Helm 是 Kubernetes 的软件包管理器。可在here下载。 2.3.2.1 安装 helm curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh 2.3.2.2 安装 iris-operator helm install intersystems k8s/iris_operator_amd-3.6.6.100/chart/iris-operator 要检查 operator 是否正在运行,可以使用此命令行: kubectl --namespace=default get deployments -l "release=intersystems, app=iris-operator-amd" 你应该看到👇🏻的内容 NAME READY UP-TO-DATE AVAILABLE AGE intersystems-iris-operator 1/1 1 1 2m 2.3.3 安装 iriscluster 2.3.3.1 我们要部署什么 我们需要部署👇🏻的架构 One data node One web gateway node 正是我们在这个 docker-compose 文件中看到的内容: # docker-compose.yaml version: '3.6' services: iris: image: iris-oauth-fhir-iris:latest build: context: . dockerfile: Dockerfile restart: always ports: - 1972 - 8083:52773 - 53773 volumes: - ./:/irisdev/app/ - ./data:/data environment: - ISC_CPF_MERGE_FILE=/irisdev/app/common.cpf - ISC_OAUTH_SECRET_PATH=/irisdev/app/misc/auth/secret.json - ISC_DATA_DIRECTORY=/data/iris webgateway: build: context: ./webgateway args: link: 'iris' port: '52773' image: proxyiris:latest ports: - "8080:80" - "4443:443" volumes: - ./webgateway/CSP.ini:/opt/webgateway/bin/CSP.ini - ./webgateway/httpd-csp.conf:/usr/local/apache2/conf/extra/httpd-csp.conf 几个注意的点: 我们在数据节点中使用了 iris-oauth-fhir-iris:latest 镜像。 该镜像使用三个环境变量: ISC_CPF_MERGE_FILE 用于合并 common.cpf 文件。 ISC_OAUTH_SECRET_PATH 用于设置秘密文件的路径。 ISC_DATA_DIRECTORY 用于设置数据目录。 网络网关节点使用 proxyiris:latest 映像。 该镜像使用两个volumes: CSP.ini 用于配置 CSP 应用程序。 httpd-csp.conf 用于配置 apache 服务器。 因此,在 Kubernetes 部署中,我们必须做同样的事情。 这意味着我们必须 数据节点 向数据节点提供 common.cpf 文件。 同样也要提供 secret.json 文件,以配置 OAuth2 身份验证。 数据目录将作为volume加载。 对于网络网关节点: 向网络网关节点提供一些 CSP.ini 文件。 同样,httpd-csp.conf 文件用于配置 apache 服务器。 2.3.3.2 准备数据节点的部署 为了向数据节点提供 common.cpf 文件,我们将使用配置映射。配置映射是用于存储配置文件的 Kubernetes 对象。我们将使用本版本库中的 common.cpf 文件。 下面是配置映射的示意图: 要创建配置映射,我们将使用以下命令行: kubectl create cm iriscluster-config --from-file common.cpf 为了向数据节点提供 secret.json 文件,我们将使用一个secret。secret是用于存储敏感数据的 Kubernetes 对象。我们将使用该版本库中的 secret.json 文件。 要创建secret,我们将使用以下命令行: kubectl create secret generic iriscluster-secret --from-file misc/auth/secret.json 要将数据目录挂载为volume,这将是自动的。我们将使用 IrisCluster 定义拓扑部分的存储字段,并将其作为默认设置。 我们仍需将 iris-oauth-fhir-iris:latest 映像推送到注册表。我们将使用与之前相同的命令行: docker tag iris-oauth-fhir-iris:latest k3d-registry.localhost:5000/iris-oauth-fhir-iris:latest docker push k3d-registry.localhost:5000/iris-oauth-fhir-iris:latest 2.3.3.3 准备网络网关节点的部署 网络网关节点有点不同,因为我们不会使用 proxyiris:latest 映像。我们将使用 intersystems/webgateway:2023.1.1.380.0-linux-amd64 映像。该镜像可从 InterSystems Container Registry. 上获取。该镜像是原始 Web 网关镜像。 原始网络网关镜像与 proxyiris 镜像有何不同? proxyiris 已用自签证书预配置了 https。 因此,我们必须配置网络网关使用 https。为此,我们将使用一个secret。secret是一个用于存储敏感数据的 Kubernetes 对象。我们将使用该版本库中的 tls.crt 和 tls.key 文件。 要创建secret,我们将使用以下命令行: kubectl create secret tls tls-secret --key k8s/tls/tls.key --cert k8s/tls/tls.crt 好消息是,我们无需配置 CSP 应用程序和 apache 服务器。我们将使用 IrisCluster 定义中拓扑部分的 applicationPaths 和 alternativeServers 字段,并将它们作为默认设置。 在 docker-compose.yaml 文件中,我们必须配置 CSP.ini 文件和 httpd-csp.conf 文件。在 Kubernetes 部署中,我们不需要这样做,因为我们无法提前知道数据节点的 IP 地址。但我们仍然需要告诉 IKO 连接到数据节点的登录名和密码。为此,我们将使用一个secret。secret是一个用于存储敏感数据的 Kubernetes 对象。我们将使用该版本库中的 iris-webgateway-secret 文件。 要创建secret,我们将使用以下命令行: kubectl create secret generic iris-webgateway-secret --from-literal='username=CSPSystem' --from-literal='password=]]]U1lT' 我们仍然需要将 intersystems/webgateway:2023.1.1.380.0-linux-amd64 映像推送到注册表中。我们将使用与之前相同的命令行 docker tag containers.intersystems.com/intersystems/webgateway:2023.1.1.380.0-linux-amd64 k3d-registry.localhost:5000/intersystems/webgateway:2023.1.1.380.0-linux-amd64 docker push k3d-registry.localhost:5000/intersystems/webgateway:2023.1.1.380.0-linux-amd64 2.3.4 部署 iriscluster 现在,我们将安装 IrisCluster。IrisCluster 是一种 Kubernetes 自定义资源,用于在 Kubernetes 上部署 InterSystems IRIS for Health。它定义在 k8s/config/iris-sample.yaml 文件中。 # k8s/config/iris-sample.yaml ## uncommented fields deploy one InterSystems IRIS data server ## WARNING: default password is not reset, to do so include ## configSource below ## include commented fields for purposes described; see documentation at ## https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=AIKO_clusterdef_sample ## update image tags (from ":tag") before using; see list of available images at ## https://docs.intersystems.com/components/csp/docbook/Doc.View.cls?KEY=PAGE_containerregistry apiVersion: intersystems.com/v1alpha1 kind: IrisCluster metadata: name: sample spec: ## provide InterSystems IRIS license key if required # licenseKeySecret: # name: iris-key-secret ## specify files used to customize the configurations of ## InterSystems IRIS nodes, including passwordHash parameter ## to set the default password, securing InterSystems IRIS configSource: name: iriscluster-config ## provide repository credentials if required to pull images # imagePullSecrets: # - name: iris-pull-secret ## provide VolumeSource specifications for certificates for each desired TLS feature ## "common" enables all TLS features, but each particular feature's property is given priority over "common" tls: # common: # secret: # secretName: tls-certs # mirror: # csi: # driver: secrets-store.csi.k8s.io # readOnly: true # volumeAttributes: # secretProviderClass: "my-provider" webgateway: secret: secretName: tls-secret ## specify platform-specific storage class used to allocate storage ## volumes (default: use platform-defined class) # storageClassName: iris-ssd-storageclass ## select update strategy (default: RollingUpdate) # updateStrategy: # type: RollingUpdate ## create external IP address(es)for the cluster ## ("type: LoadBalancer" and "externalTrafficPolicy: Local" are required) # serviceTemplate: # spec: # type: LoadBalancer # externalTrafficPolicy: Local ## define persistent volumes (to be mounted by "volumeMounts:" in node definitions) # volumeClaimTemplates: # - metadata: # name: extra-disk # spec: # accessModes: # - ReadWriteOnce # resources: # requests: # storage: 2Gi ## define ephemeral volumes (to be mounted by "volumeMounts:" in node definitions) volumes: - name: auth-config secret: secretName: iriscluster-secret ## topology: defines node types to be deployed; only "data:" is required topology: data: image: k3d-registry.localhost:5000/iris-oauth-fhir-iris:latest ## set enviroment variable for the container podTemplate: spec: env: - name: ISC_OAUTH_SECRET_PATH value: /auth/secret.json ## deploy a sharded cluster of data nodes and (optionally) compute ## nodes; if not included, "data:" definition in "topology:" deploys ## a single data server, "compute:" adds application servers # shards: 2 ## deploy mirrored data nodes or data server (default: nonmirrored) # mirrored: true ## override default size and other attributes of predefined storage ## volumes for data nodes (additional volume names: storageWIJ, ## storageJournal1, storageJournal2); can also be included in ## "compute:" definition # storageDB: # resources: # requests: # storage: 10Gi # storageClassName: my-storageclass ## constrain nodes to platform-specific availability zones (can be ## included in other node definitions) # preferredZones: # - us-east1-a # - us-east1-b ## mount volumes defined in "volumeClaimTemplates:" (persistent) and "volumes:" (ephemeral) volumeMounts: - mountPath: "/auth" name: auth-config ## deploy webgateway (web server) nodes webgateway: image: k3d-registry.localhost:5000/intersystems/webgateway:2023.1.1.380.0-linux-amd64 type: apache replicas: 1 applicationPaths: - /csp/sys - /fhir/r4 alternativeServers: LoadBalancing loginSecret: name: iris-webgateway-secret ## deploy System Alerting and Monitoring (SAM) with InterSystems IRIS # sam: # image: containers.intersystems.com/intersystems/sam:tag ## deploy InterSystems API Manager (IAM) with InterSystems IRIS # iam: # image: containers.intersystems.com/intersystems/iam:tag 内容太多了!别担心,我们一一做解释 让我们从 configSource 部分开始: ## specify files used to customize the configurations of ## InterSystems IRIS nodes, including passwordHash parameter ## to set the default password, securing InterSystems IRIS configSource: name: iriscluster-config 这是我们之前创建的配置映射。我们将在这里找到 common.cpf 文件。 接下来是 tls 部分: ## provide VolumeSource specifications for certificates for each desired TLS feature ## "common" enables all TLS features, but each particular feature's property is given priority over "common" tls: webgateway: secret: secretName: tls-secret 这是我们之前创建的secret。我们将在这里找到 tls.crt 和 tls.key 文件。 接下来是volumes部分: ## define ephemeral volumes (to be mounted by "volumeMounts:" in node definitions) volumes: - name: auth-config secret: secretName: iriscluster-secret 这是我们之前创建的secret。我们将在这里找到 secret.json 文件。 IrisCluster 定义了如何在 Kubernetes 上部署 InterSystems IRIS for Health。重要的部分是拓扑部分。该部分定义了要部署的节点。在本例中,我们将部署一个数据节点和一个网络网关节点。 让我们看看数据节点的定义: ## topology: defines node types to be deployed; only "data:" is required topology: data: image: k3d-registry.localhost:5000/iris-oauth-fhir-iris:latest ## set enviroment variable for the container podTemplate: spec: env: - name: ISC_OAUTH_SECRET_PATH value: /auth/secret.json volumeMounts: - mountPath: "/auth" name: auth-config 图像字段定义了要使用的图像。我们将使用之前构建的映像。podTemplate 字段定义 Kubernetes pod 模板。env 字段定义要在容器中设置的环境变量。我们将使用该环境变量来设置将创建的秘密文件的路径。podTemplate 相当于 docker-compose.yaml 文件中的 podTemplate。volumeMounts 字段定义了要挂载到容器中的卷。我们将挂载之前创建的秘密。 现在让我们看看网络网关节点的定义: ## deploy webgateway (web server) nodes webgateway: image: k3d-registry.localhost:5000/intersystems/webgateway:2023.1.1.380.0-linux-amd64 type: apache replicas: 1 applicationPaths: - /csp/sys - /fhir/r4 alternativeServers: LoadBalancing loginSecret: name: iris-webgateway-secret 图像字段定义了要使用的图像。类型字段定义要部署的网络网关类型。我们将使用 apache。副本字段定义要部署的网络网关的数量。我们将部署一个。applicationPaths 字段定义路由到网络网关的应用程序路径。我们将把 /csp/sys 和 /fhir/r4 路由到网络网关。alternativeServers 字段定义要使用的替代服务器。我们将使用 LoadBalancing。loginSecret 字段定义连接网关和数据节点的登录名和密码。 要部署 IrisCluster,我们将使用以下命令行: kubectl apply -f k8s/config/iris-sample.yaml 要检查 IrisCluster 是否正在运行,可以使用此命令行: kubectl get iriscluster 几分钟后,可以看到👇🏻这些信息 NAME SHARDS MIRRORED STATUS AGE sample Running 2m16s 要了解 IrisCluster 的详细信息,可以使用此命令行: kubectl describe iriscluster sample 要检查 pod 是否正在运行,可以使用此命令行: kubectl get pods 几分钟后,可以看到👇🏻这些信息 NAME READY STATUS RESTARTS AGE intersystems-iris-operator-amd-87c955c9c-4zmrj 1/1 Running 0 44m sample-data-0 1/1 Running 0 4m19s sample-webgateway-0 0/1 ContainerCreating 0 17s 要获取 pod 的详细信息,可以使用以下命令行 kubectl describe pod sample-data-0 2.3.5 部署 ingress 现在,我们将部署一个ingress。ingress 是一个 Kubernetes 对象,用于将流量路由到正确的 pod。我们将使用 k8s/config/ingress.yaml 文件。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress namespace: default spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: sample-webgateway port: number: 443 该ingress将把流量路由到端口为 443 的 sample-webgateway 服务。 要部署ingress,我们将使用以下命令行 kubectl apply -f k8s/config/ingress.yaml 要检查ingress是否正在运行,可以使用此命令行: kubectl get ingress 要测试整个过程,可以使用以下命令行: curl -k https://localhost:4443/fhir/r4/metadata 恭喜您!已成功的在 Kubernetes 上部署了 iris-oauth-fhir。 2.4 Easy Scale 如果要创建一个新租户,可以使用 iris-demo.yaml 文件。 基本上,它与 iris-sample.yaml 文件相同,只是改变了租户的名称。 你可以使用此命令行进行部署: kubectl apply -f k8s/config/iris-demo.yaml 您可以使用新的 ingress 将流量路由到新租户。 apiVersion: traefik.containo.us/v1alpha1 kind: Middleware metadata: name: strip-prefix namespace: default spec: stripPrefix: prefixes: - /sample - /demo --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress namespace: default annotations: traefik.ingress.kubernetes.io/router.middlewares: default-strip-prefix@kubernetescrd spec: rules: - http: paths: - path: /sample pathType: Prefix backend: service: name: sample-webgateway port: number: 443 - path: /demo pathType: Prefix backend: service: name: demo-webgateway port: number: 443 新增两条路线 /sample to route the traffic to the sample-webgateway service. /demo to route the traffic to the demo-webgateway service. 您可以缩放 Compte 节点,但需要License Key。 2.5 快速 init Tag images docker tag iris-oauth-fhir-iris:latest k3d-registry.localhost:5000/iris-oauth-fhir-iris:latest docker tag containers.intersystems.com/intersystems/webgateway:2023.1.1.380.0-linux-amd64 k3d-registry.localhost:5000/intersystems/webgateway:2023.1.1.380.0-linux-amd64 docker tag intersystems/iris-operator-amd:3.6.6.100 k3d-registry.localhost:5000/intersystems/iris-operator-amd:3.6.6.100 Push image docker push k3d-registry.localhost:5000/iris-oauth-fhir-iris:latest docker push k3d-registry.localhost:5000/intersystems/webgateway:2023.1.1.380.0-linux-amd64 docker push k3d-registry.localhost:5000/intersystems/iris-operator-amd:3.6.6.100 2.6 快速部署 删除 cluster k3d cluster delete demo 创建 cluster k3d cluster create demo --servers 1 --agents 2 --volume $(pwd)/k8s/data:/var/lib/rancher/k3s/storage@all --registry-use k3d-registry.localhost:5000 -p "8081:80@loadbalancer" -p "4443:443@loadbalancer" --api-port 6550 --volume "$(pwd)/k8s/config/traefik-config.yaml:/var/lib/rancher/k3s/server/manifests/traefik-config.yaml" 安装 iris-operator helm install intersystems k8s/iris_operator_amd-3.6.6.100/chart/iris-operator 创建配置和Secret kubectl create cm iriscluster-config --from-file common.cpf kubectl create secret generic iriscluster-secret --from-file misc/auth/secret.json kubectl create secret tls tls-secret --key k8s/tls/tls.key --cert k8s/tls/tls.crt kubectl create secret generic iris-webgateway-secret --from-literal='username=CSPSystem' --from-literal='password=]]]U1lT' 部署 IrisCluster: kubectl apply -f k8s/config/iris-sample.yaml 部署 Ingress kubectl apply -f k8s/config/ingress.yaml
文章
Lilian Huang · 八月 1, 2023

FHIR 应用系列--虚拟实验室: 基于VR和AI的重症监护室模拟培训

VR ICU® 是 InterSystems FHIR 创新孵化器 Caelestinus 的参与者。这篇文章将向您介绍我们利用 InterSystems FHIR Server 为医疗保健提供的 VR 解决方案。 我们是一家技术初创企业虚拟实验室,利用先进的 VR/AR 技术开发解决方案。VR ICU® 是一个针对重症监护室医务人员的培训平台,是在 Covid 时代为满足医院需求而创建的。 与InterSystems合作的优势 我们的 VR ICU® 解决方案符合实践需求,是与医院合作开发的。 除了技术解决方案和技能学习本身,记录培训课程、培训进度和成功率对于医院或麻醉学和重症监护部门的有效管理也至关重要。医务长可以通过了解谁在何时接受了培训,清楚地掌握能够在重症监护室使用设备的人员数量,从而有效地对他们进行培训,以保持技能、有控制地规划人员技能储备并提高他们的能力。 在这方面,与 InterSystems 的合作对我们来说至关重要,它使我们能够在应用程序中存储每次培训期间的数据。目前,我们会记录参与者的姓名、培训日期和时长、培训类型、设备类型、错误数量和类型,必要时还会记录培训成功完成的信息。 如何使用?用户登录应用程序并选择一个账户。 根据 HL7 标准,该账户作为从业人员存在于数据库的资源下。培训课程开始时,会在应用程序中创建一个新的 "任务"--在这里输入培训课程的开始时间和培训课程的类型,课程结束时,再次输入培训课程的结束时间。错误会写入输出表。培训完成后,任务中的数据将序列化为 JSON 格式,并使用 FHIR API 发送到云端。为了使 VR 应用程序之外的数据可视化,我们开发了一款平板电脑应用程序。该应用程序与存储在云端的数据相连,并显示特定用户的个人训练课程。 人力资源部门通过培训数据了解受训人员完成培训的总体情况和水平,从而有效地规划他们的进一步培训,并跟踪了解员工的能力及其在重症监护室护理过程中的替换性。您可以点击这里:https://www.youtube.com/watch?v=3oO0uuHy0kg&t=8s 如今,医院、大学和模拟中心都在使用 VR ICU®。 虚拟现实技术将教育和培训提升到了一个新的水平。通过体验学习,可以提高培训效果和记忆力。 在 VR ICU® 中使用 InterSystems 的 FHIR 云服务器作为存储培训进度数据的工具,并使用 FHIR API 进行通信,这也对我们进军国外市场产生了积极影响,尤其是在德国,FHIR 标准是一种广为接受的解决方案,用于与人力资源部门传输信息,并与第三方调度系统进行通信。 麻醉学和重症监护审查参考:https://www.youtube.com/embed/Qve5xEm89cU?feature=oembed 它是如何开始的? 2020 年,一场大流行病袭击了我国。医院人满为患,人手短缺,尤其是重症监护室。麻醉、复苏和重症医学科主任在晚间新闻中解释说,如果更多的医生被隔离或生病,他就没有足够的合格人员来操作肺部呼吸机。其他医院也证实了同样的情况。我们萌生了制作一个专门用于培训的肺部呼吸机数字拷贝,帮助医院培训其他科室医生的想法。 我们找到了麻醉复苏部(ARO)的负责人、模拟中心的专家。医生们支持我们的想法,有些人还参与了开发工作。我们还得到了医疗设备制造商的支持,他们看到了虚拟现实培训的附加值。 我们是如何开展项目的,解决方案的重要性何在? 1. 我们评估了重症监护室的现状: - 在没有真实病人和/或医疗设备的情况下,50% 以上的重症监护室程序无法进行培训。 - 医疗设备制造商难以将医务人员集中到一处进行培训(只有 30% 的受训人员能坚持到培训结束) - 过去两年中,麻醉学和重症监护部门的人员流动率约为 20%。 2. 问题的解决方案: - 虚拟现实自动培训平台 - 模拟重症监护室的手术过程,无需真实病人,也无需使用真实医疗设备 - 节省技术和医疗用品 - 也可用于远程培训,从不同地点/工作场所进入同一个虚拟空间 - 在安全的环境中进行风险情况演练 - 将人为错误的风险降至最低 3. 潜力: - 利用人工智能(AI)模拟和练习危急情况,确定正确的程序 - 人工智能可模拟病人-设备-病人之间的互动 - 制造商的设备集中在一个虚拟空间,使医院的培训更加容易 愿景 VR ICU® 的目标是作为一个平台,让医院从实际使用的设备目录中选择 3D 设备,并从中创建培训环境。 我们向医疗设备制造商提出的愿景最初得到了 BBraun、费森尤斯和 Linet 的支持。随后,其他公司也纷纷效仿这些大胆的先行者。我们还根据所进入的市场扩大我们的设备组合。目前,我们在美国、亚洲和南美都有合作伙伴,他们正在补充信息并与制造商进行谈判。 我们正在全球会议上展示 VR ICU®,我们很高兴能成为 Caelestinus 孵化器的一部分。由于我们与 InterSystems 的合作,我们有机会参加在西雅图举行的 InterSystems 2022 年全球峰会,现在我们正在拉斯维加斯参加 HLTH 2022。 VR ICU® 已经赢得了许多奖项,最近在奥地利林茨,我们凭借该解决方案赢得了最佳初创企业奖。 这些成功的展示吸引了投资者的关注。我们欢迎那些希望进一步开发我们产品的人向我们推荐他们。我们计划在 2023 年向捷克、斯洛伐克和德国的医院出售许可证。我们欢迎商业合作伙伴以及能够加快 VR ICU® 实际应用--市场进入进程或希望为人工智能/VR 版本的开发做出贡献的合作伙伴。 原文来自这里:https://community.intersystems.com/node/529381
公告
Claire Zheng · 八月 1, 2023

第二届InterSystems Idea 创意马拉松

嗨,开发者们! 我们很高兴邀请您参加Idea-A-Thon创意马拉松,展示与 InterSystems 技术相关的好创意: 🎁第二届 InterSystems Idea-A-Thon创意马拉松🎁 在8 月 1 日至8 月 21 日期间,根据本次创意马拉松的主题发布创意,即可获得即可获得创意达成奖。 最重要的是,此次赛事InterSystems的员工和社区成员都可以参与! 主题 💡使用 InterSystems IRIS 快速、安全、绿色地运行解决方案💡 该主题基于2023 年 InterSystems 全球峰会期间@Jeffrey Fried的演示而来: InterSystems IRIS 最新动态、下一步计划 如果您的创意得到实施,将提高基于 InterSystems IRIS 的解决方案的速度和可靠性,并减少碳足迹——本次Idea-A-Thon创意马拉松就是为这些好创意而来。 您的创意需要有助于: 提高解决方案的性能 减少实施所需的硬件资源 减少开发、测试、实施、用户培训的工作日 以及与Idea-A-Thon创意马拉松主题相关的其他想法。 👉 要参加我们的Idea-A-Thon创意马拉松,请在InterSystems Ideas 门户上提交创意。 合格的参赛创意应符合以下要求: 用户在Idea-A-Thon创意马拉松期间提交,由通过InterSystems Ideas网站注册的用户创建(您可以通过InterSystems SSO登录); 不要成为其他已经存在的想法的一部分——只允许提交新创意; 不要描述InterSystems产品或服务的现有功能; 除标题外,还包含对创意的详细描述以及对为什么该创意适合 Idea-A-Thon 主题,阐释需清晰明了,包含3~5句话; 以英文发布; InterSystems 专家认为该创意有意义。 所有想法都将受到审核。我们可能会要求您更详细地阐释您的创意。 符合要求的创意将获得特殊的“创意马拉松(Idea-A-Thon)”状态标记。 谁可以参加? 我们邀请所有人加入我们的创意马拉松。欢迎InterSystems员工和社区成员参与并提交创意。 奖品 1. 参与奖——所有发布合格创意的参与者都会将获得奖励 🎁 无线充电鼠标垫 2. 专家奖 ——InterSystems 专家将评选出 3 个最佳创意。获胜者将获得: 第一名- 🎁 Apple Watch SE / Fairphone Fairbuds XL 耳机 第二名- 🎁 扬声器套装 JBL Pulse 5 / Apple AirPods Pro 第二代 / 乐高星球大战 R2-D2 第三名- 🎁 乐高保时捷 911 / Beeline 自行车 GPS 电脑 - Velo 2 3. 社区奖——得票最多的创意将获得: 🎁 乐高保时捷 911 / Beeline 自行车 GPS 电脑 - Velo 2 注:InterSystems员工只能获得参与奖。专家奖和社区奖只会颁发给社区非 InterSystems 成员。 参赛时间 ⚠️ 创意提交:8 月 1 日至 21 日 ✅ 创意投票:8 月 1 日至 27 日 🎉 公布获奖者:8 月 28 日 我们鼓励您在此期间登录创意门户上分享您的想法。注册会员可以对已发布的创意进行投票、发表评论。 注意:社区奖仅计入在开发者社区发表过至少一篇帖子的活跃社区用户的投票。 所以, 来 InterSystems Ideas 门户上发布您的创意吧,并随时关注您创意的状态更新: >>在此提交您的创意<< Important note: All prizes are subject to availability and shipping options. Some items may not be available for international shipping to specific countries, in this case, an equivalent alternative will be provided. We will let you know if a prize is not available and offer a possible replacement. Prizes cannot be delivered to residents of Crimea, Russia, Belarus, Iran, North Korea, Syria, or other US-embargoed countries. 重要提示:所有奖品均视供应情况和运输情况而定。有些奖品可能无法通过国际航运到特定国家,在这种情况下,我们将提供等效的替代方案。如果没有奖品,我们会通知您,并提供备选的替代奖品。奖品不能寄给克里米亚、俄罗斯、白俄罗斯、伊朗、朝鲜、叙利亚或其他美国禁运国家的居民。
问题
e Neo · 七月 31, 2023

VSCode 中InterSystems Server Manager 插件配置https方式连接提示Server Could not be accessed by ‘“_system”

vscode通过插件:intersystems Server Manager 连接测试开发环境,配置连接后无法使用 配置参数: "intersystems.servers": { "local": { "webServer": { "scheme": "http", "host": "127.0.0.1", "port": 52773 }, "test": { "webServer": { "scheme": "https", "host": "xxx.xxx.xxx.xxx", "port": 2443 }, "description": "test", "username": "_system" } 错误信息: Server Could not be accessed by ‘“_system” 看起来是_system用户没有通过vscode接入平台的权限,如果换成SuperUser之类的客户是否可以接入?
文章
Lilian Huang · 七月 31, 2023

ChatGPT 与 InterSystems FHIR SQL 数据库构建器

FHIR® SQL Builder或 Builder 是 InterSystems IRIS 医疗版数据平台 的一个组件。它是一种复杂的投射工具,用于将 InterSystems IRIS 医疗版数据平台FHIR 存储库中的数据创建为自定义的 SQL 模式,而无需将数据移动到单独的 SQL 存储库中。 Builder 专门设计用于与 InterSystems IRIS 医疗版数据平台中的 FHIR 存储库和多模型数据库配合使用。 Builder 的目标是使数据分析师和商业智能开发人员能够使用熟悉的SQL分析工具使用 FHIR,而无需学习新的查询语法。 FHIR 数据以复杂的有向图编码,无法使用标准 SQL 语法进行查询。基于图的查询语言 FHIRPath 旨在查询 FHIR 数据,但它是非关系型的。 Builder 使数据管理员能够使用表、列和索引创建其 FHIR 存储库的自定义 SQL 来投射,使数据分析师能够查询 FHIR 数据,而无需学习 FHIRPath 或 FHIR 搜索语法的复杂性。存储库将加载 FHIR 资源,您所需要做的就是配置 FHIR SQL BUILDER。对于配置,导航到http://localhost:55037/csp/fhirsql/index.csp# /有关如何进行配置的更多详细信息,请观看此教程视频 要查看配置,请导航到http://localhost:55037/csp/fhirsql/index.csp#/spec/1 现在让我们使用irisChatGPT应用程序,使用以下命令连接到终端 docker-compose exec iris iris session iris 创建 dc.irisChatGPT 类的新实例并使用 SetApiKey 方法设置 OpenAI API 密钥 set chat = ##class(dc.irisChatGPT).%New() do chat.SetAPIKey("Enter your Open API Key here") 谢谢
文章
姚 鑫 · 七月 27, 2023

第四章 HL7 架构和可用工具 - 查看数据结构

# 第四章 HL7 架构和可用工具 - 查看数据结构 ## 查看数据结构 当单击“数据结构”列中的名称时,`InterSystems` 会显示该数据结构中的所有字段。这是 `HL7` 数据结构页面。显示的以下列是最有用的: - 组件列列出了可用于访问段内字段的数字。 - 属性名称列列出了可用于访问段内字段的名称。 - 单击“数据结构”列中的条目可深入了解详细信息。 - 单击“代码表”列(如果有)中的条目可查看可在此字段中输入的有效代码。 当单击上面段结构页面中名为 `2.3:XCN` 的数据结构项时,将出现以下示例页面。该页面指出类别 `2.3` 数据结构 `XCN` 描述“扩展复合 `ID` 号和名称”并由 `14` 个字段组成。其中,有些是简单值,有些是数据结构,有些是代码。 有了这些信息,就可以为消息结构 `2.3:ADT_A01` 中的复杂 `PR1grp().PR1:Surgeon` 字段创建虚拟属性路径,如下所示: ``` PR1grp().PR1:Surgeon.familyname PR1grp().PR1:Surgeon.degree ``` ## 查看代码表 当单击“代码表”列中的名称时,它会列出并解释该字段的有效代码。这是 `HL7` 代码表页面。当单击上一节中显示的数据结构页面中名为 `2.3:200` 的代码表项时,将出现以下示例页面。 上面的示例示出类别`2.3`代码表`200`描述可以具有值`L`、`O`、`M`、`A`、`C`或`D`的“名称类型”。 这意味着,如果有一条 `DocType` 为 `2.3:ADT_A01` 的 `HL7` 消息,则它具有一个可选虚拟属性,路径为 `PR1grp().PR1:Anesthesiograph.nametype`,可以包含以下值之一:`L`、`O`、`M`、 `A`、`C` 或 `D`。 ## 使用自定义架构编辑器 自定义架构编辑器允许创建新的自定义 `HL7` 架构或编辑现有的自定义 `HL7` 架构。通常,自定义模式具有基本模式,它是标准模式或其他自定义模式。当 `InterSystems` 产品使用自定义架构来解析消息时,如果自定义架构中未定义消息类型、段或其他元素,它将使用基本架构中的定义。因此,只需在自定义架构中定义基本架构中不存在的元素,或者需要与基本架构中的定义不同的元素。无法编辑标准架构。 定义自定义架构的最常见原因是能够解析带有尾部 `Z` 段的 `HL7` 消息。 `InterSystems` 产品可以处理带有架构中未定义的尾部 `Z` 段的消息,但要执行以下任一操作,需要定义自定义架构: - 访问路由规则、数据转换或 `ObjectScript` 代码中尾部 `Z` 段中的字段路径。 - 验证尾部 `Z` 段。 如果`production`当前正在使用标准模式,并且需要访问数据转换或路由规则中的尾部 `Z` 段字段路径,则应执行以下操作: 1. 使用管理门户中的自定义架构编辑器创建新的 `HL7` 架构。输入自定义架构的名称并指定基本架构。请参阅创建新的自定义架构。 2. 定义可以出现在消息中的 `Z` 段。如果 `Z` 段与基础架构中的现有段具有相似的字段,可以从基础复制定义,然后根据需要进行修改。否则,可以创建一个新段。可以添加字段、删除字段或更改字段的顺序。请参阅定义新段。 3. 对于包含尾随 `Z` 段的每个消息类型,在从基础架构复制的自定义架构中创建消息类型和结构类型。将 `Z` 段添加到结构类型的末尾。请参阅定义新消息类型和结构类型 4. 修改`production` 中的业务服务以使用新的自定义架构而不是基本架构。 5. **通过向`production`的业务服务提供带有尾部 `Z` 段的新消息来测试`production`。如果在消息查看器中查看消息,则 `Z` 段(如果它们在架构中定义)将显示为蓝色。无法识别的段显示为黑色。**