[开源] 临床路径卡牌化培训系统:面向医保办与临床科室的交互式规则教学工具
本项目是临床路径卡牌化培训系统(Pathway-Deck),专为医院医保办工作人员、临床科室教学负责人及新入职医师设计,将卫健委临床路径、DRG/DIP支付规则、医保负面清单等确定性规范,转化为可拖拽、可构筑、可验证的视觉化卡牌。核心机制是确定性规则引擎(非LLM)驱动的四类检查器:互斥组合识别、必选项目校验、分类与总价限价判断、诊断-项目匹配验证;主线能力覆盖模板加载、卡组交互构筑、实时合规反馈、假设分析对比、PDF/CSV双格式报告生成;交付形态包括Web界面(Vite+React)、命令行工具(CLI)、REST API三端统一;技术栈采用TypeScript全栈严格模式、Express后端、@dnd-kit拖拽框架、Vitest全覆盖测试(395+用例,规则引擎语句覆盖率100%)。
定位与能力范围
我们不做通用医疗知识图谱,也不做临床决策辅助,本系统只解决一个具体问题:让临床路径规则“看得见、摸得着、试得出”。
它不替代HIS或EMR,而是作为独立培训沙盒存在:医保办用它组织路径宣贯会,科室教学秘书用它带教新人理解“为什么这个药不能和那个检查一起开”,质控人员用它快速验证某条路径变体是否仍符合支付政策。所有规则逻辑均来自预置模板(肺炎、糖尿病、髋关节置换等6个病种),全部基于国家卫健委路径文本、抗菌药物指导原则、医保分担比例公式等公开字段映射而来,无黑箱推理,无概率输出。
规则引擎四大能力边界清晰: -互斥检查:识别如“腹腔镜阑尾切除术中不可同时使用两种不同品牌止血夹”这类硬性冲突; -必选检查:支持严格必选(必须含血常规+CRP)、柔性必选(至少选2项血糖监测方式)、多选一(头孢曲松或哌拉西林他唑巴坦三选一); -限价检查:按病种设定总价上限(如剖宫产¥12,000)、耗材单项上限(如支架¥35,000)、医保报销后自付部分是否超限; -诊断匹配:依据Allow/Disallow模式判定项目适配性,例如冠心病介入治疗中,仅允许使用药物洗脱支架,禁止使用裸金属支架。
这些能力不依赖外部服务,全部在本地运行,保障培训现场断网可用、规则响应毫秒级反馈。
核心功能:从模板到报告的完整闭环
系统围绕“选择→构筑→检查→报告”四步形成教学闭环,每步都针对培训场景做了针对性设计:
步骤 | 关键动作 | 教学价值 |
|---|---|---|
选择模板 | 点击预置病种卡片(如“急性阑尾炎(腹腔镜)”),查看规则详情弹窗 | 快速建立病种路径认知锚点,避免从零阅读冗长文本 |
构筑卡组 | 拖拽8类卡牌(手术/检查/药品/耗材等)进构筑区,支持按科室、关键词、类型筛选 | 将抽象路径条目转化为具象操作,强化项目间关系感知 |
合规检查 | 卡组变动500ms后自动触发,违规项高亮闪烁(橘色脉冲),角标标出error/warning/info等级 | 实时暴露规则违反点,比传统文档划线标注更直观、更可逆 |
生成报告 | 一键输出含卡组概览、违规详情表(色标分级)、卡牌清单(违规行高亮)、费用汇总的PDF | 提供可存档、可分发、可打印的教学交付物,满足院内归档与考核要求 |
特别地,“假设分析模式”是培训利器:点击「规则编辑」临时调高某项限价,立即对比修改前后违规项变化,帮助学员理解“为什么这条限价如此设置”。
使用与配置:开箱即用的三类入口
无论你是想快速演示、批量校验还是嵌入工作流,系统都提供对应入口:
- Web界面
:适合现场教学,访问 http://localhost:5173 即可使用全部交互功能;
- CLI命令行
:适合批量处理或集成进自动化脚本,无需启动浏览器;
- REST API
:适合已有内部系统希望调用合规检查能力,所有端点均经supertest验证。
环境要求极简:Node.js >= 18、npm >= 9。安装与启动只需三步:
cd pathway-deck npm install npm run dev启动后前端监听http://localhost:5173,后端API监听http://localhost:3001,开发服务器自动代理请求,零配置即可开始使用。
CLI常用命令如下(全部支持--help):
命令 | 用途 | 示例 |
|---|---|---|
npx pathway-deck template:list | 查看所有预置病种模板 | template:list --json输出结构化数据 |
npx pathway-deck template:apply pneumonia -o ./my.json | 应用肺炎模板生成初始卡组文件 | 支持指定输出路径 |
npx pathway-deck deck:check ./my.json -t pneumonia | 对JSON卡组执行合规检查 | -j参数输出JSON结果供程序解析 |
npx pathway-deck report:generate ./my.json -t pneumonia -o ./report.md | 生成Markdown格式合规摘要 | 兼容WPS/Excel打开的CSV导出也已内置 |
工程结构:模块职责分明,规则与界面解耦
整个系统按关注点分离为五层,每层职责明确、接口稳定:
层级 | 模块 | 职责说明 |
|---|---|---|
类型定义 | src/types/index.ts | 全局数据契约:MedicalItem(原始诊疗项)、Card(可视化卡牌)、Deck(卡组)、Template(路径模板)、ComplianceResult(检查结果) |
数据层 | src/core/medical-item-store.ts | 加载 |
规则层 | src/core/rule-engine/ | 四个独立检查器(互斥/必选/限价/诊断匹配)+ 协调器(orchestrator),输入Deck与Template,输出标准化Violation数组 |
接口层 | src/api/routes/ | REST端点: |
界面层 | src/frontend/components/ | 所有UI组件:Card(带翻转动画)、CardPool(带分类Tab与搜索)、DeckArea(拖拽排序)、RulePanel(违规列表+高亮联动)、ComplianceReport(全屏报告) |
这种结构确保:新增一个病种模板,只需补充JSON文件;增加一类检查规则,只需实现checkXxx(deck, rules): Violation[]签名函数;更换前端框架,不影响规则引擎运行。
数据与扩展:真实字段驱动,开放格式兼容
所有业务数据均来自两个开放JSON文件: -data/medical-items.json:82条诊疗项目,覆盖呼吸内科、内分泌科、骨科等6+科室,每项含名称、类型、价格、医保类别、适用诊断等字段; -data/templates/目录下6个病种模板:每个JSON明确定义必选项目列表、互斥组合数组、限价数值、Allow/Disallow诊断匹配规则。
扩展方式透明: - 新增病种?复制任一模板JSON,修改病种名、规则数组、限价数值,放入templates/目录即可被系统识别; - 补充诊疗项目?在medical-items.json中追加对象,字段结构与现有项一致; - 导出卡组?点击「导出JSON」获得完整结构化数据(含所有元信息); - 导出摘要?「导出CSV」生成合规摘要表,列含卡牌名、类型、价格、违规级别、违规代码,直接导入Excel/WPS分析。
所有数据格式、字段含义、扩展方法均在项目文档中有对照说明,不设隐藏约定。
限制与说明:明确边界,专注核心价值
我们明确不覆盖以下场景,以保障系统轻量、可靠、可解释: - 不接入HIS或EMR实时数据:所有项目与规则均为静态JSON加载,不依赖数据库或外部API; - 不做自然语言理解:拒绝“把这段医嘱转成卡组”类需求,所有输入必须是结构化卡牌操作; - 不支持动态规则生成:限价、互斥等规则必须预先定义在模板中,不提供GUI规则编辑器; - 不处理患者个体差异:系统校验的是路径层面的群体规则,不涉及具体患者禁忌症、过敏史等个性化判断。
这些限制不是能力缺失,而是主动取舍,正因放弃泛化,才能做到规则100%可追溯、检查结果100%可复现、教学过程100%可回放。
项目地址:
https://github.com/nexorin9/pathway-deck
