Corregir Tomas Prolongadas: filtrado de secciones, firmante por toma, detalle en historial

Tres bugs relacionados en el formulario "Control de Tomas de Muestras
Prolongadas" (F-LAB-28), detectados en el turno E017:

1. El modal de documentos del historial abría el documento sin &embed=1,
   por lo que el filtrado de tomas irrelevantes (según examen seleccionado)
   nunca se aplicaba — se mostraban las 16 secciones posibles en vez de
   solo las 2-3 que aplicaban, con textos "Pendiente de firma" de más.

2. El guardado de firma en tomas progresivas usa un endpoint distinto
   (_guardarFirmaMP → guardar_toma.php) que no pasaba por el fix de
   nombre/cédula del firmante aplicado antes solo a _guardarFirmaPro.
   Como además una toma progresiva puede pasar por varios profesionales
   en el transcurso de horas, ahora se guarda identidad por-toma
   (campoId + '_pro_nombre'/'_pro_cedula'), no solo global.

3. El historial no mostraba quién atendió cada toma. get_consentimientos.php
   ahora expone tomas_detalle (etiqueta, hora, firmante) por consentimiento
   de toma progresiva, y el panel de documentos del historial lo renderiza
   en una tabla debajo del pill del formulario.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-03 14:26:28 -05:00
co-authored by Claude Sonnet 4.6
parent ec552136bf
commit 2ba13add34
3 changed files with 43 additions and 7 deletions
+5 -2
View File
@@ -1111,8 +1111,8 @@ function _addExamWizardHtml(string $cid): string {
<img src="<?= htmlspecialchars($fSvg) ?>" alt="<?= $fLabel ?>">
</div>
<?php if ($isPro):
$_pn = $datosCliente['_pro_nombre'] ?? $profNombre ?? null;
$_pd = $datosCliente['_pro_cedula'] ?? $profDocumento ?? null;
$_pn = $datosCliente[$cid . '_pro_nombre'] ?? $datosCliente['_pro_nombre'] ?? $profNombre ?? null;
$_pd = $datosCliente[$cid . '_pro_cedula'] ?? $datosCliente['_pro_cedula'] ?? $profDocumento ?? null;
if ($_pn || $_pd): ?>
<div class="firma-pro-ident" style="font-size:13px;line-height:1.5;margin-top:4px">
<?php if ($_pn): ?><strong><?= esc2($_pn) ?></strong><br><?php endif; ?>
@@ -2354,6 +2354,9 @@ function _guardarFirmaMP(widget, svg, msgEl, entry, campoId) {
Object.assign(dr, window._mpSavedFirmas || {});
// Guardar con campoId directo (sin _svg) para que get_consentimientos lo cuente
dr[campoId] = svg;
// Identidad del firmante por toma (puede cambiar de profesional entre tomas)
if (window._profNombre) { dr[campoId + '_pro_nombre'] = window._profNombre; dr['_pro_nombre'] = window._profNombre; }
if (window._profDocumento) { dr[campoId + '_pro_cedula'] = window._profDocumento; dr['_pro_cedula'] = window._profDocumento; }
(window._mpSavedFirmas = window._mpSavedFirmas||{})[campoId] = svg;
// Fix 5: cachear hora en el momento de guardar para el resumen final
(window._mpTomaData = window._mpTomaData||{})[campoId] = {