From c00faa2b06923ab1ac238803758fc1f6af49aa71 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Tue, 11 Aug 2026 09:55:54 -0500 Subject: [PATCH] Corregir la ficha del paciente desde el propio formulario MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El acceso quedaba solo en la tarjeta del paciente de la estación: al ver un dato mal mientras se llenaba el formulario había que cerrarlo, buscar el botón y volver a abrirlo. Ahora los datos del paciente dentro del formulario llevan un lápiz que abre el mismo modal, ya en modo edición, sin cerrar lo que se está llenando. El formulario va embebido, así que no puede abrir el modal por su cuenta: le avisa al contenedor por el mismo mecanismo que ya usa para informar una firma. El modal queda por encima del formulario (z-index 9500 contra 9000). De paso se corrige un error del commit anterior: el refresco tras guardar buscaba el iframe con un selector equivocado —el modal es modal-consentimiento, no modal-consent—, así que el formulario nunca tomaba el dato corregido sin recargar a mano. Ahora se recargan los dos iframes posibles por su id real. El lápiz aparece una sola vez, en el primer campo vinculado, y no se imprime. Co-Authored-By: Claude Opus 5 --- modules/turnero/views/lugar.php | 16 ++++++++++++++-- ver_formulario_enviado.php | 16 ++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/modules/turnero/views/lugar.php b/modules/turnero/views/lugar.php index 730a4d8..b28b232 100644 --- a/modules/turnero/views/lugar.php +++ b/modules/turnero/views/lugar.php @@ -1999,6 +1999,14 @@ function _mpParentCancelCd() { } window.addEventListener('message', function(e) { + // El formulario embebido pide corregir la ficha del paciente: se abre el + // modal directamente en modo edición, sin cerrar el formulario. + if (e.data && e.data.type === 'corregirPaciente') { + if (!_pacienteActivo) return; + abrirModalPaciente(); + mpacEditar(true); + return; + } if (e.data && e.data.type === 'tomaProgresivaIniciada') { _tomaProgresivaActiva = true; if ('Notification' in window && Notification.permission === 'default') Notification.requestPermission(); @@ -2557,8 +2565,12 @@ async function mpacGuardarFicha() { mpacEditar(false); abrirModalPaciente(); if (turnoActivo?.id) actualizarConsentimientos(turnoActivo.id); - const marco = document.querySelector('#modal-consent iframe'); - if (marco && marco.src) marco.src = marco.src; + // Recargar el formulario abierto para que sus campos vinculados + // tomen el dato corregido. Puede estar en el modal o embebido. + ['modal-consent-iframe', 'form-embebido-iframe'].forEach(function (id) { + const marco = document.getElementById(id); + if (marco && marco.src) marco.src = marco.src; + }); }, 700); } catch (_) { msg.className = 'small mb-2 text-danger'; diff --git a/ver_formulario_enviado.php b/ver_formulario_enviado.php index 96a588f..a5325a3 100644 --- a/ver_formulario_enviado.php +++ b/ver_formulario_enviado.php @@ -696,6 +696,9 @@ function _addExamWizardHtml(string $cid): string { .campo-linked { display: flex; gap: 16px; padding: 6px 0; border-bottom: 1px solid #f0f0f0; } .campo-linked-label { flex: 0 0 38%; font-size: 12px; color: #6c757d; } + .lnk-corregir { background:none; border:none; color:#94a3b8; cursor:pointer; + padding:0 4px; font-size:11px; flex-shrink:0; } + .lnk-corregir:hover { color:#1565c0; } .campo-linked-valor { flex: 1; font-size: 13px; font-weight: 600; color: #1565c0; } @@ -1023,6 +1026,7 @@ function _addExamWizardHtml(string $cid): string { $_hayDatosPerCampoSvg = !empty(array_filter(array_keys($datosCliente ?? []), fn($k) => str_ends_with($k, '_svg'))); // Rastrear si ya se renderizó la firma inline (para no duplicarla al pie) + $_lnkBtnPuesto = false; // el lápiz de corregir va una sola vez $_renderedFirmaProfesional = false; $_renderedFirmaPaciente = false; $_esquemaTieneFirmaPaciente = false; @@ -1283,6 +1287,12 @@ function _addExamWizardHtml(string $cid): string {
+ + +
+/* El formulario va embebido en la estación: no puede abrir el modal de + corrección por su cuenta, le pide al contenedor que lo haga. */ +function pedirCorregirPaciente() { + try { window.parent.postMessage({ type: 'corregirPaciente' }, '*'); } catch (e) {} +} + window._fpwPreFirma = ; window._profNombre = ; window._profDocumento = ;