Files
whatsapp/migrations/20260704_lis_07_turnero_muestras.sql
Lizandro GuarnizoandClaude Sonnet 4.6 5fedd233f4 feat(lis): migración completa Firebird→MySQL + tracking de muestras en turnero
- Migraciones LIS 01-08: schema completo del nuevo LIS (secciones, protocolos,
  ítems de resultado, perfiles, tarifas, empresas, histórico transaccional)
- ETL Firebird→MySQL: script CLI con conversión WIN1252→UTF-8, batches de 500,
  resolución de FKs y deduplicación de pacientes
- turnero_muestras: tracking pendiente/recibida/rechazada por tipo de tubo
- lugar.php: widget de recepción de muestras (solo tipo=muestras)
- update_muestra_estado.php: API para marcar estado de muestra
- create_solicitud.php: auto-crea muestras al guardar solicitud
- get_consentimientos.php: incluye muestras[] en el response
- 6 vistas SQL: v_muestras_hoy, v_recepcion_completa, v_examen_precio, etc.
- numero_orden en encabezado del formulario firmado (D-/F- color diferenciado)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-04 21:44:22 -05:00

29 lines
1.5 KiB
SQL

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