-- Migration v53: Centro Cirúrgico
-- Módulo: centro_cirurgico

-- ======================================================
-- SALAS CIRÚRGICAS
-- ======================================================
CREATE TABLE IF NOT EXISTS cc_salas (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    clinica_id  INT NOT NULL DEFAULT 1,
    nome        VARCHAR(100) NOT NULL,
    localizacao VARCHAR(255) DEFAULT NULL,
    tipo        ENUM('geral','ortopedia','cardiologia','neurologia','obstetricia','pediatria','oftalmologia','outro') DEFAULT 'geral',
    capacidade  INT DEFAULT 1 COMMENT 'Número de leitos/equipes simultâneas',
    equipamentos TEXT DEFAULT NULL,
    observacao  TEXT DEFAULT NULL,
    status      ENUM('livre','em_uso','limpeza','manutencao','bloqueada') DEFAULT 'livre',
    ativo       TINYINT(1) DEFAULT 1,
    created_at  DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at  DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_clinica (clinica_id),
    INDEX idx_status  (status),
    INDEX idx_ativo   (ativo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ======================================================
-- CIRURGIAS
-- ======================================================
CREATE TABLE IF NOT EXISTS cc_cirurgias (
    id                  INT AUTO_INCREMENT PRIMARY KEY,
    clinica_id          INT NOT NULL DEFAULT 1,
    numero              VARCHAR(30) UNIQUE NOT NULL,
    sala_id             INT NOT NULL,
    paciente_id         INT NOT NULL,
    cirurgiao_id        INT DEFAULT NULL COMMENT 'FK master_profissionais',
    anestesista_id      INT DEFAULT NULL COMMENT 'FK master_profissionais',
    procedimento        VARCHAR(255) NOT NULL,
    cid10               VARCHAR(20) DEFAULT NULL,
    tipo                ENUM('eletiva','urgencia','emergencia') DEFAULT 'eletiva',
    data_agendada       DATE NOT NULL,
    horario_inicio      TIME DEFAULT NULL,
    duracao_prevista    INT DEFAULT 0 COMMENT 'Duração prevista em minutos',
    horario_real_inicio DATETIME DEFAULT NULL,
    horario_real_fim    DATETIME DEFAULT NULL,
    convenio_id         INT DEFAULT NULL,
    numero_guia         VARCHAR(50) DEFAULT NULL,
    observacoes         TEXT DEFAULT NULL,
    relatorio_cirurgico TEXT DEFAULT NULL,
    status              ENUM('agendada','em_andamento','concluida','cancelada','adiada') DEFAULT 'agendada',
    motivo_cancelamento VARCHAR(255) DEFAULT NULL,
    usuario_id          INT NOT NULL,
    created_at          DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at          DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    deleted_at          DATETIME DEFAULT NULL,
    FOREIGN KEY (sala_id)      REFERENCES cc_salas(id) ON DELETE RESTRICT,
    FOREIGN KEY (paciente_id)  REFERENCES pacientes(id) ON DELETE RESTRICT,
    INDEX idx_clinica  (clinica_id),
    INDEX idx_sala     (sala_id),
    INDEX idx_status   (status),
    INDEX idx_data     (data_agendada),
    INDEX idx_paciente (paciente_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ======================================================
-- PERMISSÕES
-- ======================================================
-- centro_cirurgico_view    = Ver mapa de salas e cirurgias agendadas
-- centro_cirurgico_manage  = Gerenciar salas (CRUD + status)
-- centro_cirurgico_agendar = Agendar, concluir e cancelar cirurgias
