@kenyaemr/esm-care-panel-app 5.4.2-pre.2203 → 5.4.2-pre.2223
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 +30 -192
- package/dist/144.js +2 -0
- package/dist/144.js.map +1 -0
- package/dist/174.js +1 -0
- package/dist/174.js.map +1 -0
- package/dist/216.js +2 -0
- package/dist/216.js.map +1 -0
- package/dist/300.js +1 -0
- package/dist/41.js +2 -0
- package/dist/41.js.map +1 -0
- package/dist/470.js +1 -0
- package/dist/470.js.map +1 -0
- package/dist/474.js +2 -0
- package/dist/474.js.map +1 -0
- package/dist/495.js +1 -0
- package/dist/{372.js.map → 495.js.map} +1 -1
- package/dist/537.js +1 -0
- package/dist/537.js.map +1 -0
- package/dist/58.js +1 -0
- package/dist/58.js.map +1 -0
- package/dist/613.js +2 -0
- package/dist/613.js.map +1 -0
- package/dist/684.js +1 -0
- package/dist/684.js.map +1 -0
- package/dist/837.js +2 -0
- package/dist/837.js.LICENSE.txt +29 -0
- package/dist/837.js.map +1 -0
- package/dist/838.js +1 -0
- package/dist/838.js.map +1 -0
- package/dist/858.js +2 -0
- package/dist/858.js.map +1 -0
- package/dist/876.js +1 -0
- package/dist/876.js.map +1 -0
- package/dist/89.js +1 -0
- package/dist/89.js.map +1 -0
- package/dist/907.js +1 -0
- package/dist/907.js.map +1 -0
- package/dist/913.js +2 -0
- package/dist/{591.js.map → 913.js.map} +1 -1
- package/dist/kenyaemr-esm-care-panel-app.js +1 -1
- package/dist/kenyaemr-esm-care-panel-app.js.buildmanifest.json +289 -97
- package/dist/kenyaemr-esm-care-panel-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 +4 -1
- package/src/care-panel/care-panel.component.test.tsx +3 -3
- package/src/care-panel/care-panel.component.tsx +24 -33
- package/src/care-panel/care-panel.scss +3 -2
- package/src/care-panel-dashboard/care-panel-dashboard.component.tsx +4 -11
- package/src/care-panel-dashboard/care-panel-dashboard.scss +1 -1
- package/src/care-programs/care-programs.component.tsx +3 -9
- package/src/care-programs/care-programs.test.tsx +5 -5
- package/src/declarations.d.ts +0 -13
- package/src/index.ts +9 -1
- package/src/patient-discharge/discharge-workspace-siderail.component.tsx +23 -0
- package/src/patient-discharge/patient-discharge.resource.tsx +123 -0
- package/src/patient-discharge/patient-discharge.workspace.test.tsx +160 -0
- package/src/patient-discharge/patient-discharge.workspace.tsx +93 -0
- package/src/patient-summary/patient-summary.component.tsx +1 -1
- package/src/patient-summary/patient-summary.scss +1 -1
- package/src/program-enrollment/program-enrollment.component.tsx +15 -14
- package/src/program-enrollment/program-enrollment.scss +3 -3
- package/src/program-summary/program-summary.component.tsx +1 -1
- package/src/program-summary/program-summary.scss +1 -1
- package/src/regimen/regimen-history.component.tsx +1 -1
- package/src/regimen/regimen-history.scss +4 -4
- package/src/regimen-editor/regimen-form.component.tsx +6 -6
- package/src/regimen-editor/standard-regimen.scss +2 -2
- package/src/routes.json +15 -0
- package/src/types/index.ts +32 -0
- package/translations/en.json +1 -0
- package/dist/130.js +0 -2
- package/dist/130.js.LICENSE.txt +0 -7
- package/dist/130.js.map +0 -1
- package/dist/2.js +0 -1
- package/dist/2.js.map +0 -1
- package/dist/292.js +0 -2
- package/dist/292.js.map +0 -1
- package/dist/316.js +0 -2
- package/dist/316.js.map +0 -1
- package/dist/346.js +0 -1
- package/dist/346.js.map +0 -1
- package/dist/372.js +0 -1
- package/dist/373.js +0 -2
- package/dist/373.js.map +0 -1
- package/dist/446.js +0 -2
- package/dist/446.js.map +0 -1
- package/dist/574.js +0 -1
- package/dist/589.js +0 -1
- package/dist/589.js.map +0 -1
- package/dist/591.js +0 -2
- package/dist/698.js +0 -2
- package/dist/698.js.map +0 -1
- package/dist/784.js +0 -2
- package/dist/784.js.map +0 -1
- /package/dist/{316.js.LICENSE.txt → 144.js.LICENSE.txt} +0 -0
- /package/dist/{446.js.LICENSE.txt → 216.js.LICENSE.txt} +0 -0
- /package/dist/{292.js.LICENSE.txt → 41.js.LICENSE.txt} +0 -0
- /package/dist/{784.js.LICENSE.txt → 474.js.LICENSE.txt} +0 -0
- /package/dist/{373.js.LICENSE.txt → 613.js.LICENSE.txt} +0 -0
- /package/dist/{698.js.LICENSE.txt → 858.js.LICENSE.txt} +0 -0
- /package/dist/{591.js.LICENSE.txt → 913.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import React, { useMemo } from 'react';
|
|
2
|
+
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { InlineLoading, InlineNotification } from '@carbon/react';
|
|
4
|
+
import {
|
|
5
|
+
DefaultWorkspaceProps,
|
|
6
|
+
Encounter,
|
|
7
|
+
ExtensionSlot,
|
|
8
|
+
useEmrConfiguration,
|
|
9
|
+
usePatient,
|
|
10
|
+
} from '@openmrs/esm-framework';
|
|
11
|
+
import { useVisitOrOfflineVisit } from '@openmrs/esm-patient-common-lib';
|
|
12
|
+
import { usePatientDischarge } from './patient-discharge.resource';
|
|
13
|
+
import { WardPatient } from '../types';
|
|
14
|
+
|
|
15
|
+
const IN_PATIENT_DISCHARGE_FORM_UUID = '98a781d2-b777-4756-b4c9-c9b0deb3483c';
|
|
16
|
+
|
|
17
|
+
type PatientDischargeWorkspaceProps = DefaultWorkspaceProps & {
|
|
18
|
+
readonly patientUuid: string;
|
|
19
|
+
readonly wardPatient: WardPatient;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export function PatientDischargeWorkspace(props: PatientDischargeWorkspaceProps) {
|
|
23
|
+
const { t } = useTranslation();
|
|
24
|
+
const { patientUuid, closeWorkspace, closeWorkspaceWithSavedChanges, wardPatient, promptBeforeClosing } = props;
|
|
25
|
+
|
|
26
|
+
const { isLoading: isLoadingVisit, currentVisit, error: visitError } = useVisitOrOfflineVisit(patientUuid);
|
|
27
|
+
const { patient, isLoading: isLoadingPatient, error: patientError } = usePatient(patientUuid);
|
|
28
|
+
const { emrConfiguration, isLoadingEmrConfiguration, errorFetchingEmrConfiguration } = useEmrConfiguration();
|
|
29
|
+
|
|
30
|
+
const { handleDischarge } = usePatientDischarge();
|
|
31
|
+
|
|
32
|
+
const encounterUuid = useMemo(() => currentVisit?.encounters?.[0]?.uuid ?? null, [currentVisit?.encounters]);
|
|
33
|
+
|
|
34
|
+
const state = useMemo<Record<string, unknown>>(
|
|
35
|
+
() => ({
|
|
36
|
+
view: 'form',
|
|
37
|
+
formUuid: IN_PATIENT_DISCHARGE_FORM_UUID,
|
|
38
|
+
visitUuid: currentVisit?.uuid ?? null,
|
|
39
|
+
visitTypeUuid: currentVisit?.visitType?.uuid ?? null,
|
|
40
|
+
patientUuid: patientUuid ?? null,
|
|
41
|
+
patient,
|
|
42
|
+
encounterUuid,
|
|
43
|
+
closeWorkspaceWithSavedChanges,
|
|
44
|
+
closeWorkspace,
|
|
45
|
+
promptBeforeClosing,
|
|
46
|
+
handlePostResponse: (encounter: Encounter) =>
|
|
47
|
+
handleDischarge(encounter, wardPatient, emrConfiguration as Record<string, unknown>, currentVisit),
|
|
48
|
+
}),
|
|
49
|
+
[
|
|
50
|
+
patientUuid,
|
|
51
|
+
currentVisit,
|
|
52
|
+
encounterUuid,
|
|
53
|
+
patient,
|
|
54
|
+
closeWorkspace,
|
|
55
|
+
promptBeforeClosing,
|
|
56
|
+
emrConfiguration,
|
|
57
|
+
closeWorkspaceWithSavedChanges,
|
|
58
|
+
handleDischarge,
|
|
59
|
+
],
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
const isLoading = isLoadingVisit || isLoadingPatient || isLoadingEmrConfiguration;
|
|
63
|
+
const error = visitError || patientError || errorFetchingEmrConfiguration;
|
|
64
|
+
|
|
65
|
+
if (isLoading) {
|
|
66
|
+
return <InlineLoading description={t('loading', 'Loading')} iconDescription={t('loading', 'Loading data...')} />;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (error) {
|
|
70
|
+
return (
|
|
71
|
+
<InlineNotification
|
|
72
|
+
aria-label={t('error', 'Error')}
|
|
73
|
+
kind="error"
|
|
74
|
+
onClose={() => {}}
|
|
75
|
+
onCloseButtonClick={() => {}}
|
|
76
|
+
statusIconDescription="notification"
|
|
77
|
+
subtitle={t('errorLoadingPatientWorkspace', 'Error loading patient workspace {{errorMessage}}', {
|
|
78
|
+
errorMessage: error?.message,
|
|
79
|
+
})}
|
|
80
|
+
title={t('error', 'Error')}
|
|
81
|
+
/>
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return (
|
|
86
|
+
<div>
|
|
87
|
+
<ExtensionSlot name="visit-context-header-slot" state={{ patientUuid }} />
|
|
88
|
+
{patient && <ExtensionSlot name="form-widget-slot" state={state} />}
|
|
89
|
+
</div>
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export default PatientDischargeWorkspace;
|
|
@@ -38,7 +38,7 @@ const PatientSummary: React.FC<PatientSummaryProps> = ({ patientUuid }) => {
|
|
|
38
38
|
}, [showPrintComponent, handlePrint]);
|
|
39
39
|
|
|
40
40
|
if (isLoading) {
|
|
41
|
-
return <StructuredListSkeleton
|
|
41
|
+
return <StructuredListSkeleton />;
|
|
42
42
|
}
|
|
43
43
|
if (error) {
|
|
44
44
|
return <span>{t('errorPatientSummary', 'Error loading patient summary')}</span>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useMemo } from 'react';
|
|
1
|
+
import React, { ReactNode, useMemo } from 'react';
|
|
2
2
|
import { useTranslation } from 'react-i18next';
|
|
3
3
|
import {
|
|
4
4
|
Tile,
|
|
@@ -12,14 +12,15 @@ import {
|
|
|
12
12
|
OverflowMenu,
|
|
13
13
|
OverflowMenuItem,
|
|
14
14
|
TableContainer,
|
|
15
|
+
DataTableHeader,
|
|
15
16
|
} from '@carbon/react';
|
|
16
17
|
import styles from './program-enrollment.scss';
|
|
17
18
|
import isEmpty from 'lodash/isEmpty';
|
|
18
19
|
import dayjs from 'dayjs';
|
|
19
|
-
import { formatDate, restBaseUrl, useVisit } from '@openmrs/esm-framework';
|
|
20
|
+
import { formatDate, launchWorkspace, restBaseUrl, useVisit } from '@openmrs/esm-framework';
|
|
20
21
|
import orderBy from 'lodash/orderBy';
|
|
21
22
|
import { mutate } from 'swr';
|
|
22
|
-
import { getPatientUuidFromStore
|
|
23
|
+
import { getPatientUuidFromStore } from '@openmrs/esm-patient-common-lib';
|
|
23
24
|
import { useHeiOutcome } from '../hooks/useHeiOutcome';
|
|
24
25
|
|
|
25
26
|
export interface ProgramEnrollmentProps {
|
|
@@ -68,11 +69,11 @@ const ProgramEnrollment: React.FC<ProgramEnrollmentProps> = ({ enrollments = [],
|
|
|
68
69
|
const { currentVisit } = useVisit(getPatientUuidFromStore());
|
|
69
70
|
const { heiOutcome } = useHeiOutcome(currentVisit?.patient?.uuid);
|
|
70
71
|
const orderedEnrollments = orderBy(enrollments, 'dateEnrolled', 'desc');
|
|
71
|
-
const headers = useMemo(
|
|
72
|
+
const headers: Array<DataTableHeader> = useMemo(
|
|
72
73
|
() =>
|
|
73
74
|
Object.entries(programDetailsMap[programName] ?? { ...shareObjProperty }).map(([key, value]) => ({
|
|
74
75
|
key,
|
|
75
|
-
header: value,
|
|
76
|
+
header: value as ReactNode,
|
|
76
77
|
})),
|
|
77
78
|
[programName],
|
|
78
79
|
);
|
|
@@ -104,7 +105,7 @@ const ProgramEnrollment: React.FC<ProgramEnrollmentProps> = ({ enrollments = [],
|
|
|
104
105
|
};
|
|
105
106
|
|
|
106
107
|
const handleDiscontinue = (enrollment) => {
|
|
107
|
-
|
|
108
|
+
launchWorkspace('patient-form-entry-workspace', {
|
|
108
109
|
workspaceTitle: enrollment?.discontinuationFormName,
|
|
109
110
|
mutateForm: handleMutation,
|
|
110
111
|
formInfo: {
|
|
@@ -112,15 +113,15 @@ const ProgramEnrollment: React.FC<ProgramEnrollmentProps> = ({ enrollments = [],
|
|
|
112
113
|
visitTypeUuid: currentVisit?.visitType?.uuid ?? '',
|
|
113
114
|
visitUuid: currentVisit?.uuid ?? '',
|
|
114
115
|
formUuid: enrollment?.discontinuationFormUuid,
|
|
115
|
-
additionalProps:
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
additionalProps: {
|
|
117
|
+
enrollmentDetails: { dateEnrolled: new Date(enrollment.dateEnrolled), uuid: enrollment.enrollmentUuid },
|
|
118
|
+
},
|
|
118
119
|
},
|
|
119
120
|
});
|
|
120
121
|
};
|
|
121
122
|
|
|
122
123
|
const handleHeiOutcome = () => {
|
|
123
|
-
|
|
124
|
+
launchWorkspace('patient-form-entry-workspace', {
|
|
124
125
|
workspaceTitle: 'HEI Outcome',
|
|
125
126
|
mutateForm: () => {
|
|
126
127
|
mutate((key) => true, undefined, {
|
|
@@ -138,7 +139,7 @@ const ProgramEnrollment: React.FC<ProgramEnrollmentProps> = ({ enrollments = [],
|
|
|
138
139
|
};
|
|
139
140
|
|
|
140
141
|
const handleEditEnrollment = (enrollment) => {
|
|
141
|
-
|
|
142
|
+
launchWorkspace('patient-form-entry-workspace', {
|
|
142
143
|
workspaceTitle: enrollment?.enrollmentFormName,
|
|
143
144
|
mutateForm: () => {
|
|
144
145
|
mutate(
|
|
@@ -153,9 +154,9 @@ const ProgramEnrollment: React.FC<ProgramEnrollmentProps> = ({ enrollments = [],
|
|
|
153
154
|
formUuid: enrollment?.enrollmentFormUuid,
|
|
154
155
|
visitTypeUuid: currentVisit?.visitType?.uuid ?? '',
|
|
155
156
|
visitUuid: currentVisit?.uuid ?? '',
|
|
156
|
-
additionalProps:
|
|
157
|
-
|
|
158
|
-
|
|
157
|
+
additionalProps: {
|
|
158
|
+
enrollmentDetails: { dateEnrolled: new Date(enrollment.dateEnrolled), uuid: enrollment.enrollmentUuid },
|
|
159
|
+
},
|
|
159
160
|
},
|
|
160
161
|
});
|
|
161
162
|
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
@use '@carbon/styles/scss/type';
|
|
2
2
|
@use '@carbon/styles/scss/spacing';
|
|
3
3
|
@use '@carbon/colors';
|
|
4
|
-
@
|
|
4
|
+
@use '~@openmrs/esm-styleguide/src/vars' as *;
|
|
5
5
|
|
|
6
6
|
.desktopHeading {
|
|
7
7
|
h4 {
|
|
8
8
|
@include type.type-style('heading-compact-02');
|
|
9
9
|
color: $text-02;
|
|
10
|
-
background-color:
|
|
10
|
+
background-color: colors.$white;
|
|
11
11
|
padding-top: spacing.$spacing-02;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
justify-content: space-between;
|
|
26
26
|
text-align: left;
|
|
27
27
|
text-transform: capitalize;
|
|
28
|
-
background-color:
|
|
28
|
+
background-color: colors.$white;
|
|
29
29
|
padding-top: spacing.$spacing-02;
|
|
30
30
|
padding-bottom: spacing.$spacing-03;
|
|
31
31
|
}
|
|
@@ -18,7 +18,7 @@ const ProgramSummary: React.FC<ProgramSummaryProps> = ({ patientUuid, programNam
|
|
|
18
18
|
|
|
19
19
|
const isTablet = useLayoutType() == 'tablet';
|
|
20
20
|
if (isLoading) {
|
|
21
|
-
return <StructuredListSkeleton
|
|
21
|
+
return <StructuredListSkeleton />;
|
|
22
22
|
}
|
|
23
23
|
if (isError) {
|
|
24
24
|
return <span>{t('errorProgramSummary', 'Error loading HIV summary')}</span>;
|
|
@@ -25,7 +25,7 @@ const RegimenHistory: React.FC<RegimenHistoryProps> = ({ patientUuid, category }
|
|
|
25
25
|
const { regimen, isLoading, error } = useRegimenHistory(patientUuid, RegimenType[category]);
|
|
26
26
|
|
|
27
27
|
if (isLoading) {
|
|
28
|
-
return <StructuredListSkeleton
|
|
28
|
+
return <StructuredListSkeleton />;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
if (error) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
@use '@carbon/styles/scss/type';
|
|
2
2
|
@use '@carbon/styles/scss/spacing';
|
|
3
3
|
@use '@carbon/colors';
|
|
4
|
-
@
|
|
4
|
+
@use '~@openmrs/esm-styleguide/src/vars' as *;
|
|
5
5
|
|
|
6
6
|
.bodyShort01 {
|
|
7
7
|
@include type.type-style('body-compact-01');
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
h4 {
|
|
12
12
|
@include type.type-style('heading-compact-02');
|
|
13
13
|
color: $text-02;
|
|
14
|
-
background-color:
|
|
14
|
+
background-color: colors.$white;
|
|
15
15
|
padding-top: spacing.$spacing-02;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
.tabletHeading {
|
|
20
20
|
text-align: left;
|
|
21
21
|
text-transform: capitalize;
|
|
22
|
-
background-color:
|
|
22
|
+
background-color: colors.$white;
|
|
23
23
|
padding-top: spacing.$spacing-02;
|
|
24
24
|
}
|
|
25
25
|
.structuredList {
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
:global(.cds--structured-list-td) {
|
|
37
37
|
padding: 0.2rem 0.2rem 0.5rem;
|
|
38
38
|
}
|
|
39
|
-
background-color:
|
|
39
|
+
background-color: colors.$white;
|
|
40
40
|
}
|
|
@@ -336,8 +336,6 @@ const RegimenForm: React.FC<RegimenFormProps> = ({
|
|
|
336
336
|
<DatePicker
|
|
337
337
|
dateFormat="d/m/Y"
|
|
338
338
|
datePickerType="single"
|
|
339
|
-
id="regimenDate"
|
|
340
|
-
style={{ paddingBottom: '1rem' }}
|
|
341
339
|
maxDate={new Date().toISOString()}
|
|
342
340
|
onChange={([date]) => setVisitDate(date)}
|
|
343
341
|
value={visitDate}>
|
|
@@ -364,12 +362,12 @@ const RegimenForm: React.FC<RegimenFormProps> = ({
|
|
|
364
362
|
<RadioButtonGroup
|
|
365
363
|
className={styles.radioButtonWrapper}
|
|
366
364
|
name="regimenEvent"
|
|
367
|
-
onChange={(uuid) => setRegimenEvent(uuid)}>
|
|
365
|
+
onChange={(uuid) => setRegimenEvent(uuid as string)}>
|
|
368
366
|
<RadioButton
|
|
369
367
|
key={'start-regimen'}
|
|
370
368
|
labelText={t('startRegimen', 'Start')}
|
|
371
369
|
value={Regimen.startOrRestartConcept}
|
|
372
|
-
disabled={lastRegimenEncounter.uuid}
|
|
370
|
+
disabled={!!lastRegimenEncounter.uuid}
|
|
373
371
|
/>
|
|
374
372
|
<RadioButton
|
|
375
373
|
key={'restart-regimen'}
|
|
@@ -387,7 +385,9 @@ const RegimenForm: React.FC<RegimenFormProps> = ({
|
|
|
387
385
|
key={'stop-regimen'}
|
|
388
386
|
labelText={t('stopRegimen', 'Stop')}
|
|
389
387
|
value={Regimen.stopRegimenConcept}
|
|
390
|
-
disabled={
|
|
388
|
+
disabled={
|
|
389
|
+
!!lastRegimenEncounter.endDate || (!lastRegimenEncounter.uuid && !lastRegimenEncounter.endDate)
|
|
390
|
+
}
|
|
391
391
|
/>
|
|
392
392
|
<RadioButton
|
|
393
393
|
key={'undo-regimen'}
|
|
@@ -406,7 +406,7 @@ const RegimenForm: React.FC<RegimenFormProps> = ({
|
|
|
406
406
|
<RadioButtonGroup
|
|
407
407
|
className={styles.radioButtonWrapper}
|
|
408
408
|
name="regimenType"
|
|
409
|
-
onChange={(uuid) => setSelectedRegimenType(uuid)}>
|
|
409
|
+
onChange={(uuid) => setSelectedRegimenType(uuid as string)}>
|
|
410
410
|
<RadioButton key={'standardUuid'} labelText={'Use standard regimen'} value={'standardUuid'} />
|
|
411
411
|
<RadioButton
|
|
412
412
|
key={'nonStandardUuid'}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
@use '@carbon/styles/scss/type';
|
|
2
2
|
@use '@carbon/styles/scss/spacing';
|
|
3
3
|
@use '@carbon/colors';
|
|
4
|
-
@
|
|
4
|
+
@use '~@openmrs/esm-styleguide/src/vars' as *;
|
|
5
5
|
|
|
6
6
|
.inputContainer {
|
|
7
7
|
margin: spacing.$spacing-05 0;
|
|
8
8
|
}
|
|
9
9
|
.container {
|
|
10
10
|
margin: spacing.$spacing-05;
|
|
11
|
-
background-color:
|
|
11
|
+
background-color: colors.$white;
|
|
12
12
|
|
|
13
13
|
& section {
|
|
14
14
|
margin: spacing.$spacing-02 spacing.$spacing-05 0;
|
package/src/routes.json
CHANGED
|
@@ -58,6 +58,11 @@
|
|
|
58
58
|
"order": 1,
|
|
59
59
|
"online": true,
|
|
60
60
|
"offline": true
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"name": "patient-discharge-side-rail-icon",
|
|
64
|
+
"component": "patientDischargeSideRailIcon",
|
|
65
|
+
"slot": "action-menu-ward-patient-items-slot"
|
|
61
66
|
}
|
|
62
67
|
],
|
|
63
68
|
"workspaces": [
|
|
@@ -69,6 +74,16 @@
|
|
|
69
74
|
"canMaximize": true,
|
|
70
75
|
"canHide": true,
|
|
71
76
|
"width": "wider"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"name": "patient-care-discharge-workspace",
|
|
80
|
+
"title": "Patient Discharge",
|
|
81
|
+
"component": "patientDischargeWorkspace",
|
|
82
|
+
"type": "workspace",
|
|
83
|
+
"canMaximize": true,
|
|
84
|
+
"canHide": true,
|
|
85
|
+
"width": "extra-wide",
|
|
86
|
+
"groups": ["ward-patient"]
|
|
72
87
|
}
|
|
73
88
|
]
|
|
74
89
|
}
|
package/src/types/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { OpenmrsResource, Patient, Visit } from '@openmrs/esm-framework';
|
|
2
|
+
|
|
1
3
|
type HIVData = {
|
|
2
4
|
whoStage: number;
|
|
3
5
|
whoStageDate: string;
|
|
@@ -245,3 +247,33 @@ export interface Enrollment {
|
|
|
245
247
|
uuid: string;
|
|
246
248
|
};
|
|
247
249
|
}
|
|
250
|
+
|
|
251
|
+
export type WardPatient = {
|
|
252
|
+
/**
|
|
253
|
+
* Taken either from the inpatientAdmission object, the inpatientRequest object
|
|
254
|
+
* or the admissionLocation object (which contains the bed)
|
|
255
|
+
*/
|
|
256
|
+
patient: Patient;
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Taken either from the inpatientAdmission object, the inpatientRequest object
|
|
260
|
+
* or the admissionLocation object (which contains the bed)
|
|
261
|
+
*/
|
|
262
|
+
visit: Visit;
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* the bed assigned to the patient. This object is only set if the patient
|
|
266
|
+
* has a bed assigned
|
|
267
|
+
*/
|
|
268
|
+
bed: Bed;
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
interface Bed {
|
|
272
|
+
id: number;
|
|
273
|
+
uuid: string;
|
|
274
|
+
bedNumber: string;
|
|
275
|
+
bedType: OpenmrsResource;
|
|
276
|
+
row: number;
|
|
277
|
+
column: number;
|
|
278
|
+
status: OpenmrsResource;
|
|
279
|
+
}
|
package/translations/en.json
CHANGED
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"deleteRegimenModalConfirmationText": "Are you sure you want to delete regimen?",
|
|
40
40
|
"description": "Description",
|
|
41
41
|
"discard": "Discard",
|
|
42
|
+
"discharge": "Discharge",
|
|
42
43
|
"discontinue": "Discontinue",
|
|
43
44
|
"diseaseClassification": "Disease classification",
|
|
44
45
|
"drugAllergies": "Drug Allergies",
|