-- ============================================================= -- 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';