新增
文章 Jeff Liu · 7 hr 前 6m read

我以前可能提到过这一点:我认为可视化跟踪(Visual Traces),即包含每个步骤完整内容的序列图,是 IRIS 数据平台的一项神奇功能!以可视化跟踪的方式提供有关 API 内部工作原理的详细信息,对 IRIS 平台上的项目非常有用。当然,这适用于我们没有开发高负荷解决方案的情况,在这种情况下,我们根本没有时间保存/读取信息。对于所有其他情况,欢迎阅读本教程!

0
0 3
InterSystems Developer Community is a community of 26,417 amazing developers
InterSystems IRIS 程序员可以在这里学习、分享、了解最新动态、成长,以及收获快乐!
新增
文章 Lilian Huang · 三月 24 2m read

大家好

我将为大家提供一个快速小技巧,教大家如何实施一个 AI Agent来搜索集成到 Teams 中的 Intersystems 文档。

是的,我知道文档页面有自己的人工智能搜索引擎,而且相当有效,但这样我们就能更快地访问,尤其是如果 Teams 是贵公司的企业工具。

您还可以创建另一个 AI Agent来搜索在开发者社区中发布的文章(该社区也有自己的集成人工智能搜索引擎)。

0
0 5
新增
文章 Kelly Huang · 三月 23 6m read

供应链是指由公司业务领域及其供应商和合作伙伴(利益相关者)执行的一系列流程和活动,从原材料采购、生产到交付给最终消费者。利用 InterSystems IRIS 的协调功能,供应链管理解决方案可以更好地管理供应链:

0
0 6
新增
文章 Claire Zheng · 三月 23 4m read

大家好。好久不见。我想再次与大家分享我最近学习的内容 通过 JDBC 使用 SQL 创建外来表。

因为我同时也在学习 IRIS BI,所以我从这个 Sample-BI docker 环境开始。

https://github.com/intersystems/Samples-BI

启动环境后,以超级用户身份登录管理门户http://localhost:52773/csp/sys/UtilHome.csp。

将命名空间切换为IRISAPP

 

我们会发现所有样本数据都存储在IRISAPP 命名空间中。让我们找一张简单的表来测试外来表功能 🤣

System Explorer > SQL

 

让我们通过在 "执行查询(Execute Query tab) "选项卡中执行以下 SQL 查询来试试表HoleFoods.Outlet

SELECT
ID, City, Country, Latitude, Longitude, Population, Type
FROM HoleFoods.Outlet

 

太棒了!😉 表中有 35 个条目。

0
0 6
新增
文章 Nicky Zhu · 三月 20 10m read

陷入困境

直到今年年初,我几乎没怎么做过编程工作——我已经厌倦了它。

在担任多年一线软件工程师和数据科学家后,我在2015年左右陷入了职业倦怠。我转而从事以“外部创新”为主的业务拓展角色,并于2019年加入InterSystems担任产品经理。我怀念编程的创造性,但并不怀念其中的枯燥乏味。无休止的样板代码编写、调试和上下文切换让我创意枯竭。就像电影《好好先生》(Yes Man)中金·凯瑞饰演的角色一样,我发现自己对新项目总是说“不”——以至于我换了职业!

然后,AI编程助手出现了。而我,成了对机器人说“好”的“好好先生”。

第一幕:狂热(“对一切都说好!”)

当我刚开始使用AI编程助手(先是Windsurf,然后是Cline,接着是Roo Code,现在是Claude Code,还尝试过opencode)时,感觉就像变魔术一样。自然语言 → 可运行的代码。我对每个建议、每个重构、几乎每个疯狂的想法都说“好”。

我第一个主要的AI辅助项目是几个月前启动的一个内部项目——为IRIS开发的一系列Python脚本和管道。我兴奋不已,让机器人尽情发挥: “添加这个功能!”——好!“重构那个模块!”——好!“让它可配置!”——好!“添加更多集成!”——好!

创意的能量回来了。代码如泉涌。我又感到自己高效了起来。

然后,我的实习生——一名软件工程专业的学生——查看了代码库。

他并不满意。

0
0 16
新增
文章 Lilian Huang · 三月 18 5m read

目录

  1. 导言
  2. 版本控制
  3. 导出类
  4. 导出 BI 分析类
  5. 导出globals

简介。

本文将介绍如何通过 InterSystems 开发人员社区快速入门 Git 开发,以及使用 IRIS InterSystems 时的版本控制实践。我们将介绍需要导出互操作性类、global和分析元素(如立方体和仪表盘)的情况。这些场景包括 IRIS 的关键版本控制实践。

要开始学习,您需要

  1. 注册并登录GitHub
  2. 成为 Git 上intersystems-community组织的成员

开始使用 IRIS InterSystems 非常简单!

