From ea815ff96c2667ac2ec090878a47c395df58611b Mon Sep 17 00:00:00 2001 From: pedrogomes5913 Date: Tue, 30 Sep 2025 19:22:30 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20ajustes=20no=20formul=C3=A1rio=20de=20l?= =?UTF-8?q?audo=20e=20sele=C3=A7=C3=A3o=20de=20paciente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- susconecta/app/profissional/page.tsx | 326 +++++++++++++++++---------- 1 file changed, 213 insertions(+), 113 deletions(-) diff --git a/susconecta/app/profissional/page.tsx b/susconecta/app/profissional/page.tsx index d2135fb..9452bb5 100644 --- a/susconecta/app/profissional/page.tsx +++ b/susconecta/app/profissional/page.tsx @@ -1514,24 +1514,39 @@ const ProfissionalPage = () => { ); // --- LaudoEditor COMPONENT --- function LaudoEditor() { + + const pacientes = [ + { nome: "Ana Souza", cpf: "123.456.789-00", idade: 32, sexo: "Feminino" }, + { nome: "Bruno Lima", cpf: "987.654.321-00", idade: 45, sexo: "Masculino" }, + { nome: "Carla Menezes", cpf: "111.222.333-44", idade: 28, sexo: "Feminino" }, + ]; + const [conteudo, setConteudo] = useState(""); - const [paciente, setPaciente] = useState(""); - const [cpf, setCpf] = useState(""); + const [pacienteSelecionado, setPacienteSelecionado] = useState(null); + const [cid, setCid] = useState(""); const [imagem, setImagem] = useState(null); const [assinatura, setAssinatura] = useState(null); const sigCanvasRef = useRef(null); - const [idade, setIdade] = useState(""); - const [sexo, setSexo] = useState(""); - const [cid, setCid] = useState(""); const [laudos, setLaudos] = useState([]); const [preview, setPreview] = useState(false); + + const handleSelectPaciente = (paciente: any) => { + setPacienteSelecionado(paciente); + }; + + const limparPaciente = () => setPacienteSelecionado(null); + const salvarLaudo = (status: string) => { + if (!pacienteSelecionado) { + alert('Selecione um paciente.'); + return; + } const novoLaudo = { - paciente, - cpf, - idade, - sexo, + paciente: pacienteSelecionado.nome, + cpf: pacienteSelecionado.cpf, + idade: pacienteSelecionado.idade, + sexo: pacienteSelecionado.sexo, cid, conteudo, imagem, @@ -1540,120 +1555,205 @@ function LaudoEditor() { status }; setLaudos(prev => [novoLaudo, ...prev]); - setPaciente(""); setCpf(""); setIdade(""); setSexo(""); setCid(""); setConteudo(""); setImagem(null); setAssinatura(null); + setPacienteSelecionado(null); setCid(""); setConteudo(""); setImagem(null); setAssinatura(null); if (sigCanvasRef.current) sigCanvasRef.current.clear(); }; return ( -
-
-
-

Informações do Paciente

- setPaciente(e.target.value)} className="p-3 border rounded-md focus:ring-2 focus:ring-primary/50 focus:outline-none"/> - setCpf(e.target.value)} className="p-3 border rounded-md focus:ring-2 focus:ring-primary/50 focus:outline-none"/> - setIdade(e.target.value)} className="p-3 border rounded-md focus:ring-2 focus:ring-primary/50 focus:outline-none"/> - - setCid(e.target.value)} className="p-3 border rounded-md focus:ring-2 focus:ring-primary/50 focus:outline-none"/> -
- - { - const file = e.target.files?.[0]; - if (file) { - const reader = new FileReader(); - reader.onloadend = () => setImagem(reader.result as string); - reader.readAsDataURL(file); - } else { - setImagem(null); - } - }} className="block w-full text-sm text-muted-foreground file:mr-4 file:py-2 file:px-4 file:rounded-md file:border-0 file:text-sm file:font-semibold file:bg-primary/10 file:text-primary hover:file:bg-primary/20" /> - {imagem && ( - Pré-visualização - )} -
-
- -
- setAssinatura(sigCanvasRef.current?.isEmpty() ? null : sigCanvasRef.current?.toDataURL())} - /> -
- - +
+
+
+

Laudo Médico

+ + {!pacienteSelecionado ? ( +
+
+ + + + +
+

Selecionar Paciente

+

Escolha um paciente para visualizar o prontuário completo

+
+ +
+ + + + +
- {assinatura && ( - Assinatura - )}
-
-
- - -
- -
-
-

Editor de Laudo

- {!preview ? ( - ) : ( -
-

Pré-visualização:

-
+
+
+
{pacienteSelecionado.nome}
+
CPF: {pacienteSelecionado.cpf}
+
Idade: {pacienteSelecionado.idade}
+
Sexo: {pacienteSelecionado.sexo}
+
+
)} -
-

Histórico de Laudos

- {laudos.length === 0 ? ( -

Nenhum laudo registrado.

- ) : ( - laudos.map((laudo: any, idx: number) => ( -
-
-

{laudo.paciente}

-

CPF: {laudo.cpf}

-

Idade: {laudo.idade}

-

Sexo: {laudo.sexo}

-

CID: {laudo.cid}

-

Status: {laudo.status}

-

Data: {laudo.data}

-
- {laudo.imagem && ( -
-

Imagem:

- Imagem do laudo -
- )} - {laudo.assinatura && ( -
-

Assinatura Digital:

- Assinatura digital -
- )} -
-

Conteúdo:

-
-
+ +
+
+ + setCid(e.target.value)} + placeholder="Ex: I10, E11, etc." + className="w-full p-2 border border-primary/20 rounded-md focus:ring-2 focus:ring-primary/30 focus:outline-none text-sm" + /> +
+
+ + {!preview ? ( + + ) : ( +
+

Pré-visualização:

+
- )) - )} -
+ )} +
+
+ +
+ { + const file = e.target.files?.[0]; + if (file) { + const reader = new FileReader(); + reader.onloadend = () => setImagem(reader.result as string); + reader.readAsDataURL(file); + } else { + setImagem(null); + } + }} + className="block w-full text-xs text-muted-foreground file:mr-2 file:py-1 file:px-2 file:rounded-md file:border-0 file:text-xs file:font-semibold file:bg-primary/10 file:text-primary hover:file:bg-primary/20" + /> + {imagem && ( + Pré-visualização + )} +
+
+ +
+ setAssinatura(sigCanvasRef.current?.isEmpty() ? null : sigCanvasRef.current?.toDataURL())} + /> +
+ +
+ {assinatura && ( + Assinatura + )} +
+
+
+ + + +
+
+
+ +
+

Histórico de Laudos

+ {laudos.length === 0 ? ( +

Nenhum laudo registrado.

+ ) : ( + laudos.map((laudo: any, idx: number) => ( +
+
+
+ + {laudo.paciente} +
+ CPF: {laudo.cpf} +
+
+
Idade: {laudo.idade}
+
Sexo: {laudo.sexo}
+
Status: {laudo.status}
+
CID: {laudo.cid}
+
Data: {laudo.data}
+
+ {laudo.assinatura && ( +
+

Assinatura Digital:

+ Assinatura digital +
+ )} + {laudo.imagem && ( +
+

Imagem:

+ Imagem do laudo +
+ )} +
+

Conteúdo:

+
+
+
+ )) + )}