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