Cargar datos de la visita anterior: los datos entraban pero no se veían

El botón sí traía las respuestas —comprobado con C028, que encuentra su visita
C014 y devuelve 12 campos—, pero los asignaba a mano con el.value y el.checked.
Eso no dispara ningún evento, y las secciones condicionales del F-LAB-08 (tipo
de dolor, tipo de cáncer, grupo sanguíneo) se despliegan escuchando 'change' e
'input'. Los datos entraban al formulario y las secciones seguían ocultas, así
que desde afuera parecía que el botón no hacía nada.

Ahora se disparan input y change en cada campo tocado, y el mensaje dice
cuántos datos se cargaron en vez de un texto fijo: si son cero, lo dice, en
lugar de afirmar que cargó.

Aparte: el botón «Corregir datos» del formulario quedó demasiado grande en el
cambio anterior. Vuelve a ser discreto —enlace subrayado de 10px— pero con
texto, que era lo que le faltaba para encontrarlo.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-19 16:41:19 -05:00
co-authored by Claude Opus 5
parent b63807c39a
commit 2162ca7d68
+24 -5
View File
@@ -698,10 +698,11 @@ function _addExamWizardHtml(string $cid): string {
.campo-linked-label { flex: 0 0 38%; font-size: 12px; color: #6c757d; }
/* Antes era solo un lápiz gris de 11px: estaba, pero nadie lo encontraba.
Lleva texto y contorno para que se lea como lo que es, un botón. */
.lnk-corregir { background:#fff; border:1px solid #bfdbfe; border-radius:6px;
color:#1565c0; cursor:pointer; padding:3px 9px; font-size:11px;
.lnk-corregir { background:none; border:none; border-radius:4px;
color:#1565c0; cursor:pointer; padding:1px 5px; font-size:10px;
font-weight:600; white-space:nowrap; flex-shrink:0;
display:inline-flex; align-items:center; gap:5px; }
display:inline-flex; align-items:center; gap:3px;
text-decoration:underline; }
.lnk-corregir:hover { background:#1565c0; border-color:#1565c0; color:#fff; }
.campo-linked-valor { flex: 1; font-size: 13px; font-weight: 600;
color: #1565c0; }
@@ -1294,7 +1295,7 @@ function _addExamWizardHtml(string $cid): string {
<?php if ($modoTurnero && $embebido && $modoEditar && !$_lnkBtnPuesto): $_lnkBtnPuesto = true; ?>
<button type="button" class="lnk-corregir no-print" onclick="pedirCorregirPaciente()"
title="Abrir la ficha del paciente para corregir sus datos">
<i class="fas fa-pen"></i>Corregir datos
<i class="fas fa-pen" style="font-size:9px"></i>Corregir
</button>
<?php endif; ?>
</div>
@@ -2306,6 +2307,8 @@ window._profDocumento = <?= json_encode($profDocumento) ?>;
return;
}
var datos = json.datos_respuestas || {};
var tocados = [], llenos = 0;
document.querySelectorAll('[name]').forEach(function(el) {
var raw = el.name, isArr = raw.slice(-2) === '[]', name = isArr ? raw.slice(0, -2) : raw;
if (!(name in datos)) return;
@@ -2318,9 +2321,25 @@ window._profDocumento = <?= json_encode($profDocumento) ?>;
} else {
el.value = val;
}
tocados.push(el);
llenos++;
});
// Asignar el valor a mano no dispara ningún evento, y las secciones
// condicionales del formulario —tipo de dolor, tipo de cáncer, grupo
// sanguíneo— se despliegan escuchando 'change' e 'input'. Sin esto los
// datos entraban pero las secciones seguían ocultas, así que parecía
// que el botón no hacía nada.
tocados.forEach(function(el) {
['input', 'change'].forEach(function(tipo) {
el.dispatchEvent(new Event(tipo, { bubbles: true }));
});
});
msg.style.display = '';
msg.textContent = 'Datos cargados de la visita ' + (json.turno_codigo || '') + '. Revise y firme.';
msg.textContent = llenos
? 'Se cargaron ' + llenos + ' dato(s) de la visita ' + (json.turno_codigo || '') + '. Revise y firme.'
: 'La visita ' + (json.turno_codigo || '') + ' no tiene datos que correspondan a este formulario.';
})
.catch(function() {
btn.disabled = false;