import dayjs from 'dayjs'; import useSWR from 'swr'; import { openmrsFetch, restBaseUrl, type Visit } from '@openmrs/esm-framework'; export function usePastVisits(patientUuid: string) { const customRepresentation = 'custom:(uuid,encounters:(uuid,form:(uuid,display),encounterDatetime,' + 'orders:full,' + 'obs:(uuid,concept:(uuid,display,conceptClass:(uuid,display)),' + 'display,groupMembers:(uuid,concept:(uuid,display),' + 'value:(uuid,display)),value),encounterType:(uuid,display),' + 'encounterProviders:(uuid,display,encounterRole:(uuid,display),' + 'provider:(uuid,person:(uuid,display)))),visitType:(uuid,name,display),startDatetime,stopDatetime,patient'; const apiUrl = `${restBaseUrl}/visit?patient=${patientUuid}&v=${customRepresentation}`; const { data, error, isLoading, isValidating } = useSWR<{ data: { results: Array } }, Error>( patientUuid ? apiUrl : null, openmrsFetch, ); const previousVisit = data?.data?.results ?.filter((result) => dayjs(result.startDatetime).isBefore(dayjs().startOf('day'))) ?.shift(); return { visits: data ? previousVisit : null, error, isLoading, isValidating, }; } export interface Observation { uuid: string; concept: { uuid: string; display: string; conceptClass: { uuid: string; display: string; }; }; display: string; groupMembers: null | Array<{ uuid: string; concept: { uuid: string; display: string; }; value: { uuid: string; display: string; }; }>; value: any; obsDatetime: string; }