-- 会诊申请表 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 $$;