@openmrs/esm-patient-tests-app 11.3.1-pre.9388 → 11.3.1-pre.9390
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 +6 -9
- package/dist/1479.js +1 -1
- package/dist/1479.js.map +1 -1
- package/dist/1638.js +1 -1
- package/dist/1638.js.map +1 -1
- package/dist/1935.js +1 -1
- package/dist/1935.js.map +1 -1
- package/dist/34.js +1 -1
- package/dist/34.js.map +1 -1
- package/dist/4300.js +1 -1
- package/dist/6113.js +1 -0
- package/dist/6113.js.map +1 -0
- package/dist/6231.js +1 -1
- package/dist/6231.js.map +1 -1
- 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 +41 -16
- package/dist/routes.json +1 -1
- package/package.json +2 -2
- package/src/routes.json +1 -1
- package/src/test-orders/add-test-order/add-test-order.test.tsx +9 -0
- package/src/test-orders/add-test-order/add-test-order.workspace.tsx +41 -6
- package/src/test-orders/add-test-order/test-order-form.component.tsx +36 -5
- package/src/test-orders/add-test-order/test-type-search.component.tsx +48 -7
- package/src/test-orders/lab-order-basket-panel/lab-order-basket-panel.extension.tsx +32 -6
- package/src/test-orders/lab-order-basket-panel/lab-order-basket-panel.test.tsx +6 -1
- package/translations/en.json +2 -0
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
useConfig,
|
|
12
12
|
MaybeIcon,
|
|
13
13
|
launchWorkspace,
|
|
14
|
+
useWorkspaces,
|
|
14
15
|
type Visit,
|
|
15
16
|
} from '@openmrs/esm-framework';
|
|
16
17
|
import { type OrderBasketItem, useOrderBasket, useOrderType } from '@openmrs/esm-patient-common-lib';
|
|
@@ -53,6 +54,11 @@ const LabOrderBasketPanelExtension: React.FC<OrderBasketSlotProps> = ({ patient
|
|
|
53
54
|
);
|
|
54
55
|
};
|
|
55
56
|
|
|
57
|
+
export const WORKSPACES = {
|
|
58
|
+
TEST_RESULTS_FORM: 'test-results-form-workspace',
|
|
59
|
+
ORDER_BASKET: 'order-basket',
|
|
60
|
+
};
|
|
61
|
+
|
|
56
62
|
type OrderTypeConfig = ConfigObject['additionalTestOrderTypes'][0];
|
|
57
63
|
|
|
58
64
|
interface LabOrderBasketPanelProps extends OrderTypeConfig {
|
|
@@ -61,9 +67,14 @@ interface LabOrderBasketPanelProps extends OrderTypeConfig {
|
|
|
61
67
|
|
|
62
68
|
function LabOrderBasketPanel({ orderTypeUuid, label, icon, patient }: LabOrderBasketPanelProps) {
|
|
63
69
|
const { t } = useTranslation();
|
|
70
|
+
type WorkSpaceType = (typeof WORKSPACES)[keyof typeof WORKSPACES];
|
|
64
71
|
const isTablet = useLayoutType() === 'tablet';
|
|
65
72
|
const { orderType, isLoadingOrderType } = useOrderType(orderTypeUuid);
|
|
66
|
-
|
|
73
|
+
const { workspaces = [{ name: WORKSPACES.ORDER_BASKET, additionalProps: {} }] } = useWorkspaces();
|
|
74
|
+
const [prevWorkSpace, setPrevWorkSpace] = useState(workspaces[0]?.name);
|
|
75
|
+
const [prevOrder, setPrevOrder] = useState(
|
|
76
|
+
workspaces[0]?.name === WORKSPACES.TEST_RESULTS_FORM ? workspaces[0].additionalProps['order'] : null,
|
|
77
|
+
);
|
|
67
78
|
const { orders, setOrders } = useOrderBasket<TestOrderBasketItem>(patient, orderTypeUuid, prepTestOrderPostData);
|
|
68
79
|
const [isExpanded, setIsExpanded] = useState(orders.length > 0);
|
|
69
80
|
const {
|
|
@@ -101,31 +112,40 @@ function LabOrderBasketPanel({ orderTypeUuid, label, icon, patient }: LabOrderBa
|
|
|
101
112
|
discontinuedOrderBasketItems,
|
|
102
113
|
};
|
|
103
114
|
}, [orders]);
|
|
115
|
+
const isWorkSpaceType = useCallback((value: string): value is WorkSpaceType => {
|
|
116
|
+
return Object.values(WORKSPACES).includes(value as WorkSpaceType);
|
|
117
|
+
}, []);
|
|
104
118
|
|
|
105
119
|
const openNewLabForm = useCallback(() => {
|
|
106
|
-
closeWorkspace(
|
|
120
|
+
closeWorkspace(isWorkSpaceType(prevWorkSpace) ? prevWorkSpace : WORKSPACES.ORDER_BASKET, {
|
|
107
121
|
ignoreChanges: true,
|
|
108
122
|
onWorkspaceClose: () =>
|
|
109
123
|
launchWorkspace('add-lab-order', {
|
|
110
124
|
orderTypeUuid: orderTypeUuid,
|
|
125
|
+
prevWorkSpace: prevWorkSpace,
|
|
126
|
+
isWorkSpaceType: isWorkSpaceType,
|
|
127
|
+
prevOrder: prevOrder,
|
|
111
128
|
}),
|
|
112
129
|
closeWorkspaceGroup: false,
|
|
113
130
|
});
|
|
114
|
-
}, [orderTypeUuid]);
|
|
131
|
+
}, [orderTypeUuid, isWorkSpaceType, prevOrder, prevWorkSpace]);
|
|
115
132
|
|
|
116
133
|
const openEditLabForm = useCallback(
|
|
117
134
|
(order: OrderBasketItem) => {
|
|
118
|
-
closeWorkspace(
|
|
135
|
+
closeWorkspace(isWorkSpaceType(prevWorkSpace) ? prevWorkSpace : WORKSPACES.ORDER_BASKET, {
|
|
119
136
|
ignoreChanges: true,
|
|
120
137
|
onWorkspaceClose: () =>
|
|
121
138
|
launchWorkspace('add-lab-order', {
|
|
122
139
|
order,
|
|
123
140
|
orderTypeUuid: orderTypeUuid,
|
|
141
|
+
prevWorkSpace: prevWorkSpace,
|
|
142
|
+
isWorkSpaceType: isWorkSpaceType,
|
|
143
|
+
prevOrder: prevOrder,
|
|
124
144
|
}),
|
|
125
145
|
closeWorkspaceGroup: false,
|
|
126
146
|
});
|
|
127
147
|
},
|
|
128
|
-
[orderTypeUuid],
|
|
148
|
+
[orderTypeUuid, isWorkSpaceType, prevOrder, prevWorkSpace],
|
|
129
149
|
);
|
|
130
150
|
|
|
131
151
|
const removeLabOrder = useCallback(
|
|
@@ -154,7 +174,13 @@ function LabOrderBasketPanel({ orderTypeUuid, label, icon, patient }: LabOrderBa
|
|
|
154
174
|
<div className={styles.container}>
|
|
155
175
|
<div className={styles.iconAndLabel}>
|
|
156
176
|
<MaybeIcon icon={icon ? icon : 'omrs-icon-generic-order-type'} size={isTablet ? 40 : 24} />
|
|
157
|
-
<h4 className={styles.heading}>{`${
|
|
177
|
+
<h4 className={styles.heading}>{`${
|
|
178
|
+
isWorkSpaceType(prevWorkSpace) && prevWorkSpace === WORKSPACES.ORDER_BASKET
|
|
179
|
+
? label
|
|
180
|
+
? t(label)
|
|
181
|
+
: orderType?.display
|
|
182
|
+
: t('tests', 'Tests')
|
|
183
|
+
} (${orders.length})`}</h4>
|
|
158
184
|
</div>
|
|
159
185
|
<div className={styles.buttonContainer}>
|
|
160
186
|
<Button
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import userEvent from '@testing-library/user-event';
|
|
3
3
|
import { screen, render } from '@testing-library/react';
|
|
4
4
|
import { useOrderType } from '@openmrs/esm-patient-common-lib';
|
|
5
|
-
import { getDefaultsFromConfigSchema, useConfig } from '@openmrs/esm-framework';
|
|
5
|
+
import { getDefaultsFromConfigSchema, useConfig, useWorkspaces, type WorkspacesInfo } from '@openmrs/esm-framework';
|
|
6
6
|
import { type ConfigObject, configSchema } from '../../config-schema';
|
|
7
7
|
import type { TestOrderBasketItem } from '../../types';
|
|
8
8
|
import LabOrderBasketPanel from './lab-order-basket-panel.extension';
|
|
@@ -11,6 +11,8 @@ import { mockPatient } from 'tools';
|
|
|
11
11
|
const mockUseOrderBasket = jest.fn();
|
|
12
12
|
const mockUseConfig = jest.mocked(useConfig<ConfigObject>);
|
|
13
13
|
const mockUseOrderType = jest.mocked(useOrderType);
|
|
14
|
+
const mockUseWorkSpaces = jest.mocked(useWorkspaces);
|
|
15
|
+
const mockWorkSpacesInfo = {} as WorkspacesInfo;
|
|
14
16
|
|
|
15
17
|
jest.mock('@openmrs/esm-patient-common-lib', () => ({
|
|
16
18
|
...jest.requireActual('@openmrs/esm-patient-common-lib'),
|
|
@@ -45,6 +47,9 @@ const testProps = {
|
|
|
45
47
|
};
|
|
46
48
|
|
|
47
49
|
describe('LabOrderBasketPanel', () => {
|
|
50
|
+
beforeEach(() => {
|
|
51
|
+
mockUseWorkSpaces.mockReturnValue(mockWorkSpacesInfo);
|
|
52
|
+
});
|
|
48
53
|
test('renders an empty state when no items are selected in the order basket', () => {
|
|
49
54
|
mockUseOrderBasket.mockReturnValue({ orders: [] });
|
|
50
55
|
render(<LabOrderBasketPanel {...testProps} />);
|
package/translations/en.json
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"age": "Age",
|
|
7
7
|
"back": "Back",
|
|
8
8
|
"backToOrderBasket": "Back to order basket",
|
|
9
|
+
"backToTestResults": "Back to test Results",
|
|
9
10
|
"backToTimeline": "Back to timeline",
|
|
10
11
|
"cancel": "Cancel",
|
|
11
12
|
"checkFilters": "Check the filters above",
|
|
@@ -80,6 +81,7 @@
|
|
|
80
81
|
"returnToOrderBasket": "Return to order basket",
|
|
81
82
|
"returnToTimeline": "Return to timeline",
|
|
82
83
|
"saveOrder": "Save order",
|
|
84
|
+
"saveTest": "Save test",
|
|
83
85
|
"scheduledDate": "Scheduled date",
|
|
84
86
|
"scheduledDateRequired": "Scheduled date is required",
|
|
85
87
|
"search": "Search",
|