feat: 门诊手术中计费功能

- 数据库:在adm_charge_item表添加SourceBillNo字段
- 后端实体类:更新ChargeItem.java添加SourceBillNo字段
- 前端组件:创建手术计费界面(基于门诊划价界面)
- 后端API:扩展PrePrePaymentDto支持手术计费标识
- 后端Service:扩展getChargeItems方法支持手术计费过滤
- 门诊手术安排界面:添加【计费】按钮

注意事项:
- 需要手动执行SQL脚本:openhis-server-new/sql/add_source_bill_no_to_adm_charge_item.sql
- 术后一站式结算功能待后续开发
This commit is contained in:
2026-02-05 23:47:02 +08:00
parent f3d56bff45
commit 89bf85fd97
117 changed files with 30248 additions and 44 deletions

View File

@@ -0,0 +1,141 @@
-- 会诊申请表
CREATE TABLE IF NOT EXISTS consultation_request (
id BIGSERIAL PRIMARY KEY,
patient_id VARCHAR(50) NOT NULL, -- 患者ID
patient_name VARCHAR(100), -- 患者姓名
gender VARCHAR(10), -- 患者性别
age INTEGER, -- 患者年龄
visit_id BIGINT, -- 门诊就诊流水号
order_id BIGINT, -- 门诊医嘱表主键
department_id BIGINT, -- 申请科室ID
department_name VARCHAR(100), -- 申请科室名称
attending_doctor_id BIGINT, -- 主管医生ID
attending_doctor_name VARCHAR(100), -- 主管医生姓名
consultation_purpose TEXT, -- 会诊目的
provisional_diagnosis TEXT, -- 门诊诊断
current_condition TEXT, -- 目前病情
consultation_department_ids TEXT, -- 申请会诊科室ID列表逗号分隔
consultation_doctor_ids TEXT, -- 申请会诊医生ID列表逗号分隔
consultation_type INTEGER DEFAULT 1, -- 会诊类型1-普通会诊2-紧急会诊3-多学科会诊
priority_level INTEGER DEFAULT 1, -- 优先级1-低2-中3-高
consultation_status INTEGER DEFAULT 0, -- 会诊状态0-新开10-已提交20-已确认30-已签名40-已完成50-已取消
consultation_opinion TEXT, -- 会诊意见
confirming_physician VARCHAR(100), -- 提交会诊的医生
confirming_physician_id BIGINT, -- 提交会诊的医生ID
confirming_date TIMESTAMP, -- 提交会诊时间
consultation_urgency VARCHAR(20) DEFAULT '一般', -- 是否紧急
application_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 申请日期
consultation_request_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 会诊申请时间
confirmed_date TIMESTAMP, -- 确认日期
scheduled_date TIMESTAMP, -- 计划会诊日期
actual_date TIMESTAMP, -- 实际会诊日期
location VARCHAR(200), -- 会诊地点
confirming_physician_name VARCHAR(100), -- 确认会诊的医生姓名
signature VARCHAR(100), -- 签名医生
signature_date TIMESTAMP, -- 签名时间
confirming_department_name VARCHAR(100), -- 代表科室
confirming_physician_participation VARCHAR(100), -- 会诊确认参加医师
creator_id BIGINT, -- 创建人ID
creator_name VARCHAR(100), -- 创建人姓名
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 创建时间
updater_id BIGINT, -- 更新人ID
updater_name VARCHAR(100), -- 更新人姓名
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 更新时间
valid_flag INTEGER DEFAULT 1, -- 有效标志1-有效0-无效
tenant_id INTEGER DEFAULT 1 -- 租户ID
);
-- 会诊确认表
CREATE TABLE IF NOT EXISTS consultation_confirmation (
id BIGSERIAL PRIMARY KEY,
consultation_request_id BIGINT NOT NULL, -- 会诊申请ID
confirming_department_id BIGINT NOT NULL, -- 确认科室ID
confirming_department_name VARCHAR(100) NOT NULL, -- 确认科室名称
confirming_doctor_id BIGINT NOT NULL, -- 确认医生ID
confirming_doctor_name VARCHAR(100) NOT NULL, -- 确认医生姓名
confirmation_status INTEGER DEFAULT 1, -- 确认状态1-待确认2-同意3-拒绝
confirmation_reason TEXT, -- 确认/拒绝理由
confirmation_date TIMESTAMP, -- 确认日期
consultation_opinion TEXT, -- 会诊意见
confirming_physician_participation VARCHAR(100), -- 会诊确认参加医师
confirming_physician_name VARCHAR(100), -- 所属医生
confirming_department_name_field VARCHAR(100), -- 代表科室
signature VARCHAR(100), -- 签名医生
signature_date TIMESTAMP, -- 签名时间
creator_id BIGINT NOT NULL, -- 创建人ID
creator_name VARCHAR(100) NOT NULL, -- 创建人姓名
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 创建时间
updater_id BIGINT, -- 更新人ID
updater_name VARCHAR(100), -- 更新人姓名
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 更新时间
valid_flag INTEGER DEFAULT 1, -- 有效标志1-有效0-无效
tenant_id INTEGER DEFAULT 1, -- 租户ID
-- 注意:外键约束将在所有表创建后再添加
CONSTRAINT fk_consultation_confirmation_request
FOREIGN KEY (consultation_request_id) REFERENCES consultation_request(id)
);
-- 会诊记录表
CREATE TABLE IF NOT EXISTS consultation_record (
id BIGSERIAL PRIMARY KEY,
consultation_request_id BIGINT NOT NULL, -- 会诊申请ID
participant_doctor_id BIGINT NOT NULL, -- 参与医生ID
participant_doctor_name VARCHAR(100) NOT NULL, -- 参与医生姓名
participant_department_id BIGINT NOT NULL, -- 参与科室ID
participant_department_name VARCHAR(100) NOT NULL, -- 参与科室名称
opinion TEXT, -- 会诊意见
suggestion TEXT, -- 会诊建议
record_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 记录日期
creator_id BIGINT NOT NULL, -- 创建人ID
creator_name VARCHAR(100) NOT NULL, -- 创建人姓名
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 创建时间
updater_id BIGINT, -- 更新人ID
updater_name VARCHAR(100), -- 更新人姓名
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 更新时间
valid_flag INTEGER DEFAULT 1, -- 有效标志1-有效0-无效
tenant_id INTEGER DEFAULT 1, -- 租户ID
-- 注意:外键约束将在所有表创建后再添加
CONSTRAINT fk_consultation_record_request
FOREIGN KEY (consultation_request_id) REFERENCES consultation_request(id)
);
-- 创建索引
CREATE INDEX IF NOT EXISTS idx_consultation_request_patient_id ON consultation_request(patient_id);
CREATE INDEX IF NOT EXISTS idx_consultation_request_dept_id ON consultation_request(department_id);
CREATE INDEX IF NOT EXISTS idx_consultation_request_status ON consultation_request(consultation_status);
CREATE INDEX IF NOT EXISTS idx_consultation_request_date ON consultation_request(application_date);
CREATE INDEX IF NOT EXISTS idx_consultation_confirmation_req_id ON consultation_confirmation(consultation_request_id);
CREATE INDEX IF NOT EXISTS idx_consultation_confirmation_doctor_id ON consultation_confirmation(confirming_doctor_id);
CREATE INDEX IF NOT EXISTS idx_consultation_confirmation_status ON consultation_confirmation(confirmation_status);
CREATE INDEX IF NOT EXISTS idx_consultation_record_req_id ON consultation_record(consultation_request_id);
CREATE INDEX IF NOT EXISTS idx_consultation_record_doctor_id ON consultation_record(participant_doctor_id);
-- 添加外键约束(如果尚未添加)
DO $$
BEGIN
-- 为consultation_confirmation表添加外键约束
IF NOT EXISTS (
SELECT 1
FROM information_schema.table_constraints
WHERE constraint_name = 'fk_consultation_confirmation_request'
AND table_name = 'consultation_confirmation'
) THEN
ALTER TABLE consultation_confirmation
ADD CONSTRAINT fk_consultation_confirmation_request
FOREIGN KEY (consultation_request_id) REFERENCES consultation_request(id);
END IF;
-- 为consultation_record表添加外键约束
IF NOT EXISTS (
SELECT 1
FROM information_schema.table_constraints
WHERE constraint_name = 'fk_consultation_record_request'
AND table_name = 'consultation_record'
) THEN
ALTER TABLE consultation_record
ADD CONSTRAINT fk_consultation_record_request
FOREIGN KEY (consultation_request_id) REFERENCES consultation_request(id);
END IF;
END $$;