feat: block duplicate active turns for the same patient
Before creating a new turn, check if the patient (identified by paciente_id) already has a turn in today's session that is not finalizado/ausente/cancelado. Returns 409 with the existing turn code so the receptionist or kiosko can show a clear message. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
d0a42dba33
commit
9a3cd24454
@@ -74,6 +74,26 @@ try {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validar que el paciente no tenga un turno activo en la sesión de hoy
|
||||||
|
if ($pacienteId) {
|
||||||
|
$stmtDup = $pdo->prepare(
|
||||||
|
"SELECT codigo, estado FROM turnero_turnos
|
||||||
|
WHERE paciente_id = ? AND sesion_id = ?
|
||||||
|
AND estado NOT IN ('finalizado','ausente','cancelado')
|
||||||
|
LIMIT 1"
|
||||||
|
);
|
||||||
|
$stmtDup->execute([$pacienteId, $sesionId]);
|
||||||
|
$dupTurno = $stmtDup->fetch(PDO::FETCH_ASSOC);
|
||||||
|
if ($dupTurno) {
|
||||||
|
$pdo->rollBack();
|
||||||
|
jsonError(
|
||||||
|
"El paciente ya tiene un turno activo: {$dupTurno['codigo']} (estado: {$dupTurno['estado']}). " .
|
||||||
|
"Debe finalizar o cancelar el turno actual antes de tomar uno nuevo.",
|
||||||
|
409
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Correlativo independiente por prioridad (A-001, A-002... B-001, B-002... etc.)
|
// Correlativo independiente por prioridad (A-001, A-002... B-001, B-002... etc.)
|
||||||
$numero = siguienteNumeroPorPrioridad($sesionId, $prioridadId);
|
$numero = siguienteNumeroPorPrioridad($sesionId, $prioridadId);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user