Exigir Datos Toma de Muestras en solo_muestras; nombre+cédula del firmante en todos los formatos

get_consentimientos.php ya no salta la autocreación del formulario F-LAB-08
(Datos Toma de Muestras) cuando la visita es "solo entrega de muestras" —
solo se omitían los formularios por examen, los de lugar deben seguir
exigiéndose igual.

ver_formulario_enviado.php cargaba nombre/cédula del profesional firmante
solo dentro del turnero embebido; se amplía también a la firma directa
fuera de turnero (staff logueado). firmar_profesional.php (usado por los
formatos no-turnero) no recibía esos datos del frontend y se perdían;
ahora los guarda en datos_cliente igual que el flujo turnero.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-03 12:24:58 -05:00
co-authored by Claude Sonnet 4.6
parent 86aea30f62
commit fd8b83a588
3 changed files with 18 additions and 35 deletions
+8 -4
View File
@@ -249,15 +249,18 @@ $compact = $embebido && isset($_GET['compact']);
$autoprint = isset($_GET['autoprint']) && $_GET['autoprint'] === '1';
// Firma pre-guardada del profesional logueado (para botón de 1 clic)
// Aplica tanto al turnero embebido como a la firma directa fuera del turnero
// (staff logueado viendo/firmando un formulario por ?id=), para que el
// nombre y cédula del firmante salgan en cualquier formato.
$firmaProfPreguardada = null;
$profNombre = null;
$profDocumento = null;
if ($modoTurnero && $embebido && isUserLoggedIn()) {
if ((($modoTurnero && $embebido) || (!$modoTurnero && !$modoPublico)) && isUserLoggedIn()) {
$uid = (int)($_SESSION['admin_user']['id'] ?? 0);
if ($uid) {
try {
$stmt = $db->getConnection()->prepare(
"SELECT au.firma_svg, au.full_name,
"SELECT au.firma_svg, au.full_name, au.cedula AS au_cedula,
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
@@ -267,7 +270,7 @@ if ($modoTurnero && $embebido && isUserLoggedIn()) {
$pRow = $stmt->fetch(PDO::FETCH_ASSOC) ?: [];
$firmaProfPreguardada = $pRow['firma_svg'] ?: null;
$profNombre = $pRow['pro_nombre'] ?: ($pRow['full_name'] ?: null);
$profDocumento = $pRow['pro_documento'] ?: null;
$profDocumento = $pRow['au_cedula'] ?: ($pRow['pro_documento'] ?: null);
} catch (\Throwable $_) {}
}
}
@@ -2230,7 +2233,8 @@ function _guardarFirmaPro(widget, svg, msgEl) {
? { turno_id: parseInt(turnoId), formulario_id: parseInt(formularioId), svg,
datos_respuestas: datosRespuestas,
...(soloPro ? { solo_profesional: true } : {}) }
: { envio_id: envioId, campo_id: campoId, svg };
: { envio_id: envioId, campo_id: campoId, svg,
pro_nombre: window._profNombre || null, pro_cedula: window._profDocumento || null };
fetch(saveUrl, { method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify(payload) })
.then(r => r.json())