/
index.ts
270 lines (231 loc) · 9.73 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
import {
registerBreadcrumbs,
defineConfigSchema,
getAsyncLifecycle,
getSyncLifecycle,
defineExtensionConfigSchema,
registerFeatureFlag,
} from '@openmrs/esm-framework';
import { createDashboardLink } from '@openmrs/esm-patient-common-lib';
import * as PatientCommonLib from '@openmrs/esm-patient-common-lib';
import { esmPatientChartSchema } from './config-schema';
import { moduleName, spaBasePath } from './constants';
import { summaryDashboardMeta, encountersDashboardMeta } from './dashboard.meta';
import { setupOfflineVisitsSync, setupCacheableRoutes } from './offline';
import { genericDashboardConfigSchema } from './side-nav/generic-dashboard.component';
import { genericNavGroupConfigSchema } from './side-nav/generic-nav-group.component';
import patientChartPageComponent from './root.component';
import markPatientAliveActionButtonComponent from './actions-buttons/mark-patient-alive.component';
import markPatientDeceasedActionButtonComponent from './actions-buttons/mark-patient-deceased.component';
import startVisitActionButtonComponent from './actions-buttons/start-visit.component';
import startVisitActionButtonOnPatientSearch from './visit/start-visit-button.component';
import stopVisitActionButtonComponent from './actions-buttons/stop-visit.component';
import cancelVisitActionButtonComponent from './actions-buttons/cancel-visit.component';
import addPastVisitActionButtonComponent from './actions-buttons/add-past-visit.component';
import currentVisitSummaryComponent from './visit/visits-widget/current-visit-summary.component';
import pastVisitsDetailOverviewComponent from './visit/past-visit-overview.component';
import pastVisitsOverviewComponent from './visit/visits-widget/visit-detail-overview.component';
import patientDetailsTileComponent from './patient-details-tile/patient-details-tile.component';
import visitAttributeTagsComponent from './patient-banner-tags/visit-attribute-tags.component';
import genericNavGroupComponent from './side-nav/generic-nav-group.component';
import genericDashboardComponent from './side-nav/generic-dashboard.component';
import startVisitFormComponent from './visit/visit-form/visit-form.component';
// This allows @openmrs/esm-patient-common-lib to be accessed by modules that are not
// using webpack. This is used for ngx-formentry.
window['_openmrs_esm_patient_common_lib'] = PatientCommonLib;
export const importTranslation = require.context('../translations', false, /.json$/, 'lazy');
export function startupApp() {
setupOfflineVisitsSync();
setupCacheableRoutes();
defineConfigSchema(moduleName, esmPatientChartSchema);
defineExtensionConfigSchema('nav-group', genericNavGroupConfigSchema);
defineExtensionConfigSchema('dashboard', genericDashboardConfigSchema);
/**
* This comment tells i18n to still keep the following translation keys (DO NOT DELETE THESE):
*
* t('patientBreadcrumb', 'Patient')
* t('Patient Summary dashboard', 'Patient Summary dashboard')
* t('Allergies dashboard', 'Allergies dashboard')
* t('Appointments dashboard', 'Appointments dashboard')
* t('Vitals & Biometrics dashboard', 'Vitals & Biometrics dashboard')
* t('Medications dashboard', 'Medications dashboard')
* t('Visits dashboard', 'Visits dashboard')
* t('Conditions dashboard', 'Conditions dashboard')
* t('Attachments dashboard', 'Attachments dashboard')
* t('Programs dashboard', 'Programs dashboard')
* t('Offline Actions dashboard', 'Offline Actions dashboard')
* t('Forms & Notes dashboard', 'Forms & Notes dashboard')
* t('Results Viewer dashboard', 'Results Viewer dashboard')
*/
registerBreadcrumbs([
{
path: spaBasePath,
title: () => Promise.resolve(window.i18next.t('patientBreadcrumb', { defaultValue: 'Patient', ns: moduleName })),
parent: `${window.spaBase}/home`,
},
{
path: `${spaBasePath}/:view`,
title: ([_, key]) =>
Promise.resolve(
window.i18next.t(`${decodeURIComponent(key)} dashboard`, {
ns: moduleName,
defaultValue: `${decodeURIComponent(key)} dashboard`,
}),
),
parent: spaBasePath,
},
]);
registerFeatureFlag(
'rde',
'Retrospective Data Entry',
"Features to enter data for past visits. Includes the 'Edit Past Visit' button in the start visit dialog, and the 'Add Past Visit' button in the patient header.",
);
}
export const root = getSyncLifecycle(patientChartPageComponent, { featureName: 'patient-chart', moduleName });
export const patientSummaryDashboardLink =
// t('Patient Summary', 'Patient Summary')
getSyncLifecycle(
createDashboardLink({
...summaryDashboardMeta,
moduleName,
}),
{
featureName: 'summary-dashboard',
moduleName,
},
);
export const markPatientAliveActionButton = getSyncLifecycle(markPatientAliveActionButtonComponent, {
featureName: 'patient-actions-slot',
moduleName,
});
export const markPatientDeceasedActionButton = getSyncLifecycle(markPatientDeceasedActionButtonComponent, {
featureName: 'patient-actions-slot-deceased-button',
moduleName,
});
export const startVisitActionButton = getSyncLifecycle(startVisitActionButtonComponent, {
featureName: 'patient-actions-slot',
moduleName,
});
export const stopVisitActionButton = getSyncLifecycle(stopVisitActionButtonComponent, {
featureName: 'patient-actions-slot',
moduleName,
});
export const cancelVisitActionButton = getSyncLifecycle(cancelVisitActionButtonComponent, {
featureName: 'patient-actions-slot',
moduleName,
});
export const addPastVisitActionButton = getSyncLifecycle(addPastVisitActionButtonComponent, {
featureName: 'patient-actions-slot-add-past-visit-button',
moduleName,
});
export const startVisitPatientSearchActionButton = getSyncLifecycle(startVisitActionButtonOnPatientSearch, {
featureName: 'start-visit-button-patient-search',
moduleName,
});
export const stopVisitPatientSearchActionButton = getSyncLifecycle(stopVisitActionButtonComponent, {
featureName: 'patient-actions-slot',
moduleName,
});
export const cancelVisitPatientSearchActionButton = getSyncLifecycle(cancelVisitActionButtonComponent, {
featureName: 'patient-actions-slot-cancel-visit-button',
moduleName,
});
export const addPastVisitPatientSearchActionButton = getSyncLifecycle(addPastVisitActionButtonComponent, {
featureName: 'patient-search-actions-slot-add-past-visit-button',
moduleName,
});
export const encountersSummaryDashboardLink =
// t('Visits', 'Visits')
getSyncLifecycle(
createDashboardLink({
...encountersDashboardMeta,
moduleName,
}),
{ featureName: 'encounter', moduleName },
);
export const currentVisitSummary = getSyncLifecycle(currentVisitSummaryComponent, {
featureName: 'current-visit-summary',
moduleName,
});
export const pastVisitsOverview = getSyncLifecycle(pastVisitsDetailOverviewComponent, {
featureName: 'past-visits-overview',
moduleName,
});
export const pastVisitsDetailOverview = getSyncLifecycle(pastVisitsOverviewComponent, {
featureName: 'visits-detail-slot',
moduleName,
});
export const patientDetailsTile = getSyncLifecycle(patientDetailsTileComponent, {
featureName: 'patient-details-tile',
moduleName,
});
export const visitAttributeTags = getSyncLifecycle(visitAttributeTagsComponent, {
featureName: 'visit-attribute-tags',
moduleName,
});
export const genericNavGroup = getSyncLifecycle(genericNavGroupComponent, {
featureName: 'Nav group',
moduleName,
});
export const genericDashboard = getSyncLifecycle(genericDashboardComponent, {
featureName: 'Dashboard',
moduleName,
});
export const startVisitForm = getSyncLifecycle(startVisitFormComponent, {
featureName: 'start-visit-form',
moduleName,
});
export const markPatientDeceasedForm = getAsyncLifecycle(() => import('./deceased/deceased-form.component'), {
featureName: 'mark-patient-deceased-form',
moduleName,
});
export const cancelVisitDialog = getAsyncLifecycle(() => import('./visit/visit-prompt/cancel-visit-dialog.component'), {
featureName: 'cancel visit',
moduleName,
});
export const startVisitDialog = getAsyncLifecycle(() => import('./visit/visit-prompt/start-visit-dialog.component'), {
featureName: 'start visit',
moduleName,
});
export const deleteVisitDialog = getAsyncLifecycle(() => import('./visit/visit-prompt/delete-visit-dialog.component'), {
featureName: 'delete visit',
moduleName,
});
export const modifyVisitDateDialog = getAsyncLifecycle(
() => import('./visit/visit-prompt/modify-visit-date-dialog.component'),
{
featureName: 'delete visit',
moduleName,
},
);
export const endVisitDialog = getAsyncLifecycle(() => import('./visit/visit-prompt/end-visit-dialog.component'), {
featureName: 'end visit',
moduleName,
});
export const confirmDeceasedDialog = getAsyncLifecycle(() => import('./deceased/confirmation-dialog.component'), {
featureName: 'confirm death',
moduleName,
});
export const confirmAliveDialog = getAsyncLifecycle(() => import('./deceased/mark-alive-modal.component'), {
featureName: 'confirm alive',
moduleName,
});
export const deleteEncounterModal = getAsyncLifecycle(
() => import('./visit/visits-widget/past-visits-components/delete-encounter-modal.component'),
{
featureName: 'delete-encounter-modal',
moduleName,
},
);
export const editVisitDetailsActionButton = getAsyncLifecycle(
() => import('./visit/visit-action-items/edit-visit-details.component'),
{ featureName: 'edit-visit-details', moduleName },
);
export const deleteVisitActionButton = getAsyncLifecycle(
() => import('./visit/visit-action-items/delete-visit-action-item.component'),
{ featureName: 'delete-visit', moduleName },
);
export const activeVisitActionsComponent = getAsyncLifecycle(
() => import('./visit/visits-widget/active-visit-buttons/active-visit-buttons'),
{ featureName: 'active-visit-actions', moduleName },
);