95 lines
2.3 KiB
TypeScript

import { useState } from 'react';
export interface Appointment {
id: string;
patient: string;
time: string;
duration: number;
type: 'consulta' | 'exame' | 'retorno';
status: 'confirmed' | 'pending' | 'absent';
professional: string;
notes?: string;
}
export interface Professional {
id: string;
name: string;
specialty: string;
}
export interface WaitingPatient {
id: string;
name: string;
specialty: string;
preferredDate: string;
priority: 'high' | 'medium' | 'low';
contact: string;
}
export const useAgenda = () => {
const [appointments, setAppointments] = useState<Appointment[]>([]);
const [waitingList, setWaitingList] = useState<WaitingPatient[]>([]);
const [isModalOpen, setIsModalOpen] = useState(false);
const [selectedAppointment, setSelectedAppointment] = useState<Appointment | null>(null);
const [isWaitlistModalOpen, setIsWaitlistModalOpen] = useState(false);
const professionals: Professional[] = [
{ id: '1', name: 'Dr. Carlos Silva', specialty: 'Cardiologia' },
{ id: '2', name: 'Dra. Maria Santos', specialty: 'Dermatologia' },
{ id: '3', name: 'Dr. João Oliveira', specialty: 'Ortopedia' },
];
const handleSaveAppointment = (appointment: Appointment) => {
if (appointment.id) {
setAppointments(prev => prev.map(a => a.id === appointment.id ? appointment : a));
} else {
const newAppointment = {
...appointment,
id: Date.now().toString(),
};
setAppointments(prev => [...prev, newAppointment]);
}
};
const handleEditAppointment = (appointment: Appointment) => {
setSelectedAppointment(appointment);
setIsModalOpen(true);
};
const handleAddAppointment = () => {
setSelectedAppointment(null);
setIsModalOpen(true);
};
const handleCloseModal = () => {
setIsModalOpen(false);
setSelectedAppointment(null);
};
const handleNotifyPatient = (patientId: string) => {
console.log(`Notificando paciente ${patientId}`);
};
const handleAddToWaitlist = () => {
setIsWaitlistModalOpen(true);
};
return {
appointments,
waitingList,
professionals,
isModalOpen,
selectedAppointment,
isWaitlistModalOpen,
handleSaveAppointment,
handleEditAppointment,
handleAddAppointment,
handleCloseModal,
handleNotifyPatient,
handleAddToWaitlist,
};
};