-- Creación de la base de datos (Opcional si ya la creaste en tu hosting)
-- CREATE DATABASE IF NOT EXISTS sistema_gestantes_disa2 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- USE sistema_gestantes_disa2;

-- 1. Tabla de Establecimientos (IPRESS)
CREATE TABLE IF NOT EXISTS establecimientos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    cod_renaes VARCHAR(20) NOT NULL UNIQUE,
    nombre_ipress VARCHAR(150) NOT NULL,
    microred VARCHAR(100) NOT NULL,
    red_salud VARCHAR(100) NOT NULL,
    categoria VARCHAR(10) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 2. Tabla de Usuarios y Roles
CREATE TABLE IF NOT EXISTS usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    dni VARCHAR(15) NOT NULL UNIQUE,
    nombres_apellidos VARCHAR(150) NOT NULL,
    correo VARCHAR(100),
    usuario VARCHAR(50) NOT NULL UNIQUE,
    password_hash VARCHAR(255) NOT NULL,
    rol ENUM('ADMIN_SIS', 'COORD_DISA', 'COORD_RED', 'COORD_MICRORED', 'OBSTETRA_IPRESS') NOT NULL,
    ipress_id INT NULL,
    microrred_asignada VARCHAR(100) NULL,
    estado TINYINT(1) DEFAULT 1,
    fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (ipress_id) REFERENCES establecimientos(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 3. Tabla de Gestantes (Datos Estilo Tarjeta Perinatal)
CREATE TABLE IF NOT EXISTS gestantes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    dni VARCHAR(15) NOT NULL UNIQUE,
    historia_clinica VARCHAR(50),
    nombres_apellidos VARCHAR(150) NOT NULL,
    fecha_nacimiento DATE NOT NULL,
    telefono VARCHAR(20),
    direccion TEXT,
    referencia_domiciliaria TEXT,
    ipress_id INT NOT NULL, -- IPRESS actual donde se atiende
    fum DATE NOT NULL, -- Fecha de Última Menstruación
    fpp DATE NOT NULL, -- Fecha Probable de Parto (Calculada)
    gestas INT DEFAULT 0,
    partos INT DEFAULT 0,
    abortos INT DEFAULT 0,
    cesareas INT DEFAULT 0,
    factores_riesgo TEXT NULL, -- JSON o texto descriptivo de patologías
    estado_gestacion ENUM('GESTANTE', 'PUERPERA', 'TRANSFERIDA', 'TERMINADA') DEFAULT 'GESTANTE',
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (ipress_id) REFERENCES establecimientos(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 4. Tabla de Controles CPN (Seguimiento Reenfocado)
CREATE TABLE IF NOT EXISTS controles_cpn (
    id INT AUTO_INCREMENT PRIMARY KEY,
    gestante_id INT NOT NULL,
    nro_control INT NOT NULL,
    fecha_atencion DATE NOT NULL,
    edad_gestacional_semanas INT NOT NULL,
    edad_gestacional_dias INT NOT NULL,
    peso DECIMAL(5,2),
    imc DECIMAL(4,2),
    presion_arterial VARCHAR(10), -- Ej: 120/80
    altura_uterina DECIMAL(4,2),
    lcf VARCHAR(20), -- Latidos cardiofetales
    examenes_auxiliares TEXT, -- RPR, VIH, Hb, Grupo Sanguíneo
    suplementacion TEXT, -- Hierro, Ácido Fólico, Calcio
    plan_parto TINYINT(1) DEFAULT 0,
    proxima_cita DATE NOT NULL,
    usuario_registra VARCHAR(100),
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (gestante_id) REFERENCES gestantes(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 5. Tabla de Transferencias Inter-IPRESS con Trazabilidad
CREATE TABLE IF NOT EXISTS transferencias_gestantes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    gestante_id INT NOT NULL,
    ipress_origen_id INT NOT NULL,
    ipress_destino_id INT NOT NULL,
    motivo_transferencia TEXT NOT NULL,
    estado_transferencia ENUM('PENDIENTE', 'ACEPTADA', 'RECHAZADA') DEFAULT 'PENDIENTE',
    fecha_solicitud TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    fecha_respuesta DATETIME NULL,
    usuario_solicita VARCHAR(100),
    usuario_atiende VARCHAR(100),
    FOREIGN KEY (gestante_id) REFERENCES gestantes(id),
    FOREIGN KEY (ipress_origen_id) REFERENCES establecimientos(id),
    FOREIGN KEY (ipress_destino_id) REFERENCES establecimientos(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 6. Tabla de Alertas Automatizadas (Moras y Riesgos)
CREATE TABLE IF NOT EXISTS alertas_sistema (
    id INT AUTO_INCREMENT PRIMARY KEY,
    gestante_id INT NOT NULL,
    tipo_alerta ENUM('RETRASO_CPN', 'RIESGO_ALTO', 'FALTA_EXAMEN') NOT NULL,
    nivel_alerta ENUM('AMARILLA', 'ROJA') NOT NULL,
    dias_retraso INT DEFAULT 0,
    mensaje_alerta TEXT NOT NULL,
    estado ENUM('PENDIENTE', 'RESUELTO', 'SEGUIMIENTO_COMUNITARIO') DEFAULT 'PENDIENTE',
    fecha_generacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (gestante_id) REFERENCES gestantes(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;