在ensemble使用$SYSTEM.Encryption.SHA1Hash()加密“ensmble”得到“t????????????m??Afù????÷??%í”,但使用网络的SHA1加密方法得到”74ba9a06cbbc92f06d9b4166f9c5b4f7f8251aed“,如何使用ensemble得到与网络上一样的加密结果
InterSystems IRIS® 数据平台、InterSystems IRIS® for Health 和HealthShare® Health Connect 的2026.1版本现已全面上市 (GA)。这是一个扩展维护 (EM) 版本。
版本亮点:
- 数据库可扩展性增强:取消了历史数据库大小限制,实现了无缝增长,超过了以前的大小限制,无需进行数据转换。其他底层性能改进进一步优化了大规模操作。
- 表分区:根据用户定义的逻辑键拆分表和相关索引数据,以便在数据库间轻松映射。这可以实现存储分层,提高查询性能和超大表的运行效率。该功能是一项实验性功能,可通过 "早期访问计划"订阅更新并转达您的反馈意见。
- 互操作性用户体验改进:此更新具有新的 BPL 编辑器、对生产配置的额外改进以及 DTL 编辑器,其中包括人工智能辅助 DTL 解释。要了解更多信息,请访问InterSystems 学习中心。对于现有客户,这些功能仍可选择使用。在集成方面,该版本引入了 Mirth 迁移工具,以加速传统集成引擎的替换和现代化。
- FHIR 服务器授权、批量数据和管理更新: 大幅扩展 FHIR 功能,包括细粒度 OAuth 范围执行和结果过滤,从而实现更精确的数据访问控制。增强批量 FHIR(JWT 授权、从 EHR 计划导出)和更快的服务器/软件包管理。
InterSystems IRIS®数据平台的2023.1.7维护版本 、 InterSystems IRIS® for **** for HealthTM和HealthShare®Health Connect的 2023.1.7 维护版本现已全面上市 (GA)。
请通过Ideas Portal使用 "发布后反馈"类别分享您的反馈意见,以便我们共同打造更好的产品。
文档
您可以在这些页面上找到详细的变更列表和升级清单:
早期使用计划 (EAP)
现在有许多 EAP 可用。请查看此页面并注册您感兴趣的项目。
如何获取软件?
InterSystems IRIS 和 InterSystems IRIS for Health 的完整安装包可从 WRC 的InterSystems IRIS 数据平台完整工具包页面获取。HealthShare Health Connect工具包可从 WRC 的HealthShare 完整工具包页面获取。容器映像可从InterSystems 容器注册中心获取。
可用性和软件包信息
此版本附带适用于所有支持平台的经典安装包,以及 Docker 容器格式的容器映像。 有关完整列表,请参阅支持的平台文档。这些维护版本的版本号是2023.
已包含在 SystemPerformance 中
SystemPerformance 已内置 NFS 磁盘命令(包括 nfsiostat),但默认处于禁用状态。通过以下命令启用:
$$Enablenfs^SystemPerformance()
启用后,系统将添加以下 NFS 命令(以 Linux 为例):
/usr/sbin/nfsstat -cn/usr/sbin/nfsiostat [间隔] [次数]
请确保这些命令已安装且可通过操作系统运行
如需重新禁用,可执行:
向 SystemPerformance 添加通用命令
添加任意操作系统工具时,会在 下创建一个"用户"命令。
示例:
%SYS>set ^IRIS.SystemPerformance("cmds","user",$i(^IRIS.SystemPerformance("cmds","user")))=$lb("nfsiostat","/usr/sbin/nfsiostat ","间隔"," ","次数"," > ")
操作建议:
添加前建议先查看现有命令结构,选择合适的配置文件名称:
为 SystemPerformance 添加带时间戳的
通过脚本可简化实现流程。
包装脚本
保存为 /usr/local/bin/nfsiostat_ts.sh:
#!/bin/bash
# 用法:nfsiostat_ts.sh <间隔> <次数>
INTERVAL=${1:-5}
COUNT=${2:-12}
nfsiostat "$INTERVAL" "$COUNT" | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush() }'
我以前可能提到过这一点:我认为可视化跟踪(Visual Traces),即包含每个步骤完整内容的序列图,是 IRIS 数据平台的一项神奇功能!以可视化跟踪的方式提供有关 API 内部工作原理的详细信息,对 IRIS 平台上的项目非常有用。当然,这适用于我们没有开发高负荷解决方案的情况,在这种情况下,我们根本没有时间保存/读取信息。对于所有其他情况,欢迎阅读本教程!
大家好
我将为大家提供一个快速小技巧,教大家如何实施一个 AI Agent来搜索集成到 Teams 中的 Intersystems 文档。
是的,我知道文档页面有自己的人工智能搜索引擎,而且相当有效,但这样我们就能更快地访问,尤其是如果 Teams 是贵公司的企业工具。
您还可以创建另一个 AI Agent来搜索在开发者社区中发布的文章(该社区也有自己的集成人工智能搜索引擎)。
供应链是指由公司业务领域及其供应商和合作伙伴(利益相关者)执行的一系列流程和活动,从原材料采购、生产到交付给最终消费者。利用 InterSystems IRIS 的协调功能,供应链管理解决方案可以更好地管理供应链:

