Files
his/MD/design/PHASE2_REVIEW_DESIGN.md
chenqi 575f5d6c32 fix(database): 修复数据库字典重复和表结构缺失问题
- 删除手术状态下拉框的重复字典数据,保留每组中dict_code最小的记录
- 修复HisBaseEntity列缺失问题,为多个表添加create_by、update_by、update_time等基础字段
- 为adm_patient表添加邮政编码、户籍地址、监护人信息、患者来源等缺失字段
- 添加文化程度字典类型和相关字典数据,补充3919到3914等10个学历级别选项
- 为adm_patient_identifier表创建tenant_id和patient_id的联合索引以提升查询性能
- 修复prescription_intercept_log和clinical_pathway_execution表的基础实体字段缺失
- 为wor_device_request表增加医嘱退回相关的back_reason、performer_check_id等字段
- 创建EMPI核心表empi_person和empi_person_id_mapping用于全局患者主索引管理
- 为empi_merge_log表添加create_time字段以完善审计信息
- 更新院感管理和评审保障模块的设计文档,明确各模块实现状态和缺失功能
2026-06-17 11:46:56 +08:00

40 KiB
Raw Blame History

HealthLink-HIS Phase 2 详细设计 — P1评审保障

文档类型: 详细设计 版本: v1.0 日期: 2026-06-17 范围: 6大模块组 × 25个功能域 技术栈: Spring Boot 4.0.6 + JDK 25 + MyBatis-Plus 3.5.16 + Vue 3 + Element Plus + PostgreSQL 15+


目录


1. 院感管理infection

1.1 已有代码分析

后端结构

层级 文件 说明
Controller InfectionController.java (298行) 感染病例/手卫生/环境/抗菌/耐药/职业暴露/预警/监测
Controller InfectionEnhancedController.java (271行) 暴发预警/目标性监测/手卫生/耐药/环境增强
AppService IInfectionAppService.java + impl 院感业务编排
Domain Service 8个IXxxService + impl 各子域CRUD
Domain Entity 8个Entity HirInfectionCase/AntibioticUsage/OccupationalExposure/EnvironmentalMonitor/HandHygiene/MultiDrugResistant/OutbreakWarning/TargetedSurveillance
Mapper 8个Mapper 各子域持久化

已有数据库表V9+V17

表名 来源 说明
hir_infection_case V9 感染病例
hir_antibiotic_usage V9 抗菌药物使用
hir_occupational_exposure V9 职业暴露
hir_environmental_monitor V17 环境监测
hir_hand_hygiene V17 手卫生
hir_multi_drug_resistant V17 多重耐药菌
hir_outbreak_warning V17 暴发预警
hir_targeted_surveillance V17 目标性监测

前端结构

目录 文件数 说明
infection/ 8 7个有script
infectionenhanced/ 1 增强页面

1.2 缺失功能清单

# 功能 优先级 说明
1 院感病例自动筛查规则引擎 P0 基于诊断/检验/用药自动触发筛查
2 暴发预警逻辑增强 P0 同科室同类型感染≥3例自动预警
3 目标性监测ICU/手术部位 P0 ICU导管日/手术部位感染率
4 手卫生依从性统计 P1 科室/个人依从率排名
5 环境监测管理 P1 采样计划/结果录入/合格率
6 多重耐药菌跟踪 P1 耐药菌检出→隔离→解除闭环

1.3 业务流程

1.3.1 院感病例自动筛查

电子病历/检验数据 → 规则引擎匹配 → 生成筛查记录 → 院感科审核 → 确认/排除
       ↑                                    ↓
  检验结果(Microbiology)              感染病例(hir_infection_case)
  用药记录(AntibioticUsage)
  诊断编码(ICD-10)

1.3.2 暴发预警

监测数据聚合 → 阈值判断(同科室≥3例/7天) → 生成预警 → 院感科响应 → 处置记录
                                                              ↓
                                                     触发应急响应流程

1.3.3 目标性监测

ICU患者 → 导管留置天数记录 → 感染事件关联 → 计算感染率(ICU-specific)
手术患者 → 手术部位感染追踪 →SSI率计算 → 科室排名

1.4 数据库设计

V47__infection_rule_engine.sql