0
0 34
新增
InterSystems 官方 Claire Zheng · 三月 18

摘要

       
警报编号 受影响的产品和版本 风险类别和评分 明确要求
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.

0
0 5
新增
文章 Jeff Liu · 三月 17 1m read

InterSystems 常见问题

如果您尝试从顶级节点删除在子脚本级别映射的全局变量,您将收到一个<SLMSPAN>错误,并且它不会被删除。这是因为用于子脚本级别映射全局变量的kill命令不能跨映射使用。

// Suppose subscript-mapped globals exist in different databases, as shown below:
^TEST(A*~K*) -> database A
^TEST(L*~Z*) -> database B

// Trying to kill from the top level will result in a <SLMSPAN> error.
NAMESPACE>Kill ^TEST
<SLMSPAN> <- This error is output.

要只删除当前命名空间(数据库)中的全局,请使用以下命令:

NAMESPACE>Kill ^["^^."]TEST

在子脚本级别映射的全局变量必须移动到数据库并直接删除。

要切换到数据库,请使用以下命令:

zn "^^c:\intersystems\iris\mgr\user"
or
set $namespace="^^c:\intersystems\iris\mgr\user"

使用 $System.OBJ.

0
0 3
新增
文章 Kelly Huang · 三月 17 10m read

在上一篇文章中,我们介绍了IrisOASTestGen——一个基于OpenAPI 2.0规范为InterSystems IRIS生成REST API测试代码的工具。该文章展示了如何使用OpenAPI Generator附带的默认模板来搭建测试用例。本文将聚焦于接下来的自然步骤**:自定义生成的测试代码**。通过使用Mustache模板扩展代码生成逻辑,我们可以表达更丰富的语义、实现CRUD感知测试,并创建更有意义的测试套件。本文的示例将修改IrisOASTestGen,为createPerson操作生成测试,包括遍历所有预期响应。这将展示如何使用OpenAPI规范中的自定义字段来驱动Mustache模板内的条件渲染。


OpenAPI扩展以支持CRUD操作

为了使代码生成支持CRUD操作,OpenAPI规范可以在vendorExtensions中包含自定义字段。这些自定义字段作为标志,Mustache模板可以检测到它们。

0
0 4
新增
公告 Claire Zheng · 三月 15

InterSystems 定期更新我们的软件发布政策和实践,以适应客户的需求。

为了让客户和合作伙伴更容易预测,我们现在改变了维护版本的发布节奏,并对其他几个方面进行了调整。

本文总结了我们数据平台产品的发布周期和最近的变化,并宣布了一些新的更新。

为什么要改变?

  • 我们的客户更快地接受了我们的新版本。
  • 我们的客户更快地采用新的平台版本(操作系统和协调器)。
  • 安全问题更频繁地出现,尤其是在第三方库中。
  • 我们的客户要求更可预测的交付日期。

有什么相同之处?功能发布节奏提醒

自 2018 年以来,InterSystems 一直在使用 InterSystems IRIS 的双流功能发布节奏(请参阅原始公告)。我们提供

  • 持续交付(Continuous delivery, CD)版本——这些版本可快速访问新功能,非常适合开发和部署持续更新的应用程序,并可立即利用新功能。有时也称为 "快车"。
  • 扩展维护(Extended maintenance, EM)版本——这些版本的发布频率低于持续交付版本,但具有维护版本所具有的更高稳定性。它们是大型企业应用程序的理想选择,在这些应用程序中,在维护版本中轻松获得修复比尽早获得新功能更重要。有时也称为“慢车

EM 发行版的版本号为 YYYY.1(例如 2022.1 或 2023.1),因此很容易识别。 CD 发行版的版本号为 YYYY.2、YYYY.3 等。

0
0 7
新增
文章 Kelly Huang · 三月 13 4m read

大家好! 👋
欢迎来到IRIS IO 工具系列的第二部分。这个扩展是我提交给InterSystems 2025 年 "将想法变为现实 "竞赛的作品,它为您提供了一个直观而强大的界面,可直接在 VS 代码中导入和导出数据

如果你觉得这个扩展有用,请考虑在竞赛中为我投票!


在上一篇文章中,我们介绍了

  • 扩展概述
  • ODBC 驱动程序配置
  • 导出功能

现在是时候深入了解导入引擎(Import Engin)了_它旨在支持

  • CSV
  • TXT(任意分隔符)
  • JSON
  • XLSX

该扩展具有智能推理层,可分析输入文件并自动建议最佳的 IRIS 表格数据格式,提供有指导的辅助数据建模。


导入模式--两种不同的工作流程

该扩展支持两种不同的方案

  • 创建新表
  • 加载到现有表格

选项 A - 导入新表

