diff --git a/ver_formulario_enviado.php b/ver_formulario_enviado.php index 26c6a61..5859b8b 100644 --- a/ver_formulario_enviado.php +++ b/ver_formulario_enviado.php @@ -300,8 +300,26 @@ if ($modoTurnero && $embebido && $_soloFirmaPro) { foreach ($_mpSecs as $_s) { $_mpGroups[$_s['tipo']][] = $_s; } $_mpGroupsFull = $_mpGroups; - // La configuración de tomas siempre se hace manualmente en el panel; - // no se auto-aplica config guardada para evitar defaults no deseados. + // Aplicar filtro de ciclos si el profesional ya configuró las tomas para este paciente + $__rawCfg = $datosCliente['_tomas_config'] ?? null; + if (is_array($__rawCfg)) { + $_tomasConfig = $__rawCfg; + foreach ($_mpGroups as $__gk => &$__gsecs) { + if (!isset($_tomasConfig[$__gk])) { + foreach ($__gsecs as $__s) { $_mpSkippedSepIds[$__s['sep_id']] = true; } + $__gsecs = []; + continue; + } + $__allowed = array_flip($_tomasConfig[$__gk]); + foreach ($__gsecs as $__s) { + if (!isset($__allowed[$__s['firma']])) { + $_mpSkippedSepIds[$__s['sep_id']] = true; + } + } + $__gsecs = array_values(array_filter($__gsecs, fn($s) => isset($__allowed[$s['firma']]))); + } + unset($__gsecs); + } // Construir $_mpMap desde grupos (posiblemente filtrados) foreach ($_mpGroups as $_tipo => $_secs) { @@ -1325,8 +1343,9 @@ function _mpGuardarConfig(config, examType, onOk, onErr) { .catch(function() { onErr('Error de conexión.'); }); } -function _mpShowCfgPanel(examName, groups) { +function _mpShowCfgPanel(examName, groups, isModify) { // Construir checkboxes + var savedFirmas = window._mpSavedFirmas || {}; var html = ''; var multiGrupo = Object.keys(groups).length > 1; for (var gk in groups) { @@ -1337,11 +1356,17 @@ function _mpShowCfgPanel(examName, groups) { + '
'; for (var i = 0; i < secs.length; i++) { var s = secs[i]; - html += '
' + var isSigned = !!savedFirmas[s.firma]; + var inSaved = isModify && _mpTomasConfig && _mpTomasConfig[gk] + && _mpTomasConfig[gk].indexOf(s.firma) !== -1; + var isChecked = isSigned || inSaved; + html += '
' + '' + + ' id="cfg-' + s.firma + '" value="' + s.firma + '" data-group="' + gk + '"' + + (isChecked ? ' checked' : '') + + (isSigned ? ' disabled title="Ya firmada"' : '') + '>' + '' + + (s.label || ('Toma ' + (i+1))) + (isSigned ? ' ' : '') + '' + '
'; } html += '
'; @@ -1435,7 +1460,9 @@ function _mpRenderBadges() { + '' + name + ''; if (configured) { html += '' - + tomasCount + ' toma' + (tomasCount !== 1 ? 's' : '') + ' configurada' + (tomasCount !== 1 ? 's' : '') + ''; + + tomasCount + ' toma' + (tomasCount !== 1 ? 's' : '') + ' configurada' + (tomasCount !== 1 ? 's' : '') + '' + + ''; } else { html += 'Pendiente configurar (' + totalTomas + ' tomas disponibles)' @@ -1456,13 +1483,14 @@ document.addEventListener('change', function(e) { if (_mpModoTurnero) _mpRenderBadges(); }); -// Click en botón "Configurar tiempos" del badge +// Click en botón "Configurar tiempos" o "Modificar" del badge document.addEventListener('click', function(e) { var btn = e.target.closest('.mp-exam-badge-btn'); if (!btn) return; var examName = btn.getAttribute('data-exam'); + var isModify = btn.getAttribute('data-modify') === '1'; var groups = _mpGetGroupsForExam(examName); - if (Object.keys(groups).length) _mpShowCfgPanel(examName, groups); + if (Object.keys(groups).length) _mpShowCfgPanel(examName, groups, isModify); }); // Al cargar: aplicar visibilidad y renderizar badges