-- ============================================================
-- Migration: 20260302_lab_03_ordenes_medicas
-- Módulo Administrativo: Órdenes médicas recibidas por WhatsApp
-- Vincula una imagen del chat con un paciente y un estado
-- ============================================================

CREATE TABLE IF NOT EXISTS `lab_ordenes_medicas` (
    `id`                    INT(11)         NOT NULL AUTO_INCREMENT,
    `paciente_id`           INT(11)         NOT NULL                COMMENT 'FK a lab_pacientes.id',
    `conversation_id`       INT(11)         DEFAULT NULL            COMMENT 'FK a conversations.id (mensaje con la imagen)',
    `whatsapp_media_id`     VARCHAR(255)    DEFAULT NULL            COMMENT 'Media ID de WhatsApp para referencia',
    `local_file`            VARCHAR(255)    DEFAULT NULL            COMMENT 'Ruta local de la imagen de la orden',
    -- Estado del flujo de revisión
    `estado`                ENUM(
                                'pendiente',
                                'en_revision',
                                'autorizada',
                                'rechazada',
                                'en_domicilio',
                                'completada'
                            ) NOT NULL DEFAULT 'pendiente',
    -- Datos de la orden médica (ingresados manualmente)
    `medico_nombre`         VARCHAR(150)    DEFAULT NULL,
    `medico_registro`       VARCHAR(50)     DEFAULT NULL,
    `fecha_orden`           DATE            DEFAULT NULL            COMMENT 'Fecha que aparece en la orden impresa',
    `diagnostico`           TEXT            DEFAULT NULL,
    `examenes_solicitados`  TEXT            DEFAULT NULL            COMMENT 'Lista de exámenes de la orden',
    `requiere_ayuno`        TINYINT(1)      DEFAULT 0,
    `horas_ayuno`           TINYINT(3)      DEFAULT NULL,
    `indicaciones`          TEXT            DEFAULT NULL,
    -- Gestión administrativa
    `revisada_por`          INT(11)         DEFAULT NULL            COMMENT 'FK a admin_users.id',
    `revisada_at`           DATETIME        DEFAULT NULL,
    `autorizada_por`        INT(11)         DEFAULT NULL            COMMENT 'FK a admin_users.id',
    `autorizada_at`         DATETIME        DEFAULT NULL,
    `comentario_revision`   TEXT            DEFAULT NULL,
    `notas_admin`           TEXT            DEFAULT NULL,
    `created_at`            TIMESTAMP       NULL DEFAULT CURRENT_TIMESTAMP,
    `updated_at`            TIMESTAMP       NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    KEY `idx_ord_paciente`      (`paciente_id`),
    KEY `idx_ord_conversation`  (`conversation_id`),
    KEY `idx_ord_estado`        (`estado`),
    KEY `idx_ord_fecha`         (`fecha_orden`),
    KEY `idx_ord_revisada_por`  (`revisada_por`),
    KEY `idx_ord_autorizada`    (`autorizada_por`),
    CONSTRAINT `fk_ord_paciente`    FOREIGN KEY (`paciente_id`)
        REFERENCES `lab_pacientes` (`id`) ON DELETE RESTRICT,
    CONSTRAINT `fk_ord_conversation` FOREIGN KEY (`conversation_id`)
        REFERENCES `conversations` (`id`) ON DELETE SET NULL,
    CONSTRAINT `fk_ord_revisada`    FOREIGN KEY (`revisada_por`)
        REFERENCES `admin_users` (`id`) ON DELETE SET NULL,
    CONSTRAINT `fk_ord_autorizada`  FOREIGN KEY (`autorizada_por`)
        REFERENCES `admin_users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Órdenes médicas recibidas vía WhatsApp';
