From f15bcf9954d471e822fb410eff0f2717677c50c8 Mon Sep 17 00:00:00 2001 From: Jonas Francisco Date: Thu, 9 Oct 2025 23:18:13 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20corrigir=20erro=20na=20parte=20de=20prof?= =?UTF-8?q?issional=20de=20sa=C3=BAde?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- susconecta/app/profissional/page.tsx | 174 ++++++------- susconecta/next-env.d.ts | 3 +- susconecta/package-lock.json | 363 ++++++++++++++++++++++----- susconecta/package.json | 5 +- 4 files changed, 397 insertions(+), 148 deletions(-) diff --git a/susconecta/app/profissional/page.tsx b/susconecta/app/profissional/page.tsx index 99eabf7..fc63d03 100644 --- a/susconecta/app/profissional/page.tsx +++ b/susconecta/app/profissional/page.tsx @@ -5,9 +5,9 @@ import SignatureCanvas from "react-signature-canvas"; import Link from "next/link"; import ProtectedRoute from "@/components/ProtectedRoute"; import { useAuth } from "@/hooks/useAuth"; -import { listarPacientes, buscarPacientePorId, type Paciente } from "@/lib/api"; +import { buscarPacientes, listarPacientes, buscarPacientePorId, type Paciente } from "@/lib/api"; import { useReports } from "@/hooks/useReports"; -import { CreateReportData } from "@/types/report-types"; +import { CreateReportData, ReportFormData } from "@/types/report-types"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -31,6 +31,23 @@ import { import { Avatar, AvatarImage, AvatarFallback } from "@/components/ui/avatar" import { User, FolderOpen, X, Users, MessageSquare, ClipboardList, Plus, Edit, Trash2, ChevronLeft, ChevronRight, Clock, FileCheck, Upload, Download, Eye, History, Stethoscope, Pill, Activity, Search } from "lucide-react" import { Calendar as CalendarIcon, FileText, Settings } from "lucide-react"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; + + +import dynamic from "next/dynamic"; +import dayGridPlugin from "@fullcalendar/daygrid"; +import timeGridPlugin from "@fullcalendar/timegrid"; +import interactionPlugin from "@fullcalendar/interaction"; +import ptBrLocale from "@fullcalendar/core/locales/pt-br"; + +const FullCalendar = dynamic(() => import("@fullcalendar/react"), { + ssr: false, +}); const pacientes = [ { nome: "Ana Souza", cpf: "123.456.789-00", idade: 42, statusLaudo: "Finalizado" }, @@ -109,6 +126,12 @@ const ProfissionalPage = () => { // Estados para funcionalidades do prontuário const [consultasRegistradas, setConsultasRegistradas] = useState([]); + const [historicoMedico, setHistoricoMedico] = useState([]); + const [prescricoesMedicas, setPrescricoesMedicas] = useState([]); + const [examesSolicitados, setExamesSolicitados] = useState([]); + const [diagnosticos, setDiagnosticos] = useState([]); + const [evolucaoQuadro, setEvolucaoQuadro] = useState([]); + const [anexos, setAnexos] = useState([]); const [abaProntuarioAtiva, setAbaProntuarioAtiva] = useState('nova-consulta'); // Estados para campos principais da consulta @@ -192,6 +215,12 @@ const ProfissionalPage = () => { setPacienteSelecionado(null); }; + const handleEditarLaudo = (paciente: any) => { + setPatientForLaudo(paciente); + setIsEditingLaudoForPatient(true); + setActiveSection('laudos'); + }; + const navigateDate = (direction: 'prev' | 'next') => { const newDate = new Date(currentCalendarDate); @@ -669,6 +698,32 @@ const ProfissionalPage = () => { }; + const renderEventContent = (eventInfo: any) => { + const bg = eventInfo.event.backgroundColor || eventInfo.event.extendedProps?.color || "#4dabf7"; + + return ( +
+ {eventInfo.event.title} + + {eventInfo.event.extendedProps.type} + + {eventInfo.event.extendedProps.time} +
+ ); + }; + + const renderCalendarioSection = () => { const todayEvents = getTodayEvents(); @@ -1529,10 +1584,12 @@ const ProfissionalPage = () => {
@@ -1650,7 +1707,6 @@ const ProfissionalPage = () => { @@ -1669,12 +1725,12 @@ const ProfissionalPage = () => {
- -
@@ -1691,12 +1747,12 @@ const ProfissionalPage = () => {
- -
@@ -1751,7 +1807,6 @@ const ProfissionalPage = () => { ); - const renderLaudosSection = () => (
@@ -2060,23 +2115,25 @@ Nevo melanocítico benigno. Seguimento clínico recomendado. setLaudoSelecionado(laudo); setIsViewing(true); }} - className="flex items-center gap-1" - disabled={!laudo?.id} + className="flex items-center gap-1 hover:bg-blue-50 dark:hover:bg-accent dark:hover:text-accent-foreground" > - - Visualizar + + Ver Laudo
@@ -2139,7 +2196,12 @@ Nevo melanocítico benigno. Seguimento clínico recomendado.
{/* Header do Laudo */}
-

LAUDO MÉDICO - {laudo.especialidade.toUpperCase()}

+

+ LAUDO MÉDICO {laudo.especialidade ? `- ${laudo.especialidade.toUpperCase()}` : ''} +

+ {laudo.exame && ( +

{laudo.exame}

+ )}

Data: {laudo.data}

@@ -2718,68 +2780,6 @@ Nevo melanocítico benigno. Seguimento clínico recomendado. {/* Desfazer/Refazer */} - - {/* Negrito, itálico, sublinhado */} - - - -
- - {/* Templates */} -
-

Frases rápidas:

- defaultValue={14} - onBlur={e => formatText('font-size', e.target.value)} - className="w-14 border rounded px-1 py-0.5 text-xs mr-2" - title="Tamanho da fonte" - /> - {/* Família da fonte */} - - - {/* Cor da fonte */} - - formatText('font-color', e.target.value)} - className="w-6 h-6 border rounded mr-2" - title="Cor da fonte" - /> - {/* Alinhamento */} - - - - - {/* Listas */} - - - {/* Recuo */} - - - {/* Desfazer/Refazer */} - - - {/* Negrito, itálico, sublinhado */} - - - -
- - {/* Templates */} -
-

Frases rápidas:

{templates.map((template, idx) => (