在医院日常运营中,患者抱怨「候诊两小时、看病五分钟」并非个例,而是系统性资源错配的直观信号。但传统经验式调整,比如「多加一个分诊台试试」,缺乏量化依据,容易顾此失彼。Patient-Flow-Optimizer(患者流转仿真优化器) 正是为此而生:它不是又一个报表系统,而是一套基于离散事件仿真(DES)的轻量级决策支持工具,专为医院运营管理科、门诊办公室等一线管理角色设计,让资源配置优化从「凭感觉」转向「看数据」。
项目概述:把门诊流程变成可运行、可对比、可解释的数字模型
Patient-Flow-Optimizer 的核心逻辑非常清晰:将真实门诊流程抽象为节点链路,将资源配置转化为可调节参数,通过多次仿真实验,输出各环节等待时间、完成率与瓶颈等级。 它不依赖复杂硬件或定制开发,仅需医院 HIS 系统导出的简单时间数据(JSON 或 Excel 格式),即可快速构建仿真场景。
项目以三甲医院典型门诊流为建模基础,覆盖完整路径:分诊 → 候诊 → 就诊 → 检查 → 回诊 → 取药。每个环节均支持配置服务时间分布(如正态、对数正态)、资源数量(如诊室间数、检查设备台数)及患者分流逻辑(例如是否需检查、是否复诊)。所有仿真均基于 Python 生态成熟的 SimPy 库实现,确保结果具备工程可信度。
更关键的是,它不止于生成一堆数字。系统内置自动瓶颈识别引擎,定义「瓶颈指数 = 平均等待时间 / 平均服务时间」,并按阈值划分严重等级:大于 2 为「严重瓶颈」,1 至 2 为「中等瓶颈」,小于 1 为「轻微瓶颈」。这使得报告不再是冷冰冰的统计表,而是一份能直接支撑管理会话的「会票」。
技术亮点:兼顾专业性与易用性的双模架构
该项目在技术实现上体现出对目标用户工作场景的深度理解,既保障仿真严谨性,又大幅降低使用门槛。
仿真引擎扎实可靠
基于 SimPy 构建的离散事件仿真内核,天然适配门诊这类异步、随机、多路径的服务流程。支持普通患者与需检查患者的差异化流转路径,可准确模拟因检查延迟引发的回诊积压、医生空闲等待等真实现象。
瓶颈分析直击要害
瓶颈分析模块不仅计算单一指标,更结合资源利用率、吞吐量与等待时间三维判断。例如当某诊室利用率已达 92%,但瓶颈指数仅 0.85,说明其服务效率高、压力主要来自上游积压;反之若利用率仅 65% 而瓶颈指数达 3.2,则提示该节点存在结构性卡点(如流程衔接不畅、人员技能不匹配)。
双模式交互无缝切换
- CLI 命令行模式
:适合信息科批量调度、定时任务集成或自动化流水线。支持 --batch参数一次性加载多个配置方案,自动比对并推荐最优解。 - Streamlit Web 仪表盘
:无需命令行基础,打开浏览器即可操作。提供拖拽式资源配置滑块、实时图表渲染与多方案横向对比面板,门诊办主任用鼠标点选即可完成一次完整分析。
输出即战力,报告即沟通语言
支持 JSON 与 HTML 双格式输出。JSON 结构清晰、字段完备,便于对接医院现有 BI 系统或临床决策支持平台;HTML 报告则自带可视化图表,含瓶颈热力图、等待/服务时间对比柱状图、资源利用率雷达图,可直接用于科室汇报或院务会议材料。
# 快速启动 Web 仪表盘streamlit run app.py{ "bottleneck_analysis": { "scenario_id": [ { "node_id": "consult", "node_name": "就诊", "bottleneck_index": 2.85, "severity": "critical", "rank": 1 } ] }}应用场景:面向真实管理问题的开箱即用
本项目并非理论玩具,其功能设计全部锚定医院运营管理中的高频痛点。
可用于门诊资源配置优化评估当门诊办计划调整分诊台数量或诊室排班时,可上传当前数据,设置「+1 分诊台」「+2 诊室」等方案,一键运行仿真,明确回答「增配后平均候诊时间能降多少?是否引发新瓶颈?」。
适合急诊高峰压力测试将 arrival_rate 参数调高至高峰值(如 80 人/小时),调整医生排班与抢救床位数,仿真不同配置下的患者滞留率与完成率,为应急预案制定提供量化支撑。
可用于新院区规划与旧院区改造论证在建设前期,输入预估日均接诊量与流程设计,多方案比对不同空间布局(如分诊与候诊是否同区、检查室集中还是分散)对整体流转效率的影响,避免建成后才发现动线不合理。
适合科室主任自我诊断服务能力以本科室为单位导入数据,聚焦「就诊」「检查」「回诊」等节点,识别本科瓶颈所在,是医生接诊速度慢,还是检查报告出具延迟,或是护士分诊分流不准,从而精准定位改进方向。
使用指南:三步上手,从数据到决策
项目对使用者的技术背景要求极低,Windows、macOS、Linux 均可运行,仅需 Python 3.10+ 环境。
第一步:安装与准备
推荐使用虚拟环境隔离依赖,避免污染系统 Python。
git clone https://github.com/nexorin9/patient-flow-optimizercd patient-flow-optimizerpython -m venv venv# Windows 用户执行:venv\Scripts\activate# macOS/Linux 用户执行:source venv/bin/activatepip install -r requirements.txt第二步:准备数据
项目已内置两套示例数据,位于 data/ 目录下:- sample_outpatient.json:结构化 JSON,适合程序化处理;- sample_outpatient.xlsx:多工作表 Excel,含「节点配置」「资源配置」「分布参数」三个标签页,方便运营人员直接编辑。
实际使用时,建议从 HIS 系统导出近一个月的分诊时间、候诊开始/结束时间、就诊开始/结束时间、检查申请/完成时间、取药时间等字段,整理为相同结构。
第三步:运行仿真
两种方式任选其一:
CLI 批量模式(推荐用于正式分析)
# 运行基准方案(100 次仿真取平均,确保稳定性)python -m src.main --input data/sample_outpatient.json --runs 100 --output report_baseline# 运行增配方案(修改资源配置后保存为 new_config.json)python -m src.main --input data/new_config.json --runs 100 --output report_enhanced# 批量比对两个方案python -m src.main --batch report_*.json --runs 100 --output comparison_reportWeb 交互模式(推荐用于快速探索)
streamlit run app.py浏览器访问 http://localhost:8501 后,依次完成:上传数据 → 调整分诊台/诊室/检查室数量 → 点击「开始仿真」→ 查看「瓶颈分析」页 → 下载 HTML 报告。
所有输出均含详细字段说明,例如 pass_rate 表示全流程完成率,avg_wait_time 为节点平均等待分钟数,utilization 为资源利用率百分比,bottleneck_index 直接对应瓶颈等级判断依据。
总结:让医院运营管理拥有自己的「数字沙盒」
Patient-Flow-Optimizer 的价值,不在于它有多炫酷的前端或多么复杂的算法,而在于它把一个原本属于工业工程或运筹学领域的专业方法,离散事件仿真,真正做成了医院管理者「拿起来就能用、用了就能懂、懂了就能改」的实用工具。它不替代人的经验,而是放大经验的价值;不追求一步到位的完美方案,而是提供多轮试错的成本可控路径。
对于信息科,它是向临床部门交付价值的高效接口;对于门诊办,它是向上汇报资源配置需求的有力佐证;对于科室主任,它是发现内部管理短板的客观镜子。它提醒我们:医疗系统的优化,最终要落回到每一个患者的等待时间、每一次医生的服务节奏、每一台设备的利用效率之上。
项目当前免费开源,若您对项目有疑问、使用上的困惑或想深入交流,欢迎私信我们,或加入社群讨论。
项目地址:https://github.com/nexorin9/patient-flow-optimizer国内仓库:https://gitee.com/nexorin9/patient-flow-optimizer
夜雨聆风