CREATE TABLE hir_screening_rule (
    id BIGSERIAL PRIMARY KEY,
    rule_code VARCHAR(50) NOT NULL,
    rule_name VARCHAR(200) NOT NULL,
    rule_type VARCHAR(20) NOT NULL,
    trigger_condition TEXT NOT NULL,
    severity VARCHAR(20) DEFAULT 'MEDIUM',
    is_enabled VARCHAR(1) DEFAULT '1',
    department_scope VARCHAR(500),
    icd_codes TEXT,
    lab_keywords TEXT,
    drug_keywords TEXT,
    time_window_hours INTEGER DEFAULT 72,
    threshold INTEGER DEFAULT 1,
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE hir_screening_record (
    id BIGSERIAL PRIMARY KEY,
    patient_id BIGINT NOT NULL,
    encounter_id BIGINT NOT NULL,
    rule_id BIGINT NOT NULL,
    rule_code VARCHAR(50) NOT NULL,
    rule_name VARCHAR(200),
    match_source VARCHAR(50) NOT NULL,
    match_detail TEXT,
    risk_level VARCHAR(20) DEFAULT 'MEDIUM',
    status VARCHAR(20) DEFAULT 'PENDING',
    reviewer_id BIGINT,
    review_time TIMESTAMP,
    review_remark TEXT,
    confirmed_case_id BIGINT,
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE hir_icu_daily_record (
    id BIGSERIAL PRIMARY KEY,
    patient_id BIGINT NOT NULL,
    encounter_id BIGINT NOT NULL,
    icu_type VARCHAR(50) NOT NULL,
    record_date DATE NOT NULL,
    ventilator_hours DECIMAL(5,2) DEFAULT 0,
    central_line_days INTEGER DEFAULT 0,
    urinary_catheter_days INTEGER DEFAULT 0,
    has_vap VARCHAR(1) DEFAULT '0',
    has_clabsi VARCHAR(1) DEFAULT '0',
    has_cauti VARCHAR(1) DEFAULT '0',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE hir_ssi_tracking (
    id BIGSERIAL PRIMARY KEY,
    patient_id BIGINT NOT NULL,
    encounter_id BIGINT NOT NULL,
    surgery_id BIGINT,
    surgery_type VARCHAR(100),
    surgery_date DATE,
    wound_class VARCHAR(20),
    ssi_type VARCHAR(20),
    diagnosis_date DATE,
    pathogen TEXT,
    status VARCHAR(20) DEFAULT 'ACTIVE',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE hir_hygiene_compliance (
    id BIGSERIAL PRIMARY KEY,
    department_id BIGINT NOT NULL,
    department_name VARCHAR(100),
    monitor_date DATE NOT NULL,
    monitor_type VARCHAR(50) NOT NULL,
    target_count INTEGER DEFAULT 0,
    actual_count INTEGER DEFAULT 0,
    compliance_rate DECIMAL(5,2),
    observer_id BIGINT,
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

1.5 API接口设计

1.5.1 规则引擎

方法 路径 说明
GET /infection/rule/page 规则分页列表
POST /infection/rule/add 新增规则
PUT /infection/rule/update 修改规则
DELETE /infection/rule/delete/{id} 删除规则
POST /infection/rule/toggle/{id} 启用/禁用规则
POST /infection/screening/run 执行筛查
GET /infection/screening/page 筛查记录分页
PUT /infection/screening/review/{id} 审核筛查结果

1.5.2 暴发预警

方法 路径 说明
GET /infection/outbreak/statistics 暴发统计
POST /infection/outbreak/auto-detect 自动检测暴发
GET /infection/outbreak/timeline/{id} 预警时间线

1.5.3 目标性监测

方法 路径 说明
GET /infection/icu/daily/page ICU日志分页
POST /infection/icu/daily/add 新增ICU日志
GET /infection/icu/rate ICU感染率统计
GET /infection/ssi/page SSI追踪分页
POST /infection/ssi/add 新增SSI记录
GET /infection/ssi/rate SSI感染率统计

1.5.4 手卫生

方法 路径 说明
GET /infection/hygiene/compliance/page 依从性分页
POST /infection/hygiene/compliance/add 录入依从性数据
GET /infection/hygiene/ranking 科室排名
GET /infection/hygiene/trend 依从性趋势

1.6 前端设计

页面 路径 说明
规则管理 infection/ruleManage.vue 规则CRUD + 启用/禁用
筛查工作台 infection/screeningWorkbench.vue 待审核筛查列表 + 审核操作
暴发预警 infectionenhanced/outbreakDashboard.vue 预警大屏 + 时间线
ICU监测 infectionenhanced/icuMonitoring.vue ICU日志录入 + 感染率
SSI追踪 infectionenhanced/ssiTracking.vue SSI记录 + 统计
手卫生统计 infectionenhanced/hygieneCompliance.vue 依从性录入 + 排名 + 趋势

2. 护理评估nursing

2.1 已有代码分析

后端结构

层级 文件 说明
Controller 6个 Nursing/NursingEnhanced/NursingExecution/NursingQuality/AssessmentTrend/NursingAssessmentEnhanced
AppService 2个 INursingAppService + INursingEnhancedAppService
Domain Entity 12个 NursingAssessment/AssessmentReminder/AssessmentTrend/CarePlan/ExecutionScan/Handoff/HandoffRecord/InfusionPatrol/QualityIndicator/VitalSignsChart/AssessmentIntervention/Dynamic

已有数据库表V7+V18+V21+V22+V26+V35

表名 来源 说明
nursing_assessment V7 护理评估
nursing_care_plan V7 护理计划
nursing_handoff V7 护理交接
nursing_assessment_reminder V18 评估提醒
nursing_execution_scan V21 执行扫码
nursing_handoff_record V21 交接记录
nursing_infusion_patrol V21 巡视记录
nursing_quality_indicator V22 质量指标
nursing_assessment_intervention V26 评估干预
nursing_assessment_dynamic V35 动态评估

前端结构

目录 文件数 说明
nursing/ 1 基础评估
nurseriesenhanced/ 2 增强功能
nursingexecution/ 1 执行记录
nursingquality/ 1 质量指标
assessmenttrend/ 1 评估趋势
vitalsignschart/ 1 生命体征

2.2 缺失功能清单

# 功能 优先级 说明
1 管道滑脱风险评估 P0 Morse评分+管道分类+干预措施
2 营养风险筛查NRS2002 P0 BMI+疾病+营养评分
3 疼痛评估NRS/VAS P1 数字评分+面部表情+部位定位

2.3 业务流程

2.3.1 管道滑脱风险评估

入院评估 → 管道登记(类型/留置日期/固定方式)
    ↓
定期评估(Morse评分) → 风险分级(低/中/高)
    ↓
干预措施(标识/固定/宣教) → 效果评价 → 降低风险

2.3.2 营养风险筛查NRS2002

入院24h内 → NRS2002筛查(BMI+疾病严重度+年龄)
    ↓
评分≥3分 → 营养不良风险 → 营养科会诊
评分<3分 → 每周复评
    ↓
营养干预 → 效果评价 → 复评

2.3.3 疼痛评估NRS/VAS

入院评估 → 疼痛评估(NRS 0-10 / VAS / 面部表情)
    ↓
疼痛部位定位(人体图) → 疼痛性质/持续时间
    ↓
镇痛方案 → 效果评价 → 再评估

2.4 数据库设计

V48__nursing_assessment_tools.sql

CREATE TABLE nursing_pipe_risk_assessment (
    id BIGSERIAL PRIMARY KEY,
    patient_id BIGINT NOT NULL,
    encounter_id BIGINT NOT NULL,
    pipe_type VARCHAR(50) NOT NULL,
    pipe_name VARCHAR(200),
    insertion_date DATE,
    insertion_site VARCHAR(100),
    fixation_method VARCHAR(100),
    morse_score INTEGER DEFAULT 0,
    risk_level VARCHAR(20) DEFAULT 'LOW',
    intervention_measures TEXT,
    assessment_date TIMESTAMP,
    assessor_id BIGINT,
    assessor_name VARCHAR(100),
    next_assess_date TIMESTAMP,
    status VARCHAR(20) DEFAULT 'ACTIVE',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE nursing_nrs2002_screening (
    id BIGSERIAL PRIMARY KEY,
    patient_id BIGINT NOT NULL,
    encounter_id BIGINT NOT NULL,
    bmi DECIMAL(5,2),
    bmi_score INTEGER DEFAULT 0,
    disease_severity INTEGER DEFAULT 0,
    age_score INTEGER DEFAULT 0,
    total_score INTEGER DEFAULT 0,
    has_nutrition_risk VARCHAR(1) DEFAULT '0',
    screening_date TIMESTAMP,
    screener_id BIGINT,
    screener_name VARCHAR(100),
    next_screening_date TIMESTAMP,
    referral_status VARCHAR(20),
    referral_time TIMESTAMP,
    dietitian_id BIGINT,
    nutrition_plan TEXT,
    outcome TEXT,
    status VARCHAR(20) DEFAULT 'ACTIVE',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE nursing_pain_assessment (
    id BIGSERIAL PRIMARY KEY,
    patient_id BIGINT NOT NULL,
    encounter_id BIGINT NOT NULL,
    assessment_type VARCHAR(20) NOT NULL,
    pain_score INTEGER,
    pain_location VARCHAR(200),
    pain_location_body_map TEXT,
    pain_nature VARCHAR(100),
    pain_duration VARCHAR(100),
    pain_frequency VARCHAR(100),
    aggravating_factors TEXT,
    alleviating_factors TEXT,
    impact_on_sleep VARCHAR(20),
    impact_on_mood VARCHAR(20),
    assessment_date TIMESTAMP,
    assessor_id BIGINT,
    assessor_name VARCHAR(100),
    next_assess_date TIMESTAMP,
    status VARCHAR(20) DEFAULT 'ACTIVE',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE nursing_pain_intervention (
    id BIGSERIAL PRIMARY KEY,
    pain_assessment_id BIGINT NOT NULL,
    intervention_type VARCHAR(50) NOT NULL,
    intervention_content TEXT,
    effect_evaluation TEXT,
    re_assessment_score INTEGER,
    intervention_time TIMESTAMP,
    operator_id BIGINT,
    operator_name VARCHAR(100),
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

2.5 API接口设计

2.5.1 管道滑脱风险评估

方法 路径 说明
GET /nursing/pipe-risk/page 评估记录分页
POST /nursing/pipe-risk/add 新增管道评估
PUT /nursing/pipe-risk/update 修改评估
GET /nursing/pipe-risk/morse-guide Morse评分指南
GET /nursing/pipe-risk/statistics 科室管道风险统计

2.5.2 营养风险筛查NRS2002

方法 路径 说明
GET /nursing/nrs2002/page 筛查记录分页
POST /nursing/nrs2002/add 新增筛查
PUT /nursing/nrs2002/update 修改筛查
POST /nursing/nrs2002/refer 营养科会诊转介
GET /nursing/nrs2002/statistics 营养风险统计

2.5.3 疼痛评估

方法 路径 说明
GET /nursing/pain/page 疼痛评估分页
POST /nursing/pain/add 新增评估
PUT /nursing/pain/update 修改评估
POST /nursing/pain/intervene 疼痛干预
GET /nursing/pain/trend 疼痛趋势
GET /nursing/pain/statistics 疼痛统计

2.6 前端设计

页面 路径 说明
管道风险评估 nursing/pipeRiskAssessment.vue 管道登记+Morse评分+风险分级
NRS2002筛查 nursing/nrs2002Screening.vue BMI+疾病+年龄评分+转介
疼痛评估 nursing/painAssessment.vue NRS/VAS+人体图定位+干预
疼痛趋势 nursing/painTrend.vue 疼痛评分变化曲线

3. 护士站增强inhospitalnursestation

3.1 已有代码分析

后端结构

层级 文件 说明
Controller 6个 AdviceProcess/ATDManage/EncounterAutoRoll/MedicineSummary/NurseBilling/OrgDeviceStockTake
AppService 13个 完整的医嘱执行、记账、药品汇总
Mapper 6个 各子域持久化

已有功能: 医嘱执行处理、ATD管理、自动滚动、药品汇总、护士记账、设备盘点

前端结构

目录 文件数 说明
inpatientNurse/ 56 46个有script

3.2 缺失功能清单

# 功能 优先级 说明
1 护理文书(一般/危重记录单) P0 三甲评审必查
2 护理质量指标上报 P1 跌倒/压疮/管滑/给药错误
3 护理交接班重点患者提示 P1 危重/手术/新入/特殊患者

3.3 业务流程

3.3.1 护理文书

选择患者 → 选择文书类型(一般/危重/手术)
    ↓
填写评估(生命体征+意识+皮肤+管道+心理)
    ↓
护理措施记录 → 签名(CA)
    ↓
保存/提交 → 护士长审核

3.3.2 护理质量指标

每月统计 → 跌倒发生率/压疮发生率/管滑发生率/给药错误率
    ↓
科室填报 → 护理部审核 → 上报省卫健委

3.3.3 交接班重点提示

交班护士 → 查看重点患者列表(危重/手术/新入/特殊)
    ↓
生成交班报告 → 接班护士确认 → 完成交接

3.4 数据库设计

V49__nurse_station_enhancement.sql

CREATE TABLE nursing_document (
    id BIGSERIAL PRIMARY KEY,
    patient_id BIGINT NOT NULL,
    encounter_id BIGINT NOT NULL,
    document_type VARCHAR(50) NOT NULL,
    document_date DATE NOT NULL,
    shift VARCHAR(20),
    vital_signs TEXT,
    consciousness VARCHAR(50),
    skin_condition VARCHAR(100),
    pipes_status TEXT,
    psychological_state TEXT,
    nursing_measures TEXT,
    special_notes TEXT,
    sign_time TIMESTAMP,
    signer_id BIGINT,
    signer_name VARCHAR(100),
    reviewer_id BIGINT,
    reviewer_name VARCHAR(100),
    review_time TIMESTAMP,
    review_remark TEXT,
    status VARCHAR(20) DEFAULT 'DRAFT',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE nursing_quality_report (
    id BIGSERIAL PRIMARY KEY,
    report_month VARCHAR(7) NOT NULL,
    department_id BIGINT NOT NULL,
    department_name VARCHAR(100),
    indicator_type VARCHAR(50) NOT NULL,
    indicator_name VARCHAR(200),
    numerator INTEGER DEFAULT 0,
    denominator INTEGER DEFAULT 0,
    rate DECIMAL(8,4),
    target_rate DECIMAL(8,4),
    comparison_data TEXT,
    improvement_measures TEXT,
    reporter_id BIGINT,
    reporter_name VARCHAR(100),
    report_time TIMESTAMP,
    reviewer_id BIGINT,
    review_time TIMESTAMP,
    review_remark TEXT,
    status VARCHAR(20) DEFAULT 'DRAFT',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE nursing_shift_patient (
    id BIGSERIAL PRIMARY KEY,
    patient_id BIGINT NOT NULL,
    encounter_id BIGINT NOT NULL,
    department_id BIGINT NOT NULL,
    patient_name VARCHAR(100),
    bed_no VARCHAR(20),
    admission_date DATE,
    diagnosis TEXT,
    priority_level VARCHAR(20) NOT NULL,
    priority_reason TEXT,
    key_nursing_points TEXT,
    special_notes TEXT,
    shift_date DATE NOT NULL,
    shift_type VARCHAR(20) NOT NULL,
    handover_nurse_id BIGINT,
    handover_nurse_name VARCHAR(100),
    receiver_nurse_id BIGINT,
    receiver_nurse_name VARCHAR(100),
    handover_time TIMESTAMP,
    status VARCHAR(20) DEFAULT 'PENDING',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

3.5 API接口设计

3.5.1 护理文书

方法 路径 说明
GET /inhospital-nurse/document/page 文书分页列表
POST /inhospital-nurse/document/add 新增文书
PUT /inhospital-nurse/document/update 修改文书
POST /inhospital-nurse/document/submit/{id} 提交审核
POST /inhospital-nurse/document/review/{id} 护士长审核
GET /inhospital-nurse/document/template/{type} 获取文书模板

3.5.2 护理质量指标

方法 路径 说明
GET /inhospital-nurse/quality/page 质量报告分页
POST /inhospital-nurse/quality/add 新增报告
PUT /inhospital-nurse/quality/update 修改报告
POST /inhospital-nurse/quality/submit/{id} 提交审核
GET /inhospital-nurse/quality/trend 指标趋势
GET /inhospital-nurse/quality/compare 科室对比

3.5.3 交接班重点患者

方法 路径 说明
GET /inhospital-nurse/shift/priority-patients 重点患者列表
POST /inhospital-nurse/shift/generate-report 生成交班报告
POST /inhospital-nurse/shift/confirm 接班确认
GET /inhospital-nurse/shift/history 交接班历史

3.6 前端设计

页面 路径 说明
一般护理记录 inpatientNurse/nursingDocumentGeneral.vue 一般记录单表单+签名
危重护理记录 inpatientNurse/nursingDocumentCritical.vue 危重记录单+生命体征
质量指标上报 inpatientNurse/qualityIndicatorReport.vue 指标填报+趋势图
交接班管理 inpatientNurse/shiftManagement.vue 重点患者+交班报告

4. 检验LISlab + Inspection + labenhanced

4.1 已有代码分析

后端结构

层级 文件 说明
Controller (lab) 5个 InspectionPackage/InspectionType/LabActivityDefinition/LabEnhanced/LabHistory
Controller (Inspection) 10个 ClinicalManage/Icd10/Instrument/Laboratory/LabReferenceRange/LisConfig/ObservationDef/SampleCollect/SpecimenDef
AppService (lab) 2个 IInspectionPackageAppService/IInspectionTypeAppService
AppService (Inspection) 12个 完整的检验业务编排
Domain Entity 18个 InspectionLabApply/Observation/Specimen/LabInternalQc/LabExternalEqa/LabResultComparison/LabReferenceRange等

已有数据库表V19+V22+V30+V46

表名 来源 说明
lab_internal_qc V19 室内质控
lab_external_eqa V19 室间质评
lab_result_comparison V22 结果比对
lab_reference_range V30 参考范围
lab_activity_def_device_def V46 设备定义

前端结构

目录 文件数 说明
inspection/ 10 全部无script!
labenhanced/ 6 全部有script
labhistory/ 1 历史查询

4.2 缺失功能清单

# 功能 优先级 说明
1 室内质控Westgard规则 P0 1-2s/1-3s/2-2s/R-4s/4-1s/10x
2 室间质评 P1 卫临检中心/省临检中心
3 检验报告标准格式打印 P1 三甲要求标准格式

4.3 业务流程

4.3.1 室内质控Westgard规则

每日质控 → 质控品检测 → 数据录入(L-J质控图)
    ↓
Westgard规则判断 → 失控(1-2s警告/1-3s失控/2-2s失控...)
    ↓
失控处理 → 原因分析 → 纠正措施 → 重新检测
    ↓
质控在控 → 发放报告

4.3.2 室间质评

接收质评样本 → 检测 → 结果录入
    ↓
与靶值比对 → 计算偏倚 → 判定合格/不合格
    ↓
不合格分析 → 整改措施 → 效果验证

4.3.3 检验报告打印

报告审核 → 选择打印格式 → 预览
    ↓
打印(含参考范围/印章/签名)
    ↓
打印记录归档

4.4 数据库设计

V50__lab_quality_control.sql

CREATE TABLE lab_qc_material (
    id BIGSERIAL PRIMARY KEY,
    material_code VARCHAR(50) NOT NULL,
    material_name VARCHAR(200) NOT NULL,
    manufacturer VARCHAR(200),
    lot_no VARCHAR(100),
    expiration_date DATE,
    target_values TEXT,
    standard_deviation DECIMAL(10,4),
    cv_coefficient DECIMAL(8,4),
    level VARCHAR(20),
    is_enabled VARCHAR(1) DEFAULT '1',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE lab_qc_result (
    id BIGSERIAL PRIMARY KEY,
    material_id BIGINT NOT NULL,
    instrument_id BIGINT,
    test_date DATE NOT NULL,
    test_item VARCHAR(100) NOT NULL,
    result_value DECIMAL(12,4),
    target_value DECIMAL(12,4),
    sd_value DECIMAL(10,4),
    cv_value DECIMAL(8,4),
    westgard_result VARCHAR(20),
    westgard_rules TEXT,
    is失控 VARCHAR(1) DEFAULT '0',
    operator_id BIGINT,
    operator_name VARCHAR(100),
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE lab_ea_participation (
    id BIGSERIAL PRIMARY KEY,
    year INTEGER NOT NULL,
    quarter VARCHAR(10),
    organizer VARCHAR(200),
    organizer_type VARCHAR(50),
    test_item VARCHAR(100) NOT NULL,
    sample_no VARCHAR(50),
    target_value DECIMAL(12,4),
    allowed_deviation DECIMAL(10,4),
    submitted_value DECIMAL(12,4),
    bias_value DECIMAL(10,4),
    bias_rate DECIMAL(8,4),
    result_grade VARCHAR(20),
    is_pass VARCHAR(1) DEFAULT '1',
    analysis TEXT,
    corrective_action TEXT,
    status VARCHAR(20) DEFAULT 'PENDING',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE lab_report_print_log (
    id BIGSERIAL PRIMARY KEY,
    report_id BIGINT NOT NULL,
    patient_id BIGINT NOT NULL,
    encounter_id BIGINT,
    print_format VARCHAR(50) NOT NULL,
    print_count INTEGER DEFAULT 1,
    printer_id BIGINT,
    printer_name VARCHAR(100),
    print_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

4.5 API接口设计

4.5.1 室内质控

方法 路径 说明
GET /lab/qc/material/page 质控品分页
POST /lab/qc/material/add 新增质控品
GET /lab/qc/result/page 质控结果分页
POST /lab/qc/result/add 录入质控结果
GET /lab/qc/lj-chart L-J质控图数据
GET /lab/qc/westgard-check Westgard规则检查
GET /lab/qc/statistics 质控统计

4.5.2 室间质评

方法 路径 说明
GET /lab/ea/page 质评记录分页
POST /lab/ea/add 新增质评记录
PUT /lab/ea/update 修改质评记录
GET /lab/ea/compare 靶值比对
GET /lab/ea/statistics 质评统计

4.5.3 报告打印

方法 路径 说明
GET /lab/report/preview/{id} 报告预览
GET /lab/report/print/{id} 报告打印
GET /lab/report/print-log 打印记录

4.6 前端设计

页面 路径 说明
质控品管理 labenhanced/qcMaterialManage.vue 质控品CRUD
L-J质控图 labenhanced/ljQcChart.vue L-J质控图+Westgard判断
质控结果录入 labenhanced/qcResultEntry.vue 质控数据录入+自动判断
室间质评 labenhanced/eaParticipation.vue 质评记录+靶值比对
报告打印 labenhanced/reportPrint.vue 报告预览+打印+记录

5. 检查PACScheck + radiologyenhanced + radiologycomparison

5.1 已有代码分析

后端结构

层级 文件 说明
Controller 10个 CheckMethod/CheckPart/CheckType/ExamApply/ExamAppointment/LisGroupInfo/RadiologyComparison/RadiologyEnhanced/RadiologyImage/SpecimenBarcode
AppService 8个 完整的检查申请、报告审核
Domain Entity 17个 ExamApply/RadiologyImage/RadiologyImageReport/RadiologyImageComparison/DicomPrintRecord/RadiologyStatistics/RadiologyUrgentReport等

已有数据库表V19+V22+V30

表名 来源 说明
radiology_image V30 影像图片
radiology_image_report V30 影像报告
radiology_statistics V19 放射统计
radiology_urgent_report V19 急诊报告
radiology_image_comparison V22 影像对比
dicom_print_record V30 DICOM打印

前端结构

目录 文件数 说明
inspection/ 10 全部无script
radiologyenhanced/ 1 增强功能
radiologycomparison/ 1 影像对比

5.2 缺失功能清单

# 功能 优先级 说明
1 DICOM图像采集存储 P0 WADO/DICOMweb协议
2 结构化图文报告 P0 模板+结构化数据+签名
3 影像对比查看 P1 同部位不同时期对比
4 DICOM打印 P1 胶片/纸张打印

5.3 业务流程

5.3.1 DICOM图像采集存储

设备采集DICOM → 传输到PACS → 图像存储(FTP/对象存储)
    ↓
图像索引 → 关联检查申请 → 可浏览/下载

5.3.2 结构化图文报告

选择模板 → 填写结构化字段 → 插入标注图像
    ↓
生成报告 → 三级审核(初审/复审/终审)
    ↓
签章(CA) → 发布 → 临床可查

5.3.3 影像对比

选择患者 → 选择对比检查(同部位不同时期)
    ↓
左右分屏对比 → 标注/测量 → 保存对比记录

5.4 数据库设计

V51__pacs_enhancement.sql

CREATE TABLE pacs_image_storage (
    id BIGSERIAL PRIMARY KEY,
    study_uid VARCHAR(200) NOT NULL,
    series_uid VARCHAR(200),
    instance_uid VARCHAR(200),
    patient_id BIGINT NOT NULL,
    encounter_id BIGINT,
    exam_apply_id BIGINT,
    image_path VARCHAR(500),
    storage_type VARCHAR(20) DEFAULT 'LOCAL',
    file_size BIGINT,
    modality VARCHAR(20),
    body_part VARCHAR(100),
    study_date TIMESTAMP,
    wado_uri VARCHAR(500),
    status VARCHAR(20) DEFAULT 'STORED',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE pacs_structured_report (
    id BIGSERIAL PRIMARY KEY,
    patient_id BIGINT NOT NULL,
    encounter_id BIGINT,
    exam_apply_id BIGINT NOT NULL,
    report_template_id BIGINT,
    report_type VARCHAR(50) NOT NULL,
    structured_data JSONB,
    findings TEXT,
    impression TEXT,
    recommendation TEXT,
    report_images TEXT,
    report_status VARCHAR(20) DEFAULT 'DRAFT',
    first_reviewer_id BIGINT,
    first_review_time TIMESTAMP,
    second_reviewer_id BIGINT,
    second_review_time TIMESTAMP,
    final_reviewer_id BIGINT,
    final_review_time TIMESTAMP,
    sign_time TIMESTAMP,
    signer_id BIGINT,
    signer_name VARCHAR(100),
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE pacs_report_template (
    id BIGSERIAL PRIMARY KEY,
    template_name VARCHAR(200) NOT NULL,
    report_type VARCHAR(50) NOT NULL,
    body_part VARCHAR(100),
    structured_fields JSONB,
    template_content TEXT,
    is_default VARCHAR(1) DEFAULT '0',
    is_enabled VARCHAR(1) DEFAULT '1',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE pacs_comparison_record (
    id BIGSERIAL PRIMARY KEY,
    patient_id BIGINT NOT NULL,
    current_exam_id BIGINT NOT NULL,
    comparison_exam_id BIGINT NOT NULL,
    comparison_type VARCHAR(20) DEFAULT 'SIDE_BY_SIDE',
    annotations TEXT,
    measurements TEXT,
    conclusion TEXT,
    operator_id BIGINT,
    operator_name VARCHAR(100),
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

5.5 API接口设计

5.5.1 DICOM图像

方法 路径 说明
GET /check/pacs/image/page 图像分页列表
POST /check/pacs/image/store 存储图像
GET /check/pacs/image/wado/{studyUid} WADO查询
GET /check/pacs/image/series/{studyUid} 序列查询

5.5.2 结构化报告

方法 路径 说明
GET /check/pacs/report/template/page 模板分页
POST /check/pacs/report/template/add 新增模板
GET /check/pacs/report/page 报告分页
POST /check/pacs/report/add 新增报告
PUT /check/pacs/report/update 修改报告
POST /check/pacs/report/review/{id} 审核报告
POST /check/pacs/report/sign/{id} 签章
GET /check/pacs/report/preview/{id} 报告预览

5.5.3 影像对比

方法 路径 说明
POST /check/pacs/comparison/add 新增对比记录
GET /check/pacs/comparison/history/{patientId} 对比历史
GET /check/pacs/comparison/images 对比图像

5.6 前端设计

页面 路径 说明
DICOM浏览 radiologyenhanced/dicomViewer.vue 图像浏览+序列选择+工具栏
结构化报告 radiologyenhanced/structuredReport.vue 模板选择+结构化填写+签章
报告模板管理 radiologyenhanced/reportTemplate.vue 模板CRUD+字段配置
影像对比 radiologycomparison/comparisonView.vue 左右分屏+标注+测量

6. ESB集成平台esbmanage

6.1 已有代码分析

后端结构

层级 文件 说明
Controller 4个 EsbMessage/EsbReliability/EsbServiceRegistry/FhirCda
Domain Entity 7个 EsbMessage/EsbServiceRegistry/EsbDeadLetter/EsbMonitorStats/FhirResource/CdaDocument/CodeMapping

已有数据库表V13+V18+V29+V39

表名 来源 说明
sys_esb_message V13 ESB消息
sys_esb_service_registry V13 服务注册
esb_cda_document V18 CDA文档
esb_code_mapping V18 编码映射
esb_fhir_resource V18 FHIR资源
esb_dead_letter V29 死信队列
esb_monitor_stats V29 监控统计

前端结构

目录 文件数 说明
esbmanage/ 4 全部有script
fhircda/ 1 FHIR/CDA

6.2 缺失功能清单

# 功能 优先级 说明
1 HL7 FHIR R4消息转换 P0 互联互通测评核心
2 CDA临床文档生成 P0 C-CDA/PIX/PDQ
3 编码映射逻辑 P0 ICD-10/CPT/LOINC映射
4 集成监控仪表盘 P1 消息流量/成功率/延迟
5 消息可靠性 P1 重试/去重/顺序保证
6 接口版本管理 P1 版本控制/兼容性

6.3 业务流程

6.3.1 FHIR R4消息转换

HIS内部数据 → FHIR资源映射(Patient/Encounter/Observation)
    ↓
FHIR JSON/XML → 校验 → 发送到外部系统
    ↓
响应处理 → 状态更新 → 日志归档

6.3.2 CDA临床文档

临床数据采集 → CDA模板填充 → 生成C-CDA文档
    ↓
数字签名 → XML封装 → 发送/存储
    ↓
接收方验证 → 解析 → 导入

6.3.3 编码映射

内部编码 → 映射表查询 → 目标编码
    ↓
映射失败 → 人工映射 → 更新映射表
    ↓
统计映射成功率 → 优化映射规则

6.4 数据库设计

V52__esb_enhancement.sql

CREATE TABLE esb_fhir_mapping (
    id BIGSERIAL PRIMARY KEY,
    resource_type VARCHAR(50) NOT NULL,
    his_entity VARCHAR(100) NOT NULL,
    his_field VARCHAR(100) NOT NULL,
    fhir_path VARCHAR(200) NOT NULL,
    fhir_datatype VARCHAR(50),
    transform_rule TEXT,
    is_required VARCHAR(1) DEFAULT '0',
    is_enabled VARCHAR(1) DEFAULT '1',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE esb_cda_template (
    id BIGSERIAL PRIMARY KEY,
    template_code VARCHAR(50) NOT NULL,
    template_name VARCHAR(200) NOT NULL,
    template_type VARCHAR(50) NOT NULL,
    cda_version VARCHAR(20) DEFAULT 'C-CDA',
    template_content TEXT,
    field_mappings JSONB,
    is_default VARCHAR(1) DEFAULT '0',
    is_enabled VARCHAR(1) DEFAULT '1',
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE esb_integration_log (
    id BIGSERIAL PRIMARY KEY,
    message_id BIGINT,
    service_code VARCHAR(100),
    direction VARCHAR(10) NOT NULL,
    source_system VARCHAR(100),
    target_system VARCHAR(100),
    request_payload TEXT,
    response_payload TEXT,
    http_status INTEGER,
    response_time_ms INTEGER,
    status VARCHAR(20) NOT NULL,
    error_message TEXT,
    retry_count INTEGER DEFAULT 0,
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

CREATE TABLE esb_version_config (
    id BIGSERIAL PRIMARY KEY,
    service_code VARCHAR(100) NOT NULL,
    version VARCHAR(20) NOT NULL,
    protocol VARCHAR(50),
    endpoint_url VARCHAR(500),
    is_current VARCHAR(1) DEFAULT '0',
    is_enabled VARCHAR(1) DEFAULT '1',
    deprecation_date DATE,
    compatibility_notes TEXT,
    create_by VARCHAR(64),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_by VARCHAR(64),
    update_time TIMESTAMP,
    del_flag VARCHAR(1) DEFAULT '0'
);

6.5 API接口设计

6.5.1 FHIR映射

方法 路径 说明
GET /esb/fhir/mapping/page 映射规则分页
POST /esb/fhir/mapping/add 新增映射
PUT /esb/fhir/mapping/update 修改映射
POST /esb/fhir/convert 数据转换
GET /esb/fhir/resource/{type}/{id} FHIR资源查询
POST /esb/fhir/resource/{type} 创建FHIR资源

6.5.2 CDA文档

方法 路径 说明
GET /esb/cda/template/page 模板分页
POST /esb/cda/template/add 新增模板
POST /esb/cda/generate 生成CDA文档
GET /esb/cda/document/{id} 获取CDA文档
POST /esb/cda/sign/{id} 签章
POST /esb/cda/validate 文档验证

6.5.3 编码映射

方法 路径 说明
GET /esb/code-mapping/page 映射表分页
POST /esb/code-mapping/add 新增映射
PUT /esb/code-mapping/update 修改映射
POST /esb/code-mapping/translate 编码翻译
GET /esb/code-mapping/statistics 映射统计

6.5.4 监控与版本

方法 路径 说明
GET /esb/monitor/dashboard 监控仪表盘
GET /esb/monitor/flow 消息流量
GET /esb/monitor/error-rate 错误率统计
GET /esb/version/page 版本配置分页
POST /esb/version/add 新增版本
PUT /esb/version/update 修改版本
POST /esb/version/switch/{id} 切换版本

6.6 前端设计

页面 路径 说明
FHIR映射管理 esbmanage/fhirMapping.vue 映射规则CRUD+测试转换
CDA文档管理 esbmanage/cdaDocument.vue 模板管理+文档生成+签章
编码映射 esbmanage/codeMapping.vue 映射表+翻译测试
集成监控 esbmanage/integrationDashboard.vue 流量/成功率/延迟大屏
版本管理 esbmanage/versionManage.vue 版本配置+切换

附录A: Flyway迁移脚本汇总

版本 文件名 路径 内容
V47 V47__infection_rule_engine.sql healthlink-his-application/src/main/resources/db/migration/ 院感筛查规则/筛查记录/ICU日志/SSI追踪/手卫生依从
V48 V48__nursing_assessment_tools.sql 同上 管道风险/NRS2002/疼痛评估/疼痛干预
V49 V49__nurse_station_enhancement.sql 同上 护理文书/质量报告/交接班重点患者
V50 V50__lab_quality_control.sql 同上 质控品/质控结果/室间质评/打印日志
V51 V51__pacs_enhancement.sql 同上 DICOM存储/结构化报告/报告模板/影像对比
V52 V52__esb_enhancement.sql 同上 FHIR映射/CDA模板/集成日志/版本配置

附录B: API接口清单

模块 新增接口数 路径前缀
院感管理 16 /infection/
护理评估 14 /nursing/
护士站增强 13 /inhospital-nurse/
检验LIS 15 /lab/
检查PACS 15 /check/pacs/
ESB集成 20 /esb/
合计 93

文档版本: v1.0 最后更新: 2026-06-17 下次评审: Phase 2 Sprint 1 开始前