diff --git a/susconecta/app/(main-routes)/dashboard/relatorios/page.tsx b/susconecta/app/(main-routes)/dashboard/relatorios/page.tsx
index 808ca1f..473cbde 100644
--- a/susconecta/app/(main-routes)/dashboard/relatorios/page.tsx
+++ b/susconecta/app/(main-routes)/dashboard/relatorios/page.tsx
@@ -1,86 +1,263 @@
+
"use client";
-
import { Button } from "@/components/ui/button";
-import { FileDown } from "lucide-react";
+import { FileDown, BarChart2, Users, DollarSign, TrendingUp, UserCheck, CalendarCheck, ThumbsUp, User, Briefcase } from "lucide-react";
import jsPDF from "jspdf";
-import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from "recharts";
+import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, LineChart, Line, PieChart, Pie, Cell } from "recharts";
+
+// Dados fictícios para demonstração
+const metricas = [
+ { label: "Atendimentos", value: 1240, icon: },
+ { label: "Absenteísmo", value: "7,2%", icon: },
+ { label: "Satisfação", value: "92%", icon: },
+ { label: "Faturamento (Mês)", value: "R$ 45.000", icon: },
+ { label: "No-show", value: "5,1%", icon: },
+];
+
+const consultasPorPeriodo = [
+ { periodo: "Jan", consultas: 210 },
+ { periodo: "Fev", consultas: 180 },
+ { periodo: "Mar", consultas: 250 },
+ { periodo: "Abr", consultas: 230 },
+ { periodo: "Mai", consultas: 270 },
+ { periodo: "Jun", consultas: 220 },
+];
+
+const faturamentoMensal = [
+ { mes: "Jan", valor: 35000 },
+ { mes: "Fev", valor: 29000 },
+ { mes: "Mar", valor: 42000 },
+ { mes: "Abr", valor: 38000 },
+ { mes: "Mai", valor: 45000 },
+ { mes: "Jun", valor: 41000 },
+];
+
+const taxaNoShow = [
+ { mes: "Jan", noShow: 6.2 },
+ { mes: "Fev", noShow: 5.8 },
+ { mes: "Mar", noShow: 4.9 },
+ { mes: "Abr", noShow: 5.5 },
+ { mes: "Mai", noShow: 5.1 },
+ { mes: "Jun", noShow: 4.7 },
+];
+
+const pacientesMaisAtendidos = [
+ { nome: "Ana Souza", consultas: 18 },
+ { nome: "Bruno Lima", consultas: 15 },
+ { nome: "Carla Menezes", consultas: 13 },
+ { nome: "Diego Alves", consultas: 12 },
+ { nome: "Fernanda Dias", consultas: 11 },
+];
+
+const medicosMaisProdutivos = [
+ { nome: "Dr. Carlos Andrade", consultas: 62 },
+ { nome: "Dra. Paula Silva", consultas: 58 },
+ { nome: "Dr. João Pedro", consultas: 54 },
+ { nome: "Dra. Marina Costa", consultas: 51 },
+];
+
+const convenios = [
+ { nome: "Unimed", valor: 18000 },
+ { nome: "Bradesco", valor: 12000 },
+ { nome: "SulAmérica", valor: 9000 },
+ { nome: "Particular", valor: 15000 },
+];
+
+const performancePorMedico = [
+ { nome: "Dr. Carlos Andrade", consultas: 62, absenteismo: 4.8 },
+ { nome: "Dra. Paula Silva", consultas: 58, absenteismo: 6.1 },
+ { nome: "Dr. João Pedro", consultas: 54, absenteismo: 7.5 },
+ { nome: "Dra. Marina Costa", consultas: 51, absenteismo: 5.2 },
+];
+
+const COLORS = ["#10b981", "#6366f1", "#f59e42", "#ef4444"];
+
+function exportPDF(title: string, content: string) {
+ const doc = new jsPDF();
+ doc.text(title, 10, 10);
+ doc.text(content, 10, 20);
+ doc.save(`${title.toLowerCase().replace(/ /g, '-')}.pdf`);
+}
export default function RelatoriosPage() {
- // Dados fictícios para o gráfico financeiro
- const financeiro = [
- { mes: "Jan", faturamento: 35000, despesas: 12000 },
- { mes: "Fev", faturamento: 29000, despesas: 15000 },
- { mes: "Mar", faturamento: 42000, despesas: 18000 },
- { mes: "Abr", faturamento: 38000, despesas: 14000 },
- { mes: "Mai", faturamento: 45000, despesas: 20000 },
- { mes: "Jun", faturamento: 41000, despesas: 17000 },
- ];
- // ============================
- // PASSO 3 - Funções de exportar
- // ============================
- const exportConsultasPDF = () => {
- const doc = new jsPDF();
- doc.text("Relatório de Consultas", 10, 10);
- doc.text("Resumo das consultas realizadas.", 10, 20);
- doc.save("relatorio-consultas.pdf");
- };
-
- const exportPacientesPDF = () => {
- const doc = new jsPDF();
- doc.text("Relatório de Pacientes", 10, 10);
- doc.text("Informações gerais dos pacientes cadastrados.", 10, 20);
- doc.save("relatorio-pacientes.pdf");
- };
-
- const exportFinanceiroPDF = () => {
- const doc = new jsPDF();
- doc.text("Relatório Financeiro", 10, 10);
- doc.text("Receitas e despesas da clínica.", 10, 20);
- doc.save("relatorio-financeiro.pdf");
- };
-
return (
-
Relatórios
+
Dashboard Executivo de Relatórios
-
- {/* Card Consultas */}
-
-
Relatório de Consultas
-
Resumo das consultas realizadas.
- {/* PASSO 4 - Botão chama a função */}
-
+ {/* Métricas principais */}
+
+ {metricas.map((m) => (
+
+ {m.icon}
+ {m.value}
+ {m.label}
+
+ ))}
+
+
+ {/* Gráficos e Relatórios */}
+
+ {/* Consultas realizadas por período */}
+
+
+
Consultas por Período
+
+
+
+
+
+
+
+
+
+
+
- {/* Card Pacientes */}
-
-
Relatório de Pacientes
-
Informações gerais dos pacientes cadastrados.
-
-
-
- {/* Card Financeiro com gráfico */}
-
-
Relatório Financeiro
-
-
+ {/* Faturamento mensal/anual */}
+
+
+
Faturamento Mensal
+
+
+
+
-
-
-
-
+
+
-
+
+
+
+
+ {/* Taxa de no-show */}
+
+
+
Taxa de No-show
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* Indicadores de satisfação */}
+
+
+
Satisfação dos Pacientes
+
+
+
+ 92%
+ Índice de satisfação geral
+
+
+
+
+
+ {/* Pacientes mais atendidos */}
+
+
+
Pacientes Mais Atendidos
+
+
+
+
+
+ | Paciente |
+ Consultas |
+
+
+
+ {pacientesMaisAtendidos.map((p) => (
+
+ | {p.nome} |
+ {p.consultas} |
+
+ ))}
+
+
+
+
+ {/* Médicos mais produtivos */}
+
+
+
Médicos Mais Produtivos
+
+
+
+
+
+ | Médico |
+ Consultas |
+
+
+
+ {medicosMaisProdutivos.map((m) => (
+
+ | {m.nome} |
+ {m.consultas} |
+
+ ))}
+
+
+
+
+
+
+ {/* Análise de convênios */}
+
+
+
Análise de Convênios
+
+
+
+
+
+ {convenios.map((entry, index) => (
+ |
+ ))}
+
+
+
+
+
+
+
+ {/* Performance por médico */}
+
+
+
Performance por Médico
+
+
+
+
+
+ | Médico |
+ Consultas |
+ Absenteísmo (%) |
+
+
+
+ {performancePorMedico.map((m) => (
+
+ | {m.nome} |
+ {m.consultas} |
+ {m.absenteismo} |
+
+ ))}
+
+
diff --git a/susconecta/app/profissional/page.tsx b/susconecta/app/profissional/page.tsx
index d81f419..7976db9 100644
--- a/susconecta/app/profissional/page.tsx
+++ b/susconecta/app/profissional/page.tsx
@@ -10,6 +10,7 @@ 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 { SimpleThemeToggle } from "@/components/simple-theme-toggle";
import {
Table,
TableBody,
@@ -3270,13 +3271,16 @@ Nevo melanocítico benigno. Seguimento clínico recomendado.
)}
-
+
+
+
+
diff --git a/susconecta/components/dashboard/header.tsx b/susconecta/components/dashboard/header.tsx
index 5e23a67..0872b66 100644
--- a/susconecta/components/dashboard/header.tsx
+++ b/susconecta/components/dashboard/header.tsx
@@ -7,6 +7,7 @@ import { Input } from "@/components/ui/input"
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"
import { useState, useEffect, useRef } from "react"
import { SidebarTrigger } from "../ui/sidebar"
+import { SimpleThemeToggle } from "@/components/simple-theme-toggle";
export function PagesHeader({ title = "", subtitle = "" }: { title?: string, subtitle?: string }) {
const { logout, user } = useAuth();
@@ -44,7 +45,12 @@ export function PagesHeader({ title = "", subtitle = "" }: { title?: string, sub
-
+
+
{/* Avatar Dropdown Simples */}