Files
his/MD/architecture/PHASE_A_FOLLOWUP_DESIGN.md
华佗 8b34873430 feat(V32): Phase A — 随访/病理/急诊 完整实现
后端:
- FollowupController: 随访计划/任务/记录/满意度调查/投诉记录(完整CRUD+业务联动)
- PathologyController: 病理医嘱/标本管理/三级审核报告(完整CRUD+业务联动)
- EmergencyController: 急诊分诊(五级)/抢救/留观/绿色通道(完整CRUD+统计)

前端:
- followup/plan: 随访计划管理(进度条+筛选+联动)
- followup/task: 随访任务(今日任务+执行+异常标记)
- followup/record: 随访记录(用药依从+复查+转诊)
- followup/survey: 满意度调查(星级评分+统计面板)
- followup/complaint: 投诉管理(登记→处理→关闭闭环)
- pathology/order: 病理医嘱(加急标记+状态流转)
- pathology/specimen: 标本管理(扫码接收+质检)
- pathology/report: 病理报告(初诊→提交→审核→终审签发)
- emergency/triage: 急诊分诊(五级分诊+实时看板+行列高亮)
- emergency/rescue: 抢救管理(开始→过程记录→结果)
- emergency/observation: 留观管理(时长计算+转归处置)
- emergency/greentrack: 绿色通道(Door-to-Tx追踪+达标统计)

修复:
- V24-V32 Flyway迁移: is_deleted→delete_flag对齐HisBaseEntity
- V24: drug_interaction_rule表兼容V2已有结构(ADD COLUMN IF NOT EXISTS)
- V28: CURRENT CURRENT_TIMESTAMP→CURRENT_TIMESTAMP修复
- 所有INDEX添加IF NOT EXISTS防止重复创建
2026-06-07 10:24:54 +08:00

196 lines
6.1 KiB
Markdown

