"use client"; import { useEffect, useState } from "react"; import DoctorLayout from "@/components/doctor-layout"; import Link from "next/link"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Eye, Edit, Calendar } from "lucide-react"; interface Paciente { id: string; nome: string; telefone: string; cidade: string; estado: string; ultimoAtendimento?: string; proximoAtendimento?: string; } export default function PacientesPage() { const [pacientes, setPacientes] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { async function fetchPacientes() { try { setLoading(true); setError(null); const res = await fetch("https://mock.apidog.com/m1/1053378-0-default/rest/v1/patients"); if (!res.ok) throw new Error(`HTTP ${res.status}`); const json = await res.json(); // A API pode retornar o array diretamente ou dentro de uma propriedade 'data' const items = Array.isArray(json) ? json : (Array.isArray(json?.data) ? json.data : []); const mapped = items.map((p: any) => ({ id: String(p.id ?? ""), nome: p.nome ?? "", telefone: p?.contato?.celular ?? p?.contato?.telefone1 ?? p?.telefone ?? "", cidade: p?.endereco?.cidade ?? p?.cidade ?? "", estado: p?.endereco?.estado ?? p?.estado ?? "", ultimoAtendimento: p.ultimo_atendimento ?? p.ultimoAtendimento ?? "", proximoAtendimento: p.proximo_atendimento ?? p.proximoAtendimento ?? "", })); setPacientes(mapped); } catch (e: any) { setError(e?.message || "Erro ao carregar pacientes"); } finally { setLoading(false); } } fetchPacientes(); }, []); return (

Pacientes

Lista de pacientes vinculados

{loading ? ( ) : error ? ( ) : pacientes.length === 0 ? ( ) : ( pacientes.map((p) => ( )) )}
Nome Telefone Cidade Estado Último atendimento Próximo atendimento Ações
Carregando pacientes...
{`Erro: ${error}`}
Nenhum paciente encontrado
{p.nome} {p.telefone} {p.cidade} {p.estado} {p.ultimoAtendimento} {p.proximoAtendimento} alert(`Detalhes para paciente ID: ${p.id}`)}> Ver detalhes Laudos alert(`Agenda para paciente ID: ${p.id}`)}> Ver agenda
); }