Fix: visibilidad de secciones de tomas por examen seleccionado
- _mpApplyExamVisibility(): oculta/muestra secciones en el DOM usando sep_id de _mpAllGroups, sin depender de condicion en el esquema - Funciona aunque la BD no tenga condiciones restauradas aún - _restore_tomas_conditions.php: migración para restaurar condiciones en separadores usando prefijo del label vs opciones de _c8j2g16 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
da2b67589e
commit
bf0fc39fee
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
/**
|
||||
* Restaura las condiciones eliminadas por _migrate_tomas_simplify.php
|
||||
* Para cada separador cuyo label empiece con un tipo de examen conocido
|
||||
* (ej. "Curva de Glicemia · Minuto 0") → agrega condicion sobre _c8j2g16.
|
||||
* Auto-elimina al ejecutar. Acceder como admin.
|
||||
*/
|
||||
require_once __DIR__ . '/config/config.php';
|
||||
if (!isUserLoggedIn() || !in_array($_SESSION['admin_user']['role'] ?? '', ['admin','superadmin'], true)) {
|
||||
http_response_code(403); die('Acceso denegado.');
|
||||
}
|
||||
|
||||
$pdo = Database::getInstance()->getConnection();
|
||||
$row = $pdo->query("SELECT esquema FROM lab_formularios WHERE id = 15 LIMIT 1")->fetch(PDO::FETCH_ASSOC);
|
||||
if (!$row) { die('Formulario id=15 no encontrado.'); }
|
||||
|
||||
$esquema = json_decode($row['esquema'], true);
|
||||
if (!is_array($esquema)) { die('Esquema inválido.'); }
|
||||
|
||||
// Obtener opciones del selector de examen
|
||||
$examOptions = [];
|
||||
foreach ($esquema as $c) {
|
||||
if (($c['id'] ?? '') === '_c8j2g16') { $examOptions = $c['options'] ?? []; break; }
|
||||
}
|
||||
if (empty($examOptions)) { die('No se encontraron tipos de examen en _c8j2g16.'); }
|
||||
|
||||
$restaurados = 0;
|
||||
foreach ($esquema as &$campo) {
|
||||
if (($campo['tipo'] ?? '') !== 'separador') continue;
|
||||
if (isset($campo['condicion'])) continue; // ya tiene condicion
|
||||
|
||||
$label = $campo['label'] ?? '';
|
||||
$prefix = trim(explode('·', $label)[0] ?? '');
|
||||
if (!$prefix) continue;
|
||||
|
||||
// Buscar si el prefijo corresponde exactamente a un tipo de examen
|
||||
if (in_array($prefix, $examOptions, true)) {
|
||||
$campo['condicion'] = [
|
||||
'campo_id' => '_c8j2g16',
|
||||
'valores' => [$prefix],
|
||||
];
|
||||
$restaurados++;
|
||||
}
|
||||
}
|
||||
unset($campo);
|
||||
|
||||
$pdo->prepare("UPDATE lab_formularios SET esquema = ? WHERE id = 15")
|
||||
->execute([json_encode($esquema, JSON_UNESCAPED_UNICODE)]);
|
||||
|
||||
@unlink(__FILE__);
|
||||
|
||||
echo '<p style="font-family:sans-serif;padding:2rem">
|
||||
<span style="color:green;font-size:1.2rem">✅ Condiciones restauradas</span><br><br>
|
||||
<strong>' . $restaurados . ' separadores</strong> actualizados con condicion sobre _c8j2g16.<br>
|
||||
<small style="color:#666">Tipos de examen encontrados: ' . implode(', ', array_map('htmlspecialchars', $examOptions)) . '</small><br><br>
|
||||
<small style="color:#999">Este archivo fue eliminado automáticamente.</small><br><br>
|
||||
<a href="lab_formularios.php" style="color:#0d6efd">← Volver a Formularios</a>
|
||||
</p>';
|
||||
Reference in New Issue
Block a user