InterSystems Developer Community is a community of 26,105 amazing developers
InterSystems IRIS 程序员可以在这里学习、分享、了解最新动态、成长,以及收获快乐!
新增
公告 Claire Zheng · 二月 16

🐎🐎🐎🐎骏马迎新春!

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

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

 

0
0 13
新增
文章 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 给我的提示如下:

0
0 22
新增
文章 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 13
新增
文章 Nicky Zhu · 二月 11 3m read

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

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

数据库:物理现实

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

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

0
0 13
新增
文章 Lilian Huang · 二月 10 6m read

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

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

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

0
0 31
文章 Jeff Liu · 二月 9 5m read

如何使用 LangGraph 构建应用程序:分步指南

标签#LangGraph#LangChain#AI#代理#Python#LLM#状态管理#工作流

大家好,我想向大家介绍一下我正在研究和开发的工具 LangGraph。

基本上,传统的人工智能应用程序在处理复杂的工作流和动态状态时经常面临挑战。LangGraph提供了一个强大的解决方案,可以创建有状态的代理,管理复杂的对话,做出基于上下文的决策,并执行复杂的工作流。

本文提供了使用LangGraph 构建应用程序的分步指南,LangGraph 是一个用于创建具有状态图的多步骤代理的框架。

实施步骤:

  1. 设置环境和安装依赖项
  2. 定义应用程序状态
  3. 创建图节点
  4. 配置状态图
  5. 运行代理

1.设置环境并安装依赖项

第一步是设置 Python 环境并安装必要的库:

pip install langgraph langchain langchain-openai

配置 API 凭据:

0
0 16
InterSystems 官方 Claire Zheng · 二月 6

 InterSystems IRIS® data platform, InterSystems IRIS® for Health, and HealthShare® Health Connect 2026.1 的第三次开发人员预览版已发布到 WRC 开发人员预览版网站容器可在我们的容器注册表中找到,其标签为latest-preview

这些开发人员预览版包括从 2026.1.0 开始放弃对 Mac Intel 的支持,以及将 Windows Server 2019 支持添加 2026.1.0。

初始文档可在以下链接中找到:

这些文档链接目前只是占位符,随着最终版本的推出和更多细节的分享,这些链接将不断更新。以下是 2026.1 文档的一些显著新增内容:

由于这是早期的开发人员预览版,一些内容仍在开发中,我们将在功能最终完成后提供完整的文档。我们感谢您在此阶段的耐心等待和反馈!

可用性和软件包信息

该版本为所有支持的平台提供了经典安装包,如需完整列表,请参阅 "支持的平台 "文档

0
0 27
公告 Claire Zheng · 二月 5

各位 InterSystems EHR 社区成员,大家好,

InterSystems 认证部目前正在开发针对 CCR Tier 2 用户的认证考试。如果您符合下方的考生描述,我们需要您来参与考试的 Beta 测试!该考试将于 2026年1月27日 开始进行 Beta 测试。

Beta 测试将于 2026年3月28日 结束。

作为 Beta 测试员,我的职责是什么?

作为 Beta 测试员,我们需要您在 2026年3月28日 之前安排并参加考试。考试将在免费的在线监考环境中进行(所有 Beta 测试员均免除每门考试 150 美元的标准费用)。

随后,InterSystems 认证团队将对所有 Beta 测试数据进行仔细的统计分析,以设定考试的通过分数。Beta 测试结果的分析通常需要 6-8 周的时间。一旦确定通过分数,您将收到来自 InterSystems 认证部的电子邮件通知,告知您结果。如果您的考试分数达到或超过通过分数,您将获得该认证!

注意: Beta 测试分数完全保密。

有兴趣参加吗?请阅读下方的考试详情。

考试详情

考试标题: InterSystems CCR EHR 应用专家

注意:
0
0 23
文章 Jeff Liu · 二月 3 2m read

