@kenyaemr/esm-morgue-app 5.4.2-pre.2291 → 5.4.2-pre.2294

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 (48) hide show
  1. package/.turbo/turbo-build.log +22 -16
  2. package/dist/146.js +2 -0
  3. package/dist/146.js.map +1 -0
  4. package/dist/197.js +1 -0
  5. package/dist/201.js +1 -1
  6. package/dist/201.js.map +1 -1
  7. package/dist/294.js +1 -0
  8. package/dist/300.js +1 -1
  9. package/dist/398.js +1 -1
  10. package/dist/398.js.map +1 -1
  11. package/dist/633.js +1 -0
  12. package/dist/633.js.map +1 -0
  13. package/dist/713.js +1 -0
  14. package/dist/713.js.map +1 -0
  15. package/dist/798.js +1 -1
  16. package/dist/798.js.map +1 -1
  17. package/dist/826.js +2 -0
  18. package/dist/826.js.map +1 -0
  19. package/dist/kenyaemr-esm-morgue-app.js +1 -1
  20. package/dist/kenyaemr-esm-morgue-app.js.buildmanifest.json +131 -109
  21. package/dist/kenyaemr-esm-morgue-app.js.map +1 -1
  22. package/dist/main.js +1 -1
  23. package/dist/main.js.map +1 -1
  24. package/dist/routes.json +1 -1
  25. package/package.json +1 -1
  26. package/src/forms/discharge-deceased-person-workspace/discharge-body.resource.ts +76 -1
  27. package/src/forms/discharge-deceased-person-workspace/discharge-body.workspace.tsx +19 -2
  28. package/src/forms/dispose-deceased-person-workspace/dispose-deceased-person.workspace.tsx +22 -3
  29. package/src/index.ts +0 -1
  30. package/src/routes.json +0 -5
  31. package/src/types/index.ts +54 -0
  32. package/src/view-details/panels/autopsy.component.tsx +1 -1
  33. package/translations/am.json +90 -0
  34. package/translations/en.json +0 -2
  35. package/translations/sw.json +90 -0
  36. package/dist/109.js +0 -2
  37. package/dist/109.js.map +0 -1
  38. package/dist/4.js +0 -2
  39. package/dist/4.js.map +0 -1
  40. package/dist/811.js +0 -1
  41. package/dist/811.js.map +0 -1
  42. package/dist/827.js +0 -1
  43. package/dist/827.js.map +0 -1
  44. package/dist/842.js +0 -2
  45. package/dist/842.js.LICENSE.txt +0 -5
  46. package/dist/842.js.map +0 -1
  47. /package/dist/{4.js.LICENSE.txt → 146.js.LICENSE.txt} +0 -0
  48. /package/dist/{109.js.LICENSE.txt → 826.js.LICENSE.txt} +0 -0
