-- ============================================================
-- Migration: 20260302_lab_04_domicilios
-- Módulo Administrativo: Servicios a domicilio
-- ============================================================

CREATE TABLE IF NOT EXISTS `lab_domicilios` (
    `id`                INT(11)         NOT NULL AUTO_INCREMENT,
    `orden_id`          INT(11)         DEFAULT NULL            COMMENT 'FK a lab_ordenes_medicas.id',
    `paciente_id`       INT(11)         NOT NULL                COMMENT 'FK a lab_pacientes.id',
    -- Datos del domicilio
    `direccion`         TEXT            NOT NULL,
    `ciudad`            VARCHAR(100)    DEFAULT NULL,
    `barrio`            VARCHAR(100)    DEFAULT NULL,
    `indicaciones_dir`  TEXT            DEFAULT NULL            COMMENT 'Referencia de la dirección',
    `fecha_programada`  DATE            NOT NULL,
    `hora_programada`   TIME            DEFAULT NULL,
    `tipo_servicio`     VARCHAR(100)    DEFAULT NULL            COMMENT 'Tipo de toma de muestra',
    -- Estado del domicilio
    `estado`            ENUM(
                            'programado',
                            'confirmado',
                            'en_camino',
                            'en_domicilio',
                            'completado',
                            'cancelado',
                            'reprogramado'
                        ) NOT NULL DEFAULT 'programado',
    `motivo_cancelacion` TEXT           DEFAULT NULL,
    `fecha_reprogramada` DATE           DEFAULT NULL,
    -- Resultados
    `hora_llegada`      TIME            DEFAULT NULL,
    `hora_salida`       TIME            DEFAULT NULL,
    `observaciones`     TEXT            DEFAULT NULL,
    `muestras_tomadas`  TEXT            DEFAULT NULL            COMMENT 'Lista de muestras obtenidas',
    -- Gestión
    `creado_por`        INT(11)         DEFAULT NULL            COMMENT 'FK a admin_users.id',
    `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_dom_orden`         (`orden_id`),
    KEY `idx_dom_paciente`      (`paciente_id`),
    KEY `idx_dom_fecha`         (`fecha_programada`),
    KEY `idx_dom_estado`        (`estado`),
    KEY `idx_dom_creado`        (`creado_por`),
    CONSTRAINT `fk_dom_orden`       FOREIGN KEY (`orden_id`)
        REFERENCES `lab_ordenes_medicas` (`id`) ON DELETE SET NULL,
    CONSTRAINT `fk_dom_paciente`    FOREIGN KEY (`paciente_id`)
        REFERENCES `lab_pacientes` (`id`) ON DELETE RESTRICT,
    CONSTRAINT `fk_dom_creado`      FOREIGN KEY (`creado_por`)
        REFERENCES `admin_users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Servicios a domicilio programados';
