乐于分享
好东西不私藏

[医疗软件开源] 药品不良反应 ADR 三角信号预警系统:一款面向临床质控的开源医疗软件

[医疗软件开源] 药品不良反应 ADR 三角信号预警系统:一款面向临床质控的开源医疗软件

药品不良反应(ADR)是住院患者安全的重要威胁,但现实中,ADR 往往在检验结果异常或护理记录出现体征后才被识别,此时干预窗口已大幅收窄。如何在正式上报前主动发现潜在风险?ADR 三角信号预警系统给出了一种轻量、可部署、易适配的技术路径,它不依赖庞大模型或中心化平台,而是通过结构化数据的多源关联,在处方、检验、护理三个维度之间建立逻辑闭环,实现早期信号捕获与分级预警。

该项目完全开源,采用 TypeScript 构建,支持本地命令行运行与容器化部署,无需对接医院核心系统即可快速验证效果。它不是替代现有药学监护流程的“黑盒系统”,而是一个可嵌入、可调试、可定制的临床质控辅助工具。

项目概述:用三角关系还原 ADR 发生逻辑

传统 ADR 监测多依赖医生主观判断或被动上报,存在滞后性与漏报率高问题。本系统提出「三角信号检测」机制,其核心假设是:一次真实的 ADR 事件,往往同时具备三类证据痕迹,用药行为、生理异常、临床表现。当这三者在时间窗口内对齐,即构成一个强信号。

例如,某患者静脉使用「注射用头孢曲松钠」后 48 小时内,ALT 升高至正常上限 3 倍以上,且护理记录中连续两次出现「皮肤瘙痒」「散在荨麻疹」描述,系统便会触发 HIGH 级别告警,并生成带时间轴与雷达图的 HTML 告警卡片。

项目不采集实时接口数据,而是以离线批处理方式工作,输入为三类标准格式文件: – 处方/发药记录(含药品名、给药途径、时间) – 检验结果(含项目名、数值、参考范围、时间) – 护理评估(含生命体征、症状关键词、皮肤表现、时间)

所有数据均通过 patientId 和时间戳对齐,支持最大 72 小时的时间窗口配置,兼顾临床合理性与计算效率。

技术亮点:轻量架构下的专业能力覆盖

系统虽定位为工具型软件,但在技术选型与工程实现上兼顾了实用性、可维护性与扩展性:

  • 多格式兼容设计内置 PapaParse(CSV)、ExcelJS(Excel)、原生 JSON 解析器,覆盖国内主流 HIS 系统导出的数据形态;字段映射支持自定义列名,无需修改原始数据即可适配不同医院命名习惯。

  • 规则驱动而非模型驱动严重度分级、药品可疑度评分、检验异常判定、护理体征匹配全部基于可配置规则引擎实现;无外部 API 调用,不依赖网络或云服务,保障数据本地化与隐私合规。

  • 开箱即用的可视化输出所有报告内嵌 ECharts 图表,无需额外服务即可生成交互式 HTML 告警卡片与全局仪表盘;支持一键导出 CSV 清单(含 UTF-8 BOM,Excel 可直接打开)与 JSON 结构化数据,便于后续导入 BI 工具或质控系统。

  • 开发者友好的 CLI 体验基于 Commander 构建的命令行界面,提供参数化运行、交互式引导、配置模板保存等功能;配合 Vitest 编写的 19 个单元测试文件,确保核心逻辑稳定可靠。

  • 容器化与跨平台支持提供 Docker 多阶段构建镜像,Windows/macOS/Linux 全平台支持;Node.js 18+ 即可运行,无需 Python 环境或数据库依赖,降低部署门槛。

应用场景:适合临床药师、质控办与信息科协同使用的医院信息工具

本系统并非面向终端患者的 App,也不替代电子病历系统,而是作为医院内部质量改进工作的轻量级数据增强组件,可用于以下典型场景:

  • 临床药师开展用药回顾分析定期导入一周内出院患者的处方、检验与护理数据,批量筛查潜在 ADR 信号,优先复核 CRITICAL 和 HIGH 级别案例,提升药学查房与干预效率。

  • 医院质控办进行季度 ADR 风险趋势研判利用 HTML 仪表盘中的科室分布、时间趋势、Top5 可疑药品等图表,识别高风险科室、时段与药品类别,支撑 PDCA 循环改进。

  • 信息科协助 HIS 数据治理落地借助字段映射配置与合成数据集,快速验证本院数据是否满足三角信号检测所需字段完整性与时间粒度,反向推动临床数据录入规范。

  • 教学医院开展药学实训教学使用内置 data/synthetic/ 合成数据集(含明确阳性、阴性与弱信号样本),帮助学生理解 ADR 发生机制与多源证据关联逻辑,避免真实数据使用合规风险。

需要强调的是,系统输出的是预警标签与分析线索,而非最终诊断结论。所有告警需由药师结合临床实际进一步判读,符合我国《药品不良反应报告和监测管理办法》中关于“信号验证”与“因果关系评估”的工作要求。

使用指南:从零开始运行只需五分钟

安装与运行过程极简,无需编译环境或数据库配置:

git clone https://github.com/nexorin9/adr-triangle-signal-detectorcd adr-triangle-signal-detectornpm install

首次运行推荐使用合成数据快速验证:

npm run dev -- \  --medications data/synthetic/medication-orders.csv \  --labs data/synthetic/lab-results.csv \  --nursing data/synthetic/nursing-assessments.csv \  --output ./output \  --format all

执行完成后,output/ 目录将生成四类文件: – adr-alerts-*.html:每位高风险患者的独立告警卡片,含时间轴与雷达图 – adr-dashboard-*.html:全局统计仪表盘,支持科室、严重度、时间维度下钻 – signals.csv:结构化预警清单,含患者 ID、可疑药品、异常检验项、护理表现、综合评分与说明文本 – signals.json:完整结构化数据,含摘要统计与明细列表,便于程序化调用

如需适配本院数据,可通过交互式模式自动完成字段映射:

npm run dev -- --interactive

系统将依次引导选择处方、检验、护理文件,确认各字段对应关系,并生成可复用的 JSON 配置模板。后续运行只需指定该配置文件即可:

npm run dev -- --config config/my-hospital-config.json --medications data/处方.csv --labs data/检验.csv --nursing data/护理.csv --output ./output

高级用户还可自定义规则,例如调整中药注射剂的可疑度权重、为肌酐指标设置更敏感的异常阈值、新增本院常见护理术语词库等,全部通过修改 config/custom-rules.json 实现,无需改动代码。

总结:让 ADR 监测回归临床本质

ADR 三角信号预警系统没有追求大模型推理或全量流式计算,而是回到临床一线最朴素的需求:在数据已有、系统已存的前提下,如何更快地把散落的信息点连成一条风险线索? 它用清晰的三角逻辑替代模糊的经验判断,用可配置的规则替代不可解释的黑盒输出,用本地化 CLI 替代复杂部署,真正服务于药师与质控人员每日的实际工作流。

项目采用 MIT 许可协议,全部源码公开,文档详实,目录结构清晰,模块职责分明,非常适合希望在医疗信息化领域做轻量级二次开发的技术团队参考学习。对于正在探索临床数据价值挖掘的医院信息科、药学部与质控办而言,它是一份即插即用的实践样本,也是一次对“数据如何真正助力临床决策”的务实回应。

项目当前免费开源,若您对项目有疑问、使用上的困惑或想深入交流,欢迎私信我们,或加入社群讨论。

项目地址:https://github.com/nexorin9/adr-triangle-signal-detector