# 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-院感管理infection) - [2. 护理评估(nursing)](#2-护理评估nursing) - [3. 护士站增强(inhospitalnursestation)](#3-护士站增强inhospitalnursestation) - [4. 检验LIS(lab + Inspection + labenhanced)](#4-检验lislab--inspection--labenhanced) - [5. 检查PACS(check + radiologyenhanced + radiologycomparison)](#5-检查pacscheck--radiologyenhanced--radiologycomparison) - [6. ESB集成平台(esbmanage)](#6-esb集成平台esbmanage) - [附录A: Flyway迁移脚本汇总](#附录a-flyway迁移脚本汇总) - [附录B: API接口清单](#附录b-api接口清单) --- ## 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 ```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 ```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 ```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. 检验LIS(lab + 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 ```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. 检查PACS(check + 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 ```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 ```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 开始前