# 门诊随访管理模块 — 深度设计文档
> **版本**: v1.0 | **编制日期**: 2026-06-07
> **依据**: 《三级医院评审标准》患者服务条款 + 慢病管理规范
---
## 一、业务背景
门诊随访是三甲医院患者服务的核心环节:
- 慢病患者(高血压/糖尿病/冠心病等)出院后需定期随访
- 手术患者术后需随访恢复情况
- 肿瘤患者需长期随访复发/转移
- 满意度调查是医院服务质量的核心指标
## 二、业务流程
### 2.1 随访计划生成
```
出院/门诊结束
[自动触发] ← 根据病种+诊断自动生成随访计划
↓ (规则引擎)
┌─ 高血压: 每月1次电话随访, 持续1年
├─ 糖尿病: 每2周1次, 持续6个月
├─ 手术后: 术后1周/1月/3月/6月/1年
├─ 肿瘤: 每3个月复查, 持续5年
└─ 普通: 出院后1周电话随访1次
[分配责任人] ← 根据科室+医生自动分配
```
### 2.2 随访执行
```
[随访任务列表] ← 责任医生/护士查看今日任务
[选择联系方式] ← 电话/短信/微信/门诊
[拨打电话/发送短信]
[录入随访结果]
├─ 患者情况良好 → 标记完成
├─ 有异常症状 → 创建复查预约
├─ 需要调药 → 转诊门诊
└─ 失访 → 标记失访原因
[更新随访记录]
```
### 2.3 满意度调查
```
[出院时] → 发放满意度问卷(纸质/电子)
[患者填写] → 评分+建议
[数据汇总] → 按科室/医生统计
[问题整改] → 质量改进措施
```
## 三、数据模型
### 3.1 核心表
```sql
-- 随访计划
CREATE TABLE followup_plan (
id BIGSERIAL PRIMARY KEY,
patient_id BIGINT NOT NULL,
patient_name VARCHAR(50),
encounter_id BIGINT,
disease_code VARCHAR(20),
disease_name VARCHAR(100),
followup_type VARCHAR(20) NOT NULL, -- PHONE/SMS/WECHAT/OUTPATIENT
frequency VARCHAR(20), -- DAILY/WEEKLY/MONTHLY/QUARTERLY
total_times INT DEFAULT 1,
completed_times INT DEFAULT 0,
responsible_doctor VARCHAR(64),
responsible_nurse VARCHAR(64),
start_date DATE,
end_date DATE,
status VARCHAR(20) DEFAULT 'ACTIVE', -- ACTIVE/COMPLETED/CANCELLED
tenant_id BIGINT DEFAULT 0,
is_deleted INT NOT NULL DEFAULT 0,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 随访任务
CREATE TABLE followup_task (
id BIGSERIAL PRIMARY KEY,
plan_id BIGINT NOT NULL,
patient_id BIGINT NOT NULL,
patient_name VARCHAR(50),
phone VARCHAR(20),
scheduled_date DATE NOT NULL,
actual_date DATE,
contact_method VARCHAR(20),
operator_name VARCHAR(64),
result VARCHAR(20), -- SUCCESS/FAILED/NO_ANSWER/WRONG_NUMBER/LOST
abnormal_flag BOOLEAN DEFAULT FALSE,
next_action VARCHAR(200),
tenant_id BIGINT DEFAULT 0,
is_deleted INT NOT NULL DEFAULT 0,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 随访记录
CREATE TABLE followup_record (
id BIGSERIAL PRIMARY KEY,
task_id BIGINT NOT NULL,
patient_id BIGINT NOT NULL,
contact_content TEXT,
patient_condition TEXT,
medication_compliance VARCHAR(20),
symptoms TEXT,
vital_signs JSONB,
reappointment_flag BOOLEAN DEFAULT FALSE,
reappointment_date DATE,
transfer_flag BOOLEAN DEFAULT FALSE,
transfer_reason TEXT,
operator_name VARCHAR(64),
operate_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
tenant_id BIGINT DEFAULT 0,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 满意度调查
CREATE TABLE satisfaction_survey (
id BIGSERIAL PRIMARY KEY,
patient_id BIGINT,
patient_name VARCHAR(50),
survey_type VARCHAR(20) NOT NULL, -- INPATIENT/OUTPATIENT/EMERGENCY
department_name VARCHAR(100),
doctor_name VARCHAR(64),
overall_score INT,
service_score INT,
environment_score INT,
suggestions TEXT,
survey_date DATE DEFAULT CURRENT_DATE,
tenant_id BIGINT DEFAULT 0,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 投诉记录
CREATE TABLE complaint_record (
id BIGSERIAL PRIMARY KEY,
patient_id BIGINT,
patient_name VARCHAR(50),
complaint_type VARCHAR(30) NOT NULL, -- SERVICE/TECHNIQUE/ENVIRONMENT/BILLING/OTHER
complaint_content TEXT NOT NULL,
department_name VARCHAR(100),
handler VARCHAR(64),
handle_result TEXT,
handle_time TIMESTAMP,
status VARCHAR(20) DEFAULT 'PENDING', -- PENDING/PROCESSING/RESOLVED/CLOSED
satisfaction_after INT,
tenant_id BIGINT DEFAULT 0,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```
### 3.2 接口设计
| API | 方法 | 说明 | 参数 |
|-----|------|------|------|
| /followup/plan/page | GET | 随访计划列表 | patientName,status,pageNo,pageSize |
| /followup/plan/add | POST | 新建随访计划 | patientId,diseaseCode,frequency,totalTimes |
| /followup/task/my | GET | 我的今日任务 | operatorName |
| /followup/task/page | GET | 任务列表(分页) | status,scheduledDate,pageNo,pageSize |
| /followup/task/complete/{id} | PUT | 完成任务 | result,abnormalFlag,nextAction |
| /followup/record/add | POST | 录入随访记录 | taskId,contactContent,patientCondition |
| /followup/survey/add | POST | 提交满意度 | surveyType,overallScore,suggestions |
| /followup/survey/stats | GET | 满意度统计 | departmentName,startDate,endDate |
| /followup/complaint/page | GET | 投诉列表 | status,complaintType,pageNo,pageSize |
| /followup/complaint/handle/{id} | PUT | 处理投诉 | handler,handleResult |
| /followup/stats/overview | GET | 随访概览 | startDate,endDate |
## 四、前端页面设计
### 4.1 页面结构
```
followup/
├── plan/ # 随访计划管理
├── task/ # 随访任务(今日任务/我的任务)
├── record/ # 随访记录查询
├── survey/ # 满意度调查
├── complaint/ # 投诉管理
└── stats/ # 统计分析
```
### 4.2 核心交互
- **今日任务看板**: 按优先级排序(异常>待随访>已完成)
- **一键拨号**: 点击患者电话直接拨打(集成HIS电话模块)
- **随访结果快速录入**: 预设选项+自由文本
- **满意度雷达图**: 多维度评分可视化