@openmrs/esm-patient-programs-app 3.2.1-pre.97 → 4.0.1-pre.228

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 (54) hide show
  1. package/.turbo/turbo-build.log +33 -35
  2. package/dist/238.js +2 -0
  3. package/dist/{707.js.LICENSE.txt → 238.js.LICENSE.txt} +0 -0
  4. package/dist/396.js +2 -0
  5. package/dist/396.js.LICENSE.txt +53 -0
  6. package/dist/402.js +1 -1
  7. package/dist/435.js +1 -0
  8. package/dist/461.js +1 -0
  9. package/dist/574.js +1 -1
  10. package/dist/641.js +1 -0
  11. package/dist/709.js +1 -0
  12. package/dist/733.js +1 -0
  13. package/dist/784.js +1 -1
  14. package/dist/784.js.LICENSE.txt +2 -7
  15. package/dist/821.js +1 -0
  16. package/dist/858.js +1 -1
  17. package/dist/main.js +1 -0
  18. package/dist/openmrs-esm-patient-programs-app.js +1 -1
  19. package/dist/openmrs-esm-patient-programs-app.js.buildmanifest.json +134 -205
  20. package/dist/openmrs-esm-patient-programs-app.old +1 -1
  21. package/package.json +7 -11
  22. package/src/config-schema.ts +12 -0
  23. package/src/dashboard.meta.tsx +1 -1
  24. package/src/index.ts +3 -2
  25. package/src/programs/program-action-button/program-action-button.component.tsx +47 -0
  26. package/src/programs/programs-detailed-summary.component.tsx +68 -37
  27. package/src/programs/programs-detailed-summary.scss +1 -4
  28. package/src/programs/programs-detailed-summary.test.tsx +26 -7
  29. package/src/programs/programs-form.component.tsx +102 -46
  30. package/src/programs/programs-form.scss +1 -9
  31. package/src/programs/programs-form.test.tsx +113 -110
  32. package/src/programs/programs-overview.component.tsx +59 -45
  33. package/src/programs/programs-overview.scss +1 -3
  34. package/src/programs/programs-overview.test.tsx +6 -7
  35. package/src/programs/programs.resource.tsx +63 -8
  36. package/src/types/index.ts +16 -2
  37. package/translations/en.json +8 -2
  38. package/dist/13.js +0 -1
  39. package/dist/142.js +0 -1
  40. package/dist/145.js +0 -1
  41. package/dist/186.js +0 -2
  42. package/dist/186.js.LICENSE.txt +0 -23
  43. package/dist/252.js +0 -2
  44. package/dist/252.js.LICENSE.txt +0 -23
  45. package/dist/336.js +0 -2
  46. package/dist/336.js.LICENSE.txt +0 -20
  47. package/dist/373.js +0 -1
  48. package/dist/635.js +0 -2
  49. package/dist/635.js.LICENSE.txt +0 -16
  50. package/dist/692.js +0 -1
  51. package/dist/701.js +0 -1
  52. package/dist/707.js +0 -2
  53. package/dist/76.js +0 -1
  54. package/dist/932.js +0 -1
@@ -1,33 +1,33 @@
1
1
  import React from 'react';
2
- import Add16 from '@carbon/icons-react/es/add/16';
3
- import styles from './programs-overview.scss';
4
- import { formatDate, formatDatetime, usePagination } from '@openmrs/esm-framework';
2
+ import { useTranslation } from 'react-i18next';
3
+ import capitalize from 'lodash-es/capitalize';
5
4
  import {
5
+ Button,
6
6
  DataTable,
7
7
  DataTableSkeleton,
8
- Button,
9
8
  InlineLoading,
9
+ InlineNotification,
10
10
  Table,
11
+ TableBody,
11
12
  TableCell,
12
13
  TableContainer,
13
- TableBody,
14
14
  TableHead,
15
15
  TableHeader,
16
16
  TableRow,
17
- InlineNotification,
18
- } from 'carbon-components-react';
19
- import filter from 'lodash-es/filter';
20
- import includes from 'lodash-es/includes';
21
- import map from 'lodash-es/map';
17
+ } from '@carbon/react';
18
+ import { Add } from '@carbon/react/icons';
22
19
  import {
20
+ launchPatientWorkspace,
23
21
  CardHeader,
24
22
  EmptyState,
25
23
  ErrorState,
26
24
  PatientChartPagination,
27
- launchPatientWorkspace,
28
25
  } from '@openmrs/esm-patient-common-lib';
29
- import { useTranslation } from 'react-i18next';
30
- import { useAvailablePrograms, useEnrollments } from './programs.resource';
26
+ import { ConfigObject, formatDate, formatDatetime, useConfig, usePagination } from '@openmrs/esm-framework';
27
+ import { usePrograms } from './programs.resource';
28
+ import ProgramActionButton from './program-action-button/program-action-button.component';
29
+ import { ConfigurableProgram } from '../types';
30
+ import styles from './programs-overview.scss';
31
31
 
