乐于分享
好东西不私藏

[医疗软件开源] 不良事件三角验证器:专为院感漏报核查设计的数据交叉比对工具

[医疗软件开源] 不良事件三角验证器:专为院感漏报核查设计的数据交叉比对工具

在医疗质量监管实践中,「医保已扣重大感染费用,但院感系统未上报」是一类典型且高风险的漏报模式。这类案例往往暴露院内感染监测流程断点,既影响医院感染控制成效评估,也构成医保基金合规使用的重要审计线索。不良事件三角验证器(Adverse Event Triangulator) 正是为此场景而生,它不依赖大模型生成逻辑,不引入幻觉风险,而是通过纯规则驱动的三源数据交叉比对,精准枚举可疑漏报案例,并输出结构化、可追溯、可核查的 Ledger 式清单。

该项目面向医院信息科、院感科与医保办一线业务人员及数据工程师,提供 CLI 命令行与 Flask Web 双模式运行能力,所有处理逻辑均基于患者 ID 与时间窗口对齐,兼顾准确性与落地性。


项目核心定位与机制还原

本工具本质是一个轻量级、可审计、可复现的医疗数据一致性校验引擎。其价值不在于建模预测,而在于显式暴露系统间协同盲区。整个验证过程严格遵循四阶段闭环:

  • 匹配阶段
    以患者 ID 为核心键,在医保扣款、HIS 医嘱、院感上报三路数据中建立跨系统关联;支持多策略 ID 匹配(直接 patient_id、姓名+入院日期哈希、住院号)
  • 筛选阶段
  • 从医保数据中识别「感染相关扣款」:依据内置关键词库(如脓毒症、败血症、菌血症、肺炎等)匹配 diagnosis_name 或 diagnosis_code
  • 从 HIS 数据中识别「临床佐证行为」:提取 order_type 为「抗菌药物」或「抢救」的医嘱记录
  • 验证阶段
    当某患者在指定时间窗口(默认 72 小时)内同时满足以下条件时,标记为可疑漏报:
  • 医保存在感染相关扣款
  • HIS 存在对应抗菌药物/抢救医嘱
  • 院感系统无匹配上报记录
  • 输出阶段
    生成带序号、疑点等级、原始字段快照与核查建议的 Ledger 清单,支持 CSV/JSON/控制台三种格式

整个流程无状态依赖、无外部服务调用、无训练环节,全部基于 pandas 完成内存内数据操作,结果完全可复现、可回溯、可人工核验。


目录结构与模块职责

项目采用清晰分层设计,便于理解、调试与二次开发:

adverse-event-triangulator/├── data/                    # 示例数据目录(含三路 CSV 样例)├── src/                     # 核心源码│   ├── cli.py              # Click 驱动的命令行入口│   ├── web_app.py          # Flask Web 应用主模块│   ├── triangulation_engine.py  # 三角验证核心逻辑(匹配+筛选+判定)│   ├── ledger_generator.py     # Ledger 清单生成器(含疑点分级与字段映射)│   └── ...                 # 工具函数、配置加载、日志封装等├── templates/              # Jinja2 模板(首页、结果页、示例页)├── static/                 # CSS/JS/图标等静态资源├── requirements.txt        # Python 依赖声明(pandas>=1.5, click>=8.0, flask>=2.2)├── run.py                  # Web 启动脚本(封装端口、debug 等参数)└── api.py                  # API 模式入口(供程序化集成调用)

所有模块解耦明确,triangulation_engine.py 是唯一业务逻辑核心,其余均为 I/O 适配层,利于医院信息科按需定制字段映射或扩展关键词库。


快速安装与启动

环境准备

确保已安装 Python 3.8+,执行依赖安装:

pip install -r requirements.txt

CLI 模式:适合自动化、批量处理与 CI/CD 集成

完整参数示例(导出 CSV):

python -m src.cli triangulate \    --insurance data/medical_insurance_deduction.csv \    --his data/his_orders.csv \    --infection data/infection_report.csv \    --output results/suspicious_cases.csv \    --window 72 \    --format csv

控制台实时输出(含统计摘要):

python -m src.cli triangulate \    --insurance data/medical_insurance_deduction.csv \    --his data/his_orders.csv \    --infection data/infection_report.csv \    --format console

JSON 格式导出(便于下游系统解析):

python -m src.cli triangulate \    --insurance data/medical_insurance_deduction.csv \    --his data/his_orders.csv \    --infection data/infection_report.csv \    --output results/suspicious_cases.json \    --format json

自定义时间窗口(单位:小时):

python -m src.cli triangulate \    --insurance data/medical_insurance_deduction.csv \    --his data/his_orders.csv \    --infection data/infection_report.csv \    --window 120 \    --format console

