在医保支付方式改革持续深化的背景下,处方合规性已从“事后审核”转向“事前干预”。医生开方时若未充分考虑药品互斥、剂量上限、诊断禁忌等动态规则,极易导致医保拒付,既影响患者用药连续性,也增加医院运营负担。传统方式依赖人工查阅指南或被动接收审核反馈,效率低、容错差。而医保合规处方边界枚举与辅助开具系统正是为解决这一痛点而生,它不提供冗长的“禁止清单”,而是主动计算出「安全处方区间」,将医保规则转化为可执行、可验证、可交互的临床决策支持能力。
该项目并非通用电子病历插件,也非SaaS云服务,而是一套轻量、透明、可审计的开源医疗软件。其核心价值在于:用约束编程(CP)技术对医保规则进行逆向建模,让“合规”从模糊经验变为精确数学解集。开发者可本地部署、二次开发;医院信息科可嵌入现有系统;临床研究人员可用于规则验证与政策模拟。
项目概述:从规则到解集的技术闭环
医保合规处方边界枚举与辅助开具系统,英文名 Insurance-Compliant Prescription Enum,是一个以“规则可配置、求解可复现、结果可解释”为设计原则的工具集。它不替代医生判断,而是把医保审核逻辑前置化、结构化、自动化。
系统工作流清晰简洁:医生输入「诊断」和「禁忌证」,系统解析 YAML 格式配置的医保规则,构建 CP-SAT 约束模型,调用 Google OR-Tools 求解器枚举所有满足全部条件的处方组合,并返回带剂量范围、给药途径、风险提示的安全处方卡片,同时附上被排除药品的合理替代方案。
整个流程覆盖完整技术栈: - 规则层:6大类医保规则(药品互斥、剂量上限、诊断禁忌、给药途径限制、检验结果互斥等)统一定义在 data/config.yaml 中,共22条示例规则 - 计算层:Python 实现规则解析、约束构建与 CP-SAT 求解,确保逻辑严谨、结果可追溯 - 接口层:Flask 提供 REST API,支持认证、限流与跨域访问,便于集成进院内系统 - 交互层:提供三类用户入口,命令行工具(CLI)、网页可视化界面(Web UI)、标准 HTTP 接口,兼顾效率与易用性
项目结构清晰分层,源码组织符合工程规范。Python 后端专注规则建模与求解,TypeScript 前端负责交互呈现,所有组件均可独立运行或协同工作,无强耦合依赖。
技术亮点:用约束求解重构临床规则表达
本项目的技术选型并非堆砌流行框架,而是围绕“如何让规则真正可用”展开务实设计。
基于 CP-SAT 的处方边界枚举是最大创新点不同于简单条件过滤或规则引擎匹配,系统采用约束规划(Constraint Programming)范式,将每一条医保规则翻译为布尔变量、整数变量及逻辑约束(如 dose <= 2000, not (drug_A and drug_B))。CP-SAT 求解器在此基础上搜索所有可行解空间,并精准定位边界值(例如某药在当前诊断下最大安全剂量为1500mg,再高即触发禁忌)。这使得输出不再是“能用/不能用”的二值判断,而是带有量化区间的“安全处方区间”。
全链路可配置与可验证所有医保规则均以 YAML 文件形式管理,无需修改代码即可增删改查。项目自带5个端到端集成测试场景,覆盖糖尿病多药联用、老年多重用药、抗生素组合、肿瘤镇痛、儿童剂量等典型临床难点,每次变更均可快速回归验证。
多形态交付,适配不同使用场景- CLI 工具支持彩色终端输出、JSON 表格双格式导出,适合运维批量处理或脚本调用- Web 界面采用纯静态 HTML/CSS/JS 实现,零依赖部署,医生可直接在浏览器中勾选诊断与禁忌证,即时查看卡片式处方建议- REST API 设计遵循 RESTful 原则,明确区分公开端点(如 /api/rules)与需认证端点(如 /api/enumerate-safe),支持 IP 限流与 API Key 认证,满足院内安全接入要求
此外,项目内置模拟数据生成器,可一键生成100例患者档案与200张处方记录,方便测试环境搭建与教学演示。
应用场景:可用于哪些实际工作环节
本项目适合嵌入多个医疗信息化与临床质量管控环节,尤其适用于以下场景:
医生处方辅助在门诊工作站或移动查房系统中集成该工具的 API,当医生输入诊断后,实时提示当前可选药品及其安全剂量范围,并标注“接近上限”“需监测肝功”等操作提醒,降低人为疏漏。
医保科规则验证与培训将地方医保新规编写为 YAML 规则后,通过 CLI 运行
test-scenario命令,快速验证规则是否覆盖典型病例;也可导出 JSON 结果用于内部培训材料制作。信息科系统对接与沙盒测试利用 Flask API 的标准化接口,与HIS、EMR系统做轻量级对接;配合
sample_patients.json和sample_prescriptions.json数据,可在隔离环境中完成全流程联调。药学部替代方案推荐当某药品因规则被禁用时,系统自动关联推荐替代药品列表,并注明替代依据(如“因磺胺过敏禁用,推荐阿卡波糖”),支撑药师审方决策。
科研与政策模拟分析研究人员可修改
config.yaml中的规则参数(如调整某药剂量阈值),对比不同政策假设下的处方可行解数量变化,辅助医保支付标准优化研究。
需要强调的是,本项目当前定位为技术原型与开源参考实现,不承诺覆盖全部地区医保细则,亦不替代法定审方流程。其价值在于提供一套可理解、可调试、可演进的技术底座。
使用指南:三步启动,即刻体验
项目对运行环境要求友好,仅需 Python 3.9+ 与 Node.js 16+ 即可运行。
第一步:安装依赖
# 安装 Python 后端依赖pip install -r requirements.txt# 安装 TypeScript CLI 工具依赖npm install第二步:启动服务
# 启动 Flask API 服务(默认端口 5000)python -m src.api_server --port 5000服务启动后,即可通过以下三种方式使用:
使用 CLI 工具(推荐快速验证)
# 枚举糖尿病患者的合规处方node dist/cli/index.js enumerate-safe --diagnosis "糖尿病" --contraindications "磺胺类过敏"# 查看某禁药的替代方案node dist/cli/index.js show-alternatives --drug "某禁药"# 以 JSON 格式输出结果,便于程序解析node dist/cli/index.js enumerate-safe --diagnosis "糖尿病" --format json访问 Web 界面
打开浏览器,访问 http://localhost:5000,选择诊断、勾选禁忌证,点击查询即可获得直观的处方卡片展示。
调用 API 接口
例如,向 /api/enumerate-safe 发送 POST 请求:
{ "diagnoses": ["糖尿病", "高血压"], "contraindications": ["磺胺类过敏", "肝功能异常"]}响应中将包含 safe_prescriptions 数组,每项含药品名、剂量范围、给药途径及边界说明,还可同步获取 alternatives 替代列表。
所有 API 均有详细文档说明,包括健康检查、规则查询、替代药品检索等端点,支持 X-API-Key 认证与速率控制,便于生产环境部署。
总结:让医保规则真正“活”在临床一线
医保合规不是一纸文书,而是嵌入诊疗行为的动态过程。本项目跳出了“规则文档→人工记忆→事后拦截”的旧路径,用约束求解技术将医保政策转化为可计算、可枚举、可交互的临床语言。它不追求大而全的功能覆盖,而是聚焦“处方开具前”这一关键时间窗口,用最小技术杠杆撬动最大质控价值。
代码完全开源,MIT 协议允许自由使用、修改与分发;架构清晰,模块职责分明;文档详实,附带完整示例数据与测试用例;无论是医院信息科评估集成可行性,还是高校团队开展医疗AI研究,或是开发者学习约束编程落地实践,都能从中获得扎实参考。
项目当前仍处于活跃开发阶段,规则覆盖度分析、处方历史合规评分、可视化看板等功能正在推进中,社区共建机制开放透明。
项目地址:https://github.com/nexorin9/insurance-compliant-prescription-enum
项目当前免费开源,若您对项目有疑问、使用上的困惑或想深入交流,欢迎私信我们,或加入社群讨论。
夜雨聆风