@openmrs/esm-patient-tests-app 11.3.1-pre.9452 → 11.3.1-pre.9458
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 +11 -11
- package/dist/{1935.js → 1176.js} +1 -1
- package/dist/1176.js.map +1 -0
- package/dist/1477.js +1 -1
- package/dist/1477.js.map +1 -1
- package/dist/1638.js +1 -1
- package/dist/1638.js.map +1 -1
- package/dist/4300.js +1 -1
- package/dist/629.js +1 -0
- package/dist/629.js.map +1 -0
- package/dist/671.js +1 -0
- package/dist/671.js.map +1 -0
- package/dist/7202.js +1 -1
- package/dist/7202.js.map +1 -1
- package/dist/790.js +1 -1
- package/dist/790.js.map +1 -1
- package/dist/9838.js +1 -0
- package/dist/9838.js.map +1 -0
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/openmrs-esm-patient-tests-app.js +1 -1
- package/dist/openmrs-esm-patient-tests-app.js.buildmanifest.json +109 -85
- package/dist/openmrs-esm-patient-tests-app.js.map +1 -1
- package/dist/routes.json +1 -1
- package/package.json +2 -2
- package/src/edit-test-results/modal/edit-lab-results.modal.tsx +4 -3
- package/src/index.ts +5 -1
- package/src/routes.json +2 -3
- package/src/test-orders/add-test-order/add-test-order.component.tsx +125 -0
- package/src/test-orders/add-test-order/add-test-order.test.tsx +22 -45
- package/src/test-orders/add-test-order/add-test-order.workspace.tsx +24 -152
- package/src/test-orders/add-test-order/exported-add-test-order.workspace.tsx +30 -0
- package/src/test-orders/add-test-order/test-order-form.component.tsx +68 -60
- package/src/test-orders/add-test-order/test-order.ts +3 -3
- package/src/test-orders/add-test-order/test-type-search.component.tsx +28 -60
- package/src/test-orders/api.ts +12 -3
- package/src/test-orders/lab-order-basket-panel/lab-order-basket-item-tile.component.tsx +1 -1
- package/src/test-orders/lab-order-basket-panel/lab-order-basket-panel.extension.tsx +26 -84
- package/src/test-orders/lab-order-basket-panel/lab-order-basket-panel.test.tsx +10 -12
- package/src/test-results/tree-view/tree-view.component.tsx +1 -1
- package/src/types.ts +0 -9
- package/translations/en.json +2 -4
- package/dist/1935.js.map +0 -1
- package/dist/34.js +0 -1
- package/dist/34.js.map +0 -1
- package/dist/6113.js +0 -1
- package/dist/6113.js.map +0 -1
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import React, { type ComponentProps, useMemo, useState } from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import { capitalize } from 'lodash-es';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
|
+
import { Button } from '@carbon/react';
|
|
6
|
+
import {
|
|
7
|
+
age,
|
|
8
|
+
ArrowLeftIcon,
|
|
9
|
+
getPatientName,
|
|
10
|
+
formatDate,
|
|
11
|
+
parseDate,
|
|
12
|
+
useLayoutType,
|
|
13
|
+
useConfig,
|
|
14
|
+
Workspace2,
|
|
15
|
+
type Visit,
|
|
16
|
+
type Workspace2DefinitionProps,
|
|
17
|
+
} from '@openmrs/esm-framework';
|
|
18
|
+
import { useOrderType, type OrderBasketItem, type TestOrderBasketItem } from '@openmrs/esm-patient-common-lib';
|
|
19
|
+
import { type ConfigObject } from '../../config-schema';
|
|
20
|
+
import { LabOrderForm } from './test-order-form.component';
|
|
21
|
+
import { TestTypeSearch } from './test-type-search.component';
|
|
22
|
+
import styles from './add-test-order.scss';
|
|
23
|
+
|
|
24
|
+
export interface AddLabOrderProps {
|
|
25
|
+
initialOrder?: OrderBasketItem;
|
|
26
|
+
orderTypeUuid: string;
|
|
27
|
+
patient: fhir.Patient;
|
|
28
|
+
visitContext: Visit;
|
|
29
|
+
closeWorkspace: Workspace2DefinitionProps['closeWorkspace'];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const AddLabOrder: React.FC<AddLabOrderProps> = ({
|
|
33
|
+
patient,
|
|
34
|
+
visitContext,
|
|
35
|
+
initialOrder,
|
|
36
|
+
orderTypeUuid,
|
|
37
|
+
closeWorkspace,
|
|
38
|
+
}) => {
|
|
39
|
+
const { t } = useTranslation();
|
|
40
|
+
const isTablet = useLayoutType() === 'tablet';
|
|
41
|
+
const [currentLabOrder, setCurrentLabOrder] = useState(initialOrder as TestOrderBasketItem);
|
|
42
|
+
const { additionalTestOrderTypes, orders } = useConfig<ConfigObject>();
|
|
43
|
+
const { orderType } = useOrderType(orderTypeUuid);
|
|
44
|
+
const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);
|
|
45
|
+
|
|
46
|
+
const title = useMemo(() => {
|
|
47
|
+
if (orderType) {
|
|
48
|
+
if (initialOrder?.action == 'REVISE') {
|
|
49
|
+
return t(`editOrderableForOrderType`, 'Edit {{orderTypeDisplay}}', {
|
|
50
|
+
orderTypeDisplay: orderType.display.toLocaleLowerCase(),
|
|
51
|
+
});
|
|
52
|
+
} else {
|
|
53
|
+
return t(`addOrderableForOrderType`, 'Add {{orderTypeDisplay}}', {
|
|
54
|
+
orderTypeDisplay: orderType.display.toLocaleLowerCase(),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
return '';
|
|
59
|
+
}
|
|
60
|
+
}, [orderType, t, initialOrder?.action]);
|
|
61
|
+
|
|
62
|
+
const orderableConceptSets = useMemo(() => {
|
|
63
|
+
const allOrderTypes: ConfigObject['additionalTestOrderTypes'] = [
|
|
64
|
+
{
|
|
65
|
+
label: t('labOrders', 'Lab orders'),
|
|
66
|
+
orderTypeUuid: orders.labOrderTypeUuid,
|
|
67
|
+
orderableConceptSets: orders.labOrderableConcepts,
|
|
68
|
+
},
|
|
69
|
+
...additionalTestOrderTypes,
|
|
70
|
+
];
|
|
71
|
+
return allOrderTypes.find((orderType) => orderType.orderTypeUuid === orderTypeUuid).orderableConceptSets;
|
|
72
|
+
}, [additionalTestOrderTypes, orderTypeUuid, orders.labOrderTypeUuid, orders.labOrderableConcepts, t]);
|
|
73
|
+
|
|
74
|
+
const patientName = patient ? getPatientName(patient) : '';
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<Workspace2 title={title} hasUnsavedChanges={hasUnsavedChanges}>
|
|
78
|
+
<div className={styles.container}>
|
|
79
|
+
{isTablet && (
|
|
80
|
+
<div className={styles.patientHeader}>
|
|
81
|
+
<span className={styles.bodyShort02}>{patientName}</span>
|
|
82
|
+
<span className={classNames(styles.text02, styles.bodyShort01)}>
|
|
83
|
+
{capitalize(patient?.gender)} · {age(patient?.birthDate)} ·{' '}
|
|
84
|
+
<span>{formatDate(parseDate(patient?.birthDate), { mode: 'wide', time: false })}</span>
|
|
85
|
+
</span>
|
|
86
|
+
</div>
|
|
87
|
+
)}
|
|
88
|
+
{!isTablet && (
|
|
89
|
+
<div className={styles.backButton}>
|
|
90
|
+
<Button
|
|
91
|
+
kind="ghost"
|
|
92
|
+
renderIcon={(props: ComponentProps<typeof ArrowLeftIcon>) => <ArrowLeftIcon size={24} {...props} />}
|
|
93
|
+
iconDescription={t('back', 'Back')}
|
|
94
|
+
size="sm"
|
|
95
|
+
onClick={() => closeWorkspace()}
|
|
96
|
+
>
|
|
97
|
+
<span>{t('back', 'Back')}</span>
|
|
98
|
+
</Button>
|
|
99
|
+
</div>
|
|
100
|
+
)}
|
|
101
|
+
{currentLabOrder ? (
|
|
102
|
+
<LabOrderForm
|
|
103
|
+
initialOrder={currentLabOrder}
|
|
104
|
+
closeWorkspace={closeWorkspace}
|
|
105
|
+
setHasUnsavedChanges={setHasUnsavedChanges}
|
|
106
|
+
orderTypeUuid={orderTypeUuid}
|
|
107
|
+
orderableConceptSets={orderableConceptSets}
|
|
108
|
+
patient={patient}
|
|
109
|
+
/>
|
|
110
|
+
) : (
|
|
111
|
+
<TestTypeSearch
|
|
112
|
+
orderTypeUuid={orderTypeUuid}
|
|
113
|
+
orderableConceptSets={orderableConceptSets}
|
|
114
|
+
openLabForm={setCurrentLabOrder}
|
|
115
|
+
closeWorkspace={closeWorkspace}
|
|
116
|
+
patient={patient}
|
|
117
|
+
visit={visitContext}
|
|
118
|
+
/>
|
|
119
|
+
)}
|
|
120
|
+
</div>
|
|
121
|
+
</Workspace2>
|
|
122
|
+
);
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
export default AddLabOrder;
|
|
@@ -7,33 +7,22 @@ import {
|
|
|
7
7
|
age,
|
|
8
8
|
closeWorkspace,
|
|
9
9
|
getDefaultsFromConfigSchema,
|
|
10
|
-
launchWorkspace,
|
|
11
10
|
useConfig,
|
|
12
11
|
useLayoutType,
|
|
13
12
|
useSession,
|
|
14
|
-
useWorkspaces,
|
|
15
|
-
type WorkspacesInfo,
|
|
16
13
|
} from '@openmrs/esm-framework';
|
|
17
14
|
import { type PostDataPrepFunction, useOrderBasket, useOrderType } from '@openmrs/esm-patient-common-lib';
|
|
18
15
|
import { configSchema, type ConfigObject } from '../../config-schema';
|
|
19
16
|
import { mockSessionDataResponse } from '__mocks__';
|
|
20
17
|
import { mockPatient } from 'tools';
|
|
21
18
|
import { createEmptyLabOrder } from './test-order';
|
|
22
|
-
import
|
|
23
|
-
import AddLabOrderWorkspace from './add-test-order.workspace';
|
|
19
|
+
import AddTestOrderWorkspace from './add-test-order.workspace';
|
|
24
20
|
|
|
25
21
|
const mockCloseWorkspace = closeWorkspace as jest.Mock;
|
|
26
22
|
const mockUseLayoutType = jest.mocked(useLayoutType);
|
|
27
23
|
const mockUseSession = jest.mocked(useSession);
|
|
28
24
|
const mockUseConfig = jest.mocked(useConfig<ConfigObject>);
|
|
29
25
|
const mockUseOrderType = jest.mocked(useOrderType);
|
|
30
|
-
const mockLaunchWorkspace = jest.mocked(launchWorkspace);
|
|
31
|
-
const mockUseWorkSpaces = jest.mocked(useWorkspaces);
|
|
32
|
-
const mockWorkSpacesInfo = {} as WorkspacesInfo;
|
|
33
|
-
|
|
34
|
-
mockCloseWorkspace.mockImplementation(({ onWorkspaceClose }) => {
|
|
35
|
-
onWorkspaceClose?.();
|
|
36
|
-
});
|
|
37
26
|
|
|
38
27
|
const mockTestTypes = [
|
|
39
28
|
// {
|
|
@@ -68,30 +57,25 @@ jest.mock('@openmrs/esm-patient-common-lib', () => ({
|
|
|
68
57
|
}));
|
|
69
58
|
|
|
70
59
|
function renderAddLabOrderWorkspace() {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
});
|
|
74
|
-
const mockCloseWorkspaceWithSavedChanges = jest.fn().mockImplementation(({ onWorkspaceClose }) => {
|
|
75
|
-
onWorkspaceClose();
|
|
76
|
-
});
|
|
77
|
-
const mockPromptBeforeClosing = jest.fn();
|
|
78
|
-
const view = render(
|
|
79
|
-
<AddLabOrderWorkspace
|
|
60
|
+
return render(
|
|
61
|
+
<AddTestOrderWorkspace
|
|
80
62
|
closeWorkspace={mockCloseWorkspace}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
63
|
+
workspaceProps={{
|
|
64
|
+
orderTypeUuid: 'test-lab-order-type-uuid',
|
|
65
|
+
}}
|
|
66
|
+
groupProps={{
|
|
67
|
+
patientUuid: mockPatient.id,
|
|
68
|
+
patient: mockPatient,
|
|
69
|
+
visitContext: null,
|
|
70
|
+
mutateVisitContext: null,
|
|
71
|
+
}}
|
|
72
|
+
workspaceName={''}
|
|
73
|
+
launchChildWorkspace={jest.fn()}
|
|
74
|
+
windowName={''}
|
|
75
|
+
windowProps={{ encounterUuid: '' }}
|
|
76
|
+
isRootWorkspace={false}
|
|
92
77
|
/>,
|
|
93
78
|
);
|
|
94
|
-
return { mockCloseWorkspace, mockPromptBeforeClosing, mockCloseWorkspaceWithSavedChanges, ...view };
|
|
95
79
|
}
|
|
96
80
|
|
|
97
81
|
mockUseConfig.mockReturnValue({
|
|
@@ -123,7 +107,6 @@ mockUseOrderType.mockReturnValue({
|
|
|
123
107
|
describe('AddLabOrder', () => {
|
|
124
108
|
beforeEach(() => {
|
|
125
109
|
_resetOrderBasketStore();
|
|
126
|
-
mockUseWorkSpaces.mockReturnValue(mockWorkSpacesInfo);
|
|
127
110
|
});
|
|
128
111
|
|
|
129
112
|
test('happy path fill and submit form', async () => {
|
|
@@ -131,7 +114,7 @@ describe('AddLabOrder', () => {
|
|
|
131
114
|
const { result: hookResult } = renderHook(() =>
|
|
132
115
|
useOrderBasket(mockPatient, 'test-lab-order-type-uuid', ((x) => x) as unknown as PostDataPrepLabOrderFunction),
|
|
133
116
|
);
|
|
134
|
-
|
|
117
|
+
renderAddLabOrderWorkspace();
|
|
135
118
|
await user.type(screen.getByRole('searchbox'), 'cd4');
|
|
136
119
|
await screen.findByText('CD4 COUNT');
|
|
137
120
|
|
|
@@ -174,8 +157,7 @@ describe('AddLabOrder', () => {
|
|
|
174
157
|
]);
|
|
175
158
|
});
|
|
176
159
|
|
|
177
|
-
expect(
|
|
178
|
-
expect(mockLaunchWorkspace).toHaveBeenCalledWith('order-basket');
|
|
160
|
+
expect(mockCloseWorkspace).toHaveBeenCalled();
|
|
179
161
|
});
|
|
180
162
|
|
|
181
163
|
test('from lab search, click add directly to order basket', async () => {
|
|
@@ -193,27 +175,22 @@ describe('AddLabOrder', () => {
|
|
|
193
175
|
await waitFor(() => {
|
|
194
176
|
expect(hookResult.current.orders).toEqual([
|
|
195
177
|
{
|
|
196
|
-
...createEmptyLabOrder(mockTestTypes[0], mockSessionDataResponse.data.currentProvider.uuid),
|
|
178
|
+
...createEmptyLabOrder(mockTestTypes[0], mockSessionDataResponse.data.currentProvider.uuid, null),
|
|
197
179
|
isOrderIncomplete: true,
|
|
198
180
|
},
|
|
199
181
|
]);
|
|
200
182
|
});
|
|
201
183
|
|
|
202
184
|
expect(mockCloseWorkspace).toHaveBeenCalled();
|
|
203
|
-
expect(mockCloseWorkspace).toHaveBeenCalledWith('add-lab-order', {
|
|
204
|
-
ignoreChanges: true,
|
|
205
|
-
onWorkspaceClose: expect.any(Function),
|
|
206
|
-
});
|
|
207
185
|
});
|
|
208
186
|
|
|
209
187
|
test('back to order basket', async () => {
|
|
210
188
|
const user = userEvent.setup();
|
|
211
|
-
|
|
212
|
-
const back = screen.getByText('Back
|
|
189
|
+
renderAddLabOrderWorkspace();
|
|
190
|
+
const back = screen.getByText('Back');
|
|
213
191
|
expect(back).toBeInTheDocument();
|
|
214
192
|
await user.click(back);
|
|
215
193
|
expect(mockCloseWorkspace).toHaveBeenCalled();
|
|
216
|
-
expect(mockLaunchWorkspace).toHaveBeenCalledWith('order-basket');
|
|
217
194
|
});
|
|
218
195
|
|
|
219
196
|
test('should display a patient header on tablet', () => {
|
|
@@ -1,164 +1,36 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import classNames from 'classnames';
|
|
3
|
-
import { capitalize } from 'lodash-es';
|
|
4
|
-
import { useTranslation } from 'react-i18next';
|
|
5
|
-
import { Button } from '@carbon/react';
|
|
1
|
+
import React from 'react';
|
|
6
2
|
import {
|
|
7
|
-
|
|
8
|
-
ArrowLeftIcon,
|
|
9
|
-
getPatientName,
|
|
10
|
-
formatDate,
|
|
11
|
-
launchWorkspace,
|
|
12
|
-
parseDate,
|
|
13
|
-
useLayoutType,
|
|
14
|
-
useConfig,
|
|
15
|
-
} from '@openmrs/esm-framework';
|
|
16
|
-
import {
|
|
17
|
-
type DefaultPatientWorkspaceProps,
|
|
18
|
-
type Order,
|
|
3
|
+
type OrderBasketWindowProps,
|
|
19
4
|
type OrderBasketItem,
|
|
20
|
-
|
|
5
|
+
type PatientWorkspace2DefinitionProps,
|
|
21
6
|
} from '@openmrs/esm-patient-common-lib';
|
|
22
|
-
import
|
|
23
|
-
import type { TestOrderBasketItem } from '../../types';
|
|
24
|
-
import { LabOrderForm } from './test-order-form.component';
|
|
25
|
-
import { TestTypeSearch } from './test-type-search.component';
|
|
26
|
-
import { WORKSPACES } from '../lab-order-basket-panel/lab-order-basket-panel.extension';
|
|
27
|
-
import styles from './add-test-order.scss';
|
|
7
|
+
import AddLabOrder from './add-test-order.component';
|
|
28
8
|
|
|
29
|
-
export interface
|
|
9
|
+
export interface AddTestOrderWorkspaceProps {
|
|
30
10
|
order?: OrderBasketItem;
|
|
31
11
|
orderTypeUuid: string;
|
|
32
|
-
prevWorkSpace: string;
|
|
33
|
-
isWorkSpaceType: (value: string) => boolean;
|
|
34
|
-
prevOrder: Order | null;
|
|
35
12
|
}
|
|
36
13
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
14
|
+
/**
|
|
15
|
+
* This workspace displays the labs order form for adding or editing a labs order.
|
|
16
|
+
*
|
|
17
|
+
* Design: https://app.zeplin.io/project/60d5947dd636aebbd63dce4c/screen/640b06c440ee3f7af8747620
|
|
18
|
+
*
|
|
19
|
+
* This workspace must only be used within the patient chart.
|
|
20
|
+
* @see exported-add-test-order.workspace.tsx
|
|
21
|
+
*/
|
|
22
|
+
export default function AddTestOrderWorkspace({
|
|
23
|
+
groupProps: { patient, visitContext },
|
|
24
|
+
workspaceProps: { order: initialOrder, orderTypeUuid },
|
|
43
25
|
closeWorkspace,
|
|
44
|
-
|
|
45
|
-
promptBeforeClosing,
|
|
46
|
-
setTitle,
|
|
47
|
-
prevWorkSpace,
|
|
48
|
-
isWorkSpaceType,
|
|
49
|
-
prevOrder,
|
|
50
|
-
patientUuid,
|
|
51
|
-
patient,
|
|
52
|
-
visitContext,
|
|
53
|
-
mutateVisitContext,
|
|
54
|
-
}: AddLabOrderWorkspace) {
|
|
55
|
-
const { t } = useTranslation();
|
|
56
|
-
const isTablet = useLayoutType() === 'tablet';
|
|
57
|
-
const [currentLabOrder, setCurrentLabOrder] = useState(initialOrder as TestOrderBasketItem);
|
|
58
|
-
const { additionalTestOrderTypes, orders } = useConfig<ConfigObject>();
|
|
59
|
-
const { orderType } = useOrderType(orderTypeUuid);
|
|
60
|
-
|
|
61
|
-
useEffect(() => {
|
|
62
|
-
if (orderType) {
|
|
63
|
-
setTitle(
|
|
64
|
-
t(`addOrderableForOrderType`, 'Add {{orderTypeDisplay}}', {
|
|
65
|
-
orderTypeDisplay:
|
|
66
|
-
typeof isWorkSpaceType === 'function' &&
|
|
67
|
-
isWorkSpaceType(prevWorkSpace) &&
|
|
68
|
-
prevWorkSpace === WORKSPACES.TEST_RESULTS_FORM
|
|
69
|
-
? 'tests'
|
|
70
|
-
: orderType.display.toLocaleLowerCase(),
|
|
71
|
-
}),
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
}, [orderType, t, setTitle, isWorkSpaceType, prevWorkSpace]);
|
|
75
|
-
|
|
76
|
-
const orderableConceptSets = useMemo(() => {
|
|
77
|
-
const allOrderTypes: ConfigObject['additionalTestOrderTypes'] = [
|
|
78
|
-
{
|
|
79
|
-
label: t('labOrders', 'Lab orders'),
|
|
80
|
-
orderTypeUuid: orders.labOrderTypeUuid,
|
|
81
|
-
orderableConceptSets: orders.labOrderableConcepts,
|
|
82
|
-
},
|
|
83
|
-
...additionalTestOrderTypes,
|
|
84
|
-
];
|
|
85
|
-
return allOrderTypes.find((orderType) => orderType.orderTypeUuid === orderTypeUuid).orderableConceptSets;
|
|
86
|
-
}, [additionalTestOrderTypes, orderTypeUuid, orders.labOrderTypeUuid, orders.labOrderableConcepts, t]);
|
|
87
|
-
|
|
88
|
-
const patientName = patient ? getPatientName(patient) : '';
|
|
89
|
-
|
|
90
|
-
const cancelOrder = useCallback(() => {
|
|
91
|
-
closeWorkspace({
|
|
92
|
-
ignoreChanges: true,
|
|
93
|
-
onWorkspaceClose: () =>
|
|
94
|
-
typeof isWorkSpaceType === 'function' &&
|
|
95
|
-
isWorkSpaceType(prevWorkSpace) &&
|
|
96
|
-
prevWorkSpace === WORKSPACES.TEST_RESULTS_FORM
|
|
97
|
-
? launchWorkspace(prevWorkSpace, { order: prevOrder })
|
|
98
|
-
: launchWorkspace(WORKSPACES.ORDER_BASKET),
|
|
99
|
-
|
|
100
|
-
closeWorkspaceGroup: false,
|
|
101
|
-
});
|
|
102
|
-
}, [closeWorkspace, isWorkSpaceType, prevOrder, prevWorkSpace]);
|
|
103
|
-
|
|
26
|
+
}: PatientWorkspace2DefinitionProps<AddTestOrderWorkspaceProps, OrderBasketWindowProps>) {
|
|
104
27
|
return (
|
|
105
|
-
<
|
|
106
|
-
{
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
</span>
|
|
113
|
-
</div>
|
|
114
|
-
)}
|
|
115
|
-
{!isTablet && (
|
|
116
|
-
<div className={styles.backButton}>
|
|
117
|
-
<Button
|
|
118
|
-
kind="ghost"
|
|
119
|
-
renderIcon={(props: ComponentProps<typeof ArrowLeftIcon>) => <ArrowLeftIcon size={24} {...props} />}
|
|
120
|
-
iconDescription="Return to order basket"
|
|
121
|
-
size="sm"
|
|
122
|
-
onClick={cancelOrder}
|
|
123
|
-
>
|
|
124
|
-
<span>
|
|
125
|
-
{typeof isWorkSpaceType === 'function' &&
|
|
126
|
-
isWorkSpaceType(prevWorkSpace) &&
|
|
127
|
-
prevWorkSpace === WORKSPACES.TEST_RESULTS_FORM
|
|
128
|
-
? t('backToTestResults', 'Back to test Results')
|
|
129
|
-
: t('backToOrderBasket', 'Back to order basket')}
|
|
130
|
-
</span>
|
|
131
|
-
</Button>
|
|
132
|
-
</div>
|
|
133
|
-
)}
|
|
134
|
-
{currentLabOrder ? (
|
|
135
|
-
<LabOrderForm
|
|
136
|
-
initialOrder={currentLabOrder}
|
|
137
|
-
patientUuid={patientUuid}
|
|
138
|
-
patient={patient}
|
|
139
|
-
closeWorkspace={closeWorkspace}
|
|
140
|
-
closeWorkspaceWithSavedChanges={closeWorkspaceWithSavedChanges}
|
|
141
|
-
promptBeforeClosing={promptBeforeClosing}
|
|
142
|
-
setTitle={() => {}}
|
|
143
|
-
orderTypeUuid={orderTypeUuid}
|
|
144
|
-
orderableConceptSets={orderableConceptSets}
|
|
145
|
-
prevWorkSpace={prevWorkSpace}
|
|
146
|
-
isWorkSpaceType={isWorkSpaceType}
|
|
147
|
-
prevOrder={prevOrder}
|
|
148
|
-
visitContext={visitContext}
|
|
149
|
-
mutateVisitContext={mutateVisitContext}
|
|
150
|
-
/>
|
|
151
|
-
) : (
|
|
152
|
-
<TestTypeSearch
|
|
153
|
-
orderTypeUuid={orderTypeUuid}
|
|
154
|
-
orderableConceptSets={orderableConceptSets}
|
|
155
|
-
openLabForm={setCurrentLabOrder}
|
|
156
|
-
prevWorkSpace={prevWorkSpace}
|
|
157
|
-
isWorkSpaceType={isWorkSpaceType}
|
|
158
|
-
prevOrder={prevOrder}
|
|
159
|
-
patient={patient}
|
|
160
|
-
/>
|
|
161
|
-
)}
|
|
162
|
-
</div>
|
|
28
|
+
<AddLabOrder
|
|
29
|
+
patient={patient}
|
|
30
|
+
visitContext={visitContext}
|
|
31
|
+
initialOrder={initialOrder}
|
|
32
|
+
orderTypeUuid={orderTypeUuid}
|
|
33
|
+
closeWorkspace={closeWorkspace}
|
|
34
|
+
/>
|
|
163
35
|
);
|
|
164
36
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type Workspace2DefinitionProps } from '@openmrs/esm-framework';
|
|
3
|
+
import { type ExportedOrderBasketWindowProps, type OrderBasketItem } from '@openmrs/esm-patient-common-lib';
|
|
4
|
+
import AddLabOrder from './add-test-order.component';
|
|
5
|
+
|
|
6
|
+
export interface AddTestOrderWorkspaceProps {
|
|
7
|
+
order?: OrderBasketItem;
|
|
8
|
+
orderTypeUuid: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* This workspace is meant for use outside the patient chart.
|
|
13
|
+
*
|
|
14
|
+
* @see add-test-order.workspace.tsx
|
|
15
|
+
*/
|
|
16
|
+
export default function ExportedAddTestOrderWorkspace({
|
|
17
|
+
windowProps: { patient, visitContext },
|
|
18
|
+
workspaceProps: { order: initialOrder, orderTypeUuid },
|
|
19
|
+
closeWorkspace,
|
|
20
|
+
}: Workspace2DefinitionProps<AddTestOrderWorkspaceProps, ExportedOrderBasketWindowProps, {}>) {
|
|
21
|
+
return (
|
|
22
|
+
<AddLabOrder
|
|
23
|
+
patient={patient}
|
|
24
|
+
visitContext={visitContext}
|
|
25
|
+
initialOrder={initialOrder}
|
|
26
|
+
orderTypeUuid={orderTypeUuid}
|
|
27
|
+
closeWorkspace={closeWorkspace}
|
|
28
|
+
/>
|
|
29
|
+
);
|
|
30
|
+
}
|