启用详细日志(查看每一步匹配与过滤过程):

python -m src.cli triangulate \    --insurance data/medical_insurance_deduction.csv \    --his data/his_orders.csv \    --infection data/infection_report.csv \    --verbose

查看数据集基础统计(无需运行验证,快速掌握数据规模与分布):

python -m src.cli stats \    --insurance data/medical_insurance_deduction.csv \    --his data/his_orders.csv \    --infection data/infection_report.csv

获取帮助:

python -m src.cli --helppython -m src.cli triangulate --help

Windows 用户可直接运行示例脚本:

scripts\run_example.bat

Web 模式:适合科室协作、临时核查与演示

启动服务(默认端口 5000):

python run.py

指定端口与调试模式:

python run.py --port 8080 --debug

访问 http://localhost:5000 后,即可:

  • 上传三路 CSV 文件(医保扣款、HIS 医嘱、院感上报)
  • 点击「开始三角验证」触发分析
  • 查看结果页:含 Ledger 表格、统计摘要(总记录数、漏报数、各感染类型分布)
  • 一键导出 CSV 或 JSON 结果

Web 页面还提供「使用示例数据」按钮,点击后自动加载 data/ 下预置样例,无需手动上传即可完成全流程体验。


数据格式要求与准备要点

三路数据必须满足以下最小字段契约,否则验证将跳过无效记录:

医保扣款数据(medical_insurance_deduction.csv

必需字段:

  • patient_id
  • admission_date
  • diagnosis_code
  • diagnosis_name
  • deduction_amount
  • timestamp

可选字段(增强匹配鲁棒性):

  • hospital_number
  • patient_name
  • discharge_date
  • surgery_code
  • surgery_name
  • deduction_reason

HIS 医嘱数据(his_orders.csv

必需字段:

  • patient_id
  • admission_date
  • order_type
  • order_name
  • order_time

可选字段:

  • hospital_number
  • patient_name
  • execute_time
  • doctor
  • department

院感上报数据(infection_report.csv

必需字段:

  • patient_id
  • admission_date
  • infection_site
  • report_date

可选字段:

  • hospital_number
  • patient_name
  • infection_type
  • contagion_level
  • handler

其他注意事项

  • 文件编码:UTF-8 或 GBK(推荐 UTF-8)
  • 日期格式:兼容 YYYY-MM-DDYYYY/MM/DDYYYY-MM-DD HH:MM:SS 等常见格式
  • 患者 ID 对齐:三文件中 patient_id 字段值应保持一致,作为跨系统关联主键
  • 时间窗口:默认 72 小时,可通过 --window 参数调整,单位为小时
  • 感染关键词:内置词库可覆盖主流感染诊断,亦支持在代码中扩展 triangulation_engine.py 中的 INFECTIOUS_KEYWORDS 列表

技术栈与可维护性说明

  • Python 3.8+:语言基座,保障长期兼容性
  • pandas:承担全部数据读取、清洗、合并、时间窗口计算与布尔筛选,性能稳定、API 明确
  • Click:构建结构清晰、参数完备、文档自生的 CLI 接口
  • Flask:提供轻量 Web 层,无数据库依赖,零配置启动,适合医院内网部署

项目无第三方 AI 服务依赖,无网络外呼,无敏感数据上传,所有运算均在本地完成,符合医院数据安全与等保要求。


总结:一个务实、可嵌入、可审计的医疗数据协查工具

不良事件三角验证器不是通用医疗 AI 平台,也不是抽象的数据治理框架。它是一个聚焦具体问题、交付具体结果、适配具体工作流的工具型软件。它的价值体现在:

  • 问题导向明确
    直指「医保扣款与院感上报不一致」这一高频监管痛点
  • 逻辑透明可信
    纯规则引擎,无黑箱,每条可疑案例均可反向追溯原始三源字段
  • 交付形式务实
    Ledger 式清单天然适配院感科台账管理习惯,CSV/JSON 支持导入 Excel 或对接 OA 系统
  • 部署门槛极低
    单机运行,无服务依赖,CLI/Web 双模式覆盖不同使用场景
  • 二次开发友好
    模块职责清晰,关键词库、时间窗口、匹配策略均可按院内规范调整

对于正在推进院感监测数字化、医保合规精细化、质控数据一体化的医疗机构,它是一把开箱即用的「数据协查小锤子」,不大,但准;不炫,但实。

项目地址:https://github.com/nexorin9/adverse-event-triangulator国内仓库:https://gitee.com/nexorin9/adverse-event-triangulator欢迎交流使用问题或提出医院现场适配需求。