From 7385e648b0f9a81cbc1840720740c85e83193431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Gustavo?= <166467972+JoaoGustavo-dev@users.noreply.github.com> Date: Mon, 8 Sep 2025 22:46:59 -0300 Subject: [PATCH 1/2] feat: add medical page --- susconecta/app/profissional/page.tsx | 435 +++++++++++++++++++++++++ susconecta/components/header.tsx | 44 +-- susconecta/components/hero-section.tsx | 3 +- susconecta/package-lock.json | 15 +- 4 files changed, 465 insertions(+), 32 deletions(-) create mode 100644 susconecta/app/profissional/page.tsx diff --git a/susconecta/app/profissional/page.tsx b/susconecta/app/profissional/page.tsx new file mode 100644 index 0000000..c952f19 --- /dev/null +++ b/susconecta/app/profissional/page.tsx @@ -0,0 +1,435 @@ +"use client"; + +import React, { useState } from "react"; +import Link from "next/link"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { Textarea } from "@/components/ui/textarea"; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { Avatar, AvatarImage, AvatarFallback } from "@/components/ui/avatar" +import { User, FolderOpen, X, Users, MessageSquare, ClipboardList } from "lucide-react" +import { Calendar as CalendarIcon, FileText, Settings } from "lucide-react"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; + +const pacientes = [ + { nome: "Ana Souza", cpf: "123.456.789-00", idade: 42, statusLaudo: "Finalizado" }, + { nome: "Bruno Lima", cpf: "987.654.321-00", idade: 33, statusLaudo: "Pendente" }, + { nome: "Carla Menezes", cpf: "111.222.333-44", idade: 67, statusLaudo: "Rascunho" }, +]; + +const medico = { + nome: "Dr. Carlos Andrade", + identificacao: "CRM 000000 • Cardiologia", + fotoUrl: "", +} + +const ProfissionalPage = () => { + const [pacienteSelecionado, setPacienteSelecionado] = useState(null); + + const handleSave = (event: React.MouseEvent) => { + event.preventDefault(); + console.log("Laudo salvo!"); + window.scrollTo({ top: 0, behavior: "smooth" }); + }; + + const handleSmoothScroll = (event: React.MouseEvent, targetId: string) => { + event.preventDefault(); + const element = document.getElementById(targetId); + if (element) { + element.scrollIntoView({ + behavior: 'smooth', + block: 'start' + }); + } + }; + + const handleAbrirProntuario = (paciente: any) => { + setPacienteSelecionado(paciente); + + // Preencher campos da seção Gestão de Laudos + const pacienteLaudo = document.getElementById('pacienteLaudo') as HTMLInputElement; + + if (pacienteLaudo) pacienteLaudo.value = paciente.nome; + + // Preencher campos da seção Comunicação com o Paciente + const destinatario = document.getElementById('destinatario') as HTMLInputElement; + + if (destinatario) destinatario.value = `${paciente.nome} - ${paciente.cpf}`; + + // Rolar para a seção do prontuário + const prontuarioSection = document.getElementById('prontuario-paciente'); + if (prontuarioSection) { + prontuarioSection.scrollIntoView({ behavior: 'smooth' }); + } + }; + + const handleFecharProntuario = () => { + setPacienteSelecionado(null); + }; + + return ( + +
+
+ + + + + + +
+

Conta do profissional

+

{medico.nome}

+

{medico.identificacao}

+
+
+
+ {/* Sidebar */} + + + +
+
+

Área do Profissional de Saúde

+ +
+

Bem-vindo à sua área exclusiva.

+ +
+

Calendário

+

+ Seção do calendário (integração pode ser adicionada depois). +

+
+ +
+

Gerenciamento de Pacientes

+ + + + Paciente + CPF + Idade + Status do laudo + Ações + + + + {pacientes.map((paciente) => ( + + {paciente.nome} + {paciente.cpf} + {paciente.idade} + {paciente.statusLaudo} + +
+ + + + + +

Detalhes do Paciente

+
+
+
+
+
+ ))} +
+
+
+ +
+

Prontuário do Paciente

+ {pacienteSelecionado && ( +
+
+

Dados do Paciente

+ +
+
+
+ Nome: +

{pacienteSelecionado.nome}

+
+
+ CPF: +

{pacienteSelecionado.cpf}

+
+
+ Idade: +

{pacienteSelecionado.idade} anos

+
+
+
+ )} +
+
+ +

+ 03/09/2025 +

+
+
+
+ + +
+
+ + +
+
+
+ +