在使用InterSystems 互操作性(Iris/Health Connect/Ensemble时,配置数据通常分散在许多生产项目中:服务、流程、操作、适配器及其设置。

常见的操作或安全需求是回答以下问题:

  • 哪些接口引用了文件系统路径?
  • 目录、网络共享或绝对路径配置在哪里?
  • 我能否在所有产品中快速审核或记录这些信息?

下面的 ObjectScript 工具正是通过将选定的配置设置导出到 CSV 文件来解决这个问题的。

该脚本

  1. 循环浏览所有现有命名空间
  2. 查询所有命名空间中的所有互操作性配置项(Ens_Config.Item)
  3. 遍历每个项目的设置
  4. 提取文件系统/URL 路径(包含 :/\ 的值)
  5. 将结果写入CSV 文件,按类别分组
  6. 生成便于审计的输出,可在 Excel 中打开或与操作/安全团队共享

典型用例

当您需要时,应使用此实用程序:

  • 🔍审计整个产品的文件系统使用情况
  • 🛡审查安全风险(本地路径、网络共享、数据库连接)
  • 📄记录迁移、升级或灾难恢复规划的配置
  • 🔄比较环境(开发环境vs测试环境vs 生产环境)
  • 🧹清理遗留或未使用的路径

这对使用许多接口和适配器的多个产品的大型实例尤其有用。

输出格式

生成的 CSV 包含以下列:

Namespace, Category, Item Name, Class Name, Property Name, Value

此外:

0
0 23
文章 Jeff Liu · 二月 2 3m read

您可能知道这种情况:
前段时间,你发现了一个非常特殊的 $ZU 函数,可以解决一种非常特殊的问题。某种神秘的公式。它变得很流行,被许多开发人员在您的代码和所有安装中使用。

几个版本和更新之后,ISC 通知你,你的神秘 $ZU 已经过时,不再支持。建议您用新的 $something() 替换它。

那么,如何找到并记录这段神秘代码的用法呢?
它可能位于类、MAC、INT 或 INC 代码中。
它也可能分布在多个命名空间中。
在过去,Studio 还不够完善:它不适用、速度慢、不准确。

我在不同的安装中不止一次遇到过这种情况。
当时还没有源代码控制功能,即使最终引入了源代码控制功能,也很少有人使用。

由于 ObjectScript 是应对这一挑战的唯一可能选择,我编写了自己的实用程序
我的解决方案经过了多年的发展,一旦计划迁移到 IRIS,我就会再次检查它的实用性。
由于它是用纯 ObjectScript 编写的,因此在 IRIS 中无需修改任何字符即可运行。
如您所知,在 ObjectScript 中搜索特定文本的问题一直没有改变。

我设计这个工具的个人目标是

0
0 38
公告 Claire Zheng · 二月 2

大家好!

我们诚挚邀请您参与塑造下一代 ObjectScript 开发工具。我们正致力于打造一款专为 IRIS 开发者设计的、由人工智能驱动的 ObjectScript 编程助手。它并非仅是套用通用 AI 来适配 ObjectScript,而是从零起步、量身构筑的系统,能够深谙 ObjectScript 的行话精髓、IRIS API、互操作生产环境(interoperability productions),以及开发者在真实场景中的工作流。

为了确保我们打造出真正有用的产品,我们需要您的意见。

👉 ObjectScript Coder Agent 开发者调查👈

0
0 25
文章 Kelly Huang · 一月 31 2m read

此外,在以前的版本中,您可以定义您的 FHIR 服务器接受通过 OAuth 2.0 发送的请求(例如,用于 FHIR 客户端上的 SMART),但在前不久发布的 v2024.3 中,有一项新功能可以更轻松地实现这一点,即OAuth FHIR 客户端快速启动(OAuth FHIR Client QuickStart)

0
0 17
文章 Kelly Huang · 一月 29 6m read

InterSystems API 管理器(IAM)是 InterSystems IRIS 数据平台的核心组件,提供集中式 API 管理,重点强调安全性。IAM 简化了从创建到退出的整个 API 生命周期,并提供了一个开发人员门户,便于发现和集成 API。访问控制功能允许管理员定义精确的权限,IAM 与 IRIS 数据平台无缝集成,增强了数据管理和集成能力。

IAM 的功能包括

  • API 网关:集中式 API 管理和安全中心。
  • API 生命周期管理:从创建到退出的完整生命周期控制。
  • 安全性:身份验证、授权和数据加密。
  • 监控和分析:使用监控和模式分析工具。
  • 开发人员门户网站:具有文档和测试功能的 API 发现门户。
  • 访问控制:对 API 访问和操作进行细粒度控制。
  • 与 InterSystems IRIS 集成:与 IRIS 数据平台无缝集成。

使用案例: 本报告中的用例是身份和访问管理。

符合 OAuth 2.0 标准的身份验证和授权,使用 IAM 确保 FHIR 服务器的安全。

0
0 21
文章 Kelly Huang · 一月 29 2m read

您发送了一个 HTTP 请求,但得到了一个 HTTP 错误,而且是一个您意想不到的 HTML 错误页面......这是怎么回事?

具体举例来说,也许您尝试读取 FHIR 资源(例如 /Patient/123),但得到的是 404 错误页面,尽管使用其他患者 ID 时,您得到的是资源有效载荷,因此 "页面 "肯定存在......为什么会得到 404 错误页面?

0
0 53
文章 Claire Zheng · 一月 29 2m read

在过去的一年中,CCR 开发团队优先考虑对 CCR 应用程序进行更改,以更好地展示和鼓励使用 CCR 的最佳实践。本文将重点介绍我们关注的一些领域:

  • 组织控制面板
  • 系统警报
  • 分支机构卫生

在上述每个领域,我们都提高了潜在 CCR 使用问题的可见性,并为用户提供了主动解决这些问题的工具。

组织控制面板

我们继续在 "组织 "详细信息页面上添加可用信息

概览(OverView)是全面了解组织 CCR 使用情况的好地方。现在,它包含了更多的关键绩效指标,突出显示了各种问题,并链接到 CCR 应用程序中您可以解决这些问题的页面。

系统选项卡包括有关所有环境中客户端工具状态的详细信息以及系统架构师信息。这里的警报会突出显示丢失的信息、不活动和过时的客户端工具,并链接到相应的系统。

组织详细信息页面上的其他选项卡也增加了更多详细信息,使组织的 CCR 使用情况一目了然。

系统警报

系统详情页是另一个提高可见性的区域,我们现在为许多 CCR 使用问题提供了警报。

新增了未设置 URL、不安全 URLS 和检测到的客户端工具问题的环境警报。悬停时会显示详细信息:

当 CCR 检测到系统的客户端工具已过期时,会出现提示,鼓励使用更新按钮。

6 个月内没有活动的系统现在会显示一个警告,如果不再使用该系统,可将其废弃,或点击此处的 "打盹 "按钮,将其视为下一年的活动系统。这适用于某些很少需要接收更新的系统。

系统分支卫生

0
0 31
公告 Claire Zheng · 一月 29

Hi开发者们,

我们很高兴邀请大家参加即将举行的InterSystems 全栈竞赛线上启动会

在此次线上研讨会上,您将发现本次竞赛中等待开发人员的激动人心的挑战和机遇。我们还将讨论希望参赛者涉及的主题,并向您展示如何使用 InterSystems IRIS 数据平台开发、构建和部署应用程序。

日期和时间:美国东部时间 2 月 2 日星期一下午 12:00 | 欧洲中部时间下午 6:00

0
0 19
文章 Nicky Zhu · 一月 29 2m read

我曾多次遇到一种模式,即我需要使用临时文件/文件夹,并在稍后的某个时候将其清理掉。

在这种情况下,自然是遵循"Robust Error Handling and Cleanup in ObjectScript "中的模式,使用 try/catch/pseudo-finally 或注册对象来管理析构函数中的清理工作。%Stream.File*也有一个 "RemoveOnClose "属性,您可以对其进行设置,但要小心使用,因为您可能会不小心删除一个重要文件,而且这个标志会在调用%Save()时被重置,因此您需要在重置后将其设回 1。

不过,有一个棘手的情况——假设你需要临时文件在外部堆栈级别中继续存在。例如:

0
0 14
公告 Claire Zheng · 一月 28

InterSystems EHR 社区的朋友们,大家好、

InterSystems Certification目前正在为 InterSystems EHR 集成专家开发认证考试,如果您符合下面的考试候选人描述,我们希望您能参与考试的测试!考试将于 2025 年 11 月 10 日开始接受测试。

注意, 非 InterterSystems 员工必须完成 TrakCare Healthcare Messaging Framework (HMF) 课程,才有资格参加测试版考试。 有关资格的更多信息,请参阅下面 "考试详情 "下的 "所需培训"。

测试版测试将于 2026 年 3 月 15 日结束。

作为测试版测试员,我有哪些责任?

作为测试员,我们要求您在 2026 年 1 月 15 日之前安排并参加考试。考试将在在线监考环境中免费进行(所有测试版测试者均免交每次考试 150 美元的标准费用)。然后,InterSystems 认证团队将对所有测试数据进行仔细的统计分析,以确定考试的合格分数。测试结果的分析通常需要 6-8 周的时间,一旦及格分数确定,您将收到 InterSystems Certification 通知您结果的电子邮件。如果您的考试成绩达到或超过及格分数,您将获得认证!

注意:测试分数是完全保密的。

有兴趣参加吗?请阅读下面的考试详情。

考试详情

0
0 20
文章 Claire Zheng · 一月 27 3m read

大家好,现在我想继续我们之前讨论过的话题

使用 Postman 测试 InterSystems FHIR 存储库的 OAuth2.0 - 第一部分

问题1:我的client_id和client_secret是从哪里来的?

简短回答:身份验证服务器(Authentication Server)。

如果没有身份验证服务器,可按以下方法设置一个

提供主机名(主机必须支持 Https)、至少 1 种大类型(这里我们选择客户端凭证)和 SSL/TSL 配置

输入作用域(这里我们输入user/*.readuser/*.write,这是基于 FHIR 服务器(资源服务器)支持的作用域)。万一我们遗漏了某些作用域,请检查 "允许不支持的作用域(Allow unsupported scope)"。

JWT 设置选择 RS256(这只是一个示例,您可以选择适合您架构的设置)

生成令牌类(Generate token class)更改为%OAuth2.Server.JWT。如果需要,还可以更新命名空间。

保存(Save)设置

问题 2:如何查看身份验证服务器的 client_id 和 client_secret?

简短回答: 设置 OAuth2.0 客户端(如果没有)并创建一个客户端

以下是设置 OAuth2.0 客户端的步骤。

点击创建服务器描述(Create Server Description)

0
0 49
文章 Kelly Huang · 一月 27 3m read

如果要从 x509 证书/密钥生成JWT,对%SYS.X509Credentials的任何操作(包括读取)都需要 %Admin_Secure 资源上的 U。之所以需要 %Admin_Secure,是因为 %SYS.X509Credentials 是持久的,这样做是为了防止所有用户访问私钥。

如果 %Admin_Secure 资源在运行时不可用,可以使用以下变通方法。

在查看 JWT 生成代码时,我发现 JWT 代码仅利用 %SYS.X509Credentials 作为 PrivateKeyPrivateKeyPasswordCertificate 的运行时数据源。作为一种变通方法,您可以使用 X.509 接口的运行时非持久化实现,只公开这些属性。如果要使用互操作性,证书/PK 可以存储在凭证中,以便安全访问:

0
0 50
公告 Claire Zheng · 一月 27

CCR 现在包括一个人工智能驱动的 "CCR 助手",可供测试人员使用。CCR 助手可帮助您快速获得有关常见 CCR 工作流程、术语或最佳实践的答案。每个回复都包含相关 ICC 培训课程的参考资料,方便您深入了解任何主题。作为未来的改进,这些链接将直接指向用于生成回复的 ICC 培训 PDF 的特定页面。

要访问该助手,请点击 CCR 应用程序右下方的蓝色 "打开 CCR 助手 "图标。对话会在浏览器会话中保存,但会在注销时清除。

您可以通过点击 "竖起大拇指 "或 "摁下大拇指 "按钮并输入可选评论来提交对任何回复的反馈意见。我们非常感谢您的反馈,这将有助于我们继续提高回复质量!

要试用 CCR 助手,请导航到侧边栏的用户菜单,选中您的个人资料下的测试版测试员复选框,然后单击保存。您可以随时取消选中该复选框。

有关 CCR 助手的快速操作演示,请观看下面的视频。

0
0 43
文章 Claire Zheng · 一月 27 3m read

大家好,又是我来分享我最近的学习心得了。

最近,我正在学习如何为 InterSystems FHIR 资源库设置 OAuth2 身份验证。我发现以下文章非常好,而且很容易理解。

使用 IRIS for Health 启动 FHIR EHR 的 SMART

在 IRIS for Health 上构建 FHIR 资源库 + OAuth2 授权服务器/资源服务器配置》第 2 部分

对我来说,作为一个对 OAuth2.0 没有太多了解的用户。我认为,在了解整个 OAuth2.0 环境之前,从纯粹的用户角度来看(它是什么、我需要哪些参数、预期输出是什么),理解如何设置整个 OAuth2.0 环境是相当困难的。在这里,我们使用 Postman 作为客户端。

如果你想有一个 OAuth 的测试环境,可以试试下面的 dockers

workshop-iris-oauth2 或本文中的 docker在 IRIS for Health 上构建 FHIR 资源库 + OAuth2 授权服务器/资源服务器配置 第 1 部分

在本文中,我在本地计算机上设置了一个支持 HTTPS 的 InterSystems FHIR 资源库 。(根据我的观察,要使 InterSystems OAuth 正常工作,资源服务器必须支持 HTTPS😑😐。)

因此,让我们从简单的开始。

案例 1:基本身份验证

我们需要的信息有

0
0 20
文章 Nicky Zhu · 一月 27 9m read

InterSystems IRIS 数据平台是所有 InterSystems 应用程序以及医疗保健、金融服务、供应链和其他生态系统中数以千计的客户和合作伙伴应用程序的基础。它是一个融合平台,提供交易分析数据管理、集成互操作性和数据集成,以及集成分析和人工智能。它支持 InterSystems Smart Data Fabric 方法,用于管理多样化的分布式数据。

0
0 57
InterSystems 官方 Claire Zheng · 一月 27

IPM 0.10.5 版已于 2026 年 1 月 15 日发布。新版本包含大量改进和错误修复,请务必直接从GitHub 页面或社区注册中心查看!

主要变化如下

  • 重写了依赖关系解析,大大提高了性能,包括在非常复杂的情况下速度提高了 200 倍
  • 跟踪 IPM 安装、加载、更新和卸载的历史日志,可使用zpm "log "查看
  • 系统表达式(如${namespace} 和 $$$ 宏)现在可在 CPF 合并文件中进行评估,使初始配置更具灵活性
  • 模块.xml 中的 <Invoke> 将更直观地表现为始终检查 %Status 返回值,前提是且仅当方法签名声明返回 %Status。这意味着如果没有返回任何值、返回值不是 %Status 或不是 $$$OK,就会产生错误。

以下是完整的变更列表:

0
0 23
文章 Jeff Liu · 一月 26 6m read

InterSystems IRIS 提供广泛的可配置安全选项,但许多开发人员主要使用角色和资源来保护整个表或例程。今天,我们将深入探讨。我们也可以分别确保单个列和行的安全,但这两种机制的操作方式截然不同。让我们从列开始。

列安全

为便于测试和演示,我们将保持表结构简洁明了。我们在 USER 名称空间中有一个名为 "Person "的表,其中包含 ID 列、出生日期列 (DOB)、名和姓。

0
0 50
文章 Kelly Huang · 一月 25 4m read

在上一篇文章中,我们谈到了 ODBC 和 C# 连接,现在让我们看看 JDBC 和 Java。InterSystems JDBC 驱动程序是集成 Java 应用程序的高性能推荐方式。

以下是使用 JDBC 驱动程序将 Java 应用程序连接到 IRIS 实例的分步指南。

第 1 步:获取并包含 InterSystems IRIS JDBC 驱动程序

JDBC 驱动程序与 ODBC 驱动程序不同,后者通常安装在整个系统中,而 JDBC 驱动程序通常以JAR 文件的形式发布,必须包含在 Java 项目的类路径中。

如果 InterSystems IRIS 安装在本地计算机或您可以访问的其他计算机上,您可以在 install-dir/dev/java/lib/ 或类似位置找到该文件,其中 install-dir 是实例的安装目录。反之,您也可以从驱动程序软件包页面下载 jar 文件。

或者按照 @Dmitry Maslennikov 在评论中的建议 ,使用 Maven 的maven 中央仓库

<dependency><groupId>com.intersystems</groupId><artifactId>intersystems-jdbc</artifactId><version>3.10.5</version></dependency>

或 Gradle:

implementation("com.intersystems:intersystems-jdbc:3.10.5")

在项目中包含 jar 文件:

  • Maven/Gradle:如果使用构建工具,最简单的方法是将 InterSystems JDBC 驱动程序作为依赖项添加到 pom.xmlbuild.gradle 文件中。这会自动下载并管理 JAR。
  • 手册:对于简单的项目,必须将 JAR 文件放在项目目录(如 /lib)中,并在编译和运行时将其明确添加到 classpath 中。
0
0 23