Fix: ocultar todas las secciones de tomas excepto las del examen seleccionado

Lógica anterior usaba sepToExam (vacío cuando labels son genéricos "Toma · X").
Nueva lógica: reúne TODOS los sep_ids de _mpAllGroups como allTomaSeps,
luego muestra solo los del grupo que coincide con el examen seleccionado
(vía _mpGetGroupsForExam). Si el examen no tiene grupos o no hay selección,
todas las secciones de toma quedan ocultas.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-10 11:41:46 -05:00
co-authored by Claude Sonnet 4.6
parent 25ff224e5e
commit 393c226b7c
+19 -17
View File
@@ -1288,36 +1288,38 @@ function _mpGetGroupsForExam(examName) {
return result;
}
// Visibilidad de secciones de tomas según examen seleccionado
// (funciona aunque la BD no tenga condiciones, usando sep_id de _mpAllGroups)
// Visibilidad de secciones de tomas según examen seleccionado.
// Oculta TODOS los sep_ids de _mpAllGroups por defecto;
// muestra solo los del grupo cuya clave coincide con el examen.
function _mpApplyExamVisibility(selectedExam) {
// Construir mapa sep_id → exam_name
var sepToExam = {};
// 1. Todos los sep_ids que son secciones de toma
var allTomaSeps = {};
for (var gk in _mpAllGroups) {
var parts = gk.split('|').filter(Boolean);
var isExamGrp = parts.some(function(p) { return _mpExamOptions.indexOf(p) !== -1; });
if (isExamGrp) {
_mpAllGroups[gk].forEach(function(sec) {
if (sec.sep_id) sepToExam[sec.sep_id] = parts[0];
});
_mpAllGroups[gk].forEach(function(s) { if (s.sep_id) allTomaSeps[s.sep_id] = gk; });
}
if (!Object.keys(allTomaSeps).length) return;
// 2. Sep_ids del examen seleccionado
var examSeps = {};
if (selectedExam) {
var groups = _mpGetGroupsForExam(selectedExam);
for (var gk2 in groups) {
groups[gk2].forEach(function(s) { if (s.sep_id) examSeps[s.sep_id] = true; });
}
}
if (!Object.keys(sepToExam).length) return;
// Recorrer todos los elementos con data-campo-id dentro del doc-body
// 3. Recorrer DOM y aplicar visibilidad
var docBody = document.querySelector('.doc-body');
if (!docBody) return;
var inHidden = false;
docBody.querySelectorAll('[data-campo-id]').forEach(function(el) {
var cid = el.getAttribute('data-campo-id');
if (el.classList.contains('esquema-sep')) {
if (sepToExam[cid] !== undefined) {
// Separador de toma: ocultar si no hay examen o si no coincide
inHidden = (!selectedExam || sepToExam[cid] !== selectedExam);
if (allTomaSeps[cid] !== undefined) {
inHidden = !examSeps[cid]; // ocultar si no es del examen
el.style.display = inHidden ? 'none' : '';
} else {
// Separador genérico (ej: Datos del paciente) — siempre visible
inHidden = false;
inHidden = false; // separador genérico — siempre visible
el.style.display = '';
}
} else {