"use client"; import { useState, useEffect, useCallback } from "react"; import { Calendar, Clock, User } from "lucide-react"; import PatientLayout from "@/components/patient-layout"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Textarea } from "@/components/ui/textarea"; import { doctorsService } from "services/doctorsApi.mjs"; interface Doctor { id: string; full_name: string; specialty: string; phone_mobile: string; } const APPOINTMENTS_STORAGE_KEY = "clinic-appointments"; export default function ScheduleAppointment() { const [selectedDoctor, setSelectedDoctor] = useState(""); const [selectedDate, setSelectedDate] = useState(""); const [selectedTime, setSelectedTime] = useState(""); const [notes, setNotes] = useState(""); // novos campos const [tipoConsulta, setTipoConsulta] = useState("presencial"); const [duracao, setDuracao] = useState("30"); const [convenio, setConvenio] = useState(""); const [queixa, setQueixa] = useState(""); const [obsPaciente, setObsPaciente] = useState(""); const [obsInternas, setObsInternas] = useState(""); const [doctors, setDoctors] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const fetchDoctors = useCallback(async () => { setLoading(true); setError(null); try { const data: Doctor[] = await doctorsService.list(); console.log(data); setDoctors(data || []); } catch (e: any) { console.error("Erro ao carregar lista de médicos:", e); setError("Não foi possível carregar a lista de médicos. Verifique a conexão com a API."); setDoctors([]); } finally { setLoading(false); } }, []); useEffect(() => { fetchDoctors(); }, [fetchDoctors]); const availableTimes = ["08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30"]; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); const doctorDetails = doctors.find((d) => d.id === selectedDoctor); const patientDetails = { id: "P001", full_name: "Paciente Exemplo Único", location: "Clínica Geral", phone: "(11) 98765-4321", }; if (!patientDetails || !doctorDetails) { alert("Erro: Selecione o médico ou dados do paciente indisponíveis."); return; } const newAppointment = { id: new Date().getTime(), patientName: patientDetails.full_name, doctor: doctorDetails.full_name, specialty: doctorDetails.specialty, date: selectedDate, time: selectedTime, tipoConsulta, duracao, convenio, queixa, obsPaciente, obsInternas, notes, status: "agendada", phone: patientDetails.phone, }; const storedAppointmentsRaw = localStorage.getItem(APPOINTMENTS_STORAGE_KEY); const currentAppointments = storedAppointmentsRaw ? JSON.parse(storedAppointmentsRaw) : []; const updatedAppointments = [...currentAppointments, newAppointment]; localStorage.setItem(APPOINTMENTS_STORAGE_KEY, JSON.stringify(updatedAppointments)); alert(`Consulta com ${doctorDetails.full_name} agendada com sucesso!`); // resetar campos setSelectedDoctor(""); setSelectedDate(""); setSelectedTime(""); setNotes(""); setTipoConsulta("presencial"); setDuracao("30"); setConvenio(""); setQueixa(""); setObsPaciente(""); setObsInternas(""); }; return (

Agendar Consulta

Escolha o médico, data e horário para sua consulta

Dados da Consulta Preencha as informações para agendar sua consulta
{/* Médico */}
{/* Data e horário */}
setSelectedDate(e.target.value)} min={new Date().toISOString().split("T")[0]} />
{/* Tipo e Duração */}
setDuracao(e.target.value)} />
{/* Convênio */}
setConvenio(e.target.value)} />
{/* Queixa Principal */}