Files
HIS/患者列表处理/数据处理工作区/07_处理程序说明.md

5.8 KiB
Raw Permalink Blame History

患者列表归档处理程序说明

工作区文件

  1. 01_科室分类规则.json:大科室、子科室、文件夹别名归类规则。
  2. 02_患者列表OCR归档.py:单个图片集群的 OCR、字段清洗、去重、复核报告生成程序。
  3. 03_人工复核修正.json:少量无法靠规则自动判断的人工修正项,可能包含患者信息,不提交到 Git。
  4. 04_合并批次结果.py:合并所有 *-列表归档结果,生成全局 JSON/CSV 和 信息记录
  5. 05_同步PostgreSQL单表.py:把合并结果同步到 PostgreSQL 的 "Patient_Lists" 单表。
  6. 06_PostgreSQL建表结构.sql:数据库单表结构、索引、表注释、字段注释。
  7. 07_处理程序说明.md:当前说明。
  8. 08_PostgreSQL调整Patient_Lists列顺序.sql:保留数据的前提下,把现有 "Patient_Lists" 物理列顺序调整为当前字段顺序。
  9. 09_PostgreSQL住院号非空唯一约束.sql:删除住院号为空的记录,重复住院号保留最新一条,并让 PostgreSQL 强制住院号不能为空且唯一。

智能体处理顺序

  1. 检查待处理批次目录和图片数量。
  2. 必要时更新 01_科室分类规则.json 的别名。
  3. 运行 02_患者列表OCR归档.py 处理一个批次。
  4. 查看 复核报告.json重复住院号报告.json
  5. 若有需人工复核项,优先补自动清洗规则;仍不能自动判断时,写入 03_人工复核修正.json
  6. --rebuild-from-cache 重建该批次结果,确认复核项和重复住院号符合预期。
  7. 运行 04_合并批次结果.py 更新全局 信息记录
  8. 运行 05_同步PostgreSQL单表.py 同步到 PostgreSQL。
  9. 导入 PostgreSQL 后查询记录数、需复核记录数、重复住院号组数。

人工复核网页端

  • 代码目录:人工复核网页端/
  • 启动方式:cd 人工复核网页端 && docker compose up -d --build
  • 登录配置从项目根目录 .env 读取:REVIEW_APP_USERNAMEREVIEW_APP_PASSWORDREVIEW_APP_SECRET_KEYREVIEW_APP_PORT
  • 网页端读取各批次 复核报告.json,按原始图片路径与图片内行号裁剪截图;住院号不能为空且唯一,格式是否规范交由人工复核时判断。
  • 保存修订后写入 数据处理工作区/03_人工复核修正.json,并尽量同步 PostgreSQL若 PostgreSQL 暂不可用,会保留待同步状态,之后可在网页端点击“提交待同步”。
  • 出院时间默认允许为空;确有出院时间时,网页端和处理程序会校验时间格式以及是否早于入院时间。
  • 页面包含概览、复核、抽查、抽查查看、设置区域;抽查功能可随机抽取患者行,调用 Kimi 多模态模型二次核验,并把 AI 反馈、机器判断、人工抽查结论写入 PostgreSQL。

识别策略

  • OCR 接口:腾讯云 RecognizeTableAccurateOCR 表格识别 V3。
  • 新批次拼接图默认给每张原图上下各加 24px 白色边界,减少贴边表格行被裁掉或和相邻图片粘连的概率。
  • 正式处理优先用 6 张拼接;接口超时、失败或行数偏少时,程序会自动降到 4/3/2/单张。
  • 行数校验:按图片高度推断应有行数,返回行数偏少即判定该拼接档位不可靠。
  • 漏行不一定只发生在最上方或最下方两行;长拼接图中间也可能漏行,白边只能缓解贴边问题。
  • 同一科室内会记忆稳定回退档位;跨科室不共享该记忆,避免重建历史缓存时误用。
  • 只用缓存重建时,若前序回退策略需要的缓存不完整,会先尝试该组主缓存,避免因缓存形态不同造成少行。
  • 字段顺序固定为:姓名、性别、年龄、住院号、诊断、入院时间、最后书写时间、住院天数、出院时间、手术后天数。
  • 字段清洗包含日期规范化、住院号常见误识别修正、长诊断吞入入院时间、空时间字段导致列左移、后XX天 错位等。

住院号核验规则

  • 住院号 是唯一强制校验条件:不能为空且全库唯一。
  • 单批次、全局合并和 PostgreSQL 同步都会剔除住院号为空的记录;重复住院号按后出现记录覆盖先出现记录;格式异常但非空的住院号保留。
  • 网页端保存时优先按图片路径和图片内行号定位数据库记录;如果当前住院号已存在于另一条记录,会用当前修订覆盖既有住院号记录,并删除当前重复图片记录。
  • 数据库约束允许 出院时间 为空;若入院时间和出院时间均为标准格式且入院时间晚于出院时间,该记录必须标记为 需人工复核

PostgreSQL 单表字段

"Patient_Lists" 只保留正式查看和追溯需要的字段:

  • 数据定位:batch_namesource_folderimage_pathimage_nameimage_row_no
  • 科室信息:major_departmentsub_department
  • 患者信息:姓名、性别、年龄、住院号、诊断、入院时间、最后书写时间、住院天数、出院时间、手术后天数
  • 复核信息:review_statusreview_notesmanual_corrected
  • 抽查信息:audit_resultaudit_ai_feedbackaudit_manual_feedbackaudit_machine_verdictaudit_sourceaudit_checked_byaudit_checked_at

复核状态含义:

  • 自动复核通过OCR 结果经过程序规则校验后没有发现明显异常,manual_corrected=false
  • 人工复核通过:该行命中了 03_人工复核修正.json 中的人工修正项,修正后校验通过,manual_corrected=true
  • AI修改-待确认:网页端 Kimi 辅助生成的草稿状态,不会被待同步流程写入 PostgreSQL需人工保存确认。

OCR 请求号、OCR 缓存路径、拼接图路径、拼接组号等中间态字段不进入数据库正式表。