diff --git a/modules/turnero/api/firmar_profesional_consentimiento.php b/modules/turnero/api/firmar_profesional_consentimiento.php index 9b3b2af..ffc0386 100644 --- a/modules/turnero/api/firmar_profesional_consentimiento.php +++ b/modules/turnero/api/firmar_profesional_consentimiento.php @@ -17,8 +17,11 @@ $turnoId = (int)($body['turno_id'] ?? 0); $formularioId = (int)($body['formulario_id'] ?? 0); $svg = $body['svg'] ?? ''; $soloPro = !empty($body['solo_profesional']); -$datosResp = (isset($body['datos_respuestas']) && is_array($body['datos_respuestas'])) - ? json_encode($body['datos_respuestas'], JSON_UNESCAPED_UNICODE) : null; +// Siempre mergeamos datos_respuestas (incluye _pro_nombre/_pro_cedula) +$datosResp = null; +if (isset($body['datos_respuestas']) && is_array($body['datos_respuestas']) && !empty($body['datos_respuestas'])) { + $datosResp = json_encode($body['datos_respuestas'], JSON_UNESCAPED_UNICODE); +} if (!$turnoId) jsonError('turno_id requerido.'); if (!$formularioId) jsonError('formulario_id requerido.'); @@ -52,9 +55,12 @@ if ($soloPro) { } else { $pdo->prepare( "UPDATE turnero_consentimientos - SET firma_profesional_svg = ?, firmado_profesional_at = NOW() + SET firma_profesional_svg = ?, firmado_profesional_at = NOW(), + datos_respuestas = CASE WHEN ? IS NOT NULL + THEN JSON_MERGE_PATCH(COALESCE(datos_respuestas,'{}'), ?) + ELSE datos_respuestas END WHERE turno_id = ? AND formulario_id = ?" - )->execute([$svg, $turnoId, $formularioId]); + )->execute([$svg, $datosResp, $datosResp, $turnoId, $formularioId]); } notificarSSE((int)$tc['sesion_id']); diff --git a/ver_formulario_enviado.php b/ver_formulario_enviado.php index 0ed0959..22da4d6 100644 --- a/ver_formulario_enviado.php +++ b/ver_formulario_enviado.php @@ -250,13 +250,23 @@ $autoprint = isset($_GET['autoprint']) && $_GET['autoprint'] === '1'; // Firma pre-guardada del profesional logueado (para botón de 1 clic) $firmaProfPreguardada = null; +$profNombre = null; +$profDocumento = null; if ($modoTurnero && $embebido && isUserLoggedIn()) { $uid = (int)($_SESSION['admin_user']['id'] ?? 0); if ($uid) { try { - $stmt = $db->getConnection()->prepare("SELECT firma_svg FROM admin_users WHERE id = ? LIMIT 1"); + $stmt = $db->getConnection()->prepare( + "SELECT au.firma_svg, le.nombre_completo AS pro_nombre, le.numero_documento AS pro_documento + FROM admin_users au + LEFT JOIN lab_enfermeras le ON le.id = au.enfermera_id + WHERE au.id = ? LIMIT 1" + ); $stmt->execute([$uid]); - $firmaProfPreguardada = $stmt->fetchColumn() ?: null; + $pRow = $stmt->fetch(PDO::FETCH_ASSOC) ?: []; + $firmaProfPreguardada = $pRow['firma_svg'] ?: null; + $profNombre = $pRow['pro_nombre'] ?: null; + $profDocumento = $pRow['pro_documento'] ?: null; } catch (\Throwable $_) {} } } @@ -1084,6 +1094,15 @@ function _addExamWizardHtml(string $cid): string {