Import sanitized HIS processing tools
This commit is contained in:
72
患者列表处理/数据处理工作区/07_处理程序说明.md
Normal file
72
患者列表处理/数据处理工作区/07_处理程序说明.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# 患者列表归档处理程序说明
|
||||
|
||||
## 工作区文件
|
||||
|
||||
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_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 缓存路径、拼接图路径、拼接组号等中间态字段不进入数据库正式表。
|
||||
Reference in New Issue
Block a user