From 92fc293d0d41872e588e6fea3510c4d85670d783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Gustavo?= <166467972+JoaoGustavo-dev@users.noreply.github.com> Date: Sun, 12 Oct 2025 00:56:16 -0300 Subject: [PATCH] fixing-laudo-section --- susconecta/app/profissional/page.tsx | 36 +++++++++++++++++++--------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/susconecta/app/profissional/page.tsx b/susconecta/app/profissional/page.tsx index ea7d489..f296436 100644 --- a/susconecta/app/profissional/page.tsx +++ b/susconecta/app/profissional/page.tsx @@ -202,7 +202,8 @@ const ProfissionalPage = () => { endereco: (chosen as any).street || (chosen as any).endereco || prev.endereco, cidade: (chosen as any).city || (chosen as any).cidade || prev.cidade, cep: (chosen as any).cep || prev.cep, - crm: (chosen as any).crm ? `CRM ${(chosen as any).crm}` : (prev.crm || ''), + // store raw CRM (only the number) to avoid double-prefixing when rendering + crm: (chosen as any).crm ? String((chosen as any).crm).replace(/^(?:CRM\s*)+/i, '').trim() : (prev.crm || ''), especialidade: specialtyStr || prev.especialidade || '', // biografia removed: prefer to ignore observacoes/curriculo_url here // (if needed elsewhere, render directly from chosen.observacoes) @@ -1330,7 +1331,11 @@ const ProfissionalPage = () => { const [pacienteSelecionado, setPacienteSelecionado] = useState(preSelectedPatient || null); const [listaPacientes, setListaPacientes] = useState([]); // Novo: campos para solicitante e prazo - const [solicitante, setSolicitante] = useState(user?.id || ""); + // solicitanteId será enviado ao backend (sempre o id do usuário logado) + const [solicitanteId, setSolicitanteId] = useState(user?.id || ""); + // displaySolicitante é apenas para exibição (nome do usuário) e NÃO é enviado ao backend + // Prefer profileData.nome (nome do médico carregado) — cai back para user.name ou email + const displaySolicitante = ((profileData as any) && ((profileData as any).nome || (profileData as any).nome_social)) || user?.name || (user?.profile as any)?.full_name || user?.email || ''; const [prazoDate, setPrazoDate] = useState(""); const [prazoTime, setPrazoTime] = useState(""); @@ -1442,9 +1447,14 @@ const ProfissionalPage = () => { } } - // preencher solicitante/prazo quando existe laudo (edição) - const possibleName = laudo.requested_by_name ?? laudo.requester_name ?? laudo.requestedByName ?? laudo.executante_name ?? laudo.executante?.nome ?? laudo.requested_by ?? laudo.created_by_name ?? user?.id ?? ""; - setSolicitante(possibleName); + // preencher solicitanteId/prazo quando existe laudo (edição) + // preferimos manter o solicitanteId como o user id; se o laudo tiver requested_by que pareça um id, usamos ele + const possibleRequestedById = laudo.requested_by ?? laudo.created_by ?? null; + if (possibleRequestedById && typeof possibleRequestedById === 'string' && possibleRequestedById.length > 5) { + setSolicitanteId(possibleRequestedById); + } else { + setSolicitanteId(user?.id || ""); + } const dueRaw = laudo.due_at ?? laudo.prazo ?? laudo.dueDate ?? laudo.data ?? null; if (dueRaw) { @@ -1661,9 +1671,10 @@ const ProfissionalPage = () => { {/* Novos campos: Solicitante e Prazo */}
- - setSolicitante(e.target.value)} placeholder="Nome ou ID do solicitante (opcional)" /> -

Se vazio, o usuário logado será usado como solicitante.

+ + {/* Mostrar o nome do usuário logado de forma estática (não editável) */} + +
@@ -2081,8 +2092,11 @@ const ProfissionalPage = () => {
Assine no campo ao lado para visualizar aqui.
)}
-

{user?.name ? user.name : 'Squad-20'}

-

CRM 000000

+

{((profileData as any)?.nome || (profileData as any)?.nome_social) || user?.name || 'Squad-20'}

+ {(((profileData as any)?.crm) || ((user?.profile as any)?.crm)) ? ( + // Ensure we render a single 'CRM ' prefix followed by the raw number +

CRM {(((profileData as any)?.crm) || (user?.profile as any)?.crm).toString().replace(/^(?:CRM\s*)+/i, '').trim()}

+ ) : null}
)}
@@ -2125,7 +2139,7 @@ const ProfissionalPage = () => { content_html: content, content_json: {}, // status intentionally omitted — não enviar 'draft' - requested_by: solicitante || userId, + requested_by: solicitanteId || userId, due_at: composedDueAt ?? new Date().toISOString(), hide_date: !campos.mostrarData, hide_signature: !campos.mostrarAssinatura,