From e639cec7f89bf508db7035390f2c980ed870d546 Mon Sep 17 00:00:00 2001 From: Jonas Francisco Date: Thu, 9 Oct 2025 22:46:15 -0300 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20corrigir=20pequenos=20problemas=20na?= =?UTF-8?q?=20se=C3=A7=C3=A3o=20de=20profissionais?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- susconecta/app/profissional/page.tsx | 124 +++++++++++++-------------- susconecta/app/resultados/page.tsx | 6 +- susconecta/package-lock.json | 15 ++++ 3 files changed, 81 insertions(+), 64 deletions(-) diff --git a/susconecta/app/profissional/page.tsx b/susconecta/app/profissional/page.tsx index a5a6e34..99eabf7 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 { buscarPacientes, listarPacientes, buscarPacientePorId, type Paciente } from "@/lib/api"; +import { listarPacientes, buscarPacientePorId, type Paciente } from "@/lib/api"; import { useReports } from "@/hooks/useReports"; -import { CreateReportData, ReportFormData } from "@/types/report-types"; +import { CreateReportData } from "@/types/report-types"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -31,23 +31,6 @@ 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" }, @@ -126,12 +109,6 @@ 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 @@ -215,12 +192,6 @@ const ProfissionalPage = () => { setPacienteSelecionado(null); }; - const handleEditarLaudo = (paciente: any) => { - setPatientForLaudo(paciente); - setIsEditingLaudoForPatient(true); - setActiveSection('laudos'); - }; - const navigateDate = (direction: 'prev' | 'next') => { const newDate = new Date(currentCalendarDate); @@ -698,32 +669,6 @@ 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(); @@ -1705,6 +1650,7 @@ const ProfissionalPage = () => { @@ -2114,13 +2060,14 @@ Nevo melanocítico benigno. Seguimento clínico recomendado. setLaudoSelecionado(laudo); setIsViewing(true); }} - className="flex items-center gap-1 hover:bg-blue-50 dark:hover:bg-accent dark:hover:text-accent-foreground" + className="flex items-center gap-1" + disabled={!laudo?.id} > - - Ver Laudo + + Visualizar @@ -2700,6 +2647,7 @@ Nevo melanocítico benigno. Seguimento clínico recomendado.
Sexo: {pacienteSelecionado.sexo}
+ {campos.cid &&

CID: {campos.cid}

} @@ -2777,6 +2725,58 @@ Nevo melanocítico benigno. Seguimento clínico recomendado. + {/* 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:

diff --git a/susconecta/app/resultados/page.tsx b/susconecta/app/resultados/page.tsx index 2933e39..96de1cc 100644 --- a/susconecta/app/resultados/page.tsx +++ b/susconecta/app/resultados/page.tsx @@ -55,9 +55,12 @@ type Medico = { opinioes: { id: number; paciente: string; data: string; nota: number; comentario: string }[] } +type MedicoBase = Omit & + Partial>; + const especialidadesHero = ['Psicólogo', 'Médico clínico geral', 'Pediatra', 'Dentista', 'Ginecologista', 'Veja mais'] -const medicosBase: Medico[] = [ +const medicosBase: MedicoBase[] = [ { id: 1, nome: 'Paula Pontes', @@ -578,7 +581,6 @@ export default function ResultadosPage() { const [especialidadeHero, setEspecialidadeHero] = useState(params.get('especialidade') || 'Psicólogo') const [convenio, setConvenio] = useState('Todos') const [bairro, setBairro] = useState('Todos') - const [modalFiltrosAberto, setModalFiltrosAberto] = useState(false) const [agendasExpandida, setAgendasExpandida] = useState>({}) const [medicoSelecionado, setMedicoSelecionado] = useState(null) const [abaDetalhe, setAbaDetalhe] = useState('experiencia') diff --git a/susconecta/package-lock.json b/susconecta/package-lock.json index a205af3..f7509f5 100644 --- a/susconecta/package-lock.json +++ b/susconecta/package-lock.json @@ -9403,6 +9403,21 @@ "funding": { "url": "https://github.com/sponsors/colinhacks" } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.16", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.16.tgz", + "integrity": "sha512-jhPl3nN0oKEshJBNDAo0etGMzv0j3q3VYorTSFqH1o3rwv1MQRdor27u1zhkgsHPNeY1jxcgyx1ZsCkDD1IHgg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } } } From f15bcf9954d471e822fb410eff0f2717677c50c8 Mon Sep 17 00:00:00 2001 From: Jonas Francisco Date: Thu, 9 Oct 2025 23:18:13 -0300 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20corrigir=20erro=20na=20parte=20de=20?= =?UTF-8?q?profissional=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) => (