在以下情况下,这是理想的选择

  • 加载新数据集
  • 您希望从头开始,使用全新的表和模式
  • 处于原型设计或探索阶段

会发生什么?

0
0 9
文章 Nicky Zhu · 三月 12 2m read

数据库表中索引的力量

在使用数据库时,大多数开发人员都了解索引的概念以及使用索引的原因:加快数据检索速度。但是,索引的真正影响往往只有在比较有索引和没有索引的情况时才会显现出来。

你知道没有索引会发生什么吗?
试想一个有三列的表:姓名、年龄和手机号码。


现在,考虑一下这个查询:

如果年龄列没有索引,数据库引擎会

  • 检查 WHERE 条件字段是否有索引。
  • 如果没有,它将扫描整个表(全表扫描)。
  • 对于每一行,它会检查年龄值并返回匹配结果。

这意味着引擎会遍历整个数据结构,这对于大型表来说非常耗时。

索引会发生什么情况?
现在,如果年龄列有索引,流程就会发生巨大变化:

  • 引擎会直接进入索引结构。
  • 它会找到 Age = 26 的节点。
  • 索引指向主表中相应的记录 ID。
  • 结果几乎是瞬间获取的。

这就是为什么索引是如此强大的优化工具。

现实生活中的一课
最近,我们遇到了一个有趣的情况,凸显了索引的重要性。
我们的表有 5 条记录,而年龄列是有索引的。然后,我们错误地从索引结构(而不是主表)中删除了两个条目。这两个条目对应的是 ID X001 和 X005,它们的年龄都是 26 岁。


当我们运行
SELECT ID, Age, EmpId, Mobile, NameFROM Company.Employee WHERE Age = 26
我们预计会有 3 条记录(因为主表中仍有这些记录),但只出现了 2 条记录。

为什么呢?

0
0 16
文章 Nicky Zhu · 三月 10 1m read

InterSystems 常见问题

使用 TCP 适配器的业务主机保持连接和池大小的默认设置如下:

StayConnected = -1(不超时)
PoolSize = 1

如果网络问题导致与业务主机的连接丢失,生产端将无法检测到这一情况,也不会接受新的连接。 在这种情况下,事件日志中不会记录任何事件。 如果将 StayConnected 设置为默认值(-1),连接将不会超时,您需要重启业务主机后才能接受新的连接。 我们建议将 StayConnected 设置为大于或等于 0 的值,以避免出现这种情况。

例如,如果将其设置为 300(秒),TCP 业务主机在 300 秒或更长时间内没有收到任何新信息,就会自动断开连接并重新连接。

对于繁忙的系统,通常会将 StayConnected(保持连接)值设为一个较小的值,如 5 秒。

0
0 21
文章 Jeff Liu · 三月 10 4m read

本文将讨论 Microsoft Visual Studio Code IDE中包含的所有调试工具

内容包括

  • 断点
  • 观察窗口
  • 调用堆栈

让我们从了解调试要求开始!

前提条件

有两个插件(扩展)可用于调试 ObjectScript:

第一个是 InterSystems ObjectScript 扩展包的一部分 。第二个是 Serenji,它是一个独立的插件,提供编辑器、文件管理器和调试功能。这两个插件都可以从插件商店安装。要激活关键功能,Serenji 需要许可证。在本文中,我们将使用 InterSystems ObjectScript 扩展包来降低学习难度。在掌握基础知识后,您可以考虑购买 Serenji 的付费许可证。

0
1 10
InterSystems 官方 Claire Zheng · 三月 10

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 上,问题和建议应放在讨论页面,而错误应放在问题页面)。

0
0 20
文章 Lilian Huang · 三月 8 2m read

在现代医疗保健领域,寻找临床上相似的患者往往感觉像大海捞针。传统的关键字搜索往往会失败,因为医学语言具有高度的细微差别;搜索 "心力衰竭 "可能会漏掉包含 "充血性心力衰竭 "的记录。

我很高兴与大家分享 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.

0
0 57
文章 Lilian Huang · 三月 6 13m read

什么是 FHIR Profile?

