From 990cfc259469d2e409269f092a40821116236bd5 Mon Sep 17 00:00:00 2001 From: hadijahkyampeire Date: Wed, 29 May 2024 11:40:29 +0300 Subject: [PATCH] Migrate hiv program management to JSON config workflow --- packages/esm-commons-lib/src/index.ts | 1 + .../src/utils/encounter-list-builder.ts | 88 +++++ .../src/utils/encounter-list-utils.ts | 129 ++++++- .../program-management-summary.component.tsx | 50 +-- .../program-tabs-config.json | 364 ++++++++++++++++++ .../tabs/art-therapy-tab.component.tsx | 204 ---------- .../tabs/death-tab.component.tsx | 82 ---- .../tabs/hiv-enrolment-tab.component.tsx | 110 ------ .../tabs/service-delivery-tab.component.tsx | 85 ---- .../tabs/transfer-out-tab.component.tsx | 104 ----- yarn.lock | 208 +++++----- 11 files changed, 705 insertions(+), 720 deletions(-) create mode 100644 packages/esm-commons-lib/src/utils/encounter-list-builder.ts create mode 100644 packages/esm-hiv-app/src/views/program-management/program-tabs-config.json delete mode 100644 packages/esm-hiv-app/src/views/program-management/tabs/art-therapy-tab.component.tsx delete mode 100644 packages/esm-hiv-app/src/views/program-management/tabs/death-tab.component.tsx delete mode 100644 packages/esm-hiv-app/src/views/program-management/tabs/hiv-enrolment-tab.component.tsx delete mode 100644 packages/esm-hiv-app/src/views/program-management/tabs/service-delivery-tab.component.tsx delete mode 100644 packages/esm-hiv-app/src/views/program-management/tabs/transfer-out-tab.component.tsx diff --git a/packages/esm-commons-lib/src/index.ts b/packages/esm-commons-lib/src/index.ts index 2bbd2e033..701b946c9 100644 --- a/packages/esm-commons-lib/src/index.ts +++ b/packages/esm-commons-lib/src/index.ts @@ -40,6 +40,7 @@ export * from './utils/ohri-sidebar'; export * from './utils/pagination'; export * from './utils/sidenav-links'; export * from './utils/encounter-list-utils'; +export * from './utils/encounter-list-builder'; export * from './workspace/ohri-workspace-utils'; export * from './workspace/patient-list-workspace'; export * from './dashboards/createDashboard'; diff --git a/packages/esm-commons-lib/src/utils/encounter-list-builder.ts b/packages/esm-commons-lib/src/utils/encounter-list-builder.ts new file mode 100644 index 000000000..6eedd5606 --- /dev/null +++ b/packages/esm-commons-lib/src/utils/encounter-list-builder.ts @@ -0,0 +1,88 @@ +import { getObsFromEncounter, findObs } from './encounter-list-utils'; + +interface MenuProps { + menuId: string; + tabDefinitions: Array; +} +interface ActionProps { + mode: string; + label: string; + package: string; + formName: string; +} +interface ColumnDefinition { + id: string; + title: string; + isComplex?: boolean; + concept?: string; + fallbackConcepts?: Array; + actionOptions?: Array; + isDate?: boolean; + isTrueFalseConcept?: boolean; + type?: string; +} + +interface LaunchOptions { + displayText: string; + moduleName: string; +} +interface TabSchema { + tabName: string; + headerTitle: string; + displayText: string; + encounterType: string; + columns: Array; + formList: Array<{ name: string; uuid: string }>; + launchOptions: LaunchOptions; +} + +interface FormattedColumn { + key: string; + header: string; + getValue: (encounter: any) => string; + link?: any; +} +export const getTabColumns = (columnsDefinition: Array) => { + const columns: Array = columnsDefinition.map((column: ColumnDefinition) => ({ + key: column.id, + header: column.title, + getValue: (encounter) => { + if (column.id === 'actions') { + return column.actionOptions.map((action: ActionProps) => ({ + form: { name: action.formName, package: action.package }, + encounterUuid: encounter.uuid, + intent: '*', + label: action.label, + mode: action.mode, + })); + } else { + return getObsFromEncounter( + encounter, + column.concept, + column.isDate, + column.isTrueFalseConcept, + column.type, + column.fallbackConcepts, + ); + } + }, + })); + + return columns; +}; + +export const getMenuItemTabConfiguration = (schemaConfig: MenuProps) => { + const tabs = schemaConfig.tabDefinitions.map((tab) => { + return { + name: tab.tabName, + encounterType: tab.encounterType, + headerTitle: tab.headerTitle, + description: tab.displayText, + formList: tab.formList, + columns: getTabColumns(tab.columns), + launchOptions: tab.launchOptions, + }; + }); + + return tabs; +}; diff --git a/packages/esm-commons-lib/src/utils/encounter-list-utils.ts b/packages/esm-commons-lib/src/utils/encounter-list-utils.ts index f3c7d9efd..a72893306 100644 --- a/packages/esm-commons-lib/src/utils/encounter-list-utils.ts +++ b/packages/esm-commons-lib/src/utils/encounter-list-utils.ts @@ -28,6 +28,82 @@ export function getObsFromEncounters(encounters, obsConcept) { return getObsFromEncounter(filteredEnc, obsConcept); } +const artDateConcepts = { + artTherapyDateTime_UUID: '159599AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', + artStopDateUUID: '162572AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', + switchDateUUID: '164516AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', + substitutionDateUUID: '164431AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', + dateRestartedUUID: '160738AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', +}; + +export const getARTDateConcept = (encounter): string => { + let artStartDate = findObs(encounter, artDateConcepts.artTherapyDateTime_UUID); + let artSwitchDate = findObs(encounter, artDateConcepts.switchDateUUID); + let artSubstitutionDate = findObs(encounter, artDateConcepts.substitutionDateUUID); + let artStopDate = findObs(encounter, artDateConcepts.artStopDateUUID); + let artRestartDate = findObs(encounter, artDateConcepts.dateRestartedUUID); + + artStartDate = artStartDate ? artStartDate.value : null; + artSubstitutionDate = artSubstitutionDate ? artSubstitutionDate.value : null; + artSwitchDate = artSwitchDate ? artSwitchDate.value : null; + artStopDate = artStopDate ? artStopDate.value : null; + artRestartDate = artRestartDate ? artRestartDate.value : null; + + let latestDateConcept: string = artDateConcepts.artTherapyDateTime_UUID; + let latestDate = artStartDate; + if (artSubstitutionDate != null) { + latestDateConcept = artDateConcepts.substitutionDateUUID; + latestDate = artSubstitutionDate; + } + if (artSwitchDate != null) { + latestDate = artSwitchDate; + latestDateConcept = artDateConcepts.switchDateUUID; + } + if (artStopDate != null) { + latestDate = artStopDate; + latestDateConcept = artDateConcepts.artStopDateUUID; + } + if (artRestartDate != null) { + latestDate = artRestartDate; + latestDateConcept = artDateConcepts.dateRestartedUUID; + } + + return latestDateConcept; +}; + +const artReasonConcepts = { + switchReasonUUID: '160568AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', + substituteReasonUUID: '160562AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', + stopReasonUUID: '163513AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', + freeTextCommentConcept: '161011AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', +}; + +const getARTReasonConcept = (encounter, startDate, switchDate, substitutionDate, stopDate, restartDate): string => { + const latestDateConcept: string = getARTDateConcept(encounter); + + let artReasonConcept; + switch (latestDateConcept) { + case startDate: + artReasonConcept = ''; + break; + case substitutionDate: + artReasonConcept = artReasonConcepts.substituteReasonUUID; + break; + case switchDate: + artReasonConcept = artReasonConcepts.switchReasonUUID; + break; + case restartDate: + artReasonConcept = artReasonConcepts.freeTextCommentConcept; + break; + case stopDate: + artReasonConcept = artReasonConcepts.stopReasonUUID; + default: + artReasonConcept = artReasonConcepts.stopReasonUUID; + } + + return artReasonConcept; +}; + export function getMultipleObsFromEncounter(encounter, obsConcepts: Array) { let observations = []; obsConcepts.map((concept) => { @@ -40,8 +116,51 @@ export function getMultipleObsFromEncounter(encounter, obsConcepts: Array, +) { + let obs = findObs(encounter, obsConcept); + + // if (type === 'artDate') { + // const artDateConcept = getARTDateConcept(encounter); + // obs = findObs(encounter, artDateConcept); + // } + + // if (type === 'artReason') { + // const reasonConcept = getARTReasonConcept( + // encounter, + // artDateConcepts.artTherapyDateTime_UUID, + // artDateConcepts.switchDateUUID, + // artDateConcepts.substitutionDateUUID, + // artDateConcepts.artStopDateUUID, + // artDateConcepts.dateRestartedUUID, + // ); + // const artReasonConcept = reasonConcept; + // obs = findObs(encounter, artReasonConcept); + // } + + // if (type === 'artTherapy') { + // const therapyObs = findObs(encounter, obsConcept); + // return therapyObs ? artConcepts[therapyObs.value.uuid] : '--'; + // } + + // if (type === 'transferVerified') { + // const obs = findObs(encounter, obsConcept); + // return obs?.value?.name?.name === 'FALSE' ? 'No' : obs?.value?.name?.name; + // } if (isTrueFalseConcept) { if (obs.value.uuid == 'cf82933b-3f3f-45e7-a5ab-5d31aaee3da3') { @@ -50,9 +169,15 @@ export function getObsFromEncounter(encounter, obsConcept, isDate?: Boolean, isT return 'No'; } } + if (!obs && fallBackConcepts?.length) { + const concept = fallBackConcepts.find((c) => findObs(encounter, c) != null); + obs = findObs(encounter, concept); + } + if (!obs) { return '--'; } + if (isDate) { return formatDate(parseDate(obs.value), { mode: 'wide' }); } diff --git a/packages/esm-hiv-app/src/views/program-management/program-management-summary.component.tsx b/packages/esm-hiv-app/src/views/program-management/program-management-summary.component.tsx index 0e7fb3033..56055f5b9 100644 --- a/packages/esm-hiv-app/src/views/program-management/program-management-summary.component.tsx +++ b/packages/esm-hiv-app/src/views/program-management/program-management-summary.component.tsx @@ -1,12 +1,8 @@ import React from 'react'; import { Tabs, Tab, TabList, TabPanels, TabPanel } from '@carbon/react'; import styles from '../common.scss'; -import HIVEnrolmentTabList from './tabs/hiv-enrolment-tab.component'; -import ServiceDeliveryTabList from './tabs/service-delivery-tab.component'; -import ArtTherapyTabList from './tabs/art-therapy-tab.component'; -import DeathTabList from './tabs/death-tab.component'; -import TransferOutTabList from './tabs/transfer-out-tab.component'; -import PatientTracingList from '../partner-notification-services/tabs/patient-tracing.component'; +import { EncounterList, getMenuItemTabConfiguration } from '@ohri/openmrs-esm-ohri-commons-lib'; +import programManagementTabConfigSchema from './program-tabs-config.json'; import { useTranslation } from 'react-i18next'; interface OverviewListProps { @@ -15,36 +11,30 @@ interface OverviewListProps { const ProgramManagementSummary: React.FC = ({ patientUuid }) => { const { t } = useTranslation(); + const tabs = getMenuItemTabConfiguration(programManagementTabConfigSchema); + return (
- {t('hivEnrolment', 'HIV Enrolment')} - {t('artTherapy', 'ART Therapy')} - {t('serviceDeliveryModel', 'Service Delivery Model')} - {t('transferOut', 'Transfer - Out')} - {t('patientTracing', 'Patient Tracing')} - {t('death', 'Death')} + {tabs.map((tab) => ( + {tab.name} + ))} - - - - - - - - - - - - - - - - - - + {tabs.map((tab) => ( + + + + ))}
diff --git a/packages/esm-hiv-app/src/views/program-management/program-tabs-config.json b/packages/esm-hiv-app/src/views/program-management/program-tabs-config.json new file mode 100644 index 000000000..536c67f08 --- /dev/null +++ b/packages/esm-hiv-app/src/views/program-management/program-tabs-config.json @@ -0,0 +1,364 @@ +{ + "menuId": "programManagement", + "tabDefinitions": [ + { + "tabName": "HIV Enrolment", + "headerTitle": "HIV Enrolment", + "displayText": "HIV Enrolment", + "encounterType": "7e54cd64-f9c3-11eb-8e6a-57478ce139b0", + "columns": [ + { + "id": "date", + "isDate": true, + "title": "Enrollment/Re-enrollment Date", + "concept": "20efadf9-86d3-4498-b3ab-7da4dad9c429", + "fallbackConcepts": [ + "160555AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + ] + }, + { + "id": "clientDescription", + "title": "Patient Type at Enrollment", + "concept": "83e40f2c-c316-43e6-a12e-20a338100281" + }, + { + "id": "dateConfirmedPositive", + "isDate": true, + "title": "Date Confirmed HIV+", + "concept": "160554AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + { + "id": "entryPoint", + "title": "Entry Point", + "concept": "160540AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "fallbackConcept": "161011AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "isComplex": true + }, + { + "id": "populationCategory", + "title": "Population Category", + "concept": "166432AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + { + "id": "actions", + "title": "Actions", + "actionOptions": [ + { + "formName": "Service Enrolment Form", + "package": "hiv", + "label": "View Details", + "mode": "view" + }, + { + "formName": "Service Enrolment Form", + "package": "hiv", + "label": "Edit Forms", + "mode": "edit" + } + ] + } + ], + "launchOptions": { + "displayText": "Add", + "moduleName": "@ohri/openmrs-esm-ohri-hiv-app" + }, + "formList": [ + { + "name": "Service Enrolment Form", + "uuid": "8f713e0e-94a0-3c57-9024-69520933802a" + } + ] + }, + { + "tabName": "ART Therapy", + "headerTitle": "ART Therapy", + "displayText": "ART Therapy", + "encounterType": "74bf4fe6-8fdb-4228-be39-680a93a9cf6d", + "columns": [ + { + "id": "initiationDate", + "isDate": true, + "title": "Date", + "concept": "159599AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "type": "artDate", + "fallbackConcepts": [ + "164516AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "164431AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "162572AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "160738AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + ] + }, + { + "id": "therapyPlan", + "title": "Therapy Plan", + "type": "artTherapy", + "concept": "7557d77c-172b-4673-9335-67a38657dd01" + }, + { + "id": "regimen", + "title": "Regimen", + "concept": "dfbe256e-30ba-4033-837a-2e8477f2e7cd" + }, + { + "id": "regimenInitiated", + "title": "Regimen line", + "concept": "164515AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + { + "id": "reason", + "title": "Reason", + "concept": "159599AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "type": "artReason" + }, + { + "id": "actions", + "title": "Actions", + "actionOptions": [ + { + "formName": "ART Therapy Form", + "package": "hiv", + "label": "View Details", + "mode": "view" + }, + { + "formName": "ART Therapy Form", + "package": "hiv", + "label": "Edit Forms", + "mode": "edit" + } + ] + } + ], + "launchOptions": { + "displayText": "Add", + "moduleName": "@ohri/openmrs-esm-ohri-hiv-app" + }, + "formList": [ + { + "name": "ART Therapy Form", + "uuid": "f99fadd8-feb7-321c-ab58-7569805668e7" + } + ] + }, + { + "tabName": "Service Delivery Model", + "headerTitle": "Service Delivery Model", + "displayText": "Service Delivery Model", + "encounterType": "62ee5922-a229-48d3-a1da-875c1ffa9436", + "columns": [ + { + "id": "vlDate", + "isDate": true, + "title": "Date", + "concept": "160753AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + { + "id": "dsdStatus", + "title": "Status", + "concept": "8742967d-8107-4cbb-a17e-9a8c7f624673" + }, + { + "id": "dsdModel", + "title": "DSD Model", + "concept": "52824cbe-0e4d-4c18-8179-80b5799f34ed" + }, + { + "id": "actions", + "title": "Actions", + "actionOptions": [ + { + "formName": "Service Delivery Model Form", + "package": "hiv", + "label": "View Details", + "mode": "view" + }, + { + "formName": "Service Delivery Model Form", + "package": "hiv", + "label": "Edit Forms", + "mode": "edit" + } + ] + } + ], + "launchOptions": { + "displayText": "Add", + "moduleName": "@ohri/openmrs-esm-ohri-hiv-app" + }, + "formList": [ + { + "name": "Service Delivery Model Form", + "uuid": "1e14f841-b42b-3273-93db-807927ca9a82" + } + ] + }, + { + "tabName": "Transfer Out", + "headerTitle": "Transfer Out", + "displayText": "Transfer Out", + "encounterType": "3044916a-7e5f-478b-9091-803233f27f91", + "columns": [ + { + "id": "visitDate", + "isDate": true, + "title": "Visit Date", + "concept": "163137AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + { + "id": "reasonsForTesting", + "title": "Receiving Facility", + "concept": "162724AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + { + "id": "tranferOutDate", + "title": "Transfer-Out Date", + "isDate": true, + "concept": "160649AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + { + "id": "verified", + "title": "Verified", + "type": "transferVerified", + "concept": "797e0073-1f3f-46b1-8b1a-8cdad134d2b3" + }, + { + "id": "actions", + "title": "Actions", + "actionOptions": [ + { + "formName": "Transfer Out Form", + "package": "hiv", + "label": "View Details", + "mode": "view" + }, + { + "formName": "Transfer Out Form", + "package": "hiv", + "label": "Edit Forms", + "mode": "edit" + } + ] + } + ], + "launchOptions": { + "displayText": "Add", + "moduleName": "@ohri/openmrs-esm-ohri-hiv-app" + }, + "formList": [ + { + "name": "Transfer Out Form", + "uuid": "a969288d-6605-361b-b01c-42f6ef25c0f5" + } + ] + }, + { + "tabName": "Patient Tracing", + "headerTitle": "Patient Tracing", + "displayText": "Patient Tracing", + "encounterType": "0cd5d4cb-204e-419a-9dd7-1e18e939ce4c", + "columns": [ + { + "id": "contactDate", + "isDate": true, + "title": "Contact Date", + "concept": "160753AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + { + "id": "contactMethod", + "title": "Contact Method", + "concept": "59c023dd-eed2-4b11-8c34-b88e9439db3c" + }, + { + "id": "contactOutcome", + "title": "Contact Outcome", + "concept": "bc45edbd-11e7-4888-ad7d-4ec3dd8cdcf6" + }, + { + "id": "actions", + "title": "Actions", + "actionOptions": [ + { + "formName": "Patient Tracing Form", + "package": "hiv", + "label": "View Details", + "mode": "view" + }, + { + "formName": "Patient Tracing Form", + "package": "hiv", + "label": "Edit Forms", + "mode": "edit" + } + ] + } + ], + "launchOptions": { + "displayText": "Add", + "moduleName": "@ohri/openmrs-esm-ohri-hiv-app" + }, + "formList": [ + { + "name": "Patient Tracing Form", + "uuid": "71f3febd-dd11-322b-9c18-2a8a07d87af1" + } + ] + }, + { + "tabName": "Death", + "headerTitle": "Death", + "displayText": "Death", + "encounterType": "15272be5-ae9c-4278-a303-4b8907eae73b", + "columns": [ + { + "id": "deathDate", + "isDate": true, + "title": "Death Date", + "concept": "1543AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + { + "id": "deathCause", + "title": "Cause of Death", + "concept": "ef973f1f-557f-4620-acf5-9c4c18bf1eda" + }, + { + "id": "specificDeathCause", + "title": "Specific cause of Death", + "concept": "e329cdf4-4eeb-4821-85ec-80ec4b503de0" + }, + { + "id": "regimenInitiated", + "title": "Regimen line", + "concept": "164515AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + }, + { + "id": "actions", + "title": "Actions", + "actionOptions": [ + { + "formName": "Death Form", + "package": "hiv", + "label": "View Details", + "mode": "view" + }, + { + "formName": "Death Form", + "package": "hiv", + "label": "Edit Forms", + "mode": "edit" + } + ] + } + ], + "launchOptions": { + "displayText": "Add", + "moduleName": "@ohri/openmrs-esm-ohri-hiv-app" + }, + "formList": [ + { + "name": "Death Form", + "uuid": "41af2def-841d-38b7-8d2e-df25bdd0b73f" + } + ] + } + ] +} diff --git a/packages/esm-hiv-app/src/views/program-management/tabs/art-therapy-tab.component.tsx b/packages/esm-hiv-app/src/views/program-management/tabs/art-therapy-tab.component.tsx deleted file mode 100644 index 28c1cc2f7..000000000 --- a/packages/esm-hiv-app/src/views/program-management/tabs/art-therapy-tab.component.tsx +++ /dev/null @@ -1,204 +0,0 @@ -import React, { useMemo } from 'react'; -import { useTranslation } from 'react-i18next'; - -import { EncounterList, EncounterListColumn, getObsFromEncounter, findObs } from '@ohri/openmrs-esm-ohri-commons-lib'; - -import { moduleName } from '../../../index'; -import { useConfig } from '@openmrs/esm-framework'; - -interface ArtTherapyTabListProps { - patientUuid: string; -} - -export const getARTDateConcept = ( - encounter, - startDate, - switchDate, - substitutionDate, - stopDate, - restartDate, -): string => { - let artStartDate = findObs(encounter, startDate); - let artSwitchDate = findObs(encounter, switchDate); - let artSubstitutionDate = findObs(encounter, substitutionDate); - let artStopDate = findObs(encounter, stopDate); - let artRestartDate = findObs(encounter, restartDate); - - artStartDate = artStartDate ? artStartDate.value : null; - artSubstitutionDate = artSubstitutionDate ? artSubstitutionDate.value : null; - artSwitchDate = artSwitchDate ? artSwitchDate.value : null; - artStopDate = artStopDate ? artStopDate.value : null; - artRestartDate = artRestartDate ? artRestartDate.value : null; - - let latestDateConcept: string = startDate; - let latestDate = artStartDate; - if (artSubstitutionDate != null) { - latestDateConcept = substitutionDate; - latestDate = artSubstitutionDate; - } - if (artSwitchDate != null) { - latestDate = artSwitchDate; - latestDateConcept = switchDate; - } - if (artStopDate != null) { - latestDate = artStopDate; - latestDateConcept = stopDate; - } - if (artRestartDate != null) { - latestDate = artRestartDate; - latestDateConcept = restartDate; - } - - return latestDateConcept; -}; - -const ArtTherapyTabList: React.FC = ({ patientUuid }) => { - const { t } = useTranslation(); - const { obsConcepts, encounterTypes, formNames, formUuids } = useConfig(); - - const artConcepts = useMemo( - () => - new Map([ - ['1256AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', t('artStart', 'Start ART')], - ['1258AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', t('artSubstitute', 'Substitute ART Regimen')], - ['1259AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', t('artSwitch', 'Switch ART Regimen Line')], - ['1260AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', t('artStop', 'Stop ART')], - ['3e69cb60-2943-410f-83d4-b359ae83fefd', t('artRestart', 'Restart ART therapy')], - ]), - [], - ); - - const getARTReasonConcept = (encounter, startDate, switchDate, substitutionDate, stopDate, restartDate): string => { - const latestDateConcept: string = getARTDateConcept( - encounter, - startDate, - switchDate, - substitutionDate, - stopDate, - restartDate, - ); - - let artReaseonConcept; - switch (latestDateConcept) { - case startDate: - artReaseonConcept = ''; - break; - case substitutionDate: - artReaseonConcept = obsConcepts.substituteReasonUUID; - break; - case switchDate: - artReaseonConcept = obsConcepts.switchReasonUUID; - break; - case restartDate: - artReaseonConcept = obsConcepts.freeTextCommentConcept; - break; - case stopDate: - artReaseonConcept = obsConcepts.stopReasonUUID; - default: - artReaseonConcept = obsConcepts.stopReasonUUID; - } - - return artReaseonConcept; - }; - - const columns: EncounterListColumn[] = useMemo( - () => [ - { - key: 'initiationDate', - header: t('initDate', 'Date'), - getValue: (encounter) => { - return getObsFromEncounter( - encounter, - getARTDateConcept( - encounter, - obsConcepts.artTherapyDateTime_UUID, - obsConcepts.switchDateUUID, - obsConcepts.substitutionDateUUID, - obsConcepts.artStopDateUUID, - obsConcepts.dateRestartedUUID, - ), - true, - ); - }, - }, - { - key: 'therapyPlan', - header: t('therapyPlan', 'Therapy Plan'), - getValue: (encounter) => { - const therapyPlanObs = findObs(encounter, obsConcepts.therapyPlanConcept); - return therapyPlanObs ? artConcepts.get(therapyPlanObs.value.uuid) : '--'; - }, - }, - { - key: 'regimen', - header: t('regimen', 'Regimen'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.regimenConcept); - }, - }, - { - key: 'regimenInitiated', - header: t('regimenInitiated', 'Regimen line'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.regimenLine_UUID); - }, - }, - { - key: 'reason', - header: t('reason', 'Reason'), - getValue: (encounter) => { - const reasonConcept = getARTReasonConcept( - encounter, - obsConcepts.artTherapyDateTime_UUID, - obsConcepts.switchDateUUID, - obsConcepts.substitutionDateUUID, - obsConcepts.artStopDateUUID, - obsConcepts.dateRestartedUUID, - ); - return getObsFromEncounter(encounter, reasonConcept); - }, - }, - { - key: 'actions', - header: t('actions', 'Actions'), - getValue: (encounter) => [ - { - form: { name: formNames.ARTTherapyFormName, package: 'hiv' }, - encounterUuid: encounter.uuid, - intent: '*', - label: t('viewDetails', 'View Details'), - mode: 'view', - }, - { - form: { name: formNames.ARTTherapyFormName, package: 'hiv' }, - encounterUuid: encounter.uuid, - intent: '*', - label: t('editForm', 'Edit Form'), - mode: 'edit', - }, - ], - }, - ], - [], - ); - - const headerTitle = t('artTherapy', 'ART Therapy'); - const displayText = t('artTherapy', 'ART Therapy'); - - return ( - - ); -}; - -export default ArtTherapyTabList; diff --git a/packages/esm-hiv-app/src/views/program-management/tabs/death-tab.component.tsx b/packages/esm-hiv-app/src/views/program-management/tabs/death-tab.component.tsx deleted file mode 100644 index 8d1f83e3c..000000000 --- a/packages/esm-hiv-app/src/views/program-management/tabs/death-tab.component.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import React, { useMemo } from 'react'; -import { useTranslation } from 'react-i18next'; -import { EncounterListColumn, getObsFromEncounter, EncounterList } from '@ohri/openmrs-esm-ohri-commons-lib'; -import { moduleName } from '../../../index'; -import { useConfig } from '@openmrs/esm-framework'; - -interface DeathTabListProps { - patientUuid: string; -} - -const DeathTabList: React.FC = ({ patientUuid }) => { - const { t } = useTranslation(); - const { obsConcepts, encounterTypes, formNames, formUuids } = useConfig(); - - const columnsLab: EncounterListColumn[] = useMemo( - () => [ - { - key: 'deathDate', - header: t('deathDate', 'Death Date'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.hivDeathDate_UUID, true); - }, - }, - { - key: 'deathCause', - header: t('deathCause', 'Cause of Death'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.causeOFDeath_UUID); - }, - }, - { - key: 'specificDeathCause', - header: t('specificDeathCause', 'Specific cause of Death'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.deathSpecific_UUID); - }, - }, - { - key: 'actions', - header: t('actions', 'Actions'), - getValue: (encounter) => { - const baseActions = [ - { - form: { name: formNames.deathFormName, package: 'hiv' }, - encounterUuid: encounter.uuid, - intent: '*', - label: t('viewDetails', 'View Details'), - mode: 'view', - }, - { - form: { name: formNames.deathFormName, package: 'hiv' }, - encounterUuid: encounter.uuid, - intent: '*', - label: t('editForm', 'Edit Form'), - mode: 'edit', - }, - ]; - return baseActions; - }, - }, - ], - [], - ); - const headerTitle = t('death', 'Death'); - - return ( - - ); -}; - -export default DeathTabList; diff --git a/packages/esm-hiv-app/src/views/program-management/tabs/hiv-enrolment-tab.component.tsx b/packages/esm-hiv-app/src/views/program-management/tabs/hiv-enrolment-tab.component.tsx deleted file mode 100644 index 88d4e4a89..000000000 --- a/packages/esm-hiv-app/src/views/program-management/tabs/hiv-enrolment-tab.component.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import React, { useMemo } from 'react'; -import { useTranslation } from 'react-i18next'; -import { EncounterListColumn, findObs, getObsFromEncounter, EncounterList } from '@ohri/openmrs-esm-ohri-commons-lib'; -import { moduleName } from '../../../index'; -import { useConfig } from '@openmrs/esm-framework'; - -interface HIVEnrolmentTabListProps { - patientUuid: string; -} - -const HIVEnrolmentTabList: React.FC = ({ patientUuid }) => { - const { t } = useTranslation(); - const { obsConcepts, encounterTypes, formNames, formUuids } = useConfig(); - - const columns: EncounterListColumn[] = useMemo( - () => [ - { - key: 'date', - header: t('enrollmentDate', 'Enrollment/Re-enrollment Date'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.re_enrolmentDateConcept, true) !== '--' - ? getObsFromEncounter(encounter, obsConcepts.re_enrolmentDateConcept, true) - : getObsFromEncounter(encounter, obsConcepts.enrolmentDate, true); - }, - }, - { - key: 'clientDescription', - header: t('patientType', 'Patient Type at Enrollment'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.patientTypeEnrollmentConcept); - }, - }, - { - key: 'dateConfirmedPositive', - header: t('dateConfirmedPositive', 'Date Confirmed HIV+'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.dateOfHIVDiagnosisConcept, true); - }, - }, - { - key: 'entryPoint', - header: t('entryPoint', 'Entry Point'), - getValue: (encounter) => { - const obs = findObs(encounter, obsConcepts.entryPointConcept); - if (typeof obs !== undefined && obs) { - if (typeof obs.value === 'object') { - if (obs !== undefined) { - const EntryPoint = - obs.value.names?.find((conceptName) => conceptName.conceptNameType === 'SHORT')?.name || - obs.value.name.name; - if (EntryPoint === 'Other non-coded') { - return getObsFromEncounter(encounter, obsConcepts.freeTextCommentConcept); - } - } - } - } - return getObsFromEncounter(encounter, obsConcepts.entryPointConcept); - }, - }, - { - key: 'populationCategory', - header: t('populationCategory', 'Population Category'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.populationCategoryConcept); - }, - }, - { - key: 'actions', - header: t('actions', 'Actions'), - getValue: (encounter) => [ - { - form: { name: formNames.ServiceEnrolmentFormName, package: 'hiv' }, - encounterUuid: encounter.uuid, - intent: '*', - label: t('viewDetails', 'View Details'), - mode: 'view', - }, - { - form: { name: formNames.ServiceEnrolmentFormName, package: 'hiv' }, - encounterUuid: encounter.uuid, - intent: '*', - label: t('editForm', 'Edit Form'), - mode: 'edit', - }, - ], - }, - ], - [], - ); - - const headerTitle = t('hivEnrolment', 'HIV Enrolment'); - const displayText = t('hivEnrolment', 'HIV Enrolment'); - - return ( - - ); -}; - -export default HIVEnrolmentTabList; diff --git a/packages/esm-hiv-app/src/views/program-management/tabs/service-delivery-tab.component.tsx b/packages/esm-hiv-app/src/views/program-management/tabs/service-delivery-tab.component.tsx deleted file mode 100644 index 653b0abc5..000000000 --- a/packages/esm-hiv-app/src/views/program-management/tabs/service-delivery-tab.component.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import React, { useEffect, useMemo, useState } from 'react'; -import { useTranslation } from 'react-i18next'; -import { EncounterListColumn, getObsFromEncounter, EncounterList } from '@ohri/openmrs-esm-ohri-commons-lib'; - -import { moduleName } from '../../../index'; -import { useConfig } from '@openmrs/esm-framework'; - -interface ServiceDeliveryTabListProps { - patientUuid: string; -} - -const ServiceDeliveryTabList: React.FC = ({ patientUuid }) => { - const { t } = useTranslation(); - const { obsConcepts, encounterTypes, formNames, formUuids } = useConfig(); - - const columns: EncounterListColumn[] = useMemo( - () => [ - { - key: 'vlDate', - header: t('vlDate', 'Date'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.dateOfEventConcept, true); - }, - }, - { - key: 'dsdstatus', - header: t('dsdstatus', 'Status'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.DSDStatus_UUID); - }, - }, - { - key: 'dsdModel', - header: t('dsdModel', 'SD Model'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.CommunityDSDModel_UUID); - }, - }, - - { - key: 'actions', - header: t('actions', 'Actions'), - getValue: (encounter) => { - const baseActions = [ - { - form: { name: formNames.ServiceDeliveryFormName, package: 'hiv' }, - encounterUuid: encounter.uuid, - intent: '*', - label: t('viewDetails', 'View Details'), - mode: 'view', - }, - { - form: { name: formNames.ServiceDeliveryFormName, package: 'hiv' }, - encounterUuid: encounter.uuid, - intent: '*', - label: t('editForm', 'Edit Form'), - mode: 'edit', - }, - ]; - return baseActions; - }, - }, - ], - [], - ); - - const headerTitle = t('serviceDeliveryModel', 'Service Delivery Model'); - - return ( - - ); -}; - -export default ServiceDeliveryTabList; diff --git a/packages/esm-hiv-app/src/views/program-management/tabs/transfer-out-tab.component.tsx b/packages/esm-hiv-app/src/views/program-management/tabs/transfer-out-tab.component.tsx deleted file mode 100644 index fbf2d113b..000000000 --- a/packages/esm-hiv-app/src/views/program-management/tabs/transfer-out-tab.component.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import React, { useEffect, useMemo, useState } from 'react'; -import { useTranslation } from 'react-i18next'; -import { - EmptyState, - EncounterListColumn, - findObs, - getObsFromEncounter, - EncounterList, -} from '@ohri/openmrs-esm-ohri-commons-lib'; - -import { moduleName } from '../../../index'; -import { formatDate, parseDate, useConfig } from '@openmrs/esm-framework'; - -interface TransferOutTabListProps { - patientUuid: string; -} - -const TransferOutTabList: React.FC = ({ patientUuid }) => { - const { t } = useTranslation(); - const { obsConcepts, encounterTypes, formNames, formUuids } = useConfig(); - - const columnsLab: EncounterListColumn[] = useMemo( - () => [ - { - key: 'visitDate', - header: t('visitDate', 'Visit Date'), - getValue: (encounter) => { - const obsVisitDate = getObsFromEncounter(encounter, obsConcepts.dateOfEncounterConcept, true); - const encounterDate = encounter.encounterDatetime; - return obsVisitDate === '--' && encounterDate - ? formatDate(parseDate(encounterDate), { mode: 'wide' }) - : obsVisitDate; - }, - }, - { - key: 'reasonsForTesting', - header: t('reasonsForTesting', 'Receiving Facility'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.receivingFacility_UUID); - }, - }, - { - key: 'tranferOutDate', - header: t('tranferOutDate', 'Transfer-Out Date'), - getValue: (encounter) => { - return getObsFromEncounter(encounter, obsConcepts.TransferOutDate_UUID, true); - }, - }, - { - key: 'verified', - header: t('verified', 'Verified'), - getValue: (encounter) => { - const obs = findObs(encounter, obsConcepts.verified_UUID); - return obs?.value?.name?.name === 'FALSE' ? 'No' : obs?.value?.name?.name; - }, - }, - - { - key: 'actions', - header: t('actions', 'Actions'), - getValue: (encounter) => { - const baseActions = [ - { - form: { name: formNames.TransferOutFormName, package: 'hiv' }, - encounterUuid: encounter.uuid, - intent: '*', - label: t('viewDetails', 'View Details'), - mode: 'view', - }, - { - form: { name: formNames.TransferOutFormName, package: 'hiv' }, - encounterUuid: encounter.uuid, - intent: '*', - label: t('editForm', 'Edit Form'), - mode: 'edit', - }, - ]; - return baseActions; - }, - }, - ], - [], - ); - - const headerTitle = t('transferOut', 'Transfer Out'); - const displayText = t('transferOut', 'Transfer Out'); - - return ( - - ); -}; - -export default TransferOutTabList; diff --git a/yarn.lock b/yarn.lock index 665c5b7d4..8b1f555e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3100,9 +3100,9 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-api@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-api@npm:5.6.1-pre.1806" +"@openmrs/esm-api@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-api@npm:5.6.1-pre.1824" dependencies: "@types/fhir": "npm:0.0.31" lodash-es: "npm:^4.17.21" @@ -3111,17 +3111,17 @@ __metadata: "@openmrs/esm-error-handling": 5.x "@openmrs/esm-navigation": 5.x "@openmrs/esm-offline": 5.x - checksum: b9802f661e9a9f0a5aff343cdcd64ac5921c5c8261f0e8e32d75bc50f7d8fcbb685d402244c4b44a833ae83591fdae92a512d3f24c7d96c2f9fd05a0c11449f9 + checksum: 8da453cf570c87b1faaa64182c276c0ac601b4d90cd0a76b654fe23bf36b4688ece6b6e16d85ffcb0fe5f828b21a1d4cd20601c99af453e449498c64f5eded1a languageName: node linkType: hard -"@openmrs/esm-app-shell@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-app-shell@npm:5.6.1-pre.1806" +"@openmrs/esm-app-shell@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-app-shell@npm:5.6.1-pre.1824" dependencies: "@carbon/react": "npm:~1.37.0" - "@openmrs/esm-framework": "npm:5.6.1-pre.1806" - "@openmrs/esm-styleguide": "npm:5.6.1-pre.1806" + "@openmrs/esm-framework": "npm:5.6.1-pre.1824" + "@openmrs/esm-styleguide": "npm:5.6.1-pre.1824" dayjs: "npm:^1.10.4" dexie: "npm:^3.0.3" html-webpack-plugin: "npm:^5.5.0" @@ -3146,56 +3146,56 @@ __metadata: workbox-strategies: "npm:^6.1.5" workbox-webpack-plugin: "npm:^6.1.5" workbox-window: "npm:^6.1.5" - checksum: b486689ffe16a17cc95f9b395d32c85e79b824c00c13d18041230fd663faf7108197a17ecd9440d03bf473c05a6bb87848d594297ede68a1141b012b5ff7c3f2 + checksum: c2ed0364a206c9ad19acbfd5e84f54669a636178298b9ebfec96dd485860b2f743b42a674a1eda7061c4254e4ed6b9f29a9707a6c6db405c6b38fdff50154971 languageName: node linkType: hard -"@openmrs/esm-config@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-config@npm:5.6.1-pre.1806" +"@openmrs/esm-config@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-config@npm:5.6.1-pre.1824" dependencies: ramda: "npm:^0.26.1" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x single-spa: 5.x - checksum: d19e6fc79440c683f237358e9c44980889b2442c44cdb7763126f3015d891c2a38151adacc45a1e14ef7cfaeb0359a09b34ee21410b7f9ed0e787a3ba939db4c + checksum: d7c1118a0fb364a8fe875cd7b37c8669d5715d260292f496dc2a382019687dac4ef2d41f90206d173d791b50f0c660b1d2aa7d9ed5c96f597958fbda6f4e308c languageName: node linkType: hard -"@openmrs/esm-context@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-context@npm:5.6.1-pre.1806" +"@openmrs/esm-context@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-context@npm:5.6.1-pre.1824" dependencies: immer: "npm:^10.0.4" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x - checksum: 7a51505f3717107de8d818abd1113f1217a8b7de98d51fe1874918ebbf11231b6bbd15d1c3b8445d1505cd247581bf2f23019185a29fd77ec0f03ccddcff9b8a + checksum: 06aea420dd00f358ef1069f1fd7f8833c392cfa8779a73949b9e47bd16e40cae8c96daae768eff41572eb4368d42f504b7c6419d50f2110ffd00dbd325e17e46 languageName: node linkType: hard -"@openmrs/esm-dynamic-loading@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-dynamic-loading@npm:5.6.1-pre.1806" +"@openmrs/esm-dynamic-loading@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-dynamic-loading@npm:5.6.1-pre.1824" peerDependencies: "@openmrs/esm-globals": 5.x - checksum: 0ebfa0bd54e5f9830f1fa539cb837e96bd56e65efa11ec279682519976573195b369b0e658627d849ba479e293147fc3a182b719e807b0571961e6899e0874f6 + checksum: a18a53f8810175c0598328cdcc1888f9b26391da254b3a7b67efaa4a7b4238a99f250d2c150e26f0c0060b3f4aebeea8a5fb85095a9b73e05c17e355d49b3a17 languageName: node linkType: hard -"@openmrs/esm-error-handling@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-error-handling@npm:5.6.1-pre.1806" +"@openmrs/esm-error-handling@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-error-handling@npm:5.6.1-pre.1824" peerDependencies: "@openmrs/esm-globals": 5.x - checksum: d577092f20189f1f05b86fa3e2f05bc780d46cfeaeff209963c72eae57fb9a5427edb9e92f6e2cd7d53098dc8d22956a77fc490be50f383aabeba09ebae81f11 + checksum: acc9366b88675c99a2730f2b7e6997d94bd35469c420df63ecd357ae6624ad443f39301aab987f02f8b6d2eb2ff8f2ed4fe67ad2f4b731dc7bc01ddc49bb7606 languageName: node linkType: hard -"@openmrs/esm-extensions@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-extensions@npm:5.6.1-pre.1806" +"@openmrs/esm-extensions@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-extensions@npm:5.6.1-pre.1824" dependencies: lodash-es: "npm:^4.17.21" peerDependencies: @@ -3205,43 +3205,43 @@ __metadata: "@openmrs/esm-state": 5.x "@openmrs/esm-utils": 5.x single-spa: 5.x - checksum: 3def551864316a0a0c5417210a5e9e7590ac9f818bb1008a1d97f3504e1684857024c74d58b15605fda877f0f71aacaec4d23da272216c5efa88503a5fe8e357 + checksum: 80c89d993f5204ac6bd55fbad18f4803c078615b6b0ffbdf968d3a1bf08119230ec3bda454ff1002b731ca66cff2dc837c201832bf9afa055481f0a369626ae4 languageName: node linkType: hard -"@openmrs/esm-feature-flags@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-feature-flags@npm:5.6.1-pre.1806" +"@openmrs/esm-feature-flags@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-feature-flags@npm:5.6.1-pre.1824" dependencies: ramda: "npm:^0.26.1" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x single-spa: 5.x - checksum: beb3fb7907d33dd8acc62aecaad2b8cd59a274064aa7953e4dfd8a027f89e2f9927d505c53146334333d83efb84d4e4be50aeecb6146b42dbd481fec4ebacb09 - languageName: node - linkType: hard - -"@openmrs/esm-framework@npm:5.6.1-pre.1806, @openmrs/esm-framework@npm:next": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-framework@npm:5.6.1-pre.1806" - dependencies: - "@openmrs/esm-api": "npm:5.6.1-pre.1806" - "@openmrs/esm-config": "npm:5.6.1-pre.1806" - "@openmrs/esm-context": "npm:5.6.1-pre.1806" - "@openmrs/esm-dynamic-loading": "npm:5.6.1-pre.1806" - "@openmrs/esm-error-handling": "npm:5.6.1-pre.1806" - "@openmrs/esm-extensions": "npm:5.6.1-pre.1806" - "@openmrs/esm-feature-flags": "npm:5.6.1-pre.1806" - "@openmrs/esm-globals": "npm:5.6.1-pre.1806" - "@openmrs/esm-navigation": "npm:5.6.1-pre.1806" - "@openmrs/esm-offline": "npm:5.6.1-pre.1806" - "@openmrs/esm-react-utils": "npm:5.6.1-pre.1806" - "@openmrs/esm-routes": "npm:5.6.1-pre.1806" - "@openmrs/esm-state": "npm:5.6.1-pre.1806" - "@openmrs/esm-styleguide": "npm:5.6.1-pre.1806" - "@openmrs/esm-translations": "npm:5.6.1-pre.1806" - "@openmrs/esm-utils": "npm:5.6.1-pre.1806" + checksum: c0df3e21148f4e6076e4722c44cc6f9adf8f395c9f487d33327a016977cf4426a35b663d5c4453fd248cff2c53c73e2ad7144b0cc55fe427d30720dfbfa023c7 + languageName: node + linkType: hard + +"@openmrs/esm-framework@npm:5.6.1-pre.1824, @openmrs/esm-framework@npm:next": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-framework@npm:5.6.1-pre.1824" + dependencies: + "@openmrs/esm-api": "npm:5.6.1-pre.1824" + "@openmrs/esm-config": "npm:5.6.1-pre.1824" + "@openmrs/esm-context": "npm:5.6.1-pre.1824" + "@openmrs/esm-dynamic-loading": "npm:5.6.1-pre.1824" + "@openmrs/esm-error-handling": "npm:5.6.1-pre.1824" + "@openmrs/esm-extensions": "npm:5.6.1-pre.1824" + "@openmrs/esm-feature-flags": "npm:5.6.1-pre.1824" + "@openmrs/esm-globals": "npm:5.6.1-pre.1824" + "@openmrs/esm-navigation": "npm:5.6.1-pre.1824" + "@openmrs/esm-offline": "npm:5.6.1-pre.1824" + "@openmrs/esm-react-utils": "npm:5.6.1-pre.1824" + "@openmrs/esm-routes": "npm:5.6.1-pre.1824" + "@openmrs/esm-state": "npm:5.6.1-pre.1824" + "@openmrs/esm-styleguide": "npm:5.6.1-pre.1824" + "@openmrs/esm-translations": "npm:5.6.1-pre.1824" + "@openmrs/esm-utils": "npm:5.6.1-pre.1824" dayjs: "npm:^1.10.7" peerDependencies: dayjs: 1.x @@ -3252,33 +3252,35 @@ __metadata: rxjs: 6.x single-spa: 5.x swr: 2.x - checksum: f08be314f34c8426296707823e9be3a7b2a65b95274baba429d362f3f5bb13e49937d6883ffc876ce2d6cd3187920854736f8091c4460ad313802a08a3779ff2 + checksum: 5633cda23e3427df26a4a9d7d92b57ea8a721379a6e783c344cc3f08ad1b4d2fb71bf7d9afd5b10c8be2c40deba70471f09bc11e9c036d523cdd2304e9acf08d languageName: node linkType: hard -"@openmrs/esm-globals@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-globals@npm:5.6.1-pre.1806" +"@openmrs/esm-globals@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-globals@npm:5.6.1-pre.1824" + dependencies: + "@types/fhir": "npm:0.0.31" peerDependencies: single-spa: 5.x - checksum: 8c4dbd3e6ebbbf728352d6dced15d791663c22b670bdaa7e8c4ed56bf1cfe9f61307eceb47e71ebd67babfdbb3d77df876d2b9b69af21467d7a5659552c1d641 + checksum: 5311fb382b24724ddb0b0b9b4253a4aa71930c51d00822841cd3cf26cac663898b892724591a27d458042280b5700cff1c70a35336333a27442f531e1c5cc84b languageName: node linkType: hard -"@openmrs/esm-navigation@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-navigation@npm:5.6.1-pre.1806" +"@openmrs/esm-navigation@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-navigation@npm:5.6.1-pre.1824" dependencies: path-to-regexp: "npm:6.1.0" peerDependencies: "@openmrs/esm-state": 5.x - checksum: ad93edcfd0210a5a3007f8eb5c724bc478395ad867caed17760f6576d9114c53854dc1521a0b9c634f062cb4713ad182072dc363c56733cc3caf80d23eea9709 + checksum: 4955e4d4343b6f46918ac94213f89dd783502408b0897710abf52542fd2a08f68b74c32470d6a09f9e3a3d1de987470f66af51996b78db72086c747013a61373 languageName: node linkType: hard -"@openmrs/esm-offline@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-offline@npm:5.6.1-pre.1806" +"@openmrs/esm-offline@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-offline@npm:5.6.1-pre.1824" dependencies: dexie: "npm:^3.0.3" lodash-es: "npm:^4.17.21" @@ -3289,7 +3291,7 @@ __metadata: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x rxjs: 6.x - checksum: 426699d6340f30643ce00988da1f9c060b7ab2ad425f1e3fb3dd0c9b29f74ce5da071f5b884cc43add3cd53b308c240f9f988f1fd8e96c61c93ca0f9e47a8fc6 + checksum: 71cea01a7ed842883ce17c59abac333074f9927bf11adc62af60a17a78af12060dff13106bc6971209012db447230370613f107918799ad5c35438f3f9d03498 languageName: node linkType: hard @@ -3308,9 +3310,9 @@ __metadata: languageName: node linkType: hard -"@openmrs/esm-react-utils@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-react-utils@npm:5.6.1-pre.1806" +"@openmrs/esm-react-utils@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-react-utils@npm:5.6.1-pre.1824" dependencies: lodash-es: "npm:^4.17.21" single-spa-react: "npm:^6.0.0" @@ -3331,34 +3333,34 @@ __metadata: react-i18next: 11.x rxjs: 6.x swr: 2.x - checksum: ae1fb1aced2a59b006bd3d8336141325b1d949032ca1cfdaa4315ea79cd768acc4fa4cb157ef1e11339298a7dc6c6cf47cc97bf8f8aef5ce6effb1af5c5c828f + checksum: 3e9452b647cff9b5af3a7247c114ed36fc5db27de30d6153cec6e25ccbae23e8bf1761b7fc95ee0009aab37a6ce41ea4299b35e60181c854aa392fd23812e8ea languageName: node linkType: hard -"@openmrs/esm-routes@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-routes@npm:5.6.1-pre.1806" +"@openmrs/esm-routes@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-routes@npm:5.6.1-pre.1824" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-utils": 5.x - checksum: 2dda1b5c62d299f3930a543c32c6b736ece9e504cf648e7973402222167cde538847b1cd928b0e78019ed837a4c71120bde0a6c8a50d2b64d0602bea72b104e5 + checksum: 1bb7f82fa4111d10824b34617f391d5584fb070635305b8f8a629f5cfe7da1e0b1cadc3abbc246bc524545ba54ff04f21bc61f35a7a0a6ecd076b42bd07aac0f languageName: node linkType: hard -"@openmrs/esm-state@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-state@npm:5.6.1-pre.1806" +"@openmrs/esm-state@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-state@npm:5.6.1-pre.1824" dependencies: zustand: "npm:^4.3.6" peerDependencies: "@openmrs/esm-globals": 5.x - checksum: 42ae1316001bc551caa7f901487bd13ee2fdc595f417baaf2a9404693a03461765bfced5728cc99a8657cd61caccb966cb0c23fc3ab56a2cdfd4e795a1c3f486 + checksum: 95c724e8c6351f5ff0da3a492a5f6d7e423cb934844d6f98d0f04b4d834edd9d8c2ac8e19c4e870553f748a14df0e8aa088b1a5097356647089900daccf4c4f0 languageName: node linkType: hard -"@openmrs/esm-styleguide@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-styleguide@npm:5.6.1-pre.1806" +"@openmrs/esm-styleguide@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-styleguide@npm:5.6.1-pre.1824" dependencies: "@carbon/charts": "npm:^1.12.0" "@carbon/react": "npm:~1.37.0" @@ -3383,24 +3385,24 @@ __metadata: react: 18.x react-dom: 18.x rxjs: 6.x - checksum: 00268ef8fc651665cd4bd6923399410c1e3dec4ccf913f09ea1e9813031b90b7de0c1a59aa62fdf9aeede6de2e0da7802f2f8db32447daeb1b8d3e5ba26073ee + checksum: afd85e79f2d50d8b36fffc48dba84cd450a35e32500b1e00e0d05031463e02e237e2bef5b8f48db2f96ed198a2b691dd4771d08612bde2b852d23e3287d36119 languageName: node linkType: hard -"@openmrs/esm-translations@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-translations@npm:5.6.1-pre.1806" +"@openmrs/esm-translations@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-translations@npm:5.6.1-pre.1824" dependencies: i18next: "npm:21.10.0" peerDependencies: i18next: 21.x - checksum: b4ae816c08c7d596e29a0aad629424a700df684299408deb77bc9264491c30ce3e8ef9ac341b9518bd3176f8ea5f64b80d4fccdcdbb9bfc50bff0b3058061dcf + checksum: 7f922877f5f16b65829dc26f13deab5b74eb5e866a2bc9406329f9ad87ab2637452a185e0b1db25084d2149384d403169a5677352fdee0d0822c80b4f2ddabf0 languageName: node linkType: hard -"@openmrs/esm-utils@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/esm-utils@npm:5.6.1-pre.1806" +"@openmrs/esm-utils@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/esm-utils@npm:5.6.1-pre.1824" dependencies: "@internationalized/date": "npm:^3.5.0" semver: "npm:7.3.2" @@ -3409,7 +3411,7 @@ __metadata: dayjs: 1.x i18next: 21.x rxjs: 6.x - checksum: da50be18458fe539b5f7ded14ffcf829df47e7062b0f14c42cb492740b967385937780b1ec367f2a2953b83092d58a53aa2a624ec7ae45fba2996feff401bf23 + checksum: ed5e730546d474b58cc8b46c54969154275d7f0f4f6475507eb26c8e6a62ef19c26ed30ed6dc71193cc86d8ac101e7d3de1d7a79dddd57f2252f9a4cb41ded8f languageName: node linkType: hard @@ -3441,9 +3443,9 @@ __metadata: languageName: node linkType: hard -"@openmrs/webpack-config@npm:5.6.1-pre.1806": - version: 5.6.1-pre.1806 - resolution: "@openmrs/webpack-config@npm:5.6.1-pre.1806" +"@openmrs/webpack-config@npm:5.6.1-pre.1824": + version: 5.6.1-pre.1824 + resolution: "@openmrs/webpack-config@npm:5.6.1-pre.1824" dependencies: "@swc/core": "npm:^1.3.58" clean-webpack-plugin: "npm:^4.0.0" @@ -3460,7 +3462,7 @@ __metadata: webpack-stats-plugin: "npm:^1.0.3" peerDependencies: webpack: 5.x - checksum: 345b3a0bfa6df52e22d331d887532ae36d689faf18627e2f1dbc1e3c8aa1f41294d9748359269df76eebc8af029eee980b4979a10ec38fac052ca672cdeefa69 + checksum: 248d1fce63cb97ac608663f8e0492fb9c73da773efe7cb1d88a4f0a5fbcbb7053341f301089454cf8b9275ff669eac0e4f4bb9b368f98c4f16f54605fb7ed50a languageName: node linkType: hard @@ -13794,12 +13796,12 @@ __metadata: linkType: hard "openmrs@npm:next": - version: 5.6.1-pre.1806 - resolution: "openmrs@npm:5.6.1-pre.1806" + version: 5.6.1-pre.1824 + resolution: "openmrs@npm:5.6.1-pre.1824" dependencies: "@carbon/icons-react": "npm:11.26.0" - "@openmrs/esm-app-shell": "npm:5.6.1-pre.1806" - "@openmrs/webpack-config": "npm:5.6.1-pre.1806" + "@openmrs/esm-app-shell": "npm:5.6.1-pre.1824" + "@openmrs/webpack-config": "npm:5.6.1-pre.1824" "@pnpm/npm-conf": "npm:^2.1.0" "@swc/core": "npm:^1.3.58" autoprefixer: "npm:^10.4.2" @@ -13831,7 +13833,7 @@ __metadata: yargs: "npm:^17.6.2" bin: openmrs: ./dist/cli.js - checksum: 2482f4ebf1d32cfbc3cc884413458cc24fdc065de23ad2188150e9cad69897f31cd65e8d7fa3016677485b7e752879999b985b5c884a686039e5ba80adb49e35 + checksum: 188c3079d3ddaa8832239d4b219d70061226f43698702a4c2b419c796371e87c714105ecbd01152df8e2b93e4e78a914afb2264737240ec511d1c54e58361455 languageName: node linkType: hard