Bitácora: atribuir bien las firmas y registrar quién llama

Tres correcciones sobre lo reportado en E042.

1. La bitácora daba por hecho que firmado_at era del paciente, y lo anunciaba
   así en documentos que el paciente nunca firma: el F-LAB-08 solo lo firma el
   profesional y el F-LAB-28 lleva una firma por toma. Ahora mira qué firma hay
   realmente guardada; si no hay ninguna dice «completado» o «protocolo
   cerrado», según el caso.

2. Los protocolos prolongados desglosan cada toma con su hora y su firmante,
   que es el dato que interesa: en E042 se ve que el minuto 0 lo firmó Yesica y
   el minuto 150 Omaira. La firma general no distinguía eso.

3. firmar_profesional_consentimiento.php aceptaba el nombre del firmante que
   mandaba el navegador, y ese valor se carga al abrir la página: si el
   personal cambiaba de turno sin recargar, la firma final quedaba a nombre de
   quien abrió el formulario. Ahora se resuelve desde la sesión en el servidor,
   igual que ya hacía guardar_toma.php para cada toma.

Además, llamar y rellamar no dejaban rastro —el turno solo guarda la hora del
último llamado, que el rellamado sobrescribe—, así que la bitácora mostraba
«Llamado a X» sin autor. Ahora se auditan ambos.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-08-19 17:10:48 -05:00
co-authored by Claude Opus 5
parent ba35b24b30
commit b0266f4b8b
4 changed files with 119 additions and 9 deletions
+12
View File
@@ -9,6 +9,7 @@
*/
require_once __DIR__ . '/_helpers.php';
require_once __DIR__ . '/../../../classes/lab/ActividadAdmin.php';
requireMethod('POST');
requireTurnero();
@@ -48,4 +49,15 @@ $stmtT = $pdo->prepare(
$stmtT->execute([$turnoId]);
$turno = $stmtT->fetch(PDO::FETCH_ASSOC);
// El rellamado pisa llamado_recepcion_at, así que sin esto no queda rastro de
// cuántas veces se llamó al paciente ni quién lo hizo.
try {
(new ActividadAdmin())->registrar(
adminId(), 'turnero', 'rellamar', $turnoId,
['turno_id' => $turnoId, 'turno_codigo' => $turno['codigo'] ?? null]
);
} catch (\Throwable $e) {
error_log('[rellamar] auditoría: ' . $e->getMessage());
}
jsonOk(['turno' => $turno]);