-- Migration v68: Regulação / Fila de Leitos
-- Gerenciamento de fila de espera por tipo e especialidade

SET NAMES utf8mb4;

CREATE TABLE IF NOT EXISTS hospital_regulacao (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    clinica_id      INT NOT NULL DEFAULT 1,
    paciente_id     INT NOT NULL,
    tipo_leito      VARCHAR(60) NOT NULL COMMENT 'UTI, Enfermaria, Isolamento, Cirurgia etc.',
    especialidade   VARCHAR(100) NULL,
    prioridade      ENUM('urgente','alta','media','eletiva') NOT NULL DEFAULT 'media',
    status          ENUM('aguardando','alocado','cancelado','transferido') NOT NULL DEFAULT 'aguardando',
    leito_id        INT NULL COMMENT 'Preenchido ao alocar',
    internacao_id   INT NULL COMMENT 'Preenchido ao alocar',
    solicitante_id  INT NULL,
    motivo          TEXT NULL,
    observacao      TEXT NULL,
    solicitado_em   DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    alocado_em      DATETIME NULL,
    cancelado_em    DATETIME NULL,
    created_at      DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at      DATETIME NULL ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_regulacao_clinica   (clinica_id),
    INDEX idx_regulacao_status    (status),
    INDEX idx_regulacao_prioridade (prioridade),
    INDEX idx_regulacao_paciente  (paciente_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT IGNORE INTO permissoes (nome, chave, descricao) VALUES
('Visualizar Fila de Regulação', 'regulacao_view',   'Visualizar fila de espera por leito/especialidade'),
('Gerenciar Regulação',          'regulacao_manage', 'Solicitar, alocar e cancelar regulações de leitos');

INSERT IGNORE INTO perfil_permissoes (perfil_id, permissao_id)
SELECT 1, id FROM permissoes WHERE chave IN ('regulacao_view','regulacao_manage');

INSERT IGNORE INTO perfil_permissoes (perfil_id, permissao_id)
SELECT 4, id FROM permissoes WHERE chave IN ('regulacao_view','regulacao_manage');

INSERT IGNORE INTO perfil_permissoes (perfil_id, permissao_id)
SELECT 7, id FROM permissoes WHERE chave IN ('regulacao_view','regulacao_manage');
