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 院感病例自动筛查
1.3.2 暴发预警
1.3.3 目标性监测
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 管道滑脱风险评估
2.3.2 营养风险筛查NRS2002
2.3.3 疼痛评估NRS/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 护理文书
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. 检验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规则
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. 检查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图像采集存储
5.3.2 结构化图文报告
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消息转换
6.3.2 CDA临床文档
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 开始前