@kenyaemr/esm-morgue-app 5.4.2-pre.2330 → 5.4.2-pre.2344
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.
- package/.turbo/turbo-build.log +20 -20
- package/dist/197.js +1 -1
- package/dist/221.js +1 -0
- package/dist/221.js.map +1 -0
- package/dist/294.js +1 -1
- package/dist/300.js +1 -1
- package/dist/347.js +1 -1
- package/dist/347.js.map +1 -1
- package/dist/429.js +2 -0
- package/dist/429.js.map +1 -0
- package/dist/529.js +1 -0
- package/dist/529.js.map +1 -0
- package/dist/619.js +1 -0
- package/dist/619.js.map +1 -0
- package/dist/633.js +1 -1
- package/dist/633.js.map +1 -1
- package/dist/653.js +1 -0
- package/dist/653.js.map +1 -0
- package/dist/712.js +1 -0
- package/dist/712.js.map +1 -0
- package/dist/723.js +1 -0
- package/dist/723.js.map +1 -0
- package/dist/805.js +1 -0
- package/dist/805.js.map +1 -0
- package/dist/989.js +1 -1
- package/dist/989.js.map +1 -1
- package/dist/kenyaemr-esm-morgue-app.js +1 -1
- package/dist/kenyaemr-esm-morgue-app.js.buildmanifest.json +182 -80
- package/dist/kenyaemr-esm-morgue-app.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/routes.json +1 -1
- package/package.json +1 -1
- package/src/bed/bed.component.tsx +10 -11
- package/src/bed-layout/discharged/discharged-bed-layout.component.tsx +24 -7
- package/src/bed-linelist-view/discharged/discharged-bed-line-view.component.tsx +35 -20
- package/src/config-schema.ts +1 -1
- package/src/extension/overflow-menu-item-postmortem/print-postmorterm-report.component.tsx +39 -0
- package/src/index.ts +11 -0
- package/src/modals/autopsy-report/autopsy-print-preview-confirmation.modal.tsx +569 -0
- package/src/modals/autopsy-report/autopsy-print-preview-confirmation.scss +715 -0
- package/src/modals/mortuary-gate-pass/print-preview-confirmation.modal.tsx +257 -0
- package/src/modals/mortuary-gate-pass/print-preview-confirmation.resource.ts +0 -0
- package/src/modals/mortuary-gate-pass/print-preview-confirmation.scss +333 -0
- package/src/routes.json +15 -0
- package/src/utils/utils.ts +6 -0
- package/src/view-details/panels/attachement.component.tsx +17 -3
- package/src/view-details/panels/autopsy.component.tsx +89 -75
- package/src/view-details/panels/billing-history.component.tsx +8 -1
- package/src/view-details/view-details.component.tsx +6 -2
- package/translations/am.json +8 -3
- package/translations/en.json +8 -3
- package/translations/sw.json +8 -3
- package/dist/201.js +0 -1
- package/dist/201.js.map +0 -1
- package/dist/389.js +0 -1
- package/dist/389.js.map +0 -1
- package/dist/420.js +0 -2
- package/dist/420.js.map +0 -1
- package/dist/798.js +0 -1
- package/dist/798.js.map +0 -1
- /package/dist/{420.js.LICENSE.txt → 429.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}},{"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.
|
|
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":"print-post-mortem-overflow-menu-item","component":"printPostMortemOverflowMenuItem","slot":"print-post-mortem-overflow-menu-item-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"}],"modals":[{"name":"print-confirmation-modal","component":"printConfirmationModal"},{"name":"autopsy-report-modal","component":"autopsyReportModal"}],"pages":[{"component":"root","route":"morgue"}],"version":"5.4.2-pre.2344"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@ import { Tag as TagIcon } from '@carbon/react/icons';
|
|
|
6
6
|
import capitalize from 'lodash-es/capitalize';
|
|
7
7
|
import startCase from 'lodash-es/startCase';
|
|
8
8
|
import { formatDateTime, convertDateToDays } from '../utils/utils';
|
|
9
|
-
import { useVisit } from '@openmrs/esm-framework';
|
|
9
|
+
import { ExtensionSlot, useVisit } from '@openmrs/esm-framework';
|
|
10
10
|
|
|
11
11
|
interface BedProps {
|
|
12
12
|
bedNumber?: string;
|
|
@@ -23,7 +23,6 @@ interface BedProps {
|
|
|
23
23
|
onSwapCompartment?: () => void;
|
|
24
24
|
onDispose?: () => void;
|
|
25
25
|
onPrintGatePass?: () => void;
|
|
26
|
-
onPrintPostmortem?: () => void;
|
|
27
26
|
onViewDetails?: () => void;
|
|
28
27
|
isDischarged?: boolean;
|
|
29
28
|
}
|
|
@@ -43,7 +42,6 @@ const BedCard: React.FC<BedProps> = ({
|
|
|
43
42
|
onSwapCompartment,
|
|
44
43
|
onDispose,
|
|
45
44
|
onPrintGatePass,
|
|
46
|
-
onPrintPostmortem,
|
|
47
45
|
onViewDetails,
|
|
48
46
|
isDischarged = false,
|
|
49
47
|
}) => {
|
|
@@ -97,9 +95,16 @@ const BedCard: React.FC<BedProps> = ({
|
|
|
97
95
|
<OverflowMenu flipped>
|
|
98
96
|
{onAdmit && <OverflowMenuItem onClick={onAdmit} itemText={t('admit', 'Admit')} />}
|
|
99
97
|
{onViewDetails && (
|
|
100
|
-
<OverflowMenuItem onClick={
|
|
98
|
+
<OverflowMenuItem onClick={onViewDetails} itemText={t('viewDetails', 'View details')} />
|
|
99
|
+
)}
|
|
100
|
+
{isDischarged && (
|
|
101
|
+
<ExtensionSlot
|
|
102
|
+
name="print-post-mortem-overflow-menu-item-slot"
|
|
103
|
+
state={{
|
|
104
|
+
patientUuid: patientUuid,
|
|
105
|
+
}}
|
|
106
|
+
/>
|
|
101
107
|
)}
|
|
102
|
-
{onPostmortem && <OverflowMenuItem onClick={onPostmortem} itemText={t('postmortem', 'Postmortem')} />}
|
|
103
108
|
{onDischarge && <OverflowMenuItem onClick={onDischarge} itemText={t('discharge', 'Discharge')} />}
|
|
104
109
|
{onSwapCompartment && (
|
|
105
110
|
<OverflowMenuItem onClick={onSwapCompartment} itemText={t('swapCompartment', 'Swap Compartment')} />
|
|
@@ -108,12 +113,6 @@ const BedCard: React.FC<BedProps> = ({
|
|
|
108
113
|
{onPrintGatePass && (
|
|
109
114
|
<OverflowMenuItem onClick={onPrintGatePass} itemText={t('printGatePass', 'Gate Pass')} />
|
|
110
115
|
)}
|
|
111
|
-
{onPrintPostmortem && (
|
|
112
|
-
<OverflowMenuItem
|
|
113
|
-
onClick={onPrintPostmortem}
|
|
114
|
-
itemText={t('printPostmortemReport', 'Postmortem Report')}
|
|
115
|
-
/>
|
|
116
|
-
)}
|
|
117
116
|
</OverflowMenu>
|
|
118
117
|
</div>
|
|
119
118
|
</div>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { launchWorkspace, showModal, useConfig } from '@openmrs/esm-framework';
|
|
3
4
|
import { DataTableSkeleton, InlineLoading, Pagination } from '@carbon/react';
|
|
4
|
-
import { launchWorkspace, useConfig } from '@openmrs/esm-framework';
|
|
5
5
|
import styles from '../bed-layout.scss';
|
|
6
|
-
import { type MortuaryLocationResponse } from '../../types';
|
|
6
|
+
import { Patient, type MortuaryLocationResponse } from '../../types';
|
|
7
7
|
import { ConfigObject } from '../../config-schema';
|
|
8
8
|
import { mutate as mutateSWR } from 'swr';
|
|
9
9
|
import usePatients, { useMortuaryDischargeEncounter } from './discharged-bed-layout.resource';
|
|
@@ -12,7 +12,7 @@ import BedCard from '../../bed/bed.component';
|
|
|
12
12
|
interface BedLayoutProps {
|
|
13
13
|
AdmittedDeceasedPatient: MortuaryLocationResponse | null;
|
|
14
14
|
isLoading: boolean;
|
|
15
|
-
onPrintGatePass?: (
|
|
15
|
+
onPrintGatePass?: (patient: Patient, encounterDate?: string) => void;
|
|
16
16
|
onPrintPostmortem?: (patientUuid: string) => void;
|
|
17
17
|
mutate?: () => void;
|
|
18
18
|
}
|
|
@@ -29,6 +29,7 @@ const DischargedBedLayout: React.FC<BedLayoutProps> = ({
|
|
|
29
29
|
|
|
30
30
|
const {
|
|
31
31
|
dischargedPatientUuids,
|
|
32
|
+
encounters,
|
|
32
33
|
isLoading: encountersLoading,
|
|
33
34
|
error: encountersError,
|
|
34
35
|
currentPage,
|
|
@@ -44,9 +45,25 @@ const DischargedBedLayout: React.FC<BedLayoutProps> = ({
|
|
|
44
45
|
error: patientsError,
|
|
45
46
|
} = usePatients(dischargedPatientUuids || []);
|
|
46
47
|
|
|
47
|
-
const
|
|
48
|
+
const getEncounterDateForPatient = (patientUuid: string): string | null => {
|
|
49
|
+
if (!encounters || encounters.length === 0) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const patientEncounter = encounters.find((encounter) => encounter.patient?.uuid === patientUuid);
|
|
54
|
+
|
|
55
|
+
return patientEncounter?.encounterDateTime || null;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const handlePrintGatePass = (patient: Patient, encounterDate?: string) => {
|
|
48
59
|
if (onPrintGatePass) {
|
|
49
|
-
onPrintGatePass(
|
|
60
|
+
onPrintGatePass(patient, encounterDate);
|
|
61
|
+
} else {
|
|
62
|
+
const dispose = showModal('print-confirmation-modal', {
|
|
63
|
+
onClose: () => dispose(),
|
|
64
|
+
patient: patient,
|
|
65
|
+
encounterDate: encounterDate,
|
|
66
|
+
});
|
|
50
67
|
}
|
|
51
68
|
};
|
|
52
69
|
|
|
@@ -97,6 +114,7 @@ const DischargedBedLayout: React.FC<BedLayoutProps> = ({
|
|
|
97
114
|
const age = patient?.person?.age;
|
|
98
115
|
const causeOfDeath = patient?.person?.causeOfDeath?.display;
|
|
99
116
|
const dateOfDeath = patient?.person?.deathDate;
|
|
117
|
+
const encounterDate = getEncounterDateForPatient(patientUuid);
|
|
100
118
|
|
|
101
119
|
return (
|
|
102
120
|
<BedCard
|
|
@@ -107,8 +125,7 @@ const DischargedBedLayout: React.FC<BedLayoutProps> = ({
|
|
|
107
125
|
causeOfDeath={causeOfDeath}
|
|
108
126
|
dateOfDeath={dateOfDeath}
|
|
109
127
|
patientUuid={patientUuid}
|
|
110
|
-
onPrintGatePass={() => handlePrintGatePass(
|
|
111
|
-
onPrintPostmortem={() => handlePrintPostmortem(patientUuid)}
|
|
128
|
+
onPrintGatePass={() => handlePrintGatePass(patient, encounterDate)}
|
|
112
129
|
isDischarged={true}
|
|
113
130
|
/>
|
|
114
131
|
);
|
|
@@ -16,13 +16,14 @@ import {
|
|
|
16
16
|
OverflowMenuItem,
|
|
17
17
|
DataTableSkeleton,
|
|
18
18
|
} from '@carbon/react';
|
|
19
|
-
import { useConfig } from '@openmrs/esm-framework';
|
|
19
|
+
import { ExtensionSlot, PrinterIcon, showModal, useConfig } from '@openmrs/esm-framework';
|
|
20
20
|
import styles from '../bed-linelist-view.scss';
|
|
21
21
|
import { formatDateTime } from '../../utils/utils';
|
|
22
|
-
import { type MortuaryLocationResponse } from '../../types';
|
|
22
|
+
import { type Patient, type MortuaryLocationResponse } from '../../types';
|
|
23
23
|
import { ConfigObject } from '../../config-schema';
|
|
24
24
|
import usePatients, { useMortuaryDischargeEncounter } from '../../bed-layout/discharged/discharged-bed-layout.resource';
|
|
25
25
|
import { EmptyState } from '@openmrs/esm-patient-common-lib';
|
|
26
|
+
import { Printer } from '@carbon/react/icons';
|
|
26
27
|
|
|
27
28
|
interface DischargedBedLineListViewProps {
|
|
28
29
|
AdmittedDeceasedPatient: MortuaryLocationResponse | null;
|
|
@@ -30,8 +31,7 @@ interface DischargedBedLineListViewProps {
|
|
|
30
31
|
paginated?: boolean;
|
|
31
32
|
initialPageSize?: number;
|
|
32
33
|
pageSizes?: number[];
|
|
33
|
-
onPrintGatePass?: (
|
|
34
|
-
onPrintPostmortem?: (patientUuid: string) => void;
|
|
34
|
+
onPrintGatePass?: (patient: any, encounterDate?: string) => void;
|
|
35
35
|
mutate?: () => void;
|
|
36
36
|
}
|
|
37
37
|
|
|
@@ -42,7 +42,6 @@ const DischargedBedLineListView: React.FC<DischargedBedLineListViewProps> = ({
|
|
|
42
42
|
initialPageSize = 10,
|
|
43
43
|
pageSizes = [10, 20, 30, 40, 50],
|
|
44
44
|
onPrintGatePass,
|
|
45
|
-
onPrintPostmortem,
|
|
46
45
|
mutate,
|
|
47
46
|
}) => {
|
|
48
47
|
const { t } = useTranslation();
|
|
@@ -53,6 +52,7 @@ const DischargedBedLineListView: React.FC<DischargedBedLineListViewProps> = ({
|
|
|
53
52
|
|
|
54
53
|
const {
|
|
55
54
|
dischargedPatientUuids,
|
|
55
|
+
encounters,
|
|
56
56
|
isLoading: encountersLoading,
|
|
57
57
|
error: encountersError,
|
|
58
58
|
} = useMortuaryDischargeEncounter(morgueDischargeEncounterTypeUuid, AdmittedDeceasedPatient);
|
|
@@ -71,6 +71,7 @@ const DischargedBedLineListView: React.FC<DischargedBedLineListViewProps> = ({
|
|
|
71
71
|
{ key: 'causeOfDeath', header: t('causeOfDeath', 'Cause of Death') },
|
|
72
72
|
{ key: 'dateOfDeath', header: t('dateOfDeath', 'Date of Death') },
|
|
73
73
|
{ key: 'daysSinceDeath', header: t('daysSinceDeath', 'Days Since Death') },
|
|
74
|
+
{ key: 'dischargeDate', header: t('dischargeDate', 'Discharge Date') },
|
|
74
75
|
{ key: 'action', header: t('action', 'Action') },
|
|
75
76
|
];
|
|
76
77
|
|
|
@@ -84,15 +85,25 @@ const DischargedBedLineListView: React.FC<DischargedBedLineListViewProps> = ({
|
|
|
84
85
|
return Math.floor(timeDiff / (1000 * 3600 * 24));
|
|
85
86
|
};
|
|
86
87
|
|
|
87
|
-
const
|
|
88
|
-
if (
|
|
89
|
-
|
|
88
|
+
const getEncounterDateForPatient = (patientUuid: string): string | null => {
|
|
89
|
+
if (!encounters || encounters.length === 0) {
|
|
90
|
+
return null;
|
|
90
91
|
}
|
|
92
|
+
|
|
93
|
+
const patientEncounter = encounters.find((encounter) => encounter.patient?.uuid === patientUuid);
|
|
94
|
+
|
|
95
|
+
return patientEncounter?.encounterDateTime || null;
|
|
91
96
|
};
|
|
92
97
|
|
|
93
|
-
const
|
|
94
|
-
if (
|
|
95
|
-
|
|
98
|
+
const handlePrintGatePass = (patient: Patient, encounterDate?: string) => {
|
|
99
|
+
if (onPrintGatePass) {
|
|
100
|
+
onPrintGatePass(patient, encounterDate);
|
|
101
|
+
} else {
|
|
102
|
+
const dispose = showModal('print-confirmation-modal', {
|
|
103
|
+
onClose: () => dispose(),
|
|
104
|
+
patient: patient,
|
|
105
|
+
encounterDate: encounterDate,
|
|
106
|
+
});
|
|
96
107
|
}
|
|
97
108
|
};
|
|
98
109
|
|
|
@@ -109,9 +120,12 @@ const DischargedBedLineListView: React.FC<DischargedBedLineListViewProps> = ({
|
|
|
109
120
|
const causeOfDeath = patient?.person?.causeOfDeath?.display || '-';
|
|
110
121
|
const dateOfDeath = patient?.person?.deathDate;
|
|
111
122
|
const daysSinceDeath = calculateDaysSinceDeath(dateOfDeath);
|
|
123
|
+
const encounterDate = getEncounterDateForPatient(patientUuid);
|
|
112
124
|
|
|
113
125
|
return {
|
|
114
126
|
id: patientUuid,
|
|
127
|
+
patient: patient,
|
|
128
|
+
encounterDate: encounterDate,
|
|
115
129
|
idNumber:
|
|
116
130
|
patient?.identifiers
|
|
117
131
|
?.find((id) => id.display?.includes('OpenMRS ID'))
|
|
@@ -123,12 +137,13 @@ const DischargedBedLineListView: React.FC<DischargedBedLineListViewProps> = ({
|
|
|
123
137
|
causeOfDeath: causeOfDeath,
|
|
124
138
|
dateOfDeath: formatDateTime(dateOfDeath),
|
|
125
139
|
daysSinceDeath: daysSinceDeath.toString(),
|
|
140
|
+
dischargeDate: formatDateTime(encounterDate),
|
|
126
141
|
action: patientUuid,
|
|
127
142
|
};
|
|
128
143
|
});
|
|
129
144
|
|
|
130
145
|
return rows;
|
|
131
|
-
}, [dischargedPatients]);
|
|
146
|
+
}, [dischargedPatients, getEncounterDateForPatient]);
|
|
132
147
|
|
|
133
148
|
const totalCount = allRows.length;
|
|
134
149
|
const startIndex = (currentPage - 1) * currPageSize;
|
|
@@ -202,8 +217,9 @@ const DischargedBedLineListView: React.FC<DischargedBedLineListViewProps> = ({
|
|
|
202
217
|
</TableHead>
|
|
203
218
|
<TableBody>
|
|
204
219
|
{rows.map((row) => {
|
|
205
|
-
const
|
|
206
|
-
const
|
|
220
|
+
const rowData = paginatedRows.find((r) => r.id === row.id);
|
|
221
|
+
const patientData = rowData?.patient;
|
|
222
|
+
const encounterDate = rowData?.encounterDate;
|
|
207
223
|
|
|
208
224
|
return (
|
|
209
225
|
<TableRow key={row.id} {...getRowProps({ row })}>
|
|
@@ -211,16 +227,15 @@ const DischargedBedLineListView: React.FC<DischargedBedLineListViewProps> = ({
|
|
|
211
227
|
<TableCell key={cell.id} {...getCellProps({ cell })}>
|
|
212
228
|
{cell.info.header === 'action' ? (
|
|
213
229
|
<div className={styles.actionButtons}>
|
|
214
|
-
<OverflowMenu flipped>
|
|
230
|
+
<OverflowMenu renderIcon={Printer} flipped>
|
|
215
231
|
<OverflowMenuItem
|
|
216
|
-
onClick={() => handlePrintGatePass(
|
|
232
|
+
onClick={() => handlePrintGatePass(patientData, encounterDate)}
|
|
217
233
|
itemText={t('printGatePass', 'Gate Pass')}
|
|
218
234
|
disabled={!patientData}
|
|
219
235
|
/>
|
|
220
|
-
<
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
disabled={!patientData}
|
|
236
|
+
<ExtensionSlot
|
|
237
|
+
name="print-post-mortem-overflow-menu-item-slot"
|
|
238
|
+
state={{ patientUuid: row.id }}
|
|
224
239
|
/>
|
|
225
240
|
</OverflowMenu>
|
|
226
241
|
</div>
|
package/src/config-schema.ts
CHANGED
|
@@ -106,7 +106,7 @@ export const configSchema = {
|
|
|
106
106
|
autopsyEncounterFormUuid: {
|
|
107
107
|
_type: Type.String,
|
|
108
108
|
_description: 'Encounter UUID for autopsy',
|
|
109
|
-
_default: '
|
|
109
|
+
_default: '465a92f2-baf8-42e9-9612-53064be868e8',
|
|
110
110
|
},
|
|
111
111
|
courtOrderCaseNumberUuid: {
|
|
112
112
|
_type: Type.String,
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { OverflowMenuItem } from '@carbon/react';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
import { showModal, useConfig } from '@openmrs/esm-framework';
|
|
5
|
+
import { ConfigObject } from '../../config-schema';
|
|
6
|
+
import { useAutospyEncounter } from '../../view-details/view-details.resource';
|
|
7
|
+
import { usePerson } from '../../deceased-patient-header/deceasedInfo/deceased-info.resource';
|
|
8
|
+
|
|
9
|
+
interface PrintPostMortemOverflowMenuItemProps {
|
|
10
|
+
patientUuid?: string;
|
|
11
|
+
}
|
|
12
|
+
const PrintPostMortemOverflowMenuItem: React.FC<PrintPostMortemOverflowMenuItemProps> = ({ patientUuid }) => {
|
|
13
|
+
const { t } = useTranslation();
|
|
14
|
+
const { autopsyEncounterFormUuid } = useConfig<ConfigObject>();
|
|
15
|
+
|
|
16
|
+
const { encounters, isLoading, error, mutate, isValidating } = useAutospyEncounter(
|
|
17
|
+
patientUuid,
|
|
18
|
+
autopsyEncounterFormUuid,
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
const handlePrintPostmortem = () => {
|
|
22
|
+
const dispose = showModal('autopsy-report-modal', {
|
|
23
|
+
onClose: () => dispose(),
|
|
24
|
+
encounters: encounters,
|
|
25
|
+
patientUuid,
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
return (
|
|
29
|
+
<>
|
|
30
|
+
<OverflowMenuItem
|
|
31
|
+
onClick={() => handlePrintPostmortem()}
|
|
32
|
+
itemText={t('printPostMortemReport', 'Postmortem Report')}
|
|
33
|
+
disabled={isLoading || !encounters?.length}
|
|
34
|
+
/>
|
|
35
|
+
</>
|
|
36
|
+
);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default PrintPostMortemOverflowMenuItem;
|
package/src/index.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { configSchema } from './config-schema';
|
|
|
9
9
|
import { createLeftPanelLink } from './left-panel/morgue-left-panel-link.component';
|
|
10
10
|
import FormEntryWorkspace from './forms/form-entry-workspace/form-entry-workspace.workspace';
|
|
11
11
|
import DisposeForm from './forms/dispose-deceased-person-workspace/dispose-deceased-person.workspace';
|
|
12
|
+
import PrintPostMortemOverflowMenuItem from './extension/overflow-menu-item-postmortem/print-postmorterm-report.component';
|
|
12
13
|
const moduleName = '@kenyaemr/esm-morgue-app';
|
|
13
14
|
|
|
14
15
|
const options = {
|
|
@@ -58,3 +59,13 @@ export const dischargeBodyForm = getAsyncLifecycle(
|
|
|
58
59
|
export const mortuaryFormEntry = getSyncLifecycle(FormEntryWorkspace, options);
|
|
59
60
|
export const disposeDeceasedPersonForm = getSyncLifecycle(DisposeForm, options);
|
|
60
61
|
export const mortuaryChartView = getAsyncLifecycle(() => import('./view-details/main/main.component'), options);
|
|
62
|
+
export const printConfirmationModal = getAsyncLifecycle(
|
|
63
|
+
() => import('./modals/mortuary-gate-pass/print-preview-confirmation.modal'),
|
|
64
|
+
options,
|
|
65
|
+
);
|
|
66
|
+
export const autopsyReportModal = getAsyncLifecycle(
|
|
67
|
+
() => import('./modals/autopsy-report/autopsy-print-preview-confirmation.modal'),
|
|
68
|
+
options,
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
export const printPostMortemOverflowMenuItem = getSyncLifecycle(PrintPostMortemOverflowMenuItem, options);
|