5.8 KiB
5.8 KiB
患者列表归档处理程序说明
工作区文件
01_科室分类规则.json:大科室、子科室、文件夹别名归类规则。02_患者列表OCR归档.py:单个图片集群的 OCR、字段清洗、去重、复核报告生成程序。03_人工复核修正.json:少量无法靠规则自动判断的人工修正项,可能包含患者信息,不提交到 Git。04_合并批次结果.py:合并所有*-列表归档结果,生成全局 JSON/CSV 和信息记录。05_同步PostgreSQL单表.py:把合并结果同步到 PostgreSQL 的"Patient_Lists"单表。06_PostgreSQL建表结构.sql:数据库单表结构、索引、表注释、字段注释。07_处理程序说明.md:当前说明。08_PostgreSQL调整Patient_Lists列顺序.sql:保留数据的前提下,把现有"Patient_Lists"物理列顺序调整为当前字段顺序。09_PostgreSQL住院号非空唯一约束.sql:删除住院号为空的记录,重复住院号保留最新一条,并让 PostgreSQL 强制住院号不能为空且唯一。
智能体处理顺序
- 检查待处理批次目录和图片数量。
- 必要时更新
01_科室分类规则.json的别名。 - 运行
02_患者列表OCR归档.py处理一个批次。 - 查看
复核报告.json和重复住院号报告.json。 - 若有需人工复核项,优先补自动清洗规则;仍不能自动判断时,写入
03_人工复核修正.json。 - 用
--rebuild-from-cache重建该批次结果,确认复核项和重复住院号符合预期。 - 运行
04_合并批次结果.py更新全局信息记录。 - 运行
05_同步PostgreSQL单表.py同步到 PostgreSQL。 - 导入 PostgreSQL 后查询记录数、需复核记录数、重复住院号组数。
人工复核网页端
- 代码目录:
人工复核网页端/。 - 启动方式:
cd 人工复核网页端 && docker compose up -d --build。 - 登录配置从项目根目录
.env读取:REVIEW_APP_USERNAME、REVIEW_APP_PASSWORD、REVIEW_APP_SECRET_KEY、REVIEW_APP_PORT。 - 网页端读取各批次
复核报告.json,按原始图片路径与图片内行号裁剪截图;住院号不能为空且唯一,格式是否规范交由人工复核时判断。 - 保存修订后写入
数据处理工作区/03_人工复核修正.json,并尽量同步 PostgreSQL;若 PostgreSQL 暂不可用,会保留待同步状态,之后可在网页端点击“提交待同步”。 - 出院时间默认允许为空;确有出院时间时,网页端和处理程序会校验时间格式以及是否早于入院时间。
- 页面包含概览、复核、抽查、抽查查看、设置区域;抽查功能可随机抽取患者行,调用 Kimi 多模态模型二次核验,并把 AI 反馈、机器判断、人工抽查结论写入 PostgreSQL。
识别策略
- OCR 接口:腾讯云
RecognizeTableAccurateOCR表格识别 V3。 - 新批次拼接图默认给每张原图上下各加
24px白色边界,减少贴边表格行被裁掉或和相邻图片粘连的概率。 - 正式处理优先用 6 张拼接;接口超时、失败或行数偏少时,程序会自动降到 4/3/2/单张。
- 行数校验:按图片高度推断应有行数,返回行数偏少即判定该拼接档位不可靠。
- 漏行不一定只发生在最上方或最下方两行;长拼接图中间也可能漏行,白边只能缓解贴边问题。
- 同一科室内会记忆稳定回退档位;跨科室不共享该记忆,避免重建历史缓存时误用。
- 只用缓存重建时,若前序回退策略需要的缓存不完整,会先尝试该组主缓存,避免因缓存形态不同造成少行。
- 字段顺序固定为:姓名、性别、年龄、住院号、诊断、入院时间、最后书写时间、住院天数、出院时间、手术后天数。
- 字段清洗包含日期规范化、住院号常见误识别修正、长诊断吞入入院时间、空时间字段导致列左移、
后XX天错位等。
住院号核验规则
住院号是唯一强制校验条件:不能为空且全库唯一。- 单批次、全局合并和 PostgreSQL 同步都会剔除住院号为空的记录;重复住院号按后出现记录覆盖先出现记录;格式异常但非空的住院号保留。
- 网页端保存时优先按图片路径和图片内行号定位数据库记录;如果当前住院号已存在于另一条记录,会用当前修订覆盖既有住院号记录,并删除当前重复图片记录。
- 数据库约束允许
出院时间为空;若入院时间和出院时间均为标准格式且入院时间晚于出院时间,该记录必须标记为需人工复核。
PostgreSQL 单表字段
"Patient_Lists" 只保留正式查看和追溯需要的字段:
- 数据定位:
batch_name、source_folder、image_path、image_name、image_row_no - 科室信息:
major_department、sub_department - 患者信息:姓名、性别、年龄、住院号、诊断、入院时间、最后书写时间、住院天数、出院时间、手术后天数
- 复核信息:
review_status、review_notes、manual_corrected - 抽查信息:
audit_result、audit_ai_feedback、audit_manual_feedback、audit_machine_verdict、audit_source、audit_checked_by、audit_checked_at
复核状态含义:
自动复核通过:OCR 结果经过程序规则校验后没有发现明显异常,manual_corrected=false。人工复核通过:该行命中了03_人工复核修正.json中的人工修正项,修正后校验通过,manual_corrected=true。AI修改-待确认:网页端 Kimi 辅助生成的草稿状态,不会被待同步流程写入 PostgreSQL,需人工保存确认。
OCR 请求号、OCR 缓存路径、拼接图路径、拼接组号等中间态字段不进入数据库正式表。