在日常门诊工作中,医生常常需要快速掌握一位患者近期在不同系统中完成的检验与影像检查情况。但现实是:HIS 系统里有医嘱和用药记录,LIS 系统存着血常规、生化等检验结果,PACS 系统则管理着 CT、MRI 等影像报告。三套系统数据格式不一、时间戳标准各异、归属科室分散,导致医生需反复切换界面、手动比对时间、甚至重复开具已做过的检查。这种低效不仅影响接诊节奏,还可能带来医疗质量隐患。
为解决这一临床信息割裂问题,一个轻量、开源、可本地部署的工具应运而生,跨系统就诊轨迹可视化系统。它不替代任何医院信息系统,而是作为“中间层”整合者,将多源异构的患者检查数据统一建模、时间对齐、异常识别,并生成直观可交互的 HTML 报告。整个流程无需中心化数据库,不触碰原始业务系统,仅依赖结构化导出文件即可运行,兼顾安全性与落地可行性。
项目概述:面向临床一线的数据协同工具
该项目是一个端到端的患者就诊轨迹分析工具链,核心目标是帮助医生在几秒内看清「这位患者到底做过哪些检查、什么时候做的、有没有遗漏或重复」。它不是大而全的集成平台,而是聚焦于一个具体、高频、高价值的临床痛点:跨系统检查记录的时间轴还原与合理性初筛。
项目采用清晰的分层架构设计,各模块职责明确、松耦合:
- 数据适配层
通过三个独立适配器(HisAdapter、LisAdapter、PacsAdapter)分别对接不同系统的导出数据,使用 pydantic 定义强类型模型,确保输入数据的结构一致性与可校验性。 - 分析引擎层
基于 Python 实现时间对齐算法与规则驱动的异常检测逻辑,支持识别检查缺失、同类项目短期内重复开具、关键检查间隔超出临床建议窗口期等典型问题。 - 交互呈现层
借助 TimelineJS3 构建响应式时间轴视图,支持缩放、按类型筛选、点击展开详情;最终报告以单页 HTML 形式输出,兼容离线查看与一键导出。 - 操作入口层
提供 TypeScript 编写的命令行工具(CLI),覆盖从数据列表、条件筛选、分析执行到报告生成的全流程,同时支持彩色终端输出与参数化调用。
整个项目完全开源,代码组织规范,目录结构一目了然,适合医院信息科、临床工程师或懂技术的医务工作者直接上手使用与二次开发。
技术亮点:务实、解耦、易维护的工程实践
该项目的技术选型并非追求前沿炫技,而是围绕临床场景下的实际约束进行权衡,体现出扎实的工程意识:
Python 与 TypeScript 双引擎协同数据处理与规则分析交由 Python 承担,充分发挥其在科学计算、数据清洗与规则引擎构建上的生态优势;用户交互与流程调度则由 TypeScript/Node.js CLI 完成,保障跨平台兼容性与命令行体验。二者通过标准 JSON 文件交换中间结果,接口简洁,调试友好。
适配器模式保障系统扩展性HIS、LIS、PACS 三类系统适配器彼此隔离,新增适配只需实现统一接口并注册,不影响其他模块。每个适配器内部封装字段映射、时间解析、单位标准化等细节,对外暴露一致的数据模型,大幅降低后续接入新系统或旧系统升级的成本。
轻量可视化不依赖后端服务HTML 报告完全静态生成,所有前端依赖(TimelineJS3、html2canvas)通过 CDN 加载,无需启动 Web 服务,生成即用。报告体积小、加载快,医生可直接双击打开,也方便嵌入院内知识库或质控平台。
CLI 工具设计符合临床工作流命令设计贴合真实使用路径:
list查看患者/就诊清单,filter按条件筛选记录,analyze执行时间对齐与异常分析,report生成最终可视化报告。每个命令支持--help提示,错误信息清晰,参数命名直白(如--patient-id、--visit-id),降低学习门槛。类型安全贯穿前后端TypeScript 层定义完整类型体系,Python 层使用 pydantic 进行数据校验与序列化,确保从原始 CSV/Excel 导入、到 JSON 中间态、再到前端渲染的全链路数据可靠性,避免因字段缺失或类型错位引发的静默失败。
应用场景:不止于门诊,更延伸至质控与信息管理
该工具的价值已在多个典型角色与业务环节中得到体现,适用于以下几类场景:
门诊医生接诊前快速预览医生在叫号前运行一条命令,即可生成该患者本次就诊对应的所有历史检查时间轴,直观看到上月是否已查过甲状腺功能、两周前是否做过肺部 CT,从而避免重复开单,提升问诊效率与患者信任感。
医保办与质控办开展合理性核查可批量分析某类疾病患者的检查路径,例如筛查「糖尿病患者半年内糖化血红蛋白检测频次」或「肺炎患者胸部影像检查间隔」,辅助识别过度检查、漏检风险或流程断点,为医保控费与临床路径优化提供数据支撑。
医院信息科构建患者主索引补充台账在尚未建成全域患者主索引(EMPI)的机构中,本工具可作为低成本过渡方案,基于患者 ID 和就诊 ID 自动聚合散落在各系统的检查事件,形成一份结构清晰、可追溯、可导出的跨系统就诊轨迹台账,服务于科研随访、病案质控或系统迁移准备。
临床信息系统二次开发参考范例对于正在建设集成平台或单病种管理系统的信息科团队,该项目提供了完整的多源数据适配、时间语义建模、异常规则配置等可复用模块,其代码结构与设计文档可作为内部技术培训与架构演进的实操案例。
使用指南:五分钟完成首次运行
项目对运行环境要求极简,仅需 Python 3.9+ 与 Node.js 16+,无需数据库或服务器部署。以下是完整上手路径:
首先安装 Python 依赖:
pip install -r requirements.txt然后执行一次端到端分析,以示例患者为例:
python -m src analyze P001 V001 output.json该命令会自动加载 data/ 目录下的模拟 HIS、LIS、PACS 数据,完成时间对齐与异常标记,并将结构化结果保存为 output.json。
接着进入 Node.js CLI 流程。先构建 TypeScript 代码:
npm installnpm run build再使用 CLI 查看患者列表:
node dist/cli/main.js list --patient-id P001最后生成并自动打开可视化报告:
node dist/cli/main.js report --patient-id P001 --visit-id V001 --output report.html --open整个过程无需修改配置、无需编写代码,所有参数均可命令行传入。项目自带 data/ 示例数据与 templates/ HTML 模板,开箱即用。若需对接真实系统,只需按适配器文档规范整理 CSV 或 JSON 格式导出文件,放入指定路径即可。
对于希望定制异常规则的用户,可在 src/engine/ 下直接修改 Python 规则函数;若需调整时间轴样式,仅需编辑 templates/timeline.html 中的 CSS 片段。所有扩展点均有明确注释与最小改动原则,便于渐进式演进。
总结:小工具,大价值;开源即责任
跨系统就诊轨迹可视化系统不是一个宏大叙事的平台工程,而是一把精准切入临床信息孤岛的手术刀。它不试图接管医院核心业务,而是以最小侵入方式,把医生最关心的「时间线」问题彻底理清楚。从数据适配的健壮性,到分析逻辑的可解释性,再到报告呈现的实用性,每一个设计选择都指向一个朴素目标:让医生少花一分钟在找数据上,就多一分钟留给患者。
项目当前处于持续迭代阶段,代码风格统一,文档完整,贡献指南清晰。无论是作为临床信息工具直接使用,还是作为医疗信息化教学案例、医院自有系统能力补丁,它都展现出良好的适应性与延展空间。更重要的是,它的开源属性意味着透明、可控与共建,没有黑盒算法,没有绑定云服务,所有逻辑可见、可审、可改。
项目当前免费开源,若您对项目有疑问、使用上的困惑或想深入交流,欢迎私信我们,或加入社群讨论。
项目地址:https://github.com/nexorin9/patient-journey-timeline国内仓库:https://gitee.com/nexorin9/patient-journey-timeline
夜雨聆风