大家好。好久不见。我想再次与大家分享我最近学习的内容 通过 JDBC 使用 SQL 创建外来表。
因为我同时也在学习 IRIS BI,所以我从这个 Sample-BI docker 环境开始。
https://github.com/intersystems/Samples-BI
启动环境后,以超级用户身份登录管理门户http://localhost:52773/csp/sys/UtilHome.csp。
将命名空间切换为IRISAPP。
.png)
我们会发现所有样本数据都存储在IRISAPP 命名空间中。让我们找一张简单的表来测试外来表功能 🤣
System Explorer > SQL
让我们通过在 "执行查询(Execute Query tab) "选项卡中执行以下 SQL 查询来试试表HoleFoods.Outlet
SELECT
ID, City, Country, Latitude, Longitude, Population, Type
FROM HoleFoods.Outlet
太棒了!😉 表中有 35 个条目。
陷入困境
直到今年年初,我几乎没怎么做过编程工作——我已经厌倦了它。
在担任多年一线软件工程师和数据科学家后,我在2015年左右陷入了职业倦怠。我转而从事以“外部创新”为主的业务拓展角色,并于2019年加入InterSystems担任产品经理。我怀念编程的创造性,但并不怀念其中的枯燥乏味。无休止的样板代码编写、调试和上下文切换让我创意枯竭。就像电影《好好先生》(Yes Man)中金·凯瑞饰演的角色一样,我发现自己对新项目总是说“不”——以至于我换了职业!
然后,AI编程助手出现了。而我,成了对机器人说“好”的“好好先生”。
第一幕:狂热(“对一切都说好!”)
当我刚开始使用AI编程助手(先是Windsurf,然后是Cline,接着是Roo Code,现在是Claude Code,还尝试过opencode)时,感觉就像变魔术一样。自然语言 → 可运行的代码。我对每个建议、每个重构、几乎每个疯狂的想法都说“好”。
我第一个主要的AI辅助项目是几个月前启动的一个内部项目——为IRIS开发的一系列Python脚本和管道。我兴奋不已,让机器人尽情发挥: “添加这个功能!”——好!“重构那个模块!”——好!“让它可配置!”——好!“添加更多集成!”——好!
创意的能量回来了。代码如泉涌。我又感到自己高效了起来。
然后,我的实习生——一名软件工程专业的学生——查看了代码库。
他并不满意。
摘要
| 警报编号 | 受影响的产品和版本 | 风险类别和评分 | 明确要求 |
| DP-448888 | 产品: |
- InterSystems IRIS® 数据平台
- InterSystems IRIS® for Health
- InterSystems Health Connect™版本
- 2024.3.0
- 2025.1.0 - 2025.1.3
- 2025.2.0
- 2025.3.0 | 运行:高风险 | 使用了 ≥ 2 TB 的数据库缓存 |
问题
在上述版本中,如果数据库缓存大于或等于 2,097,152 MB(2 TB),实例可能无法启动或在运行过程中挂起。请注意,未配置实例的初始数据库缓存分配是系统物理内存的 25%;因此,如果物理内存≥ 8 TB,则未配置实例可能存在风险。更多信息,请参阅为数据库和常规缓存分配内存以及数据库缓存 (globals) 配置参数。
如果使用高级配置选项分配多个块大小的缓冲区,则必须以global缓冲区为单位计算限制。只要所有大小的缓冲区总和少于 268,435,456 个,就不会有风险。
此问题影响以下产品的 2024.3、2025.1.0 - 2025.1.3、2025.2.0 和 2025.3.
InterSystems 常见问题
如果您尝试从顶级节点删除在子脚本级别映射的全局变量,您将收到一个<SLMSPAN>错误,并且它不会被删除。这是因为用于子脚本级别映射全局变量的kill命令不能跨映射使用。
// Suppose subscript-mapped globals exist in different databases, as shown below:^TESTK要只删除当前命名空间(数据库)中的全局,请使用以下命令:
NAMESPACE>在子脚本级别映射的全局变量必须移动到数据库并直接删除。
要切换到数据库,请使用以下命令:
set使用 导入全局时,默认行为是在导入之前删除全局变量。因此,如果目标全局变量是子脚本级别映射的,则会发生<SLMSPAN>错误。在这种情况下,指定/mergeglobal标志作为system.OBJ.Load的第二个参数以防止预先删除,如下所示:
[参考资料]
无法导出映射全局。
如何编译映射的类和例程?
在上一篇文章中,我们介绍了IrisOASTestGen——一个基于OpenAPI 2.0规范为InterSystems IRIS生成REST API测试代码的工具。该文章展示了如何使用OpenAPI Generator附带的默认模板来搭建测试用例。本文将聚焦于接下来的自然步骤**:自定义生成的测试代码**。通过使用Mustache模板扩展代码生成逻辑,我们可以表达更丰富的语义、实现CRUD感知测试,并创建更有意义的测试套件。本文的示例将修改IrisOASTestGen,为createPerson操作生成测试,包括遍历所有预期响应。这将展示如何使用OpenAPI规范中的自定义字段来驱动Mustache模板内的条件渲染。
OpenAPI扩展以支持CRUD操作
为了使代码生成支持CRUD操作,OpenAPI规范可以在vendorExtensions中包含自定义字段。这些自定义字段作为标志,Mustache模板可以检测到它们。
InterSystems 定期更新我们的软件发布政策和实践,以适应客户的需求。
为了让客户和合作伙伴更容易预测,我们现在改变了维护版本的发布节奏,并对其他几个方面进行了调整。
本文总结了我们数据平台产品的发布周期和最近的变化,并宣布了一些新的更新。
为什么要改变?
- 我们的客户更快地接受了我们的新版本。
- 我们的客户更快地采用新的平台版本(操作系统和协调器)。
- 安全问题更频繁地出现,尤其是在第三方库中。
- 我们的客户要求更可预测的交付日期。
有什么相同之处?功能发布节奏提醒
自 2018 年以来,InterSystems 一直在使用 InterSystems IRIS 的双流功能发布节奏(请参阅原始公告)。我们提供
- 持续交付(Continuous delivery, CD)版本——这些版本可快速访问新功能,非常适合开发和部署持续更新的应用程序,并可立即利用新功能。有时也称为 "快车"。
- 扩展维护(Extended maintenance, EM)版本——这些版本的发布频率低于持续交付版本,但具有维护版本所具有的更高稳定性。它们是大型企业应用程序的理想选择,在这些应用程序中,在维护版本中轻松获得修复比尽早获得新功能更重要。有时也称为“慢车”。
EM 发行版的版本号为 YYYY.1(例如 2022.1 或 2023.1),因此很容易识别。 CD 发行版的版本号为 YYYY.2、YYYY.3 等。
大家好! 👋
欢迎来到IRIS IO 工具系列的第二部分。这个扩展是我提交给InterSystems 2025 年 "将想法变为现实 "竞赛的作品,它为您提供了一个直观而强大的界面,可直接在 VS 代码中导入和导出数据。
- 您可以在我的 GitHub 页面找到该扩展:pietrodileo/iris_io_utility。
- 在 VSCode 上安装扩展的 VSIX 文件可在相关发布页面找到:releaseases: iris-io-utility
如果你觉得这个扩展有用,请考虑在竞赛中为我投票!
在上一篇文章中,我们介绍了
- 扩展概述
- ODBC 驱动程序配置
- 导出功能
现在是时候深入了解导入引擎(Import Engin)了_它旨在支持
- CSV
- TXT(任意分隔符)
- JSON
- XLSX
该扩展具有智能推理层,可分析输入文件并自动建议最佳的 IRIS 表格数据格式,提供有指导的辅助数据建模。
导入模式--两种不同的工作流程
该扩展支持两种不同的方案:
- 创建新表
- 加载到现有表格
选项 A - 导入新表
在以下情况下,这是理想的选择
- 加载新数据集
- 您希望从头开始,使用全新的表和模式
- 处于原型设计或探索阶段
会发生什么?
数据库表中索引的力量
在使用数据库时,大多数开发人员都了解索引的概念以及使用索引的原因:加快数据检索速度。但是,索引的真正影响往往只有在比较有索引和没有索引的情况时才会显现出来。
你知道没有索引会发生什么吗?
试想一个有三列的表:姓名、年龄和手机号码。
.png)
现在,考虑一下这个查询:
如果年龄列没有索引,数据库引擎会
- 检查 WHERE 条件字段是否有索引。
- 如果没有,它将扫描整个表(全表扫描)。
- 对于每一行,它会检查年龄值并返回匹配结果。
这意味着引擎会遍历整个数据结构,这对于大型表来说非常耗时。
索引会发生什么情况?
现在,如果年龄列有索引,流程就会发生巨大变化:
- 引擎会直接进入索引结构。
- 它会找到 Age = 26 的节点。
- 索引指向主表中相应的记录 ID。
- 结果几乎是瞬间获取的。
这就是为什么索引是如此强大的优化工具。
现实生活中的一课
最近,我们遇到了一个有趣的情况,凸显了索引的重要性。
我们的表有 5 条记录,而年龄列是有索引的。然后,我们错误地从索引结构(而不是主表)中删除了两个条目。这两个条目对应的是 ID X001 和 X005,它们的年龄都是 26 岁。
当我们运行
SELECT ID, Age, EmpId, Mobile, NameFROM Company.Employee WHERE Age = 26
我们预计会有 3 条记录(因为主表中仍有这些记录),但只出现了 2 条记录。
为什么呢?
该演示基于原始类描述。
使用的数据类包括地址、人员、雇员和公司。
为使演示更具吸引力,添加了按 ID 命名的 JSONtoString 方法。
InterSystems 常见问题
使用 TCP 适配器的业务主机保持连接和池大小的默认设置如下:
PoolSize = 1
如果网络问题导致与业务主机的连接丢失,生产端将无法检测到这一情况,也不会接受新的连接。 在这种情况下,事件日志中不会记录任何事件。 如果将 StayConnected 设置为默认值(-1),连接将不会超时,您需要重启业务主机后才能接受新的连接。 我们建议将 StayConnected 设置为大于或等于 0 的值,以避免出现这种情况。
例如,如果将其设置为 300(秒),TCP 业务主机在 300 秒或更长时间内没有收到任何新信息,就会自动断开连接并重新连接。
对于繁忙的系统,通常会将 StayConnected(保持连接)值设为一个较小的值,如 5 秒。
本文将讨论 Microsoft Visual Studio Code IDE中包含的所有调试工具 。
内容包括
- 断点
- 观察窗口
- 调用堆栈
让我们从了解调试要求开始!
前提条件
有两个插件(扩展)可用于调试 ObjectScript:
第一个是 InterSystems ObjectScript 扩展包的一部分 。第二个是 Serenji,它是一个独立的插件,提供编辑器、文件管理器和调试功能。这两个插件都可以从插件商店安装。要激活关键功能,Serenji 需要许可证。在本文中,我们将使用 InterSystems ObjectScript 扩展包来降低学习难度。在掌握基础知识后,您可以考虑购买 Serenji 的付费许可证。
IPM 0.10.6 版于 2026 年 2 月 24 日发布。该版本主要是错误修复,但在软件包中添加了-export-python-deps标志,并发布了将 Python 依赖关系与 IPM 模块本身包含在一起的命令。像往常一样,你可以在GitHub 页面或社区注册中心查看。
以下是完整的更新日志:
已添加
- #1024:为发布命令添加了 -export-python-deps 标志
修复
- #996:确保 COS 命令在专用、隔离的上下文中执行
- #1002:列出已配置的软件源时,只有在定义了令牌时才显示 TokenAuthMethod。
- #1024:在 -export-python-deps 下,带有 PythonWheels 的模块已正确打包。
- #1061:修复从 OCI/ORAS 注册表安装时的问题
- #1065:修正了 IPM 0.10.3 中引入的回归,该回归删除了对以目录作为名称的资源(例如 /inc )的支持
- #1072:修复了测试或验证阶段未加载作用域依赖关系的问题。
如果您有任何问题、建议或需要关注的 bug,请随时在这里或GitHub 页面上提出。(在 GitHub 上,问题和建议应放在讨论页面,而错误应放在问题页面)。
大家好,
我们非常高兴地与大家分享,我们刚刚推出了一个新的免费互动教程,专门为那些刚刚接触 InterSystems IRIS 并希望了解其核心概念的人设计。
🧑🏫InterSystems IRIS 的数据模型🧑💻

