Import sanitized HIS processing tools

This commit is contained in:
2026-05-26 08:51:10 +08:00
commit 7e329f1d85
46 changed files with 19175 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
# 患者首页可视化对照网页端
这个网页端用于人工复核患者首页:概览看批次状态,复核页只处理需复核记录,中间查看 PDF右侧编辑结构化摘录信息保存后直接同步到 PostgreSQL 表 `"Patient_FrontPages"`
## 启动
在项目根目录确认 `.env` 已存在,然后运行:
```bash
docker compose -f 数据可视化网页端/docker-compose.yml up -d --build
```
浏览器打开:
```text
http://localhost:8501
```
首次进入会显示登录界面。默认管理员为 `admin`,默认密码为 `change-me`;可在 `.env` 中通过 `REVIEW_ADMIN_USER``REVIEW_ADMIN_PASSWORD` 修改。设置页创建的本地用户会同步作为登录账号,并按权限控制概览、复核、抽查、抽查一览、设置页面。
## 目录挂载
- `已处理-患者首页PDF/2026_5_25_处理/` 挂载为容器内 `/data/pdfs`,只读。
- 网页端只预览 PDF不再挂载或依赖 PDF 转图片目录。
## 保存规则
右侧字段保存后会:
- 更新被编辑的 PostgreSQL 字段。
- 设置 `manual_corrected = true`
- 自动将 `review_status` 标记为 `reviewed`
- 把人工备注追加到 `review_notes` JSONB 数组中。
- 在主表 `review_logs` JSONB 列中记录修改时间、修改字段、修改前后值和人工备注。
- PostgreSQL 触发器会按非空 `inpatient_no` 自动同步 `Patient_Lists.has_front_page/front_page_id/front_page_source_file`;本网页端只校验患者号不能为空,不校验编号格式,同一患者号只保留一个首页,迁移时保留最新记录,后续同号写入会覆盖旧首页,删除首页记录时旧关联会自动解除;同一患者号姓名不一致时,以首页表中的非空姓名覆盖 `Patient_Lists.patient_name`。只有自动补建新列表记录时,才把主要诊断、入院时间、出院时间写入 `Patient_Lists`
`.env` 含数据库密码,只保留本地,不提交到 Gitea可参考 `.env.example` 创建。
## 页面规则
- 顶部页签包括:概览、复核、抽查、抽查一览、设置;设置内合并用户与权限、数据库状态和目录信息。
- 复核页以住院号作为第一识别项;住院号由住院次数 2 位和首页病案号 10 位自动生成,例如 `ZY020001447443`
- 复核页默认进入“全部复核数据”,包含需复核、自动修正、已人工复核/已人工修改,不处理无需复核的自动通过记录。
- 复核提示会自动定位到右侧模块;命中的模块和字段标红,无关模块默认收起。
- 人工备注下方展示修改记录表,时间由 PostgreSQL 后台记录。
- PDF 以 `inline` 方式展示,不再作为附件触发保存;浏览器不能彻底禁止保存已展示内容。
- 顶部数据库/PDF 状态读取缓存;设置页可手动“立即检查”,也可设置每日凌晨等固定时间自动检查。
- 复核状态、质控状态显示在 PDF 下方,只读。
- 诊断、手术、费用等 JSONB 字段以表格方式展示和编辑。
- 手术操作按编码、日期、级别、名称、术者、I助、II助、切口愈合等级、麻醉方式、麻醉医师拆分。
## 抽查规则
- 抽查页可从 `reviewed``auto_pass` 中随机抽样。
- 抽查页右侧和复核页一样展示并可编辑全部结构化信息,下方有人工备注和修改记录。
- 随机抽取不会写入“待抽查”记录;只有点击“归类通过并保存”“归类异常并保存”“归类不确定并保存”后,才写入主表 `audit_logs` JSONB 列。
- 抽查一览只展示已归类的通过、异常、不确定记录,并显示修改内容、人工备注和更新时间。
- 涉及患者资料的视觉识别仍需人工运行 `07_Kimi图片识别辅助.py`,不会由网页端自动上传。