Skip to content

Commit

Permalink
O3-1021: Make the offline visit type UUID configurable. (#528)
Browse files Browse the repository at this point in the history
  • Loading branch information
manuelroemer authored Feb 3, 2022
1 parent 5eaf609 commit 069d510
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@ export const esmPatientChartSchema = {
_type: Type.Array,
_default: ['162169AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'],
},
offlineVisitTypeUuid: {
_type: Type.UUID,
_description: 'The UUID of the visit type to be used for the automatically created offline visits.',
_default: 'a22733fa-3501-4020-a520-da024eeff088',
},
};

export interface ChartConfig {}
export interface ChartConfig {
offlineVisitTypeUuid: string;
}
14 changes: 9 additions & 5 deletions packages/esm-patient-chart-app/src/offline.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@ import {
subscribeConnectivity,
QueueItemDescriptor,
usePatient,
useConfig,
} from '@openmrs/esm-framework';
import { useEffect } from 'react';
import { v4 } from 'uuid';
import useSWR, { SWRResponse } from 'swr';
import useSWR from 'swr';

const visitSyncType = 'visit';
const patientRegistrationSyncType = 'patient-registration';
Expand Down Expand Up @@ -54,11 +55,14 @@ export function setupOfflineVisitsSync() {
}

export function useOfflineVisitForPatient(patientUuid?: string, location?: string) {
const { offlineVisitTypeUuid } = useConfig();

useEffect(() => {
return subscribeConnectivity(async ({ online }) => {
if (!online && patientUuid && location) {
const offlineVisit =
(await getOfflineVisitForPatient(patientUuid)) ?? (await createOfflineVisitForPatient(patientUuid, location));
(await getOfflineVisitForPatient(patientUuid)) ??
(await createOfflineVisitForPatient(patientUuid, location, offlineVisitTypeUuid));

getStartedVisit.next({
mode: VisitMode.NEWVISIT,
Expand All @@ -67,15 +71,15 @@ export function useOfflineVisitForPatient(patientUuid?: string, location?: strin
});
}
});
}, [patientUuid, location]);
}, [patientUuid, location, offlineVisitTypeUuid]);
}

async function getOfflineVisitForPatient(patientUuid: string) {
const offlineVisits = await getSynchronizationItems<OfflineVisit>(visitSyncType);
return offlineVisits.find((visit) => visit.patient === patientUuid);
}

async function createOfflineVisitForPatient(patientUuid: string, location: string) {
async function createOfflineVisitForPatient(patientUuid: string, location: string, offlineVisitTypeUuid: string) {
const patientRegistrationSyncItems = await getSynchronizationItems<any>(patientRegistrationSyncType);
const isVisitForOfflineRegisteredPatient = patientRegistrationSyncItems.some(
(item) => item.fhirPatient.id === patientUuid,
Expand All @@ -86,7 +90,7 @@ async function createOfflineVisitForPatient(patientUuid: string, location: strin
patient: patientUuid,
startDatetime: new Date(),
location,
visitType: 'a22733fa-3501-4020-a520-da024eeff088', // "Offline" visit type UUID.
visitType: offlineVisitTypeUuid,
};

const descriptor: QueueItemDescriptor = {
Expand Down

0 comments on commit 069d510

Please sign in to comment.