Capturar firmante de cada toma en el servidor; igualar render del modal en historial

guardar_toma.php (única ruta de firma de F-LAB-28 Tomas Prolongadas) nunca
registró quién firmaba: solo guardaba el SVG por campo. De los 111 registros
del formulario, 0 tienen identidad del firmante y no hay traza en ninguna
tabla de auditoría, así que no es recuperable retroactivamente. Ahora el
nombre/cédula se resuelven desde la sesión en el servidor (adminId()) y se
guardan por toma — cada toma puede firmarla un profesional distinto, y esta
es la única fuente confiable. El intento anterior dependía de que el
navegador enviara window._profNombre.

historial.php abría el modal sin compact=1&zoom=1.1, que sí usa bandeja;
por eso el mismo documento se veía en lista larga en vez de la grilla con
tarjetas de toma.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-03 14:55:37 -05:00
co-authored by Claude Opus 5
parent e480e14974
commit f6d4ee9bdd
2 changed files with 31 additions and 1 deletions
+28
View File
@@ -56,6 +56,34 @@ if ($tc['datos_respuestas']) {
}
// Guardar svg en el campo firmado
$datosInput[$campoId] = $svg;
// Identidad del firmante — resuelta en el servidor desde la sesión, no desde el
// cliente: cada toma puede firmarla un profesional distinto y esta es la única
// fuente confiable de quién la hizo.
$__uid = adminId();
if ($__uid) {
$stmtPro = $pdo->prepare(
"SELECT 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
WHERE au.id = ? LIMIT 1"
);
$stmtPro->execute([$__uid]);
$pro = $stmtPro->fetch(PDO::FETCH_ASSOC) ?: [];
$proNombre = ($pro['pro_nombre'] ?? null) ?: ($pro['full_name'] ?? null);
$proCedula = ($pro['au_cedula'] ?? null) ?: ($pro['pro_documento'] ?? null);
if ($proNombre) {
$datosInput[$campoId . '_pro_nombre'] = $proNombre;
$datosInput['_pro_nombre'] = $proNombre; // respaldo global
}
if ($proCedula) {
$datosInput[$campoId . '_pro_cedula'] = $proCedula;
$datosInput['_pro_cedula'] = $proCedula;
}
$datosInput[$campoId . '_pro_id'] = $__uid;
}
$datosMerge = array_merge($datosActuales, $datosInput);
// ── Analizar esquema: campos firma_profesional en orden ──────