package/dist/routes.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"fhir2":">=1.2","webservices.rest":"^2.24.0"},"extensions":[{"name":"action-buttons","component":"actionBarButtons","slot":"mortuary-action-buttons-slot","meta":{"fullWidth":false,"privileges":["o3 : View Mortuary Dashboard","o3 : Admit Body to Mortuary","o3 : Edit Mortuary Records","o3 : Discharge Body from Mortuary","o3 : View Mortuary Compartments","o3 : Swap Mortuary Compartments","o3 : View Mortuary Billing","o3 : Process Mortuary Payments","o3 : View Mortuary Reports","o3 : Generate Mortuary Reports"]}},{"name":"deceased-banner-info","component":"bannerInfo","slot":"deceased-banner-info-slot","meta":{"fullWidth":false}},{"name":"mortuary-summary-info","component":"mortuarySummary","slot":"mortuary-summary-info-slot"},{"component":"root","name":"morgue-dashboard-root","slot":"morgue-dashboard-slot","meta":{"privileges":["o3 : View Mortuary Dashboard"]}}],"workspaces":[{"name":"patient-additional-info-form","component":"patientAdditionalInfoForm","title":"add more details","type":"other-form"},{"name":"discharge-body-form","component":"dischargeBodyForm","title":"discharge body form","type":"other-form"},{"name":"admit-body-form","component":"admitBodyForm","title":"Admission form","type":"other-form"},{"name":"swap-unit-form","component":"swapForm","title":"Swap form","type":"other-form"},{"name":"admit-deceased-person-form","component":"admitDeceasedPersonForm","title":"Admit Deceased Person","type":"other-form"},{"name":"mortuary-form-entry","component":"mortuaryFormEntry","title":"Mortuary Form Entry","type":"form","width":"extra-wide","canMaximize":true,"canHide":true},{"name":"dispose-deceased-person-form","component":"disposeDeceasedPersonForm","title":"Dispose Deceased Person","type":"other-form"}],"pages":[{"component":"root","route":"morgue"}],"version":"5.4.2-pre.2291"}
1
+ {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"fhir2":">=1.2","webservices.rest":"^2.24.0"},"extensions":[{"name":"action-buttons","component":"actionBarButtons","slot":"mortuary-action-buttons-slot","meta":{"fullWidth":false,"privileges":["o3 : View Mortuary Dashboard","o3 : Admit Body to Mortuary","o3 : Edit Mortuary Records","o3 : Discharge Body from Mortuary","o3 : View Mortuary Compartments","o3 : Swap Mortuary Compartments","o3 : View Mortuary Billing","o3 : Process Mortuary Payments","o3 : View Mortuary Reports","o3 : Generate Mortuary Reports"]}},{"name":"deceased-banner-info","component":"bannerInfo","slot":"deceased-banner-info-slot","meta":{"fullWidth":false}},{"component":"root","name":"morgue-dashboard-root","slot":"morgue-dashboard-slot","meta":{"privileges":["o3 : View Mortuary Dashboard"]}}],"workspaces":[{"name":"patient-additional-info-form","component":"patientAdditionalInfoForm","title":"add more details","type":"other-form"},{"name":"discharge-body-form","component":"dischargeBodyForm","title":"discharge body form","type":"other-form"},{"name":"admit-body-form","component":"admitBodyForm","title":"Admission form","type":"other-form"},{"name":"swap-unit-form","component":"swapForm","title":"Swap form","type":"other-form"},{"name":"admit-deceased-person-form","component":"admitDeceasedPersonForm","title":"Admit Deceased Person","type":"other-form"},{"name":"mortuary-form-entry","component":"mortuaryFormEntry","title":"Mortuary Form Entry","type":"form","width":"extra-wide","canMaximize":true,"canHide":true},{"name":"dispose-deceased-person-form","component":"disposeDeceasedPersonForm","title":"Dispose Deceased Person","type":"other-form"}],"pages":[{"component":"root","route":"morgue"}],"version":"5.4.2-pre.2294"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kenyaemr/esm-morgue-app",
3
- "version": "5.4.2-pre.2291",
3
+ "version": "5.4.2-pre.2294",
4
4
  "description": "morgue app for KenyaEMR",
5
5
  "browser": "dist/kenyaemr-esm-morgue-app.js",
6
6
  "main": "src/index.ts",
@@ -1,6 +1,10 @@
1
1
  import { FetchResponse, openmrsFetch, restBaseUrl } from '@openmrs/esm-framework';
2
2
  import useSWR from 'swr';
3
- import { Patient, PatientInfo } from '../../types';
3
+ import { Patient, PatientInfo, PatientInvoice, PaymentStatus } from '../../types';
4
+ import dayjs from 'dayjs';
5
+ import sortBy from 'lodash-es/sortBy';
6
+ import isEmpty from 'lodash-es/isEmpty';
7
+ import { useMemo } from 'react';
4
8
 
