Corregir la ficha del paciente desde el propio formulario
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 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
a6bf35cb58
commit
c00faa2b06
@@ -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';
|
||||
|
||||
@@ -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 {
|
||||
<div class="campo-linked" data-campo-id="<?= esc2($cid) ?>">
|
||||
<div class="campo-linked-label"><?= $label ?></div>
|
||||
<div class="campo-linked-valor"><?= esc2($lval) ?></div>
|
||||
<?php if ($modoTurnero && $embebido && $modoEditar && !$_lnkBtnPuesto): $_lnkBtnPuesto = true; ?>
|
||||
<button type="button" class="lnk-corregir no-print" onclick="pedirCorregirPaciente()"
|
||||
title="Corregir los datos del paciente">
|
||||
<i class="fas fa-pen"></i>
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endif; continue; endif; // linked
|
||||
if ($tipo === 'textarea'):
|
||||
@@ -2257,6 +2267,12 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
}, 350);
|
||||
});
|
||||
<?php endif; ?>
|
||||
/* 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 = <?= json_encode($firmaProfPreguardada) ?>;
|
||||
window._profNombre = <?= json_encode($profNombre) ?>;
|
||||
window._profDocumento = <?= json_encode($profDocumento) ?>;
|
||||
|
||||
Reference in New Issue
Block a user