Historial y bandeja: mostrar qué pasó con cada turno
Para saber quién retiró un formulario de un turno había que consultar la base a mano. La información existía, pero repartida en cinco tablas y sin ninguna pantalla que la juntara. get_traza_turno.php arma una sola línea de tiempo con el recorrido del turno (con quién atendió en cada punto), los documentos enviados y firmados, los comentarios del personal —donde caen las ausencias con su motivo—, las muestras recibidas y rechazadas, y las acciones administrativas auditadas. Se muestra en el detalle desplegable de Historial y en el panel de Bandeja. Del chat de WhatsApp solo se indica cuántos mensajes hubo ese día, con enlace a la conversación. Volcar los mensajes sería esparcir datos personales del paciente por una pantalla de consulta. Y la parte que faltaba: cinco acciones no dejaban ningún rastro. Ahora se auditan cambiar_estado, resetear_consentimiento, resetear_toma, vincular_paciente y cancelar_toma_pendiente — las que borran una firma, descartan datos de un protocolo o mandan la atención a otra historia clínica. La auditoría va en try/catch: si falla, no tumba la operación. La respuesta declara en `sinRastro` lo que el sistema todavía no registra, para que la ausencia de un evento no se lea como prueba de que no ocurrió. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
d4674f087d
commit
487673dc0f
@@ -22,6 +22,7 @@
|
||||
*/
|
||||
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
require_once __DIR__ . '/../../../classes/lab/ActividadAdmin.php';
|
||||
requireMethod('POST');
|
||||
requireTurnero();
|
||||
|
||||
@@ -233,6 +234,27 @@ try {
|
||||
|
||||
notificarSSE((int) $turnoActualizado['sesion_id']);
|
||||
|
||||
// Queda constancia de quién cambió el estado a mano. Sin esto, en el
|
||||
// historial aparecía un turno cancelado o ausente sin ninguna huella
|
||||
// de quién lo hizo ni desde qué estado.
|
||||
try {
|
||||
(new ActividadAdmin())->registrar(
|
||||
adminId(),
|
||||
'turnero',
|
||||
'cambiar_estado',
|
||||
$turnoId,
|
||||
[
|
||||
'turno_id' => $turnoId,
|
||||
'turno_codigo' => $turnoActualizado['codigo'] ?? null,
|
||||
'estado_previo' => $estadoActual,
|
||||
'estado_nuevo' => $nuevoEstado,
|
||||
]
|
||||
);
|
||||
} catch (\Throwable $e) {
|
||||
// La auditoría nunca debe tumbar la operación
|
||||
error_log('[cambiar_estado] auditoría: ' . $e->getMessage());
|
||||
}
|
||||
|
||||
jsonOk(['turno' => $turnoActualizado], "Estado actualizado a '{$nuevoEstado}'");
|
||||
|
||||
} catch (\Throwable $e) {
|
||||
|
||||
Reference in New Issue
Block a user