Los cambios del 2026-08-03 (admin_users.cedula, turnero_consentimientos.creado_por, turnero_muestras.recibida_en_turno_id y la tabla turnero_tv_media) se aplicaron directo en producción y no quedaron en el repo, así que un entorno nuevo no los tendría. Se registran como migración idempotente (IF NOT EXISTS + guardas en el UPDATE/INSERT); verificada contra producción sin efectos. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
45 lines
2.1 KiB
SQL
45 lines
2.1 KiB
SQL
-- 20260803 — Cambios de esquema del turnero aplicados el 2026-08-03
|
|
-- Ya ejecutados en producción; este archivo los deja registrados para
|
|
-- reconstruir el esquema desde cero o replicarlo en otro entorno.
|
|
-- Todos usan IF NOT EXISTS para ser idempotentes.
|
|
|
|
-- 1. Cédula del profesional firmante (antes solo existía para enfermeros
|
|
-- vía lab_enfermeras; bacteriólogos y recepcionistas no tenían dónde).
|
|
ALTER TABLE admin_users
|
|
ADD COLUMN IF NOT EXISTS cedula VARCHAR(30) NULL AFTER cargo;
|
|
|
|
-- Poblar desde el username cuando es numérico (así estaban registrados
|
|
-- bacteriólogos, recepcionistas y superadmin).
|
|
UPDATE admin_users SET cedula = username
|
|
WHERE cedula IS NULL AND username REGEXP '^[0-9]{5,15}$' AND is_active = 1;
|
|
|
|
-- 2. Quién generó cada consentimiento del turnero. Sin esto el pie
|
|
-- "Enviado por" mostraba al usuario que estuviera viendo el documento.
|
|
ALTER TABLE turnero_consentimientos
|
|
ADD COLUMN IF NOT EXISTS creado_por INT NULL AFTER estado;
|
|
|
|
-- 3. En qué turno se recibió una muestra que quedó pendiente de otra visita.
|
|
-- El turno original no se modifica; esto solo permite vincularlos.
|
|
ALTER TABLE turnero_muestras
|
|
ADD COLUMN IF NOT EXISTS recibida_en_turno_id INT UNSIGNED NULL AFTER recibida_at;
|
|
|
|
-- 4. Playlist de la Pantalla TV (reemplaza la clave única turnero_tv_video
|
|
-- de lab_config por una lista ordenable de videos e imágenes).
|
|
CREATE TABLE IF NOT EXISTS turnero_tv_media (
|
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
tipo ENUM('video','imagen') NOT NULL,
|
|
url VARCHAR(500) NOT NULL,
|
|
orden INT NOT NULL DEFAULT 0,
|
|
duracion_segundos INT NOT NULL DEFAULT 8,
|
|
activo TINYINT(1) NOT NULL DEFAULT 1,
|
|
creado_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (id),
|
|
KEY idx_orden (activo, orden)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- Migrar el video único que existía en lab_config como primer ítem.
|
|
INSERT INTO turnero_tv_media (tipo, url, orden, duracion_segundos, activo)
|
|
SELECT 'video', valor, 0, 8, 1 FROM lab_config
|
|
WHERE clave = 'turnero_tv_video' AND valor <> ''
|
|
AND NOT EXISTS (SELECT 1 FROM turnero_tv_media);
|