@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.
Files changed (47) hide show
  1. package/.turbo/turbo-build.log +11 -11
  2. package/dist/{1935.js → 1176.js} +1 -1
  3. package/dist/1176.js.map +1 -0
  4. package/dist/1477.js +1 -1
  5. package/dist/1477.js.map +1 -1
  6. package/dist/1638.js +1 -1
  7. package/dist/1638.js.map +1 -1
  8. package/dist/4300.js +1 -1
  9. package/dist/629.js +1 -0
  10. package/dist/629.js.map +1 -0
  11. package/dist/671.js +1 -0
  12. package/dist/671.js.map +1 -0
  13. package/dist/7202.js +1 -1
  14. package/dist/7202.js.map +1 -1
  15. package/dist/790.js +1 -1
  16. package/dist/790.js.map +1 -1
  17. package/dist/9838.js +1 -0
  18. package/dist/9838.js.map +1 -0
  19. package/dist/main.js +1 -1
  20. package/dist/main.js.map +1 -1
  21. package/dist/openmrs-esm-patient-tests-app.js +1 -1
  22. package/dist/openmrs-esm-patient-tests-app.js.buildmanifest.json +109 -85
  23. package/dist/openmrs-esm-patient-tests-app.js.map +1 -1
  24. package/dist/routes.json +1 -1
  25. package/package.json +2 -2
  26. package/src/edit-test-results/modal/edit-lab-results.modal.tsx +4 -3
  27. package/src/index.ts +5 -1
  28. package/src/routes.json +2 -3
  29. package/src/test-orders/add-test-order/add-test-order.component.tsx +125 -0
  30. package/src/test-orders/add-test-order/add-test-order.test.tsx +22 -45
  31. package/src/test-orders/add-test-order/add-test-order.workspace.tsx +24 -152
  32. package/src/test-orders/add-test-order/exported-add-test-order.workspace.tsx +30 -0
  33. package/src/test-orders/add-test-order/test-order-form.component.tsx +68 -60
  34. package/src/test-orders/add-test-order/test-order.ts +3 -3
  35. package/src/test-orders/add-test-order/test-type-search.component.tsx +28 -60
  36. package/src/test-orders/api.ts +12 -3
  37. package/src/test-orders/lab-order-basket-panel/lab-order-basket-item-tile.component.tsx +1 -1
  38. package/src/test-orders/lab-order-basket-panel/lab-order-basket-panel.extension.tsx +26 -84
  39. package/src/test-orders/lab-order-basket-panel/lab-order-basket-panel.test.tsx +10 -12
  40. package/src/test-results/tree-view/tree-view.component.tsx +1 -1
  41. package/src/types.ts +0 -9
  42. package/translations/en.json +2 -4
  43. package/dist/1935.js.map +0 -1
  44. package/dist/34.js +0 -1
  45. package/dist/34.js.map +0 -1
  46. package/dist/6113.js +0 -1
  47. 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)} &middot; {age(patient?.birthDate)} &middot;{' '}
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 { WORKSPACES } from '../lab-order-basket-panel/lab-order-basket-panel.extension';
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
- const mockCloseWorkspace = jest.fn().mockImplementation(({ onWorkspaceClose }) => {
72
- onWorkspaceClose();
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
- closeWorkspaceWithSavedChanges={mockCloseWorkspaceWithSavedChanges}
82
- promptBeforeClosing={mockPromptBeforeClosing}
83
- patientUuid={mockPatient.id}
84
- patient={mockPatient}
85
- setTitle={jest.fn()}
86
- orderTypeUuid="test-lab-order-type-uuid"
87
- prevWorkSpace={WORKSPACES.ORDER_BASKET}
88
- isWorkSpaceType={jest.fn()}
89
- prevOrder={null}
90
- visitContext={null}
91
- mutateVisitContext={null}
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
- const { mockCloseWorkspaceWithSavedChanges } = renderAddLabOrderWorkspace();
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(mockCloseWorkspaceWithSavedChanges).toHaveBeenCalled();
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
- const { mockCloseWorkspace } = renderAddLabOrderWorkspace();
212
- const back = screen.getByText('Back to order basket');
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, { type ComponentProps, useCallback, useEffect, 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';
1
+ import React from 'react';
6
2
  import {
7
- age,
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
- useOrderType,
5
+ type PatientWorkspace2DefinitionProps,
21
6
  } from '@openmrs/esm-patient-common-lib';
22
- import { type ConfigObject } from '../../config-schema';
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 AddLabOrderWorkspaceAdditionalProps {
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
- export interface AddLabOrderWorkspace extends DefaultPatientWorkspaceProps, AddLabOrderWorkspaceAdditionalProps {}
38
-
39
- // Design: https://app.zeplin.io/project/60d5947dd636aebbd63dce4c/screen/640b06c440ee3f7af8747620
40
- export default function AddLabOrderWorkspace({
41
- order: initialOrder,
42
- orderTypeUuid,
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
- closeWorkspaceWithSavedChanges,
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
- <div className={styles.container}>
106
- {isTablet && (
107
- <div className={styles.patientHeader}>
108
- <span className={styles.bodyShort02}>{patientName}</span>
109
- <span className={classNames(styles.text02, styles.bodyShort01)}>
110
- {capitalize(patient?.gender)} &middot; {age(patient?.birthDate)} &middot;{' '}
111
- <span>{formatDate(parseDate(patient?.birthDate), { mode: 'wide', time: false })}</span>
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
+ }