prepare( "SELECT id, nombre FROM turnero_lugares WHERE id = ? AND tipo = 'recepcion' AND activo = 1" ); $stmtDesk->execute([$deskId]); $desk = $stmtDesk->fetch(PDO::FETCH_ASSOC); if (!$desk) jsonError('Escritorio no encontrado.', 404); $_ses = sesionHoy(); $sesionCerrada = (!$_ses || $_ses['fin_at'] !== null); if ($sesionCerrada) { jsonOk([ 'sesion_cerrada' => true, 'desk_id' => (int)$desk['id'], 'desk_nombre'=> $desk['nombre'], 'turno' => null, 'stats' => ['en_espera' => 0, 'en_atencion' => 0, 'finalizados' => 0], 'timestamp' => date('c'), ]); exit; } $sesionId = (int)$_ses['id']; // Turno activo en este escritorio (el más reciente llamado_recepcion_at) $stmtT = $pdo->prepare( "SELECT t.id, t.codigo, t.numero, t.estado, t.paciente_nombre, t.llamado_recepcion_at AS llamado_at, p.codigo AS prioridad_codigo, p.nombre AS prioridad_nombre, p.color AS prioridad_color FROM turnero_turnos t JOIN turnero_prioridades p ON p.id = t.prioridad_id WHERE t.sesion_id = ? AND t.estado = 'en_recepcion' AND t.recepcion_desk_id = ? ORDER BY t.llamado_recepcion_at DESC LIMIT 1" ); $stmtT->execute([$sesionId, $deskId]); $turno = $stmtT->fetch(PDO::FETCH_ASSOC) ?: null; // Stats básicos para el footer $stmtStats = $pdo->prepare( "SELECT SUM(estado = 'espera') AS en_espera, SUM(estado IN ('en_recepcion','en_espera_lugar','en_servicio')) AS en_atencion, SUM(estado = 'finalizado') AS finalizados FROM turnero_turnos WHERE sesion_id = ?" ); $stmtStats->execute([$sesionId]); $stats = $stmtStats->fetch(PDO::FETCH_ASSOC); jsonOk([ 'desk_id' => (int)$desk['id'], 'desk_nombre'=> $desk['nombre'], 'turno' => $turno, 'stats' => $stats, 'timestamp' => date('c'), ]);