本项目是专为门特门诊特殊病种和慢病患者设计的跨院重复用药风险识别与可视化提醒系统。我们直面一个真实场景患者在多家医院同时就诊、开具同类药品却不知晓潜在联用风险医保办和药房缺乏轻量、可落地的技术手段辅助沟通。系统以 WHO ATC 药品分类编码为统一标尺通过时间窗口分析默认30天、多级 ATC 匹配默认4级即药理作用层自动识别同一患者在不同医院开具的重复或禁忌药品并生成结构化、可打印、可推送的「用药重叠提醒卡」。它既提供开箱即用的 CLI 命令行工具也支持 Web API 集成至互联网医院、HIS 或区域卫生平台核心模块全部基于 TypeScript 编写运行于 Node.js 18 环境PDF 输出使用 pdfkit 并支持中文字体配置Web 层采用 Express 5.xCLI 框架为 commander测试覆盖由 Jest 保障。定位与能力范围我们不做临床决策替代也不试图覆盖所有药学规则引擎。本项目的边界非常明确聚焦「跨院」这一关键动作解决「重复用药」这一类可结构化识别的安全隐患。不处理单院内处方合理性、剂量超限、药物相互作用DDI等复杂药学问题也不解析医嘱文本或自由项诊断。所有判断均基于处方数据中已有的标准化字段患者ID、药品名称、ATC编码、医院名称、开药日期。这意味着它天然适配已完成 ATC 映射的 HIS 或医保结算系统也能快速对接区域慢病管理平台的结构化处方导出。交付形态有三类一是终端可执行的 CLI 工具适合医保办按周批量跑批、生成患者提醒卡二是 RESTful API 服务供互联网医院小程序实时调用并推送卡片三是 PDF/TXT/JSON 多格式输出满足打印分发、短信嵌入、后台存档等不同下游需求。核心功能系统能力围绕「检测—评估—呈现」闭环展开每一步都可配置、可验证、可审计功能模块关键机制可控参数典型用途重复用药检测基于 ATC 编码逐级匹配1–5级默认启用 ATC 4 级如 C08CA 对应“选择性钙通道阻滞剂”叠加时间窗口如60天内同级药品视为重叠--atc-level1–5、--time-window天数医保办筛查某批次患者30天内跨院重复开药情况风险分级评估三级判定高风险同类药品重复/已知禁忌联用、中风险同ATC 4级重复、低风险同ATC 3级重复每级绑定对应建议文本RISK_THRESHOLD_HIGH、RISK_THRESHOLD_MEDIUM环境变量药房审核时快速定位需人工复核的高风险处方提醒卡生成支持模板驱动.txt文件变量如{{patientName}}、{{duplicateItems}}、{{suggestion}}PDF 版含患者信息、重复明细、医生建议、免责声明--template、字体路径配置中文显示需指定思源黑体等打印后交患者随身携带或嵌入小程序消息卡片药品搜索与统计内置drug-atc-codes.json映射表支持关键词模糊搜索stats命令输出处方数量、医院分布、ATC 一级分类占比等-k关键词、-l返回条数新增药品前查证 ATC 归属或季度用药趋势初筛使用与配置所有操作均可从命令行发起无需部署前端界面。典型工作流是准备处方 JSON/CSV → 运行detect查看风险摘要 → 对重点患者运行generate输出 PDF 卡片 → 批量运行batch覆盖全量。API 模式则更适配系统集成启动npm run api后任何支持 HTTP 的系统都能调用/api/detect提交处方数组接收 JSON 响应后自行渲染或转发。# 检测示例读取 sample-prescriptions.json60天窗口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