-- ============================================================
-- hqsMEDIKAL — Portal del Paciente
-- Migración: 047_patient_portal.sql
-- ============================================================
-- Permite a los pacientes consultar citas, resultados de
-- estudios, medicación activa y facturas mediante un acceso
-- seguro (email + pin o magic-link por email).
-- ============================================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ── Acceso al portal del paciente ─────────────────────────
CREATE TABLE IF NOT EXISTS patient_portal_access (
    id              INT UNSIGNED  NOT NULL AUTO_INCREMENT,
    company_id      INT UNSIGNED  NOT NULL,
    patient_id      INT UNSIGNED  NOT NULL,
    email           VARCHAR(150)  NOT NULL,
    pin_hash        VARCHAR(255)  DEFAULT NULL
        COMMENT 'bcrypt — PIN numérico de 6 dígitos',
    access_token    VARCHAR(64)   DEFAULT NULL
        COMMENT 'Token de acceso temporal (magic link)',
    token_expires   DATETIME      DEFAULT NULL,
    is_active       TINYINT(1)    NOT NULL DEFAULT 1,
    last_login_at   DATETIME      DEFAULT NULL,
    last_login_ip   VARCHAR(45)   DEFAULT NULL,
    created_at      DATETIME      NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at      DATETIME      DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    UNIQUE KEY uk_company_patient (company_id, patient_id),
    UNIQUE KEY uk_company_email   (company_id, email),
    INDEX idx_token (access_token)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

SET FOREIGN_KEY_CHECKS = 1;

-- ─────────────────────────────────────────────────────────────
-- FIN DE MIGRACIÓN
-- Tabla nueva: patient_portal_access
-- ─────────────────────────────────────────────────────────────