32
32
  interface ProgramsOverviewProps {
33
33
  basePath: string;
@@ -37,22 +37,29 @@ interface ProgramsOverviewProps {
37
37
  const ProgramsOverview: React.FC<ProgramsOverviewProps> = ({ basePath, patientUuid }) => {
38
38
  const programsCount = 5;
39
39
  const { t } = useTranslation();
40
+ const config = useConfig() as ConfigObject;
40
41
  const displayText = t('programs', 'Program enrollments');
41
42
  const headerTitle = t('carePrograms', 'Care Programs');
42
43
  const urlLabel = t('seeAll', 'See all');
43
44
  const pageUrl = window.spaBase + basePath + '/programs';
45
+ const isConfigurable = config.customUrl ? true : false;
44
46
 
45
- const { data: enrollments, isError, isLoading, isValidating } = useEnrollments(patientUuid);
46
- const activeEnrollments = enrollments?.filter((enrollment) => !enrollment.dateCompleted);
47
-
48
- const { data: availablePrograms } = useAvailablePrograms();
49
-
50
- const eligiblePrograms = filter(
47
+ const {
48
+ activeEnrollments,
51
49
  availablePrograms,
52
- (program) => !includes(map(enrollments, 'program.uuid'), program.uuid),
53
- );
50
+ configurablePrograms,
51
+ eligiblePrograms,
52
+ enrollments,
53
+ isError,
54
+ isLoading,
55
+ isValidating,
56
+ } = usePrograms(patientUuid);
54
57
 
55
- const { results: paginatedEnrollments, goTo, currentPage } = usePagination(enrollments ?? [], programsCount);
58
+ const {
59
+ results: paginatedEnrollments,
60
+ goTo,
61
+ currentPage,
62
+ } = usePagination(isConfigurable ? configurablePrograms : enrollments ?? [], programsCount);
56
63
 
57
64
  const launchProgramsForm = React.useCallback(() => launchPatientWorkspace('programs-form-workspace'), []);
58
65
 
@@ -73,30 +80,37 @@ const ProgramsOverview: React.FC<ProgramsOverviewProps> = ({ basePath, patientUu
73
80
  key: 'status',
74
81
  header: t('status', 'Status'),
75
82
  },
83
+ {
84
+ key: 'actions',
85
+ header: t('actions', 'Actions'),
86
+ },
76
87
  ];
77
88
 
78
89
  const tableRows = React.useMemo(() => {
79
- return paginatedEnrollments?.map((enrollment) => ({
90
+ return paginatedEnrollments?.map((enrollment: ConfigurableProgram) => ({
80
91
  id: enrollment.uuid,
81
92
  display: enrollment.display,
82
93
  location: enrollment.location?.display,
83
- dateEnrolled: formatDatetime(new Date(enrollment.dateEnrolled)),
84
- status: enrollment.dateCompleted
94
+ dateEnrolled: enrollment.dateEnrolled ? formatDatetime(new Date(enrollment.dateEnrolled)) : '--',
95
+ status: isConfigurable
96
+ ? capitalize(enrollment.enrollmentStatus)
97
+ : enrollment.dateCompleted
85
98
  ? `${t('completedOn', 'Completed On')} ${formatDate(new Date(enrollment.dateCompleted))}`
86
99
  : t('active', 'Active'),
100
+ actions: <ProgramActionButton enrollment={enrollment} />,
87
101
  }));
88
- }, [paginatedEnrollments, t]);
102
+ }, [isConfigurable, paginatedEnrollments, t]);
89
103
 
90
104
  if (isLoading) return <DataTableSkeleton role="progressbar" />;
91
105
  if (isError) return <ErrorState error={isError} headerTitle={headerTitle} />;
92
- if (activeEnrollments?.length) {
106
+ if (isConfigurable ? configurablePrograms.length : activeEnrollments?.length) {
93
107
  return (
94
108
  <div className={styles.widgetCard}>
95
109
  <CardHeader title={headerTitle}>
96
110
  <span>{isValidating ? <InlineLoading /> : null}</span>
97
111
  <Button
98
112
  kind="ghost"
99
- renderIcon={Add16}
113
+ renderIcon={(props) => <Add size={16} {...props} />}
100
114
  iconDescription="Add programs"
101
115
  onClick={launchProgramsForm}
102
116
  disabled={availablePrograms?.length && eligiblePrograms?.length === 0}
@@ -104,19 +118,19 @@ const ProgramsOverview: React.FC<ProgramsOverviewProps> = ({ basePath, patientUu
104
118
  {t('add', 'Add')}
105
119
  </Button>
106
120
  </CardHeader>
107
- <TableContainer>
108
- {availablePrograms?.length && eligiblePrograms?.length === 0 && (
109
- <InlineNotification
110
- style={{ minWidth: '100%', margin: '0rem', padding: '0rem' }}
111
- kind={'info'}
112
- lowContrast
113
- subtitle={t('noEligibleEnrollments', 'There are no more programs left to enroll this patient in')}
114
- title={t('fullyEnrolled', 'Enrolled in all programs')}
115
- />
116
- )}
117
- <DataTable rows={tableRows} headers={tableHeaders} isSortable={true} size="short">
118
- {({ rows, headers, getHeaderProps, getTableProps }) => (
119
- <Table {...getTableProps()} useZebraStyles>
121
+ {availablePrograms?.length && eligiblePrograms?.length === 0 && (
122
+ <InlineNotification
123
+ style={{ minWidth: '100%', margin: '0rem', padding: '0rem' }}
124
+ kind={'info'}
125
+ lowContrast
126
+ subtitle={t('noEligibleEnrollments', 'There are no more programs left to enroll this patient in')}
127
+ title={t('fullyEnrolled', 'Enrolled in all programs')}
128
+ />
129
+ )}
130
+ <DataTable rows={tableRows} headers={tableHeaders} isSortable size="sm" useZebraStyles>
131
+ {({ rows, headers, getHeaderProps, getTableProps }) => (
132
+ <TableContainer>
133
+ <Table {...getTableProps()}>
120
134
  <TableHead>
121
135
  <TableRow>
122
136
  {headers.map((header) => (
@@ -142,15 +156,15 @@ const ProgramsOverview: React.FC<ProgramsOverviewProps> = ({ basePath, patientUu
142
156
  ))}
143
157
  </TableBody>
144
158
  </Table>
145
- )}
146
- </DataTable>
147
- </TableContainer>
159
+ </TableContainer>
160
+ )}
161
+ </DataTable>
148
162
  <PatientChartPagination
149
163
  currentItems={paginatedEnrollments.length}
150
164
  onPageNumberChange={({ page }) => goTo(page)}
151
165
  pageNumber={currentPage}
152
166
  pageSize={programsCount}
153
- totalItems={enrollments.length}
167
+ totalItems={isConfigurable ? configurablePrograms.length : enrollments?.length}
154
168
  dashboardLinkUrl={pageUrl}
155
169
  dashboardLinkLabel={urlLabel}
156
170
  />
@@ -1,6 +1,4 @@
1
- @import "~@openmrs/esm-styleguide/src/vars";
2
- @import "~carbon-components/src/globals/scss/vars";
3
- @import "~carbon-components/src/globals/scss/mixins";
1
+ @import '~@openmrs/esm-styleguide/src/vars';
4
2
 
5
3
  .widgetCard {
6
4
  border: 1px solid $ui-03;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { screen } from '@testing-library/react';
2
+ import { screen, waitFor } from '@testing-library/react';
3
3
  import userEvent from '@testing-library/user-event';
4
4
  import { openmrsFetch, usePagination } from '@openmrs/esm-framework';
5
5
  import { launchPatientWorkspace } from '@openmrs/esm-patient-common-lib';
@@ -67,14 +67,12 @@ describe('ProgramsOverview', () => {
67
67
  await waitForLoadingToFinish();
68
68
 
69
69
  expect(screen.getByText(/Care Programs/i)).toBeInTheDocument();
70
- expect(
71
- screen.getByText(
72
- /Sorry, there was a problem displaying this information. You can try to reload this page, or contact the site administrator and quote the error code above./,
73
- ),
74
- ).toBeInTheDocument();
70
+ expect(screen.getByText(/Sorry, there was a problem displaying this information./)).toBeInTheDocument();
75
71
  });
76
72
 
77
73
  it("renders a tabular overview of the patient's active program enrollments when available", async () => {
74
+ const user = userEvent.setup();
75
+
78
76
  mockOpenmrsFetch.mockReturnValueOnce({ data: { results: mockEnrolledProgramsResponse } });
79
77
  mockUsePagination.mockImplementation(() => ({
80
78
  currentPage: 1,
@@ -103,7 +101,8 @@ describe('ProgramsOverview', () => {
103
101
  expect(screen.getByRole('row', { name: /HIV Care and Treatment/i })).toBeInTheDocument();
104
102
 
105
103
  // Clicking "Add" launches the programs form in a workspace
106
- userEvent.click(addButton);
104
+ await waitFor(() => user.click(addButton));
105
+
107
106
  expect(launchPatientWorkspace).toHaveBeenCalledWith('programs-form-workspace');
108
107
  });
109
108
  });
@@ -1,8 +1,12 @@
1
1
  import useSWR from 'swr';
2
- import { map } from 'rxjs/operators';
3
- import { openmrsFetch, openmrsObservableFetch } from '@openmrs/esm-framework';
4
- import { PatientProgram, Program, ProgramsFetchResponse } from '../types';
2
+ import { map as rxjsMap } from 'rxjs/operators';
3
+ import { openmrsFetch, openmrsObservableFetch, useConfig } from '@openmrs/esm-framework';
4
+ import { ConfigurableProgram, PatientProgram, Program, ProgramsFetchResponse } from '../types';
5
5
  import uniqBy from 'lodash-es/uniqBy';
6
+ import filter from 'lodash-es/filter';
7
+ import includes from 'lodash-es/includes';
8
+ import map from 'lodash-es/map';
9
+ import { ConfigObject } from '../config-schema';
6
10
 
7
11
  export const customRepresentation = `custom:(uuid,display,program,dateEnrolled,dateCompleted,location:(uuid,display))`;
8
12
 
@@ -17,30 +21,41 @@ export function useEnrollments(patientUuid: string) {
17
21
  ? data?.data.results.sort((a, b) => (b.dateEnrolled > a.dateEnrolled ? 1 : -1))
18
22
  : null;
19
23
 
24
+ const activeEnrollments = formattedEnrollments?.filter((enrollment) => !enrollment.dateCompleted);
25
+
20
26
  return {
21
27
  data: data ? uniqBy(formattedEnrollments, (program) => program?.program?.uuid) : null,
22
28
  isError: error,
23
29
  isLoading: !data && !error,
24
30
  isValidating,
31
+ activeEnrollments,
25
32
  };
26
33
  }
27
34
 
28
- export function useAvailablePrograms() {
35
+ export function useAvailablePrograms(enrollments?: Array<PatientProgram>) {
29
36
  const { data, error } = useSWR<{ data: { results: Array<Program> } }, Error>(
30
37
  `/ws/rest/v1/program?v=custom:(uuid,display,allWorkflows,concept:(uuid,display))`,
31
38
  openmrsFetch,
32
39
  );
33
40
 
41
+ const availablePrograms = data?.data?.results ?? null;
42
+
43
+ const eligiblePrograms = filter(
44
+ availablePrograms,
45
+ (program) => !includes(map(enrollments, 'program.uuid'), program.uuid),
46
+ );
47
+
34
48
  return {
35
- data: data?.data?.results?.length ? data.data.results : null,
49
+ data: availablePrograms,
36
50
  isError: error,
37
51
  isLoading: !data && !error,
52
+ eligiblePrograms,
38
53
  };
39
54
  }
40
55
 
41
56
  export function getPatientProgramByUuid(programUuid: string) {
42
57
  return openmrsObservableFetch<PatientProgram>(`/ws/rest/v1/programenrollment/${programUuid}`).pipe(
43
- map(({ data }) => data),
58
+ rxjsMap(({ data }) => data),
44
59
  );
45
60
  }
46
61
 
@@ -59,12 +74,12 @@ export function createProgramEnrollment(payload, abortController) {
59
74
  });
60
75
  }
61
76
 
62
- export function updateProgramEnrollment(payload, abortController) {
77
+ export function updateProgramEnrollment(programEnrollmentUuid: string, payload, abortController) {
63
78
  if (!payload && !payload.program) {
64
79
  return null;
65
80
  }
66
81
  const { program, dateEnrolled, dateCompleted, location } = payload;
67
- return openmrsObservableFetch(`/ws/rest/v1/programenrollment/${program}`, {
82
+ return openmrsObservableFetch(`/ws/rest/v1/programenrollment/${programEnrollmentUuid}`, {
68
83
  method: 'POST',
69
84
  headers: {
70
85
  'Content-Type': 'application/json',
@@ -73,3 +88,43 @@ export function updateProgramEnrollment(payload, abortController) {
73
88
  signal: abortController.signal,
74
89
  });
75
90
  }
91
+
92
+ export const useConfigurableProgram = (patientUuid: string) => {
93
+ const { customUrl } = useConfig() as ConfigObject;
94
+ const { data, error } = useSWR<{ data: Array<ConfigurableProgram> }>(
95
+ customUrl ? `${customUrl}${patientUuid}` : null,
96
+ openmrsFetch,
97
+ );
98
+ const configurablePrograms = data?.data ?? [];
99
+ return {
100
+ configurablePrograms,
101
+ isLoading: !data && !error,
102
+ error: error,
103
+ };
104
+ };
105
+
106
+ export const usePrograms = (patientUuid: string) => {
107
+ const { customUrl } = useConfig() as ConfigObject;
108
+ const {
109
+ data: enrollments,
110
+ isError: enrollError,
111
+ isLoading: enrolLoading,
112
+ isValidating,
113
+ activeEnrollments,
114
+ } = useEnrollments(patientUuid);
115
+ const { data: availablePrograms, eligiblePrograms } = useAvailablePrograms(enrollments);
116
+ const { configurablePrograms, isLoading: configLoading, error: configError } = useConfigurableProgram(patientUuid);
117
+
118
+ const status = customUrl
119
+ ? { isLoading: configLoading, isError: configError }
120
+ : { isLoading: enrolLoading, isError: enrollError };
121
+ return {
122
+ enrollments,
123
+ ...status,
124
+ isValidating,
125
+ activeEnrollments,
126
+ availablePrograms,
127
+ eligiblePrograms,
128
+ configurablePrograms,
129
+ };
130
+ };
@@ -15,11 +15,15 @@ export interface PatientProgram {
15
15
  states: Array<{}>;
16
16
  links?: Links;
17
17
  }>;
18
+ concept: {
19
+ display: string;
20
+ uuid: string;
21
+ };
18
22
  links: Links;
19
23
  };
20
24
  display: string;
21
- dateEnrolled: Date;
22
- dateCompleted: Date | null;
25
+ dateEnrolled: string;
26
+ dateCompleted: string | null;
23
27
  location?: {
24
28
  uuid: string;
25
29
  display: string;
@@ -95,3 +99,13 @@ export interface SessionData {
95
99
  retired: false;
96
100
  links: Links;
97
101
  }
102
+
103
+ export interface ConfigurableProgram extends PatientProgram {
104
+ uuid: string;
105
+ display: string;
106
+ enrollmentFormUuid: string;
107
+ discontinuationFormUuid: string;
108
+ enrollmentStatus: string;
109
+ dateEnrolled: string;
110
+ dateCompleted: string;
111
+ }
@@ -1,4 +1,5 @@
1
1
  {
2
+ "actions": "Actions",
2
3
  "active": "Active",
3
4
  "activePrograms": "Active programs",
4
5
  "add": "Add",
@@ -9,15 +10,20 @@
9
10
  "completedOn": "Completed on",
10
11
  "dateCompleted": "Date completed",
11
12
  "dateEnrolled": "Date enrolled",
13
+ "discontinue": "Discontinue",
14
+ "enroll": "Enroll",
15
+ "enrollment": "Enrollment",
12
16
  "enrollmentLocation": "Enrollment location",
13
- "enrollmentNowVisible": "It is now visible on the Programs page",
17
+ "enrollmentNowVisible": "It is now visible in the Programs table",
14
18
  "enrollmentSaved": "Program enrollment saved",
19
+ "enrollmentUpdated": "Program enrollment updated",
20
+ "enrollmentUpdatesNowVisible": "Changes to the program are now visible in the Programs table",
15
21
  "fullyEnrolled": "Enrolled in all programs",
16
22
  "location": "Location",
17
23
  "noEligibleEnrollments": "There are no more programs left to enroll this patient in",
18
- "program": "Program",
19
24
  "programEnrollments": "Program enrollments",
20
25
  "programEnrollmentSaveError": "Error saving program enrollment",
26
+ "programName": "Program name",
21
27
  "programs": "programs",
22
28
  "required": "Required",
23
29
  "saveAndClose": "Save and close",
package/dist/13.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[13],{5351:(e,t,r)=>{r.d(t,{Z:()=>i});var n=r(9601),a=r.n(n),o=r(2609),l=r.n(o)()(a());l.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2.625rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__programs-detailed-summary__skeleton___vysuL{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}.-esm-patient-programs__programs-detailed-summary__widgetCard___q9_pO{border:1px solid #e0e0e0}",""]),l.locals={widgetCard:"-esm-patient-programs__programs-detailed-summary__widgetCard___q9_pO",skeleton:"-esm-patient-programs__programs-detailed-summary__skeleton___vysuL"};const i=l},6013:(e,t,r)=>{r.r(t),r.d(t,{default:()=>V});var n=r(9902),a=r.n(n),o=r(8011),l=r(3863),i=r(8827),s=r(819),d=r(321),m=r.n(d),u=r(1195),c=r.n(u),p=r(3275),g=r.n(p),f=r(7162),h=r.n(f),v=r(2094),b=r.n(v),y=r(757),_=r.n(y),E=r(5351),k={};k.styleTagTransform=_(),k.setAttributes=h(),k.insert=g().bind(null,"head"),k.domAPI=c(),k.insertStyleElement=b(),m()(E.Z,k);const w=E.Z&&E.Z.locals?E.Z.locals:void 0;var Z=r(3771),C=r(4924),P=r(4076),x=r(8580),z=r(1145),S=r(7030),q=r(160),T=r(5223),O=r(2965),X=r(364),M=r(7500),A=r(8345),D=r(1358),L=r(2427),B=r(3783),I=r(3066);function j(){return j=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},j.apply(this,arguments)}const V=function(e){var t,r,n=e.patientUuid,d=(0,C.useTranslation)().t,m=d("programEnrollments","Program enrollments"),u=d("carePrograms","Care Programs"),c=(0,P.Bw)(n),p=c.data,g=c.isError,f=c.isLoading,h=c.isValidating,v=(0,P.oI)().data,b=(0,l.Z)(v,(function(e){return!(0,i.Z)((0,s.Z)(p,"program.uuid"),e.uuid)})),y=a().useMemo((function(){return[{key:"display",header:d("activePrograms","Active programs")},{key:"location",header:d("location","Location")},{key:"dateEnrolled",header:d("dateEnrolled","Date enrolled")},{key:"status",header:d("status","Status")}]}),[d]),_=a().useMemo((function(){return null==p?void 0:p.map((function(e){var t;return{id:e.uuid,display:e.display,location:null===(t=e.location)||void 0===t?void 0:t.display,dateEnrolled:(0,I.formatDatetime)(new Date(e.dateEnrolled)),status:e.dateCompleted?"".concat(d("completedOn","Completed On")," ").concat((0,I.formatDate)(new Date(e.dateCompleted))):d("active","Active")}}))}),[p,d]),E=a().useCallback((function(){return(0,Z.launchPatientWorkspace)("programs-form-workspace")}),[]);return f?a().createElement(x.Z,{role:"progressbar"}):g?a().createElement(Z.ErrorState,{error:g,headerTitle:u}):(null==p?void 0:p.length)?a().createElement("div",{className:w.widgetCard},a().createElement(Z.CardHeader,{title:u},a().createElement("span",null,h?a().createElement(z.Z,null):null),a().createElement(S.Z,{kind:"ghost",renderIcon:o.Z,iconDescription:"Add programs",onClick:E,disabled:(null==v?void 0:v.length)&&0===(null==b?void 0:b.length)},d("add","Add"))),a().createElement(q.Z,null,(null==v?void 0:v.length)&&0===(null==b?void 0:b.length)&&a().createElement(T.K0,{style:{minWidth:"100%",margin:"0rem",padding:"0rem"},kind:"info",lowContrast:!0,subtitle:d("noEligibleEnrollments","There are no more programs left to enroll this patient in"),title:d("fullyEnrolled","Enrolled in all programs")}),a().createElement(O.ZP,{rows:_,headers:y,isSortable:!0,size:"short"},(function(e){var n=e.rows,o=e.headers,l=e.getHeaderProps,i=e.getTableProps;return a().createElement(X.Z,j({},i(),{useZebraStyles:!0}),a().createElement(M.Z,null,a().createElement(A.Z,null,o.map((function(e){var r;return a().createElement(D.Z,j({className:"".concat(w.productiveHeading01," ").concat(w.text02)},l({header:e,isSortable:e.isSortable})),null!==(t=null===(r=e.header)||void 0===r?void 0:r.content)&&void 0!==t?t:e.header)})))),a().createElement(L.Z,null,n.map((function(e){return a().createElement(A.Z,{key:e.id},e.cells.map((function(e){var t;return a().createElement(B.Z,{key:e.id},null!==(r=null===(t=e.value)||void 0===t?void 0:t.content)&&void 0!==r?r:e.value)})))}))))})))):a().createElement(Z.EmptyState,{displayText:m,headerTitle:u,launchForm:E})}},4076:(e,t,r)=>{r.d(t,{Bw:()=>i,df:()=>d,o9:()=>l,oI:()=>s});var n=r(9857),a=r(3066),o=r(4200),l="custom:(uuid,display,program,dateEnrolled,dateCompleted,location:(uuid,display))";function i(e){var t,r=(0,n.ZP)("/ws/rest/v1/programenrollment?patient=".concat(e,"&v=").concat(l),a.openmrsFetch),i=r.data,s=r.error,d=r.isValidating,m=(null==i||null===(t=i.data)||void 0===t?void 0:t.results.length)>0?null==i?void 0:i.data.results.sort((function(e,t){return t.dateEnrolled>e.dateEnrolled?1:-1})):null;return{data:i?(0,o.Z)(m,(function(e){var t;return null==e||null===(t=e.program)||void 0===t?void 0:t.uuid})):null,isError:s,isLoading:!i&&!s,isValidating:d}}function s(){var e,t,r=(0,n.ZP)("/ws/rest/v1/program?v=custom:(uuid,display,allWorkflows,concept:(uuid,display))",a.openmrsFetch),o=r.data,l=r.error;return{data:(null==o||null===(e=o.data)||void 0===e||null===(t=e.results)||void 0===t?void 0:t.length)?o.data.results:null,isError:l,isLoading:!o&&!l}}function d(e,t){if(!e)return null;var r=e.program,n=e.patient,o=e.dateEnrolled,l=e.dateCompleted,i=e.location;return(0,a.openmrsObservableFetch)("/ws/rest/v1/programenrollment",{method:"POST",headers:{"Content-Type":"application/json"},body:{program:r,patient:n,dateEnrolled:o,dateCompleted:l,location:i},signal:t.signal})}}}]);
package/dist/142.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[142],{7904:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(9601),a=n.n(r),o=n(2609),i=n.n(o)()(a());i.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2.625rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__card-header__skeleton___RFH3S{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}.-esm-patient-programs__card-header__desktopHeader___BUQ5I,.-esm-patient-programs__card-header__tabletHeader___efA_M{display:flex;justify-content:space-between;align-items:center;padding:.75rem 0 .75rem 1rem;background-color:#fff}.-esm-patient-programs__card-header__desktopHeader___BUQ5I h4:after,.-esm-patient-programs__card-header__tabletHeader___efA_M h4:after{content:\"\";display:block;width:2rem;padding-top:.188rem;border-bottom:.375rem solid var(--brand-03)}.-esm-patient-programs__card-header__desktopHeader___BUQ5I{height:3rem}.-esm-patient-programs__card-header__desktopHeader___BUQ5I h4{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0;color:#525252}.-esm-patient-programs__card-header__tabletHeader___efA_M{height:4.5rem}.-esm-patient-programs__card-header__tabletHeader___efA_M h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0;color:#525252}",""]),i.locals={desktopHeader:"-esm-patient-programs__card-header__desktopHeader___BUQ5I",tabletHeader:"-esm-patient-programs__card-header__tabletHeader___efA_M",skeleton:"-esm-patient-programs__card-header__skeleton___RFH3S"};const s=i},7431:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(9601),a=n.n(r),o=n(2609),i=n.n(o)()(a());i.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2.625rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__empty-state__skeleton___TC36q{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}.-esm-patient-programs__empty-state__action___xInzb{margin-bottom:.5rem}.-esm-patient-programs__empty-state__content___lACIK{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px;color:#525252;margin-top:1rem;margin-bottom:.5rem}.-esm-patient-programs__empty-state__desktopHeading___UIGID h4{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0;color:#525252}.-esm-patient-programs__empty-state__tabletHeading___lVXqD h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0;color:#525252}.-esm-patient-programs__empty-state__desktopHeading___UIGID,.-esm-patient-programs__empty-state__tabletHeading___lVXqD{text-align:left;text-transform:capitalize;margin-bottom:1rem}.-esm-patient-programs__empty-state__desktopHeading___UIGID h4:after,.-esm-patient-programs__empty-state__tabletHeading___lVXqD h4:after{content:\"\";display:block;width:2rem;padding-top:.188rem;border-bottom:.375rem solid var(--brand-03)}.-esm-patient-programs__empty-state__heading___gW4Bc:after{content:\"\";display:block;width:2rem;padding-top:.188rem;border-bottom:.375rem solid var(--brand-03)}.-esm-patient-programs__empty-state__tile___DvfL3{text-align:center;border:1px solid #e0e0e0}",""]),i.locals={action:"-esm-patient-programs__empty-state__action___xInzb",content:"-esm-patient-programs__empty-state__content___lACIK",desktopHeading:"-esm-patient-programs__empty-state__desktopHeading___UIGID",tabletHeading:"-esm-patient-programs__empty-state__tabletHeading___lVXqD",heading:"-esm-patient-programs__empty-state__heading___gW4Bc",tile:"-esm-patient-programs__empty-state__tile___DvfL3",skeleton:"-esm-patient-programs__empty-state__skeleton___TC36q"};const s=i},418:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(9601),a=n.n(r),o=n(2609),i=n.n(o)()(a());i.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2.625rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__error-state__skeleton___o_2Aa{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}.-esm-patient-programs__error-state__errorMessage___kDICS{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0;color:#161616;margin-top:2.25rem;margin-bottom:.5rem}.-esm-patient-programs__error-state__errorCopy___UX21v{margin-bottom:.5rem;font-size:.875rem;font-weight:400;line-height:1.43;letter-spacing:.16px;color:#525252}.-esm-patient-programs__error-state__desktopHeading___Bhvtx h4{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0;color:#525252}.-esm-patient-programs__error-state__tabletHeading___EAqy2 h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0;color:#525252}.-esm-patient-programs__error-state__desktopHeading___Bhvtx,.-esm-patient-programs__error-state__tabletHeading___EAqy2{text-align:left;text-transform:capitalize;margin-bottom:1rem}.-esm-patient-programs__error-state__desktopHeading___Bhvtx h4:after,.-esm-patient-programs__error-state__tabletHeading___EAqy2 h4:after{content:\"\";display:block;width:2rem;padding-top:.188rem;border-bottom:.375rem solid var(--brand-03)}.-esm-patient-programs__error-state__tile___LTdVO{text-align:center;border:1px solid #e0e0e0}",""]),i.locals={errorMessage:"-esm-patient-programs__error-state__errorMessage___kDICS",errorCopy:"-esm-patient-programs__error-state__errorCopy___UX21v",desktopHeading:"-esm-patient-programs__error-state__desktopHeading___Bhvtx",tabletHeading:"-esm-patient-programs__error-state__tabletHeading___EAqy2",tile:"-esm-patient-programs__error-state__tile___LTdVO",skeleton:"-esm-patient-programs__error-state__skeleton___o_2Aa"};const s=i},3988:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(9601),a=n.n(r),o=n(2609),i=n.n(o)()(a());i.push([e.id,"html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__pagination-component__skeleton___rGCby{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}:root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}.-esm-patient-programs__pagination-component__bodyShort01___Pd3yQ,.-esm-patient-programs__pagination-component__configurableLink___UgWEP{font-size:.875rem;font-weight:400;line-height:1.29;letter-spacing:.16px}.-esm-patient-programs__pagination-component__desktop___usWzK,.-esm-patient-programs__pagination-component__tablet___B5tv0{font-size:.875rem;font-weight:400;line-height:1.29;letter-spacing:.16px;display:flex;border-top:1px solid #e0e0e0;justify-content:space-between;color:#525252;background-color:#fff;padding-left:1rem;align-items:center}.-esm-patient-programs__pagination-component__desktop___usWzK .bx--pagination{min-height:0rem;height:2rem;width:auto;border:none}.-esm-patient-programs__pagination-component__desktop___usWzK .bx--pagination .bx--select-input,.-esm-patient-programs__pagination-component__desktop___usWzK .bx--pagination .bx--btn,.-esm-patient-programs__pagination-component__desktop___usWzK .bx--pagination .bx--pagination__right{min-height:0rem;height:2rem}.-esm-patient-programs__pagination-component__tablet___B5tv0 .bx--pagination{min-height:0rem;height:3rem;width:auto;border:none}.-esm-patient-programs__pagination-component__tablet___B5tv0 .bx--pagination .bx--select-input,.-esm-patient-programs__pagination-component__tablet___B5tv0 .bx--pagination .bx--btn,.-esm-patient-programs__pagination-component__tablet___B5tv0 .bx--pagination .bx--pagination__right{min-height:0rem;height:3rem}.-esm-patient-programs__pagination-component__configurableLink___UgWEP{text-decoration:none;padding:0 .5rem}.-esm-patient-programs__pagination-component__pagination___wnPFH{font-size:.875rem;font-weight:400;line-height:1.29;letter-spacing:.16px;background-color:#fff;color:#525252;display:flex}div.-esm-patient-programs__pagination-component__pagination___wnPFH>.bx--pagination__left{display:none}",""]),i.locals={bodyShort01:"-esm-patient-programs__pagination-component__bodyShort01___Pd3yQ",configurableLink:"-esm-patient-programs__pagination-component__configurableLink___UgWEP",desktop:"-esm-patient-programs__pagination-component__desktop___usWzK",tablet:"-esm-patient-programs__pagination-component__tablet___B5tv0",pagination:"-esm-patient-programs__pagination-component__pagination___wnPFH",skeleton:"-esm-patient-programs__pagination-component__skeleton___rGCby"};const s=i},9142:(e,t,n)=>{n.r(t),n.d(t,{CardHeader:()=>w,DashboardExtension:()=>U,DashboardGroupExtension:()=>O,EmptyDataIllustration:()=>P,EmptyState:()=>C,ErrorState:()=>T,PatientChartPagination:()=>$,WorkspaceWindowSizeProvider:()=>Te,cancelPrompt:()=>be,changeWorkspaceContext:()=>we,closeAllWorkspaces:()=>ve,closeWorkspace:()=>ye,convertTime12to24:()=>J,createDashboardGroup:()=>j,createDashboardLink:()=>V,createOfflineVisitForPatient:()=>et,formEntrySub:()=>re,getOfflineVisitForPatient:()=>Ye,getPromptBeforeClosingFcn:()=>he,getWorkspaceStore:()=>Se,launchPatientChartWithWorkspaceOpen:()=>de,launchPatientWorkspace:()=>fe,launchStartVisitPrompt:()=>N,patientRegistrationSyncType:()=>Ue,promptBeforeClosing:()=>_e,registerNavGroup:()=>X,registerWorkspace:()=>me,resetWorkspaceStore:()=>xe,useActivePatientEnrollment:()=>Oe,useAutoCreatedOfflineVisit:()=>$e,useNavGroups:()=>B,useOfflineVisit:()=>Qe,usePaginationInfo:()=>Q,usePatientOrOfflineRegisteredPatient:()=>Ve,useVisitOrOfflineVisit:()=>Ke,useVitalsConceptMetadata:()=>te,useWorkspaceWindowSize:()=>He,useWorkspaces:()=>Pe,visitSyncType:()=>Re,withUnit:()=>ne});var r=n(9902),a=n.n(r),o=n(3066),i=n(321),s=n.n(i),l=n(1195),c=n.n(l),p=n(3275),m=n.n(p),u=n(7162),f=n.n(u),d=n(2094),g=n.n(d),_=n(757),h=n.n(_),b=n(7904),y={};y.styleTagTransform=h(),y.setAttributes=f(),y.insert=m().bind(null,"head"),y.domAPI=c(),y.insertStyleElement=g(),s()(b.Z,y);const v=b.Z&&b.Z.locals?b.Z.locals:void 0;function w(e){var t=e.title,n=e.children,r="tablet"===(0,o.useLayoutType)();return a().createElement("div",{className:r?v.tabletHeader:v.desktopHeader},a().createElement("h4",null,t),n)}var k=n(7431),S={};S.styleTagTransform=h(),S.setAttributes=f(),S.insert=m().bind(null,"head"),S.domAPI=c(),S.insertStyleElement=g(),s()(k.Z,S);const x=k.Z&&k.Z.locals?k.Z.locals:void 0;var z=n(4187),E=n(3277),A=n(4924),P=function(e){var t=e.width,n=void 0===t?"64":t,r=e.height,o=void 0===r?"64":r;return a().createElement("svg",{width:n,height:o,viewBox:"0 0 64 64"},a().createElement("title",null,"Empty data illustration"),a().createElement("g",{fill:"none",fillRule:"evenodd"},a().createElement("path",{d:"M38.133 13.186H21.947c-.768.001-1.39.623-1.39 1.391V50.55l-.186.057-3.97 1.216a.743.743 0 01-.927-.493L3.664 12.751a.742.742 0 01.492-.926l6.118-1.874 17.738-5.43 6.119-1.873a.741.741 0 01.926.492L38.076 13l.057.186z",fill:"#F4F4F4"}),a().createElement("path",{d:"M41.664 13L38.026 1.117A1.576 1.576 0 0036.056.07l-8.601 2.633-17.737 5.43-8.603 2.634a1.578 1.578 0 00-1.046 1.97l12.436 40.616a1.58 1.58 0 001.969 1.046l5.897-1.805.185-.057v-.194l-.185.057-5.952 1.822a1.393 1.393 0 01-1.737-.923L.247 12.682a1.39 1.39 0 01.923-1.738L9.772 8.31 27.51 2.881 36.112.247a1.393 1.393 0 011.737.923L41.47 13l.057.186h.193l-.057-.185z",fill:"#8D8D8D"}),a().createElement("path",{d:"M11.378 11.855a.836.836 0 01-.798-.59L9.385 7.361a.835.835 0 01.554-1.042l16.318-4.996a.836.836 0 011.042.554l1.195 3.902a.836.836 0 01-.554 1.043l-16.318 4.995a.831.831 0 01-.244.037z",fill:"#C6C6C6"}),a().createElement("circle",{fill:"#C6C6C6",cx:17.636,cy:2.314,r:1.855}),a().createElement("circle",{fill:"#FFF",fillRule:"nonzero",cx:17.636,cy:2.314,r:1.175}),a().createElement("path",{d:"M55.893 53.995H24.544a.79.79 0 01-.788-.789V15.644a.79.79 0 01.788-.788h31.349a.79.79 0 01.788.788v37.562a.79.79 0 01-.788.789z",fill:"#F4F4F4"}),a().createElement("path",{d:"M41.47 13H21.948a1.579 1.579 0 00-1.576 1.577V52.4l.185-.057V14.577c.001-.768.623-1.39 1.391-1.39h19.581L41.471 13zm17.02 0H21.947a1.579 1.579 0 00-1.576 1.577v42.478c0 .87.706 1.576 1.576 1.577H58.49a1.579 1.579 0 001.576-1.577V14.577a1.579 1.579 0 00-1.576-1.576zm1.39 44.055c0 .768-.622 1.39-1.39 1.392H21.947c-.768-.001-1.39-.624-1.39-1.392V14.577c0-.768.622-1.39 1.39-1.39H58.49c.768 0 1.39.622 1.39 1.39v42.478z",fill:"#8D8D8D"}),a().createElement("path",{d:"M48.751 17.082H31.686a.836.836 0 01-.835-.835v-4.081c0-.46.374-.834.835-.835H48.75c.461 0 .834.374.835.835v4.08c0 .462-.374.835-.835.836z",fill:"#C6C6C6"}),a().createElement("circle",{fill:"#C6C6C6",cx:40.218,cy:9.755,r:1.855}),a().createElement("circle",{fill:"#FFF",fillRule:"nonzero",cx:40.218,cy:9.755,r:1.13})))},C=function(e){var t=(0,A.useTranslation)().t,n="tablet"===(0,o.useLayoutType)();return a().createElement(z.n9,{light:!0,className:x.tile},a().createElement("div",{className:n?x.tabletHeading:x.desktopHeading},a().createElement("h4",null,e.headerTitle)),a().createElement(P,null),a().createElement("p",{className:x.content},a().createElement(A.Trans,{i18nKey:"emptyStateText",values:{displayText:e.displayText.toLowerCase()}},"There are no ",e.displayText.toLowerCase()," to display for this patient")),a().createElement("p",{className:x.action},e.launchForm&&a().createElement("span",null," ",a().createElement(E.Z,{onClick:function(){return e.launchForm()}},a().createElement(a().Fragment,null,t("record","Record")," ",e.displayText.toLowerCase())))))},I=n(418),M={};M.styleTagTransform=h(),M.setAttributes=f(),M.insert=m().bind(null,"head"),M.domAPI=c(),M.insertStyleElement=g(),s()(I.Z,M);const H=I.Z&&I.Z.locals?I.Z.locals:void 0;var T=function(e){var t,n,r=e.error,i=e.headerTitle,s=(0,A.useTranslation)().t,l="tablet"===(0,o.useLayoutType)();return a().createElement(z.n9,{light:!0,className:H.tile},a().createElement("div",{className:l?H.tabletHeading:H.desktopHeading},a().createElement("h4",null,i)),a().createElement("p",{className:H.errorMessage},s("error","Error")," ","".concat(null==r||null===(t=r.response)||void 0===t?void 0:t.status,": "),null==r||null===(n=r.response)||void 0===n?void 0:n.statusText),a().createElement("p",{className:H.errorCopy},s("errorCopy","Sorry, there was a problem displaying this information. You can try to reload this page, or contact the site administrator and quote the error code above.")))},W=n(3884),q=n(1975),O=function(e){var t=e.title,n=e.slotName,i=e.basePath,s=e.isExpanded;return(0,r.useEffect)((function(){X(n)}),[n]),a().createElement(W.ZP,null,a().createElement(q.Z,{open:null==s||s,title:t,style:{border:"none"}},a().createElement(o.ExtensionSlot,{extensionSlotName:null!=n?n:t,state:{basePath:i}})))},j=function(e){var t=e.title,n=e.slotName,r=e.isExpanded;return function(e){var o=e.basePath;return a().createElement(O,{title:t,slotName:n,basePath:o,isExpanded:r})}};function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var D=(0,o.createGlobalStore)("nav-groups",{navGroups:[]});function X(e){var t,n=D.getState();D.setState({navGroups:[e].concat((t=n.navGroups,function(e){if(Array.isArray(e))return L(e)}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||function(e,t){if(e){if("string"==typeof e)return L(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?L(e,t):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))})}var B=(0,o.createUseStore)(D),U=function(e){var t=e.title,n=e.basePath;return a().createElement("div",{key:t},a().createElement(o.ConfigurableLink,{to:"".concat(n,"/").concat(encodeURIComponent(t)),className:"bx--side-nav__link"},t))},V=function(e){return function(t){var n=t.basePath;return a().createElement(U,{title:e.title,basePath:n})}};function N(){var e=(0,o.showModal)("start-visit-dialog",{closeModal:function(){return e()}})}var F=n(3988),Z={};Z.styleTagTransform=h(),Z.setAttributes=f(),Z.insert=m().bind(null,"head"),Z.domAPI=c(),Z.insertStyleElement=g(),s()(F.Z,Z);const G=F.Z&&F.Z.locals?F.Z.locals:void 0;var R=n(2255);function K(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Q(e,t,n,a){var o=(0,A.useTranslation)().t,i=(0,r.useMemo)((function(){var n,r=Math.ceil(t/e);return(n=Array(r).keys(),function(e){if(Array.isArray(e))return K(e)}(n)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(e,t){if(e){if("string"==typeof e)return K(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?K(e,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(t){return(t+1)*e}))}),[e,t]),s=(0,r.useMemo)((function(){return e>t?"".concat(t," / ").concat(t):e*n>t?"".concat(e*(n-1)+a," / ").concat(t):"".concat(e*n," / ").concat(t)}),[e,t,n,a]);return{pageSizes:i,itemsDisplayed:"".concat(s," ").concat(o("items"," items"))}}var $=function(e){var t=e.totalItems,n=e.pageSize,r=e.onPageNumberChange,i=e.pageNumber,s=e.dashboardLinkUrl,l=e.currentItems,c=e.dashboardLinkLabel,p=(0,A.useTranslation)().t,m=Q(n,t,i,l),u=m.itemsDisplayed,f=m.pageSizes,d="tablet"===(0,o.useLayoutType)();return a().createElement(a().Fragment,null,t>0&&a().createElement("div",{className:d?G.tablet:G.desktop},a().createElement("div",null,u,s&&a().createElement(o.ConfigurableLink,{to:s,className:G.configurableLink},null!=c?c:p("seeAll","See all"))),a().createElement(R.Z,{className:G.pagination,page:i,pageSize:n,pageSizes:f,totalItems:t,onChange:r})))};function Y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var J=function(e,t){var n,r,a=(n=e.split(":"),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,s=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{i||null==n.return||n.return()}finally{if(s)throw a}}return o}}(n,r)||function(e,t){if(e){if("string"==typeof e)return Y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Y(e,t):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],i=a[1];return"12"===o&&"AM"===t&&(o="00"),"PM"===t&&(o="12"===o?o:parseInt(o,10)+12),[o,i]},ee=n(2303);function te(){var e,t,n="/ws/rest/v1/concept/?q=VITALS SIGNS&v=".concat("custom:(setMembers:(uuid,display,hiNormal,hiAbsolute,hiCritical,lowNormal,lowAbsolute,lowCritical,units))"),r=(0,ee.Z)(n,o.openmrsFetch),a=r.data,i=r.error,s=null===(t=null==a||null===(e=a.data)||void 0===e?void 0:e.results[0])||void 0===t?void 0:t.setMembers;return{data:(null==s?void 0:s.length)?new Map(s.map((function(e){return[e.uuid,e.units]}))):new Map([]),isError:i,isLoading:!a&&!i,conceptMetadata:s}}var ne=function(e,t){return"".concat(e," ").concat(t?"(".concat(t,")"):"")},re=new(n(2444).BehaviorSubject)(null),ae=n(6081);function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ie(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function se(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){ie(e,t,n[t])}))}return e}function le(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n}(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))})),e}function ce(e){return function(e){if(Array.isArray(e))return oe(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return oe(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oe(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var pe={};function me(e){var t,n;pe[e.name]=le(se({},e),{preferredWindowSize:null!==(t=e.preferredWindowSize)&&void 0!==t?t:"normal",type:null!==(n=e.type)&&void 0!==n?n:"form"})}function ue(e){var t,n=null==e||null===(t=e.meta)||void 0===t?void 0:t.title;return"string"==typeof n?n:n&&"object"==typeof n?(0,o.translateFrom)(e.moduleName,n.key,n.default):e.name}function fe(e,t){var n=Se(),r=n.getState(),a=function(e){if(pe[e])return pe[e];var t,n,r,a,o=(0,ae.getExtensionRegistration)(e);if(o)return{name:o.name,title:ue(o),preferredWindowSize:null!==(r=null===(t=o.meta)||void 0===t?void 0:t.screenSize)&&void 0!==r?r:"normal",load:o.load,type:null!==(a=null===(n=o.meta)||void 0===n?void 0:n.type)&&void 0!==a?a:"form"};throw new Error("No workspace named '".concat(e,"' has been registered."))}(e),i=le(se({},a),{closeWorkspace:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return ye(e,t)},promptBeforeClosing:function(t){return _e(e,t)},additionalProps:t}),s=r.openWorkspaces.filter((function(e){return e.type==i.type}));if(0==s.length)n.setState(le(se({},r),{openWorkspaces:[i].concat(ce(r.openWorkspaces))}));else{var l=r.openWorkspaces.findIndex((function(t){return t.name==e})),c=he(s[0].name);if(l>=0){var p=ce(r.openWorkspaces);p.splice(l,1),r.openWorkspaces[l].additionalProps=i.additionalProps;var m=[r.openWorkspaces[l]].concat(ce(p));n.setState(le(se({},r),{openWorkspaces:m}))}else if(!c||c()){var u,f=null!==(u=s[0].title)&&void 0!==u?u:s[0].name,d={title:(0,o.translateFrom)("@openmrs/esm-patient-chart-app","activeFormWarning","There is an active form open in the workspace"),body:(0,o.translateFrom)("@openmrs/esm-patient-chart-app","workspaceModalText","Launching a new form in the workspace could cause you to lose unsaved work on the ".concat(f," form."),{formName:f}),onConfirm:function(){var e=n.getState();n.setState({openWorkspaces:[i].concat(ce(e.openWorkspaces.filter((function(e){return e.type!=i.type})))),prompt:null})},confirmText:(0,o.translateFrom)("@openmrs/esm-patient-chart-app","openAnyway","Open anyway")};n.setState(le(se({},r),{prompt:d}))}else{var g=n.getState();n.setState(le(se({},g),{openWorkspaces:[i].concat(ce(g.openWorkspaces.filter((function(e){return e.type!=i.type}))))}))}}}function de(e){var t=e.patientUuid,n=e.workspaceName,r=e.dashboardName,a=e.additionalProps;we(t),fe(n,a),(0,o.navigate)({to:"${openmrsSpaBase}/patient/"+"".concat(t,"/chart")+(r?"/".concat(r):"")})}var ge={};function _e(e,t){ge[e]=t}function he(e){return ge[e]}function be(){var e=Se(),t=e.getState();e.setState(le(se({},t),{prompt:null}))}function ye(e,t){var n=Se(),r=he(e);if(!t&&r&&r()){var a={title:(0,o.translateFrom)("@openmrs/esm-patient-chart-app","unsavedChangesTitleText","Unsaved Changes"),body:(0,o.translateFrom)("@openmrs/esm-patient-chart-app","unsavedChangeText","You have unsaved changes in the side panel. Do you want to discard these changes?"),onConfirm:function(){var t=n.getState();n.setState(le(se({},t),{prompt:null,openWorkspaces:t.openWorkspaces.filter((function(t){return t.name!=e}))}))},confirmText:(0,o.translateFrom)("@openmrs/esm-patient-chart-app","discard","Discard")};n.setState(le(se({},n.getState()),{prompt:a}))}else{var i=n.getState();n.setState(le(se({},i),{openWorkspaces:i.openWorkspaces.filter((function(t){return t.name!=e}))}))}}function ve(){var e=Se(),t=e.getState();e.setState(le(se({},t),{openWorkspaces:[]}))}function we(e){var t=Se();t.getState().patientUuid!=e&&t.setState({patientUuid:e,openWorkspaces:[],prompt:null})}var ke={patientUuid:null,openWorkspaces:[],prompt:null};function Se(){return(0,o.getGlobalStore)("workspace",ke)}function xe(){Se().setState(ke)}var ze=n(3771);function Ee(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ae(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,s=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{i||null==n.return||n.return()}finally{if(s)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Ee(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ee(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Pe(){var e=Ae((0,r.useState)([]),2),t=e[0],n=e[1],a=Ae((0,r.useState)(null),2),o=a[0],i=a[1];(0,r.useEffect)((function(){var e=function(e){n(e.openWorkspaces),i(e.prompt)};e((0,ze.getWorkspaceStore)().getState()),(0,ze.getWorkspaceStore)().subscribe(e)}),[]);var s=(0,r.useMemo)((function(){return 0===t.length?"hidden":t[0].preferredWindowSize}),[t]);return{active:t.length>0,windowState:s,workspaces:t,prompt:o}}function Ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ie(e,t){switch(t){case"minimized":case"reopened":return{size:"normal"};default:return{size:t}}}var Me=(0,r.createContext)({windowSize:{size:"normal"},active:!1}),He=function(){return(0,r.useContext)(Me)},Te=function(e){var t,n,o=e.children,i=(t=a().useReducer(Ie,{size:"normal"}),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,s=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{i||null==n.return||n.return()}finally{if(s)throw a}}return o}}(t,n)||function(e,t){if(e){if("string"==typeof e)return Ce(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ce(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=i[0],l=i[1],c=Pe(),p=c.workspaces,m=c.windowState,u=c.active;(0,r.useEffect)((function(){p.length>0&&"maximized"===m?l("maximized"):l("reopened")}),[p.length,m]);var f=(0,r.useCallback)((function(e){l(e)}),[]),d=(0,r.useMemo)((function(){return{windowSize:s,updateWindowSize:f,active:u}}),[s,f,u]);return a().createElement(Me.Provider,{value:d},o)},We=n(9857),qe=n(4200),Oe=function(e){var t,n=(0,We.ZP)("/ws/rest/v1/programenrollment?patient=".concat(e,"&v=").concat("custom:(uuid,display,program,dateEnrolled,dateCompleted,location:(uuid,display))"),o.openmrsFetch),a=n.data,i=n.error,s=(0,r.useMemo)((function(){return null!==(t=null==a?void 0:a.data.results.sort((function(e,t){return t.dateEnrolled>e.dateEnrolled?1:-1})).filter((function(e){return null===e.dateCompleted})))&&void 0!==t?t:[]}),[null==a?void 0:a.data.results]);return{activePatientEnrollment:(0,qe.Z)(s,(function(e){var t;return null==e||null===(t=e.program)||void 0===t?void 0:t.uuid})),error:i,isLoading:!a&&!i}},je=n(5047),Le=n.n(je),De=n(9571);function Xe(e,t,n,r,a,o,i){try{var s=e[o](i),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,a)}function Be(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){Xe(o,r,a,i,s,"next",e)}function s(e){Xe(o,r,a,i,s,"throw",e)}i(void 0)}))}}var Ue="patient-registration";function Ve(e){var t,n=(0,o.usePatient)(e),r=(0,We.ZP)("offlineRegisteredPatient/".concat(e),Be(Le().mark((function t(){var n;return Le().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Ne(e);case 2:if(n=t.sent){t.next=5;break}throw new Error("No offline registered patient could be found. UUID: ".concat(e));case 5:return t.abrupt("return",n);case 6:case"end":return t.stop()}}),t)}))));return n.isLoading||!r.data&&!r.error?{isLoading:!0,patient:null,patientUuid:e,error:null}:n.patient&&!n.patient.issue?{isLoading:!1,patient:n.patient,patientUuid:e,error:null}:r.data?{isLoading:!1,patient:r.data,patientUuid:e,error:null}:{isLoading:!1,patient:null,patientUuid:e,error:null!==(t=n.error)&&void 0!==t?t:r.error}}function Ne(e){return Fe.apply(this,arguments)}function Fe(){return(Fe=Be(Le().mark((function e(t){var n,r;return Le().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,o.getSynchronizationItems)(Ue);case 2:return n=e.sent,r=n.find((function(e){return e.fhirPatient.id===t})),e.abrupt("return",r.fhirPatient);case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Ze(e,t,n,r,a,o,i){try{var s=e[o](i),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(r,a)}function Ge(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){Ze(o,r,a,i,s,"next",e)}function s(e){Ze(o,r,a,i,s,"throw",e)}i(void 0)}))}}var Re="visit";function Ke(e){var t=(0,o.useConnectivity)(),n=Qe(e),r=(0,o.useVisit)(e);return t?r:n}function Qe(e){var t=e?"offlineVisit/".concat(e):null,n=(0,We.ZP)(t,Ge(Le().mark((function t(){var n;return Le().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Ye(e);case 2:return n=t.sent,t.abrupt("return",n?nt(n):void 0);case 4:case"end":return t.stop()}}),t)}))));return{currentVisit:n.data,isValidating:n.isValidating,error:n.error,mutate:n.mutate}}function $e(e,t){var n,a,i=(0,o.useConnectivity)(),s=null===(n=(0,o.useSession)())||void 0===n||null===(a=n.sessionLocation)||void 0===a?void 0:a.uuid,l=Qe(e),c=l.currentVisit,p=l.isValidating,m=l.error,u=l.mutate;(0,r.useEffect)((function(){i||p||c||m||et(e,s,t).finally((function(){return u()}))}),[i,c,p,m,u,s,t,e])}function Ye(e){return Je.apply(this,arguments)}function Je(){return(Je=Ge(Le().mark((function e(t){var n;return Le().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,o.getSynchronizationItems)(Re);case 2:return n=e.sent,e.abrupt("return",n.find((function(e){return e.patient===t})));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function et(e,t,n){return tt.apply(this,arguments)}function tt(){return(tt=Ge(Le().mark((function e(t,n,r){var a,i,s,l;return Le().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,o.getSynchronizationItems)(Ue);case 2:return a=e.sent,i=a.some((function(e){return e.fhirPatient.id===t})),s={uuid:(0,De.Z)(),patient:t,startDatetime:new Date,location:n,visitType:r},l={id:s.uuid,displayName:"Offline visit",patientUuid:t,dependencies:i?[{type:Ue,id:t}]:[]},e.next=8,(0,o.queueSynchronizationItem)(Re,s,l);case 8:return e.abrupt("return",s);case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function nt(e){var t,n;return{uuid:e.uuid,startDatetime:null===(t=e.startDatetime)||void 0===t?void 0:t.toString(),stopDatetime:null===(n=e.stopDatetime)||void 0===n?void 0:n.toString(),encounters:[],visitType:{uuid:e.visitType,display:"Offline"},patient:{uuid:e.patient}}}}}]);
package/dist/145.js DELETED
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_openmrs_esm_patient_programs_app=self.webpackChunk_openmrs_esm_patient_programs_app||[]).push([[145],{1951:(e,t,r)=>{r.d(t,{Z:()=>l});var n=r(9601),a=r.n(n),o=r(2609),i=r.n(o)()(a());i.push([e.id,":root{--brand-01: #005d5d;--brand-02: #004144;--brand-03: #007d79}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote::before,blockquote::after,q::before,q::after{content:\"\"}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:'IBM Plex Sans', 'Helvetica Neue', Arial, sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:'IBM Plex Mono', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Courier, monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:2.625rem;font-weight:300;line-height:1.199;letter-spacing:0}h2{font-size:2rem;font-weight:400;line-height:1.25;letter-spacing:0}h3{font-size:1.75rem;font-weight:400;line-height:1.29;letter-spacing:0}h4{font-size:1.25rem;font-weight:400;line-height:1.4;letter-spacing:0}h5{font-size:1rem;font-weight:600;line-height:1.375;letter-spacing:0}h6{font-size:.875rem;font-weight:600;line-height:1.29;letter-spacing:.16px}p{font-size:1rem;font-weight:400;line-height:1.5;letter-spacing:0}a{color:#0f62fe}em{font-style:italic}@keyframes -esm-patient-programs__programs-form__skeleton____oCAx{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}100%{opacity:.3;transform:scaleX(0);transform-origin:left}}.-esm-patient-programs__programs-form__selectContainer___SCnNW{display:flex;align-items:center}.-esm-patient-programs__programs-form__loading___KGmNP{margin-left:1rem;width:2rem;min-height:2.5rem}.-esm-patient-programs__programs-form__button___KPSt9{height:4rem;display:flex;align-content:flex-start;align-items:baseline;min-width:50%}.-esm-patient-programs__programs-form__tablet___yw5Wr{padding:1.5rem 1rem;background-color:#fff}.-esm-patient-programs__programs-form__desktop___RnK8C{padding:0rem}.-esm-patient-programs__programs-form__formContainer___lqbdm{margin:1rem}.-esm-patient-programs__programs-form__form___BLqPA{display:flex;flex-direction:column;justify-content:space-between;height:calc(100vh - 6rem)}",""]),i.locals={selectContainer:"-esm-patient-programs__programs-form__selectContainer___SCnNW",loading:"-esm-patient-programs__programs-form__loading___KGmNP",button:"-esm-patient-programs__programs-form__button___KPSt9",tablet:"-esm-patient-programs__programs-form__tablet___yw5Wr",desktop:"-esm-patient-programs__programs-form__desktop___RnK8C",formContainer:"-esm-patient-programs__programs-form__formContainer___lqbdm",form:"-esm-patient-programs__programs-form__form___BLqPA",skeleton:"-esm-patient-programs__programs-form__skeleton____oCAx"};const l=i},8145:(e,t,r)=>{r.r(t),r.d(t,{default:()=>j});var n=r(9902),a=r.n(n),o=r(3565),i=r.n(o),l=r(3863),s=r(8827),m=r(819),d=r(9857),u=r(4924),c=r(3066),p=r(7898),g=r(786),f=r(2810),_=r(5067),h=r(6642),b=r(182),v=r(6549),y=r(7030),w=r(4076),E=r(321),k=r.n(E),C=r(1195),x=r.n(C),S=r(3275),Z=r.n(S),T=r(7162),P=r.n(T),q=r(2094),A=r.n(q),D=r(757),I=r.n(D),N=r(1951),z={};z.styleTagTransform=I(),z.setAttributes=P(),z.insert=Z().bind(null,"head"),z.domAPI=x(),z.insertStyleElement=A(),k()(N.Z,z);const L=N.Z&&N.Z.locals?N.Z.locals:void 0;function X(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function B(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return X(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(r):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?X(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}const j=function(e){var t,r,n=e.closeWorkspace,o=e.patientUuid,E=(0,u.useTranslation)().t,k="tablet"===(0,c.useLayoutType)(),C=(0,c.useSession)(),x=(0,c.useLocations)(),S=(0,d.kY)().mutate,Z=(0,w.oI)().data,T=(0,w.Bw)(o).data,P=(0,l.Z)(Z,(function(e){return!(0,s.Z)((0,m.Z)(T,"program.uuid"),e.uuid)})),q=B(a().useState(null),2),A=q[0],D=q[1],I=B(a().useState(new Date),2),N=I[0],z=I[1],X=B(a().useState(""),2),j=X[0],M=X[1],O=B(a().useState(""),2),K=O[0],W=O[1];!K&&(null==C||null===(t=C.sessionLocation)||void 0===t?void 0:t.uuid)&&W(null==C||null===(r=C.sessionLocation)||void 0===r?void 0:r.uuid);var F=a().useCallback((function(e){if(e.preventDefault(),j){var t={patient:o,program:j,dateEnrolled:N?i()(N).format():null,dateCompleted:A?i()(A).format():null,location:K},r=new AbortController,a=(0,w.df)(t,r).subscribe((function(e){201===e.status&&(n(),(0,c.showToast)({critical:!0,kind:"success",description:E("enrollmentNowVisible","It is now visible on the Programs page"),title:E("enrollmentSaved","Program enrollment saved")}),S("/ws/rest/v1/programenrollment?patient=".concat(o,"&v=").concat(w.o9)))}),(function(e){(0,c.createErrorHandler)(),(0,c.showNotification)({title:E("programEnrollmentSaveError","Error saving program enrollment"),kind:"error",critical:!0,description:null==e?void 0:e.message})}));return function(){a.unsubscribe()}}}),[n,A,N,S,o,j,E,K]);return a().createElement(p.Z,{className:L.form,onSubmit:F},a().createElement("div",{className:L.formContainer},a().createElement(g.Z,{style:{width:"50%"},legendText:E("program","Program")},a().createElement("div",{className:L.selectContainer},a().createElement(f.Z,{id:"program",invalidText:E("required","Required"),labelText:"",light:k,onChange:function(e){return M(e.target.value)}},j?null:a().createElement(_.Z,{text:E("chooseProgram","Choose a program"),value:""}),(null==P?void 0:P.length)>0&&P.map((function(e){return a().createElement(_.Z,{key:e.uuid,text:e.display,value:e.uuid},e.display)}))))),a().createElement(g.Z,{legendText:E("dateEnrolled","Date enrolled")},a().createElement(h.Z,{id:"enrollmentDate",datePickerType:"single",dateFormat:"d/m/Y",light:k,maxDate:(new Date).toISOString(),placeholder:"dd/mm/yyyy",onChange:function(e){var t=B(e,1)[0];return z(t)},value:N},a().createElement(b.Z,{id:"enrollmentDateInput",labelText:""}))),a().createElement(g.Z,{legendText:E("dateCompleted","Date completed")},a().createElement(h.Z,{id:"completionDate",datePickerType:"single",dateFormat:"d/m/Y",light:k,minDate:new Date(N).toISOString(),maxDate:(new Date).toISOString(),placeholder:"dd/mm/yyyy",onChange:function(e){var t=B(e,1)[0];return D(t)},value:A},a().createElement(b.Z,{id:"completionDateInput",labelText:""}))),a().createElement(g.Z,{style:{width:"50%"},legendText:E("enrollmentLocation","Enrollment location")},a().createElement(f.Z,{id:"location",invalidText:"Required",labelText:"",light:k,onChange:function(e){return W(e.target.value)},value:K},K?null:a().createElement(_.Z,{text:E("chooseLocation","Choose a location"),value:""}),(null==x?void 0:x.length)>0&&x.map((function(e){return a().createElement(_.Z,{key:e.uuid,text:e.display,value:e.uuid},e.display)}))))),a().createElement(v.Z,{className:k?L.tablet:L.desktop},a().createElement(y.Z,{className:L.button,kind:"secondary",onClick:function(){return n()}},E("cancel","Cancel")),a().createElement(y.Z,{className:L.button,kind:"primary",disabled:!j,type:"submit"},E("saveAndClose","Save and close"))))}},4076:(e,t,r)=>{r.d(t,{Bw:()=>l,df:()=>m,o9:()=>i,oI:()=>s});var n=r(9857),a=r(3066),o=r(4200),i="custom:(uuid,display,program,dateEnrolled,dateCompleted,location:(uuid,display))";function l(e){var t,r=(0,n.ZP)("/ws/rest/v1/programenrollment?patient=".concat(e,"&v=").concat(i),a.openmrsFetch),l=r.data,s=r.error,m=r.isValidating,d=(null==l||null===(t=l.data)||void 0===t?void 0:t.results.length)>0?null==l?void 0:l.data.results.sort((function(e,t){return t.dateEnrolled>e.dateEnrolled?1:-1})):null;return{data:l?(0,o.Z)(d,(function(e){var t;return null==e||null===(t=e.program)||void 0===t?void 0:t.uuid})):null,isError:s,isLoading:!l&&!s,isValidating:m}}function s(){var e,t,r=(0,n.ZP)("/ws/rest/v1/program?v=custom:(uuid,display,allWorkflows,concept:(uuid,display))",a.openmrsFetch),o=r.data,i=r.error;return{data:(null==o||null===(e=o.data)||void 0===e||null===(t=e.results)||void 0===t?void 0:t.length)?o.data.results:null,isError:i,isLoading:!o&&!i}}function m(e,t){if(!e)return null;var r=e.program,n=e.patient,o=e.dateEnrolled,i=e.dateCompleted,l=e.location;return(0,a.openmrsObservableFetch)("/ws/rest/v1/programenrollment",{method:"POST",headers:{"Content-Type":"application/json"},body:{program:r,patient:n,dateEnrolled:o,dateCompleted:i,location:l},signal:t.signal})}}}]);