obtener((int)$datos['formulario_id']); if (!$plantilla) jsonError('Formulario no encontrado', 404); // Pre-llenado: si viene paciente_id, auto-enriquecer con datos del paciente $prefilled = $datos['datos_prefilled'] ?? []; if (!empty($datos['paciente_id'])) { $pac = (new Paciente())->obtener((int)$datos['paciente_id']); if ($pac) { // Mapeo automático de campos estándar $prefilled['__paciente'] = [ 'id' => $pac['id'], 'nombre_completo' => $pac['nombre_completo'], 'numero_documento'=> $pac['numero_documento'], 'tipo_documento' => $pac['tipo_documento'], 'telefono' => $pac['telefono'], 'email' => $pac['email'] ?? '', 'fecha_nacimiento'=> $pac['fecha_nacimiento'] ?? '', 'eps' => $pac['eps'] ?? '', 'direccion' => $pac['direccion'] ?? '', 'ciudad' => $pac['ciudad'] ?? '', ]; } } $datos['datos_prefilled'] = json_encode($prefilled, JSON_UNESCAPED_UNICODE); $datos['enviado_via'] = $datos['enviado_via'] ?? 'whatsapp'; $envioId = $form->crearEnvio($datos, adminId()); // Construir URL pública $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http'; $host = $_SERVER['HTTP_HOST'] ?? 'localhost'; $base = $protocol . '://' . $host; // Subir un nivel desde /api/lab/ $basePath = rtrim(dirname(dirname(dirname($_SERVER['SCRIPT_NAME']))), '/'); // Obtener el token del envío recién creado $db = Database::getInstance(); $envio = $db->fetch('SELECT token FROM lab_form_envios WHERE id = ?', [$envioId]); $token = $envio['token']; $url = $base . $basePath . '/form_cliente.php?t=' . $token; // Mensaje de WhatsApp preformateado $nomPac = $prefilled['__paciente']['nombre_completo'] ?? 'Estimado paciente'; $nomForm = $plantilla['nombre']; $mensajeWa = "Hola $nomPac, le enviamos el formulario *\"$nomForm\"* para que lo complete y firme digitalmente.\n\n" . "👉 Accede aquí:\n$url\n\n" . "Si tiene dudas contáctenos."; $telPac = $prefilled['__paciente']['telefono'] ?? ''; $waUrl = 'https://wa.me/' . preg_replace('/\D/', '', $telPac) . '?text=' . rawurlencode($mensajeWa); jsonOk([ 'id' => $envioId, 'token' => $token, 'url' => $url, 'whatsapp_url'=> $waUrl, 'mensaje_wa' => $mensajeWa, ], 'Envío creado correctamente'); } catch (Exception $e) { jsonError($e->getMessage(), 500); }