@kenyaemr/esm-service-queues-app 8.0.1-pre.99 → 8.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/.turbo/turbo-build.log +21 -22
  2. package/dist/130.js +1 -1
  3. package/dist/130.js.LICENSE.txt +2 -0
  4. package/dist/130.js.map +1 -1
  5. package/dist/199.js +1 -1
  6. package/dist/199.js.map +1 -1
  7. package/dist/2.js +1 -0
  8. package/dist/2.js.map +1 -0
  9. package/dist/271.js +1 -1
  10. package/dist/319.js +1 -1
  11. package/dist/325.js +1 -0
  12. package/dist/325.js.map +1 -0
  13. package/dist/372.js +2 -0
  14. package/dist/372.js.map +1 -0
  15. package/dist/392.js +1 -1
  16. package/dist/460.js +1 -1
  17. package/dist/574.js +1 -1
  18. package/dist/60.js +1 -0
  19. package/dist/60.js.map +1 -0
  20. package/dist/644.js +1 -1
  21. package/dist/660.js +2 -0
  22. package/dist/{484.js.LICENSE.txt → 660.js.LICENSE.txt} +10 -0
  23. package/dist/660.js.map +1 -0
  24. package/dist/670.js +1 -1
  25. package/dist/670.js.map +1 -1
  26. package/dist/727.js +1 -1
  27. package/dist/748.js +1 -0
  28. package/dist/748.js.map +1 -0
  29. package/dist/757.js +1 -1
  30. package/dist/760.js +1 -1
  31. package/dist/760.js.map +1 -1
  32. package/dist/788.js +1 -1
  33. package/dist/807.js +1 -1
  34. package/dist/818.js +1 -1
  35. package/dist/833.js +1 -1
  36. package/dist/911.js +1 -1
  37. package/dist/kenyaemr-esm-service-queues-app.js +1 -1
  38. package/dist/kenyaemr-esm-service-queues-app.js.buildmanifest.json +171 -174
  39. package/dist/kenyaemr-esm-service-queues-app.js.map +1 -1
  40. package/dist/main.js +1 -1
  41. package/dist/main.js.map +1 -1
  42. package/dist/routes.json +1 -1
  43. package/package-lock.json +5892 -0
  44. package/package.json +2 -3
  45. package/src/active-visits/change-status-dialog.component.tsx +141 -138
  46. package/src/active-visits/change-status-dialog.test.tsx +5 -5
  47. package/src/config-schema.ts +4 -10
  48. package/src/index.ts +7 -0
  49. package/src/patient-queue-header/patient-queue-header.component.tsx +25 -38
  50. package/src/patient-queue-header/patient-queue-header.scss +3 -41
  51. package/src/patient-queue-metrics/clinic-metrics.component.tsx +4 -4
  52. package/src/patient-queue-metrics/metrics-header.component.tsx +16 -15
  53. package/src/patient-search/patient-scheduled-visits.component.tsx +43 -52
  54. package/src/patient-search/visit-form/visit-form.component.tsx +43 -50
  55. package/src/queue-screen/queue-screen.component.tsx +67 -11
  56. package/src/queue-screen/queue-screen.test.tsx +1 -1
  57. package/src/queue-screen/useActiveTickets.tsx +1 -1
  58. package/src/queue-table/cells/columns.resource.ts +2 -2
  59. package/src/queue-table/default-queue-table.component.tsx +17 -15
  60. package/src/queue-table/queue-entry-actions/transition-queue-entry.modal.tsx +7 -2
  61. package/src/queue-table/queue-table-by-status-menu.component.tsx +1 -1
  62. package/src/queue-table/queue-table-metrics.component.tsx +6 -1
  63. package/src/queue-table/queue-table.component.tsx +11 -8
  64. package/src/queue-table/queue-table.scss +5 -0
  65. package/src/remove-queue-entry-dialog/remove-queue-entry.component.tsx +16 -15
  66. package/src/remove-queue-entry-dialog/remove-queue-entry.resource.ts +20 -26
  67. package/src/routes.json +34 -27
  68. package/src/transition-latest-queue-entry/transition-latest-queue-entry.component.tsx +33 -0
  69. package/src/transition-latest-queue-entry/transition-latest-queue-entry.resource.ts +30 -0
  70. package/translations/am.json +4 -3
  71. package/translations/ar.json +5 -4
  72. package/translations/en.json +9 -6
  73. package/translations/es.json +81 -80
  74. package/translations/fr.json +255 -254
  75. package/translations/he.json +5 -4
  76. package/translations/km.json +5 -4
  77. package/translations/zh.json +5 -4
  78. package/translations/zh_CN.json +5 -4
  79. package/dist/152.js +0 -1
  80. package/dist/152.js.map +0 -1
  81. package/dist/255.js +0 -2
  82. package/dist/255.js.map +0 -1
  83. package/dist/265.js +0 -1
  84. package/dist/265.js.map +0 -1
  85. package/dist/303.js +0 -1
  86. package/dist/303.js.map +0 -1
  87. package/dist/484.js +0 -2
  88. package/dist/484.js.map +0 -1
  89. package/dist/729.js +0 -1
  90. package/dist/729.js.map +0 -1
  91. package/src/patient-queue-header/patient-queue-illustration.component.tsx +0 -22
  92. /package/dist/{255.js.LICENSE.txt → 372.js.LICENSE.txt} +0 -0
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useCallback } from 'react';
2
2
  import { useTranslation } from 'react-i18next';
