![[开源] DRG边界病例错分识别与病案首页整改建议系统:面向医院信息科、医保办与病案室的自动化质控工具](http://pic.xiahunao.cn/yaotu/[开源] DRG边界病例错分识别与病案首页整改建议系统:面向医院信息科、医保办与病案室的自动化质控工具)
本项目是一套专为DRG支付改革落地设计的病案数据质控系统核心是把病案首页结构化数据与国家/地方DRG分组逻辑对齐用规则引擎决策树模型联合识别「系统性错分」的边界病例。它不替代人工终审而是把原本靠经验翻查、靠抽查发现的错分问题变成可批量扫描、可科室归因、可溯源到主诊断与手术操作匹配关系的量化任务。面向医院信息科做分组质量监控、医保办准备申诉材料、病案室开展首页填写培训三类刚需场景交付形态为命令行工具CLI支持Python原生调用与TypeScript封装双入口技术栈聚焦稳定可解释的scikit-learn决策树、pandas数据管道与轻量CLI渲染所有分析结果以结构化JSON可读报告形式输出不依赖数据库或Web服务。定位与能力范围我们不做全量DRG分组也不重写分组器。我们只解决一个具体而高频的问题当病案首页中主诊断与手术操作组合落在DRG分组规则的模糊边界上时系统是否持续性地把这类病例分进了错误的组这类“边界病例”往往不违反单条规则但因临床表述习惯、编码员理解偏差或系统逻辑盲区形成隐性错分集群。本系统把这种错分从“偶发个案”提升为“可建模的模式”并反向生成填写改进建议不是告诉医生“你分错了”而是指出“主诊断选A时若同时含B类手术92%的正确分组应为C当前78%被分入D建议核查术式描述是否遗漏关键修饰词”。这决定了我们的能力边界仅处理已结算、已完成编码的病案首页医保结算双源数据仅覆盖主诊断与主要手术操作之间的匹配逻辑不涉及并发症合并症权重、年龄性别等次要维度所有风险评分与建议均基于历史数据分布与规则解析结果不引入外部知识图谱或大模型生成。核心功能系统围绕“识别—归因—反馈”闭环构建四项不可拆解的功能模块边界病例识别通过DRG规则解析引擎drg_rules_parser.py加载JSON格式的本地DRG规则文件自动提取每组允许的主诊断ICD编码范围与对应手术操作编码集标记出主诊断在A组允许范围内、但所伴手术操作仅出现在B组规则中的“跨组候选病例”。决策树错分模式学习对历史数据中已知分组结果的病例用scikit-learn训练二分类决策树区分“实际被分入某DRG组且经复核确认正确”与“被分入该组但复核确认为错分”的样本提取如“手术操作编码末位为X”“住院天数3且无并发症编码”等高区分度特征路径。科室/医生级风险评分将错分病例按科室编码与主治医师工号聚合计算各单元错分率并依据配置文件中预设阈值高风险0.3、中风险0.15、低风险0.05分级标定输出可排序的TOP10风险清单。病案首页整改建议对每一类被决策树识别出的错分模式例如“甲状腺切除术主诊断为结节性甲状腺肿却分入内分泌疾病组”自动生成结构化建议“主诊断建议升级为‘甲状腺良性肿瘤’ICD-10 D34并补充手术编码‘甲状腺部分切除术’ICD-9-CM-3 06.2”。功能模块输入数据来源输出形态关键约束边界病例识别drg_rules.json 病案首页主诊断/手术编码字段CSV清单含病例ID、疑似错分DRG组、触发的规则路径仅识别规则层面逻辑冲突不判断临床合理性决策树错分模式学习历史已分组病例标签数据正确/错分二值.pkl模型文件 特征重要性报告最小训练样本数由min_samples_for_tree配置默认100科室/医生级风险评分错分病例明细表 医疗机构组织架构映射表JSON统计摘要 TOP10排名表依赖病案首页中科室代码与医师工号字段完整准确病案首页整改建议决策树叶子节点规则 ICD编码映射表Markdown格式建议文档含编码对照与填写示例建议基于公开ICD-10/ICD-9-CM-3标准不覆盖院内自定义编码使用与配置系统提供两套CLI入口满足不同使用习惯Python用户可直接运行核心引擎熟悉Node.js生态的团队可使用TypeScript封装版获得彩色日志与交互式报告导航。安装只需两步pip install -r requirements.txt cd cli npm install npm run build运行分析任务时推荐优先使用TypeScript CLI统一入口node cli/dist/index.js analyze --data ./data node cli/dist/index.js report --output ./output所有行为均由配置文件驱动。默认配置位于config/default.json关键参数含义如下配置层级参数名说明典型值datamedical_records_path病案首页CSV/Excel路径需含diagnosis_code、operation_code、department_id、doctor_id字段./data/medical_records.csvrulesboundary_threshold边界病例判定宽松度值越高越敏感0.15即15%相似度即触发risk_scoringhigh_risk_threshold高风险科室错分率下限0.3decision_treemax_depth决策树最大深度影响可解释性与过拟合风险5环境变量可覆盖配置文件值便于CI/CD集成或临时调试cp .env.example .env # 编辑 .env 文件设置 DATA_MEDICAL_RECORDS./data/prod_records.csv RULES_DRG_PATH./rules/beijing_2024.json工程结构代码严格分层Python核心引擎与TypeScript CLI物理隔离确保算法逻辑不被UI层污染src/目录承载全部业务逻辑data_loader.py负责双源数据对齐与缺失值填充drg_rules_parser.py将JSON规则转为内存可查询的诊断-手术映射矩阵decision_tree_detector.py封装模型训练与预测risk_scorer.py完成聚合计算与建议生成engine.py串联全流程cli.py暴露Python原生命令行接口。cli/目录为独立前端工程index.ts注册analyze与report两条命令formatters/将JSON结果渲染为带颜色标记的终端表格与Markdown报告所有输出文件风险排名表、错分明细、整改建议均按配置路径写入./output/。data/目录内置1000条模拟数据其中15%为预设边界错分案例开箱即可验证全流程无需额外准备生产数据。环境与运行系统对运行环境要求极简Python 3.8、Node.js 16无GPU依赖单机即可完成千级病例分析。典型执行耗时参考MacBook Pro M1, 16GB RAM加载1000条病案数据 解析DRG规则≤1.2秒训练决策树模型1000样本max_depth5≤0.8秒生成科室风险排名 整改建议文档≤0.5秒全程无网络请求所有规则、模型、映射表均本地加载符合医院内网部署安全要求。日志级别可通过LOG_LEVEL环境变量动态调整DEBUG模式下会输出每一步数据形状与规则匹配详情便于定位字段映射异常。数据与扩展输入数据需满足最低字段契约项目文档明确列出必填项与格式规范字段名来源表必填格式要求示例diagnosis_code病案首页是ICD-10标准编码含小数点E11.9operation_code病案首页是ICD-9-CM-3标准编码4位数字06.2drg_group医保结算单是地方DRG组编码如BJ-DRG A12aBJ-DRG B23cdepartment_id病案首页否影响风险归因医院内部科室编码NEPHROdoctor_id病案首页否影响风险归因工号或医师唯一标识DOC2023001规则文件drg_rules.json采用扁平化键值结构示例片段如下{ A12a: { diagnosis_range: [I20.0, I25.6], operation_set: [36.01, 36.05] } }新接入地方DRG版本时仅需更新此JSON文件无需修改Python代码。限制与说明本系统不解决以下问题非结构化病历文本的NLP编码未结算病例的预分组预测DRG分组器本身的算法缺陷修复跨年度规则变更导致的历史数据重分组。所有错分判定均基于输入规则文件与当前数据快照不维护状态或历史版本比对。风险评分本质是统计显著性提示而非临床责任认定依据。高风险科室名单需结合人工复核确认系统仅提供“哪些组合值得优先查”这一线索。整改建议基于编码标准与规则逻辑生成不替代临床路径或诊疗规范。项目文档完整覆盖安装、配置、数据样例、命令说明与常见报错所有术语与字段名均与《医疗保障基金结算清单填写规范》保持一致无自定义缩略语或黑盒模块。项目地址https://github.com/nexorin9/drg-boundary-anomaly-detector