"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() 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 */}