Skip to content

Commit 083a194

Browse files
committed
(feat): Add ability to filter queue screen active tickets by queue location
1 parent 09628b0 commit 083a194

File tree

5 files changed

+38
-29
lines changed

5 files changed

+38
-29
lines changed

packages/esm-service-queues-app/src/modals/call-modal/call-queue-entry.modal.tsx

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,22 @@ const CallQueueEntryModal: React.FC<CallQueueEntryModalProps> = ({ closeModal, q
4545
mappedQueueEntry.sortWeight,
4646
).then(
4747
() => {
48-
serveQueueEntry(mappedQueueEntry.queue.name, mappedQueueEntry.visitQueueNumber, 'serving').then(
49-
({ status }) => {
50-
showSnackbar({
51-
isLowContrast: true,
52-
title: t('success', 'Success'),
53-
kind: 'success',
54-
subtitle: t('patientAttendingService', 'Patient attending service'),
55-
});
56-
closeModal();
57-
mutateQueueEntries();
58-
navigate({ to: `\${openmrsSpaBase}/patient/${mappedQueueEntry.patientUuid}/chart` });
59-
},
60-
);
48+
serveQueueEntry(
49+
mappedQueueEntry.queue.name,
50+
mappedQueueEntry.visitQueueNumber,
51+
'serving',
52+
mappedQueueEntry?.queueLocation,
53+
).then(({ status }) => {
54+
showSnackbar({
55+
isLowContrast: true,
56+
title: t('success', 'Success'),
57+
kind: 'success',
58+
subtitle: t('patientAttendingService', 'Patient attending service'),
59+
});
60+
closeModal();
61+
mutateQueueEntries();
62+
navigate({ to: `\${openmrsSpaBase}/patient/${mappedQueueEntry.patientUuid}/chart` });
63+
});
6164
},
6265
(error) => {
6366
showSnackbar({
@@ -69,18 +72,19 @@ const CallQueueEntryModal: React.FC<CallQueueEntryModalProps> = ({ closeModal, q
6972
},
7073
);
7174
}, [
72-
closeModal,
73-
defaultTransitionStatus,
74-
mutateQueueEntries,
75+
mappedQueueEntry.visitUuid,
76+
mappedQueueEntry.queueUuid,
77+
mappedQueueEntry.queueEntryUuid,
7578
mappedQueueEntry.patientUuid,
7679
mappedQueueEntry.priority?.uuid,
77-
mappedQueueEntry.queue.name,
78-
mappedQueueEntry.queueEntryUuid,
79-
mappedQueueEntry.queueUuid,
8080
mappedQueueEntry.sortWeight,
81+
mappedQueueEntry.queue.name,
8182
mappedQueueEntry.visitQueueNumber,
82-
mappedQueueEntry.visitUuid,
83+
mappedQueueEntry?.queueLocation,
84+
defaultTransitionStatus,
8385
t,
86+
closeModal,
87+
mutateQueueEntries,
8488
]);
8589

8690
const handleRequeuePatient = useCallback(() => {

packages/esm-service-queues-app/src/queue-screen/queue-screen.component.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@ import React from 'react';
22
import { DataTableSkeleton } from '@carbon/react';
33
import { useTranslation } from 'react-i18next';
44
import { useActiveTickets } from './useActiveTickets';
5+
import { useServiceQueuesStore } from '../store/store';
56
import PatientQueueHeader from '../patient-queue-header/patient-queue-header.component';
67
import styles from './queue-screen.scss';
78

89
interface QueueScreenProps {}
910

1011
const QueueScreen: React.FC<QueueScreenProps> = () => {
1112
const { t } = useTranslation();
12-
const { activeTickets, isLoading, error } = useActiveTickets();
13+
const { selectedQueueLocationUuid } = useServiceQueuesStore();
14+
15+
const { activeTickets, isLoading, error } = useActiveTickets(selectedQueueLocationUuid);
1316

1417
if (isLoading) {
1518
return <DataTableSkeleton row={5} className={styles.queueScreen} role="progressbar" />;

packages/esm-service-queues-app/src/queue-screen/useActiveTickets.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { openmrsFetch, restBaseUrl } from '@openmrs/esm-framework';
22
import useSWR from 'swr';
33

4-
export const useActiveTickets = () => {
5-
const { data, isLoading, error, mutate } = useSWR<{ data: Record<string, { status: string; ticketNumber: string }> }>(
6-
`${restBaseUrl}/queueutil/active-tickets`,
7-
openmrsFetch,
8-
{ refreshInterval: 3000 },
9-
);
4+
export const useActiveTickets = (locationUuid?: string) => {
5+
const url = locationUuid
6+
? `${restBaseUrl}/queueutil/active-tickets?locationUuid=${locationUuid}`
7+
: `${restBaseUrl}/queueutil/active-tickets`;
8+
const { data, isLoading, error, mutate } = useSWR<{
9+
data: Record<string, { status: string; ticketNumber: string; location?: string }>;
10+
}>(url, openmrsFetch, { refreshInterval: 3000 });
1011
const activeTickets =
1112
Array.from(Object.entries(data?.data ?? {}).map(([key, value]) => ({ room: key, ...value }))) ?? [];
1213
return { activeTickets, isLoading, error, mutate };

packages/esm-service-queues-app/src/queue-table/cells/queue-table-action-cell.component.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ function useActionPropsByKey() {
3636
mappedQueueEntry.queue.name,
3737
mappedQueueEntry.visitQueueNumber,
3838
'calling',
39+
mappedQueueEntry?.queueLocation,
3940
);
4041
if (callingQueueResponse.ok) {
4142
await mutateQueueEntries();

packages/esm-service-queues-app/src/service-queues.resource.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,8 @@ export function useServiceQueueEntries(service: string, locationUuid: string) {
190190
};
191191
}
192192

193-
export function serveQueueEntry(servicePointName: string, ticketNumber: string, status: string) {
193+
export function serveQueueEntry(servicePointName: string, ticketNumber: string, status: string, locationUuid?: string) {
194194
const abortController = new AbortController();
195-
196195
return openmrsFetch(`${restBaseUrl}/queueutil/assignticket`, {
197196
method: 'POST',
198197
headers: {
@@ -203,6 +202,7 @@ export function serveQueueEntry(servicePointName: string, ticketNumber: string,
203202
servicePointName,
204203
ticketNumber,
205204
status,
205+
locationUuid: locationUuid,
206206
},
207207
});
208208
}

0 commit comments

Comments
 (0)