feat: config anidada por examen en tomas prolongadas + F-LAB-08 mejoras
- configurar_tomas.php: almacena _tomas_config como { examName: { groupKey: [fids] } }
en vez de flat, detecta y resetea formato antiguo, valida exam_type requerido
- ver_formulario_enviado.php: rendering aplana nested→flat para filtrar secciones;
JS lee _mpTomasConfig[examName][gk] en inSaved y _mpRenderBadges; auto-open
verifica per-examen; _mpActiveConfigExam evita race entre exámenes simultáneos
- get_consentimientos.php: flatten de nested o flat para calcular allowedFids
en ambos loops de tomas progresivas
- F-LAB-08 (id=16): añade 'Grupo sanguíneo' a opciones de _m5n865g;
agrega campos condicionales '¿Qué tipo de cáncer?' y 'Especifique grupo sanguíneo'
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
0ea411ce62
commit
915fa3ba5c
@@ -120,7 +120,15 @@ foreach ($consentimientos as &$c) {
|
||||
// Si hay config de tomas guardada, restringir al subconjunto seleccionado
|
||||
$tomasConfig = is_array($dr['_tomas_config'] ?? null) ? $dr['_tomas_config'] : null;
|
||||
if ($tomasConfig !== null) {
|
||||
$allowedFids = array_merge(...array_values($tomasConfig));
|
||||
$allowedFids = [];
|
||||
foreach ($tomasConfig as $__v) {
|
||||
if (!is_array($__v)) continue;
|
||||
$__inner = reset($__v);
|
||||
// nested: exam => { group => [fids] }; flat: group => [fids]
|
||||
if (is_array($__inner)) { foreach ($__v as $__fids) foreach ($__fids as $__f) $allowedFids[] = $__f; }
|
||||
else { foreach ($__v as $__f) $allowedFids[] = $__f; }
|
||||
}
|
||||
$allowedFids = array_unique($allowedFids);
|
||||
$relevantIds = array_values(array_filter($relevantIds, fn($id) => in_array($id, $allowedFids, true)));
|
||||
}
|
||||
|
||||
@@ -353,7 +361,14 @@ if ($incluirSolicitud) {
|
||||
}
|
||||
$cfg2 = is_array($dr2['_tomas_config'] ?? null) ? $dr2['_tomas_config'] : null;
|
||||
if ($cfg2 !== null) {
|
||||
$allowed2 = array_merge(...array_values($cfg2));
|
||||
$allowed2 = [];
|
||||
foreach ($cfg2 as $__v2) {
|
||||
if (!is_array($__v2)) continue;
|
||||
$__i2 = reset($__v2);
|
||||
if (is_array($__i2)) { foreach ($__v2 as $__fids2) foreach ($__fids2 as $__f2) $allowed2[] = $__f2; }
|
||||
else { foreach ($__v2 as $__f2) $allowed2[] = $__f2; }
|
||||
}
|
||||
$allowed2 = array_unique($allowed2);
|
||||
$relevantIds2 = array_values(array_filter($relevantIds2, fn($id) => in_array($id, $allowed2, true)));
|
||||
}
|
||||
$tomasTotal2 = count($relevantIds2);
|
||||
|
||||
Reference in New Issue
Block a user