@openmrs/esm-patient-medications-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 +13 -13
- package/dist/1022.js +1 -1
- package/dist/1022.js.map +1 -1
- package/dist/1918.js +1 -0
- package/dist/1918.js.map +1 -0
- package/dist/2102.js +1 -0
- package/dist/2102.js.map +1 -0
- package/dist/4138.js +1 -0
- package/dist/4138.js.map +1 -0
- package/dist/4300.js +1 -1
- package/dist/4341.js +1 -0
- package/dist/4341.js.map +1 -0
- package/dist/4953.js +1 -1
- package/dist/4953.js.map +1 -1
- package/dist/8437.js +1 -1
- package/dist/8437.js.map +1 -1
- package/dist/8812.js +1 -1
- package/dist/8812.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/openmrs-esm-patient-medications-app.js +1 -1
- package/dist/openmrs-esm-patient-medications-app.js.buildmanifest.json +117 -68
- package/dist/routes.json +1 -1
- package/package.json +2 -2
- package/src/active-medications/active-medications.component.tsx +8 -2
- package/src/active-medications/active-medications.test.tsx +6 -9
- package/src/add-drug-order/add-drug-order.component.tsx +165 -0
- package/src/add-drug-order/add-drug-order.test.tsx +23 -15
- package/src/add-drug-order/add-drug-order.workspace.tsx +25 -118
- package/src/add-drug-order/drug-order-form.component.tsx +389 -387
- package/src/add-drug-order/drug-order-form.resource.ts +1 -2
- package/src/add-drug-order/drug-search/drug-search-combobox.component.tsx +7 -6
- package/src/add-drug-order/drug-search/drug-search-combobox.test.tsx +1 -1
- package/src/add-drug-order/drug-search/drug-search.component.tsx +9 -11
- package/src/add-drug-order/drug-search/drug-search.resource.tsx +10 -3
- package/src/add-drug-order/drug-search/helpers.ts +1 -1
- package/src/add-drug-order/drug-search/order-basket-search-results.component.tsx +32 -17
- package/src/add-drug-order/exported-add-drug-order.workspace.tsx +28 -0
- package/src/add-drug-order/fill-prescription-form.workspace.tsx +4 -5
- package/src/api/api.ts +13 -4
- package/src/api/order-config.ts +3 -3
- package/src/components/medications-details-table.component.tsx +55 -16
- package/src/drug-order-basket-panel/drug-order-basket-panel.extension.tsx +16 -42
- package/src/drug-order-basket-panel/drug-order-basket-panel.test.tsx +6 -6
- package/src/drug-order-basket-panel/order-basket-item-tile.component.tsx +1 -1
- package/src/index.ts +5 -1
- package/src/medications-summary/medications-summary.component.tsx +2 -2
- package/src/routes.json +7 -7
- package/translations/en.json +2 -0
- package/dist/7151.js +0 -1
- package/dist/7151.js.map +0 -1
- package/dist/8803.js +0 -1
- package/dist/8803.js.map +0 -1
- package/src/types.ts +0 -75
|
@@ -10,19 +10,18 @@ import {
|
|
|
10
10
|
mockSessionDataResponse,
|
|
11
11
|
} from '__mocks__';
|
|
12
12
|
import { getTemplateOrderBasketItem, useDrugSearch, useDrugTemplate } from './drug-search/drug-search.resource';
|
|
13
|
-
import {
|
|
13
|
+
import { launchWorkspace2, useSession } from '@openmrs/esm-framework';
|
|
14
14
|
import { type PostDataPrepFunction, useOrderBasket } from '@openmrs/esm-patient-common-lib';
|
|
15
15
|
import { _resetOrderBasketStore } from '@openmrs/esm-patient-common-lib/src/orders/store';
|
|
16
16
|
import AddDrugOrderWorkspace from './add-drug-order.workspace';
|
|
17
17
|
|
|
18
|
-
const mockCloseWorkspace =
|
|
19
|
-
const mockLaunchWorkspace = jest.mocked(
|
|
18
|
+
const mockCloseWorkspace = jest.fn();
|
|
19
|
+
const mockLaunchWorkspace = jest.mocked(launchWorkspace2);
|
|
20
20
|
const mockUseSession = jest.mocked(useSession);
|
|
21
21
|
const mockUseDrugSearch = jest.mocked(useDrugSearch);
|
|
22
22
|
const mockUseDrugTemplate = jest.mocked(useDrugTemplate);
|
|
23
23
|
const usePatientOrdersMock = jest.fn();
|
|
24
24
|
|
|
25
|
-
mockCloseWorkspace.mockImplementation((name, { onWorkspaceClose }) => onWorkspaceClose());
|
|
26
25
|
mockUseSession.mockReturnValue(mockSessionDataResponse.data);
|
|
27
26
|
|
|
28
27
|
/** This is needed to render the order form */
|
|
@@ -124,12 +123,12 @@ describe('AddDrugOrderWorkspace drug search', () => {
|
|
|
124
123
|
|
|
125
124
|
expect(hookResult.current.orders).toEqual([
|
|
126
125
|
expect.objectContaining({
|
|
127
|
-
...getTemplateOrderBasketItem(mockDrugSearchResultApiData[2]),
|
|
126
|
+
...getTemplateOrderBasketItem(mockDrugSearchResultApiData[2], null),
|
|
128
127
|
isOrderIncomplete: true,
|
|
129
128
|
startDate: expect.any(Date),
|
|
130
129
|
}),
|
|
131
130
|
]);
|
|
132
|
-
expect(
|
|
131
|
+
expect(mockCloseWorkspace).toHaveBeenCalled();
|
|
133
132
|
});
|
|
134
133
|
|
|
135
134
|
test('can open the drug form ', async () => {
|
|
@@ -172,6 +171,7 @@ describe('AddDrugOrderWorkspace drug search', () => {
|
|
|
172
171
|
expect.objectContaining({
|
|
173
172
|
...getTemplateOrderBasketItem(
|
|
174
173
|
mockDrugSearchResultApiData[0],
|
|
174
|
+
null,
|
|
175
175
|
undefined,
|
|
176
176
|
mockDrugOrderTemplateApiData[mockDrugSearchResultApiData[0].uuid][0],
|
|
177
177
|
),
|
|
@@ -188,15 +188,23 @@ describe('AddDrugOrderWorkspace drug search', () => {
|
|
|
188
188
|
function renderAddDrugOrderWorkspace() {
|
|
189
189
|
render(
|
|
190
190
|
<AddDrugOrderWorkspace
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
191
|
+
workspaceProps={{
|
|
192
|
+
order: undefined as any,
|
|
193
|
+
}}
|
|
194
|
+
groupProps={{
|
|
195
|
+
patientUuid: mockPatient.id,
|
|
196
|
+
patient: mockPatient,
|
|
197
|
+
visitContext: null,
|
|
198
|
+
mutateVisitContext: null,
|
|
199
|
+
}}
|
|
200
|
+
workspaceName={''}
|
|
201
|
+
launchChildWorkspace={jest.fn()}
|
|
202
|
+
closeWorkspace={mockCloseWorkspace}
|
|
203
|
+
windowProps={{
|
|
204
|
+
encounterUuid: '',
|
|
205
|
+
}}
|
|
206
|
+
windowName={''}
|
|
207
|
+
isRootWorkspace={false}
|
|
200
208
|
/>,
|
|
201
209
|
);
|
|
202
210
|
}
|
|
@@ -1,129 +1,36 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import
|
|
8
|
-
import type { DrugOrderBasketItem } from '../types';
|
|
9
|
-
import { DrugOrderForm } from './drug-order-form.component';
|
|
10
|
-
import DrugSearch from './drug-search/drug-search.component';
|
|
11
|
-
import styles from './add-drug-order.scss';
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
type DrugOrderBasketItem,
|
|
4
|
+
type OrderBasketWindowProps,
|
|
5
|
+
type PatientWorkspace2DefinitionProps,
|
|
6
|
+
} from '@openmrs/esm-patient-common-lib';
|
|
7
|
+
import AddDrugOrder from './add-drug-order.component';
|
|
12
8
|
|
|
13
|
-
export interface
|
|
9
|
+
export interface AddDrugOrderWorkspaceProps {
|
|
14
10
|
order: DrugOrderBasketItem;
|
|
15
11
|
}
|
|
16
12
|
|
|
17
|
-
export interface AddDrugOrderWorkspace extends DefaultPatientWorkspaceProps, AddDrugOrderWorkspaceAdditionalProps {}
|
|
18
|
-
|
|
19
13
|
/**
|
|
20
|
-
* This workspace displays the drug order form
|
|
21
|
-
*
|
|
14
|
+
* This workspace displays the drug order form for adding or editing a drug order.
|
|
15
|
+
* On form submission, it saves the drug order to the (frontend) order basket.
|
|
16
|
+
* For a form that submits the drug order directly on submit,
|
|
22
17
|
* see fill-prescription-form.workspace.tsx
|
|
18
|
+
*
|
|
19
|
+
* This workspace must only be used within the patient chart.
|
|
20
|
+
* @see exported-add-drug-order.workspace.tsx
|
|
23
21
|
*/
|
|
24
22
|
export default function AddDrugOrderWorkspace({
|
|
25
|
-
order: initialOrder,
|
|
23
|
+
workspaceProps: { order: initialOrder },
|
|
24
|
+
groupProps: { patient, patientUuid, visitContext },
|
|
26
25
|
closeWorkspace,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
prepMedicationOrderPostData,
|
|
37
|
-
);
|
|
38
|
-
const [currentOrder, setCurrentOrder] = useState(initialOrder);
|
|
39
|
-
|
|
40
|
-
const cancelDrugOrder = useCallback(() => {
|
|
41
|
-
closeWorkspace({
|
|
42
|
-
onWorkspaceClose: () => launchWorkspace('order-basket'),
|
|
43
|
-
closeWorkspaceGroup: false,
|
|
44
|
-
});
|
|
45
|
-
}, [closeWorkspace]);
|
|
46
|
-
|
|
47
|
-
const openOrderForm = useCallback(
|
|
48
|
-
(searchResult: DrugOrderBasketItem) => {
|
|
49
|
-
const existingOrder = orders.find((order) => ordersEqual(order, searchResult));
|
|
50
|
-
if (existingOrder) {
|
|
51
|
-
setCurrentOrder(existingOrder);
|
|
52
|
-
} else {
|
|
53
|
-
setCurrentOrder(searchResult);
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
[orders],
|
|
26
|
+
}: PatientWorkspace2DefinitionProps<AddDrugOrderWorkspaceProps, OrderBasketWindowProps>) {
|
|
27
|
+
return (
|
|
28
|
+
<AddDrugOrder
|
|
29
|
+
initialOrder={initialOrder}
|
|
30
|
+
patient={patient}
|
|
31
|
+
patientUuid={patientUuid}
|
|
32
|
+
visitContext={visitContext}
|
|
33
|
+
closeWorkspace={closeWorkspace}
|
|
34
|
+
/>
|
|
57
35
|
);
|
|
58
|
-
|
|
59
|
-
const saveDrugOrder = useCallback(
|
|
60
|
-
async (finalizedOrder: DrugOrderBasketItem) => {
|
|
61
|
-
const newOrders = [...orders];
|
|
62
|
-
const existingOrder = orders.find((order) => ordersEqual(order, finalizedOrder));
|
|
63
|
-
if (existingOrder) {
|
|
64
|
-
newOrders[orders.indexOf(existingOrder)] = {
|
|
65
|
-
...finalizedOrder,
|
|
66
|
-
// Incomplete orders should be marked completed on saving the form
|
|
67
|
-
isOrderIncomplete: false,
|
|
68
|
-
};
|
|
69
|
-
} else {
|
|
70
|
-
newOrders.push(finalizedOrder);
|
|
71
|
-
}
|
|
72
|
-
setOrders(newOrders);
|
|
73
|
-
closeWorkspaceWithSavedChanges({
|
|
74
|
-
onWorkspaceClose: () => launchWorkspace('order-basket'),
|
|
75
|
-
});
|
|
76
|
-
},
|
|
77
|
-
[orders, setOrders, closeWorkspaceWithSavedChanges],
|
|
78
|
-
);
|
|
79
|
-
|
|
80
|
-
if (!currentOrder) {
|
|
81
|
-
return (
|
|
82
|
-
<>
|
|
83
|
-
{!isTablet && (
|
|
84
|
-
<div className={styles.backButton}>
|
|
85
|
-
<Button
|
|
86
|
-
iconDescription="Return to order basket"
|
|
87
|
-
kind="ghost"
|
|
88
|
-
onClick={cancelDrugOrder}
|
|
89
|
-
renderIcon={(props: ComponentProps<typeof ArrowLeftIcon>) => <ArrowLeftIcon size={24} {...props} />}
|
|
90
|
-
size="sm"
|
|
91
|
-
>
|
|
92
|
-
<span>{t('backToOrderBasket', 'Back to order basket')}</span>
|
|
93
|
-
</Button>
|
|
94
|
-
</div>
|
|
95
|
-
)}
|
|
96
|
-
<DrugSearch patient={patient} openOrderForm={openOrderForm} />
|
|
97
|
-
</>
|
|
98
|
-
);
|
|
99
|
-
} else {
|
|
100
|
-
return (
|
|
101
|
-
<div className={styles.container}>
|
|
102
|
-
{!isTablet && (
|
|
103
|
-
<div className={styles.backButton}>
|
|
104
|
-
<Button
|
|
105
|
-
iconDescription="Return to order basket"
|
|
106
|
-
kind="ghost"
|
|
107
|
-
onClick={cancelDrugOrder}
|
|
108
|
-
renderIcon={(props: ComponentProps<typeof ArrowLeftIcon>) => <ArrowLeftIcon size={24} {...props} />}
|
|
109
|
-
size="sm"
|
|
110
|
-
>
|
|
111
|
-
<span>{t('backToOrderBasket', 'Back to order basket')}</span>
|
|
112
|
-
</Button>
|
|
113
|
-
</div>
|
|
114
|
-
)}
|
|
115
|
-
<DrugOrderForm
|
|
116
|
-
patientUuid={patient.id}
|
|
117
|
-
initialOrderBasketItem={currentOrder}
|
|
118
|
-
patient={patient}
|
|
119
|
-
onSave={saveDrugOrder}
|
|
120
|
-
saveButtonText={t('saveOrder', 'Save order')}
|
|
121
|
-
onCancel={cancelDrugOrder}
|
|
122
|
-
promptBeforeClosing={promptBeforeClosing}
|
|
123
|
-
allowSelectingPrescribingClinician={false}
|
|
124
|
-
allowSelectingDrug={false} // In this workspace, the drug is selected in <DrugSearch>, not in <DrugOrderForm>
|
|
125
|
-
/>
|
|
126
|
-
</div>
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
36
|
}
|