文章 John Pan · 5 小时 前 3m read

Medichrona:利用 IRIS for Health 和 three.js 以 3D 形式重现合成患者的终身病历

15秒简介:https://youtu.be/veKSM1THLeo

大家好,我是阿诺尔夫(Arnolf),一名独立开发者。

我正在开发Medichrona,它能将一名患者的终身医疗记录转换为运行在 InterSystems IRIS for Health 上的时序知识图谱,并允许您在浏览器中以 3D 形式逐年探索这些数据。这些数据来自 InterSystems 示例中的 Synthea 合成患者数据。

本文将详细说明数据如何从FHIR数据包呈现到3D界面。

演示视频

数据流

Synthea FHIR R4 Bundles (15 synthetic patients) 
  | 
  |-- loaded by transaction --> IRIS for Health FHIR server (/fhir/r4) 
  |                             the source records 
  | 
  '-- Python ETL --> SQL graph tables (same IRIS instance) 
                     ingest -> rank -> layout -> export 
                       |                           | 
                       | optional copy             v 
                       v                     one JSON file per patient 
                 iris-vector-graph                 | 
                 (openCypher queries)              v 
                                       Astro + three.js viewer

1. FHIR服务器保存源记录。每位患者的“Bundle”作为一笔事务进入IRIS for Health FHIR服务器。该图谱绝不会替换这些记录。

2. 通过 Python ETL 将图结构构建在 SQL 表中。相同的 Bundle 需经过四个阶段:

  • ingest 将FHIR资源转换为节点和边。就诊记录构成时间主线,而疾病、用药、观察结果、操作、机构及执业人员则与之相连。
  • rank 为每个节点赋予权重。该权重决定了节点的大小以及哪些标签优先显示。
  • layout 预先计算 3D 坐标并将其存储在 IRIS 中。
  • export 为每位患者生成一个 JSON 文件。

边仅来源于记录中写入的引用和时间信息。系统不会进行任何推断。每个节点仍与其背后的 FHIR 资源保持关联,因此在本地演示中,详细信息面板可以打开 FHIR 服务器上的原始记录。

3. 浏览器仅负责绘制。查看器是一个使用 three.js 构建的静态 Astro 网站。它读取患者的 JSON 文件,运行时不会查询 IRIS。 每个节点类都有自己的形状,使用 InstancedMesh 绘制,年份滑块显示该年份中存在的内容。Python 和 TypeScript 除了 JSON 文件外没有任何共享内容。

4. 该图谱也可通过 openCypher 访问。可选步骤将 SQL 图谱复制到同一 IRIS 实例中的 iris-vector-graph 中。SQL 表仍作为屏幕数据的来源。

为何使用一个 IRIS for Health 实例

FHIR 存储库和图表表在同一个 IRIS for Health 容器中运行,但位于不同的命名空间中。只需启动一个数据库,图及其来源记录便并存于同一环境中。

当前限制

  • ETL 读取的是已加载到 FHIR 服务器中的相同 Bundle 文件。目前尚不从 FHIR 服务器读取数据。
  • 该演示在本地运行,包含 15 位示例患者。

关于数据

所示数据由 Synthea 生成的合成患者数据,并非真实人员的个人信息。严禁将其用于诊断或治疗决策。屏幕上已对真实机构名称进行了遮蔽处理。

技术栈

InterSystems IRIS for Health Community Edition 2026.1、带 InterSystems DB-API 驱动程序的 Python、iris-vector-graph 4.6、Astro、three.js。

欢迎任何在 IRIS 上从事 FHIR 数据、图或可视化相关工作的人士与我交流。欢迎留言和发消息。

InterSystems IRIS 是 InterSystems Corporation 的商标。FHIR 是 HL7 的注册商标。