fetch("SELECT esquema FROM lab_formularios WHERE id = 15 LIMIT 1"); if (!$row) { die('Formulario de tomas no encontrado (id=15).'); } $esquema = json_decode($row['esquema'], true) ?? []; // Leer campo selector de examen $selectorCampo = null; foreach ($esquema as $c) { if (($c['id'] ?? '') === '_c8j2g16') { $selectorCampo = $c; break; } } $examOptions = $selectorCampo['options'] ?? []; // Agrupar tomas por tipo de examen (leer la misma lógica del $_mpMap) $gruposActuales = []; $curLabel = null; $curCond = null; $curSepId = null; $curMin = null; $curHoraFija = null; $curHora = null; foreach ($esquema as $c) { $tipo = $c['tipo'] ?? ''; if ($tipo === 'separador') { $curLabel = $c['label'] ?? ''; $curSepId = $c['id'] ?? null; $curCond = $c['condicion'] ?? null; $curMin = $curHoraFija = $curHora = null; if (preg_match('/[Mm]inuto\s+(\d+)/u', $curLabel, $mx)) { $curMin = (int)$mx[1]; } elseif (preg_match('/(\d{1,2}):(\d{2})\s*(a\.?m\.?|p\.?m\.?)/i', $curLabel, $mx)) { $h = (int)$mx[1]; $m2 = (int)$mx[2]; $pm = strtolower(preg_replace('/[^apm]/i', '', $mx[3])) === 'pm'; if ($pm && $h < 12) $h += 12; $curHoraFija = sprintf('%02d:%02d', $h, $m2); $curMin = PHP_INT_MAX; } } elseif ($tipo === 'hora' && ($curMin !== null || $curHoraFija !== null)) { $curHora = $c['id'] ?? null; } elseif ($tipo === 'firma_profesional' && $curHora !== null && ($curMin !== null || $curHoraFija !== null)) { // Determinar a qué examen pertenece $examKey = 'Sin condición'; if ($curCond) { $vals = $curCond['valores'] ?? []; $examKey = count($vals) === 1 ? $vals[0] : implode(' / ', $vals); } else { // Label-based: prefijo antes de "·" $examKey = trim(explode('·', $curLabel)[0]); } if (!isset($gruposActuales[$examKey])) $gruposActuales[$examKey] = []; $gruposActuales[$examKey][] = [ 'label' => $curLabel, 'sep_id' => $curSepId, 'hora_fija' => $curHoraFija, 'min' => $curMin === PHP_INT_MAX ? null : $curMin, 'firma_id' => $c['id'], ]; $curHora = null; } } Layout::open('Configurar Tomas Prolongadas', 'fas fa-vials'); ?>
Tipos de examen configurados tipos

No hay grupos de tomas configurados.

$tomas): ?>

$t): ?>
#LabelTiempoFirma ID
Fija Min
Agregar nuevo tipo de examen
Debe ser único. Aparecerá en el selector de examen del formulario.

Instrucciones
  • Defina el nombre exacto del examen (aparecerá en el checkbox del formulario).
  • Minutos: tiempo en minutos desde la primera toma (ej: 0, 30, 60).
  • Hora fija: hora exacta de toma (ej: 15:00 para 3pm).
  • No mezcle minutos y hora fija en el mismo examen.
  • Para eliminar un examen: expanda el grupo y use el botón Eliminar.