在临床一线,护士排班不只是人手与工时的简单匹配。一张床位的操作记录背后,往往隐藏着时间、人力与操作类型之间的隐性约束,同一护士无法在5分钟内同时为两张床执行静脉输液;换药与雾化不可并行;测血糖与输液的时间窗口天然冲突。这些「看似经验、实则可量化」的互斥关系,长期依赖人工记忆或纸质台账,缺乏数据支撑与可视化呈现。床位互斥图谱(Bed-Mutex-Atlas) 正是为此而生:一个专为护理管理场景设计的轻量级、可落地、开箱即用的医院信息工具。
它不替代HIS系统,也不构建大而全的护理平台,而是聚焦一个具体问题,从已有护理执行记录中自动发现、评估、可视化两床之间的操作互斥关系,并输出可存档、可汇报、可纳入排班决策的结构化结果。项目完全开源,代码清晰,CLI与Web双模式兼顾批量处理与交互探索,适合护士长、信息科工程师、护理质控人员及医疗信息化开发者快速上手。
项目概述:从CSV到互斥图谱的端到端流程
床位互斥图谱不是概念验证,而是一套完整闭环的数据分析工作流。它以标准CSV格式的护理执行记录为唯一输入,经由四个核心阶段,最终生成三类交付物:
- 数据加载阶段
:解析含 patient_id、bed_no、nurse_id、execute_time、operation_type 五字段的原始记录,统一转为内部JSON中间格式,完成时间标准化与字段校验; - 互斥挖掘阶段
:基于时间窗口重叠算法,遍历所有护士-操作组合,识别在设定时间窗(默认5分钟)内被同一护士连续执行、且操作类型存在逻辑冲突的床位对; - 置信评估阶段
:统计每对床位的重叠发生频次,结合总操作次数计算置信度,支持按阈值(默认0.3)过滤低可靠性结果; - 结果交付阶段
:导出结构化互斥台账(CSV/JSON)、生成网络关系图(PNG)、提供多维分析视图(如护士视角统计、度中心性排名)。
整个过程无需数据库、不依赖云服务,单机即可运行。项目结构清晰,模块职责分明,src目录下每个Python文件对应一个明确功能单元,便于理解、调试与二次开发。
技术亮点:务实选型与工程友好设计
该项目的技术栈选择体现了对医疗场景实际约束的尊重:不追新、不堆砌、重稳定、易部署。
- 数据处理层采用 pandas
:高效完成时间序列解析、分组聚合与缺失值处理,适配医院常见的小规模(数百至数千条)护理记录; - 图算法与可视化依托 networkx + matplotlib
:networkx 提供成熟的图构建与中心性分析能力,matplotlib 输出简洁专业的互斥关系图,节点为床位号,边粗细直观反映置信度强度; - 命令行交互使用 Click 框架
:子命令设计符合运维直觉,load、mine、ledger、graph 四步流程清晰,参数命名语义明确,支持 --help 分级提示; - Web界面基于 Flask + Jinja2
:零前端框架依赖,纯服务端渲染,上传CSV后即时响应,适合内网环境快速启用,无需额外配置Nginx或HTTPS; - 关联规则分析集成 mlxtend(FP-Growth)
:在互斥原因推测环节,通过挖掘操作类型共现模式,辅助判断「为何A床与B床互斥」,例如高频共现「输液+测血糖」提示该组合存在时间冲突倾向。
值得一提的是,项目对「增量分析」与「护士视角」做了深度支持。mine_by_nurse(nurse_id) 可单独分析某位护士的操作习惯;nurse-summary 子命令一键输出每位护士引发的互斥对数量排行榜;top-beds 则基于度中心性识别全院最常与其他床位产生互斥关系的核心床位,这些能力并非炫技,而是直接服务于排班优化中的差异化策略制定。
应用场景:可用于护理质控、排班优化与信息化提效
该项目的价值体现在多个可立即落地的业务环节:
- 护理排班优化参考
:护士长可在排班前查阅互斥台账与图谱,主动规避将高互斥床位分配给同一名护士,减少执行中断与操作返工; - 临床质控分析辅助
:将互斥图谱与不良事件记录交叉比对,识别是否存在因互斥未被识别导致的操作延误或差错风险点; - 新护士带教资料生成
:导出的互斥台账可作为标准化带教材料,帮助新人快速建立「哪些操作不宜并行」的时空认知; - HIS系统功能补强
:作为独立分析模块,其输出结果可导入现有排班系统或BI看板,弥补原系统在操作时序约束建模上的空白; - 护理信息化项目原型验证
:开发者可用其快速构建POC,验证「从执行数据反推资源约束」这一思路在本院是否成立,降低大型系统改造试错成本。
它不承诺解决所有排班难题,但把一个模糊的经验判断,转化成了可追溯、可验证、可讨论的数据结论。这种「小切口、深挖掘」的设计哲学,正是医疗软件走向精细化运营的关键一步。
使用指南:CLI与Web双路径,五分钟上手
无论你习惯终端操作还是图形界面,都能快速启动分析。
CLI模式:适合批量处理与自动化集成
首先完成基础安装:
git clone https://github.com/nexorin9/bed-mutex-atlascd bed-mutex-atlaspython -m venv venvsource venv/bin/activatepip install -r requirements.txt接着按四步执行标准流程:
python -m src.cli load -i data/sample_nursing_records.csv -o data_loaded.jsonpython -m src.cli mine -i data_loaded.json --input-is-json -o mutex_pairs.jsonpython -m src.cli ledger -i mutex_pairs.json -o ledger.csv --original-data data/sample_nursing_records.csvpython -m src.cli graph -i mutex_pairs.json -o mutex_graph.png --original-data data/sample_nursing_records.csv关键参数可根据实际需求调整: - --window-minutes 控制时间冲突判定粒度,如需更严格可设为3分钟; - --min-confidence 过滤噪声,建议首次运行保持默认0.3,后续根据台账人工复核结果逐步调高; - --include-reason 开启后,台账中将新增一列「互斥原因推测」,内容来自操作类型共现分析。
其他实用子命令: - nurse-summary:查看每位护士涉及的互斥对总数,识别高负荷个体; - top-beds:列出度中心性最高的前N张床位,定位全院互斥关系枢纽。
Web模式:适合交互式探索与跨角色演示
启动服务仅需一行命令:
python -m src.web打开浏览器访问 http://localhost:5000,上传CSV文件后,即可: - 实时调整时间窗口与置信度滑块; - 查看表格形式的互斥台账,支持排序与筛选; - 预览互斥关系图,鼠标悬停节点显示详情; - 按护士ID下拉筛选,聚焦特定人员操作特征; - 点击图中任意床位节点,展开其全部互斥边及对应原因推测。
Web界面无登录、无状态、无外部依赖,非常适合科室内部短会演示或信息科向护理部做技术说明。
总结:让护理经验沉淀为可计算的知识资产
床位互斥图谱不是一个宏大叙事的医疗AI项目,而是一个「把事情做对」的务实工具。它没有使用深度学习模型,却用时间重叠算法抓住了临床操作的本质约束;它不追求高并发吞吐,却通过模块化设计保障了在Windows、macOS、Linux上的开箱即用;它不绑定特定厂商系统,却以CSV为桥梁,实现了与绝大多数护理记录系统的无缝对接。
项目采用MIT许可证,所有代码、文档、示例数据均公开可查。从README的详尽说明、清晰的目录结构,到每一个CLI子命令的帮助文本,都体现出对使用者时间的尊重。它提醒我们:医疗信息化的真正进步,未必来自颠覆性技术,也可能始于一份能被护士长打印出来贴在排班室墙上的互斥台账。
项目当前免费开源,若您对项目有疑问、使用上的困惑或想深入交流,欢迎私信我们,或加入社群讨论。
项目地址:https://github.com/nexorin9/bed-mutex-atlas
夜雨聆风