@kenyaemr/esm-express-workflow-app 5.4.4-pre.299 → 5.4.4-pre.3
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 +3 -3
- package/dist/126.js +1 -0
- package/dist/126.js.map +1 -0
- package/dist/2024.js +1 -1
- package/dist/2024.js.map +1 -1
- package/dist/2225.js +1 -1
- package/dist/2225.js.map +1 -1
- package/dist/2386.js +1 -0
- package/dist/2386.js.map +1 -0
- package/dist/2438.js +1 -1
- package/dist/2438.js.map +1 -1
- package/dist/4504.js +1 -0
- package/dist/4504.js.map +1 -0
- package/dist/4670.js +1 -0
- package/dist/4670.js.map +1 -0
- package/dist/4682.js +1 -1
- package/dist/4682.js.map +1 -1
- package/dist/5047.js +1 -0
- package/dist/5047.js.map +1 -0
- package/dist/586.js.map +1 -1
- package/dist/5986.js +1 -1
- package/dist/5986.js.map +1 -1
- package/dist/6075.js +1 -0
- package/dist/6075.js.map +1 -0
- package/dist/6328.js +1 -1
- package/dist/6328.js.map +1 -1
- package/dist/64.js +1 -0
- package/dist/64.js.map +1 -0
- package/dist/6456.js +1 -1
- package/dist/6720.js +1 -0
- package/dist/6720.js.map +1 -0
- package/dist/7607.js +1 -1
- package/dist/8566.js +1 -0
- package/dist/8566.js.map +1 -0
- package/dist/8727.js +1 -1
- package/dist/8799.js +1 -0
- package/dist/8799.js.map +1 -0
- package/dist/8911.js +1 -1
- package/dist/8911.js.map +1 -1
- package/dist/9157.js +1 -1
- package/dist/9157.js.map +1 -1
- package/dist/9161.js +1 -0
- package/dist/9161.js.map +1 -0
- package/dist/9182.js +1 -1
- package/dist/9343.js +1 -0
- package/dist/9343.js.map +1 -0
- package/dist/9535.js +1 -1
- package/dist/9535.js.map +1 -1
- package/dist/9834.js +1 -0
- package/dist/{4432.js.map → 9834.js.map} +1 -1
- package/dist/kenyaemr-esm-express-workflow-app.js +2 -2
- package/dist/kenyaemr-esm-express-workflow-app.js.buildmanifest.json +294 -151
- package/dist/kenyaemr-esm-express-workflow-app.js.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/routes.json +1 -1
- package/package.json +1 -1
- package/src/components/admissions/index.tsx +0 -1
- package/src/components/anaesthetic/anaesthetic.component.tsx +10 -4
- package/src/components/anaesthetic/forms/interoperative-record-drug-given-form.component.tsx +2 -26
- package/src/components/anaesthetic/graphs/interoperative-record-drug-given-graph-wrapper.component.tsx +66 -25
- package/src/components/anaesthetic/resources/anaesthetic.resource.ts +2 -2
- package/src/components/consultation/clinical-encounter/clinical-encounter.component.tsx +4 -20
- package/src/components/consultation/index.ts +1 -1
- package/src/components/consultation/tabs/index.ts +67 -0
- package/src/components/facility-dashboard/components/header/home-header.component.tsx +8 -13
- package/src/components/laboratory/index.ts +11 -0
- package/src/components/laboratory/lab-table.component.tsx +25 -12
- package/src/components/laboratory/laboratory-tabs.component.tsx +3 -17
- package/src/components/pharmacy/index.ts +1 -1
- package/src/components/pharmacy/pharmacy-tabs.component.tsx +4 -20
- package/src/components/pharmacy/tabs/index.ts +21 -0
- package/src/components/procedures/index.ts +16 -0
- package/src/components/procedures/procedures-table.component.tsx +33 -15
- package/src/components/procedures/procedures-tabs.component.tsx +3 -22
- package/src/components/radiology-and-imaging/index.ts +11 -0
- package/src/components/radiology-and-imaging/radiology-and-imaging-table.component.tsx +35 -15
- package/src/components/radiology-and-imaging/radiology-and-imaging.component.tsx +3 -19
- package/src/components/registration/card/Local-card/local-card.component.tsx +3 -3
- package/src/components/registration/dependants/dependants.component.tsx +6 -1
- package/src/components/registration/end-visit-modal/end-visit-dialog.modal.tsx +320 -0
- package/src/components/registration/end-visit-modal/end-visit-dialog.scss +12 -0
- package/src/components/registration/end-visit-modal/end-visit.resource.tsx +59 -0
- package/src/components/registration/end-visit-modal/sha-end-visit.resource.ts +285 -0
- package/src/components/registration/start-visit-form/overflow-menu-extension/custom-end-active-visit.extension.tsx +44 -0
- package/src/components/registration/start-visit-form/start-visit-workspace/exported-visit-form.workspace.tsx +16 -11
- package/src/components/registration/type/index.ts +101 -0
- package/src/config-schema.ts +23 -1
- package/src/index.ts +36 -17
- package/src/routes.json +205 -12
- package/src/shared/otp-verification/index.ts +3 -0
- package/src/shared/otp-verification/otp-verification.modal.tsx +51 -17
- package/src/shared/patient-chart/patient-summary-dashboard/patient-summary-dashboard.component.tsx +5 -73
- package/src/shared/tabs/create-tab-extension.tsx +33 -0
- package/src/shared/tabs/extension-tabs.component.tsx +51 -33
- package/src/shared/utils/index.ts +6 -6
- package/translations/am.json +32 -24
- package/translations/en.json +23 -16
- package/translations/fr.json +23 -16
- package/translations/sw.json +23 -21
- package/Failed to delete encounter/am.json +0 -4
- package/Failed to delete encounter/en.json +0 -4
- package/Failed to delete encounter/fr.json +0 -4
- package/Failed to delete encounter/sw.json +0 -4
- package/dist/2332.js +0 -1
- package/dist/2332.js.map +0 -1
- package/dist/4432.js +0 -1
- package/dist/4666.js +0 -1
- package/dist/4666.js.map +0 -1
- package/dist/5733.js +0 -1
- package/dist/5733.js.map +0 -1
- package/dist/644.js +0 -1
- package/dist/644.js.map +0 -1
- package/dist/655.js +0 -1
- package/dist/655.js.map +0 -1
- package/dist/70.js +0 -1
- package/dist/70.js.map +0 -1
- package/dist/9387.js +0 -1
- package/dist/9387.js.map +0 -1
- package/src/components/admissions/admission-medication-summary.tsx +0 -302
- package/src/components/admissions/admissions-dashboard.utils.test.ts +0 -48
- package/src/components/admissions/admissions-dashboard.utils.tsx +0 -63
- package/src/shared/orders/OrdersTabs.tsx +0 -76
- /package/src/shared/{patient-chart/patient-summary-dashboard → tabs}/patient-summary-dashboard.scss +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
|
+
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { showModal, useVisit } from '@openmrs/esm-framework';
|
|
4
|
+
import { OverflowMenuItem } from '@carbon/react';
|
|
5
|
+
import styles from './overflow-menu-item.scss';
|
|
6
|
+
|
|
7
|
+
interface StopVisitOverflowMenuItemProps {
|
|
8
|
+
patientUuid: string;
|
|
9
|
+
closeMenu?: () => void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let isEndVisitDialogOpen = false;
|
|
13
|
+
|
|
14
|
+
const StopVisitOverflowMenuItem: React.FC<StopVisitOverflowMenuItemProps> = ({ patientUuid, closeMenu }) => {
|
|
15
|
+
const { t } = useTranslation();
|
|
16
|
+
const { activeVisit } = useVisit(patientUuid);
|
|
17
|
+
|
|
18
|
+
const handleLaunchModal = useCallback(() => {
|
|
19
|
+
if (isEndVisitDialogOpen) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
isEndVisitDialogOpen = true;
|
|
23
|
+
const dispose = showModal('custom-end-visit-dialog', {
|
|
24
|
+
closeModal: () => {
|
|
25
|
+
isEndVisitDialogOpen = false;
|
|
26
|
+
dispose();
|
|
27
|
+
},
|
|
28
|
+
patientUuid,
|
|
29
|
+
});
|
|
30
|
+
}, [patientUuid]);
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
activeVisit && (
|
|
34
|
+
<OverflowMenuItem
|
|
35
|
+
className={styles.menuitem}
|
|
36
|
+
itemText={`${t('endCustomActiveVisit', 'End Active Visit')}`}
|
|
37
|
+
onClick={handleLaunchModal}
|
|
38
|
+
closeMenu={closeMenu}
|
|
39
|
+
/>
|
|
40
|
+
)
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export default StopVisitOverflowMenuItem;
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
useConfig,
|
|
29
29
|
useConnectivity,
|
|
30
30
|
useEmrConfiguration,
|
|
31
|
+
useFeatureFlag,
|
|
31
32
|
useLayoutType,
|
|
32
33
|
useVisit,
|
|
33
34
|
Workspace2,
|
|
@@ -121,6 +122,7 @@ const ExportedVisitForm: React.FC<Workspace2DefinitionProps<ExportedVisitFormPro
|
|
|
121
122
|
const allVisitTypes = useConditionalVisitTypes();
|
|
122
123
|
const { earliestAllowedStartDate, isLoading: isLoadingBirthdateCheck } =
|
|
123
124
|
useEarliestAllowedVisitStartDate(patientUuid);
|
|
125
|
+
const hieFeatureFlags = useFeatureFlag('healthInformationExchange');
|
|
124
126
|
|
|
125
127
|
const [errorFetchingResources, setErrorFetchingResources] = useState<{
|
|
126
128
|
blockSavingForm: boolean;
|
|
@@ -314,18 +316,20 @@ const ExportedVisitForm: React.FC<Workspace2DefinitionProps<ExportedVisitFormPro
|
|
|
314
316
|
const abortController = new AbortController();
|
|
315
317
|
|
|
316
318
|
if (isOnline) {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
319
|
+
if (hieFeatureFlags) {
|
|
320
|
+
setIsAwaitingOtp(true);
|
|
321
|
+
try {
|
|
322
|
+
for (const [, callbacks] of visitFormCallbacks) {
|
|
323
|
+
if (typeof callbacks.onBeforeVisitSave === 'function') {
|
|
324
|
+
const canProceed = await callbacks.onBeforeVisitSave();
|
|
325
|
+
if (!canProceed) {
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
324
328
|
}
|
|
325
329
|
}
|
|
330
|
+
} finally {
|
|
331
|
+
setIsAwaitingOtp(false);
|
|
326
332
|
}
|
|
327
|
-
} finally {
|
|
328
|
-
setIsAwaitingOtp(false);
|
|
329
333
|
}
|
|
330
334
|
|
|
331
335
|
const visitRequest = visitToEdit?.uuid
|
|
@@ -450,6 +454,7 @@ const ExportedVisitForm: React.FC<Workspace2DefinitionProps<ExportedVisitFormPro
|
|
|
450
454
|
getErrorDescription,
|
|
451
455
|
globalMutate,
|
|
452
456
|
handleVisitAttributes,
|
|
457
|
+
hieFeatureFlags,
|
|
453
458
|
isOnline,
|
|
454
459
|
onVisitStarted,
|
|
455
460
|
patientUuid,
|
|
@@ -686,7 +691,7 @@ const ExportedVisitForm: React.FC<Workspace2DefinitionProps<ExportedVisitFormPro
|
|
|
686
691
|
description={
|
|
687
692
|
visitToEdit
|
|
688
693
|
? t('updatingVisit', 'Updating visit') + '...'
|
|
689
|
-
: isAwaitingOtp
|
|
694
|
+
: hieFeatureFlags && isAwaitingOtp
|
|
690
695
|
? t('sendingOtp', 'Sending OTP') + '...'
|
|
691
696
|
: t('startingVisit', 'Starting visit') + '...'
|
|
692
697
|
}
|
|
@@ -697,7 +702,7 @@ const ExportedVisitForm: React.FC<Workspace2DefinitionProps<ExportedVisitFormPro
|
|
|
697
702
|
? t('updateVisit', 'Update visit')
|
|
698
703
|
: isElectiveNotApproved
|
|
699
704
|
? t('awaitingApproval', 'Awaiting approval')
|
|
700
|
-
: isSHAVisit
|
|
705
|
+
: hieFeatureFlags && isSHAVisit
|
|
701
706
|
? t('verifyAndStartVisit', 'Verify & Start Visit')
|
|
702
707
|
: t('startVisit', 'Start visit')}
|
|
703
708
|
</span>
|
|
@@ -362,3 +362,104 @@ export interface QueueRoom {
|
|
|
362
362
|
export interface OTPSource {
|
|
363
363
|
otpSource?: string;
|
|
364
364
|
}
|
|
365
|
+
|
|
366
|
+
export const DISCHARGE_REASONS = [
|
|
367
|
+
{ id: 'RECOVERED', label: 'Recovered' },
|
|
368
|
+
{ id: 'REFERRED', label: 'Referred' },
|
|
369
|
+
{ id: 'ABSCONDED', label: 'Absconded' },
|
|
370
|
+
{ id: 'OTHER', label: 'Other' },
|
|
371
|
+
];
|
|
372
|
+
|
|
373
|
+
export type AuthorizingDeviceOS = 'windows' | 'android';
|
|
374
|
+
|
|
375
|
+
export type OTPResponse = {
|
|
376
|
+
success: boolean;
|
|
377
|
+
otp?: string;
|
|
378
|
+
otp_found?: boolean;
|
|
379
|
+
raw_response?: { message: string };
|
|
380
|
+
error?: string;
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
export type BiometricAuthorizeRequest = {
|
|
384
|
+
agent_id: string;
|
|
385
|
+
patient_id: string;
|
|
386
|
+
interventions: string[];
|
|
387
|
+
service_type: string;
|
|
388
|
+
workstation_id: string;
|
|
389
|
+
authorizing_device_os: string;
|
|
390
|
+
is_emergency?: boolean;
|
|
391
|
+
payment_mechanism?: string;
|
|
392
|
+
patient_uuid?: string;
|
|
393
|
+
is_biometrics_discharge_authorization?: boolean;
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
export type BiometricAuthorizeResponse = {
|
|
397
|
+
success: boolean;
|
|
398
|
+
embed_url?: string;
|
|
399
|
+
authorization_code?: string;
|
|
400
|
+
consent_token?: string;
|
|
401
|
+
token?: string;
|
|
402
|
+
guid?: string;
|
|
403
|
+
error?: string;
|
|
404
|
+
upstream_error?: { error?: string; message?: string };
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
export type BiometricAuthorizationStatus = {
|
|
408
|
+
success: boolean;
|
|
409
|
+
token: string;
|
|
410
|
+
status: 'PENDING' | 'APPROVED' | 'REJECTED';
|
|
411
|
+
is_complete: boolean;
|
|
412
|
+
is_approved: boolean;
|
|
413
|
+
authorization_code: string | null;
|
|
414
|
+
guid: string | null;
|
|
415
|
+
};
|
|
416
|
+
|
|
417
|
+
export type BiometricConfigResponse = {
|
|
418
|
+
agent_url: string;
|
|
419
|
+
agent_timeout_ms: number;
|
|
420
|
+
default_factors: string[];
|
|
421
|
+
};
|
|
422
|
+
|
|
423
|
+
export type ProviderAttributesResponse = {
|
|
424
|
+
attributes: Array<{
|
|
425
|
+
attributeType: { display: string; uuid: string };
|
|
426
|
+
value: string;
|
|
427
|
+
}>;
|
|
428
|
+
};
|
|
429
|
+
|
|
430
|
+
export type WhitelistReason = {
|
|
431
|
+
code: string;
|
|
432
|
+
label: string;
|
|
433
|
+
description: string;
|
|
434
|
+
review_type: 'AUTOMATIC' | 'MANUAL';
|
|
435
|
+
requires_attachments: boolean;
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
export type WhitelistSubmitResponse = {
|
|
439
|
+
success: boolean;
|
|
440
|
+
review_type?: 'AUTOMATIC' | 'MANUAL';
|
|
441
|
+
error?: string;
|
|
442
|
+
};
|
|
443
|
+
|
|
444
|
+
export type WhitelistStatusPoll = {
|
|
445
|
+
beneficiary_cr_id: string;
|
|
446
|
+
is_whitelisted: boolean;
|
|
447
|
+
has_pending: boolean;
|
|
448
|
+
is_rejected: boolean;
|
|
449
|
+
can_submit_new: boolean;
|
|
450
|
+
latest_status: string | null;
|
|
451
|
+
total: number;
|
|
452
|
+
requests: Array<{
|
|
453
|
+
request_id: string | null;
|
|
454
|
+
status: string | null;
|
|
455
|
+
reason_type: string | null;
|
|
456
|
+
reason: string | null;
|
|
457
|
+
biometric_attempts: string | null;
|
|
458
|
+
beneficiary_name: string | null;
|
|
459
|
+
facility_name: string | null;
|
|
460
|
+
reviewed_by: string | null;
|
|
461
|
+
reviewer_note: string | null;
|
|
462
|
+
created_on: string | null;
|
|
463
|
+
reviewed_on: string | null;
|
|
464
|
+
}>;
|
|
465
|
+
};
|
package/src/config-schema.ts
CHANGED
|
@@ -154,8 +154,11 @@ export const configSchema = {
|
|
|
154
154
|
'Configurable list of maintenance-of-anaesthesia agents shown in the interoperative drug form (e.g. Halothane, Isoflurane). Override per deployment.',
|
|
155
155
|
_default: [
|
|
156
156
|
{ value: '77343AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', label: 'Halothane' },
|
|
157
|
-
{ value: '83872AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', label: '
|
|
157
|
+
{ value: '83872AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', label: 'Sevoflurane' },
|
|
158
158
|
{ value: '78258AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', label: 'Isoflurane' },
|
|
159
|
+
{ value: '82726AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', label: 'Propofol' },
|
|
160
|
+
{ value: '78467AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', label: 'Ketamine' },
|
|
161
|
+
{ value: '74640AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', label: 'Dexmedetomidine' },
|
|
159
162
|
],
|
|
160
163
|
},
|
|
161
164
|
proceduresOrderTypeUuid: {
|
|
@@ -274,6 +277,22 @@ export const configSchema = {
|
|
|
274
277
|
_description: 'Whether the workflow is DHA Workflow',
|
|
275
278
|
_default: true,
|
|
276
279
|
},
|
|
280
|
+
crIdentificationNumberUUID: {
|
|
281
|
+
_type: Type.String,
|
|
282
|
+
_description:
|
|
283
|
+
'The patient identifier type UUID for the SHA Client Registry (CR) number, used for virtual claims and OTP/biometric authentication.',
|
|
284
|
+
_default: '24aedd37-b5be-4e08-8311-3721b8d5100d',
|
|
285
|
+
},
|
|
286
|
+
providerNationalIdUuid: {
|
|
287
|
+
_type: Type.String,
|
|
288
|
+
_description: 'The provider attribute type UUID for the national ID, used in SHA biometric authorization requests.',
|
|
289
|
+
_default: '3d152c97-2293-4a2b-802e-e0f1009b7b15',
|
|
290
|
+
},
|
|
291
|
+
nationalIdUUID: {
|
|
292
|
+
_type: Type.String,
|
|
293
|
+
_description: 'The patient identifier type UUID for the national ID, used for SHA eligibility checks.',
|
|
294
|
+
_default: '49af6cdc-7968-4abb-bf46-de10d7f4859f',
|
|
295
|
+
},
|
|
277
296
|
|
|
278
297
|
anaesthetic: {
|
|
279
298
|
_type: Type.Object,
|
|
@@ -478,6 +497,7 @@ export type ExpressWorkflowConfig = {
|
|
|
478
497
|
inPatientVisitTypeUuid: string;
|
|
479
498
|
defaultFacilityUrl: string; //done
|
|
480
499
|
offlineVisitTypeUuid: string;
|
|
500
|
+
nationalIdUUID: string;
|
|
481
501
|
showRecommendedVisitTypeTab: boolean;
|
|
482
502
|
visitTypeResourceUrl: string;
|
|
483
503
|
disableChangingVisitLocation: boolean;
|
|
@@ -491,6 +511,8 @@ export type ExpressWorkflowConfig = {
|
|
|
491
511
|
showUpcomingAppointments: boolean; //done
|
|
492
512
|
excludedVisitTypeUuids: Array<string>;
|
|
493
513
|
isDHAWorkflow: boolean;
|
|
514
|
+
crIdentificationNumberUUID: string;
|
|
515
|
+
providerNationalIdUuid: string;
|
|
494
516
|
};
|
|
495
517
|
export interface ConfigObject {
|
|
496
518
|
requireMaritalStatusOnAgeGreaterThanOrEqualTo: number;
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
|
-
import { defineConfigSchema, getAsyncLifecycle,
|
|
1
|
+
import { defineConfigSchema, getAsyncLifecycle, registerFeatureFlag } from '@openmrs/esm-framework';
|
|
2
2
|
import { configSchema } from './config-schema';
|
|
3
|
+
export * from './components/accounting';
|
|
4
|
+
export * from './components/admissions';
|
|
5
|
+
export * from './components/appointments';
|
|
6
|
+
export * from './components/consultation';
|
|
7
|
+
export * from './components/facility-dashboard';
|
|
8
|
+
export * from './components/laboratory';
|
|
9
|
+
export * from './components/mch';
|
|
10
|
+
export * from './components/pharmacy';
|
|
11
|
+
export * from './components/preauth';
|
|
12
|
+
export * from './components/procedures';
|
|
3
13
|
export * from './components/procedures/procedure-queues';
|
|
4
|
-
|
|
14
|
+
export * from './components/radiology-and-imaging';
|
|
15
|
+
export * from './components/registration';
|
|
16
|
+
export * from './components/reports';
|
|
17
|
+
export * from './components/triage';
|
|
5
18
|
const moduleName = '@kenyaemr/esm-express-workflow-app';
|
|
6
19
|
|
|
7
20
|
const options = {
|
|
@@ -19,20 +32,6 @@ export function startupApp() {
|
|
|
19
32
|
'Enable/Disable procedure queue in procedure pannel and procedure form',
|
|
20
33
|
);
|
|
21
34
|
}
|
|
22
|
-
export * from './components/facility-dashboard';
|
|
23
|
-
export * from './components/registration';
|
|
24
|
-
export * from './components/triage';
|
|
25
|
-
export * from './components/accounting';
|
|
26
|
-
export * from './components/consultation';
|
|
27
|
-
export * from './components/mch';
|
|
28
|
-
export * from './components/reports';
|
|
29
|
-
export * from './components/pharmacy';
|
|
30
|
-
export * from './components/laboratory';
|
|
31
|
-
export * from './components/radiology-and-imaging';
|
|
32
|
-
export * from './components/procedures';
|
|
33
|
-
export * from './components/admissions';
|
|
34
|
-
export * from './components/preauth';
|
|
35
|
-
export * from './components/appointments';
|
|
36
35
|
|
|
37
36
|
export const root = getAsyncLifecycle(() => import('./root.component'), options);
|
|
38
37
|
export const otpVerificationModal = getAsyncLifecycle(
|
|
@@ -51,7 +50,14 @@ export const patientSummaryDashboard = getAsyncLifecycle(
|
|
|
51
50
|
export const customStartVisitOverflowMenuItem = getAsyncLifecycle(
|
|
52
51
|
() => import('./components/registration/start-visit-form/overflow-menu-extension/overflow-menu-item.extension'),
|
|
53
52
|
{
|
|
54
|
-
featureName: 'patient-actions-slot-
|
|
53
|
+
featureName: 'patient-actions-slot-start-visit-button',
|
|
54
|
+
moduleName,
|
|
55
|
+
},
|
|
56
|
+
);
|
|
57
|
+
export const customStopVisitOverflowMenuItem = getAsyncLifecycle(
|
|
58
|
+
() => import('./components/registration/start-visit-form/overflow-menu-extension/custom-end-active-visit.extension'),
|
|
59
|
+
{
|
|
60
|
+
featureName: 'patient-actions-slot-stop-visit-button',
|
|
55
61
|
moduleName,
|
|
56
62
|
},
|
|
57
63
|
);
|
|
@@ -61,6 +67,14 @@ export const visitFormWorkspace = getAsyncLifecycle(
|
|
|
61
67
|
options,
|
|
62
68
|
);
|
|
63
69
|
|
|
70
|
+
export const customEndVisitModal = getAsyncLifecycle(
|
|
71
|
+
() => import('./components/registration/end-visit-modal/end-visit-dialog.modal'),
|
|
72
|
+
{
|
|
73
|
+
featureName: 'custom-patient-actions-end-visit-modal',
|
|
74
|
+
moduleName,
|
|
75
|
+
},
|
|
76
|
+
);
|
|
77
|
+
|
|
64
78
|
export const anaestheticFormWorkspace = getAsyncLifecycle(
|
|
65
79
|
() => import('./components/anaesthetic/forms/anaesthetic-form.component'),
|
|
66
80
|
options,
|
|
@@ -86,3 +100,8 @@ export const homepageDashboardLink = getAsyncLifecycle(
|
|
|
86
100
|
),
|
|
87
101
|
options,
|
|
88
102
|
);
|
|
103
|
+
|
|
104
|
+
export const procedureAndOrdersTab = getAsyncLifecycle(
|
|
105
|
+
() => import('./shared/tabs/create-tab-extension').then((mod) => ({ default: mod.createTabExtension() })),
|
|
106
|
+
options,
|
|
107
|
+
);
|
package/src/routes.json
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"slot": "appointments-dashboard-slot",
|
|
25
25
|
"title": "Appointments"
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
},
|
|
28
28
|
{
|
|
29
29
|
"name": "ewf-preauth-dashboard-link",
|
|
30
30
|
"component": "preauthDashboardLink",
|
|
@@ -38,10 +38,8 @@
|
|
|
38
38
|
"layoutMode": "anchored",
|
|
39
39
|
"hideDashboardTitle": true
|
|
40
40
|
}
|
|
41
|
-
|
|
42
41
|
},
|
|
43
42
|
{
|
|
44
|
-
|
|
45
43
|
"name": "ewf-preauth-dashboard",
|
|
46
44
|
"component": "preauthDashboard",
|
|
47
45
|
"slot": "ewf-patient-chart-preauth-dashboard-slot",
|
|
@@ -332,13 +330,19 @@
|
|
|
332
330
|
"online": true,
|
|
333
331
|
"offline": true
|
|
334
332
|
},
|
|
333
|
+
{
|
|
334
|
+
"name": "custom-stop-visit-overflow-menu-item",
|
|
335
|
+
"component": "customStopVisitOverflowMenuItem",
|
|
336
|
+
"online": true,
|
|
337
|
+
"offline": true
|
|
338
|
+
},
|
|
335
339
|
{
|
|
336
340
|
"name": "procedure-queues",
|
|
337
341
|
"component": "procedureQueues",
|
|
338
342
|
"online": true,
|
|
339
343
|
"offline": false,
|
|
340
344
|
"featureFlag": "procedureQueues",
|
|
341
|
-
"slot":"procedure-orders-dashboard-slot"
|
|
345
|
+
"slot": "procedure-orders-dashboard-slot"
|
|
342
346
|
},
|
|
343
347
|
{
|
|
344
348
|
"name": "procedure-form-extras",
|
|
@@ -349,13 +353,198 @@
|
|
|
349
353
|
"featureFlag": "procedureQueues"
|
|
350
354
|
},
|
|
351
355
|
{
|
|
352
|
-
"name": "
|
|
353
|
-
"component": "
|
|
354
|
-
"slot": "
|
|
355
|
-
"
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
356
|
+
"name": "ewf-patient-summary-tab",
|
|
357
|
+
"component": "patientSummary",
|
|
358
|
+
"slot": "ewf-patient-chart-patient-summary-tabs-extension-slot",
|
|
359
|
+
"meta": {
|
|
360
|
+
"title": "patientSummaryTab",
|
|
361
|
+
"slot": "ewf-patient-summary-slot"
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"name": "ewf-patient-vitals-tab",
|
|
366
|
+
"component": "patientVitals",
|
|
367
|
+
"slot": "ewf-patient-chart-patient-summary-tabs-extension-slot",
|
|
368
|
+
"meta": {
|
|
369
|
+
"title": "vitalsAndAnthropometric",
|
|
370
|
+
"slot": "ewf-vitals-slot"
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"name": "ewf-patient-care-panel-tab",
|
|
375
|
+
"component": "carePanel",
|
|
376
|
+
"slot": "ewf-patient-chart-patient-summary-tabs-extension-slot",
|
|
377
|
+
"meta": {
|
|
378
|
+
"title": "carePanel",
|
|
379
|
+
"slot": "ewf-care-panel-slot"
|
|
380
|
+
}
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"name": "ewf-patient-immunization-tab",
|
|
384
|
+
"component": "immunization",
|
|
385
|
+
"slot": "ewf-patient-chart-patient-summary-tabs-extension-slot",
|
|
386
|
+
"meta": {
|
|
387
|
+
"title": "immunizations",
|
|
388
|
+
"slot": "ewf-immunizations-slot"
|
|
389
|
+
}
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"name": "ewf-patient-relationships-tab",
|
|
393
|
+
"component": "relationships",
|
|
394
|
+
"slot": "ewf-patient-chart-patient-summary-tabs-extension-slot",
|
|
395
|
+
"meta": {
|
|
396
|
+
"title": "relationships",
|
|
397
|
+
"slot": "ewf-relationships-slot"
|
|
398
|
+
}
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"name": "ewf-patient-appointments-tab",
|
|
402
|
+
"component": "appointments",
|
|
403
|
+
"slot": "ewf-patient-chart-patient-summary-tabs-extension-slot",
|
|
404
|
+
"meta": {
|
|
405
|
+
"title": "appointments",
|
|
406
|
+
"slot": "ewf-appointments-slot"
|
|
407
|
+
}
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"name": "ewf-patient-attachments-tab",
|
|
411
|
+
"component": "attachments",
|
|
412
|
+
"slot": "ewf-patient-chart-patient-summary-tabs-extension-slot",
|
|
413
|
+
"meta": {
|
|
414
|
+
"title": "attachments",
|
|
415
|
+
"slot": "ewf-attachments-slot"
|
|
416
|
+
}
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"name": "ewf-patient-clinical-encounter-tab",
|
|
420
|
+
"component": "patientClinicalEncounter",
|
|
421
|
+
"slot": "clinical-encounter-tabs-slot",
|
|
422
|
+
"meta": {
|
|
423
|
+
"title": "clinicalEncounterTab",
|
|
424
|
+
"slot": "ewf-clinical-encounter-slot"
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
"name": "ewf-patient-visits-tab",
|
|
429
|
+
"component": "patientVisits",
|
|
430
|
+
"slot": "clinical-encounter-tabs-slot",
|
|
431
|
+
"meta": {
|
|
432
|
+
"title": "visits",
|
|
433
|
+
"slot": "ewf-visits-slot"
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"name": "ewf-patient-special-clinics-tab",
|
|
438
|
+
"component": "specialClinics",
|
|
439
|
+
"slot": "clinical-encounter-tabs-slot",
|
|
440
|
+
"meta": {
|
|
441
|
+
"title": "specialClinics",
|
|
442
|
+
"slot": "ewf-special-clinics-slot"
|
|
443
|
+
}
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"name": "ewf-clinical-notes-tab",
|
|
447
|
+
"component": "clinicalNotes",
|
|
448
|
+
"meta": {
|
|
449
|
+
"title": "clinicalNotes",
|
|
450
|
+
"slot": "ewf-clinical-notes-slot"
|
|
451
|
+
}
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"name": "ewf-procedures-and-orders-tab",
|
|
455
|
+
"component": "proceduresAndOrders",
|
|
456
|
+
"meta": {
|
|
457
|
+
"title": "proceduresAndOrders",
|
|
458
|
+
"slot": "ewf-procedures-and-orders-slot"
|
|
459
|
+
}
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"name": "ewf-pharmacy-orders-tab",
|
|
463
|
+
"component": "pharmacyOrdersTab",
|
|
464
|
+
"slot": "pharmacy-tabs-slot",
|
|
465
|
+
"meta": {
|
|
466
|
+
"title": "orders",
|
|
467
|
+
"slot": "ewf-orders-slot"
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"name": "ewf-pharmacy-active-medication-tab",
|
|
472
|
+
"component": "pharmacyActiveMedicationsTab",
|
|
473
|
+
"slot": "pharmacy-tabs-slot",
|
|
474
|
+
"meta": {
|
|
475
|
+
"title": "activeMedications",
|
|
476
|
+
"slot": "ewf-active-medications-slot"
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"name": "ewf-pharmacy-past-medication-tab",
|
|
481
|
+
"component": "pharmacyPastMedicationsTab",
|
|
482
|
+
"slot": "pharmacy-tabs-slot",
|
|
483
|
+
"meta": {
|
|
484
|
+
"title": "pastMedications",
|
|
485
|
+
"slot": "ewf-past-medications-slot"
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"name": "ewf-patient-lab-orders-tab",
|
|
490
|
+
"component": "patientLaboratoryOrdersTab",
|
|
491
|
+
"slot": "patient-laboratory-tabs-slot",
|
|
492
|
+
"meta": {
|
|
493
|
+
"title": "orders"
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
"name": "ewf-patient-lab-order-results-tab",
|
|
498
|
+
"component": "patientLaboratoryOrdersResults",
|
|
499
|
+
"slot": "patient-laboratory-tabs-slot",
|
|
500
|
+
"meta": {
|
|
501
|
+
"title": "results",
|
|
502
|
+
"slot": "ewf-laboratory-results-slot",
|
|
503
|
+
"basePath": "laboratory"
|
|
504
|
+
}
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
"name": "ewf-patient-procedure-orders-tab",
|
|
508
|
+
"component": "patientProcedureOrdersTab",
|
|
509
|
+
"slot": "patient-procedure-tabs-slot",
|
|
510
|
+
"meta": {
|
|
511
|
+
"title": "orders"
|
|
512
|
+
}
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
"name": "ewf-patient-procedure-order-results-tab",
|
|
516
|
+
"component": "patientProcedureOrdersResults",
|
|
517
|
+
"slot": "patient-procedure-tabs-slot",
|
|
518
|
+
"meta": {
|
|
519
|
+
"title": "results",
|
|
520
|
+
"slot": "ewf-procedures-results-slot",
|
|
521
|
+
"basePath": "procedures"
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"name": "ewf-patient-procedure-anaesthetic-tab",
|
|
526
|
+
"component": "patientProcedureAnaestheticTab",
|
|
527
|
+
"slot": "patient-procedure-tabs-slot",
|
|
528
|
+
"meta": {
|
|
529
|
+
"title": "anaesthetic"
|
|
530
|
+
}
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
"name": "ewf-patient-imaging-orders-tab",
|
|
534
|
+
"component": "patientImagingOrdersTab",
|
|
535
|
+
"slot": "patient-imaging-tabs-slot",
|
|
536
|
+
"meta": {
|
|
537
|
+
"title": "orders"
|
|
538
|
+
}
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
"name": "ewf-patient-imaging-order-results-tab",
|
|
542
|
+
"component": "patientImagingOrdersResults",
|
|
543
|
+
"slot": "patient-imaging-tabs-slot",
|
|
544
|
+
"meta": {
|
|
545
|
+
"title": "results",
|
|
546
|
+
"slot": "ewf-radiology-and-imaging-results-slot",
|
|
547
|
+
"basePath": "radiology-and-imaging"
|
|
359
548
|
}
|
|
360
549
|
}
|
|
361
550
|
],
|
|
@@ -379,7 +568,7 @@
|
|
|
379
568
|
"workspaceWindows2": [
|
|
380
569
|
{
|
|
381
570
|
"name": "ewf-start-visit",
|
|
382
|
-
"group": "
|
|
571
|
+
"group": "patient-chart",
|
|
383
572
|
"width": "wider"
|
|
384
573
|
},
|
|
385
574
|
{
|
|
@@ -402,6 +591,10 @@
|
|
|
402
591
|
{
|
|
403
592
|
"component": "facilityDashboardAuthorizationModal",
|
|
404
593
|
"name": "facility-dashboard-authorization-form-modal"
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
"name": "custom-end-visit-dialog",
|
|
597
|
+
"component": "customEndVisitModal"
|
|
405
598
|
}
|
|
406
599
|
]
|
|
407
600
|
}
|
|
@@ -134,6 +134,9 @@ export type OTPVerificationModalOptions = {
|
|
|
134
134
|
|
|
135
135
|
/** Expected origin of eKYC postMessage events. Defaults to https://test.ekyc.pesaflow.com. */
|
|
136
136
|
ekycOrigin?: string;
|
|
137
|
+
|
|
138
|
+
/** Whether this modal is being used to start or end a visit. Defaults to 'start'. Affects progress message text. */
|
|
139
|
+
visitAction?: 'start' | 'end';
|
|
137
140
|
};
|
|
138
141
|
|
|
139
142
|
/**
|