diff --git a/susconecta/app/laudos-editor/page.tsx b/susconecta/app/laudos-editor/page.tsx index 380de9b..5aee36d 100644 --- a/susconecta/app/laudos-editor/page.tsx +++ b/susconecta/app/laudos-editor/page.tsx @@ -5,7 +5,7 @@ import { useRouter } from 'next/navigation'; import ProtectedRoute from '@/components/shared/ProtectedRoute'; import { useAuth } from '@/hooks/useAuth'; import { useToast } from '@/hooks/use-toast'; -import { listarPacientes } from '@/lib/api'; +import { listarPacientes, buscarMedicos } from '@/lib/api'; import { useReports } from '@/hooks/useReports'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; @@ -46,7 +46,8 @@ export default function LaudosEditorPage() { // Estados para solicitante e prazo const [solicitanteId, setSolicitanteId] = useState(user?.id || ''); - const displaySolicitante = user?.name || ''; + // Nome exibido do solicitante (preferir nome do médico vindo da API) + const [solicitanteNome, setSolicitanteNome] = useState(user?.name || ''); const [prazoDate, setPrazoDate] = useState(''); const [prazoTime, setPrazoTime] = useState(''); @@ -94,6 +95,42 @@ export default function LaudosEditorPage() { fetchPacientes(); }, [token]); + // Tentar obter o registro de médico correspondente ao usuário autenticado + useEffect(() => { + let mounted = true; + async function fetchDoctorName() { + try { + // Se já temos um nome razoável, não sobrescrever + if (solicitanteNome && solicitanteNome.trim().length > 1) return; + if (!user) return; + // Buscar médicos por email (buscarMedicos aceita termos com @ e faz a busca por email) + if (user.email && user.email.includes('@')) { + const docs = await buscarMedicos(user.email).catch(() => []); + if (!mounted) return; + if (Array.isArray(docs) && docs.length > 0) { + const d = docs[0]; + // Preferir full_name do médico quando disponível + if (d && (d.full_name || (d as any).nome)) { + setSolicitanteNome((d.full_name as string) || ((d as any).nome as string) || user.name || user.email || ''); + return; + } + } + } + + // Fallbacks: usar user.name se existir; caso contrário, email completo + setSolicitanteNome(user.name || user.email || ''); + } catch (err) { + // em caso de erro, manter o fallback + setSolicitanteNome(user?.name || user?.email || ''); + } + } + + fetchDoctorName(); + return () => { + mounted = false; + }; + }, [user]); + // Atualizar histórico useEffect(() => { if (history[historyIndex] !== content) { @@ -288,7 +325,7 @@ export default function LaudosEditorPage() { {/* Main Content */}
{/* Seleção de Paciente */} -
+
{!pacienteSelecionado ? (