-- Migration v56: SADT — Solicitação de Apoio Diagnóstico e Terapêutico

CREATE TABLE IF NOT EXISTS sadt_solicitacoes (
    id                      INT AUTO_INCREMENT PRIMARY KEY,
    clinica_id              INT NOT NULL DEFAULT 1,
    numero                  VARCHAR(30) UNIQUE NOT NULL,
    internacao_id           INT DEFAULT NULL COMMENT 'NULL = paciente externo',
    paciente_id             INT NOT NULL,
    medico_id               INT DEFAULT NULL COMMENT 'FK master_profissionais',
    tipo                    ENUM('laboratorio','imagem','ecg','espirometria','endoscopia','outro') DEFAULT 'laboratorio',
    urgencia                ENUM('rotina','urgente','emergencia') DEFAULT 'rotina',
    exames                  TEXT NOT NULL COMMENT 'Exames solicitados (texto livre)',
    indicacao_clinica       TEXT DEFAULT NULL,
    observacoes             TEXT DEFAULT NULL,
    status                  ENUM('pendente','em_andamento','concluido','cancelado') DEFAULT 'pendente',
    resultado               TEXT DEFAULT NULL,
    data_resultado          DATETIME DEFAULT NULL,
    motivo_cancelamento     VARCHAR(255) DEFAULT NULL,
    usuario_id              INT NOT NULL DEFAULT 0,
    created_at              DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at              DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    deleted_at              DATETIME DEFAULT NULL,
    FOREIGN KEY (paciente_id)   REFERENCES pacientes(id) ON DELETE RESTRICT,
    FOREIGN KEY (internacao_id) REFERENCES hospital_internacoes(id) ON DELETE SET NULL,
    INDEX idx_clinica    (clinica_id),
    INDEX idx_paciente   (paciente_id),
    INDEX idx_internacao (internacao_id),
    INDEX idx_status     (status),
    INDEX idx_tipo       (tipo),
    INDEX idx_deleted    (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ======================================================
-- PERMISSÕES
-- ======================================================
-- sadt_view      = Ver solicitações
-- sadt_create    = Criar nova solicitação
-- sadt_resultado = Registrar resultado
-- sadt_cancelar  = Cancelar solicitação
