80) jsonError('Nombre demasiado largo (máx 80 chars).'); if (!preg_match('/\S/', $examName)) jsonError('Nombre inválido.'); $db = Database::getInstance(); $row = $db->fetch("SELECT esquema FROM lab_formularios WHERE id = 15 LIMIT 1"); if (!$row) jsonError('Formulario no encontrado.', 404); $esquema = json_decode($row['esquema'], true); if (!is_array($esquema)) jsonError('Esquema inválido.', 500); $updated = false; foreach ($esquema as &$campo) { if (($campo['id'] ?? '') !== '_c8j2g16') continue; $opts = $campo['options'] ?? []; if (in_array($examName, $opts, true)) jsonError("El tipo \"$examName\" ya existe."); $opts[] = $examName; $campo['options'] = $opts; $updated = true; break; } unset($campo); if (!$updated) jsonError('Campo selector de examen no encontrado en el formulario.', 500); $db->getConnection()->prepare("UPDATE lab_formularios SET esquema = ? WHERE id = 15") ->execute([json_encode($esquema, JSON_UNESCAPED_UNICODE)]); jsonOk(['exam_name' => $examName], "Tipo \"$examName\" añadido.");