fixing-laudo-section
This commit is contained in:
parent
8cb00bb499
commit
92fc293d0d
@ -202,7 +202,8 @@ const ProfissionalPage = () => {
|
|||||||
endereco: (chosen as any).street || (chosen as any).endereco || prev.endereco,
|
endereco: (chosen as any).street || (chosen as any).endereco || prev.endereco,
|
||||||
cidade: (chosen as any).city || (chosen as any).cidade || prev.cidade,
|
cidade: (chosen as any).city || (chosen as any).cidade || prev.cidade,
|
||||||
cep: (chosen as any).cep || prev.cep,
|
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 || '',
|
especialidade: specialtyStr || prev.especialidade || '',
|
||||||
// biografia removed: prefer to ignore observacoes/curriculo_url here
|
// biografia removed: prefer to ignore observacoes/curriculo_url here
|
||||||
// (if needed elsewhere, render directly from chosen.observacoes)
|
// (if needed elsewhere, render directly from chosen.observacoes)
|
||||||
@ -1330,7 +1331,11 @@ const ProfissionalPage = () => {
|
|||||||
const [pacienteSelecionado, setPacienteSelecionado] = useState<any>(preSelectedPatient || null);
|
const [pacienteSelecionado, setPacienteSelecionado] = useState<any>(preSelectedPatient || null);
|
||||||
const [listaPacientes, setListaPacientes] = useState<any[]>([]);
|
const [listaPacientes, setListaPacientes] = useState<any[]>([]);
|
||||||
// Novo: campos para solicitante e prazo
|
// Novo: campos para solicitante e prazo
|
||||||
const [solicitante, setSolicitante] = useState<string>(user?.id || "");
|
// solicitanteId será enviado ao backend (sempre o id do usuário logado)
|
||||||
|
const [solicitanteId, setSolicitanteId] = useState<string>(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<string>("");
|
const [prazoDate, setPrazoDate] = useState<string>("");
|
||||||
const [prazoTime, setPrazoTime] = useState<string>("");
|
const [prazoTime, setPrazoTime] = useState<string>("");
|
||||||
|
|
||||||
@ -1442,9 +1447,14 @@ const ProfissionalPage = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// preencher solicitante/prazo quando existe laudo (edição)
|
// preencher solicitanteId/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 ?? "";
|
// preferimos manter o solicitanteId como o user id; se o laudo tiver requested_by que pareça um id, usamos ele
|
||||||
setSolicitante(possibleName);
|
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;
|
const dueRaw = laudo.due_at ?? laudo.prazo ?? laudo.dueDate ?? laudo.data ?? null;
|
||||||
if (dueRaw) {
|
if (dueRaw) {
|
||||||
@ -1661,9 +1671,10 @@ const ProfissionalPage = () => {
|
|||||||
{/* Novos campos: Solicitante e Prazo */}
|
{/* Novos campos: Solicitante e Prazo */}
|
||||||
<div className="mt-3 grid grid-cols-1 md:grid-cols-2 gap-3">
|
<div className="mt-3 grid grid-cols-1 md:grid-cols-2 gap-3">
|
||||||
<div>
|
<div>
|
||||||
<Label htmlFor="solicitante">Solicitante (ID)</Label>
|
<Label htmlFor="solicitante">Solicitante</Label>
|
||||||
<Input id="solicitante" value={solicitante} onChange={(e) => setSolicitante(e.target.value)} placeholder="Nome ou ID do solicitante (opcional)" />
|
{/* Mostrar o nome do usuário logado de forma estática (não editável) */}
|
||||||
<p className="text-xs text-muted-foreground mt-1">Se vazio, o usuário logado será usado como solicitante.</p>
|
<Input id="solicitante" value={displaySolicitante} readOnly disabled />
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<Label htmlFor="prazoDate">Prazo do Laudo</Label>
|
<Label htmlFor="prazoDate">Prazo do Laudo</Label>
|
||||||
@ -2081,8 +2092,11 @@ const ProfissionalPage = () => {
|
|||||||
<div className="h-16 mb-2 text-xs text-muted-foreground">Assine no campo ao lado para visualizar aqui.</div>
|
<div className="h-16 mb-2 text-xs text-muted-foreground">Assine no campo ao lado para visualizar aqui.</div>
|
||||||
)}
|
)}
|
||||||
<div className="border-b border-border mb-2"></div>
|
<div className="border-b border-border mb-2"></div>
|
||||||
<p className="text-sm">{user?.name ? user.name : 'Squad-20'}</p>
|
<p className="text-sm">{((profileData as any)?.nome || (profileData as any)?.nome_social) || user?.name || 'Squad-20'}</p>
|
||||||
<p className="text-xs text-muted-foreground">CRM 000000</p>
|
{(((profileData as any)?.crm) || ((user?.profile as any)?.crm)) ? (
|
||||||
|
// Ensure we render a single 'CRM ' prefix followed by the raw number
|
||||||
|
<p className="text-xs text-muted-foreground">CRM {(((profileData as any)?.crm) || (user?.profile as any)?.crm).toString().replace(/^(?:CRM\s*)+/i, '').trim()}</p>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@ -2125,7 +2139,7 @@ const ProfissionalPage = () => {
|
|||||||
content_html: content,
|
content_html: content,
|
||||||
content_json: {},
|
content_json: {},
|
||||||
// status intentionally omitted — não enviar 'draft'
|
// status intentionally omitted — não enviar 'draft'
|
||||||
requested_by: solicitante || userId,
|
requested_by: solicitanteId || userId,
|
||||||
due_at: composedDueAt ?? new Date().toISOString(),
|
due_at: composedDueAt ?? new Date().toISOString(),
|
||||||
hide_date: !campos.mostrarData,
|
hide_date: !campos.mostrarData,
|
||||||
hide_signature: !campos.mostrarAssinatura,
|
hide_signature: !campos.mostrarAssinatura,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user