prepare("SELECT id, sesion_id, estado FROM turnero_turnos WHERE id = ? LIMIT 1"); $turno->execute([$turnoId]); $t = $turno->fetch(PDO::FETCH_ASSOC); if (!$t) jsonError('Turno no encontrado.', 404); if (!in_array($t['estado'], ['en_espera_lugar', 'en_servicio'])) jsonError('El turno no está activo.'); // Verificar que el formulario existe $form = $pdo->prepare("SELECT id, nombre FROM lab_formularios WHERE id = ? AND is_active = 1 LIMIT 1"); $form->execute([$formularioId]); if (!$form->fetch()) jsonError('Formulario no encontrado o inactivo.', 404); // Crear el consentimiento con token único $token = bin2hex(random_bytes(16)); $ins = $pdo->prepare( "INSERT INTO turnero_consentimientos (turno_id, formulario_id, token, estado, datos_respuestas) VALUES (?, ?, ?, 'enviado', '{}')" ); $ins->execute([$turnoId, $formularioId, $token]); $newId = (int)$pdo->lastInsertId(); notificarSSE((int)$t['sesion_id']); jsonOk(['id' => $newId, 'token' => $token], 'Formulario agregado.');