在现代医疗保健领域,寻找临床上相似的患者往往感觉像大海捞针。传统的关键字搜索往往会失败,因为医学语言具有高度的细微差别;搜索 "心力衰竭 "可能会漏掉包含 "充血性心力衰竭 "的记录。
我很高兴与大家分享 iris-medmatch,这是一个基于InterSystems IRIS for Health的人工智能患者匹配引擎。通过利用矢量搜索(vector search),该工具能够理解临床意图,而不仅仅是匹配字面字符串。
## 核心创新:语义临床搜索
iris-medmatch "在原始FHIR数据和可操作的人工智能洞察力之间架起了一座桥梁。该引擎利用 "all-MiniLM-L6-v2 "模型,将临床条件转化为数学向量。
标准搜索查找的是准确的单词,而该引擎能理解**临床上下文**。例如,它可以使用数学向量相似性将 "高血压 "患者与 "高血压 "搜索匹配起来。
✨ 主要技术特点
- 核心:InterSystems IRIS、嵌入式 Python、InterSystems FHIR 服务器、矢量搜索
- 人工智能:Python、ONNX 运行时、HuggingFace 变换器
- 前端Angular 18+
技术架构
该解决方案的优势在于其架构效率。通过嵌入式 Python 运行 Transformers,我们消除了 "数据重力 "问题。数据留在 IRIS 中,人工智能处理在数据所在的地方进行。
🚀应用演练
1.
什么是 FHIR Profile??
FHIRProfile是规则和约束的集合,用于定制和完善基础快速医疗互操作性资源 (FHIR) 资源(resource)。Profiling是一个重要的过程,它可以调整基础 FHIR 资源标准,以满足特定用例、地理区域、医疗机构或临床工作流程的独特要求。
基础 FHIR 规范为资源(如病人、观察或药物)提供了通用、灵活的定义,而Profiling则将这些通用资源转化为更精确的资源。这就确保了为特定社区或实施量身定制的数据交换的一致性和互操作性。
FHIR 旨在覆盖全球各种医疗保健场景。配置文件允许实施者在不丧失标准化优势的情况下调整这一通用平台。
Embeddedpy-bridge:嵌入式 Python 工具包
概述
嵌入式 Python改变了 InterSystems IRIS 的游戏规则,可直接在数据库中访问庞大的 Python 生态系统。但是,在 ObjectScript 和 Python 之间架起桥梁有时会让人感觉像是在两个不同的世界之间转换。
为了实现这种无缝过渡,请使用embeddedpy-bridge。
该软件包是一个以开发人员为中心的实用工具包,旨在为嵌入式 Python 提供高级 ObjectScript 封装、熟悉的语法和强大的错误处理功能。它允许开发人员使用他们已经熟悉的本地 IRIS 模式与 Python 数据结构交互。
挑战
虽然 %SYS.Python 库功能强大,但开发人员经常面临一些障碍:
- 处理代理:使用原始代理浏览 Python 列表和字典对于 ObjectScript 来说并不 "原生"。
- 迭代:标准 ObjectScript
While循环无法与 Python 迭代器进行本地 "对话"。 - 命名空间管理:确保 Python 实用程序在整个系统中可用。
解决方案:embeddedpy-bridge
我的目标是创建一个 "桥梁",让 Python 感觉像是 ObjectScript 中的一等公民。
主要功能
py前缀约定:%ZPython.Utils
你好
数据迁移通常听起来像是一个简单的 "将数据从 A 转移到 B 的任务",直到你真正去做。实际上,这是一个融合了规划、验证、测试和技术精度的复杂过程。
我曾在多个项目中负责将数据迁移到在 IRIS(TrakCare)上运行的 HIS 中,在这些项目中,我认识到成功来自于纪律和自动化的结合。
以下是我想强调的几个要点。
1.从定义好的数据格式开始。
在打开第一个文件之前,确保每个人,尤其是数据提供者,都清楚地了解您所期望的确切数据格式。尽早定义模板可以避免不必要的来回奔波和返工。
虽然 Excel 或 CSV 格式很常见,但我个人认为使用制表符分隔的文本文件(.txt)上传数据是最好的。它既轻便又一致,还能避免文本字段内的逗号问题。
PatID DOB Gender AdmDate
10001 2000-01-02 M 2025-10-01
10002 1998-01-05 F 2025-10-05
10005 1980-08-23 M 2025-10-15确保文件中提供的日期格式正确且在整个文件中保持不变,因为所有这些文件通常都是从 Excel 文件转换而来,而 Basic excel 用户可能会在提供错误的日期格式时犯错。错误的日期格式在转换为 horolog 时会让您恼火。
在最近的竞赛中,看到更多的人在创建 VS Code 扩展程序,这令人鼓舞。不过我注意到,在三个需要使用凭据进行连接的扩展中,只有我的gj :: dataLoader 利用了历史悠久、官方支持的InterSystems Server Manager扩展来获取连接定义并安全地处理凭据。
开发人员,你们好!
请注意,开发者社区将于 2026 年 2 月 21-22 日进行定期维护。
.png)
🎉🎉🎉🎉🎉祝大家除夕快乐,阖家安康!🎉🎉🎉🎉🎉
我有一个新项目,要将 REST 响应中的信息存储到 IRIS 数据库中。我需要同步来自至少二十几个不同 REST 端点的信息,这意味着需要创建将近这么多的 ObjectScript 类来存储来自这些端点的结果。
我能否使用 ChatGPT 来创建这些类?答案是 "可以",这非常好,因为这是我第一次尝试使用生成式人工智能来做一些有用的事情。生成长颈鹿喝汤的图片有点老....。
我是这么做的:
- 使用 "curl "查询端点,获取一些 JSON REST 调用输出示例。
- 访问 ChatGPT(InterSystems 为员工提供全公司范围的许可证)
- 与 ChatGPT 进行以下对话。
我在 "Message ChatGPT "提示符中输入了以下请求:
我:Generate an ObjectScript class that will hold data from the following JSON(生成一个 ObjectScript 类,用于保存以下 JSON 中的数据):
在输入 JSON 之前,我点击了 "Return",因此 ChatGPT 给我的提示如下:
ChatGPT:

