From 5f82849a45d57adde7f1bc70cc621a427a189c3d Mon Sep 17 00:00:00 2001 From: jwnasambu <33891016+jwnasambu@users.noreply.github.com> Date: Sat, 17 Aug 2024 19:34:03 +0300 Subject: [PATCH] (feat) O3-3635: Orders table modify action should launch workspace directly (#1950) * O3-3635: Drug Order Modification Requires Two Steps Instead of Opening Directly in Order Basket * Fix undefined uuid * UI fixes --------- Co-authored-by: jwnasambu Co-authored-by: Dennis Kigen --- e2e/specs/lab-orders.spec.ts | 2 +- .../src/api/api.ts | 2 +- .../src/components/order-details-table.scss | 35 +- .../orders-details-table.component.tsx | 524 +++++++++--------- .../lab-results-form.component.tsx | 2 +- .../result-form-field.component.tsx | 4 +- .../src/order-basket/order-basket.scss | 10 +- .../order-basket/order-basket.workspace.tsx | 12 +- .../orders-summary.component.tsx | 7 +- .../translations/en.json | 20 +- yarn.lock | 200 +++---- 11 files changed, 435 insertions(+), 383 deletions(-) diff --git a/e2e/specs/lab-orders.spec.ts b/e2e/specs/lab-orders.spec.ts index f2110f0362..de8487d758 100644 --- a/e2e/specs/lab-orders.spec.ts +++ b/e2e/specs/lab-orders.spec.ts @@ -63,7 +63,7 @@ test('Record a lab order', async ({ page }) => { }); await test.step('Then I should see the newly added lab order in the list', async () => { - await expect(page.getByLabel('testorders').getByRole('cell', { name: /blood urea nitrogen/i })).toBeVisible(); + await expect(page.getByRole('cell', { name: /blood urea nitrogen/i })).toBeVisible(); }); }); diff --git a/packages/esm-patient-medications-app/src/api/api.ts b/packages/esm-patient-medications-app/src/api/api.ts index ffcb81e2dd..287cf2a0f3 100644 --- a/packages/esm-patient-medications-app/src/api/api.ts +++ b/packages/esm-patient-medications-app/src/api/api.ts @@ -111,7 +111,7 @@ export function prepMedicationOrderPostData( ? 'org.openmrs.FreeTextDosingInstructions' : 'org.openmrs.SimpleDosingInstructions', dosingInstructions: order.isFreeTextDosage ? order.freeTextDosage : order.patientInstructions, - concept: order.drug.concept.uuid, + concept: order?.drug?.concept?.uuid, orderReasonNonCoded: order.indication, }; } else if (order.action === 'DISCONTINUE') { diff --git a/packages/esm-patient-orders-app/src/components/order-details-table.scss b/packages/esm-patient-orders-app/src/components/order-details-table.scss index 15651f9763..43dba1889c 100644 --- a/packages/esm-patient-orders-app/src/components/order-details-table.scss +++ b/packages/esm-patient-orders-app/src/components/order-details-table.scss @@ -5,7 +5,10 @@ .widgetCard { border: 1px solid colors.$gray-20; - border-bottom: none; + + > .desktop { + border-top: none !important; + } } .row { @@ -19,13 +22,17 @@ } .tooltip { - margin: 0 -(layout.$spacing-03) -0.625rem; + margin: 0 (-(layout.$spacing-03)) -0.625rem; } .menuItem { max-width: none; } +.dropdownContainer { + min-width: max-content; +} + .buttons { justify-content: flex-end; } @@ -95,7 +102,27 @@ } .table { - td:after { - display: none; + td { + &::after { + display: none; + } + } +} + +.hiddenRow { + display: none; +} + +.layer { + height: 100%; +} + +.unknownOrderTypeText { + @include type.type-style('body-compact-01'); +} + +.paginationContainer { + > div { + border-top: none !important; } } diff --git a/packages/esm-patient-orders-app/src/components/orders-details-table.component.tsx b/packages/esm-patient-orders-app/src/components/orders-details-table.component.tsx index 670d8f921d..5f848c8cc7 100644 --- a/packages/esm-patient-orders-app/src/components/orders-details-table.component.tsx +++ b/packages/esm-patient-orders-app/src/components/orders-details-table.component.tsx @@ -1,4 +1,4 @@ -import React, { type ReactElement, type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import React, { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { capitalize, lowerCase } from 'lodash-es'; import { useTranslation } from 'react-i18next'; import { useReactToPrint } from 'react-to-print'; @@ -8,6 +8,7 @@ import { DataTableSkeleton, Dropdown, InlineLoading, + Layer, OverflowMenu, OverflowMenuItem, Table, @@ -20,36 +21,35 @@ import { TableHead, TableHeader, TableRow, - Tooltip, } from '@carbon/react'; import { + CardHeader, + EmptyState, + ErrorState, + getDrugOrderByUuid, + launchPatientWorkspace, + PatientChartPagination, type DrugOrderBasketItem, type LabOrderBasketItem, type Order, type OrderBasketItem, type OrderType, - CardHeader, - EmptyState, - ErrorState, - PatientChartPagination, useLaunchWorkspaceRequiringVisit, useOrderBasket, useOrderTypes, usePatientOrders, - getDrugOrderByUuid, - launchPatientWorkspace, } from '@openmrs/esm-patient-common-lib'; import { + AddIcon, age, + formatDate, getCoreTranslation, getPatientName, - formatDate, + PrinterIcon, useConfig, useLayoutType, usePagination, usePatient, - PrinterIcon, - AddIcon, } from '@openmrs/esm-framework'; import { buildLabOrder, buildMedicationOrder } from '../utils'; import MedicationRecord from './medication-record.component'; @@ -58,10 +58,19 @@ import TestOrder from './test-order.component'; import styles from './order-details-table.scss'; interface OrderDetailsProps { - title?: string; patientUuid: string; showAddButton?: boolean; showPrintButton?: boolean; + title?: string; +} + +interface OrderBasketItemActionsProps { + items: Array; + openOrderBasket: () => void; + openOrderForm: (additionalProps?: { order: MutableOrderBasketItem }) => void; + orderItem: Order; + responsiveSize: string; + setOrderItems: (orderType: 'labs' | 'medications', items: Array) => void; } interface OrderHeaderProps { @@ -71,16 +80,27 @@ interface OrderHeaderProps { isVisible?: boolean; } +interface DataTableRow { + id: string; + cells: Array<{ + id: number; + info: { header: string }; + value: ReactNode | { props: { orderItem: Order }; content: string }; + }>; + isExpanded: boolean; +} + type MutableOrderBasketItem = OrderBasketItem | LabOrderBasketItem | DrugOrderBasketItem; const medicationsOrderBasket = 'medications'; const labsOrderBasket = 'labs'; -const OrderDetailsTable: React.FC = ({ title, patientUuid, showAddButton, showPrintButton }) => { +const OrderDetailsTable: React.FC = ({ patientUuid, showAddButton, showPrintButton, title }) => { const { t } = useTranslation(); const defaultPageSize = 10; const headerTitle = t('orders', 'Orders'); const isTablet = useLayoutType() === 'tablet'; + const responsiveSize = isTablet ? 'lg' : 'md'; const launchOrderBasket = useLaunchWorkspaceRequiringVisit('order-basket'); const launchAddDrugOrder = useLaunchWorkspaceRequiringVisit('add-drug-order'); const launchModifyLabOrder = useLaunchWorkspaceRequiringVisit('add-lab-order'); @@ -105,7 +125,7 @@ const OrderDetailsTable: React.FC = ({ title, patientUuid, sh (orderItem: Order) => { switch (orderItem.type) { case 'drugorder': - launchAddDrugOrder(); + launchAddDrugOrder({ order: buildMedicationOrder(orderItem, 'REVISE') }); break; case 'testorder': launchModifyLabOrder({ order: buildLabOrder(orderItem, 'REVISE') }); @@ -153,11 +173,6 @@ const OrderDetailsTable: React.FC = ({ title, patientUuid, sh header: t('status', 'Status'), isSortable: true, }, - { - key: 'actions', - header: '', - isSortable: false, - }, ]; const tableRows = useMemo(() => { @@ -195,17 +210,8 @@ const OrderDetailsTable: React.FC = ({ title, patientUuid, sh ) : ( '--' ), - actions: !isPrinting && ( - x.uuid === order.uuid)} - items={orders} - setOrderItems={setOrders} - openOrderBasket={launchOrderBasket} - openOrderForm={() => openOrderForm(order)} - /> - ), })); - }, [allOrders, isPrinting, launchOrderBasket, orders, setOrders, openOrderForm, t]); + }, [allOrders, t]); const { results: paginatedOrders, goTo, currentPage } = usePagination(tableRows, defaultPageSize); @@ -263,25 +269,28 @@ const OrderDetailsTable: React.FC = ({ title, patientUuid, sh }, }); - if (isLoading) { - return ; - } - - if (error) { - return ; - } + const orderTypesToDisplay = useMemo( + () => [ + { + display: t('allOrders', 'All orders'), + uuid: null, + }, + ...(orderTypes?.map((orderType) => ({ + display: orderType.display, + uuid: orderType.uuid, + })) ?? []), + ], + [orderTypes, t], + ); return ( <> - {orderTypes && orderTypes?.length > 0 && ( +
x.uuid === selectedOrderTypeUuid)} + items={orderTypesToDisplay} itemToString={(orderType: OrderType) => (orderType ? capitalize(orderType.display) : '')} + label={t('allOrders', 'All orders')} onChange={(e: { selectedItem: Order }) => { if (e.selectedItem.display === 'All') { setSelectedOrderTypeUuid(null); @@ -289,205 +298,212 @@ const OrderDetailsTable: React.FC = ({ title, patientUuid, sh } setSelectedOrderTypeUuid(e.selectedItem.uuid); }} + selectedItem={orderTypes?.find((x) => x.uuid === selectedOrderTypeUuid)} + titleText={t('selectOrderType', 'Select order type')} + type="inline" /> - )} - {!tableRows.length ? ( - - ) : ( -
- - {isValidating ? ( - - - - ) : null} -
- {showPrintButton && ( - - )} - {showAddButton && ( - - )} -
-
-
- - - {({ - getExpandedRowProps, - getExpandHeaderProps, - getHeaderProps, - getRowProps, - getTableContainerProps, - getTableProps, - headers, - rows, - }) => ( - - - - - - {headers.map((header: { header: string }) => ( - {header.header} - ))} - - - - {rows.map( - (row: { - id: number; - cells: Array<{ - id: number; - info: { header: string }; - value: ReactNode | { props: { orderItem: Order }; content: string }; - }>; - }) => ( - - - {row.cells.map((cell) => ( - - - - ))} - - + + {(() => { + if (isLoading) { + return ; + } + + if (error) { + return ; + } + + if (orderTypes && orderTypes?.length > 0) { + return ( + <> + {!tableRows.length ? ( + // FIXME: The displayText translation is not working as expected + + ) : ( +
+ + {isValidating ? ( + + + + ) : null} +
+ {showPrintButton && ( + + )} + {showAddButton && ( + + )} +
+
+
+ + + {({ + getExpandedRowProps, + getExpandHeaderProps, + getHeaderProps, + getRowProps, + getTableContainerProps, + getTableProps, + headers, + rows, + }) => ( + +
+ + + + {headers.map((header: { header: string }) => ( + + {header.header} + + ))} + + + + + {rows.map((row: DataTableRow) => { + const matchingOrder = allOrders?.find((order) => order.uuid === row.id); + + return ( + + + {row.cells.map((cell) => ( + + {cell.value['content'] ?? cell.value} + + ))} + + openOrderForm(matchingOrder)} + orderItem={matchingOrder} + setOrderItems={setOrders} + responsiveSize={responsiveSize} + /> + + + {row.isExpanded ? ( + + <> + {(() => { + if (matchingOrder?.type === 'drugorder') { + return ; + } else if (matchingOrder?.type === 'testorder') { + return ; + } else { + return ( + + {t('unknownOrderType', 'Unknown order type')} + + ); + } + })()} + + + ) : ( + + )} + + ); })} - > - - - - ), + +
+
)} - - - +
+ {!isPrinting && ( +
+ goTo(page)} + /> +
+ )} +
+
)} - - {!isPrinting && ( - goTo(page)} - /> - )} -
- - )} + + ); + } + })()} ); }; -function FormatCellDisplay({ rowDisplay }: { readonly rowDisplay: string | ReactElement }) { - return typeof rowDisplay === 'string' && rowDisplay.length > 20 ? ( - - <>{rowDisplay.substring(0, 20).concat('...')} - - ) : ( - <>{rowDisplay} - ); -} - -function ExpandedRowView({ - row, -}: { - readonly row: { cells: Array<{ info: { header: string }; value: ReactNode | { props: { orderItem: Order } } }> }; -}) { - const { t } = useTranslation(); - let orderActions = row.cells.find((cell) => cell.info.header === 'actions'); - let orderItem = - typeof orderActions.value === 'object' && Object.hasOwn(orderActions.value, 'props') - ? orderActions.value?.['props']?.orderItem - : undefined; - - if (orderItem.type == 'drugorder') { - return ; - } else if (orderItem.type == 'testorder') { - return ; - } else { - return ( -
-

{t('unknownOrderType', 'Unknown order type')}

-
- ); - } -} - function OrderBasketItemActions({ orderItem, items, setOrderItems, openOrderBasket, openOrderForm, -}: { - orderItem: Order; - items: Array; - setOrderItems: (orderType: 'labs' | 'medications', items: Array) => void; - openOrderBasket: () => void; - openOrderForm: (additionalProps?: { order: MutableOrderBasketItem }) => void; -}) { + responsiveSize, +}: OrderBasketItemActionsProps) { const { t } = useTranslation(); - const isTablet = useLayoutType() === 'tablet'; const alreadyInBasket = items.some((x) => x.uuid === orderItem.uuid); const handleModifyClick = useCallback(() => { if (orderItem.type === 'drugorder') { - getDrugOrderByUuid(orderItem.uuid).then((res) => { - let medicationOrder = res.data; - const medicationItem = buildMedicationOrder(medicationOrder, 'REVISE'); - setOrderItems(medicationsOrderBasket, [...items, medicationItem]); - openOrderForm({ order: medicationItem }); - }); + getDrugOrderByUuid(orderItem.uuid) + .then((res) => { + const medicationOrder = res.data; + const medicationItem = buildMedicationOrder(medicationOrder, 'REVISE'); + setOrderItems(medicationsOrderBasket, [...items, medicationItem]); + openOrderForm({ order: medicationItem }); + }) + .catch((e) => { + console.error('Error modifying drug order: ', e); + }); } else { const labItem = buildLabOrder(orderItem, 'REVISE'); + setOrderItems(labsOrderBasket, [...items, labItem]); openOrderForm({ order: labItem }); } }, [orderItem, openOrderForm, items, setOrderItems]); @@ -510,43 +526,45 @@ function OrderBasketItemActions({ }, [orderItem, items, setOrderItems, openOrderBasket]); return ( - - - {orderItem.type === 'testorder' && ( + + + {orderItem?.type === 'testorder' && ( + + )} + - )} - - + + ); } diff --git a/packages/esm-patient-orders-app/src/lab-results/lab-results-form.component.tsx b/packages/esm-patient-orders-app/src/lab-results/lab-results-form.component.tsx index 13f8d62129..599e1c51fb 100644 --- a/packages/esm-patient-orders-app/src/lab-results/lab-results-form.component.tsx +++ b/packages/esm-patient-orders-app/src/lab-results/lab-results-form.component.tsx @@ -202,7 +202,7 @@ const LabResultsForm: React.FC = ({ errors={errors} /> ) : ( - + )} )} diff --git a/packages/esm-patient-orders-app/src/lab-results/result-form-field.component.tsx b/packages/esm-patient-orders-app/src/lab-results/result-form-field.component.tsx index f48ab5fa1c..38c968decf 100644 --- a/packages/esm-patient-orders-app/src/lab-results/result-form-field.component.tsx +++ b/packages/esm-patient-orders-app/src/lab-results/result-form-field.component.tsx @@ -77,7 +77,7 @@ const ResultFormField: React.FC = ({ defaultValue, registe rules={{ required: true }} defaultValue={defaultValue?.value?.uuid} > - + {concept?.answers?.length && concept?.answers?.map((answer) => ( @@ -134,7 +134,7 @@ const ResultFormField: React.FC = ({ defaultValue, registe autoFocus={index === 0} defaultValue={getSavedMemberValue(member.uuid, member.datatype.display)} > - + {member?.answers?.map((answer) => ( diff --git a/packages/esm-patient-orders-app/src/order-basket/order-basket.scss b/packages/esm-patient-orders-app/src/order-basket/order-basket.scss index 98a01005c5..0f63df3d07 100644 --- a/packages/esm-patient-orders-app/src/order-basket/order-basket.scss +++ b/packages/esm-patient-orders-app/src/order-basket/order-basket.scss @@ -31,12 +31,20 @@ padding: 0; } -.bottomButton { +.actionButton { height: layout.$spacing-10; display: flex; align-content: flex-start; align-items: baseline; min-width: 50%; + + :global(.cds--inline-loading) { + min-height: layout.$spacing-05; + } + + :global(.cds--inline-loading__text) { + font-size: unset; + } } .inlineNotification, diff --git a/packages/esm-patient-orders-app/src/order-basket/order-basket.workspace.tsx b/packages/esm-patient-orders-app/src/order-basket/order-basket.workspace.tsx index 5ea451fd38..2f65c41d8b 100644 --- a/packages/esm-patient-orders-app/src/order-basket/order-basket.workspace.tsx +++ b/packages/esm-patient-orders-app/src/order-basket/order-basket.workspace.tsx @@ -1,7 +1,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import classNames from 'classnames'; import { type TFunction, useTranslation } from 'react-i18next'; -import { ActionableNotification, Button, ButtonSet, InlineNotification } from '@carbon/react'; +import { ActionableNotification, Button, ButtonSet, InlineLoading, InlineNotification } from '@carbon/react'; import { ExtensionSlot, showModal, showSnackbar, useConfig, useLayoutType, useSession } from '@openmrs/esm-framework'; import { type DefaultPatientWorkspaceProps, @@ -141,11 +141,11 @@ const OrderBasket: React.FC = ({ /> ))} - diff --git a/packages/esm-patient-orders-app/src/orders-summary/orders-summary.component.tsx b/packages/esm-patient-orders-app/src/orders-summary/orders-summary.component.tsx index c928e4ed5a..faf9c2e381 100644 --- a/packages/esm-patient-orders-app/src/orders-summary/orders-summary.component.tsx +++ b/packages/esm-patient-orders-app/src/orders-summary/orders-summary.component.tsx @@ -12,12 +12,7 @@ const OrdersSummary: React.FC = ({ patientUuid }) => { return (
- +
); }; diff --git a/packages/esm-patient-orders-app/translations/en.json b/packages/esm-patient-orders-app/translations/en.json index db8f65ce78..74cfcaf992 100644 --- a/packages/esm-patient-orders-app/translations/en.json +++ b/packages/esm-patient-orders-app/translations/en.json @@ -1,15 +1,16 @@ { - "actionsMenu": "Actions Menu", + "actionsMenu": "Actions menu", "activeVisitRequired": "An active visit is required to make orders", "add": "Add", - "addResults": "Add Results", - "all": "All", + "addResults": "Add results", + "allOrders": "All orders", "cancel": "Cancel", "cancellationDate": "Cancellation date", "cancellationDateRequired": "Cancellation date is required", "cancelOrder": "Cancel order", + "chooseAnOption": "Choose an option", "dateCannotBeBeforeToday": "Date cannot be before today", - "dateOfOrder": "Date of Order", + "dateOfOrder": "Date of order", "discard": "Discard", "discontinued": "Discontinued", "dose": "Dose", @@ -22,7 +23,7 @@ "indication": "Indication", "launchOrderBasket": "Launch order basket", "loading": "Loading", - "loadingInitialValues": "Loading Initial Values", + "loadingInitialValues": "Loading initial values", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", @@ -30,21 +31,20 @@ "modifyOrder": "Modify order", "normalRange": "Normal range", "onDate": "on", - "option": "Choose an Option", "order": "Order", "orderBasket": "Order basket", - "orderBasketWorkspaceTitle": "Order Basket", + "orderBasketWorkspaceTitle": "Order basket", "orderCancellation": "Order cancellation", "orderCancelled": "Order cancelled", "orderCompleted": "Placed orders", "orderDetails": "Order details", "ordered": "Placed order for", - "orderedBy": "Ordered By", + "orderedBy": "Ordered by", "ordererInformation": "Orderer information", "orderNumber": "Order number", "orders": "Orders", "Orders": "Orders", - "orderType": "Order Type", + "orderType": "Order type", "pleaseFillRequiredFields": "Please fill all the required fields", "print": "Print", "printedBy": "Printed by", @@ -66,7 +66,7 @@ "status": "Status", "successfullyCancelledOrder": "Order {{orderNumber}} has been cancelled successfully", "successfullySavedLabResults": "Lab results for {{orderNumber}} have been successfully updated", - "Test Order_few": "Test Orders", + "Test Order_few": "Test orders", "testType": "Test type", "tryReopeningTheWorkspaceAgain": "Please try launching the workspace again", "unknownOrderType": "Unknown order type", diff --git a/yarn.lock b/yarn.lock index 5b4ef01e07..81e0ee63ab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4088,9 +4088,9 @@ __metadata: languageName: node linkType: hard -"@openmrs/esm-api@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-api@npm:5.7.3-pre.2161" +"@openmrs/esm-api@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-api@npm:5.7.3-pre.2185" dependencies: "@types/fhir": "npm:0.0.31" lodash-es: "npm:^4.17.21" @@ -4099,17 +4099,17 @@ __metadata: "@openmrs/esm-error-handling": 5.x "@openmrs/esm-navigation": 5.x "@openmrs/esm-offline": 5.x - checksum: 10/d6603f657df643dc39e359223d750574c7863ad5226f0c4adb02df2eb22fa20949c0e996b94957857ce406a9c51d09aecd403ebcde66a4b6bd5b914a8b091693 + checksum: 10/fb3414d309ede6573d2a8f9b843ef7e893296f9525e9c81b25023f2cf9a4778e9899aa859dc9797ba4eee78f674e825fef5806aea9c978f1d721558754572dea languageName: node linkType: hard -"@openmrs/esm-app-shell@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-app-shell@npm:5.7.3-pre.2161" +"@openmrs/esm-app-shell@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-app-shell@npm:5.7.3-pre.2185" dependencies: "@carbon/react": "npm:~1.37.0" - "@openmrs/esm-framework": "npm:5.7.3-pre.2161" - "@openmrs/esm-styleguide": "npm:5.7.3-pre.2161" + "@openmrs/esm-framework": "npm:5.7.3-pre.2185" + "@openmrs/esm-styleguide": "npm:5.7.3-pre.2185" dayjs: "npm:^1.10.4" dexie: "npm:^3.0.3" html-webpack-plugin: "npm:^5.5.0" @@ -4134,57 +4134,57 @@ __metadata: workbox-strategies: "npm:^6.1.5" workbox-webpack-plugin: "npm:^6.1.5" workbox-window: "npm:^6.1.5" - checksum: 10/07d1408ada089eb9a814a02958305caf72559339d002f6aad100d68888b2835b7ee6605cc30baf59c38558c6af09b9ee9299e331316a083e7238aabca3113fa6 + checksum: 10/ee107e3f37395af7bd00a88b95e2f80b3c575f117016e56dd730f0b9e6c1cdec08f64a400544598de2da10ef1aa638d080c0a9fa3b728ae0107701d164b90c5d languageName: node linkType: hard -"@openmrs/esm-config@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-config@npm:5.7.3-pre.2161" +"@openmrs/esm-config@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-config@npm:5.7.3-pre.2185" dependencies: ramda: "npm:^0.26.1" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x single-spa: 5.x - checksum: 10/f650f6540cf33061d573fbc48c17317f272d768244f6416ecfbea1b27e739b4ec60d6b40196b4916a8d909092eb9281a3a9ca9eca2f4928d00c7c18aeeba792a + checksum: 10/c6da9c544c1bb49a0f5b32d3d1cdc73f1570fa5e655e8495c201994f5cd742c269b0efbc4d7f89f9878af6571abc9fc8059aacbfcf946cc0c7134ddcc5f776da languageName: node linkType: hard -"@openmrs/esm-context@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-context@npm:5.7.3-pre.2161" +"@openmrs/esm-context@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-context@npm:5.7.3-pre.2185" dependencies: immer: "npm:^10.0.4" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x - checksum: 10/2da63321c0820fe6509d53bcaae00320095276f1fca653919a758719ad8cf352979bbef70d2e3dd8128e95091c9672ef1acfe0ef47b548443fb7dc793af550ef + checksum: 10/1db038e415ee71e7927e8bbead210605d0ebd1e5340cc7eee10ccececa6fb5fe196c4577a3f7be14ea42811df9781c62f87f997a5760144dc7fd2b7ddf25924b languageName: node linkType: hard -"@openmrs/esm-dynamic-loading@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-dynamic-loading@npm:5.7.3-pre.2161" +"@openmrs/esm-dynamic-loading@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-dynamic-loading@npm:5.7.3-pre.2185" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-translations": 5.x - checksum: 10/7eb1317d5dda0bf5211cb144f298a41113536aaa22b23bfe7f19c7083a771a64a4e35dfacf17e6720e4e692c17dddf6829977c224ee4b374b96beacd917c4b58 + checksum: 10/531ba8bd7b8fe44215abf32a5042c11e94913f4a3d439dae9b8107ad4598b8c0a376ee5422775a279a7ef36258a9b0558263920f0093916a385adb6116db6e04 languageName: node linkType: hard -"@openmrs/esm-error-handling@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-error-handling@npm:5.7.3-pre.2161" +"@openmrs/esm-error-handling@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-error-handling@npm:5.7.3-pre.2185" peerDependencies: "@openmrs/esm-globals": 5.x - checksum: 10/47d9266fe71e09cc1140bf064223940edf730a7c7e87a9434cd8fdefdd7375db49e687f24374020fab367b89773b703e4ff24376035b872f4d3001959675a3af + checksum: 10/8adc5b5f594db83f277aacab43044bde8464001cd2f6abe6de0b2405a849264341c7d0dd742d37e0ea8ff5fb45e54efc1241459a6fa7aa6114b28399e2dcdda5 languageName: node linkType: hard -"@openmrs/esm-extensions@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-extensions@npm:5.7.3-pre.2161" +"@openmrs/esm-extensions@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-extensions@npm:5.7.3-pre.2185" dependencies: lodash-es: "npm:^4.17.21" peerDependencies: @@ -4194,20 +4194,20 @@ __metadata: "@openmrs/esm-state": 5.x "@openmrs/esm-utils": 5.x single-spa: 5.x - checksum: 10/78e8b33d758bf29a3406d3eec3d78ca8f408d50331ac8fba9ef3e5a150dc713eda16c8aa51b58be5c25b65c063866f88c4da8ea8f617e7ba59c34e59acad6d51 + checksum: 10/c6eb3e0af5af8a914f7f3ab3c657d08b1a959d2add0bfb32fea9818c9da4021f9338c94491a64800f11153f4726aee2ea5cbe2d34b01a625c413ca4b72e44892 languageName: node linkType: hard -"@openmrs/esm-feature-flags@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-feature-flags@npm:5.7.3-pre.2161" +"@openmrs/esm-feature-flags@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-feature-flags@npm:5.7.3-pre.2185" dependencies: ramda: "npm:^0.26.1" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x single-spa: 5.x - checksum: 10/5daea49544ebced760fa4aed1f6f24431eeddac97293cd4b277f3287368fb53434fcb23fcc81bc08d16a52188f52b2b12d89b52879352b819f76c5a04ac7efd4 + checksum: 10/408c350f4753f3424027f32d28324a705e2eb4016cfb7bc2bc6c59558f5d69d2bb71f0b0f9e1324b5637109798318e38e465f6154ef119a379465fd84af2f192 languageName: node linkType: hard @@ -4301,26 +4301,26 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-framework@npm:5.7.3-pre.2161, @openmrs/esm-framework@npm:next": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-framework@npm:5.7.3-pre.2161" - dependencies: - "@openmrs/esm-api": "npm:5.7.3-pre.2161" - "@openmrs/esm-config": "npm:5.7.3-pre.2161" - "@openmrs/esm-context": "npm:5.7.3-pre.2161" - "@openmrs/esm-dynamic-loading": "npm:5.7.3-pre.2161" - "@openmrs/esm-error-handling": "npm:5.7.3-pre.2161" - "@openmrs/esm-extensions": "npm:5.7.3-pre.2161" - "@openmrs/esm-feature-flags": "npm:5.7.3-pre.2161" - "@openmrs/esm-globals": "npm:5.7.3-pre.2161" - "@openmrs/esm-navigation": "npm:5.7.3-pre.2161" - "@openmrs/esm-offline": "npm:5.7.3-pre.2161" - "@openmrs/esm-react-utils": "npm:5.7.3-pre.2161" - "@openmrs/esm-routes": "npm:5.7.3-pre.2161" - "@openmrs/esm-state": "npm:5.7.3-pre.2161" - "@openmrs/esm-styleguide": "npm:5.7.3-pre.2161" - "@openmrs/esm-translations": "npm:5.7.3-pre.2161" - "@openmrs/esm-utils": "npm:5.7.3-pre.2161" +"@openmrs/esm-framework@npm:5.7.3-pre.2185, @openmrs/esm-framework@npm:next": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-framework@npm:5.7.3-pre.2185" + dependencies: + "@openmrs/esm-api": "npm:5.7.3-pre.2185" + "@openmrs/esm-config": "npm:5.7.3-pre.2185" + "@openmrs/esm-context": "npm:5.7.3-pre.2185" + "@openmrs/esm-dynamic-loading": "npm:5.7.3-pre.2185" + "@openmrs/esm-error-handling": "npm:5.7.3-pre.2185" + "@openmrs/esm-extensions": "npm:5.7.3-pre.2185" + "@openmrs/esm-feature-flags": "npm:5.7.3-pre.2185" + "@openmrs/esm-globals": "npm:5.7.3-pre.2185" + "@openmrs/esm-navigation": "npm:5.7.3-pre.2185" + "@openmrs/esm-offline": "npm:5.7.3-pre.2185" + "@openmrs/esm-react-utils": "npm:5.7.3-pre.2185" + "@openmrs/esm-routes": "npm:5.7.3-pre.2185" + "@openmrs/esm-state": "npm:5.7.3-pre.2185" + "@openmrs/esm-styleguide": "npm:5.7.3-pre.2185" + "@openmrs/esm-translations": "npm:5.7.3-pre.2185" + "@openmrs/esm-utils": "npm:5.7.3-pre.2185" dayjs: "npm:^1.10.7" peerDependencies: dayjs: 1.x @@ -4331,7 +4331,7 @@ __metadata: rxjs: 6.x single-spa: 5.x swr: 2.x - checksum: 10/2f2d54477e6b7468ff0d574b036ec942f2f70336c2d32b9f0395b77d885dace1e6f7ab2bf17f19abfca8e57d77d5eaa16f6ea2e713c172692401f2378cd65f0a + checksum: 10/c80ac89fdb07de3ae2c854beb4eff07825325aecdef9ddf62bed97b74565ace8ffd7e949094a7263f343367805fa29bebf7930fdd4008e75ebfa881efbe238df languageName: node linkType: hard @@ -4357,31 +4357,31 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-globals@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-globals@npm:5.7.3-pre.2161" +"@openmrs/esm-globals@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-globals@npm:5.7.3-pre.2185" dependencies: "@types/fhir": "npm:0.0.31" peerDependencies: single-spa: 5.x - checksum: 10/f9f8bcf9aff7aaabb417859a3bc804741b96c15c2477508f777e21fc1b12f020299ff37b1adfd60f84936252fec84192703da59bd58072e32bc493e3a81555c7 + checksum: 10/37678fd5edafb097e27061ba5a8ebd09aea500c826fcc1915212cd2cece5a172d82be6fcec3b82acd0bb009f7efa446e2295fa208fda65ca2193b2ccd0dd3037 languageName: node linkType: hard -"@openmrs/esm-navigation@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-navigation@npm:5.7.3-pre.2161" +"@openmrs/esm-navigation@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-navigation@npm:5.7.3-pre.2185" dependencies: path-to-regexp: "npm:6.1.0" peerDependencies: "@openmrs/esm-state": 5.x - checksum: 10/23b1b369bf0a93679bba35066c034d047e941261d1ab6e1e40632c9280c96553a5615c2131aa224d543d49b5d9b00de842f44fa3e00037949a110736f780ef98 + checksum: 10/d78e18a4d7baf904b3bd813306999e952ca5d84a618452320975882e31f0765fd3d2e627ef7c3dceb97e5825dff97d6c51ddba7645d2d08688121c8580515899 languageName: node linkType: hard -"@openmrs/esm-offline@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-offline@npm:5.7.3-pre.2161" +"@openmrs/esm-offline@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-offline@npm:5.7.3-pre.2185" dependencies: dexie: "npm:^3.0.3" lodash-es: "npm:^4.17.21" @@ -4392,7 +4392,7 @@ __metadata: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x rxjs: 6.x - checksum: 10/5997dee788f93594e668476527c05621085b491471313fe5366887760536836a6e08526312d4ded28be29e820cbbd3eea7bac246892dc86f6f81c5d540eb02ed + checksum: 10/fad858ef5f168ad7c7737f158038acffd907f4a6fa2e1ad881ac354ca46ed107f1b18e410555d1852469efe5ab2b7e52517bf1ff99af939f69f95bedf9f730be languageName: node linkType: hard @@ -4785,9 +4785,9 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-react-utils@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-react-utils@npm:5.7.3-pre.2161" +"@openmrs/esm-react-utils@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-react-utils@npm:5.7.3-pre.2185" dependencies: lodash-es: "npm:^4.17.21" single-spa-react: "npm:^6.0.0" @@ -4808,13 +4808,13 @@ __metadata: react-i18next: 11.x rxjs: 6.x swr: 2.x - checksum: 10/b85dc63408008b2e763b0208f8e164a7e0488e32d3a5d403ab54cd9dba512a1a9e0b412bea5d3c87486bf668cdae987e27a16439356692ec43fa9f20639b62c0 + checksum: 10/ca47f3f7161c32a4e0040796579849137b59339bc3bc28a6bfe7518fb871e339986251db5580f4b898b18859aca65fd4991a20a1d7dc737f20bc43272f0c8dd2 languageName: node linkType: hard -"@openmrs/esm-routes@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-routes@npm:5.7.3-pre.2161" +"@openmrs/esm-routes@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-routes@npm:5.7.3-pre.2185" peerDependencies: "@openmrs/esm-config": 5.x "@openmrs/esm-dynamic-loading": 5.x @@ -4823,24 +4823,24 @@ __metadata: "@openmrs/esm-globals": 5.x "@openmrs/esm-utils": 5.x single-spa: 6.x - checksum: 10/66bf92782abecf3a73366754d856fa40c2de06b480191a8c5d795d81943eca2cbb5fa923440348997fe039c43d94650032e79dbd9102ae22df6d9636207fcc91 + checksum: 10/4ba26af5f9ad8d707f0c94fb61cd80beb3eba78ca9496663d704cbde759266c4037da9d7db80acab05c97175d82fc82b68241009fc8d4313e4965b695cb09581 languageName: node linkType: hard -"@openmrs/esm-state@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-state@npm:5.7.3-pre.2161" +"@openmrs/esm-state@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-state@npm:5.7.3-pre.2185" dependencies: zustand: "npm:^4.3.6" peerDependencies: "@openmrs/esm-globals": 5.x - checksum: 10/61badf5b7344634cfe5fd3cdd504cde34d0441c634d380d6ce2b651f5a7cacd5929de26cabd08c06057f5823fbca8c844ebdeec8be3d2295c43f0471d00d9b05 + checksum: 10/8ad3d5fd7d869b54ab88419e96bce294987d7148b5b8e9e6676deb7e75b81ad808407193a118479a78d805288f2cd0608bf5a1dba7d4e4a2d653b96b46bb31b7 languageName: node linkType: hard -"@openmrs/esm-styleguide@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-styleguide@npm:5.7.3-pre.2161" +"@openmrs/esm-styleguide@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-styleguide@npm:5.7.3-pre.2185" dependencies: "@carbon/charts": "npm:^1.12.0" "@carbon/react": "npm:~1.37.0" @@ -4863,24 +4863,24 @@ __metadata: react: 18.x react-dom: 18.x rxjs: 6.x - checksum: 10/bb04abe01ba726064bd7435fd31c15bf208c4bdb2191afcf35e427af654287e56b5f472ab2117a9d849af5b8b178c68af5085e8df8091edb4e5a79283e6a41c6 + checksum: 10/e3e1bc7ad38db63b7699cc94e5723780b7a5ededf2c68aece40a4c242b9eea214947b40aaa481ba502b9343a89a63ead6b359e77be7af89d7c0aad252e214a09 languageName: node linkType: hard -"@openmrs/esm-translations@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-translations@npm:5.7.3-pre.2161" +"@openmrs/esm-translations@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-translations@npm:5.7.3-pre.2185" dependencies: i18next: "npm:21.10.0" peerDependencies: i18next: 21.x - checksum: 10/4458cf7427925756f9165219d34dca3ebc9699857ef933517fe0ff2ab870416ff74e8ee6981b12a4e1700767dc8b1aa84e3724672c64c4f5bb0871392fccaf59 + checksum: 10/88fdd064e58755957a8970ea6d4cf37b97c0ddfa4d5f1f2dfd1c1b0bc24eedd5798578634ea8c53edd3fb6b3e1692ea4a5c9a59a643dfa6914e3ac6cd1d26b0b languageName: node linkType: hard -"@openmrs/esm-utils@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/esm-utils@npm:5.7.3-pre.2161" +"@openmrs/esm-utils@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/esm-utils@npm:5.7.3-pre.2185" dependencies: "@formatjs/intl-durationformat": "npm:^0.2.4" "@internationalized/date": "npm:^3.5.4" @@ -4890,7 +4890,7 @@ __metadata: dayjs: 1.x i18next: 21.x rxjs: 6.x - checksum: 10/755f4195bde9cf2dccd9570a6e450236db6e34ad7122db101deec1b08eaf7083809f342de4e8e3f3d3f7c5d24269383e896d52e2412ae539390bbb78e0a5624e + checksum: 10/8879ab5ec12effdfbf844f77d3c33d3b9c649fd32c15c020ef0d06d743f702ac0a91ad751140ba142dc5b6ebd3c533aba05c31c57849b315f78c6faa57347377 languageName: node linkType: hard @@ -4969,9 +4969,9 @@ __metadata: languageName: node linkType: hard -"@openmrs/webpack-config@npm:5.7.3-pre.2161": - version: 5.7.3-pre.2161 - resolution: "@openmrs/webpack-config@npm:5.7.3-pre.2161" +"@openmrs/webpack-config@npm:5.7.3-pre.2185": + version: 5.7.3-pre.2185 + resolution: "@openmrs/webpack-config@npm:5.7.3-pre.2185" dependencies: "@swc/core": "npm:^1.3.58" clean-webpack-plugin: "npm:^4.0.0" @@ -4989,7 +4989,7 @@ __metadata: webpack-stats-plugin: "npm:^1.0.3" peerDependencies: webpack: 5.x - checksum: 10/a812b16104c65cae4d3ca8e1c2db35fe36bfd64b3dd7e81641e68cf776eb38c27f9f376f5ffd081c56e7e5a2c3769d43d070ce4a66b1af49981049fde0dbc66b + checksum: 10/e3a8bc3dfdc2c34a9f8c552f8e5847ee20180482588c03ec2f3c6cb85adc1d7b73452db0f738167bc5026b0a74704ac08918b257831a0f26335c03ffdc7fe92b languageName: node linkType: hard @@ -18247,11 +18247,11 @@ __metadata: linkType: hard "openmrs@npm:next": - version: 5.7.3-pre.2161 - resolution: "openmrs@npm:5.7.3-pre.2161" + version: 5.7.3-pre.2185 + resolution: "openmrs@npm:5.7.3-pre.2185" dependencies: - "@openmrs/esm-app-shell": "npm:5.7.3-pre.2161" - "@openmrs/webpack-config": "npm:5.7.3-pre.2161" + "@openmrs/esm-app-shell": "npm:5.7.3-pre.2185" + "@openmrs/webpack-config": "npm:5.7.3-pre.2185" "@pnpm/npm-conf": "npm:^2.1.0" "@swc/core": "npm:^1.3.58" autoprefixer: "npm:^10.4.2" @@ -18290,7 +18290,7 @@ __metadata: yargs: "npm:^17.6.2" bin: openmrs: ./dist/cli.js - checksum: 10/a2ffdf9d33f126308bab7dac55e4a62454471e1ddc561df9fe77b64c4d753992170188c17a5b202c130e9b77c0effc9e4df438a329e1991b341ed0df9358a74e + checksum: 10/c285644eba47b8d4d5fa12e5ab53993cd153425a4d6c2956f982f3095ee19b5279608257239937c3b76aca9e7057a8cea074e80da552464eecef3e5186690497 languageName: node linkType: hard