From ea40cf8dae9576b6510916d41943d70e99e87795 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Tue, 16 Jun 2026 11:07:24 -0500 Subject: [PATCH] up --- modules/turnero/api/create_solicitud.php | 4 +- modules/turnero/views/recepcion.php | 59 ++++++++++++++++++++---- 2 files changed, 52 insertions(+), 11 deletions(-) diff --git a/modules/turnero/api/create_solicitud.php b/modules/turnero/api/create_solicitud.php index 55a72ce..d0d995b 100644 --- a/modules/turnero/api/create_solicitud.php +++ b/modules/turnero/api/create_solicitud.php @@ -121,8 +121,8 @@ try { // Crear o recuperar estado de cada consentimiento requerido $stmtCreateConsent = $pdo->prepare( - "INSERT IGNORE INTO turnero_consentimientos (turno_id, formulario_id, estado, creado_at) - VALUES (?, ?, 'pendiente', NOW())" + "INSERT IGNORE INTO turnero_consentimientos (turno_id, formulario_id, token, estado) + VALUES (?, ?, UUID(), 'pendiente')" ); foreach ($consentimientosRequeridos as &$c) { $stmtCreateConsent->execute([$turnoId, $c['formulario_id']]); diff --git a/modules/turnero/views/recepcion.php b/modules/turnero/views/recepcion.php index 34f2bad..bf7c1a9 100644 --- a/modules/turnero/views/recepcion.php +++ b/modules/turnero/views/recepcion.php @@ -443,6 +443,8 @@ const API_PAC = 'api/lab/get_pacientes.php'; const DESK_ID = ; // ── Arranque ────────────────────────────────────────────────── +let pollingConsentimientosId = null; + document.addEventListener('DOMContentLoaded', () => { cargarCola(); pollingColaId = setInterval(cargarCola, 3000); @@ -452,28 +454,45 @@ document.addEventListener('DOMContentLoaded', () => { .addEventListener('change', onLugarChange); // Refrescar consentimientos al volver a la pestaña (firma en otra pestaña) document.addEventListener('visibilitychange', () => { - if (!document.hidden && turnoActivo) refrescarConsentimientos(turnoActivo.id); + if (!document.hidden && turnoActivo) refrescarConsentimientosLugar(); }); }); -// ── Formularios del lugar ──────────────────────────────────── + +// ── Polling automático de consentimientos cuando hay uno abierto ── +async function refrescarConsentimientosLugar() { + if (!turnoActivo) return; + try { + const res = await fetch(`${API}get_consentimientos.php?turno_id=${turnoActivo.id}`); + const json = await res.json(); + if (json.ok && json.consentimientos) { + consentimientos = json.consentimientos; + renderConsentimientos(consentimientos); + } + } catch (_) {} +} +// ── Formularios del lugar (aparecen al seleccionar lugar) ──── async function onLugarChange() { const sec = document.getElementById('sec-consentimientos'); const lista = document.getElementById('lista-consentimientos'); const lugarId = parseInt(document.getElementById('sel-lugar').value); - if (!lugarId || !pacienteActivo) { sec.style.display = 'none'; return; } + if (!lugarId) { sec.style.display = 'none'; return; } try { const res = await fetch(`${API}get_lugar_formularios.php?lugar_id=${lugarId}`); const json = await res.json(); - if (!json.ok || !json.data?.formularios?.length) { sec.style.display = 'none'; return; } + if (!json.ok || !json.data?.formularios?.length) { + sec.style.display = 'none'; + return; + } lista.innerHTML = json.data.formularios.map(f => { const nom = escHtml(f.nombre); + const disabled = !turnoActivo ? 'disabled title="Llama el turno primero"' : ''; return `