import { useRuntimeConfig } from '#app'; import type { QueuePatient } from '@/types/queue'; export const useQueueAPI = () => { const config = useRuntimeConfig(); const verificationApiBase = config.public.verificationApiBaseUrl || 'http://10.10.123.140:8089/api/v1'; const externalApiBase = config.public.externalApiBaseUrl; const fetchRawLoketPatients = async (loketId: string | number) => { try { const rawData: any = await $fetch(`${verificationApiBase}/loket/${loketId}`); if (rawData.metadata && rawData.metadata.code !== 200) { throw new Error(rawData.message || 'API returned error status'); } return rawData.data || []; } catch (error: any) { throw new Error(`HTTP error! status: ${error.response?.status || error.message}`); } }; const fetchRawClinicPatients = async (clinicId: string | number) => { const url = `${externalApiBase}/visit?klinik_id=${clinicId}&limit=500`; try { const rawResponse: any = await $fetch(url); return rawResponse?.data || []; } catch (error: any) { throw new Error(`HTTP error! status: ${error.response?.status || error.message}`); } }; const updateTicketStatus = async (barcode: string, statuspasien: string, statuspasien2: string, idklinikstatus: string, idklinikstatus2: string) => { return await $fetch(`${verificationApiBase}/tiket/update`, { method: 'POST', body: { barcode: barcode || "", statuspasien, statuspasien2, idklinikstatus, idklinikstatus2 } }); }; const completeTicketStatus = async (idloket: string, barcode: string, statuspasien: string, idklinikstatus: string) => { return await $fetch(`${verificationApiBase}/tiket/selesai`, { method: 'POST', body: { idloket: String(idloket || ""), barcode: barcode || "", statuspasien, idklinikstatus } }); }; return { fetchRawLoketPatients, fetchRawClinicPatients, updateTicketStatus, completeTicketStatus }; };