diff --git a/modules/turnero/api/create_turno.php b/modules/turnero/api/create_turno.php index 1d2fb7d..5534892 100644 --- a/modules/turnero/api/create_turno.php +++ b/modules/turnero/api/create_turno.php @@ -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.) $numero = siguienteNumeroPorPrioridad($sesionId, $prioridadId);