@openmrs/esm-patient-programs-app 11.3.1-pre.9447 → 11.3.1-pre.9455
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 +8 -8
- package/dist/1119.js +1 -1
- package/dist/1197.js +1 -1
- package/dist/2146.js +1 -1
- package/dist/2690.js +1 -1
- package/dist/3099.js +1 -1
- package/dist/3390.js +1 -1
- package/dist/3390.js.map +1 -1
- package/dist/3584.js +1 -1
- package/dist/3697.js +1 -0
- package/dist/3697.js.map +1 -0
- package/dist/4055.js +1 -1
- package/dist/4132.js +1 -1
- package/dist/4335.js +1 -1
- package/dist/439.js +1 -1
- package/dist/4618.js +1 -1
- package/dist/4652.js +1 -1
- package/dist/4944.js +1 -1
- package/dist/5173.js +1 -1
- package/dist/5241.js +1 -1
- package/dist/5442.js +1 -1
- package/dist/5661.js +1 -1
- package/dist/5912.js +1 -1
- package/dist/5912.js.map +1 -1
- package/dist/6022.js +1 -1
- package/dist/6468.js +1 -1
- package/dist/6589.js +1 -1
- package/dist/6679.js +1 -1
- package/dist/6840.js +1 -1
- package/dist/6859.js +1 -1
- package/dist/7097.js +1 -1
- package/dist/7159.js +1 -1
- package/dist/723.js +1 -1
- package/dist/7617.js +1 -1
- package/dist/795.js +1 -1
- package/dist/8163.js +1 -1
- package/dist/8349.js +1 -1
- package/dist/8371.js +1 -1
- package/dist/8618.js +1 -1
- package/dist/890.js +1 -1
- package/dist/9214.js +1 -1
- package/dist/9538.js +1 -1
- package/dist/9569.js +1 -1
- package/dist/986.js +1 -1
- package/dist/9879.js +1 -1
- package/dist/9895.js +1 -1
- package/dist/9900.js +1 -1
- package/dist/9913.js +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/openmrs-esm-patient-programs-app.js +1 -1
- package/dist/openmrs-esm-patient-programs-app.js.buildmanifest.json +158 -158
- package/dist/routes.json +1 -1
- package/package.json +2 -2
- package/src/programs/programs-action-menu.component.tsx +2 -2
- package/src/programs/programs-action-menu.test.tsx +2 -2
- package/src/programs/programs-detailed-summary.component.tsx +2 -2
- package/src/programs/programs-detailed-summary.test.tsx +2 -2
- package/src/programs/programs-form.test.tsx +21 -13
- package/src/programs/programs-form.workspace.tsx +40 -43
- package/src/programs/programs-overview.component.tsx +2 -2
- package/src/programs/programs-overview.test.tsx +2 -2
- package/src/routes.json +9 -3
- package/translations/am.json +1 -2
- package/translations/ar.json +1 -2
- package/translations/ar_SY.json +1 -2
- package/translations/bn.json +1 -2
- package/translations/cs.json +1 -2
- package/translations/de.json +1 -2
- package/translations/en_US.json +1 -2
- package/translations/es.json +1 -2
- package/translations/es_MX.json +1 -2
- package/translations/fr.json +1 -2
- package/translations/he.json +1 -2
- package/translations/hi.json +1 -2
- package/translations/hi_IN.json +1 -2
- package/translations/id.json +1 -2
- package/translations/it.json +1 -2
- package/translations/ka.json +1 -2
- package/translations/km.json +1 -2
- package/translations/ku.json +1 -2
- package/translations/ky.json +1 -2
- package/translations/lg.json +1 -2
- package/translations/ne.json +1 -2
- package/translations/pl.json +1 -2
- package/translations/pt.json +1 -2
- package/translations/pt_BR.json +1 -2
- package/translations/qu.json +1 -2
- package/translations/ro_RO.json +1 -2
- package/translations/ru_RU.json +1 -2
- package/translations/si.json +1 -2
- package/translations/sq.json +1 -2
- package/translations/sw.json +1 -2
- package/translations/sw_KE.json +1 -2
- package/translations/tr.json +1 -2
- package/translations/tr_TR.json +1 -2
- package/translations/uk.json +1 -2
- package/translations/uz.json +1 -2
- package/translations/uz@Latn.json +1 -2
- package/translations/uz_UZ.json +1 -2
- package/translations/vi.json +1 -2
- package/translations/zh.json +1 -2
- package/translations/zh_CN.json +1 -2
- package/translations/zh_TW.json +1 -2
- package/dist/5048.js +0 -1
- package/dist/5048.js.map +0 -1
package/dist/routes.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"webservices.rest":">=2.2.0"},"extensions":[{"name":"programs-overview-widget","component":"programsOverview","meta":{"fullWidth":false},"order":6},{"name":"programs-details-widget","slot":"patient-chart-programs-dashboard-slot","component":"programsDetailedSummary","order":6},{"name":"programs-summary-dashboard","slot":"patient-chart-dashboard-slot","component":"programsDashboardLink","meta":{"slot":"patient-chart-programs-dashboard-slot","path":"Programs"},"order":10}],"pages":[],"
|
|
1
|
+
{"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"webservices.rest":">=2.2.0"},"extensions":[{"name":"programs-overview-widget","component":"programsOverview","meta":{"fullWidth":false},"order":6},{"name":"programs-details-widget","slot":"patient-chart-programs-dashboard-slot","component":"programsDetailedSummary","order":6},{"name":"programs-summary-dashboard","slot":"patient-chart-dashboard-slot","component":"programsDashboardLink","meta":{"slot":"patient-chart-programs-dashboard-slot","path":"Programs"},"order":10}],"pages":[],"workspaces2":[{"name":"programs-form-workspace","component":"programsFormWorkspace","window":"programs-form-window"}],"workspaceWindows2":[{"name":"programs-form-window","group":"patient-chart"}],"modals":[{"name":"program-delete-confirmation-modal","component":"deleteProgramConfirmationModal"}],"version":"11.3.1-pre.9455"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openmrs/esm-patient-programs-app",
|
|
3
|
-
"version": "11.3.1-pre.
|
|
3
|
+
"version": "11.3.1-pre.9455",
|
|
4
4
|
"license": "MPL-2.0",
|
|
5
5
|
"description": "Patient programs microfrontend for the OpenMRS SPA",
|
|
6
6
|
"browser": "dist/openmrs-esm-patient-programs-app.js",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"swr": "2.x"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@openmrs/esm-patient-common-lib": "11.3.1-pre.
|
|
55
|
+
"@openmrs/esm-patient-common-lib": "11.3.1-pre.9455",
|
|
56
56
|
"webpack": "^5.99.9"
|
|
57
57
|
},
|
|
58
58
|
"stableVersion": "11.3.0"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useCallback } from 'react';
|
|
2
2
|
import { useTranslation } from 'react-i18next';
|
|
3
3
|
import { Layer, OverflowMenu, OverflowMenuItem } from '@carbon/react';
|
|
4
|
-
import {
|
|
4
|
+
import { launchWorkspace2, showModal, useLayoutType } from '@openmrs/esm-framework';
|
|
5
5
|
import styles from './programs-action-menu.scss';
|
|
6
6
|
|
|
7
7
|
interface ProgramActionsProps {
|
|
@@ -15,7 +15,7 @@ export const ProgramsActionMenu = ({ patientUuid, programEnrollmentId }: Program
|
|
|
15
15
|
|
|
16
16
|
const launchEditProgramsForm = useCallback(
|
|
17
17
|
() =>
|
|
18
|
-
|
|
18
|
+
launchWorkspace2('programs-form-workspace', {
|
|
19
19
|
workspaceTitle: t('editProgramEnrollment', 'Edit program enrollment'),
|
|
20
20
|
programEnrollmentId,
|
|
21
21
|
}),
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import userEvent from '@testing-library/user-event';
|
|
3
3
|
import { render, screen, waitFor } from '@testing-library/react';
|
|
4
|
-
import {
|
|
4
|
+
import { launchWorkspace2, showModal, useLayoutType } from '@openmrs/esm-framework';
|
|
5
5
|
import { mockPatient } from 'tools';
|
|
6
6
|
import { ProgramsActionMenu } from './programs-action-menu.component';
|
|
7
7
|
|
|
8
8
|
const mockShowModal = jest.mocked(showModal);
|
|
9
9
|
const mockUseLayoutType = jest.mocked(useLayoutType);
|
|
10
|
-
const mockLaunchWorkspace = jest.mocked(
|
|
10
|
+
const mockLaunchWorkspace = jest.mocked(launchWorkspace2);
|
|
11
11
|
|
|
12
12
|
const testProps = {
|
|
13
13
|
programEnrollmentId: '123',
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
useConfig,
|
|
24
24
|
useLayoutType,
|
|
25
25
|
isDesktop as desktopLayout,
|
|
26
|
-
|
|
26
|
+
launchWorkspace2,
|
|
27
27
|
} from '@openmrs/esm-framework';
|
|
28
28
|
import { CardHeader, EmptyState, ErrorState } from '@openmrs/esm-patient-common-lib';
|
|
29
29
|
import { findLastState, usePrograms } from './programs.resource';
|
|
@@ -91,7 +91,7 @@ const ProgramsDetailedSummary: React.FC<ProgramsDetailedSummaryProps> = ({ patie
|
|
|
91
91
|
[enrollments, t],
|
|
92
92
|
);
|
|
93
93
|
|
|
94
|
-
const launchProgramsForm = useCallback(() =>
|
|
94
|
+
const launchProgramsForm = useCallback(() => launchWorkspace2('programs-form-workspace'), []);
|
|
95
95
|
|
|
96
96
|
const isEnrolledInAllPrograms = useMemo(() => {
|
|
97
97
|
if (!availablePrograms?.length || !enrollments?.length) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import userEvent from '@testing-library/user-event';
|
|
3
3
|
import { screen, within } from '@testing-library/react';
|
|
4
|
-
import { getDefaultsFromConfigSchema,
|
|
4
|
+
import { getDefaultsFromConfigSchema, launchWorkspace2, openmrsFetch, useConfig } from '@openmrs/esm-framework';
|
|
5
5
|
import { mockCareProgramsResponse, mockEnrolledInAllProgramsResponse, mockEnrolledProgramsResponse } from '__mocks__';
|
|
6
6
|
import { mockPatient, renderWithSwr, waitForLoadingToFinish } from 'tools';
|
|
7
7
|
import { type ConfigObject, configSchema } from '../config-schema';
|
|
8
8
|
import ProgramsDetailedSummary from './programs-detailed-summary.component';
|
|
9
9
|
|
|
10
|
-
const mockLaunchWorkspace = jest.mocked(
|
|
10
|
+
const mockLaunchWorkspace = jest.mocked(launchWorkspace2);
|
|
11
11
|
const mockUseConfig = jest.mocked(useConfig<ConfigObject>);
|
|
12
12
|
const mockOpenmrsFetch = openmrsFetch as jest.Mock;
|
|
13
13
|
|
|
@@ -16,8 +16,9 @@ import {
|
|
|
16
16
|
useAvailablePrograms,
|
|
17
17
|
useEnrollments,
|
|
18
18
|
} from './programs.resource';
|
|
19
|
-
import ProgramsForm from './programs-form.workspace';
|
|
19
|
+
import ProgramsForm, { type ProgramsFormProps } from './programs-form.workspace';
|
|
20
20
|
import { type ConfigObject, configSchema } from '../config-schema';
|
|
21
|
+
import { type PatientWorkspace2DefinitionProps } from '@openmrs/esm-patient-common-lib';
|
|
21
22
|
|
|
22
23
|
const mockUseAvailablePrograms = jest.mocked(useAvailablePrograms);
|
|
23
24
|
const mockUseEnrollments = jest.mocked(useEnrollments);
|
|
@@ -26,19 +27,22 @@ const mockUpdateProgramEnrollment = jest.mocked(updateProgramEnrollment);
|
|
|
26
27
|
const mockShowSnackbar = jest.mocked(showSnackbar);
|
|
27
28
|
const mockUseLocations = jest.mocked(useLocations);
|
|
28
29
|
const mockCloseWorkspace = jest.fn();
|
|
29
|
-
const mockCloseWorkspaceWithSavedChanges = jest.fn();
|
|
30
|
-
const mockPromptBeforeClosing = jest.fn();
|
|
31
30
|
const mockUseConfig = jest.mocked(useConfig<ConfigObject>);
|
|
32
31
|
|
|
33
|
-
const testProps = {
|
|
32
|
+
const testProps: PatientWorkspace2DefinitionProps<ProgramsFormProps, {}> = {
|
|
34
33
|
closeWorkspace: mockCloseWorkspace,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
34
|
+
groupProps: {
|
|
35
|
+
patientUuid: mockPatient.id,
|
|
36
|
+
patient: mockPatient,
|
|
37
|
+
visitContext: null,
|
|
38
|
+
mutateVisitContext: null,
|
|
39
|
+
},
|
|
40
|
+
workspaceName: '',
|
|
41
|
+
launchChildWorkspace: jest.fn(),
|
|
42
|
+
workspaceProps: {},
|
|
43
|
+
windowProps: {},
|
|
44
|
+
windowName: '',
|
|
45
|
+
isRootWorkspace: false,
|
|
42
46
|
};
|
|
43
47
|
|
|
44
48
|
jest.mock('./programs.resource', () => ({
|
|
@@ -111,7 +115,7 @@ describe('ProgramsForm', () => {
|
|
|
111
115
|
new AbortController(),
|
|
112
116
|
);
|
|
113
117
|
|
|
114
|
-
expect(
|
|
118
|
+
expect(mockCloseWorkspace).toHaveBeenCalledTimes(1);
|
|
115
119
|
expect(mockShowSnackbar).toHaveBeenCalledTimes(1);
|
|
116
120
|
expect(mockShowSnackbar).toHaveBeenCalledWith({
|
|
117
121
|
subtitle: 'It is now visible in the Programs table',
|
|
@@ -174,5 +178,9 @@ describe('ProgramsForm', () => {
|
|
|
174
178
|
});
|
|
175
179
|
|
|
176
180
|
function renderProgramsForm(programEnrollmentUuidToEdit?: string) {
|
|
177
|
-
|
|
181
|
+
const props = {
|
|
182
|
+
...testProps,
|
|
183
|
+
workspaceProps: { programEnrollmentId: programEnrollmentUuidToEdit },
|
|
184
|
+
};
|
|
185
|
+
render(<ProgramsForm {...props} />);
|
|
178
186
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useCallback,
|
|
1
|
+
import React, { useCallback, useMemo } from 'react';
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import { useTranslation } from 'react-i18next';
|
|
4
4
|
import type { TFunction } from 'i18next';
|
|
@@ -28,8 +28,9 @@ import {
|
|
|
28
28
|
useConfig,
|
|
29
29
|
useLayoutType,
|
|
30
30
|
useSession,
|
|
31
|
+
Workspace2,
|
|
31
32
|
} from '@openmrs/esm-framework';
|
|
32
|
-
import { type
|
|
33
|
+
import { type PatientWorkspace2DefinitionProps } from '@openmrs/esm-patient-common-lib';
|
|
33
34
|
import { type ConfigObject } from '../config-schema';
|
|
34
35
|
import {
|
|
35
36
|
createProgramEnrollment,
|
|
@@ -40,7 +41,7 @@ import {
|
|
|
40
41
|
} from './programs.resource';
|
|
41
42
|
import styles from './programs-form.scss';
|
|
42
43
|
|
|
43
|
-
interface ProgramsFormProps
|
|
44
|
+
export interface ProgramsFormProps {
|
|
44
45
|
programEnrollmentId?: string;
|
|
45
46
|
}
|
|
46
47
|
|
|
@@ -55,12 +56,10 @@ const createProgramsFormSchema = (t: TFunction) =>
|
|
|
55
56
|
|
|
56
57
|
export type ProgramsFormData = z.infer<ReturnType<typeof createProgramsFormSchema>>;
|
|
57
58
|
|
|
58
|
-
const ProgramsForm: React.FC<ProgramsFormProps
|
|
59
|
+
const ProgramsForm: React.FC<PatientWorkspace2DefinitionProps<ProgramsFormProps, {}>> = ({
|
|
59
60
|
closeWorkspace,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
programEnrollmentId,
|
|
63
|
-
promptBeforeClosing,
|
|
61
|
+
groupProps: { patientUuid },
|
|
62
|
+
workspaceProps: { programEnrollmentId },
|
|
64
63
|
}) => {
|
|
65
64
|
const { t } = useTranslation();
|
|
66
65
|
const isTablet = useLayoutType() === 'tablet';
|
|
@@ -115,10 +114,6 @@ const ProgramsForm: React.FC<ProgramsFormProps> = ({
|
|
|
115
114
|
|
|
116
115
|
const selectedProgram = useWatch({ control, name: 'selectedProgram' });
|
|
117
116
|
|
|
118
|
-
useEffect(() => {
|
|
119
|
-
promptBeforeClosing(() => isDirty);
|
|
120
|
-
}, [isDirty, promptBeforeClosing]);
|
|
121
|
-
|
|
122
117
|
const onSubmit = useCallback(
|
|
123
118
|
async (data: ProgramsFormData) => {
|
|
124
119
|
const { selectedProgram, enrollmentDate, completionDate, enrollmentLocation, selectedProgramStatus } = data;
|
|
@@ -145,7 +140,7 @@ const ProgramsForm: React.FC<ProgramsFormProps> = ({
|
|
|
145
140
|
}
|
|
146
141
|
|
|
147
142
|
await mutateEnrollments();
|
|
148
|
-
|
|
143
|
+
closeWorkspace({ discardUnsavedChanges: true });
|
|
149
144
|
|
|
150
145
|
showSnackbar({
|
|
151
146
|
kind: 'success',
|
|
@@ -164,7 +159,7 @@ const ProgramsForm: React.FC<ProgramsFormProps> = ({
|
|
|
164
159
|
});
|
|
165
160
|
}
|
|
166
161
|
},
|
|
167
|
-
[
|
|
162
|
+
[closeWorkspace, currentEnrollment, currentState, mutateEnrollments, patientUuid, t],
|
|
168
163
|
);
|
|
169
164
|
|
|
170
165
|
const programName = (
|
|
@@ -331,36 +326,38 @@ const ProgramsForm: React.FC<ProgramsFormProps> = ({
|
|
|
331
326
|
}
|
|
332
327
|
|
|
333
328
|
return (
|
|
334
|
-
<
|
|
335
|
-
<
|
|
336
|
-
{
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
{formGroups.map((group, i) => (
|
|
346
|
-
<FormGroup style={group.style} legendText={group.legendText} key={i}>
|
|
347
|
-
<div className={styles.selectContainer}>{isTablet ? <Layer>{group.value}</Layer> : group.value}</div>
|
|
348
|
-
</FormGroup>
|
|
349
|
-
))}
|
|
350
|
-
</Stack>
|
|
351
|
-
<ButtonSet className={classNames(isTablet ? styles.tablet : styles.desktop)}>
|
|
352
|
-
<Button className={styles.button} kind="secondary" onClick={() => closeWorkspace()}>
|
|
353
|
-
{getCoreTranslation('cancel')}
|
|
354
|
-
</Button>
|
|
355
|
-
<Button className={styles.button} disabled={isSubmitting} kind="primary" type="submit">
|
|
356
|
-
{isSubmitting ? (
|
|
357
|
-
<InlineLoading description={t('saving', 'Saving') + '...'} />
|
|
358
|
-
) : (
|
|
359
|
-
<span>{t('saveAndClose', 'Save and close')}</span>
|
|
329
|
+
<Workspace2 title={t('programEnrollmentWorkspaceTitle', 'Program enrollment')} hasUnsavedChanges={isDirty}>
|
|
330
|
+
<Form className={styles.form} onSubmit={handleSubmit(onSubmit)}>
|
|
331
|
+
<Stack className={styles.formContainer} gap={7}>
|
|
332
|
+
{!availablePrograms.length && (
|
|
333
|
+
<InlineNotification
|
|
334
|
+
className={styles.notification}
|
|
335
|
+
kind="error"
|
|
336
|
+
lowContrast
|
|
337
|
+
subtitle={t('configurePrograms', 'Please configure programs to continue.')}
|
|
338
|
+
title={t('noProgramsConfigured', 'No programs configured')}
|
|
339
|
+
/>
|
|
360
340
|
)}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
341
|
+
{formGroups.map((group, i) => (
|
|
342
|
+
<FormGroup style={group.style} legendText={group.legendText} key={i}>
|
|
343
|
+
<div className={styles.selectContainer}>{isTablet ? <Layer>{group.value}</Layer> : group.value}</div>
|
|
344
|
+
</FormGroup>
|
|
345
|
+
))}
|
|
346
|
+
</Stack>
|
|
347
|
+
<ButtonSet className={classNames(isTablet ? styles.tablet : styles.desktop)}>
|
|
348
|
+
<Button className={styles.button} kind="secondary" onClick={() => closeWorkspace()}>
|
|
349
|
+
{getCoreTranslation('cancel')}
|
|
350
|
+
</Button>
|
|
351
|
+
<Button className={styles.button} disabled={isSubmitting} kind="primary" type="submit">
|
|
352
|
+
{isSubmitting ? (
|
|
353
|
+
<InlineLoading description={t('saving', 'Saving') + '...'} />
|
|
354
|
+
) : (
|
|
355
|
+
<span>{t('saveAndClose', 'Save and close')}</span>
|
|
356
|
+
)}
|
|
357
|
+
</Button>
|
|
358
|
+
</ButtonSet>
|
|
359
|
+
</Form>
|
|
360
|
+
</Workspace2>
|
|
364
361
|
);
|
|
365
362
|
};
|
|
366
363
|
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
type ConfigObject,
|
|
22
22
|
formatDate,
|
|
23
23
|
formatDatetime,
|
|
24
|
-
|
|
24
|
+
launchWorkspace2,
|
|
25
25
|
useConfig,
|
|
26
26
|
useLayoutType,
|
|
27
27
|
usePagination,
|
|
@@ -54,7 +54,7 @@ const ProgramsOverview: React.FC<ProgramsOverviewProps> = ({ basePath, patientUu
|
|
|
54
54
|
|
|
55
55
|
const { results: paginatedEnrollments, goTo, currentPage } = usePagination(enrollments ?? [], programsCount);
|
|
56
56
|
|
|
57
|
-
const launchProgramsForm = useCallback(() =>
|
|
57
|
+
const launchProgramsForm = useCallback(() => launchWorkspace2('programs-form-workspace'), []);
|
|
58
58
|
|
|
59
59
|
const tableHeaders = [
|
|
60
60
|
{
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import userEvent from '@testing-library/user-event';
|
|
3
3
|
import { screen, within } from '@testing-library/react';
|
|
4
|
-
import {
|
|
4
|
+
import { launchWorkspace2, openmrsFetch } from '@openmrs/esm-framework';
|
|
5
5
|
import { mockCareProgramsResponse, mockEnrolledInAllProgramsResponse, mockEnrolledProgramsResponse } from '__mocks__';
|
|
6
6
|
import { mockPatient, renderWithSwr, waitForLoadingToFinish } from 'tools';
|
|
7
7
|
import ProgramsOverview from './programs-overview.component';
|
|
8
8
|
|
|
9
9
|
const mockOpenmrsFetch = openmrsFetch as jest.Mock;
|
|
10
|
-
const mockLaunchWorkspace = jest.mocked(
|
|
10
|
+
const mockLaunchWorkspace = jest.mocked(launchWorkspace2);
|
|
11
11
|
|
|
12
12
|
const testProps = {
|
|
13
13
|
basePath: `/patient/${mockPatient.id}/chart`,
|
package/src/routes.json
CHANGED
|
@@ -30,11 +30,17 @@
|
|
|
30
30
|
}
|
|
31
31
|
],
|
|
32
32
|
"pages": [],
|
|
33
|
-
"
|
|
33
|
+
"workspaces2": [
|
|
34
34
|
{
|
|
35
35
|
"name": "programs-form-workspace",
|
|
36
|
-
"
|
|
37
|
-
"
|
|
36
|
+
"component": "programsFormWorkspace",
|
|
37
|
+
"window": "programs-form-window"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"workspaceWindows2": [
|
|
41
|
+
{
|
|
42
|
+
"name": "programs-form-window",
|
|
43
|
+
"group": "patient-chart"
|
|
38
44
|
}
|
|
39
45
|
],
|
|
40
46
|
"modals": [
|
package/translations/am.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
|
30
30
|
"noProgramsConfigured": "No programs configured",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "Program enrollments",
|
|
33
32
|
"programEnrollmentSaveError": "Error saving program enrollment",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "Program name",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "Program enrollments",
|
|
38
37
|
"Programs": "Programs",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "Save and close",
|
package/translations/ar.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "لا توجد برامج أخرى لتسجيل هذا المريض فيها",
|
|
30
30
|
"noProgramsConfigured": "لم يتم تكوين أي برامج",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "تسجيلات البرنامج",
|
|
33
32
|
"programEnrollmentSaveError": "خطأ في حفظ التسجيل في البرنامج",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "اسم البرنامج",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "تسجيلات البرنامج",
|
|
38
37
|
"Programs": "البرامج",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "حفظ وإغلاق",
|
package/translations/ar_SY.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
|
30
30
|
"noProgramsConfigured": "No programs configured",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "Program enrollments",
|
|
33
32
|
"programEnrollmentSaveError": "Error saving program enrollment",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "Program name",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "Program enrollments",
|
|
38
37
|
"Programs": "Programs",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "Save and close",
|
package/translations/bn.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
|
30
30
|
"noProgramsConfigured": "No programs configured",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "Program enrollments",
|
|
33
32
|
"programEnrollmentSaveError": "Error saving program enrollment",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "Program name",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "Program enrollments",
|
|
38
37
|
"Programs": "Programs",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "Save and close",
|
package/translations/cs.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
|
30
30
|
"noProgramsConfigured": "No programs configured",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "Program enrollments",
|
|
33
32
|
"programEnrollmentSaveError": "Error saving program enrollment",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "Program name",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "Program enrollments",
|
|
38
37
|
"Programs": "Programs",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "Save and close",
|
package/translations/de.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
|
30
30
|
"noProgramsConfigured": "No programs configured",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "Program enrollments",
|
|
33
32
|
"programEnrollmentSaveError": "Error saving program enrollment",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "Program name",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "Program enrollments",
|
|
38
37
|
"Programs": "Programs",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "Save and close",
|
package/translations/en_US.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
|
30
30
|
"noProgramsConfigured": "No programs configured",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "Program enrollments",
|
|
33
32
|
"programEnrollmentSaveError": "Error saving program enrollment",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "Program name",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "Program enrollments",
|
|
38
37
|
"Programs": "Programs",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "Save and close",
|
package/translations/es.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "No quedan más programas en los que inscribir a este paciente",
|
|
30
30
|
"noProgramsConfigured": "No hay programas configurados",
|
|
31
31
|
"programEnrollmentDeleted": "Inscripción al programa eliminada",
|
|
32
|
-
"programEnrollments": "Inscripciones a los programas",
|
|
33
32
|
"programEnrollmentSaveError": "Error al guardar la inscripción al programa",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Registrar la inscripción al programa",
|
|
35
35
|
"programName": "Nombre del programa",
|
|
36
36
|
"programRequired": "El programa es obligatorio",
|
|
37
|
-
"programs": "Inscripciones a los programas",
|
|
38
37
|
"Programs": "Programas",
|
|
39
38
|
"programStatus": "Estado del programa",
|
|
40
39
|
"saveAndClose": "Guardar y cerrar",
|
package/translations/es_MX.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
|
30
30
|
"noProgramsConfigured": "No programs configured",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "Program enrollments",
|
|
33
32
|
"programEnrollmentSaveError": "Error saving program enrollment",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "Program name",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "Program enrollments",
|
|
38
37
|
"Programs": "Programs",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "Save and close",
|
package/translations/fr.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "Il n'y a plus de programme où enregistrer le patient",
|
|
30
30
|
"noProgramsConfigured": "Aucun programme configuré",
|
|
31
31
|
"programEnrollmentDeleted": "Inscription au programme supprimée",
|
|
32
|
-
"programEnrollments": "Enregistrement dans les programmes",
|
|
33
32
|
"programEnrollmentSaveError": "Erreur d'enregistrement dans le programme",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Enregistrer les inscriptions au programme",
|
|
35
35
|
"programName": "Nom du programme",
|
|
36
36
|
"programRequired": "Le programme est requis",
|
|
37
|
-
"programs": "programmes",
|
|
38
37
|
"Programs": "Programmes",
|
|
39
38
|
"programStatus": "Statut du programme",
|
|
40
39
|
"saveAndClose": "Sauvegarder et fermer",
|
package/translations/he.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "אין עוד תוכניות שניתן להרשים את המטופל בהן",
|
|
30
30
|
"noProgramsConfigured": "לא מוגדרות תוכניות",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "הרשמות לתוכניות",
|
|
33
32
|
"programEnrollmentSaveError": "שגיאה בשמירת הרשמת התוכנית",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "שם התוכנית",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "תוכניות",
|
|
38
37
|
"Programs": "תוכניות",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "שמור וסגור",
|
package/translations/hi.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
|
30
30
|
"noProgramsConfigured": "No programs configured",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "Program enrollments",
|
|
33
32
|
"programEnrollmentSaveError": "Error saving program enrollment",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "Program name",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "Program enrollments",
|
|
38
37
|
"Programs": "Programs",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "Save and close",
|
package/translations/hi_IN.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
|
30
30
|
"noProgramsConfigured": "No programs configured",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "Program enrollments",
|
|
33
32
|
"programEnrollmentSaveError": "Error saving program enrollment",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "Program name",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "Program enrollments",
|
|
38
37
|
"Programs": "Programs",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "Save and close",
|
package/translations/id.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "Tidak ada program lagi yang tersisa untuk mendaftarkan pasien ini",
|
|
30
30
|
"noProgramsConfigured": "Tidak ada program yang dikonfigurasi",
|
|
31
31
|
"programEnrollmentDeleted": "Pendaftaran program dihapus",
|
|
32
|
-
"programEnrollments": "Pendaftaran program",
|
|
33
32
|
"programEnrollmentSaveError": "Kesalahan menyimpan pendaftaran program",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Rekam pendaftaran program",
|
|
35
35
|
"programName": "Nama program",
|
|
36
36
|
"programRequired": "Program wajib diisi",
|
|
37
|
-
"programs": "Pendaftaran program",
|
|
38
37
|
"Programs": "Program",
|
|
39
38
|
"programStatus": "Status program",
|
|
40
39
|
"saveAndClose": "Simpan dan tutup",
|
package/translations/it.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "Non ci sono più programmi disponibili per l'iscrizione di questo paziente",
|
|
30
30
|
"noProgramsConfigured": "Nessun programma configurato",
|
|
31
31
|
"programEnrollmentDeleted": "Iscrizione al programma eliminata",
|
|
32
|
-
"programEnrollments": "Iscrizioni ai programmi",
|
|
33
32
|
"programEnrollmentSaveError": "Errore nel salvataggio dell'iscrizione al programma",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Registra iscrizione al programma",
|
|
35
35
|
"programName": "Nome del programma",
|
|
36
36
|
"programRequired": "Il programma è obbligatorio",
|
|
37
|
-
"programs": "Iscrizioni ai programmi",
|
|
38
37
|
"Programs": "Programmi",
|
|
39
38
|
"programStatus": "Stato del programma",
|
|
40
39
|
"saveAndClose": "Salva e chiudi",
|
package/translations/ka.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
|
30
30
|
"noProgramsConfigured": "პროგრამები მორგებული არაა",
|
|
31
31
|
"programEnrollmentDeleted": "აღმოჩენილია პროგრამაში ჩარიცხვა",
|
|
32
|
-
"programEnrollments": "პროგრამაში ჩარიცხვები",
|
|
33
32
|
"programEnrollmentSaveError": "პროგრამაში ჩარიცხვის შენახვის შეცდომა",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "პროგრამაში ჩარიცხვის ჩაწერა",
|
|
35
35
|
"programName": "პროგრამის სახელი",
|
|
36
36
|
"programRequired": "პროგრამა აუცილებელია",
|
|
37
|
-
"programs": "პროგრამაში ჩარიცხვები",
|
|
38
37
|
"Programs": "პროგრამები",
|
|
39
38
|
"programStatus": "პროგრამის სტატუსი",
|
|
40
39
|
"saveAndClose": "შენახვა და დახურვა",
|
package/translations/km.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "មិនមានកម្មវិធីទៀតទេដើម្បីចុះឈ្មោះអ្នកជំងឺនេះ",
|
|
30
30
|
"noProgramsConfigured": "មិនមានកម្មវិធីដែលបានកំណត់រចនាសម្ព័ន្ធទេ",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "ការចុះឈ្មោះកម្មវិធី",
|
|
33
32
|
"programEnrollmentSaveError": "កំហុសក្នុងការរក្សាទុកការចុះឈ្មោះកម្មវិធី",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "ឈ្មោះកម្មវិធី",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "កម្មវិធី",
|
|
38
37
|
"Programs": "កម្មវិធី",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "រក្សាទុក និងបិទ",
|
package/translations/ku.json
CHANGED
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"noEligibleEnrollments": "There are no more programs left to enroll this patient in",
|
|
30
30
|
"noProgramsConfigured": "No programs configured",
|
|
31
31
|
"programEnrollmentDeleted": "Program enrollment deleted",
|
|
32
|
-
"programEnrollments": "Program enrollments",
|
|
33
32
|
"programEnrollmentSaveError": "Error saving program enrollment",
|
|
33
|
+
"programEnrollmentsLower": "program enrollments",
|
|
34
34
|
"programEnrollmentWorkspaceTitle": "Record program enrollment",
|
|
35
35
|
"programName": "Program name",
|
|
36
36
|
"programRequired": "Program is required",
|
|
37
|
-
"programs": "Program enrollments",
|
|
38
37
|
"Programs": "Programs",
|
|
39
38
|
"programStatus": "Program status",
|
|
40
39
|
"saveAndClose": "Save and close",
|