FHIRProfile是规则和约束的集合,用于定制和完善基础快速医疗互操作性资源 (FHIR) 资源(resource。Profiling是一个重要的过程,它可以调整基础 FHIR 资源标准,以满足特定用例、地理区域、医疗机构或临床工作流程的独特要求。

基础 FHIR 规范为资源(如病人、观察或药物)提供了通用、灵活的定义,而Profiling则将这些通用资源转化为更精确的资源。这就确保了为特定社区或实施量身定制的数据交换的一致性和互操作性。

FHIR 旨在覆盖全球各种医疗保健场景。配置文件允许实施者在不丧失标准化优势的情况下调整这一通用平台。

0
0 14
文章 Nicky Zhu · 三月 5 2m read

Embeddedpy-bridge:嵌入式 Python 工具包

概述

嵌入式 Python改变了 InterSystems IRIS 的游戏规则,可直接在数据库中访问庞大的 Python 生态系统。但是,在 ObjectScript 和 Python 之间架起桥梁有时会让人感觉像是在两个不同的世界之间转换。

为了实现这种无缝过渡,请使用embeddedpy-bridge

该软件包是一个以开发人员为中心的实用工具包,旨在为嵌入式 Python 提供高级 ObjectScript 封装、熟悉的语法和强大的错误处理功能。它允许开发人员使用他们已经熟悉的本地 IRIS 模式与 Python 数据结构交互。

挑战

虽然 %SYS.Python 库功能强大,但开发人员经常面临一些障碍:

  1. 处理代理:使用原始代理浏览 Python 列表和字典对于 ObjectScript 来说并不 "原生"。
  2. 迭代:标准 ObjectScript While 循环无法与 Python 迭代器进行本地 "对话"。
  3. 命名空间管理:确保 Python 实用程序在整个系统中可用。

解决方案:embeddedpy-bridge

我的目标是创建一个 "桥梁",让 Python 感觉像是 ObjectScript 中的一等公民。

主要功能

  • py 前缀约定%ZPython.
0
0 64
文章 Jeff Liu · 三月 5 3m read

你好

数据迁移通常听起来像是一个简单的 "将数据从 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 时会让您恼火。

0
1 11
文章 Kelly Huang · 三月 4 1m read

在最近的竞赛中,看到更多的人在创建 VS Code 扩展程序,这令人鼓舞。不过我注意到,在三个需要使用凭据进行连接的扩展中,只有我的gj :: dataLoader 利用了历史悠久、官方支持的InterSystems Server Manager扩展来获取连接定义并安全地处理凭据。

0
0 13
公告 Claire Zheng · 二月 16

🐎🐎🐎🐎骏马迎新春!

🎉🎉🎉🎉🎉祝大家在新的一年里代码疾驰无阻,项目推进势如破竹,上线部署稳如泰山!

🚀🚀🚀🚀🚀新的一年里,我们一起加油!

0
0 65
文章 Nicky Zhu · 二月 13 8m read

我有一个新项目,要将 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:

0
0 56
文章 Jeff Liu · 二月 11 1m read

InterSystems IRIS的嵌入式向量搜索功能使我们能够搜索非结构化和半结构化数据。数据被转换为向量(也称为 "嵌入"),然后存储在 InterSystems IRIS 中并编制索引,用于语义搜索、检索增强生成(RAG)、文本分析、推荐引擎和其他用例。

这是一个将 IRIS 用作向量数据库和在 IRIS 上进行相似性搜索的简单演示。

先决条件:

  1. Python
  2. InterSystems IRIS for Health - 因为它将用作向量数据库

存储库: https://github.com/piyushisc/vectorsearchusingiris

操作步骤

  1. clone软件仓库。
  2. 打开 VS Code,连接到所需的 IRIS 实例和命名空间并编译类。
  3. 打开 IRIS 终端,调用 do ##class(vectors.vectorstore).InsertEmbeddings() 命令,从文件 text.txt 中读取文本,生成嵌入并将其存储在 IRIS 中。
  4. 调用 do ##class(vectors.vectorstore).VectorSearch("search_terms") 命令,输入所需的单词以执行相似性搜索。IRIS 将返回最匹配的前三个词:alt text
0
0 36
文章 Nicky Zhu · 二月 11 3m read

InterSystems IRIS 的架构将数据的逻辑组织(命名空间)与其物理存储位置(数据库)分开。理解这种分离以及命名空间和数据库之间的区别对于有效的数据管理、安全性,尤其是高性能数据共享至关重要。

在本文中,我将讨论这些基础组件,并提供利用全局映射跨不同逻辑环境共享本地数据结构(全局)的实用指南。

数据库:物理现实

数据库代表了数据存储在磁盘上的物理现实。首先,它是文件系统中名为 IRIS.dat 的文件(例如,<安装文件夹>\mgr\user\IRIS.DAT )。该文件的最大容量为 32TB。它是所有实际数据和代码的容器。数据库由 IRIS 内核管理,它在物理文件级别处理缓存、日志和事务日志。

安装 InterSystems IRIS DBMS 时,会自动安装以下数据库:

0
0 31
文章 Lilian Huang · 二月 10 6m read

有时,根据预先定义的资源 "列表(List)"限制 FHIR 搜索会更方便、更高效、更安全。

自 2025.1 版起,我们的 FHIR 服务器支持多个与列表相关的功能

我将在此重点介绍这些功能,并提供一些示例。

0
0 48