文章 Weiwei Gu · 九月 14 阅读大约需 2 分钟 容器中的 InterSystems IRIS InterSystems 还发布了容器化部署的IRIS。这篇文章旨在演示 InterSystems IRIS 和依赖 IRIS 后端的应用程序如何打包到镜像中并在容器中的其他计算机中运行,以及这样做有多么简单。 容器运行包含所有必需的可执行文件、二进制代码、库和配置文件的镜像。镜像可以从一台机器移动到另一台机器,像 Docker Hub 这样的镜像存储库可以简化这个过程。 我在本演示中使用了 Open Exchange 的应用程序。 演示视频: https://www.loom.com/share/93f9a760b5f54c0a8811b7a212387b9d IRIS 数据平台社区版的镜像(image)可以在 InterSystems 容器注册表中找到: #Docker #容器化 #InterSystems IRIS #InterSystems IRIS for Health #Open Exchange #VSCode Open Exchange app 0 0 0 30
文章 Weiwei Gu · 九月 14 阅读大约需 1 分钟 VS Code 无法连接到服务器的原因之一 昨天,我在一个客户网站提供从 Studio 迁移到 VS Code 的定制咨询时,就遇到了这种情况。 该站点的服务器已配置为使用delegated authentication,但尚未针对 /api/atelier Web 应用程序设置“delegated”复选框,而 InterSystems ObjectScript 扩展包的成员正是使用该复选框进行连接的。 一旦我们的应用程序设置了其复选框并单击了服务器管理器刷新按钮,就可以在服务器上枚举命名空间。 #身份认证 #VSCode 0 0 0 22
文章 姚 鑫 · 九月 13 阅读大约需 2 分钟 第二十七章 Classes - 引用其他类成员 第二十七章 Classes - 引用其他类成员 引用其他类成员 在方法中,使用下面的语法来引用其他类成员: 要引用ObjectScript中的参数,使用如下表达式: ..#PARAMETERNAME 只能使用ObjectScript直接访问参数。要从Python访问参数,请使用ObjectScript包装器方法返回参数,并在需要时调用此方法。例如: #InterSystems IRIS for Health 0 0 0 15
文章 Weiwei Gu · 九月 13 阅读大约需 1 分钟 去掉了 InstallFoundation 的方法 (IRIS 2023.2+ ) 我们最近发布了 IRIS 2023.2版本。 此版本从此类“HS.HC.Util.Installer”中删除了“InstallFoundation”。 这是一个没有记录在官方文档中的私有的方法,但它被社区广泛用来安装 FHIR 服务器。 所以如果你遇到这个错误:<METHOD DOES NOT EXIST> *InstallFoundation,HS.HC.Util.Installer 在构建我们自己的 FHIR 服务器的演示时,您可以通过替换此行来修复它: 把do ##class(HS.HC.Util.Installer).InstallFoundation (namespace) 替换成 Do ##class(HS.Util.Installer.Foundation).Install(namespace) ` #FHIR #InterSystems IRIS for Health 0 0 0 23
文章 姚 鑫 · 九月 12 阅读大约需 1 分钟 第二十六章 Classes - Methods 第二十六章 Classes - Methods Methods 方法有两种:实例方法和类方法(在其他语言中称为静态方法)。 指定方法关键字 在方法定义中,可以包含影响方法行为的可选编译器关键字。以下列表显示了一些最常见的方法关键字: Language 在 IRIS 中,可以用 ObjectScript 或 Python 编写方法。要指定编写方法所用的语言,请使用以下语法: #InterSystems IRIS for Health 0 0 0 9
文章 姚 鑫 · 九月 11 阅读大约需 3 分钟 第二十五章 Classes - 基于数据类型的属性 第二十五章 Classes - 基于数据类型的属性 基于数据类型的属性 当定义属性并将其类型指定为数据类型类时,可以使用特殊选项来定义和使用该属性,如本节中所述。 数据类型类 数据类型类使能够强制执行有关属性值的规则集。 IRIS 提供的数据类型类包括 %Library.String、 %Library.Integer、 %Library.Numeric、%Library.Date等等。因为 %Library 包的类名可以缩写,所以可以缩写其中的许多类;例如, %Date 是 %Library.Date的缩写。 每个数据类型类都具有以下特征: 它指定编译器关键字的值。对于属性,编译器关键字可以执行以下操作: #InterSystems IRIS for Health 0 0 0 11
文章 姚 鑫 · 九月 10 阅读大约需 2 分钟 第二十四章 Classes - 指定属性关键字 第二十四章 Classes - 指定属性关键字 指定属性关键字 在属性定义中,可以包含影响属性使用方式的可选属性关键字。以下列表显示了一些最常见的关键字: Required 指定可以将此类实例之前设置的属性值存储到磁盘。默认情况下,属性不是必需的。在子类中,可以将可选属性标记为必需,但不能执行相反的操作。 InitialExpression 指定属性的初始值。默认情况下,属性没有初始值。子类继承InitialExpression关键字的值并且可以覆盖它。指定的值必须是有效的 ObjectScript 表达式。 Transient 指定该属性不存储在数据库中。默认情况下,属性不是瞬态的。子类继承 Transient 关键字的值并且不能覆盖它。 Private 指定该属性是私有的。子类继承 Private 关键字的值并且不能覆盖它。 #InterSystems IRIS for Health 0 0 0 13
文章 姚 鑫 · 九月 9 阅读大约需 2 分钟 第二十三章 Classes - 属性 第二十三章 Classes - 属性 形式上 IRIS 有两种属性: 属性,保存值。该值可以是以下任意值: 单个文字值,通常基于数据类型。 对象值(包括集合对象和流对象)。 多维数组。这种情况不太常见。 属性一词通常仅指作为properties的attributes,而不是指具有关联的属性。 关系,保持对象之间的关联。 可以在包含 ObjectScript 方法、Python 方法或两者组合的类中定义属性。但是,无法从 Python 方法访问关系。本节展示了一个示例类,其中包含显示以下一些变体的属性定义: #InterSystems IRIS for Health 0 0 0 18
文章 姚 鑫 · 九月 8 阅读大约需 2 分钟 第二十二章 Classes - 调用类方法的快捷方式 第二十二章 Classes - 调用类方法的快捷方式 调用类方法的快捷方式 使用 ObjectScript 调用类方法时,在以下情况下可以省略包(或更高级别的包): - 引用是在一个类内,并且被引用的类在同一个包或子包中。 - 引用位于类内,并且该类使用 IMPORT 指令导入包含引用的类的包或子包。 - 该引用位于方法内,并且该方法使用 IMPORT 指令导入包含引用的类的包或子包。 从 ObjectScript 或 Python 调用类方法时,在以下情况下可以省略包(或更高级别的包): #InterSystems IRIS for Health 0 0 0 21
文章 Lilian Huang · 九月 7 阅读大约需 7 分钟 Docker 简介 - 第 2 部分(Docker Compose、Docker File、Docker Volume) 您好!社区的各位老师, 在我的上一篇文章中,我们学习了以下主题: 什么是 Docker? Docker 的一些好处 Docker 是如何工作的? Docker 镜像 Docker容器 Docker 镜像存储库 InterSystems 的 Docker 镜像存储库 Docker安装 Docker 基本命令 使用 Docker 运行 IRIS 社区版 Docker 桌面图形用户界面 在本文中,我们将讨论以下主题: 使用 Docker Compose 文件( YAML 文件) Docker 文件的使用(用于构建 Docker 镜像) Docker 卷的使用 那么让我们开始吧。 #Docker #Open Exchange 0 0 0 25
文章 Lilian Huang · 九月 5 阅读大约需 11 分钟 HTTP请求监控响应时间 嗨,开发者们! 今天我想谈谈一个让我感到困难的话题。我相信你们中的很多人一定已经遇到过这种情况(所谓的“瓶颈”)。由于这是一个广泛的主题,因此本文将仅重点关注识别可能导致缓慢问题的传入 HTTP 请求。我还将向您提供我开发的一个小工具来帮助识别它们。 我们的软件变得越来越复杂,处理来自不同来源的大量请求,无论是前端还是第三方后端应用程序。为了确保最佳性能,必须有一个能够记录一些关键测量的日志系统,例如响应时间、global引用的数量以及每个 HTTP 响应执行的代码行数。作为工作的一部分,我参与了 EMR 软件的开发以及事件分析。由于用户负载主要来自 HTTP 请求(REST API 或 CSP 应用程序),因此在发生普遍缓慢问题时进行此类测量的需求变得显而易见。 #监视 #InterSystems IRIS #Open Exchange Open Exchange app 0 0 0 34
文章 姚 鑫 · 九月 5 阅读大约需 2 分钟 第十九章 ObjectScript - 执行例程 第十九章 ObjectScript - 执行例程 执行例程 执行例程时,使用DO命令,如下所示: do ^routinename 要执行一个过程、函数或子程序(不访问其返回值),可以使用以下命令: do label^routinename 或 do label^routinename(arguments) 要执行过程、函数或子例程并引用其返回值,可以使用$$label^routinename或$$label^routinename(参数)形式的表达式。例如: set myvariable=$$label^routinename(arguments) 在所有情况下,如果标签位于同一个例程中,则可以省略插入符号和例程名称。例如: #InterSystems IRIS for Health 0 0 0 16
文章 姚 鑫 · 九月 4 阅读大约需 3 分钟 第十八章 ObjectScript - 使用例程 第十八章 ObjectScript - 使用例程 例程 可以将例程视为 ObjectScript 程序。例程可以从头开始编写,也可以在编译类时自动生成。 Procedures, Functions, and Subroutines 过程、函数和子程序 在 ObjectScript 例程中,标签定义以下代码单元之一的起点: Procedures过程(可选地返回一个值)。过程中定义的变量是该过程私有的,这意味着它们不可用于其他代码。对于函数和子例程来说,情况并非如此。 过程也称为过程块。 函数(返回值)。 子例程(不返回值)。 建议使用过程Procedures,因为这可以简化控制变量范围的任务。然而,在现有代码中,可能还会看到函数和子例程,并且能够识别它们非常有用。以下列表显示了所有这些形式的代码的外观。 #InterSystems IRIS for Health 0 0 0 14
文章 Kelly Huang · 九月 3 阅读大约需 8 分钟 独立模式下 EMPI 的安装和适配 - FHIR之转换和摄取 大家好。 在上一篇文章中,我们了解了如何配置 EMPI 来接收 FHIR 消息。为此,我们安装了 InterSystems 提供的 FHIR 适配器,该适配器配置了一个可以向其发送 FHIR 消息的 REST 端点。然后,我们将获取消息并将其转换为 %String,我们将通过 TCP 将其发送到 HSPIDATA 命名空间中配置的 EMPI 的输出。 好吧,是时候看看我们如何检索消息、将其转换回 %DynamicObject 并将其解析为 EMPI 用来存储信息的类。 TCP消息接收 正如我们所指出的,从配置了 FHIR 资源接收的生产中,我们已将消息发送到我们有业务服务侦听的特定 TCP 端口,在我们的例子中,该业务服务将是一个简单的EnsLib.TCP。 PassthroughService的目标是捕获消息并将其转发到业务流程,我们将在其中执行所需的数据转换。 这里有我们的商业服务: 这是它的基本配置: #FHIR #提示和技巧 #HealthShare 0 0 0 28
文章 Kelly Huang · 九月 3 阅读大约需 7 分钟 在 Python 上使用IRIS REST API 进行 SQL 迁移 对于即将到来的Python 竞赛,我想制作一个小型演示,介绍如何使用 Python 创建一个简单的 REST 应用程序,该应用程序将使用 IRIS 作为数据库。使用这个工具 FastAPI框架,高性能,易学,快速编码,可用于生产 SQLAlchemy 是 Python SQL 工具包和对象关系映射器,为应用程序开发人员提供 SQL 的全部功能和灵活性 Alembic 是一个轻量级数据库迁移工具,可与 SQLAlchemy Database Toolkit for Python 一起使用。 Uvicorn 是 Python 的 ASGI Web 服务器实现。 #Python #REST API #SQL #InterSystems IRIS Open Exchange app 1 0 0 30
文章 姚 鑫 · 九月 3 阅读大约需 2 分钟 第十七章 ObjectScript - 使用宏和包含文件include file 第十七章 ObjectScript - 使用宏和包含文件 使用宏和包含文件 如前所述,可以定义宏并稍后在同一类或例程中使用它们。更常见的是,在包含文件中定义它们。 Macros ObjectScript 支持定义替换的宏。定义可以是一个值、整行代码或(使用 ##continue 指令)多行。 要定义宏,请使用#define 指令或其他预处理器指令。例如: #define macroname <definition> 要引用宏,请使用以下语法: $$$macroname 或者: $$$macroname(arguments) 使用宏来确保一致性。例如: #InterSystems IRIS for Health 0 0 0 17
文章 姚 鑫 · 九月 2 阅读大约需 2 分钟 第十六章 ObjectScript - 日期和时间值 第十六章 ObjectScript - 日期和时间值 日期和时间值 当地时间 要访问当前进程的日期和时间,可以使用 $HOROLOG 特殊变量。因此,在许多 IRIS 应用程序中,日期和时间都以此变量使用的格式存储和传输。这种格式通常称为$H 格式或$HOROLOG 格式。 $HOROLOG 从操作系统检索日期和时间,因此始终位于本地时区。 IRIS 类库包含以更常见的格式(例如 ODBC)表示日期的数据类型类,许多应用程序使用这些数据类型而不是 $H 格式。请注意,通过数据类型类中的 %Library.PosixTime支持 POSIX 时间,新应用程序应使用该类来表示日期/时间值。 #InterSystems IRIS for Health 0 0 0 16
文章 Jingwei Wang · 九月 1 阅读大约需 2 分钟 JWT - JSON Web Token Authentication JWT Authentication 原理及验证流程 原理 JWT 是一种结构紧凑、URL 安全的身份验证、授权或信息交换方式。在身份验证的情况下,服务器会向已通过身份验证的客户端提供一个 JWT,这样客户端在 JWT 过期之前就无需再提供密码来访问服务器上受保护的资源。 #REST API #认证 #InterSystems IRIS for Health 0 0 0 24
文章 Michael Lei · 八月 31 阅读大约需 1 分钟 常见问题--如何根据ID重建索引 InterSystems 常见问题解答 通过在持久类(=table)定义中提供的%BuildIndices() 方法的参数中指定要重建索引的 ID 的开始值和结束值,您可以仅重建该范围内的索引。 例如,要仅针对 ID=10 到 20 重建 Sample.Person 类中的 NameIDX 索引和 ZipCode 索引,请执行以下代码(ID 范围在第 5 个和第 6 个参数中指定)。 #SQL #关系表 #对象数据模型 #提示和技巧 #索引 #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 46
文章 姚 鑫 · 八月 31 阅读大约需 2 分钟 第十四章 ObjectScript - 系统函数 第十四章 ObjectScript - 系统函数 系统函数 本节重点介绍 ObjectScript 中一些最常用的系统函数。 这些函数的名称不区分大小写。 类库还提供了大量实用方法,可以像使用函数一样使用它们。 Value Choice 在给定一些输入的情况下,可以使用以下函数来选择一个值: - $CASE 将给定的测试表达式与一组比较值进行比较,然后返回与匹配的比较值关联的返回值。例如: #InterSystems IRIS for Health 0 0 0 15
文章 Louis Lu · 八月 30 阅读大约需 1 分钟 使用代码获取数据库剩余空间 大家可以通过InterSystems IRIS 管理门户SMP查看当前数据库剩余空间,路径是 Management Portal: System Operation > Database 当然大家也可以通过下面的代码查看数据库的可用磁盘空间: #InterSystems IRIS 0 0 0 19
文章 Jingwei Wang · 八月 30 阅读大约需 5 分钟 使用 SQLAlchemy 将表传输到 IRIS 或从 IRIS 获取表 案例描述 假设您是一名 Python 开发人员或拥有一支训练有素的 Python 专业团队,但您分析 IRIS 中某些数据的期限很紧迫。当然,InterSystems 提供了许多用于各种分析和处理的工具。然而,在给定的场景中,最好使用旧的 Pandas 来完成工作,然后将 IRIS 留到下次使用。对于上述情况和许多其他情况,您可能需要从 IRIS 获取表来管理 InterSystems 产品之外的数据。但是,当您有任何格式(即 CSV、TXT 或 Pickle)的外部表时,您可能还需要以相反的方式执行操作,您需要在其上导入并使用 IRIS 工具。无论您是否必须处理上述问题,Innovatium让我明白,了解更多解决编码问题的方法总是能派上用场。好消息是,从 IRIS 引入表时,您不需要经历创建新表、传输所有行以及调整每种类型的繁琐过程。本文将向您展示如何通过几行代码快速将 IRIS 表转换为 Pandas 数据框架并向后转换。您可以在我的GitHub上查看代码,您可以在其中找到包含本教程每个步骤的 Jupiter Notebook。 #Innovatium #Python #SQL #InterSystems IRIS #Open Exchange 0 0 0 35
文章 姚 鑫 · 八月 29 阅读大约需 4 分钟 第十三章 ObjectScript - 特殊变量 第十三章 ObjectScript - 特殊变量 特殊变量 一些特殊变量提供有关代码运行环境的信息。其中包括以下内容: - $HOROLOG,包含操作系统给出的当前进程的日期和时间。请参阅日期和时间值。 - $USERNAME 和 $ROLES,包含有关当前使用的用户名以及该用户所属角色的信息。 write "You are logged in as: ", $USERNAME, !, "And you belong to these roles: ",$ROLES $ZVERSION,其中包含标识当前运行的 IRIS 版本的字符串。 其他包括 $JOB、$ZTIMEZONE、$IO 和 $ZDEVICE。 #InterSystems IRIS for Health 0 0 0 12
文章 Jimmy Xu · 八月 28 阅读大约需 2 分钟 使用Populate Utility 生成数据 大家好,由于我目前在做一个数据分析的demo,所以需要在IRIS Data platform存储百万行数据供我测试。因此使用Populate Utility 来自动生成我需要的数据。 #ObjectScript #Caché #InterSystems IRIS 0 0 0 59
文章 姚 鑫 · 八月 28 阅读大约需 3 分钟 第十二章 ObjectScript - 命令 第十二章 ObjectScript - 命令 命令 本节概述了在 ObjectScript 常用命令。其中包括与其他语言中的命令相似的命令,以及其他语言中没有等效项的其他命令。 命令名称不区分大小写,尽管按照惯例它们在运行文本中显示为全大写。 熟悉的命令 ObjectScript 提供命令来执行熟悉的任务,如下所示: - 要定义变量,请使用 SET(如前所示)。 - 要删除变量,请使用 KILL,如前所示。 - 要控制逻辑流程,请使用以下命令: - IF、ELSEIF 和 ELSE 一起工作 - FOR - WHILE,可以单独使用 - DO 和 WHILE 可以一起使用 - QUIT,也可以返回一个值 #InterSystems IRIS for Health 0 0 0 16
文章 Claire Zheng · 八月 28 阅读大约需 1 分钟 【动画视频】医院信息科Q&A:CDA文档数据该如何利用? 医院拥有丰富的CDA文档库,如何实现数据的有效利用和共享? //player.bilibili.com/player.html?aid=274423967&bvid=BV1mF411f77g&cid=1226555487&page=1[这是一个嵌入式链接,但由于您拒绝了访问嵌入式内容所需的 Cookie,您无法直接在网站上进行查看。要查看嵌入式内容,您需要在 Cookie 设置中接受所有 Cookie。] #FHIR #HL7 #InterSystems 业务解决方案和架构 #视频 #InterSystems IRIS for Health 0 0 0 16
文章 姚 鑫 · 八月 27 阅读大约需 1 分钟 第十一章 ObjectScript - 操作符 第十一章 ObjectScript - 操作符 操作符 ObjectScript 中的运算符优先级严格是从左到右;在表达式中,运算按照它们出现的顺序执行。可以在表达式中使用显式括号来强制某些操作先于其他操作执行。 通常,即使并不严格需要括号,也会使用括号。很有用,因为它使代码的意图更加清晰。 Familiar Operators ObjectScript 为常见活动提供以下运算符: #InterSystems IRIS for Health 0 0 0 15
文章 姚 鑫 · 八月 26 阅读大约需 3 分钟 第十章 ObjectScript - 按值或按引用传递变量 第十章 ObjectScript - 按值或按引用传递变量 按值或按引用传递变量 调用方法时,可以通过值或引用将变量值传递给该方法。在大多数情况下,这些变量是没有下标的局部变量,因此本节首先讨论这些变量。 与其他编程语言一样, IRIS 具有一个存储位置,其中包含每个局部变量的值。变量的名称充当内存位置的地址。 当将没有下标的局部变量传递给方法时,可以按值传递该变量。这意味着系统会复制该值,从而使原始值不受影响。要传递内存地址,请在参数列表中紧邻变量名称之前放置一个句点。 为了演示这一点,请考虑名为 Test.Parameters 的类中的以下方法: ClassMethod Square(input As %Integer) As %Integer { set answer=input*input set input=input + 10 return answer } 假设定义一个变量并将其按值传递给此方法: #InterSystems IRIS for Health 0 0 0 16
文章 Michael Lei · 八月 26 阅读大约需 3 分钟 从患者端开始,建立全国统一的个人电子病历 今年两会期间,有多名两会委员联名提出了《关于建设全国统一医院电子病历系统的提案》,国家卫健委相关部门也马上给予回应,称正在研究建立全国统一的电子健康档案、电子病历。结合数字中国的主要目标之一,让数据多跑腿,群众少走路,在这一背景下,从患者端开始,建立全国统一的电子病历APP已经变得迫切而重要。这不仅有助于提高医疗服务的效率和质量,还能够让患者更好地参与到医疗决策中,实现信息的共享和整合。 电子病历与患者共享的必要性和重要性 #FHIR #InterSystems IRIS for Health 0 0 0 62
文章 姚 鑫 · 八月 25 阅读大约需 2 分钟 第九章 ObjectScript - 多维数组 第九章 ObjectScript - 多维数组 多维数组 在 ObjectScript 中,任何变量都可以是多维数组(也称为数组)。多维数组通常用于保存一组以某种方式相关的值。 ObjectScript 提供的命令和函数可以方便、快速地访问值。 可能会也可能不会直接使用多维数组,具体取决于使用的系统类和自己的偏好。当需要一个用于存储相关值集的容器时,IRIS 提供了一种基于类的替代方案。请参阅集合类。 Basics 多维数组由任意数量的节点组成,由下标定义。以下示例设置数组的几个节点,然后打印数组的内容: #InterSystems IRIS for Health 0 0 0 28