[开源] 质控指标口径对账工具:面向医院信息科与质控办的四源一致性校验与会签文档自动生成
本项目是专为医院信息科数据组、质控办及临床科室协同工作设计的轻量级命令行工具解决 HIS、质控系统、临床路径、医保四大业务系统间同一指标“名称不一、口径不一、统计逻辑不一”的长期痛点。它不依赖数据库或 Web 服务纯 CSV 输入驱动通过 YAML 规则引擎完成字段映射、差异计算默认阈值 5%、台账归档与科室会签 Word 文档生成。核心能力包括四源 CSV 标准化解析、多对多口径映射冲突检测、差异百分比标红、10 字段标准台账输出、内置签字栏模板的 Word 自动生成。交付形态为 CLI 命令技术栈基于 Python 3.9使用 pandas 做数据对齐、python-docx 生成文档、PyYAML 驱动规则配置全部依赖开源可审计无外部 API 或云服务绑定。定位与能力范围我们不做通用 ETL也不做指标建模平台。本项目只聚焦一件事把四个系统导出的同一类质控指标比如「抗菌药物使用率」「I 类切口手术部位感染率」拉到一张表里说清哪里一致、哪里差多少、为什么差、谁来确认。服务对象非常明确信息科数据组负责数据源对接与格式清洗质控办牵头组织会签与归档临床科室主任最终签字确认口径。流程上严格对应等级评审、JCI 复审、DRG/DIP 支付改革中反复出现的“指标口径一致性验证”环节。不覆盖指标定义本身是否合理也不替代临床路径系统或医保结算系统的内部逻辑它的边界就是“对得上、看得懂、签得了”。核心功能四源 CSV 独立解析每个系统导出的 CSV 可含任意字段名只要包含indicator_name指标名、period统计周期、department科室、value指标值四类语义字段即可。parser 模块自动识别并标准化字段别名如 HIS 中叫ind_name医保中叫metric_code不强制要求列顺序或大小写统一。YAML 驱动的口径映射规则引擎所有映射逻辑写在default_rules.yaml中例如将 HIS 的antibiotic_usage_rate映射为质控系统的ANTIBIO_USE_RATE_QC、临床路径的ABX_USAGE_CLINPATH、医保的DRG_ABX_USAGE。支持一对多一个 HIS 指标拆成两个质控指标、多对一三个系统指标合并为一个标准口径、聚合方式声明如“取均值”“求和”“按科室加权”。引擎会在运行时检测聚合方式冲突如 HIS 用求和、医保用均值直接报错中断避免静默错误。差异百分比计算与阈值标红对每个指标-科室-周期组合在四源间两两比对数值计算相对差异百分比abs(a - b) / max(|a|, |b|, 1e-6) * 100。默认阈值为 5%超过即在输出 CSV 和 Word 表格中标红。注意该百分比是数值层面的相对偏差非业务合理性判断仅作初筛提示。10 字段标准台账 CSV 输出ledger.csv固定 10 列按顺序为指标标准名、统计周期、科室、HIS 值、质控系统值、临床路径值、医保值、最大值、最小值、差异最大对如 “HIS vs 医保”。此格式已适配多数医院 OA 归档系统与 Excel 二次分析需求无需再手动整理。科室会签版 Word 自动生成caliber_report.docx含三部分顶部为对账总览表含标红差异行、中部为差异说明段落自动归纳哪些指标在哪两个系统间超阈值、建议核查方向、底部为三方签字栏质控办负责人、信息科负责人、相关科室主任预留手写签名位置与日期栏。模板可替换但内置版已通过三家三甲医院实际会签流程验证。功能模块输入输出关键机制CSV 解析四个原始 CSV 文件标准化 DataFrame字段名模糊匹配 用户可配别名表规则引擎default_rules.yaml映射后四源对齐表YAML DSL 解析 聚合方式冲突实时校验差异计算对齐后数值表标红差异标记 data_quality_report.csv相对差异公式 阈值参数化控制台账生成对齐表 差异结果ledger.csv10 字段固定 Schema 导出兼容 Excel 打开Word 生成对齐表 差异说明 签字模板caliber_report.docxpython-docx 渲染 表格样式预设使用与配置所有操作通过命令行完成零前端、零配置服务器。首次使用只需三步pip install -r requirements.txt准备四份脱敏 CSV放在sample_data/下确保每份含indicator_name,period,department,value四语义字段字段名可不同parser 会自动映射。运行主命令python -m src.cli \ --his sample_data/his_indicator_sample.csv \ --qc sample_data/qc_system_sample.csv \ --cp sample_data/clinical_path_sample.csv \ --insurance sample_data/insurance_sample.csv \ --output-dir ./output \ --rule-yaml default_rules.yaml输出目录下将生成 -ledger.csv10 字段标准台账可直接发给科室核对 -caliber_report.docx带签字栏的正式会签文档 -data_quality_report.csv各源字段完整性、空值率、异常值分布统计。如需调整差异敏感度加--threshold 3.0即可如需更换 Word 模板用--word-template my_template.docx指向本地文件。规则配置完全开放打开default_rules.yaml可见如下结构antibiotic_usage_rate: his: antibiotic_usage_rate qc: ANTIBIO_USE_RATE_QC cp: ABX_USAGE_CLINPATH insurance: DRG_ABX_USAGE aggregation: mean业务人员可直接增删改映射项无需碰 Python 代码。新增指标只需补一行 YAML重跑命令即生效。工程结构项目采用清晰分层设计模块职责单一便于医院信息科工程师快速理解与二次定制目录职责典型文件/说明src/parser/四源 CSV 读取、字段标准化、空值/类型校验his_parser.py,qc_parser.py, 别名映射表内置于代码src/engine/YAML 规则加载、多源对齐、差异计算、冲突检测mapping_engine.py,diff_calculator.pysrc/output/CSV 台账生成、Word 文档渲染、签字栏布局控制csv_writer.py,word_generator.py, 模板变量全显式声明src/utils/日志封装、CLI 参数解析、通用校验器logger.py,argparse_config.pysample_data/内置四份脱敏样例字段名各异但语义一致开箱即测tests/覆盖 parser 边界情况空 CSV、缺失字段、engine 映射逻辑、output 格式稳定性保障每次更新不破生产流程。数据与扩展输入数据唯一硬性要求是语义完备必须能表达“哪个指标、哪个周期、哪个科室、什么数值”。字段名可自由parser/模块内置常见别名映射如ind_name,metric_id,dept_name也可在代码中追加。输出ledger.csv的 10 字段为固定契约不随输入变化确保下游系统可稳定接入。扩展性体现在三层 -字段扩展若某系统额外提供data_source_version或extract_timeparser 可选择性提取不破坏主流程 -规则扩展新增指标只需在 YAML 中加一项无需改任何 Python -输出扩展output/模块支持插件式添加新格式如 JSON、Excel当前已预留接口。不支持的功能也明确划界不处理原始数据库直连、不解析 Excel 多 Sheet、不自动抓取网页报表、不替代 BI 工具做可视化。它只做“对账”这件事并做到足够鲁棒哪怕某 CSV 缺少一列也会报错指出具体文件与行号而非静默跳过。限制与说明本工具假设所有指标值为数值型int/float不处理文本类指标如“病历书写合格率”中的“合格/不合格”枚举。若需支持需先由信息科将文本转为 0/1 或百分比再输入。差异计算基于相对偏差对趋近于零的指标如“院内跌倒发生率0.02%”可能放大噪声此时建议人工复核或调高--threshold。Word 模板签字栏为横向三栏布局适配 A4 纸打印如医院有特殊排版要求如竖向签字、加盖骑缝章位置可自行编辑.docx模板后通过--word-template加载。所有输出文件均无水印、无加密、无调用外网数据全程本地处理。说明文档中提及的字段名、YAML 结构、CLI 参数均以项目文档为准不依赖外部规范版本。项目地址https://github.com/nexorin9/quality-caliber-bridge