[开源] 门诊特慢病跨院重复用药提醒卡生成器:面向医保办与药房的用药安全协防工具

本项目是专为门特(门诊特殊病种)和慢病患者设计的跨院重复用药风险识别与可视化提醒系统。我们直面一个真实场景:患者在多家医院同时就诊、开具同类药品,却不知晓潜在联用风险;医保办和药房缺乏轻量、可落地的技术手段辅助沟通。系统以 WHO ATC 药品分类编码为统一标尺,通过时间窗口分析(默认30天)、多级 ATC 匹配(默认4级,即药理作用层),自动识别同一患者在不同医院开具的重复或禁忌药品,并生成结构化、可打印、可推送的「用药重叠提醒卡」。它既提供开箱即用的 CLI 命令行工具,也支持 Web API 集成至互联网医院、HIS 或区域卫生平台;核心模块全部基于 TypeScript 编写,运行于 Node.js 18+ 环境,PDF 输出使用 pdfkit 并支持中文字体配置,Web 层采用 Express 5.x,CLI 框架为 commander,测试覆盖由 Jest 保障。
定位与能力范围
我们不做临床决策替代,也不试图覆盖所有药学规则引擎。本项目的边界非常明确:聚焦「跨院」这一关键动作,解决「重复用药」这一类可结构化识别的安全隐患。不处理单院内处方合理性、剂量超限、药物相互作用(DDI)等复杂药学问题,也不解析医嘱文本或自由项诊断。所有判断均基于处方数据中已有的标准化字段,患者ID、药品名称、ATC编码、医院名称、开药日期。这意味着它天然适配已完成 ATC 映射的 HIS 或医保结算系统,也能快速对接区域慢病管理平台的结构化处方导出。交付形态有三类:一是终端可执行的 CLI 工具,适合医保办按周批量跑批、生成患者提醒卡;二是 RESTful API 服务,供互联网医院小程序实时调用并推送卡片;三是 PDF/TXT/JSON 多格式输出,满足打印分发、短信嵌入、后台存档等不同下游需求。
核心功能
系统能力围绕「检测—评估—呈现」闭环展开,每一步都可配置、可验证、可审计:
|
功能模块 |
关键机制 |
可控参数 |
典型用途 |
|---|---|---|---|
| 重复用药检测 |
基于 ATC 编码逐级匹配(1–5级),默认启用 ATC 4 级(如 C08CA 对应“选择性钙通道阻滞剂”);叠加时间窗口(如60天内同级药品视为重叠) |
--atc-level
(1–5)、 |
医保办筛查某批次患者30天内跨院重复开药情况 |
| 风险分级评估 |
三级判定:高风险(同类药品重复/已知禁忌联用)、中风险(同ATC 4级重复)、低风险(同ATC 3级重复);每级绑定对应建议文本 |
RISK_THRESHOLD_HIGH
、 |
药房审核时快速定位需人工复核的高风险处方 |
| 提醒卡生成 |
支持模板驱动( |
--template
、字体路径配置(中文显示需指定思源黑体等) |
打印后交患者随身携带,或嵌入小程序消息卡片 |
| 药品搜索与统计 |
内置 |
-k
(关键词)、 |
新增药品前查证 ATC 归属,或季度用药趋势初筛 |
使用与配置
所有操作均可从命令行发起,无需部署前端界面。典型工作流是:准备处方 JSON/CSV → 运行 detect 查看风险摘要 → 对重点患者运行 generate 输出 PDF 卡片 → 批量运行 batch 覆盖全量。API 模式则更适配系统集成:启动 npm run api 后,任何支持 HTTP 的系统都能调用 /api/detect 提交处方数组,接收 JSON 响应后自行渲染或转发。
# 检测示例:读取 sample-prescriptions.json,60天窗口,ATC 3级宽松匹配
node dist/cli/index.js detect -i data/sample-prescriptions.json -t 60 -a 3
# 生成张三的PDF提醒卡,使用自定义模板
node dist/cli/index.js generate -i data/sample-prescriptions.json -p P001 -f pdf --template templates/custom-template.txt
# 批量生成所有患者TXT卡片到output目录
node dist/cli/index.js batch -i data/sample-prescriptions.json -o ./output -f txt
配置通过环境变量或 config/default.json 统一管理,关键项包括:TIME_WINDOW_DAYS(检测周期)、ATC_MATCH_LEVEL(匹配严格度)、API_PORT(服务端口)。无须修改代码即可调整业务规则,例如将高风险阈值从默认3次降低为2次,即触发更敏感的告警。
环境与运行
最低运行要求清晰且轻量:Node.js 18+ 和 npm 9+。Docker 部署为推荐方式,一条 docker-compose up -d 即可拉起完整服务(含 API 和健康检查端点 /health),适合医院信息科快速验证。开发调试则用 npm run api:dev 启动热重载服务。CLI 工具本身不依赖服务进程,离线可用,适合导出数据后在办公电脑上本地处理。
|
依赖项 |
版本要求 |
说明 |
|---|---|---|
|
Node.js |
>= 18.0.0 |
运行时基础,保障现代 TS 特性支持 |
|
npm |
>= 9.0.0 |
包管理与脚本执行 |
|
Docker(可选) |
最新稳定版 |
用于容器化部署,隔离运行环境 |
|
中文字体(PDF 输出) |
思源黑体等 OpenType 字体 |
需在 PDF 导出配置中显式指定路径,否则中文显示为方框 |
数据与扩展
输入数据必须包含标准字段:patientId、drugName、atcCode、hospitalName、prescriptionDate。我们提供两种格式支持:JSON 数组(推荐,字段语义明确)和 CSV(兼容 Excel 导出)。ATC 映射表 data/drug-atc-codes.json 是可维护的开放文件,新增药品只需按 "药品名": "C08CA01" 格式追加,无需重新编译。提醒卡模板位于 templates/ 目录,纯文本格式,支持 {{变量}} 插值,修改后立即生效。所有输出格式(PDF/TXT/JSON)内容一致,仅呈现形式不同,确保信息传递零歧义。
限制与说明
我们坦诚说明三条硬边界:第一,检测结果完全依赖 ATC 分类的粒度与准确性,无法识别同 ATC 编码下不同剂型(如缓释片 vs 普通片)的临床差异;第二,不判断合理联合用药(如氨氯地平+阿托伐他汀为常见心内科联用方案),所有 ATC 4 级重复均按规则标记,需医生最终确认;第三,不存储、不传输、不联网校验处方数据,所有计算在本地完成,符合医疗数据不出域的基本合规要求。提醒卡中已内置标准免责声明,明确标注“本提示仅供参考,不能替代医师专业判断”。这也是我们坚持 CLI 优先、API 可选的设计初衷,把控制权交还给使用者,而非构建黑盒服务。
项目地址:
https://github.com/nexorin9/chronic-disease-medication-reminder
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)