-- =============================================================
-- LIS 07 — Tracking de muestras por turnero (solicitud)
-- Crea: turnero_muestras
-- Depende de: turnero_solicitudes (003), lab_tipos_muestra (LIS 01)
-- =============================================================

CREATE TABLE IF NOT EXISTS turnero_muestras (
    id              INT UNSIGNED    NOT NULL AUTO_INCREMENT,
    solicitud_id    INT UNSIGNED    NOT NULL
        COMMENT 'FK turnero_solicitudes.id',
    tipo_muestra    VARCHAR(20)     NOT NULL
        COMMENT 'FK lab_tipos_muestra.codigo (ej: SANGRE_VENOSA, ORINA)',
    estado          ENUM('pendiente','recibida','rechazada')
                    NOT NULL DEFAULT 'pendiente',
    motivo_rechazo  VARCHAR(200)    DEFAULT NULL
        COMMENT 'Razón de rechazo (hemólisis, coagulado, volumen insuficiente…)',
    recibida_por    INT             DEFAULT NULL
        COMMENT 'FK admin_users.id — quién marcó recibida',
    recibida_at     DATETIME        DEFAULT NULL,
    creado_at       DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    UNIQUE KEY uq_solicitud_tipo (solicitud_id, tipo_muestra),
    KEY idx_estado      (estado),
    KEY idx_solicitud   (solicitud_id),
    CONSTRAINT fk_tm_solicitud FOREIGN KEY (solicitud_id)
        REFERENCES turnero_solicitudes (id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Estado de muestras físicas por turno — solo lugar toma de muestras';
