[开源] 输液泵与HIS给药记录交叉核验系统:面向临床质控和医保对账的自动化比对工具
本项目是专为医院护理部、信息科与医保办设计的输液给药闭环校验系统解决「输液泵真实推注行为」与「HIS系统给药记账记录」之间长期存在的时序错位、漏记、多记、剂量偏差等隐性差异问题。我们不做单向校验而是以患者ID为锚点在时间轴上双向对齐泵事件波形数据与HIS医嘱执行记录支持15分钟可调时间窗容差匹配并严格区分四类差异A类泵有HIS无、B类HIS有泵无、C类剂量不一致、D类时间差超限。输出形态覆盖CLI文本/JSON、HTML交互报告、甘特图时间线可视化并可选集成本地LLM生成差异说明文草稿所有内容均供人工核查使用不替代临床判断不参与定责定性。核心引擎用Python实现CLI提供Python与TypeScript双版本前端页面纯静态部署技术栈轻量可控无服务端依赖。定位与能力范围我们聚焦一个具体而高频的临床管理断点当护士在床旁操作输液泵完成推注系统是否真的完成了HIS记账反过来HIS显示已执行的医嘱泵是否确实完成了输注这不是理论问题而是每日ICU、急诊、肿瘤科都在发生的实操落差。本系统不试图重建整个临床信息系统也不接入实时数据库而是以「离线JSON文件」为唯一输入接口接受两类结构化数据输液泵导出的事件日志含开始/暂停/结束时间、剂量、速率、泵ID、患者ID以及HIS导出的给药执行记录含医嘱ID、药品名、剂量、执行时间、患者ID、床号。所有比对逻辑基于时间窗对齐与字段映射展开不依赖任何中间库或中间表不修改原始数据不产生新业务单据。它的交付物不是“告警”而是可追溯、可筛选、可导出的差异台账以及辅助人工撰写说明的措辞建议。核心功能模块系统能力分层清晰每一层都对应一线人员的真实动作流模块层级功能组件对应角色与用途数据适配器层PumpAdapter/HisAdapter护理信息员或信息科工程师将不同品牌泵导出的JSON、不同HIS厂商导出的Excel转JSON后的格式统一映射到内部标准模型如pump_schema.py定义泵事件必须含start_time、dose_ml、patient_idhis_schema.py要求exec_time、drug_name、dose_ml、patient_id时间对齐引擎TimeAlignmentEngine质控专员按患者ID分组后以HIS执行时间为基准向前向后扩展时间窗默认15分钟查找该窗口内是否存在匹配的泵事件支持自定义容差适应不同科室节奏如ICU可设10分钟普通病房设20分钟差异检测规则DiffDetectionRules医保办核查员对已对齐的配对记录逐项比对C类差异触发剂量阈值判断默认±10mlD类触发时间差绝对值判断A/B类则直接标记未配对项每类差异自动打标严重级别critical/warning/info便于优先处理输出生成层HtmlReportGen/LlmPhraseModule护士长与质控科HTML报告含可筛选台账表格按类型、患者、床号、药品、甘特图时间线蓝/橙/绿三色条直观展示泵运行、暂停、HIS执行状态红线标差异点LLM模块在Ollama本地运行生成中性、非归因的说明草稿如“该时段泵有完整推注曲线但HIS未见对应记账操作”明确标注“需人工核实”使用与配置方式系统提供三种即用入口无需部署服务器开箱即可跑通全流程Python CLI主力推荐适合信息科批量处理、夜间定时任务、与现有ETL流程集成TypeScript CLI适合前端工程师快速验证、嵌入Web自动化脚本HTML可视化页面适合护士长现场演示、医保办临时抽查、科室晨会复盘所有CLI均支持相同参数体系关键参数含义如下参数说明示例值是否必填--pump-data输液泵事件JSON路径data/samples/pump_events.json是--his-dataHIS给药记录JSON路径data/samples/his_records.json是--time-window时间对齐容差分钟30否默认15--dose-threshold剂量差异判定阈值ml5否默认10--output-html生成带甘特图的HTML报告output/report.html否--include-llm-descriptions启用本地LLM生成说明文无值开关式否运行示例Python CLIpython -m src.cli \ --pump-data data/samples/pump_events.json \ --his-data data/samples/his_records.json \ --time-window 20 \ --dose-threshold 3 \ --output-html output/icu_audit_20240315.htmlHTML页面使用更简单打开web/index.html→ 点击「加载数据」→ 分别选择泵与HIS的JSON文件 → 自动渲染台账与甘特图 → 可按类型筛选如只看A类、导出CSV用于进一步分析。LLM辅助说明的设计边界我们明确把LLM定位为“措辞协作者”而非“判断代理”。它不接触患者隐私字段如身份证号、手机号仅读取已脱敏的patient_id、bed_no、drug_name、dose_ml、start_time等公开字段生成的每一段说明文都带固定前缀“【LLM说明文草稿】本段内容由本地大模型根据输入数据生成仅供参考请务必结合临床实际与系统日志人工核实。”若Ollama服务未启动系统自动回退至预设模板句式如“A类差异泵有记录但HIS无记账”确保流程不中断。目前支持Ollama生态下的llama3.2、qwen2.5等中文轻量模型不依赖联网API符合医院内网安全要求。工程结构与扩展性整个项目按职责分层组织目录即文档infusion-pump-verifier/ ├── src/ # Python核心可独立pip install │ ├── data_adapters/ # 适配器可插拔未来加新泵型号只需新增pump_xxx_adapter.py │ ├── engines/ # 引擎可替换时间对齐算法、差异规则均可单独升级 │ ├── output/ # 报告格式可扩展后续可加PDF、Excel导出模块 │ └── cli.py # CLI统一入口参数解析与调度中枢 ├── cli/ # TypeScript CLInpm管理与Python解耦 ├── web/ # 静态前端零构建浏览器直跑 ├── data/samples/ # 开箱即用样本数据含真实字段结构示意 └── requirements.txt # 明确Python依赖无AI框架硬依赖LLM为可选这种结构让医院信息科能按需选用若只需夜间批处理只装Python环境若需嵌入现有Web运维平台可复用web/下全部JS逻辑若要对接新HIS只需在data_adapters/下新增适配器不触碰核心引擎。环境与运行准备本地运行仅需两套基础环境无GPU、无K8s、无DockerPython环境≥3.9虚拟环境隔离依赖明确requests,pydantic,jinja2,plotly等共12个包Node.js环境≥18仅TypeScript CLI需要cli/目录下独立管理安装步骤极简cd infusion-pump-verifier python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txtcd infusion-pump-verifier/cli npm installLLM为可选增强模块仅需额外三步 1. 安装Ollama官网下载或brew install ollama 2. 拉取模型ollama pull qwen2.53. 启动服务ollama serve全程无网络外连所有数据停留本地符合医疗数据不出域要求。限制与说明我们坦诚说明当前能力边界避免误用不支持实时流式接入所有输入均为静态JSON文件暂不对接HL7/FHIR接口或数据库直连不处理非结构化数据无法解析扫描件、手写单、PDF医嘱单需先由医院完成结构化转换不覆盖全部输液场景当前适配持续泵注类药物如多巴胺、去甲肾上腺素未覆盖推注针剂、间歇性冲洗等模式差异判定基于字段显式值若HIS记录中dose_ml为空或为“遵医嘱”系统标记为C类并归入info级不强行填充或猜测差异类型的判定逻辑已在项目文档中明确定义例如A类是否升为critical取决于该药品是否属于医保重点监控目录此规则未来可通过配置文件注入当前为代码内建。项目地址https://github.com/nexorin9/infusion-pump-verifier