当前位置: 首页 > news >正文

[开源] 多部门会签文档进度自动重建系统:面向医院行政与临床协同的OCR+状态机追踪工具

本项目是专为医院多部门会签流程设计的轻量级文档进度追踪系统,解决术前讨论、器械采购、医务审批等跨科室纸质/扫描件流转中「卡在哪、谁没签、超没超时」三大盲区。我们用手机拍照上传会签单,自动识别当前签署节点(如「麻醉科已签」「ICU待审」),驱动状态机记录每一步流转时间,生成唯一二维码供患者或申请科室扫码查实时状态和预计完成时间;对停留超48小时未处理的节点,系统自动告警。它不是通用工作流引擎,不对接HIS或EMR,而是聚焦「会签文档本身」这一最小可追踪单元,提供CLI命令行、Web API和HTML仪表盘三类交付形态,技术栈全部基于Python生态:Tesseract(chi_sim中文包)做OCR、OpenCV预处理图像、SQLite本地存档、Flask暴露API、Rich渲染终端界面、Jinja2生成中式政务风HTML页。

定位与能力范围

我们不做流程再造,也不替代签字动作本身,只做一件事:把散落在不同科室桌面上的会签单,变成一条可追溯、可查询、可预警的时间线。适用场景明确限定在「多部门顺序或并行签署的正式文书」,典型如:术前讨论纪要、高值耗材采购申请、院内会诊邀请单、科研伦理审查表、大型设备使用审批单。不覆盖日常交接班记录、护理巡视单、检验申请单等非会签类表单;也不处理电子签名平台已在线签署的文档,本系统专治那些仍靠打印、手写、传阅、拍照的「半数字化」环节。

它的能力边界清晰: - 输入必须是含会签栏的文档图像(支持JPG/PNG),能识别出「科室名+签署人+时间」结构化字段; - 状态机仅管理「创建→流转中→完成→取消」四态,节点粒度到科室级(非个人),不拆解到具体医生工号; - QR码仅编码文档ID与查询密钥,不承载业务数据,扫码页只读不修改; - 所有告警基于配置的threshold_hours(默认48小时),不引入外部日历或节假日规则。

核心功能模块

模块

关键能力

说明

图像采集与OCR

灰度化、二值化、倾斜校正、中文识别

OpenCV预处理保障Tesseract在模糊、反光、倾斜照片上仍可提取「外科:张三 2026-05-10」类文本

状态机引擎

节点级待签/已签/已拒、全局文档状态、完整时间戳链

每次sign操作触发状态校验,拒绝重复签署或跳过前置节点,所有变更写入timeline表

QR码管理

文档ID+密钥编码、可打印标签生成、扫码直连状态页

生成PNG后可粘贴至纸质单右下角,患者扫码即见当前所处节点及剩余预估时长(如「距超时还剩36小时」)

HTML可视化

时间轴图谱、四象限仪表盘(待处理/进行中/已完成/超时)、响应式布局

界面采用蓝灰主色、方正字体、无动画,适配iPad及门诊自助机浏览器

CLI工具集

全生命周期操作:建单、查状态、签节点、看时间轴、导报表

支持--status in_progress筛选、batch-import夹批量导入、export --format csv导出台账

使用与配置

安装只需三步:克隆代码、装Python依赖、配Tesseract中文包。无需数据库服务或云环境,SQLite文件默认存于data/document_flow.db,开箱即用。

pip install -r requirements.txt

Tesseract安装按系统区分: - Windows:下载UB-Mannheim安装包,勾选chi_sim中文语言包; - Linux:sudo apt-get install tesseract-ocr tesseract-ocr-chi-sim; - macOS:brew install tesseract tesseract-lang

配置通过config.json统一管理,关键项包括OCR语言(默认chi_sim+eng)、超时阈值(单位小时)、Web服务端口、日志路径。首次运行可自动生成模板:

python main.py init-config

工作流实操示例

以「术前讨论纪要」为例,全流程6步可在5分钟内走完:

  1. 创建文档:声明标题与初始会签科室
    python main.py create "术前讨论纪要" --departments "外科,麻醉科,ICU"

  2. 补全节点:追加医务科、分管院长等后续环节
    python main.py add-node 1 --name "医务科审核" --department "医务科"
    python main.py add-node 1 --name "分管院长审批" --department "院领导"

  3. 导入照片:外科医生拍下已签署页面,上传绑定文档
    python main.py import-image ./img/waike.jpg --doc-id 1

  4. OCR识别:系统自动解析出「外科:李四 2026-05-10」并标记该节点为SIGNED
    python main.py scan-document ./img/waike.jpg

  5. 扫码查看:打印QR码贴单,患者扫码即见「当前节点:麻醉科(待签),预计24小时内完成」
    python main.py generate-qr 1

  6. 监控超时:若麻醉科48小时未签,report --type overdue将列出该文档,管理员可定向催办。

工程结构与扩展性

项目采用分层架构,各模块职责分明,便于医院信息科二次开发:

目录/文件

职责

可定制点

src/state_machine.py

状态转换规则、节点校验逻辑

修改transition_rules可适配本院特有会签顺序(如需「先ICU后麻醉科」)

src/ocr_engine.py

图像预处理参数、Tesseract调用封装

