- 删除手术状态下拉框的重复字典数据,保留每组中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字段以完善审计信息 - 更新院感管理和评审保障模块的设计文档,明确各模块实现状态和缺失功能
43 KiB
43 KiB
Phase 4 广西地方特色模块详细设计
| 属性 | 值 |
|---|---|
| 文档类型 | 详细设计 |
| 版本 | v1.0 |
| 日期 | 2026-06-17 |
| 模块 | TCM / Epidemic / EHCard / Invoice / DRG深化 |
一、中医壮医模块(tcm)
1.1 已有代码分析
后端(3个文件)
TcmController.java— 23行,5个端点:方剂CRUD + 体质辨识 + 统计ITcmAppService.java— 11行,5个方法TcmAppServiceImpl.java— 业务逻辑实现
域实体(2个)
TcmPrescription— tcm_prescription表,字段:prescriptionName/type/herbs/dosage/usage/indication/source/enabledTcmConstitutionAssessment— tcm_constitution_assessment表,字段:encounterId/patientId/constitutionType/score/recommendation/assessorId/assessmentTime
前端(2个页面)
tcm/traditional/index.vue— 方剂列表+详情+新增弹窗,有完整scripttcm/constitution/index.vue— 体质辨识页,无script(仅有模板)
Flyway V39 — 已创建 tcm_prescription + tcm_constitution_assessment
1.2 缺失功能清单
| 编号 | 功能 | 优先级 |
|---|---|---|
| TCM-01 | 壮医三诊(望诊/脉诊/目诊)录入与存储 | P0 |
| TCM-02 | 九种体质辨识问卷(平和/气虚/阳虚/阴虚/痰湿/湿热/血瘀/气郁/特禀) | P0 |
| TCM-03 | 壮医诊疗记录(关联encounterId) | P0 |
| TCM-04 | 民族药编码表(壮药/瑶药/苗药) | P1 |
| TCM-05 | 常用方剂模板(可引用到处方) | P1 |
| TCM-06 | 中医处方完整流程(开方→审核→取药→执行) | P1 |
| TCM-07 | 体质辨识统计报表 | P2 |
1.3 业务流程
壮医三诊流程
医生选择患者 → 进入壮医诊疗页面
├→ 望诊:面色/舌象/形态选择 → 保存
├→ 脉诊:脉象类型选择(浮/沉/迟/数等) → 保存
├→ 目诊:眼部特征选择 → 保存
└→ 综合诊断 → 开具壮医处方 → 关联到医嘱
九种体质辨识流程
选择患者 → 启动体质辨识
├→ 展示9套问卷(每套8-10题,5级评分)
├→ 医生逐题评分或患者自评
├→ 计算各体质得分
├→ 判定体质类型(主要/次要)
└→ 生成调养建议 → 保存到tcm_constitution_assessment
1.4 数据库设计
-- V47__tcm_zhuang_diagnosis.sql
-- 壮医三诊记录
CREATE TABLE IF NOT EXISTS tcm_zhuang_diagnosis (
id BIGSERIAL PRIMARY KEY,
encounter_id BIGINT NOT NULL,
patient_id BIGINT NOT NULL,
patient_name VARCHAR(50),
diagnosis_date DATE NOT NULL,
visit_type VARCHAR(20) NOT NULL,
face_color VARCHAR(50),
face_shape VARCHAR(50),
tongue_color VARCHAR(50),
tongue_coating VARCHAR(50),
tongue_shape VARCHAR(50),
pulse_type VARCHAR(50),
pulse_detail TEXT,
eye_color VARCHAR(50),
eye_vessel VARCHAR(50),
eye_spot VARCHAR(50),
body_shape VARCHAR(50),
skin_condition VARCHAR(50),
diagnosis_result TEXT,
zhuang_diagnosis VARCHAR(200),
doctor_id BIGINT,
doctor_name VARCHAR(64),
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_by VARCHAR(64),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(64),
update_time TIMESTAMP
);
COMMENT ON TABLE tcm_zhuang_diagnosis IS '壮医三诊记录';
COMMENT ON COLUMN tcm_zhuang_diagnosis.visit_type IS '诊法(WANG望/MAI脉/MU目)';
CREATE INDEX IF NOT EXISTS idx_tzd_encounter ON tcm_zhuang_diagnosis(encounter_id);
-- 体质辨识问卷模板
CREATE TABLE IF NOT EXISTS tcm_constitution_questionnaire (
id BIGSERIAL PRIMARY KEY,
constitution_type VARCHAR(20) NOT NULL,
question_no INT NOT NULL,
question_text TEXT NOT NULL,
option_a VARCHAR(200),
option_b VARCHAR(200),
option_c VARCHAR(200),
option_d VARCHAR(200),
option_e VARCHAR(200),
score_a INT DEFAULT 1,
score_b INT DEFAULT 2,
score_c INT DEFAULT 3,
score_d INT DEFAULT 4,
score_e INT DEFAULT 5,
enabled CHAR(1) DEFAULT '1',
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE tcm_constitution_questionnaire IS '体质辨识问卷模板';
CREATE INDEX IF NOT EXISTS idx_tccq_type ON tcm_constitution_questionnaire(constitution_type);
-- 体质辨识答题记录
CREATE TABLE IF NOT EXISTS tcm_constitution_answer (
id BIGSERIAL PRIMARY KEY,
assessment_id BIGINT NOT NULL,
question_id BIGINT NOT NULL,
answer_option CHAR(1),
score INT,
tenant_id INTEGER DEFAULT 0,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE tcm_constitution_answer IS '体质辨识答题记录';
CREATE INDEX IF NOT EXISTS idx_tca_assessment ON tcm_constitution_answer(assessment_id);
-- 民族药编码表
CREATE TABLE IF NOT EXISTS tcm_ethnic_drug (
id BIGSERIAL PRIMARY KEY,
drug_code VARCHAR(50) NOT NULL,
drug_name VARCHAR(200) NOT NULL,
drug_type VARCHAR(20) NOT NULL,
pinyin_code VARCHAR(50),
wubi_code VARCHAR(50),
category VARCHAR(50),
nature VARCHAR(50),
flavor VARCHAR(50),
channel_tropism VARCHAR(100),
indication TEXT,
dosage VARCHAR(100),
contraindication TEXT,
source VARCHAR(200),
enabled CHAR(1) DEFAULT '1',
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP
);
COMMENT ON TABLE tcm_ethnic_drug IS '民族药编码表';
COMMENT ON COLUMN tcm_ethnic_drug.drug_type IS '类型(ZHUANG壮药/YAO瑶药/MIAO苗药)';
CREATE INDEX IF NOT EXISTS ted_code ON tcm_ethnic_drug(drug_code);
CREATE INDEX IF NOT EXISTS ted_type ON tcm_ethnic_drug(drug_type);
-- 中医处方明细(扩展tcm_prescription)
CREATE TABLE IF NOT EXISTS tcm_prescription_item (
id BIGSERIAL PRIMARY KEY,
prescription_id BIGINT NOT NULL,
drug_code VARCHAR(50),
drug_name VARCHAR(200) NOT NULL,
drug_type VARCHAR(20) DEFAULT 'TCM',
dosage VARCHAR(100),
unit VARCHAR(20),
frequency VARCHAR(50),
usage_method VARCHAR(100),
decoction_method VARCHAR(100),
sort_order INT DEFAULT 0,
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE tcm_prescription_item IS '中医处方明细';
COMMENT ON COLUMN tcm_prescription_item.drug_type IS '类型(TCM中药/ZHUANG壮药/YAO瑶药)';
CREATE INDEX IF NOT EXISTS tpi_prescription ON tcm_prescription_item(prescription_id);
1.5 API接口设计
路径前缀: /healthlink-his/api/v1/tcm
| 方法 | 路径 | 说明 | 请求体 |
|---|---|---|---|
| POST | /zhuang/diagnosis |
保存壮医三诊 | TcmZhuangDiagnosisDto |
| GET | /zhuang/diagnosis/encounter/{id} |
查询诊疗记录 | — |
| GET | /zhuang/diagnosis/list |
诊疗记录列表 | params: startDate, endDate, patientId |
| GET | /constitution/questionnaire/{type} |
获取体质问卷 | — |
| POST | /constitution/assess |
提交体质辨识(含答题) | ConstitutionAssessDto |
| GET | /constitution/record/{id} |
查询辨识记录详情 | — |
| GET | /ethnic-drug/list |
民族药列表 | params: drugType, keyword |
| POST | /ethnic-drug |
新增民族药 | TcmEthnicDrugDto |
| GET | /prescription/template/list |
方剂模板列表 | params: type |
| POST | /prescription/item |
保存处方明细 | TcmPrescriptionItemDto |
| GET | /statistics/daily |
每日诊疗统计 | params: startDate, endDate |
1.6 前端设计
| 页面 | 路径 | 组件 |
|---|---|---|
| 壮医三诊 | tcm/zhuangDiagnosis/index.vue |
左侧患者列表 + 右侧三诊tab(望/脉/目) |
| 体质辨识 | tcm/constitution/index.vue |
升级现有页面,添加问卷交互 |
| 民族药管理 | tcm/ethnicDrug/index.vue |
表格 + 新增/编辑弹窗 |
| 处方模板 | tcm/prescriptionTemplate/index.vue |
模板列表 + 引用到处方 |
| 中医处方 | tcm/prescription/index.vue |
处方开具页,可选模板 |
壮医三诊页面布局:
┌──────────────────────────────────────────────────┐
│ 患者信息栏:姓名 | 性别 | 年龄 | 就诊号 │
├──────────────┬───────────────────────────────────┤
│ 患者列表 │ Tab: [望诊] [脉诊] [目诊] [综合] │
│ ────────── │ ┌─────────────────────────────┐ │
│ 患者A ✓ │ │ 面色:[萎黄] [苍白] [红润] │ │
│ 患者B │ │ 舌色:[淡白] [淡红] [红] │ │
│ 患者C │ │ 舌苔:[薄白] [黄腻] [无苔] │ │
│ │ │ 脉象:[浮] [沉] [迟] [数] │ │
│ │ │ 目色:[正常] [发黄] [充血] │ │
│ │ └─────────────────────────────┘ │
│ │ 诊断结果:[________________] │
│ │ [保存] [开具处方] │
└──────────────┴───────────────────────────────────┘
二、传染病直报模块(epidemic)
2.1 已有代码分析
后端(3个文件)
EpidemicController.java— 20行,4个端点:上报/确认/列表/统计IEpidemicAppService.java— 10行,4个方法EpidemicAppServiceImpl.java— 实现
域实体(1个)
EpidemicReport— epidemic_report表,字段:encounterId/patientId/patientName/diseaseName/diseaseCode/reportType/reporterId/reporterName/reportDate/status/cdcConfirmNo
前端(1个页面 + 1个API)
diseaseReportManagement/ReportManagement/index.vue— 2028行,有完整script,包含统计卡片+报卡列表diseaseReportManagement/ReportManagement/api.js— API定义
2.2 缺失功能清单
| 编号 | 功能 | 优先级 |
|---|---|---|
| EPI-01 | 传染病自动筛查规则引擎 | P0 |
| EPI-02 | 广西疾控直报对接(国家传染病网络直报系统) | P0 |
| EPI-03 | 报告管理流程(填报→审核→上报→确认) | P0 |
| EPI-04 | 传染病病种目录(广西重点) | P1 |
| EPI-05 | 统计分析(时间/病种/区域分布) | P1 |
| EPI-06 | 密接追踪管理 | P2 |
2.3 业务流程
传染病报告全流程
门诊/住院/检验 发现疑似病例
├→ 自动筛查:诊断/检验结果匹配传染病规则
├→ 触发报卡:弹窗提醒医生填写报告
├→ 医生填报:患者信息+诊断+发病日期+报告类型
├→ 科室审核:科室主任审核确认
├→ 预防保健科审核:院内终审
├→ 上报疾控:对接广西疾控直报系统
├→ 疾控确认:返回确认编号
└→ 归档:更新epidemic_report状态
状态流转
DRAFT(草稿) → PENDING_REVIEW(待审核) → DEPT_APPROVED(科室通过)
→ ADMIN_APPROVED(防保科通过) → SUBMITTED(已上报) → CDC_CONFIRMED(疾控确认)
2.4 数据库设计
-- V47__epidemic_enhancement.sql
-- 传染病筛查规则
CREATE TABLE IF NOT EXISTS epidemic_screening_rule (
id BIGSERIAL PRIMARY KEY,
rule_name VARCHAR(200) NOT NULL,
rule_type VARCHAR(30) NOT NULL,
disease_code VARCHAR(20) NOT NULL,
disease_name VARCHAR(200) NOT NULL,
rule_condition TEXT NOT NULL,
rule_source VARCHAR(50),
priority INT DEFAULT 0,
enabled CHAR(1) DEFAULT '1',
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_by VARCHAR(64),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP
);
COMMENT ON TABLE epidemic_screening_rule IS '传染病筛查规则';
COMMENT ON COLUMN epidemic_screening_rule.rule_type IS '类型(DIAGNOSIS诊断/LAB检验/SYMPTOM症状)';
CREATE INDEX IF NOT EXISTS esr_disease ON epidemic_screening_rule(disease_code);
-- 筛查命中记录
CREATE TABLE IF NOT EXISTS epidemic_screening_hit (
id BIGSERIAL PRIMARY KEY,
rule_id BIGINT NOT NULL,
encounter_id BIGINT NOT NULL,
patient_id BIGINT NOT NULL,
patient_name VARCHAR(50),
hit_source VARCHAR(50),
hit_detail TEXT,
hit_time TIMESTAMP NOT NULL,
report_id BIGINT,
handle_status VARCHAR(20) DEFAULT 'PENDING',
handler VARCHAR(64),
handle_time TIMESTAMP,
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE epidemic_screening_hit IS '筛查命中记录';
CREATE INDEX IF NOT EXISTS esh_encounter ON epidemic_screening_hit(encounter_id);
-- 广西疾控直报记录
CREATE TABLE IF NOT EXISTS epidemic_cdc_submission (
id BIGSERIAL PRIMARY KEY,
report_id BIGINT NOT NULL,
cdc_system VARCHAR(50) DEFAULT 'GX_CDC',
submission_type VARCHAR(30) NOT NULL,
submission_time TIMESTAMP,
submission_data TEXT,
response_code VARCHAR(20),
response_message TEXT,
cdc_confirm_no VARCHAR(100),
confirm_time TIMESTAMP,
status VARCHAR(20) DEFAULT 'PENDING',
retry_count INT DEFAULT 0,
last_retry_time TIMESTAMP,
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_by VARCHAR(64),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE epidemic_cdc_submission IS '广西疾控直报记录';
CREATE INDEX IF NOT EXISTS ecs_report ON epidemic_cdc_submission(report_id);
-- 传染病病种目录(广西重点)
CREATE TABLE IF NOT EXISTS epidemic_disease_catalog (
id BIGSERIAL PRIMARY KEY,
disease_code VARCHAR(20) NOT NULL,
disease_name VARCHAR(200) NOT NULL,
disease_class VARCHAR(20) NOT NULL,
report_type VARCHAR(20) NOT NULL,
report_deadline_hours INT,
isolation_required CHAR(1) DEFAULT '0',
enabled CHAR(1) DEFAULT '1',
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE epidemic_disease_catalog IS '传染病病种目录';
COMMENT ON COLUMN epidemic_disease_catalog.disease_class IS '分类(A甲类/B乙类/C丙类)';
COMMENT ON COLUMN epidemic_disease_catalog.report_type IS '报告类型(TIMELY即时/AGGREGATE聚合)';
CREATE UNIQUE INDEX IF NOT EXISTS edc_code ON epidemic_disease_catalog(disease_code);
-- 扩展epidemic_report字段
ALTER TABLE epidemic_report ADD COLUMN IF NOT EXISTS onset_date DATE;
ALTER TABLE epidemic_report ADD COLUMN IF NOT EXISTS case_type VARCHAR(20);
ALTER TABLE epidemic_report ADD COLUMN IF NOT EXISTS isolation_location VARCHAR(100);
ALTER TABLE epidemic_report ADD COLUMN IF NOT EXISTS contact_count INT DEFAULT 0;
ALTER TABLE epidemic_report ADD COLUMN IF NOT EXISTS dept_approver VARCHAR(64);
ALTER TABLE epidemic_report ADD COLUMN IF NOT EXISTS dept_approve_time TIMESTAMP;
ALTER TABLE epidemic_report ADD COLUMN IF NOT EXISTS admin_approver VARCHAR(64);
ALTER TABLE epidemic_report ADD COLUMN IF NOT EXISTS admin_approve_time TIMESTAMP;
ALTER TABLE epidemic_report ADD COLUMN IF NOT EXISTS submit_time TIMESTAMP;
ALTER TABLE epidemic_report ADD COLUMN IF NOT EXISTS source_type VARCHAR(30);
2.5 API接口设计
路径前缀: /healthlink-his/api/v1/epidemic
| 方法 | 路径 | 说明 | 请求体 |
|---|---|---|---|
| POST | /report |
新增/修改报告 | EpidemicReportDto |
| PUT | /report/{id}/status |
更新报告状态 | params: status, remark |
| GET | /report/{id} |
报告详情 | — |
| GET | /report/list |
报告列表 | params: status, diseaseCode, startDate, endDate |
| POST | /report/{id}/submit |
提交上报 | — |
| POST | /report/{id}/approve |
审核 | params: approveType, result, remark |
| GET | /screening/rules |
筛查规则列表 | — |
| POST | /screening/rule |
新增/修改规则 | ScreeningRuleDto |
| POST | /screening/trigger |
手动触发筛查 | params: encounterId |
| GET | /screening/hits |
筛查命中记录 | params: startDate, endDate |
| GET | /cdc/submission/{reportId} |
直报记录 | — |
| POST | /cdc/resubmit/{id} |
重新上报 | — |
| GET | /disease/catalog |
病种目录 | params: diseaseClass |
| GET | /statistics/summary |
统计汇总 | params: startDate, endDate |
| GET | /statistics/trend |
趋势分析 | params: months |
2.6 前端设计
| 页面 | 路径 | 组件 |
|---|---|---|
| 报告管理(升级) | diseaseReportManagement/ReportManagement/index.vue |
升级现有页面 |
| 报告详情 | diseaseReportManagement/ReportDetail/index.vue |
详情+审核流 |
| 筛查规则 | diseaseReportManagement/ScreeningRule/index.vue |
规则配置 |
| 统计分析 | diseaseReportManagement/Statistics/index.vue |
图表+数据表 |
| 病种目录 | diseaseReportManagement/DiseaseCatalog/index.vue |
目录管理 |
三、电子健康卡模块(ehcard)— 新建
3.1 已有代码分析
完全缺失,无后端模块、无前端页面、无数据库表。
3.2 缺失功能清单
| 编号 | 功能 | 优先级 |
|---|---|---|
| EH-01 | 健康卡申领(对接广西健康云平台) | P0 |
| EH-02 | 就诊使用(挂号/就诊/取药验证) | P0 |
| EH-03 | 卡管理(挂失/补办/注销) | P0 |
| EH-04 | 健康卡绑定患者信息 | P0 |
| EH-05 | 健康卡二维码展示 | P1 |
| EH-06 | 健康卡消费记录 | P2 |
3.3 业务流程
健康卡申领流程
患者通过自助机/手机/窗口
├→ 输入身份证号 + 手机号
├→ 调用广西健康云平台验证身份
├→ 获取/创建健康卡号
├→ 绑定患者基本信息
├→ 生成电子健康卡(二维码)
└→ 激活使用
就诊使用流程
患者出示健康卡二维码
├→ 扫码验证有效性
├→ 关联到挂号单
├→ 就诊时自动调取健康档案
├→ 取药时核验身份
└→ 记录使用日志
3.4 数据库设计
-- V47__ehcard.sql
-- 电子健康卡
CREATE TABLE IF NOT EXISTS ehcard (
id BIGSERIAL PRIMARY KEY,
card_no VARCHAR(50) NOT NULL,
card_type VARCHAR(20) DEFAULT 'ELECTRONIC',
patient_id BIGINT NOT NULL,
patient_name VARCHAR(50),
id_card VARCHAR(30),
phone VARCHAR(20),
card_status VARCHAR(20) DEFAULT 'ACTIVE',
platform_card_id VARCHAR(100),
qr_code TEXT,
bind_time TIMESTAMP,
active_time TIMESTAMP,
expire_time TIMESTAMP,
loss_time TIMESTAMP,
loss_reason TEXT,
cancel_time TIMESTAMP,
cancel_reason TEXT,
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_by VARCHAR(64),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(64),
update_time TIMESTAMP
);
COMMENT ON TABLE ehcard IS '电子健康卡';
COMMENT ON COLUMN ehcard.card_status IS '状态(ACTIVE有效/LOST挂失/CANCELLED注销/EXPIRED过期)';
CREATE INDEX IF NOT EXISTS ec_patient ON ehcard(patient_id);
CREATE INDEX IF NOT EXISTS ec_card_no ON ehcard(card_no);
CREATE UNIQUE INDEX IF NOT EXISTS ec_platform_id ON ehcard(platform_card_id);
-- 健康卡使用记录
CREATE TABLE IF NOT EXISTS ehcard_usage_log (
id BIGSERIAL PRIMARY KEY,
card_id BIGINT NOT NULL,
card_no VARCHAR(50),
patient_id BIGINT,
usage_type VARCHAR(30) NOT NULL,
usage_time TIMESTAMP NOT NULL,
encounter_id BIGINT,
encounter_no VARCHAR(50),
usage_dept VARCHAR(100),
usage_doctor VARCHAR(64),
usage_detail TEXT,
verification_result VARCHAR(20),
tenant_id INTEGER DEFAULT 0,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE ehcard_usage_log IS '健康卡使用记录';
COMMENT ON COLUMN ehcard_usage_log.usage_type IS '类型(REGISTER挂号/就诊/取药/检验/缴费)';
CREATE INDEX IF NOT EXISTS eul_card ON ehcard_usage_log(card_id);
CREATE INDEX IF NOT EXISTS eul_time ON ehcard_usage_log(usage_time);
3.5 API接口设计
路径前缀: /healthlink-his/api/v1/ehcard
| 方法 | 路径 | 说明 | 请求体 |
|---|---|---|---|
| POST | /apply |
申请健康卡 | EhcardApplyDto |
| GET | /info/{patientId} |
查询患者健康卡 | — |
| GET | /info/card/{cardNo} |
按卡号查询 | — |
| POST | /bind |
绑定健康卡 | params: cardNo, patientId |
| POST | /unbind |
解绑 | params: cardId |
| POST | /loss |
挂失 | params: cardId, reason |
| POST | /replace |
补办 | params: cardId |
| POST | /cancel |
注销 | params: cardId, reason |
| POST | /verify |
就诊验证 | params: cardNo, encounterId |
| GET | /usage/log |
使用记录 | params: cardId, startDate, endDate |
| GET | /qr/{cardId} |
获取二维码 | — |
| GET | /statistics |
统计概览 | — |
3.6 前端设计
| 页面 | 路径 | 组件 |
|---|---|---|
| 健康卡管理 | ehcard/manage/index.vue |
卡列表 + 状态筛选 |
| 卡详情 | ehcard/detail/index.vue |
卡信息 + 使用记录 |
| 申请健康卡 | ehcard/apply/index.vue |
表单:身份证+手机号 |
| 挂失/补办 | ehcard/operation/index.vue |
操作弹窗 |
健康卡管理页面布局:
┌──────────────────────────────────────────────────┐
│ 筛选栏:[状态] [患者姓名] [卡号] [搜索] [重置] │
├──────────────────────────────────────────────────┤
│ 统计卡片:有效卡 | 挂失卡 | 今日申领 | 今日使用 │
├──────────────────────────────────────────────────┤
│ 表格: │
│ 卡号 | 患者 | 状态 | 绑定时间 | 操作 │
│ ... | ... | 有效 | ... | [详情][挂失][注销] │
└──────────────────────────────────────────────────┘
四、电子票据模块(invoice)— 新建
4.1 已有代码分析
完全缺失,无后端模块、无前端页面、无数据库表。
4.2 缺失功能清单
| 编号 | 功能 | 优先级 |
|---|---|---|
| INV-01 | 电子发票生成(财政电子票据) | P0 |
| INV-02 | 票据核销(号段管理 + 对账) | P0 |
| INV-03 | 退票处理(作废 + 红冲) | P0 |
| INV-04 | 票据查询与下载 | P0 |
| INV-05 | 票据打印 | P1 |
| INV-06 | 票据统计报表 | P2 |
4.3 业务流程
电子发票开具流程
患者缴费完成
├→ 系统自动生成电子发票
├→ 调用财政电子票据接口
├→ 获取财政票据号
├→ 生成PDF发票文件
├→ 存储到文件服务
└→ 推送到患者手机/邮箱
退票流程
患者申请退费
├→ 窗口/自助发起退票
├→ 财务审核
├→ 调用财政系统作废接口
├→ 生成红冲发票
├→ 更新原发票状态为VOIDED
└→ 退费到原支付渠道
4.4 数据库设计
-- V47__invoice.sql
-- 电子票据主表
CREATE TABLE IF NOT EXISTS eh_invoice (
id BIGSERIAL PRIMARY KEY,
invoice_no VARCHAR(50) NOT NULL,
invoice_code VARCHAR(50),
fiscal_no VARCHAR(100),
invoice_type VARCHAR(30) NOT NULL,
patient_id BIGINT NOT NULL,
patient_name VARCHAR(50),
id_card VARCHAR(30),
encounter_id BIGINT,
encounter_no VARCHAR(50),
payment_id BIGINT,
total_amount DECIMAL(12,2) NOT NULL,
paid_amount DECIMAL(12,2) DEFAULT 0,
insurance_amount DECIMAL(12,2) DEFAULT 0,
self_pay_amount DECIMAL(12,2) DEFAULT 0,
pay_method VARCHAR(30),
invoice_status VARCHAR(20) DEFAULT 'VALID',
void_reason TEXT,
void_time TIMESTAMP,
void_by VARCHAR(64),
red_ream_id BIGINT,
pdf_path VARCHAR(500),
xml_path VARCHAR(500),
qr_code TEXT,
issue_time TIMESTAMP NOT NULL,
issue_by VARCHAR(64),
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_by VARCHAR(64),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(64),
update_time TIMESTAMP
);
COMMENT ON TABLE eh_invoice IS '电子票据主表';
COMMENT ON COLUMN eh_invoice.invoice_type IS '类型(ORDINARY普通/REFUND退票/RED_RED冲)';
COMMENT ON COLUMN eh_invoice.invoice_status IS '状态(VALID有效/VOIDED已作废/REFUNDED已退票)';
CREATE INDEX IF NOT EXISTS ei_patient ON eh_invoice(patient_id);
CREATE INDEX IF NOT EXISTS ei_encounter ON eh_invoice(encounter_id);
CREATE INDEX IF NOT EXISTS ei_status ON eh_invoice(invoice_status);
CREATE INDEX IF NOT EXISTS ei_fiscal ON eh_invoice(fiscal_no);
-- 票据明细
CREATE TABLE IF NOT EXISTS eh_invoice_item (
id BIGSERIAL PRIMARY KEY,
invoice_id BIGINT NOT NULL,
item_name VARCHAR(200) NOT NULL,
item_code VARCHAR(50),
item_type VARCHAR(30),
quantity DECIMAL(10,4) DEFAULT 1,
unit_price DECIMAL(12,4),
amount DECIMAL(12,2) NOT NULL,
sort_order INT DEFAULT 0,
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE eh_invoice_item IS '票据明细';
CREATE INDEX IF NOT EXISTS eii_invoice ON eh_invoice_item(invoice_id);
-- 票据号段管理
CREATE TABLE IF NOT EXISTS eh_invoice_segment (
id BIGSERIAL PRIMARY KEY,
segment_code VARCHAR(50) NOT NULL,
invoice_type VARCHAR(30) NOT NULL,
start_no VARCHAR(50) NOT NULL,
end_no VARCHAR(50) NOT NULL,
current_no VARCHAR(50),
total_count INT NOT NULL,
used_count INT DEFAULT 0,
remaining_count INT,
status VARCHAR(20) DEFAULT 'ACTIVE',
org_code VARCHAR(50),
org_name VARCHAR(200),
start_date DATE,
end_date DATE,
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP
);
COMMENT ON TABLE eh_invoice_segment IS '票据号段管理';
CREATE UNIQUE INDEX IF NOT EXISTS eis_segment ON eh_invoice_segment(segment_code);
-- 票据对账记录
CREATE TABLE IF NOT EXISTS eh_invoice_reconciliation (
id BIGSERIAL PRIMARY KEY,
recon_date DATE NOT NULL,
recon_type VARCHAR(30) NOT NULL,
total_count INT DEFAULT 0,
total_amount DECIMAL(12,2) DEFAULT 0,
matched_count INT DEFAULT 0,
unmatched_count INT DEFAULT 0,
match_rate DECIMAL(5,2),
status VARCHAR(20) DEFAULT 'PENDING',
detail_json TEXT,
reconciler VARCHAR(64),
reconcile_time TIMESTAMP,
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE eh_invoice_reconciliation IS '票据对账记录';
COMMENT ON COLUMN eh_invoice_reconciliation.recon_type IS '类型(FISCAL财政/HOSPITAL医院)';
CREATE INDEX IF NOT EXISTS eir_date ON eh_invoice_reconciliation(recon_date);
4.5 API接口设计
路径前缀: /healthlink-his/api/v1/invoice
| 方法 | 路径 | 说明 | 请求体 |
|---|---|---|---|
| POST | /issue |
开具发票 | InvoiceIssueDto |
| GET | /info/{id} |
发票详情 | — |
| GET | /list |
发票列表 | params: status, patientName, startDate, endDate |
| POST | /void/{id} |
作废发票 | params: reason |
| POST | /refund/{id} |
退票 | params: reason |
| GET | /print/{id} |
获取打印数据 | — |
| GET | /pdf/{id} |
下载PDF | — |
| GET | /segment/list |
号段列表 | — |
| POST | /segment |
新增号段 | SegmentDto |
| POST | /reconcile |
发起对账 | params: reconType, date |
| GET | /reconcile/list |
对账记录 | params: startDate, endDate |
| GET | /statistics/summary |
统计概览 | params: startDate, endDate |
4.6 前端设计
| 页面 | 路径 | 组件 |
|---|---|---|
| 发票管理 | invoice/manage/index.vue |
发票列表 + 操作 |
| 发票详情 | invoice/detail/index.vue |
详情 + PDF预览 |
| 号段管理 | invoice/segment/index.vue |
号段配置 |
| 对账管理 | invoice/reconciliation/index.vue |
对账列表 |
| 统计报表 | invoice/statistics/index.vue |
图表 |
五、DRG/DIP深化模块(ybmanage扩展)
5.1 已有代码分析
后端(54个文件)
YbController.java— 1065行,20+个端点(签到/读卡/目录/对账/清算/入院/出院)YbElepController.java— 电子病历相关YbExtController.java— 扩展接口- DTO类30+个,Service 7个,Mapper 2个,Util 2个
已有数据库表(V28/V30/V33/V35)
mr_drg_grouping— DRG/DIP分组结果(encounterId/drgCode/drgWeight/dipCode/totalCost等)drg_analysis_stats— DRG分析统计drg_performance— DRG绩效drg_cost_alert— DRG费用异常预警(expectedCost/actualCost/costDeviation/alertType等)
前端(15个页面,14个有script)
ybmanagement/— 包含患者信息、入院登记、出院诊断、医保对账等
5.2 缺失功能清单
| 编号 | 功能 | 优先级 |
|---|---|---|
| DRG-01 | 广西DRG分组方案(2024版)维护 | P0 |
| DRG-02 | 广西DIP病种分值库 | P0 |
| DRG-03 | 费用预警规则引擎(超标/住院日/再入院) | P0 |
| DRG-04 | DRG/DIP优化建议算法 | P1 |
| DRG-05 | 医保对账/清算(广西接口适配) | P1 |
| DRG-06 | DRG绩效考核看板 | P2 |
| DRG-07 | 病案首页质控(DRG入组前校验) | P1 |
5.3 业务流程
DRG入组优化流程
病案首页完成
├→ 病案首页质控:ICD编码校验/手术操作完整性/主诊断合理性
├→ DRG/DIP预分组:根据广西2024版分组方案计算
├→ 费用预警检查:对比同DRG组平均费用
├→ 生成优化建议:住院日调整/费用控制/编码优化
├→ 医生确认/修改
└→ 正式入组上报
费用预警处理流程
入院时/住院中/出院时 触发预警
├→ 系统自动检测:费用/住院日/再入院
├→ 生成预警记录 → drg_cost_alert
├→ 推送到医生工作站
├→ 医生处理:填写处理意见
├→ 科主任复核
└→ 归档
5.4 数据库设计
-- V47__drg_dip_enhancement.sql
-- 广西DRG分组方案(2024版)
CREATE TABLE IF NOT EXISTS gx_drg_grouping_scheme (
id BIGSERIAL PRIMARY KEY,
scheme_code VARCHAR(20) NOT NULL,
scheme_name VARCHAR(200) NOT NULL,
scheme_version VARCHAR(20) NOT NULL,
effective_date DATE NOT NULL,
expiry_date DATE,
drg_group VARCHAR(20) NOT NULL,
drg_code VARCHAR(20) NOT NULL,
drg_name VARCHAR(200),
drg_weight DECIMAL(8,4),
avg_los DECIMAL(6,2),
avg_cost DECIMAL(12,2),
avg_mdc VARCHAR(20),
severity_level VARCHAR(20),
enabled CHAR(1) DEFAULT '1',
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP
);
COMMENT ON TABLE gx_drg_grouping_scheme IS '广西DRG分组方案';
CREATE INDEX IF NOT EXISTS gds_code ON gx_drg_grouping_scheme(drg_code);
CREATE INDEX IF NOT EXISTS gds_group ON gx_drg_grouping_scheme(drg_group);
-- 广西DIP病种分值库
CREATE TABLE IF NOT EXISTS gx_dip_disease_score (
id BIGSERIAL PRIMARY KEY,
dip_code VARCHAR(20) NOT NULL,
dip_name VARCHAR(200) NOT NULL,
disease_code VARCHAR(20),
disease_name VARCHAR(200),
procedure_code VARCHAR(20),
procedure_name VARCHAR(200),
score DECIMAL(8,4) NOT NULL,
avg_los DECIMAL(6,2),
avg_cost DECIMAL(12,2),
weight_factor DECIMAL(6,4) DEFAULT 1.0,
severity VARCHAR(20),
effective_date DATE,
expiry_date DATE,
enabled CHAR(1) DEFAULT '1',
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP
);
COMMENT ON TABLE gx_dip_disease_score IS '广西DIP病种分值库';
CREATE INDEX IF NOT EXISTS gdd_code ON gx_dip_disease_score(dip_code);
CREATE INDEX IF NOT EXISTS gdd_disease ON gx_dip_disease_score(disease_code);
-- DRG优化建议
CREATE TABLE IF NOT EXISTS drg_optimization_suggestion (
id BIGSERIAL PRIMARY KEY,
encounter_id BIGINT NOT NULL,
patient_id BIGINT NOT NULL,
patient_name VARCHAR(50),
drg_code VARCHAR(20),
dip_code VARCHAR(20),
suggestion_type VARCHAR(30) NOT NULL,
current_value TEXT,
suggested_value TEXT,
expected_saving DECIMAL(12,2),
priority INT DEFAULT 0,
suggestion_text TEXT NOT NULL,
evidence_source VARCHAR(100),
handle_status VARCHAR(20) DEFAULT 'PENDING',
handler VARCHAR(64),
handle_time TIMESTAMP,
handle_result TEXT,
accept_flag BOOLEAN,
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_by VARCHAR(64),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE drg_optimization_suggestion IS 'DRG优化建议';
COMMENT ON COLUMN drg_optimization_suggestion.suggestion_type IS '类型(COST费用/LOS住院日/CODING编码/PROCEDURE手术)';
CREATE INDEX IF NOT EXISTS dos_encounter ON drg_optimization_suggestion(encounter_id);
-- 病案首页质控记录
CREATE TABLE IF NOT EXISTS drg_quality_check (
id BIGSERIAL PRIMARY KEY,
encounter_id BIGINT NOT NULL,
patient_id BIGINT NOT NULL,
check_type VARCHAR(30) NOT NULL,
check_rule VARCHAR(100),
check_result VARCHAR(20) NOT NULL,
error_message TEXT,
field_name VARCHAR(100),
field_value TEXT,
suggestion TEXT,
handle_status VARCHAR(20) DEFAULT 'PENDING',
handler VARCHAR(64),
handle_time TIMESTAMP,
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_by VARCHAR(64),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE drg_quality_check IS '病案首页质控记录';
COMMENT ON COLUMN drg_quality_check.check_type IS '类型(ICD编码/主诊断/手术操作/完整性和逻辑性)';
COMMENT ON COLUMN drg_quality_check.check_result IS '结果(PASS通过/WARN警告/ERROR错误)';
CREATE INDEX IF NOT EXISTS dqct_encounter ON drg_quality_check(encounter_id);
CREATE INDEX IF NOT EXISTS dqct_result ON drg_quality_check(check_result);
-- 医保对账记录(广西适配)
CREATE TABLE IF NOT EXISTS yb_gx_reconciliation (
id BIGSERIAL PRIMARY KEY,
recon_month VARCHAR(7) NOT NULL,
recon_type VARCHAR(30) NOT NULL,
total_settlements INT DEFAULT 0,
total_medical_fee DECIMAL(14,2) DEFAULT 0,
total_fund_pay DECIMAL(14,2) DEFAULT 0,
total_self_pay DECIMAL(14,2) DEFAULT 0,
hospital_medical_fee DECIMAL(14,2) DEFAULT 0,
difference_amount DECIMAL(14,2) DEFAULT 0,
difference_reason TEXT,
status VARCHAR(20) DEFAULT 'PENDING',
reconciler VARCHAR(64),
reconcile_time TIMESTAMP,
file_path VARCHAR(500),
tenant_id INTEGER DEFAULT 0,
delete_flag CHAR(1) DEFAULT '0',
create_by VARCHAR(64),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMENT ON TABLE yb_gx_reconciliation IS '广西医保对账记录';
COMMENT ON COLUMN yb_gx_reconciliation.recon_type IS '类型(MONTHLY月度/SPECIAL专项)';
CREATE INDEX IF NOT EXISTS ygr_month ON yb_gx_reconciliation(recon_month);
5.5 API接口设计
路径前缀: /healthlink-his/api/v1/ybmanage
| 方法 | 路径 | 说明 | 请求体 |
|---|---|---|---|
| GET | /drg/scheme/list |
DRG方案列表 | params: enabled |
| POST | /drg/scheme |
新增/修改方案 | DrgSchemeDto |
| POST | /drg/scheme/import |
导入方案(Excel) | file |
| GET | /dip/score/list |
DIP分值列表 | params: keyword |
| POST | /dip/score |
新增/修改分值 | DipScoreDto |
| POST | /dip/score/import |
导入分值库 | file |
| POST | /drg/pre-group |
DRG预分组 | params: encounterId |
| POST | /dip/pre-group |
DIP预分值 | params: encounterId |
| GET | /drg/alert/list |
预警列表 | params: alertType, alertLevel, status |
| PUT | /drg/alert/{id}/handle |
处理预警 | AlertHandleDto |
| GET | /drg/suggestion/list |
优化建议列表 | params: encounterId |
| PUT | /drg/suggestion/{id}/accept |
接受建议 | params: result |
| POST | /drg/quality-check |
病案质控 | params: encounterId |
| GET | /drg/quality-check/list |
质控记录 | params: encounterId |
| GET | /drg/performance/dashboard |
绩效看板 | params: startDate, endDate |
| GET | /gx-reconciliation/list |
对账列表 | params: month |
| POST | /gx-reconciliation/reconcile |
发起对账 | params: month, type |
| GET | /gx-reconciliation/{id}/detail |
对账明细 | — |
5.6 前端设计
| 页面 | 路径 | 组件 |
|---|---|---|
| DRG方案管理 | ybmanagement/drgScheme/index.vue |
方案列表 + 导入 |
| DIP分值管理 | ybmanagement/dipScore/index.vue |
分值列表 + 导入 |
| 费用预警 | ybmanagement/costAlert/index.vue |
预警列表 + 处理 |
| 优化建议 | ybmanagement/optimization/index.vue |
建议列表 + 接受 |
| 病案质控 | ybmanagement/qualityCheck/index.vue |
质控结果 |
| 绩效看板 | ybmanagement/performance/index.vue |
图表 + 数据 |
| 广西对账 | ybmanagement/gxReconciliation/index.vue |
对账管理 |
费用预警页面布局:
┌──────────────────────────────────────────────────┐
│ 筛选:[预警类型] [预警级别] [状态] [日期范围] │
├──────────────────────────────────────────────────┤
│ 统计卡片:待处理 | 处理中 | 已处理 | 严重预警 │
├──────────────────────────────────────────────────┤
│ 表格: │
│ 患者 | DRG | 预期费用 | 实际费用 | 偏差 | 操作 │
│ 张三 | AA1 | 12000 | 18000 | 50% | [处理][详情]│
└──────────────────────────────────────────────────┘
六、Flyway迁移汇总
| 版本 | 文件名 | 模块 | 新增表 |
|---|---|---|---|
| V47 | V47__tcm_zhuang_diagnosis.sql | 中医壮医 | tcm_zhuang_diagnosis, tcm_constitution_questionnaire, tcm_constitution_answer, tcm_ethnic_drug, tcm_prescription_item |
| V47 | V47__epidemic_enhancement.sql | 传染病直报 | epidemic_screening_rule, epidemic_screening_hit, epidemic_cdc_submission, epidemic_disease_catalog + 扩展epidemic_report |
| V47 | V47__ehcard.sql | 电子健康卡 | ehcard, ehcard_usage_log |
| V47 | V47__invoice.sql | 电子票据 | eh_invoice, eh_invoice_item, eh_invoice_segment, eh_invoice_reconciliation |
| V47 | V47__drg_dip_enhancement.sql | DRG深化 | gx_drg_grouping_scheme, gx_dip_disease_score, drg_optimization_suggestion, drg_quality_check, yb_gx_reconciliation |
注意:实际实施时需拆分为多个V47/V48/V49版本,避免单次迁移过大。
七、后端模块结构汇总
7.1 新建模块
com.healthlink.his.web.ehcard/
├── controller/EhcardController.java
├── appservice/IEhcardAppService.java
├── appservice/impl/EhcardAppServiceImpl.java
└── dto/EhcardApplyDto.java, EhcardUsageLogDto.java
com.healthlink.his.web.invoice/
├── controller/InvoiceController.java
├── appservice/IInvoiceAppService.java
├── appservice/impl/InvoiceAppServiceImpl.java
└── dto/InvoiceIssueDto.java, InvoiceItemDto.java, SegmentDto.java
7.2 扩展模块
com.healthlink.his.web.tcm/
├── controller/TcmController.java (升级)
├── controller/ZhuangDiagnosisController.java (新增)
├── appservice/ITcmAppService.java (升级)
├── appservice/IZhuangDiagnosisAppService.java (新增)
├── appservice/impl/ZhuangDiagnosisAppServiceImpl.java (新增)
└── dto/ZhuangDiagnosisDto.java, ConstitutionAssessDto.java
com.healthlink.his.web.epidemic/
├── controller/EpidemicController.java (升级)
├── controller/ScreeningController.java (新增)
├── appservice/IEpidemicAppService.java (升级)
├── appservice/IScreeningAppService.java (新增)
├── appservice/impl/ScreeningAppServiceImpl.java (新增)
└── dto/ScreeningRuleDto.java, CdcSubmissionDto.java
com.healthlink.his.web.ybmanage/
├── controller/YbDrgController.java (新增)
├── controller/YbReconciliationController.java (新增)
├── service/IDrgGroupingService.java (新增)
├── service/IDipScoreService.java (新增)
├── service/impl/DrgGroupingServiceImpl.java (新增)
├── service/impl/DipScoreServiceImpl.java (新增)
└── dto/DrgSchemeDto.java, DipScoreDto.java, AlertHandleDto.java
八、前端模块结构汇总
8.1 新建目录
src/views/ehcard/
├── manage/index.vue # 健康卡管理
├── detail/index.vue # 卡详情
├── apply/index.vue # 申请健康卡
└── api.js # API定义
src/views/invoice/
├── manage/index.vue # 发票管理
├── detail/index.vue # 发票详情
├── segment/index.vue # 号段管理
├── reconciliation/index.vue # 对账管理
├── statistics/index.vue # 统计报表
└── api.js # API定义
8.2 扩展目录
src/views/tcm/
├── traditional/index.vue # 已有,升级
├── constitution/index.vue # 已有,升级
├── zhuangDiagnosis/index.vue # 新增
├── ethnicDrug/index.vue # 新增
├── prescriptionTemplate/index.vue # 新增
└── prescription/index.vue # 新增
src/views/diseaseReportManagement/
├── ReportManagement/ # 已有,升级
├── ReportDetail/index.vue # 新增
├── ScreeningRule/index.vue # 新增
├── Statistics/index.vue # 新增
└── DiseaseCatalog/index.vue # 新增
src/views/ybmanagement/
├── drgScheme/index.vue # 新增
├── dipScore/index.vue # 新增
├── costAlert/index.vue # 新增
├── optimization/index.vue # 新增
├── qualityCheck/index.vue # 新增
├── performance/index.vue # 新增
└── gxReconciliation/index.vue # 新增
九、实施顺序建议
| Sprint | 模块 | 工作量估算 | 依赖 |
|---|---|---|---|
| Sprint 1 | 电子健康卡(ehcard) | 5天 | 无 |
| Sprint 2 | 电子票据(invoice) | 5天 | 无 |
| Sprint 3 | 传染病直报升级(epidemic) | 4天 | 广西疾控接口文档 |
| Sprint 4 | 中医壮医扩展(tcm) | 5天 | 壮医三诊标准 |
| Sprint 5 | DRG/DIP深化(ybmanage) | 6天 | 广西2024版分组方案 |
每个Sprint完成后需通过编译验证(mvn compile + npm run build:dev)。