5
9
  export const usePersonAttributes = (personUuid: string) => {
6
10
  const { data, error, isLoading } = useSWR<FetchResponse<{ results: Patient['person']['attributes'] }>>(
@@ -63,3 +67,74 @@ export const usePersonAttributes = (personUuid: string) => {
63
67
  createOrUpdatePersonAttribute,
64
68
  };
65
69
  };
70
+
71
+ export const useBills = (
72
+ patientUuid: string = '',
73
+ billStatus: PaymentStatus.PENDING | '' | string = '',
74
+ startingDate: Date = dayjs().startOf('day').toDate(),
75
+ endDate: Date = dayjs().endOf('day').toDate(),
76
+ ) => {
77
+ const startingDateISO = startingDate.toISOString();
78
+ const endDateISO = endDate.toISOString();
79
+
80
+ const url = `${restBaseUrl}/cashier/bill?status=${billStatus}&v=custom:(uuid,display,voided,voidReason,adjustedBy,cashPoint:(uuid,name),cashier:(uuid,display),dateCreated,lineItems,patient:(uuid,display))&createdOnOrAfter=${startingDateISO}&createdOnOrBefore=${endDateISO}`;
81
+
82
+ const { data, error, isLoading, isValidating, mutate } = useSWR<{ data: { results: Array<PatientInvoice> } }>(
83
+ patientUuid ? `${url}&patientUuid=${patientUuid}` : url,
84
+ openmrsFetch,
85
+ {
86
+ errorRetryCount: 2,
87
+ },
88
+ );
89
+
90
+ const sortBills = sortBy(data?.data?.results ?? [], ['dateCreated']).reverse();
91
+ const filteredBills = billStatus === '' ? sortBills : sortBills?.filter((bill) => bill?.status === billStatus);
92
+ const filteredResults = filteredBills?.filter((res) => res.patient?.uuid === patientUuid);
93
+ const formattedBills = isEmpty(patientUuid) ? filteredBills : filteredResults || [];
94
+
95
+ return {
96
+ bills: formattedBills,
97
+ error,
98
+ isLoading,
99
+ isValidating,
100
+ mutate,
101
+ };
102
+ };
103
+ interface UseBlockDischargeWithPendingBillsProps {
104
+ patientUuid: string;
105
+ }
106
+
107
+ interface UseBlockDischargeWithPendingBillsReturn {
108
+ isDischargeBlocked: boolean;
109
+ pendingBills: any[];
110
+ pendingBillsCount: number;
111
+ isLoadingBills: boolean;
112
+ billsError: any;
113
+ blockingMessage: string;
114
+ }
115
+ export const useBlockDischargeWithPendingBills = ({
116
+ patientUuid,
117
+ }: UseBlockDischargeWithPendingBillsProps): UseBlockDischargeWithPendingBillsReturn => {
118
+ const { bills, isLoading, error } = useBills(patientUuid, PaymentStatus.PENDING);
119
+
120
+ const result = useMemo(() => {
121
+ const pendingBills = bills?.filter((bill) => bill.status === PaymentStatus.PENDING) || [];
122
+ const pendingBillsCount = pendingBills.length;
123
+ const isDischargeBlocked = pendingBillsCount > 0;
124
+
125
+ const blockingMessage = isDischargeBlocked
126
+ ? `Sorry, Pending bills must be resolved before discharging a deceased patient.
127
+ `
128
+ : '';
129
+ return {
130
+ isDischargeBlocked,
131
+ pendingBills,
132
+ pendingBillsCount,
133
+ isLoadingBills: isLoading,
134
+ billsError: error,
135
+ blockingMessage,
136
+ };
137
+ }, [bills, isLoading, error]);
138
+
139
+ return result;
140
+ };
@@ -6,6 +6,7 @@ import {
6
6
  DatePickerInput,
7
7
  Form,
8
8
  InlineLoading,
9
+ InlineNotification,
9
10
  SelectItem,
10
11
  Stack,
11
12
  TextInput,
@@ -32,7 +33,7 @@ import { z } from 'zod';
32
33
  import styles from './discharge-body.scss';
33
34
  import DeceasedInfo from '../../deceased-patient-header/deceasedInfo/deceased-info.component';
34
35
  import { PatientInfo } from '../../types';
35
- import { usePersonAttributes } from './discharge-body.resource';
36
+ import { useBills, useBlockDischargeWithPendingBills, usePersonAttributes } from './discharge-body.resource';
36
37
  import { ConfigObject } from '../../config-schema';
37
38
  import { getCurrentTime } from '../../utils/utils';
38
39
  import { dischargeSchema } from '../../schemas';
@@ -57,6 +58,9 @@ const DischargeForm: React.FC<DischargeFormProps> = ({ closeWorkspace, patientUu
57
58
  const { queueEntry } = useVisitQueueEntry(patientUuid, activeVisit?.uuid);
58
59
  const { dischargeBody, isLoadingEmrConfiguration } = useMortuaryOperation();
59
60
  const { createOrUpdatePersonAttribute, personAttributes } = usePersonAttributes(personUuid);
61
+ const { isDischargeBlocked, blockingMessage, isLoadingBills } = useBlockDischargeWithPendingBills({
62
+ patientUuid,
63
+ });
60
64
 
61
65
  const { time: defaultTime, period: defaultPeriod } = getCurrentTime();
62
66
 
@@ -169,6 +173,15 @@ const DischargeForm: React.FC<DischargeFormProps> = ({ closeWorkspace, patientUu
169
173
  <div className={styles.formContainer}>
170
174
  <Stack gap={3}>
171
175
  <DeceasedInfo patientUuid={patientUuid} />
176
+ {isDischargeBlocked && (
177
+ <InlineNotification
178
+ kind="error"
179
+ title={t('dischargeBlocked', 'Discharge Blocked')}
180
+ subtitle={blockingMessage}
181
+ lowContrast={true}
182
+ className={styles.blockingNotification}
183
+ />
184
+ )}
172
185
  <ResponsiveWrapper>
173
186
  <div className={styles.dateTimePickerContainer}>
174
187
  <Column>
@@ -344,7 +357,11 @@ const DischargeForm: React.FC<DischargeFormProps> = ({ closeWorkspace, patientUu
344
357
  <Button className={styles.buttonContainer} kind="secondary" onClick={() => closeWorkspace()}>
345
358
  {t('cancel', 'Cancel')}
346
359
  </Button>
347
- <Button className={styles.buttonContainer} disabled={isSubmitting || !isDirty} kind="primary" type="submit">
360
+ <Button
361
+ className={styles.buttonContainer}
362
+ disabled={isSubmitting || !isDirty || isDischargeBlocked || isLoadingBills}
363
+ kind="primary"
364
+ type="submit">
348
365
  {isSubmitting ? (
349
366
  <span className={styles.inlineLoading}>
350
367
  {t('submitting', 'Submitting' + '...')}
@@ -6,6 +6,7 @@ import {
6
6
  DatePickerInput,
7
7
  Form,
8
8
  InlineLoading,
9
+ InlineNotification,
9
10
  SelectItem,
10
11
  Stack,
11
12
  TextInput,
@@ -32,7 +33,10 @@ import { z } from 'zod';
32
33
  import styles from './dispose-deceased-person.scss';
33
34
  import DeceasedInfo from '../../deceased-patient-header/deceasedInfo/deceased-info.component';
34
35
  import { PatientInfo } from '../../types';
35
- import { usePersonAttributes } from '../discharge-deceased-person-workspace/discharge-body.resource';
36
+ import {
37
+ useBlockDischargeWithPendingBills,
38
+ usePersonAttributes,
39
+ } from '../discharge-deceased-person-workspace/discharge-body.resource';
36
40
  import { ConfigObject } from '../../config-schema';
37
41
  import { getCurrentTime } from '../../utils/utils';
38
42
  import { disposeSchema } from '../../schemas';
@@ -58,7 +62,9 @@ const DisposeForm: React.FC<DisposeFormProps> = ({ closeWorkspace, patientUuid,
58
62
  const { disposeBody, isLoadingEmrConfiguration } = useMortuaryOperation();
59
63
  const { createOrUpdatePersonAttribute, personAttributes } = usePersonAttributes(personUuid);
60
64
  const { mutateAll, mutateAwaitingQueuePatients } = useAwaitingQueuePatients();
61
-
65
+ const { isDischargeBlocked, blockingMessage, isLoadingBills } = useBlockDischargeWithPendingBills({
66
+ patientUuid,
67
+ });
62
68
  const { time: defaultTime, period: defaultPeriod } = getCurrentTime();
63
69
 
64
70
  const { nextOfKinNameUuid, nextOfKinRelationshipUuid, nextOfKinPhoneUuid, nextOfKinAddressUuid } =
@@ -184,6 +190,15 @@ const DisposeForm: React.FC<DisposeFormProps> = ({ closeWorkspace, patientUuid,
184
190
  <div className={styles.formContainer}>
185
191
  <Stack gap={3}>
186
192
  <DeceasedInfo patientUuid={patientUuid} />
193
+ {isDischargeBlocked && (
194
+ <InlineNotification
195
+ kind="error"
196
+ title={t('disposeBlocked', 'Dispose Blocked')}
197
+ subtitle={blockingMessage}
198
+ lowContrast={true}
199
+ className={styles.blockingNotification}
200
+ />
201
+ )}
187
202
  <ResponsiveWrapper>
188
203
  <div className={styles.dateTimePickerContainer}>
189
204
  <Column>
@@ -383,7 +398,11 @@ const DisposeForm: React.FC<DisposeFormProps> = ({ closeWorkspace, patientUuid,
383
398
  <Button className={styles.buttonContainer} kind="secondary" onClick={() => closeWorkspace()}>
384
399
  {t('cancel', 'Cancel')}
385
400
  </Button>
386
- <Button className={styles.buttonContainer} disabled={isSubmitting || !isDirty} kind="primary" type="submit">
401
+ <Button
402
+ className={styles.buttonContainer}
403
+ disabled={isSubmitting || !isDirty || isDischargeBlocked || isLoadingBills}
404
+ kind="primary"
405
+ type="submit">
387
406
  {isSubmitting ? (
388
407
  <span className={styles.inlineLoading}>
389
408
  {t('submitting', 'Submitting...')}
package/src/index.ts CHANGED
@@ -58,4 +58,3 @@ export const dischargeBodyForm = getAsyncLifecycle(
58
58
  export const mortuaryFormEntry = getSyncLifecycle(FormEntryWorkspace, options);
59
59
  export const disposeDeceasedPersonForm = getSyncLifecycle(DisposeForm, options);
60
60
  export const mortuaryChartView = getAsyncLifecycle(() => import('./view-details/main/main.component'), options);
61
- export const mortuarySummary = getAsyncLifecycle(() => import('./summary/summary.component'), options);
package/src/routes.json CHANGED
@@ -33,11 +33,6 @@
33
33
  "fullWidth": false
34
34
  }
35
35
  },
36
- {
37
- "name": "mortuary-summary-info",
38
- "component": "mortuarySummary",
39
- "slot": "mortuary-summary-info-slot"
40
- },
41
36
  {
42
37
  "component": "root",
43
38
  "name": "morgue-dashboard-root",
@@ -563,3 +563,57 @@ export interface OpenmrsEncounter extends OpenmrsResource {
563
563
  diagnosis: { coded: { display: string } };
564
564
  }>;
565
565
  }
566
+
567
+ export enum PaymentStatus {
568
+ POSTED = 'POSTED',
569
+ PENDING = 'PENDING',
570
+ PAID = 'PAID',
571
+ CREDITED = 'CREDITED',
572
+ CANCELLED = 'CANCELLED',
573
+ ADJUSTED = 'ADJUSTED',
574
+ EXEMPTED = 'EXEMPTED',
575
+ }
576
+
577
+ export interface PatientInvoice {
578
+ uuid: string;
579
+ display: string;
580
+ voided: boolean;
581
+ voidReason: string | null;
582
+ adjustedBy: any[];
583
+ billAdjusted: any;
584
+ cashPoint: CashPoint;
585
+ dateCreated: string;
586
+ lineItems: LineItem[];
587
+ patient: Patient;
588
+ payments: Payment[];
589
+ receiptNumber: string;
590
+ status: PaymentStatus;
591
+ adjustmentReason: any;
592
+ id: number;
593
+ resourceVersion: string;
594
+ totalPayments?: number;
595
+ totalDeposits?: number;
596
+ totalExempted?: number;
597
+ balance?: number;
598
+ closed?: boolean;
599
+ }
600
+
601
+ interface CashPoint extends BaseEntity {
602
+ location: Location;
603
+ }
604
+
605
+ export interface LineItem extends BaseEntity {}
606
+ export interface Payment {
607
+ uuid: string;
608
+ instanceType: PaymentInstanceType;
609
+ attributes: Attribute[];
610
+ amount: number;
611
+ amountTendered: number;
612
+ dateCreated: number;
613
+ voided: boolean;
614
+ resourceVersion: string;
615
+ }
616
+
617
+ interface PaymentInstanceType extends BaseEntity {
618
+ name: string;
619
+ }
@@ -57,7 +57,7 @@ const AutopsyView: React.FC = () => {
57
57
  const { pageSizes } = usePaginationInfo(pageSize, encounters?.length, currentPage, results?.length);
58
58
 
59
59
  const handleLaunchAutopsyForm = (encounterUUID = '') => {
60
- launchWorkspace('patient-form-entry-workspace', {
60
+ launchWorkspace('mortuary-form-entry', {
61
61
  workspaceTitle: t('autopsyReport', 'Autopsy report'),
62
62
  mutateForm: () => mutate(),
63
63
  formInfo: {
@@ -0,0 +1,90 @@
1
+ {
2
+ "action": "ድርጊት",
3
+ "add": "ጨምር",
4
+ "admissionDate": "የመግቢያ ቀን",
5
+ "admissionForm": "የመግቢያ ቅጽ",
6
+ "admit": "አስገባ",
7
+ "admitBody": "አስገባ",
8
+ "admitted": "ገብቷል",
9
+ "admittedHeader": "ገብቷል",
10
+ "age": "ዕድሜ",
11
+ "allocation": "የምደባ እይታ",
12
+ "attachements": "አባሪዎች",
13
+ "autopsyReport": "የአስከሬን ምርመራ ሪፖርት",
14
+ "available": "ይገኛል",
15
+ "awaiting": "በመጠባበቅ ላይ",
16
+ "awaitingAdmissionHeader": "መግቢያ በመጠባበቅ ላይ",
17
+ "bedType": "የአልጋ አይነት",
18
+ "billingHistory": "የክፍያ ታሪክ",
19
+ "cancel": "ይቅር",
20
+ "cardView": "ካርድ",
21
+ "causeOfDeath": "የሞት መንስኤ:",
22
+ "chooseOptions": "አማራጮችን ምረጥ",
23
+ "compartment": "ክፍል",
24
+ "compartmentNumber": "የክፍል ቁጥር",
25
+ "compartmentShare": "የክፍል ድርሻ",
26
+ "compartmentSwap": "የክፍል ቅያሬ",
27
+ "dateAndTimeofDeath": "የሞት ቀን እና ሰዓት",
28
+ "dateOfAdmission": "የመግቢያ ቀን",
29
+ "dateOfDeath": "የሞት ቀን",
30
+ "dateQueued": "ወረፋ የተያዘበት ቀን",
31
+ "dateTime": "ቀን እና ሰዓት",
32
+ "day": "ቀን",
33
+ "days": "ቀናት",
34
+ "daysInMortuary": "በሞርቹሪ የቆዩ ቀናት",
35
+ "daysSinceDeath": "ከሞቱ በኋላ ያለፉ ቀናት",
36
+ "discharge": "መልቀቅ",
37
+ "discharged": "ተለቋል",
38
+ "dischargedHeader": "ተለቋል",
39
+ "dischargeForm": "መልቀቅ",
40
+ "dispose": "አስወግድ",
41
+ "disposeForm": "አስወግድ",
42
+ "dividerText": "የተጋራ",
43
+ "durationOnWard": "በወረፋ የቆዩ ቀናት",
44
+ "edit": "አስተካክል",
45
+ "empty": "ባዶ",
46
+ "emptyCompartment": "ባዶ ክፍል",
47
+ "encounterType": "የግኝት አይነት",
48
+ "errorLoadingPatients": "የተለቀቁ ታካሚዎችን በመጫን ላይ ስህተት",
49
+ "errorMessage": "ስህተት",
50
+ "formName": "የቅጽ ስም",
51
+ "gender": "ፆታ",
52
+ "idNumber": "መታወቂያ ቁጥር",
53
+ "lengthofStay": "የቆይታ ጊዜ",
54
+ "listView": "ዝርዝር",
55
+ "loadData": "ማጠቃለያ ዳታ በመጫን ላይ...",
56
+ "loadingPatients": "ታካሚዎችን በመጫን ላይ...",
57
+ "mortician": "የሬሳ ክፍል ባለሙያ ስም",
58
+ "mortuary": "የሬሳ ክፍል",
59
+ "mortuaryOperations": "የሬሳ ክፍል ስራዎች",
60
+ "name": "ስም",
61
+ "nextPage": "ቀጣይ ገጽ",
62
+ "noAdmittedPatients": "ምንም የገቡ ታካሚዎች አልተገኙም",
63
+ "noAdmittedPatientsDescription": "በአሁኑ ጊዜ ምንም የገቡ ታካሚዎች የሉም።",
64
+ "noAwaitingPatients": "ምንም በመጠባበቅ ላይ ያሉ ታካሚዎች አልተገኙም",
65
+ "noAwaitingPatientsDescription": "በአሁኑ ጊዜ ምንም በመጠባበቅ ላይ ያሉ ታካሚዎች የሉም።",
66
+ "noDeceasedPatients": "መግቢያ በመጠባበቅ ላይ ያሉ የሞቱ ታካሚዎች የሉም",
67
+ "noDischargedPatients": "ምንም የተለቀቁ ታካሚዎች አልተገኙም",
68
+ "noDischargedPatientsDescription": "በአሁኑ ጊዜ ምንም የተለቀቁ ታካሚዎች የሉም።",
69
+ "noObservationsFound": "ምንም ምልከታዎች አልተገኙም",
70
+ "occupied": "ተይዟል",
71
+ "patientName": "የታካሚ ስም",
72
+ "postmortem": "የአስከሬን ምርመራ",
73
+ "postmortemForm": "የአስከሬን ምርመራ",
74
+ "previousPage": "የቀደመ ገጽ",
75
+ "printGatePass": "የበር ማለፊያ",
76
+ "printPostmortem": "የአስከሬን ምርመራ",
77
+ "printPostmortemReport": "የአስከሬን ምርመራ ሪፖርት",
78
+ "searchPatients": "ታካሚዎችን ፈልግ",
79
+ "sharedCompartment_one": "{{count}} የሚጋራ",
80
+ "sharedCompartment_other": "{{count}} የሚጋሩ",
81
+ "singleOccupancy": "አንድ ተኮር",
82
+ "status": "ሁኔታ",
83
+ "swapCompartment": "ክፍል ቀይር",
84
+ "timeSpent": "ያሳለፈው ጊዜ",
85
+ "totalCount": "ጠቅላላ",
86
+ "unknown": "የማይታወቅ",
87
+ "viewDetails": "ዝርዝሮችን እይ",
88
+ "visitType": "የጉብኝት አይነት",
89
+ "yearsOld": "አመት እድሜ"
90
+ }
@@ -57,7 +57,6 @@
57
57
  "mortician": "Mortician name",
58
58
  "mortuary": "Mortuary",
59
59
  "mortuaryOperations": "Mortuary operations",
60
- "mortuaryView": "Mortuary view",
61
60
  "name": "Name",
62
61
  "nextPage": "Next page",
63
62
  "noAdmittedPatients": "No admitted patients found",
@@ -69,7 +68,6 @@
69
68
  "noDischargedPatientsDescription": "There are currently no discharged patients to display.",
70
69
  "noObservationsFound": "No observations found",
71
70
  "occupied": "Occupied",
72
- "patientDetails": "Patient Details",
73
71
  "patientName": "Patient Name",
74
72
  "postmortem": "Postmortem",
75
73
  "postmortemForm": "Postmortem",
@@ -0,0 +1,90 @@
1
+ {
2
+ "action": "Action",
3
+ "add": "Add",
4
+ "admissionDate": "Admission Date",
5
+ "admissionForm": "Admission form",
6
+ "admit": "Admit",
7
+ "admitBody": "Admit",
8
+ "admitted": "Admitted",
9
+ "admittedHeader": "Admitted",
10
+ "age": "Age",
11
+ "allocation": "Allocation View",
12
+ "attachements": "Attachements",
13
+ "autopsyReport": "Autopsy report",
14
+ "available": "Available",
15
+ "awaiting": "Awaiting",
16
+ "awaitingAdmissionHeader": "Awaiting Admission",
17
+ "bedType": "Bed Type",
18
+ "billingHistory": "Billing history",
19
+ "cancel": "Cancel",
20
+ "cardView": "Card",
21
+ "causeOfDeath": "Cause of death: ",
22
+ "chooseOptions": "Choose options",
23
+ "compartment": "Compartment",
24
+ "compartmentNumber": "Compartment Number",
25
+ "compartmentShare": "Compartment Share",
26
+ "compartmentSwap": "Compartment swap",
27
+ "dateAndTimeofDeath": "Date and time of death",
28
+ "dateOfAdmission": "Date of admission",
29
+ "dateOfDeath": "Date of death",
30
+ "dateQueued": "Date Queued",
31
+ "dateTime": "Date & time",
32
+ "day": "Day",
33
+ "days": "Days",
34
+ "daysInMortuary": "Days in mortuary",
35
+ "daysSinceDeath": "Days Since Death",
36
+ "discharge": "Discharge",
37
+ "discharged": "Discharged",
38
+ "dischargedHeader": "Discharged",
39
+ "dischargeForm": "Discharge",
40
+ "dispose": "Dispose",
41
+ "disposeForm": "Dispose",
42
+ "dividerText": "Shared",
43
+ "durationOnWard": "Days In Queue",
44
+ "edit": "Edit",
45
+ "empty": "Empty",
46
+ "emptyCompartment": "Empty compartment",
47
+ "encounterType": "Encounter type",
48
+ "errorLoadingPatients": "Error loading discharged patients",
49
+ "errorMessage": "Error",
50
+ "formName": "Form name",
51
+ "gender": "Gender",
52
+ "idNumber": "ID Number",
53
+ "lengthofStay": "Length of stay",
54
+ "listView": "List",
55
+ "loadData": "Loading summary data...",
56
+ "loadingPatients": "Loading patients...",
57
+ "mortician": "Mortician name",
58
+ "mortuary": "Mortuary",
59
+ "mortuaryOperations": "Mortuary operations",
60
+ "name": "Name",
61
+ "nextPage": "Next page",
62
+ "noAdmittedPatients": "No admitted patients found",
63
+ "noAdmittedPatientsDescription": "There are currently no admitted patients to display.",
64
+ "noAwaitingPatients": "No awaiting patients found",
65
+ "noAwaitingPatientsDescription": "There are currently no awaiting patients to display.",
66
+ "noDeceasedPatients": "No deceased patients awaiting admission",
67
+ "noDischargedPatients": "No discharged patients found",
68
+ "noDischargedPatientsDescription": "There are currently no discharged patients to display.",
69
+ "noObservationsFound": "No observations found",
70
+ "occupied": "Occupied",
71
+ "patientName": "Patient Name",
72
+ "postmortem": "Postmortem",
73
+ "postmortemForm": "Postmortem",
74
+ "previousPage": "Previous page",
75
+ "printGatePass": "Gate Pass",
76
+ "printPostmortem": "Postmortem",
77
+ "printPostmortemReport": "Postmortem Report",
78
+ "searchPatients": "Search Patients",
79
+ "sharedCompartment_one": "{{count}} sharing",
80
+ "sharedCompartment_other": "{{count}} sharing",
81
+ "singleOccupancy": "Single",
82
+ "status": "Status",
83
+ "swapCompartment": "Swap Compartment",
84
+ "timeSpent": "Time spent",
85
+ "totalCount": "total",
86
+ "unknown": "Unknown",
87
+ "viewDetails": "View details",
88
+ "visitType": "Visit type",
89
+ "yearsOld": "Yrs old"
90
+ }