调整threshold(默认128)或开关denoise可优化特定扫描件识别率

src/qr_generator.py

QR码内容格式、密钥生成策略

替换generate_query_key()函数可对接院内统一认证体系

templates/

HTML页面样式与数据渲染逻辑

修改CSS变量即可切换蓝白/绿白主题,适配不同科室视觉偏好

所有CRUD操作经由src/crud.py抽象,数据库表结构固化但字段可扩:documents表存主干信息,nodes表存科室节点,timeline表存每一次签署动作,新增字段不影响现有CLI命令。

环境与运行保障

系统对运行环境要求极低,Python 3.8+即可,无GPU依赖。测试覆盖核心路径,运行pytest可验证OCR解析、状态跳转、QR码生成等关键行为。日志默认写入logs/document_flow.log,级别可配为DEBUG用于排查识别失败原因。

常见问题有标准应对手段: | 问题现象 | 原因定位 | 解决方式 | |----------|----------|----------| | OCR识别不出科室名 | 图片过暗/反光/倾斜严重 | 用scan-document前先手动旋转图片,或调高config.jsonocr.threshold值 | |status命令报错「no such table」 |data/目录无写权限或路径不存在 | 手动创建data文件夹,或修改config.jsondatabase.path为绝对路径 | | Web服务启动失败 | 端口5000被占用 | 修改config.jsonweb.port为5001,或执行lsof -i :5000杀进程 |

数据与交付形态

系统输出两类核心数据资产:一是结构化台账,含文档ID、标题、各节点签署人、时间、备注,支持CSV/JSON导出供质控分析;二是可视化视图,仪表盘按状态分类统计文档数,时间轴页展示从发起至当前的完整流转图谱。所有数据落盘于SQLite,无外部依赖,导出即走,符合医院数据本地化要求。

CLI命令覆盖全部管理动作,Web API则为前端集成预留接口:GET /api/document/{id}返回摘要,GET /api/document/{id}/timeline返回带时间戳的节点序列,GET /api/document/{id}/status返回是否超时等布尔态。不提供POST/PUT接口,杜绝远程篡改风险。

项目地址:
https://github.com/nexorin9/document-flow-tracker

http://www.rkmt.cn/news/1430937.html

相关文章:

  • AnyFlip下载器:三步实现电子书PDF转换的跨平台解决方案
  • 老Mac焕新记:手把手教你用U盘和Ghost镜像给iMac安装纯净版Win7
  • 2026年5月更新:河北有实力的平台钢格板定制厂家选哪家?专业解析与推荐 - 2026年企业资讯
  • 第 20 篇 搭建 Kubernetes 实验环境:Minikube 与 kubectl
  • 2026年国内GEO服务商实力盘点:从短期流量到长效资产的转型之路 - GEO优化
  • 2026降AI率工具红黑榜:降AI率工具怎么选?一文讲透
  • 郑州茅台酒回收商家排行:郑州闲置酒水回收、郑州高价名酒回收、郑州高端名酒回收、郑州上门收茅台、郑州专业老酒回收选择指南 - 优质品牌商家
  • 2026年5月更新:聚焦安徽市场,甄选高性价比安全生产培训直销服务商 - 2026年企业资讯
  • 如何高效管理浏览器下载:Motrix WebExtension专业解决方案
  • Windows高DPI缩放总让你头疼?从‘模糊’到‘清晰’的完整设置指南(含Win10/11避坑清单)
  • C# 重写
  • 干货合集:2026年实测靠谱的专业降AI率平台
  • Perseus原生库:无偏移地址设计的游戏脚本补丁架构解析
  • Parallels Desktop 17保姆级教程:给CentOS 7虚拟机配个固定IP,开发调试再也不怕IP变来变去
  • Arduino电位器控制RGB LED:从模拟输入到PWM输出的完整实践
  • 2624张光伏缺陷图像:ELPV数据集如何重塑AI质检标准
  • 西安好阿姨家政,专业育婴师推荐的不二之选 - myqiye
  • Veo多场景视频生成合规红线清单,2024最新GDPR+《生成式AI服务管理暂行办法》双标适配指南
  • 福建外墙涂料多少钱?丽哆美价格合理 - mypinpai
  • 求推荐内蒙古生产小型水泥构件的源头厂家 - 工业品牌热点
  • 生成式AI视频侵权判定标准首次公开:国家版权中心2024新规解读与企业自查清单
  • 知识图谱与 Agent Harness 的深度融合
  • 英雄联盟玩家必备:本地化智能助手如何彻底改变你的游戏体验
  • 断桥铝耐火窗 工程批发 品质达标
  • 手把手教你用Amlogic USB Burning Tool给创维代工M411A盒子刷安卓9.0纯净系统
  • 深圳设备搬迁收费标准 专业高空吊装公司推荐 - 从来都是英雄出少年
  • 告别Visual Studio Code?在麒麟系统里用Rider+Avalonia搭建.NET 6桌面开发环境
  • 深圳高空吊装公司哪家好 起重搬迁收费标准 2026 - 从来都是英雄出少年
  • 第19章 集群高可用最终验收清单
  • 0108芯片篇:硅基终局与文明换道实证:后摩尔时代的底层逻辑——从“实体几何”到“场域本源”