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

6.1 KiB

门诊随访管理模块 — 深度设计文档

版本: 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 核心表

-- 随访计划
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电话模块)
  • 随访结果快速录入: 预设选项+自由文本
  • 满意度雷达图: 多维度评分可视化