import { useState, useEffect } from "react";
import createEkaInstance from "@eka-care/eka-care-core";
export default function AppointmentsApp() {
const [ekaInstance, setEkaInstance] = useState(null);
const [slots, setSlots] = useState(null);
const [appointment, setAppointment] = useState(null);
const [appointmentDetails, setAppointmentDetails] = useState(null);
useEffect(() => {
initializeSDK();
}, []);
const initializeSDK = async () => {
const authRes = await fetch(
"https://your-backend.vercel.app/api/manage-auth",
{
method: "POST",
headers: { "Content-Type": "application/json" },
}
);
const authData = await authRes.json();
const ekaInstanceResult = createEkaInstance({
source: "FE",
auth_token: authData.data.access_token,
backendAuthEndpointURL: "https://your-backend.vercel.app/api/manage-auth",
});
setEkaInstance(ekaInstanceResult);
};
// Get available slots for a doctor
const getAvailableSlots = async () => {
const availableSlots = await ekaInstance.appointments.getSlotsForDoctor({
doctor_id: "doc123",
clinic_id: "clinic456",
start_date: "2025-06-01",
end_date: "2025-06-01",
});
setSlots(availableSlots);
};
// Book an appointment
const bookAppointment = async () => {
const newAppointment =
await ekaInstance.appointments.bookAppointmentSlotForDoctor({
isBusinessOrDoctorAssosiatedWithEka: true,
clinic_id: "clinic456",
doctor_id: "doc123",
patient_id: "patient789",
appointment_details: {
start_time: 1748607760,
mode: "INCLINIC",
},
patient_details: {
dob: "2004-08-01",
first_name: "John",
gender: "M",
},
});
setAppointment(newAppointment);
};
// Get appointments by date
const getAppointmentsByDate = async () => {
const appointments =
await ekaInstance.appointments.getAllAppointmentsByDate("25-01-06");
};
// Get appointment details by ID
const getAppointmentDetails = async () => {
const details = await ekaInstance.appointments.getAppointmentDetailsById({
appointment_id: "apt123",
});
setAppointmentDetails(details);
};
// Update appointment time
const updateAppointmentTime = async () => {
const updatedTime = await ekaInstance.appointments.updateAppointmentTime({
appointment_id: appointment.appointment_id,
start_time: Date.now(),
});
};
// Manage appointment status
const parkAppointment = async () => {
await ekaInstance.appointments.parkAppointment({
appointment_id: "apt123",
});
};
const completeAppointment = async () => {
await ekaInstance.appointments.completeAppointment({
appointment_id: "apt123",
});
};
const cancelAppointment = async () => {
await ekaInstance.appointments.cancelAppointment({
appointment_id: "apt123",
});
};
return (
<div className="container mx-auto p-8">
<div>...</div>
</div>
);
}