3
3
  import { Button, ModalBody, ModalFooter, ModalHeader } from '@carbon/react';
4
4
  import { parseDate, showSnackbar, useVisit } from '@openmrs/esm-framework';
@@ -20,7 +20,7 @@ const RemoveQueueEntryDialog: React.FC<RemoveQueueEntryDialogProps> = ({ queueEn
20
20
 
21
21
  const { data: appointments } = useCheckedInAppointments(queueEntry.patientUuid, startOfDay);
22
22
 
23
- const removeQueueEntry = () => {
23
+ const removeQueueEntry = useCallback(() => {
24
24
  const endCurrentVisitPayload = {
25
25
  location: currentVisit?.location?.uuid,
26
26
  startDatetime: parseDate(currentVisit?.startDatetime),
@@ -37,25 +37,26 @@ const RemoveQueueEntryDialog: React.FC<RemoveQueueEntryDialogProps> = ({ queueEn
37
37
  endCurrentVisitPayload,
38
38
  queueEntry.visitUuid,
39
39
  appointments,
40
- ).then((response) => {
41
- closeModal();
42
- mutateQueueEntries();
43
- showSnackbar({
44
- isLowContrast: true,
45
- kind: 'success',
46
- subtitle: t('queueEntryRemovedSuccessfully', `Queue entry removed successfully`),
47
- title: t('queueEntryRemoved', 'Queue entry removed'),
48
- });
49
- (error) => {
40
+ )
41
+ .then(() => {
42
+ closeModal();
43
+ mutateQueueEntries();
44
+ showSnackbar({
45
+ isLowContrast: true,
46
+ kind: 'success',
47
+ subtitle: t('queueEntryRemovedSuccessfully', `Queue entry removed successfully`),
48
+ title: t('queueEntryRemoved', 'Queue entry removed'),
49
+ });
50
+ })
51
+ .catch((error) => {
50
52
  showSnackbar({
51
53
  title: t('removeQueueEntryError', 'Error removing queue entry'),
52
54
  kind: 'error',
53
55
  isLowContrast: false,
54
56
  subtitle: error?.message,
55
57
  });
56
- };
57
- });
58
- };
58
+ });
59
+ }, [appointments, currentVisit, queueEntry]);
59
60
 
60
61
  return (
61
62
  <div>
@@ -1,16 +1,14 @@
1
- import { openmrsFetch, restBaseUrl, updateVisit } from '@openmrs/esm-framework';
2
1
  import dayjs from 'dayjs';
3
- import { endPatientStatus } from '../active-visits/active-visits-table.resource';
4
- import { type AppointmentsFetchResponse, type EndVisitPayload } from '../types';
5
2
  import useSWR from 'swr';
3
+ import { openmrsFetch, restBaseUrl, updateVisit } from '@openmrs/esm-framework';
4
+ import { type AppointmentsFetchResponse, type EndVisitPayload } from '../types';
5
+ import { endPatientStatus } from '../active-visits/active-visits-table.resource';
6
6
  import { omrsDateFormat, timeZone } from '../constants';
7
- import { first } from 'rxjs/operators';
8
7
 
9
8
  const statusChangeTime = dayjs(new Date()).format(omrsDateFormat);
10
9
 
11
10
  export async function endQueueEntry(
12
11
  queueUuid: string,
13
-
14
12
  queueEntryUuid: string,
15
13
  endedAt: Date,
16
14
  endCurrentVisitPayload: EndVisitPayload,
@@ -21,31 +19,27 @@ export async function endQueueEntry(
21
19
 
22
20
  if (endCurrentVisitPayload) {
23
21
  if (appointments?.length) {
24
- appointments.forEach(async (appointment) => {
25
- await Promise.all([changeAppointmentStatus('Completed', appointment.uuid)]);
26
- });
22
+ await Promise.all(
23
+ appointments.map(async (appointment) => {
24
+ await changeAppointmentStatus('Completed', appointment.uuid);
25
+ }),
26
+ );
27
27
  }
28
28
 
29
- await Promise.all([endPatientStatus(queueUuid, queueEntryUuid, endedAt)]);
29
+ await endPatientStatus(queueUuid, queueEntryUuid, endedAt);
30
30
 
31
- return updateVisit(visitUuid, endCurrentVisitPayload, abortController)
32
- .pipe(first())
33
- .subscribe(
34
- (response) => {
35
- return response.status;
36
- },
37
- (error) => {
38
- return error;
39
- },
40
- );
31
+ try {
32
+ const response = await updateVisit(visitUuid, endCurrentVisitPayload, abortController);
33
+ return response.status;
34
+ } catch (error) {
35
+ return error;
36
+ }
41
37
  } else {
42
- return await Promise.all([endPatientStatus(queueUuid, queueEntryUuid, endedAt)])
43
- .then((res) => {
44
- return res;
45
- })
46
- .catch((error) => {
47
- return error;
48
- });
38
+ try {
39
+ return await endPatientStatus(queueUuid, queueEntryUuid, endedAt);
40
+ } catch (error) {
41
+ return error;
42
+ }
49
43
  }
50
44
  }
51
45
 
package/src/routes.json CHANGED
@@ -40,10 +40,6 @@
40
40
  "name": "service-queues-dashboard",
41
41
  "slot": "service-queues-dashboard-slot"
42
42
  },
43
- {
44
- "name": "edit-queue-entry-status-modal",
45
- "component": "editQueueEntryStatusModal"
46
- },
47
43
  {
48
44
  "name": "patient-info-banner-slot",
49
45
  "component": "patientInfoBannerSlot"
@@ -57,51 +53,62 @@
57
53
  "component": "clearAllQueueEntries"
58
54
  },
59
55
  {
60
- "name": "add-visit-to-queue-modal",
61
- "component": "addVisitToQueueModal"
56
+ "name": "previous-visit-summary-widget",
57
+ "component": "pastVisitSummary",
58
+ "slot": "previous-visit-summary-slot"
62
59
  },
60
+
63
61
  {
64
- "name": "transition-queue-entry-status-modal",
65
- "component": "transitionQueueEntryStatusModal"
62
+ "name": "active-visits-row-actions",
63
+ "component": "activeVisitsRowActions",
64
+ "slot": "queue-table-serve-patient-slot"
66
65
  },
67
66
  {
68
- "name": "previous-visit-summary-widget",
69
- "component": "pastVisitSummary",
70
- "slot": "previous-visit-summary-slot"
67
+ "name": "visit-form-queue-fields",
68
+ "component": "visitFormQueueFields",
69
+ "slot":"visit-form-queue-slot"
70
+ }
71
+ ],
72
+ "modals": [
73
+ {
74
+ "name": "add-visit-to-queue-modal",
75
+ "component": "addVisitToQueueModal"
71
76
  },
72
77
  {
73
78
  "name": "add-provider-to-room-modal",
74
79
  "component": "addProviderToRoomModal"
75
80
  },
76
- {
77
- "name": "transition-queue-entry-modal",
78
- "component": "transitionQueueEntryModal"
79
- },
80
81
  {
81
82
  "name": "edit-queue-entry-modal",
82
83
  "component": "editQueueEntryModal"
83
84
  },
84
85
  {
85
- "name": "undo-transition-queue-entry-modal",
86
- "component": "undoTransitionQueueEntryModal"
87
- },
88
- {
89
- "name": "void-queue-entry-modal",
90
- "component": "voidQueueEntryModal"
86
+ "name": "edit-queue-entry-status-modal",
87
+ "component": "editQueueEntryStatusModal"
91
88
  },
92
89
  {
93
90
  "name": "end-queue-entry-modal",
94
91
  "component": "endQueueEntryModal"
95
92
  },
96
93
  {
97
- "name": "active-visits-row-actions",
98
- "component": "activeVisitsRowActions",
99
- "slot": "queue-table-serve-patient-slot"
94
+ "name": "transition-patient-to-latest-queue-modal",
95
+ "component": "transitionPatientToLatestQueue"
100
96
  },
101
97
  {
102
- "name": "visit-form-queue-fields",
103
- "component": "visitFormQueueFields",
104
- "slot":"visit-form-queue-slot"
98
+ "name": "transition-queue-entry-modal",
99
+ "component": "transitionQueueEntryModal"
100
+ },
101
+ {
102
+ "name": "transition-queue-entry-status-modal",
103
+ "component": "transitionQueueEntryStatusModal"
104
+ },
105
+ {
106
+ "name": "undo-transition-queue-entry-modal",
107
+ "component": "undoTransitionQueueEntryModal"
108
+ },
109
+ {
110
+ "name": "void-queue-entry-modal",
111
+ "component": "voidQueueEntryModal"
105
112
  }
106
113
  ],
107
114
  "workspaces": [
@@ -0,0 +1,33 @@
1
+ import React, { useEffect } from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+ import { useLatestQueueEntry } from './transition-latest-queue-entry.resource';
4
+ import TransitionQueueEntryModal from '../queue-table/queue-entry-actions/transition-queue-entry.modal';
5
+
6
+ interface TransitionLatestQueueEntryProps {
7
+ patientUuid: string;
8
+ closeModal: () => void;
9
+ modalTitle?: string;
10
+ }
11
+
12
+ const TransitionLatestQueueEntry: React.FC<TransitionLatestQueueEntryProps> = ({
13
+ closeModal,
14
+ patientUuid,
15
+ modalTitle,
16
+ }) => {
17
+ const { t } = useTranslation();
18
+ const { data: queueEntry, error, isLoading } = useLatestQueueEntry(patientUuid);
19
+
20
+ if (error || !queueEntry) {
21
+ return null;
22
+ }
23
+
24
+ return (
25
+ <TransitionQueueEntryModal
26
+ queueEntry={queueEntry}
27
+ closeModal={closeModal}
28
+ modalTitle={t('TransitionLatestQueueEntry', "Transition patient's latest queue")}
29
+ />
30
+ );
31
+ };
32
+
33
+ export default TransitionLatestQueueEntry;
@@ -0,0 +1,30 @@
1
+ import {
2
+ type FetchResponse,
3
+ openmrsFetch,
4
+ type OpenmrsResource,
5
+ type Patient,
6
+ type Visit,
7
+ } from '@openmrs/esm-framework';
8
+ import useSWR from 'swr';
9
+ import useSWRImmutable from 'swr/immutable';
10
+ import { type QueueEntry } from '../types';
11
+ import { FetcherResponse } from 'swr/_internal';
12
+
13
+ export function useLatestQueueEntry(patientUuid: string) {
14
+ const customRepresentation =
15
+ 'custom:(uuid,display,queue:(uuid,display,name,location:(uuid,display),service:(uuid,display),allowedPriorities:(uuid,display),allowedStatuses:(uuid,display)),status,patient:(uuid,display),visit:(uuid,display,startDatetime),priority,priorityComment,sortWeight,startedAt,endedAt,locationWaitingFor,queueComingFrom,providerWaitingFor,previousQueueEntry)';
16
+
17
+ const encodedRepresentation = encodeURIComponent(customRepresentation);
18
+ const url = `/ws/rest/v1/queue-entry?v=${encodedRepresentation}&patient=${patientUuid}&isEnded=false`;
19
+ const { data, error, isLoading, mutate } = useSWR<FetchResponse<{ results: QueueEntry[] }>>(url, openmrsFetch);
20
+
21
+ const queueEntry =
22
+ data?.data?.results?.reduce((latestEntry, currentEntry) => {
23
+ if (!latestEntry || new Date(currentEntry.startedAt) > new Date(latestEntry.startedAt)) {
24
+ return currentEntry;
25
+ }
26
+ return latestEntry;
27
+ }, null) || null;
28
+
29
+ return { data: queueEntry, error, isLoading, mutate };
30
+ }
@@ -93,7 +93,6 @@
93
93
  "gender": "Gender",
94
94
  "heartRate": "Heart rate",
95
95
  "height": "Height",
96
- "home": "Home",
97
96
  "hourAndMinuteFormatted": "{{hours}} hour(s) and {{minutes}} minute(s)",
98
97
  "idNumber": "ID Number",
99
98
  "indication": "Indication",
@@ -162,6 +161,7 @@
162
161
  "patientAlreadyInQueue": "Patient is already in the queue",
163
162
  "patientAttendingService": "Patient attending service",
164
163
  "patientHasActiveVisit": "The patient already has an active visit",
164
+ "patientInfo": "{{name}}{{sexInfo}}{{ageInfo}}",
165
165
  "patientList": "Patient list",
166
166
  "patientName": "Patient name",
167
167
  "patientNotInQueue": "The patient is not in the queue",
@@ -204,7 +204,7 @@
204
204
  "queueEntryTransitionUndoSuccessful": "Queue entry transition undo success",
205
205
  "queueEntryUpdateFailed": "Error updating queue entry",
206
206
  "queueEntryUpdateSuccessfully": "Queue Entry Updated Successfully",
207
- "queueLocation": "Queue Location",
207
+ "queueLocation": "Queue location",
208
208
  "queueLocationRequired": "Queue location is required",
209
209
  "queueName": "Queue name",
210
210
  "queuePriority": "Queue priority",
@@ -255,7 +255,7 @@
255
255
  "serve": "Serve",
256
256
  "servePatient": "Serve patient",
257
257
  "service": "Service",
258
- "serviceIsRequired": "Status is required",
258
+ "serviceIsRequired": "Service is required",
259
259
  "serviceQueue": "Service queue",
260
260
  "serviceQueues": "Service queues",
261
261
  "sex": "Sex",
@@ -281,6 +281,7 @@
281
281
  "today": "Today",
282
282
  "totalPatients": "Total Patients",
283
283
  "transition": "Transition",
284
+ "TransitionLatestQueueEntry": "Transition patient to latest queue",
284
285
  "transitionPatient": "Transition patient",
285
286
  "transitionPatientStatusOrQueue": "Select a new status or queue for patient to transition to.",
286
287
  "triageForm": "Triage form",
@@ -93,7 +93,6 @@
93
93
  "gender": "الجنس",
94
94
  "heartRate": "معدل ضربات القلب",
95
95
  "height": "الطول",
96
- "home": "المنزل",
97
96
  "hourAndMinuteFormatted": "{{hours}} hour(s) and {{minutes}} minute(s)",
98
97
  "idNumber": "رقم الهوية",
99
98
  "indication": "الدلالة",
@@ -162,6 +161,7 @@
162
161
  "patientAlreadyInQueue": "Patient is already in the queue",
163
162
  "patientAttendingService": "المريض الذي يحضر الخدمة",
164
163
  "patientHasActiveVisit": "لدى المريض زيارة نشطة بالفعل",
164
+ "patientInfo": "{{name}}{{sexInfo}}{{ageInfo}}",
165
165
  "patientList": "قائمة المرضى",
166
166
  "patientName": "اسم المريض",
167
167
  "patientNotInQueue": "المريض ليس في الطابور",
@@ -204,7 +204,7 @@
204
204
  "queueEntryTransitionUndoSuccessful": "Queue entry transition undo success",
205
205
  "queueEntryUpdateFailed": "خطأ في تحديث دخول الطابور",
206
206
  "queueEntryUpdateSuccessfully": "تم تحديث دخول الطابور بنجاح",
207
- "queueLocation": "موقع الطابور",
207
+ "queueLocation": "Queue location",
208
208
  "queueLocationRequired": "Queue location is required",
209
209
  "queueName": "اسم الطابور",
210
210
  "queuePriority": "أولوية الطابور",
@@ -213,7 +213,7 @@
213
213
  "queueRoomAddFailed": "خطأ في إضافة غرفة الانتظار",
214
214
  "queueRoomName": "اسم غرفة الانتظار",
215
215
  "queueRoomUpdatedSuccessfully": "تم تحديث غرفة الانتظار بنجاح",
216
- "queuesClearedSuccessfully": "تم مسح الطوابير بنجاح",
216
+ "queuesClearedSuccessfully": "Queues cleared successfully",
217
217
  "queueScreen": "شاشة الطابور",
218
218
  "queueService": "خدمة الطابور",
219
219
  "queueStatus": "حالة الطابور",
@@ -255,7 +255,7 @@
255
255
  "serve": "خدمة",
256
256
  "servePatient": "خدمة المريض",
257
257
  "service": "خدمة",
258
- "serviceIsRequired": "Status is required",
258
+ "serviceIsRequired": "Service is required",
259
259
  "serviceQueue": "طابور الخدمة",
260
260
  "serviceQueues": "طوابير الخدمة",
261
261
  "sex": "الجنس",
@@ -281,6 +281,7 @@
281
281
  "today": "اليوم",
282
282
  "totalPatients": "Total Patients",
283
283
  "transition": "Transition",
284
+ "TransitionLatestQueueEntry": "Transition patient to latest queue",
284
285
  "transitionPatient": "Transition patient",
285
286
  "transitionPatientStatusOrQueue": "Select a new status or queue for patient to transition to.",
286
287
  "triageForm": "نموذج الترياج",
@@ -83,8 +83,8 @@
83
83
  "femaleLabelText": "Female",
84
84
  "fields": "of the following fields",
85
85
  "filter": "Filter",
86
- "filterByService": "Filter by service :",
87
- "filterByStatus": "Filter by status :",
86
+ "filterByService": "Filter by service:",
87
+ "filterByStatus": "Filter by status:",
88
88
  "filterTable": "Filter table",
89
89
  "firstName": "First name",
90
90
  "firstNameSort": "First name (a-z)",
@@ -93,7 +93,6 @@
93
93
  "gender": "Gender",
94
94
  "heartRate": "Heart rate",
95
95
  "height": "Height",
96
- "home": "Home",
97
96
  "hourAndMinuteFormatted": "{{hours}} hour(s) and {{minutes}} minute(s)",
98
97
  "idNumber": "ID Number",
99
98
  "indication": "Indication",
@@ -162,6 +161,7 @@
162
161
  "patientAlreadyInQueue": "Patient is already in the queue",
163
162
  "patientAttendingService": "Patient attending service",
164
163
  "patientHasActiveVisit": "The patient already has an active visit",
164
+ "patientInfo": "{{name}}{{sexInfo}}{{ageInfo}}",
165
165
  "patientList": "Patient list",
166
166
  "patientName": "Patient name",
167
167
  "patientNotInQueue": "The patient is not in the queue",
@@ -204,7 +204,7 @@
204
204
  "queueEntryTransitionUndoSuccessful": "Queue entry transition undo success",
205
205
  "queueEntryUpdateFailed": "Error updating queue entry status",
206
206
  "queueEntryUpdateSuccessfully": "Queue Entry Updated Successfully",
207
- "queueLocation": "Queue Location",
207
+ "queueLocation": "Queue location",
208
208
  "queueLocationRequired": "Queue location is required",
209
209
  "queueName": "Queue name",
210
210
  "queuePriority": "Queue priority",
@@ -213,8 +213,9 @@
213
213
  "queueRoomAddFailed": "Error adding queue room",
214
214
  "queueRoomName": "Queue room name",
215
215
  "queueRoomUpdatedSuccessfully": "Queue room updated successfully",
216
- "queuesClearedSuccessfully": "Queues Cleared Successfully",
216
+ "queuesClearedSuccessfully": "Queues cleared successfully",
217
217
  "queueScreen": "Queue screen",
218
+ "queueScreenError": "Queue screen error",
218
219
  "queueService": "Queue service",
219
220
  "queueStatus": "Queue status",
220
221
  "recentScheduledVisits_one": "{{count}} visit scheduled for +/- 7 days",
@@ -255,7 +256,7 @@
255
256
  "serve": "Serve",
256
257
  "servePatient": "Serve patient",
257
258
  "service": "Service",
258
- "serviceIsRequired": "Status is required",
259
+ "serviceIsRequired": "Service is required",
259
260
  "serviceQueue": "Service queue",
260
261
  "serviceQueues": "Service queues",
261
262
  "sex": "Sex",
@@ -272,6 +273,7 @@
272
273
  "submitting": "Submitting...",
273
274
  "success": "Success",
274
275
  "temperature": "Temperature",
276
+ "ticketAnnouncement": "Ticket number: {{prefix}}, - {{suffix}}, please proceed to room {{room}}",
275
277
  "ticketNumber": "Ticket Number",
276
278
  "time": "Time",
277
279
  "timeCannotBeInFuture": "Time cannot be in the future",
@@ -281,6 +283,7 @@
281
283
  "today": "Today",
282
284
  "totalPatients": "Total Patients",
283
285
  "transition": "Transition",
286
+ "TransitionLatestQueueEntry": "Transition patient to latest queue",
284
287
  "transitionPatient": "Transition patient",
285
288
  "transitionPatientStatusOrQueue": "Select a new status or queue for patient to transition to.",
286
289
  "triageForm": "Triage form",