乐于分享
好东西不私藏

[医疗软件开源] 为电子病历血缘分析设计的开源 CLI 工具

[医疗软件开源] 为电子病历血缘分析设计的开源 CLI 工具

在医院信息化建设不断深入的今天,电子病历(EMR)已成为临床诊疗与质量管控的核心数据载体。但随之而来的,是病历书写规范性、原创性与质控可追溯性的新挑战。大量重复、套用、模板化书写的病历,不仅影响医疗质量评价的客观性,也可能掩盖真实临床问题。如何从海量文本中自动识别“复制粘贴”行为,还原病历之间的血缘关系,并定位到具体科室、医生甚至句子级片段?EMR Pedigree Detector 正是为此而生,一个面向医院信息科与病案管理部门的轻量级、可落地、开箱即用的命令行工具。

项目概述:不止于相似检测,更构建可溯源的血缘图谱

EMR Pedigree Detector 的中文名直译为「病历血缘检测器」,其核心目标不是简单标记两份病历是否相似,而是还原一份病历是如何被另一份病历所复制、传播和演化的完整路径。它将每份病历视为一个节点,将复制关系建模为有向边,最终生成一张具备方向性、层次性与科室语义的血缘网络。

项目以医院实际业务场景为驱动,输出结果直接服务于两类典型用户: – 信息科人员:用于定期巡检系统内病历质量,发现异常高相似度聚集现象; – 病案室质控员:用于评估各科室独立书写能力,生成可存档、可上报的科室级分析报告。

整个流程完全基于本地运行,不依赖云端服务或外部 API,所有原始病历数据保留在院内环境,满足医疗数据安全与合规要求。

技术亮点:算法扎实、模块清晰、扩展友好

该项目并非简单拼凑相似度算法,而是在多个关键技术环节做了针对性优化与工程化封装:

  • 多粒度相似度融合
  • 使用字符级 2–4 克(n-gram)构建 TF-IDF 向量,兼顾中文分词缺失下的鲁棒性;
  • 基于余弦相似度快速初筛候选对,再通过最长公共子序列(LCS)算法精确定位复制段落;
  • 支持句级与段落级两种定位精度,确保高亮结果具备临床可读性。

  • 有向血缘建模与家族识别

  • 自动依据 created_at 字段判断复制方向,早创建者为父,晚创建者为子;
  • 基于 NetworkX DiGraph 构建有向图,同时兼容 Union-Find 并查集实现大规模连通分量识别;
  • 每个连通分量即为一个「模板家族」,支持最小家族规模阈值控制(默认 ≥2 条)。

  • 面向医院管理的分析维度

  • 科室级独立率计算:独立病历数 / 本科室总病历数,低于 60% 自动标红预警;
  • 科室间共享矩阵:量化不同科室之间模板复用程度,辅助识别跨科模板传播路径;
  • 血缘溯源查询:任意病历 ID 输入,即可返回其全部祖先(源头模板)与后代(衍生记录)。

  • 性能与工程细节务实

  • 多进程并行支持:通过 --parallel 参数一键启用,显著缩短千条级数据处理时间;
  • 大规模自适应优化:当病历数 >500 条时,自动切换至 CSR 稀疏矩阵与批量计算模式;
  • 配置优先级明确:命令行参数 > YAML 配置文件 > 内置默认值,便于生产环境统一管理。

应用场景:可用于日常质控、专项审计与能力评估

该项目并非仅适用于技术验证,而是已在多个典型医院管理场景中形成闭环价值:

  • 发现异常复制家族信息科在季度数据巡检中,发现某科室短期内新增病历高度集中于少数几份模板,通过本工具快速识别出包含 17 条病历的主干家族,并定位其源头为 3 天前由某主治医师创建的一份初诊记录。

  • 科室独立书写能力评估病案室每月生成《科室病历独立率报告》,对内分泌科(52.3%)、康复医学科(58.1%)等低于 60% 阈值的科室发出书面提醒,推动科室内部开展书写规范培训。

  • 模板溯源与根因分析当某份病历因诊断描述错误被退回修改时,可通过血缘溯源功能反向追踪其模板来源,确认该错误表述最早出现在哪位医生、哪个时间点的哪份病历中,从而锁定问题初始环节。

  • 跨科室模板共享分析利用科室血缘矩阵,发现儿科与儿童保健科之间存在高频模板复用,提示二者在门诊随访文书上存在协同优化空间。

  • 病历质控报告自动化归档输出的 dept_summary.txt 与 family_report.txt 格式规整、术语统一,可直接纳入医院质控月报体系,减少人工整理工作量。

使用指南:三步上手,零前端依赖

项目采用纯 Python 实现,无浏览器或图形界面依赖,所有功能均可通过终端命令完成。

首先安装依赖:

pip install -r requirements.txt

或以可编辑模式安装,便于后续调试与定制:

pip install -e .

然后使用示例数据快速验证效果:

python -m emr_pedigree.cli --input data/sample_records.csv --output ./output

如需聚焦某科室分析,可添加过滤参数:

python -m emr_pedigree.cli --input data/sample_records.csv --dept-filter 心内科

若希望获得交互式可视化,启用 HTML 输出:

python -m emr_pedigree.cli --input data/sample_records.csv --format html

所有输出均按类型组织,包括 CSV 报告、文本摘要、HTML 可视化及 ASCII 图谱。例如,打开 ./output/pedigree.html 即可查看 D3.js 渲染的力导向网络图,节点按科室着色,连线粗细反映相似度高低,支持缩放、拖拽与点击筛选。

配置亦十分灵活,支持 YAML 文件统一管理阈值、字段映射、编码策略等参数,CLI 参数始终拥有最高优先级,适配不同医院的数据规范差异。

总结:让病历质量看得见、管得住、溯得清

EMR Pedigree Detector 不是一个炫技型算法玩具,而是一款真正从医院信息科与病案室日常工作痛点出发的实用工具。它把抽象的“文本相似性”转化为具象的“血缘图谱”,把模糊的“书写不规范”量化为明确的“科室独立率”,把孤立的“单次复制”连接成可追踪的“模板演化链”。

项目架构清晰、模块职责分明、文档完备、CLI 设计符合运维习惯,且完全开源免费。无论是作为质控辅助插件嵌入现有数据平台,还是作为独立工具部署于信息科工作站,都能快速产生业务价值。

https://github.com/nexorin9/emr-pedigree-detector

项目当前免费开源,若您对项目有疑问、使用上的困惑或想深入交流,欢迎私信我们,或加入社群讨论。