From 3186a624f239c5eb4351696e2464ad461323296e Mon Sep 17 00:00:00 2001 From: Ian <52504170+ibacher@users.noreply.github.com> Date: Wed, 11 Dec 2024 14:06:24 -0500 Subject: [PATCH 01/15] (fix) Attempt to fix e2e test errors (#2149) --- e2e/commands/visit-operations.ts | 12 ++++++------ e2e/specs/biometrics.spec.ts | 2 +- e2e/specs/clinical-forms.spec.ts | 2 +- e2e/specs/drug-orders.spec.ts | 2 +- e2e/specs/lab-orders.spec.ts | 2 +- e2e/specs/results-viewer.spec.ts | 2 +- e2e/specs/visit-note.spec.ts | 2 +- e2e/specs/vitals.spec.ts | 2 +- .../esm-patient-common-lib/src/orders/postOrders.ts | 10 ++++++++-- 9 files changed, 21 insertions(+), 15 deletions(-) diff --git a/e2e/commands/visit-operations.ts b/e2e/commands/visit-operations.ts index 752a07137f..b28b227893 100644 --- a/e2e/commands/visit-operations.ts +++ b/e2e/commands/visit-operations.ts @@ -13,16 +13,16 @@ export const startVisit = async (api: APIRequestContext, patientId: string): Pro }, }); - await expect(visitRes.ok()).toBeTruthy(); + expect(visitRes.ok()).toBeTruthy(); return await visitRes.json(); }; -export const endVisit = async (api: APIRequestContext, uuid: string) => { - const visitRes = await api.post(`visit/${uuid}`, { +export const endVisit = async (api: APIRequestContext, visit: Visit) => { + const visitRes = await api.post(`visit/${visit.uuid}`, { data: { - location: process.env.E2E_LOGIN_DEFAULT_LOCATION_UUID, - startDatetime: dayjs().subtract(1, 'D').format('YYYY-MM-DDTHH:mm:ss.SSSZZ'), - visitType: '7b0f5697-27e3-40c4-8bae-f4049abfb4ed', + location: visit.location.uuid, + startDatetime: visit.startDatetime, + visitType: visit.visitType.uuid, stopDatetime: dayjs().format('YYYY-MM-DDTHH:mm:ss.SSSZZ'), }, }); diff --git a/e2e/specs/biometrics.spec.ts b/e2e/specs/biometrics.spec.ts index 9c76114378..44f3c484e3 100644 --- a/e2e/specs/biometrics.spec.ts +++ b/e2e/specs/biometrics.spec.ts @@ -67,6 +67,6 @@ test('Record biometrics', async ({ page }) => { }); test.afterEach(async ({ api }) => { - await endVisit(api, visit.uuid); + await endVisit(api, visit); await deletePatient(api, patient.uuid); }); diff --git a/e2e/specs/clinical-forms.spec.ts b/e2e/specs/clinical-forms.spec.ts index a8941ff10c..748af46dd4 100644 --- a/e2e/specs/clinical-forms.spec.ts +++ b/e2e/specs/clinical-forms.spec.ts @@ -273,6 +273,6 @@ test('Form state is retained when minimizing a form in the workspace', async ({ }); test.afterEach(async ({ api }) => { - await endVisit(api, visit.uuid); + await endVisit(api, visit); await deletePatient(api, patient.uuid); }); diff --git a/e2e/specs/drug-orders.spec.ts b/e2e/specs/drug-orders.spec.ts index 8f9b3518de..f5e1ce18a7 100644 --- a/e2e/specs/drug-orders.spec.ts +++ b/e2e/specs/drug-orders.spec.ts @@ -243,6 +243,6 @@ test('Record, edit and discontinue a drug order', async ({ page }) => { }); test.afterEach(async ({ api }) => { - await endVisit(api, visit.uuid); + await endVisit(api, visit); await deletePatient(api, patient.uuid); }); diff --git a/e2e/specs/lab-orders.spec.ts b/e2e/specs/lab-orders.spec.ts index 09babe1ec4..fbff4ac7a8 100644 --- a/e2e/specs/lab-orders.spec.ts +++ b/e2e/specs/lab-orders.spec.ts @@ -156,6 +156,6 @@ test.describe.serial('Running laboratory order tests sequentially', () => { }); test.afterAll(async ({ api }) => { - await endVisit(api, visit.uuid); + await endVisit(api, visit); await deletePatient(api, patient.uuid); }); diff --git a/e2e/specs/results-viewer.spec.ts b/e2e/specs/results-viewer.spec.ts index 4afba862c4..67f91646ef 100644 --- a/e2e/specs/results-viewer.spec.ts +++ b/e2e/specs/results-viewer.spec.ts @@ -364,6 +364,6 @@ test('Record and edit test results', async ({ page }) => { }); test.afterEach(async ({ api }) => { - await endVisit(api, visit.uuid); + await endVisit(api, visit); await deletePatient(api, patient.uuid); }); diff --git a/e2e/specs/visit-note.spec.ts b/e2e/specs/visit-note.spec.ts index 1ab5a7d24a..fd557d50c4 100644 --- a/e2e/specs/visit-note.spec.ts +++ b/e2e/specs/visit-note.spec.ts @@ -88,6 +88,6 @@ test('Add and delete a visit note', async ({ page }) => { }); test.afterEach(async ({ api }) => { - await endVisit(api, visit.uuid); + await endVisit(api, visit); await deletePatient(api, patient.uuid); }); diff --git a/e2e/specs/vitals.spec.ts b/e2e/specs/vitals.spec.ts index d67f633332..1072c40c1f 100644 --- a/e2e/specs/vitals.spec.ts +++ b/e2e/specs/vitals.spec.ts @@ -80,6 +80,6 @@ test('Record vital signs', async ({ page }) => { }); test.afterEach(async ({ api }) => { - await endVisit(api, visit.uuid); + await endVisit(api, visit); await deletePatient(api, patient.uuid); }); diff --git a/packages/esm-patient-common-lib/src/orders/postOrders.ts b/packages/esm-patient-common-lib/src/orders/postOrders.ts index 83b01b8286..404e54bf3e 100644 --- a/packages/esm-patient-common-lib/src/orders/postOrders.ts +++ b/packages/esm-patient-common-lib/src/orders/postOrders.ts @@ -71,8 +71,14 @@ export async function postOrders(encounterUuid: string, abortController: AbortCo const orders = patientItems[grouping]; for (let i = 0; i < orders.length; i++) { const order = orders[i]; - const dto = postDataPrepFunctions[grouping](order, patientUuid, encounterUuid); - await postOrder(dto, abortController).catch((error) => { + const dataPrepFn = postDataPrepFunctions[grouping]; + + if (typeof dataPrepFn !== 'function') { + console.warn(`The postDataPrep function registered for ${grouping} orders is not a function`); + continue; + } + + await postOrder(dataPrepFn(order, patientUuid, encounterUuid), abortController).catch((error) => { erroredItems.push({ ...order, orderError: error, From d3f8d92536a224030a89f569b0f4212ee2622365 Mon Sep 17 00:00:00 2001 From: chibongho Date: Thu, 12 Dec 2024 16:56:27 -0500 Subject: [PATCH 02/15] (fix) O3-4271 fix callback registration in visit form (#2151) --- .../visit/visit-form/visit-form.component.tsx | 78 +++++++++---------- .../visit/visit-form/visit-form.resource.ts | 9 ++- .../src/visit/visit-form/visit-form.test.tsx | 10 +-- 3 files changed, 47 insertions(+), 50 deletions(-) diff --git a/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.component.tsx b/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.component.tsx index 49f83a2cf4..a8e4876bf0 100644 --- a/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.component.tsx +++ b/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.component.tsx @@ -14,6 +14,7 @@ import { } from '@carbon/react'; import { zodResolver } from '@hookform/resolvers/zod'; import { + type AssignedExtension, Extension, ExtensionSlot, formatDatetime, @@ -60,10 +61,10 @@ import VisitDateTimeField from './visit-date-time.component'; import { createVisitAttribute, deleteVisitAttribute, - type OnVisitCreatedOrUpdatedCallback, updateVisitAttribute, useConditionalVisitTypes, - useOnVisitCreatedOrUpdatedCallbacks, + useVisitFormCallbacks, + type VisitFormCallbacks, type VisitFormData, } from './visit-form.resource'; import styles from './visit-form.scss'; @@ -119,7 +120,7 @@ const StartVisitForm: React.FC = ({ const { visitAttributeTypes } = useVisitAttributeTypes(); const [extraVisitInfo, setExtraVisitInfo] = useState(null); - const [OnVisitCreatedOrUpdatedCallbacks, setOnVisitCreatedOrUpdatedCallbacks] = useOnVisitCreatedOrUpdatedCallbacks(); + const [visitFormCallbacks, setVisitFormCallbacks] = useVisitFormCallbacks(); const displayVisitStopDateTimeFields = useMemo( () => Boolean(visitToEdit?.uuid || showVisitEndDateTimeFields), [visitToEdit?.uuid, showVisitEndDateTimeFields], @@ -530,11 +531,11 @@ const StartVisitForm: React.FC = ({ }, ); - const OnVisitCreatedOrUpdatedRequests = [...OnVisitCreatedOrUpdatedCallbacks.values()].map( - (OnVisitCreatedOrUpdated) => OnVisitCreatedOrUpdated(visit, patientUuid), + const onVisitCreatedOrUpdatedRequests = [...visitFormCallbacks.values()].map((callbacks) => + callbacks.onVisitCreatedOrUpdated(visit), ); - return Promise.all([visitAttributesRequest, ...OnVisitCreatedOrUpdatedRequests]); + return Promise.all([visitAttributesRequest, ...onVisitCreatedOrUpdatedRequests]); }) .then(() => { closeWorkspace({ ignoreChanges: true }); @@ -590,7 +591,7 @@ const StartVisitForm: React.FC = ({ mutateCurrentVisit, mutateVisits, mutateInfiniteVisits, - OnVisitCreatedOrUpdatedCallbacks, + visitFormCallbacks, patientUuid, t, validateVisitStartStopDatetime, @@ -662,7 +663,7 @@ const StartVisitForm: React.FC = ({ name="visit-form-top-slot" patientUuid={patientUuid} visitFormOpenedFrom={openedFrom} - setOnVisitCreatedOrUpdatedCallbacks={setOnVisitCreatedOrUpdatedCallbacks} + setVisitFormCallbacks={setVisitFormCallbacks} /> @@ -773,7 +774,7 @@ const StartVisitForm: React.FC = ({ name="visit-form-bottom-slot" patientUuid={patientUuid} visitFormOpenedFrom={openedFrom} - setOnVisitCreatedOrUpdatedCallbacks={setOnVisitCreatedOrUpdatedCallbacks} + setVisitFormCallbacks={setVisitFormCallbacks} /> @@ -817,52 +818,47 @@ interface VisitFormExtensionSlotProps { name: string; patientUuid: string; visitFormOpenedFrom: string; - setOnVisitCreatedOrUpdatedCallbacks: React.Dispatch< - React.SetStateAction> - >; + setVisitFormCallbacks: React.Dispatch>>; } type VisitFormExtensionState = { patientUuid: string; /** - * This function allows an extension to register a callback to run after a visit has been created. - * This callback can be used to make further requests. The callback should handle its own UI notification + * This function allows an extension to register callbacks for visit form submission. + * This callbacks can be used to make further requests. The callbacks should handle its own UI notification * on success / failure, and its returned Promise MUST resolve on success and MUST reject on failure. * @param callback * @returns */ - setOnVisitCreatedOrUpdated: (callback: OnVisitCreatedOrUpdatedCallback) => void; + setVisitFormCallbacks(callbacks: VisitFormCallbacks); visitFormOpenedFrom: string; patientChartConfig: ChartConfig; }; -const VisitFormExtensionSlot: React.FC = ({ - name, - patientUuid, - visitFormOpenedFrom, - setOnVisitCreatedOrUpdatedCallbacks, -}) => { - const config = useConfig(); - - return ( - - {(extension) => { - const state: VisitFormExtensionState = { - patientUuid, - setOnVisitCreatedOrUpdated: (callback) => { - setOnVisitCreatedOrUpdatedCallbacks((old) => { - return new Map(old).set(extension.id, callback); - }); - }, - visitFormOpenedFrom, - patientChartConfig: config, - }; - return ; - }} - - ); -}; +const VisitFormExtensionSlot: React.FC = React.memo( + ({ name, patientUuid, visitFormOpenedFrom, setVisitFormCallbacks }) => { + const config = useConfig(); + + return ( + + {(extension: AssignedExtension) => { + const state: VisitFormExtensionState = { + patientUuid, + setVisitFormCallbacks: (callbacks) => { + setVisitFormCallbacks((old) => { + return new Map(old).set(extension.id, callbacks); + }); + }, + visitFormOpenedFrom, + patientChartConfig: config, + }; + return ; + }} + + ); + }, +); export default StartVisitForm; diff --git a/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.resource.ts b/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.resource.ts index bb22db8f14..832c9b550f 100644 --- a/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.resource.ts +++ b/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.resource.ts @@ -28,11 +28,12 @@ export function useConditionalVisitTypes() { return visitTypesHook(); } +export interface VisitFormCallbacks { + onVisitCreatedOrUpdated: (visit: Visit) => Promise; +} -export type OnVisitCreatedOrUpdatedCallback = (visit: Visit, patientUuid: string) => Promise; - -export function useOnVisitCreatedOrUpdatedCallbacks() { - return useState>(new Map()); +export function useVisitFormCallbacks() { + return useState>(new Map()); } export function createVisitAttribute(visitUuid: string, attributeType: string, value: string) { diff --git a/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.test.tsx b/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.test.tsx index da56aa39dc..915fbe0add 100644 --- a/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.test.tsx +++ b/packages/esm-patient-chart-app/src/visit/visit-form/visit-form.test.tsx @@ -24,7 +24,7 @@ import { createVisitAttribute, deleteVisitAttribute, updateVisitAttribute, - useOnVisitCreatedOrUpdatedCallbacks, + useVisitFormCallbacks, } from './visit-form.resource'; const visitUuid = 'test_visit_uuid'; @@ -76,9 +76,9 @@ const mockUseEmrConfiguration = jest.mocked(useEmrConfiguration); // from ./visit-form.resource const mockOnVisitCreatedOrUpdatedCallback = jest.fn(); -jest.mocked(useOnVisitCreatedOrUpdatedCallbacks).mockReturnValue([ - new Map([['test-extension-id', mockOnVisitCreatedOrUpdatedCallback]]), // OnVisitCreatedOrUpdatedCallbacks - jest.fn(), // setOnVisitCreatedOrUpdatedCallbacks +jest.mocked(useVisitFormCallbacks).mockReturnValue([ + new Map([['test-extension-id', { onVisitCreatedOrUpdated: mockOnVisitCreatedOrUpdatedCallback }]]), // visitFormCallbacks + jest.fn(), // setVisitFormCallbacks ]); const mockCreateVisitAttribute = jest.mocked(createVisitAttribute).mockResolvedValue({} as unknown as FetchResponse); const mockUpdateVisitAttribute = jest.mocked(updateVisitAttribute).mockResolvedValue({} as unknown as FetchResponse); @@ -164,7 +164,7 @@ jest.mock('./visit-form.resource', () => { const requireActual = jest.requireActual('./visit-form.resource'); return { ...requireActual, - useOnVisitCreatedOrUpdatedCallbacks: jest.fn(), + useVisitFormCallbacks: jest.fn(), createVisitAttribute: jest.fn(), updateVisitAttribute: jest.fn(), deleteVisitAttribute: jest.fn(), From d80ae6132b3980d553b56866543c723e4bc8af40 Mon Sep 17 00:00:00 2001 From: Dennis Kigen Date: Fri, 13 Dec 2024 16:15:23 +0300 Subject: [PATCH 03/15] (feat) order-basket: Improve a11y and styling of status tags (#2152) This change improves the styling of status tags in the Order basket so that they are more consistent with the [designs](https://zeroheight.com/23a080e38/p/030b9a-order-item). It also adds a11y attributes to the status labels so that they are more accessible. A desired side effect of these changes is that using these a11y attributes will make the Order basket e2e tests more robust. --- e2e/specs/lab-orders.spec.ts | 14 +++--- .../order-basket-item-tile.component.tsx | 50 +++++++++++++++++-- .../order-basket-item-tile.scss | 29 ++++++----- .../order-basket-item-tile.component.tsx | 50 +++++++++++++++++-- .../order-basket-item-tile.scss | 21 ++++---- .../orderable-concept-search.workspace.tsx | 12 ++--- .../lab-order-basket-item-tile.component.tsx | 50 +++++++++++++++++-- .../lab-order-basket-item-tile.scss | 21 ++++---- 8 files changed, 181 insertions(+), 66 deletions(-) diff --git a/e2e/specs/lab-orders.spec.ts b/e2e/specs/lab-orders.spec.ts index fbff4ac7a8..6619c59f96 100644 --- a/e2e/specs/lab-orders.spec.ts +++ b/e2e/specs/lab-orders.spec.ts @@ -50,8 +50,12 @@ test.describe.serial('Running laboratory order tests sequentially', () => { await page.getByLabel(/additional instructions/i).fill(' N/A'); }); - await test.step('Add I save the lab order form', async () => { + await test.step('And I save the lab order form', async () => { await page.getByRole('button', { name: /save order/i }).click(); + }); + + await test.step('And I click the `Sign and close` button', async () => { + await expect(page.getByRole('status', { name: /new/i })).toBeVisible(); await page.getByRole('button', { name: /sign and close/i }).click(); }); @@ -70,7 +74,6 @@ test.describe.serial('Running laboratory order tests sequentially', () => { test('Modify a lab order', async ({ page }) => { const ordersPage = new OrdersPage(page); - const orderBasket = page.locator('[data-extension-slot-name="order-basket-slot"]'); await test.step('When I visit the orders page', async () => { await ordersPage.goTo(patient.uuid); @@ -101,8 +104,8 @@ test.describe.serial('Running laboratory order tests sequentially', () => { }); await test.step('Then the order status should be changed to `Modify`', async () => { - await expect(orderBasket.getByText(/new/i)).not.toBeVisible(); - await expect(orderBasket.getByText(/modify/i)).toBeVisible(); + await expect(page.getByRole('status', { name: /new/i })).not.toBeVisible(); + await expect(page.getByRole('status', { name: /modify/i })).toBeVisible(); }); await test.step('When I click on the `Sign and close` button', async () => { @@ -116,7 +119,6 @@ test.describe.serial('Running laboratory order tests sequentially', () => { test('Discontinue a lab order', async ({ page }) => { const ordersPage = new OrdersPage(page); - const orderBasket = page.locator('[data-extension-slot-name="order-basket-slot"]'); await test.step('When I visit the orders page', async () => { await ordersPage.goTo(patient.uuid); @@ -138,7 +140,7 @@ test.describe.serial('Running laboratory order tests sequentially', () => { }); await test.step('Then the order status should be changed to `Discontinue`', async () => { - await expect(orderBasket.getByText(/discontinue/i)).toBeVisible(); + await expect(page.getByRole('status', { name: /discontinue/i })).toBeVisible(); }); await test.step('And I click on the `Sign and close` button', async () => { diff --git a/packages/esm-patient-medications-app/src/drug-order-basket-panel/order-basket-item-tile.component.tsx b/packages/esm-patient-medications-app/src/drug-order-basket-panel/order-basket-item-tile.component.tsx index ba029cb484..ef392f3aa1 100644 --- a/packages/esm-patient-medications-app/src/drug-order-basket-panel/order-basket-item-tile.component.tsx +++ b/packages/esm-patient-medications-app/src/drug-order-basket-panel/order-basket-item-tile.component.tsx @@ -126,18 +126,58 @@ function OrderActionLabel({ orderBasketItem }: { orderBasketItem: DrugOrderBaske const { t } = useTranslation(); if (orderBasketItem.isOrderIncomplete) { - return {t('orderActionIncomplete', 'Incomplete')}; + return ( + + {t('orderActionIncomplete', 'Incomplete')} + + ); } switch (orderBasketItem.action) { case 'NEW': - return {t('orderActionNew', 'New')}; + return ( + + {t('orderActionNew', 'New')} + + ); case 'RENEW': - return {t('orderActionRenew', 'Renew')}; + return ( + + {t('orderActionRenew', 'Renew')} + + ); case 'REVISE': - return {t('orderActionRevise', 'Modify')}; + return ( + + {t('orderActionRevise', 'Modify')} + + ); case 'DISCONTINUE': - return {t('orderActionDiscontinue', 'Discontinue')}; + return ( + + {t('orderActionDiscontinue', 'Discontinue')} + + ); default: return <>; } diff --git a/packages/esm-patient-medications-app/src/drug-order-basket-panel/order-basket-item-tile.scss b/packages/esm-patient-medications-app/src/drug-order-basket-panel/order-basket-item-tile.scss index 4f234bce28..6106d84264 100644 --- a/packages/esm-patient-medications-app/src/drug-order-basket-panel/order-basket-item-tile.scss +++ b/packages/esm-patient-medications-app/src/drug-order-basket-panel/order-basket-item-tile.scss @@ -1,3 +1,4 @@ +@use '@carbon/colors'; @use '@carbon/layout'; @use '@carbon/type'; @use '@openmrs/esm-styleguide/src/vars' as *; @@ -27,29 +28,27 @@ .orderActionNewLabel { @extend .label; - color: $support-02; + background-color: colors.$green-10-hover; + padding: 0 layout.$spacing-02; } -.orderActionRenewLabel { - @extend .label; - color: $support-02; +.orderActionIncompleteLabel { + @extend .orderActionNewLabel; + background-color: colors.$red-60; + color: white; } -.orderActionRevisedLabel { - @extend .label; - color: #943d00; +.orderActionRenewLabel { + @extend .orderActionNewLabel; } -.orderActionDiscontinueLabel { - @extend .label; - color: $danger; +.orderActionReviseLabel { + @extend .orderActionNewLabel; } -.orderActionIncompleteLabel { - @extend .label; - color: white; - background-color: $danger; - padding: 0 layout.$spacing-02; +.orderActionDiscontinueLabel { + @extend .orderActionNewLabel; + background-color: colors.$gray-20; } .orderErrorText { diff --git a/packages/esm-patient-orders-app/src/order-basket/general-order-type/order-basket-item-tile.component.tsx b/packages/esm-patient-orders-app/src/order-basket/general-order-type/order-basket-item-tile.component.tsx index 541bc47d1e..780ae2f350 100644 --- a/packages/esm-patient-orders-app/src/order-basket/general-order-type/order-basket-item-tile.component.tsx +++ b/packages/esm-patient-orders-app/src/order-basket/general-order-type/order-basket-item-tile.component.tsx @@ -78,18 +78,58 @@ function OrderActionLabel({ orderBasketItem }: { orderBasketItem: OrderBasketIte const { t } = useTranslation(); if (orderBasketItem.isOrderIncomplete) { - return {t('orderActionIncomplete', 'Incomplete')}; + return ( + + {t('orderActionIncomplete', 'Incomplete')} + + ); } switch (orderBasketItem.action) { case 'NEW': - return {t('orderActionNew', 'New')}; + return ( + + {t('orderActionNew', 'New')} + + ); case 'RENEW': - return {t('orderActionRenew', 'Renew')}; + return ( + + {t('orderActionRenew', 'Renew')} + + ); case 'REVISE': - return {t('orderActionRevise', 'Modify')}; + return ( + + {t('orderActionRevise', 'Modify')} + + ); case 'DISCONTINUE': - return {t('orderActionDiscontinue', 'Discontinue')}; + return ( + + {t('orderActionDiscontinue', 'Discontinue')} + + ); default: return <>; } diff --git a/packages/esm-patient-orders-app/src/order-basket/general-order-type/order-basket-item-tile.scss b/packages/esm-patient-orders-app/src/order-basket/general-order-type/order-basket-item-tile.scss index 2fc8dde661..3c20972285 100644 --- a/packages/esm-patient-orders-app/src/order-basket/general-order-type/order-basket-item-tile.scss +++ b/packages/esm-patient-orders-app/src/order-basket/general-order-type/order-basket-item-tile.scss @@ -1,3 +1,4 @@ +@use '@carbon/colors'; @use '@carbon/layout'; @use '@carbon/type'; @use '@openmrs/esm-styleguide/src/vars' as *; @@ -27,31 +28,27 @@ .orderActionNewLabel { @extend .label; - color: black; - background-color: #c4f4cc; + background-color: colors.$green-10-hover; padding: 0 layout.$spacing-02; } .orderActionIncompleteLabel { - @extend .label; + @extend .orderActionNewLabel; + background-color: colors.$red-60; color: white; - background-color: $danger; - padding: 0 layout.$spacing-02; } .orderActionRenewLabel { - @extend .label; - color: $support-02; + @extend .orderActionNewLabel; } -.orderActionRevisedLabel { - @extend .label; - color: #943d00; +.orderActionReviseLabel { + @extend .orderActionNewLabel; } .orderActionDiscontinueLabel { - @extend .label; - color: $danger; + @extend .orderActionNewLabel; + background-color: colors.$gray-20; } .orderErrorText { diff --git a/packages/esm-patient-orders-app/src/order-basket/general-order-type/orderable-concept-search/orderable-concept-search.workspace.tsx b/packages/esm-patient-orders-app/src/order-basket/general-order-type/orderable-concept-search/orderable-concept-search.workspace.tsx index 94ab945d1f..9620c18236 100644 --- a/packages/esm-patient-orders-app/src/order-basket/general-order-type/orderable-concept-search/orderable-concept-search.workspace.tsx +++ b/packages/esm-patient-orders-app/src/order-basket/general-order-type/orderable-concept-search/orderable-concept-search.workspace.tsx @@ -1,3 +1,6 @@ +import React, { type ComponentProps, useCallback, useMemo, useRef, useState } from 'react'; +import { Button, Search } from '@carbon/react'; +import { useTranslation } from 'react-i18next'; import { ArrowLeftIcon, ResponsiveWrapper, @@ -13,14 +16,11 @@ import { useOrderType, usePatientChartStore, } from '@openmrs/esm-patient-common-lib'; -import React, { type ComponentProps, useCallback, useMemo, useRef, useState } from 'react'; -import { useTranslation } from 'react-i18next'; -import styles from './orderable-concept-search.scss'; -import { Button, Search } from '@carbon/react'; -import OrderableConceptSearchResults from './search-results.component'; -import { type ConfigObject } from '../../../config-schema'; import { OrderForm } from '../general-order-form/general-order-form.component'; import { prepOrderPostData } from '../resources'; +import { type ConfigObject } from '../../../config-schema'; +import OrderableConceptSearchResults from './search-results.component'; +import styles from './orderable-concept-search.scss'; interface OrderableConceptSearchWorkspaceProps extends DefaultWorkspaceProps { order: OrderBasketItem; diff --git a/packages/esm-patient-tests-app/src/test-orders/lab-order-basket-panel/lab-order-basket-item-tile.component.tsx b/packages/esm-patient-tests-app/src/test-orders/lab-order-basket-panel/lab-order-basket-item-tile.component.tsx index 5cb0e01884..7d3fc7bdec 100644 --- a/packages/esm-patient-tests-app/src/test-orders/lab-order-basket-panel/lab-order-basket-item-tile.component.tsx +++ b/packages/esm-patient-tests-app/src/test-orders/lab-order-basket-panel/lab-order-basket-item-tile.component.tsx @@ -93,18 +93,58 @@ function OrderActionLabel({ orderBasketItem }: { orderBasketItem: TestOrderBaske const { t } = useTranslation(); if (orderBasketItem.isOrderIncomplete) { - return {t('orderActionIncomplete', 'Incomplete')}; + return ( + + {t('orderActionIncomplete', 'Incomplete')} + + ); } switch (orderBasketItem.action) { case 'NEW': - return {t('orderActionNew', 'New')}; + return ( + + {t('orderActionNew', 'New')} + + ); case 'RENEW': - return {t('orderActionRenew', 'Renew')}; + return ( + + {t('orderActionRenew', 'Renew')} + + ); case 'REVISE': - return {t('orderActionRevise', 'Modify')}; + return ( + + {t('orderActionRevise', 'Modify')} + + ); case 'DISCONTINUE': - return {t('orderActionDiscontinue', 'Discontinue')}; + return ( + + {t('orderActionDiscontinue', 'Discontinue')} + + ); default: return <>; } diff --git a/packages/esm-patient-tests-app/src/test-orders/lab-order-basket-panel/lab-order-basket-item-tile.scss b/packages/esm-patient-tests-app/src/test-orders/lab-order-basket-panel/lab-order-basket-item-tile.scss index dad71d0444..0d714cbdb0 100644 --- a/packages/esm-patient-tests-app/src/test-orders/lab-order-basket-panel/lab-order-basket-item-tile.scss +++ b/packages/esm-patient-tests-app/src/test-orders/lab-order-basket-panel/lab-order-basket-item-tile.scss @@ -1,3 +1,4 @@ +@use '@carbon/colors'; @use '@carbon/layout'; @use '@carbon/type'; @use '@openmrs/esm-styleguide/src/vars' as *; @@ -27,31 +28,27 @@ .orderActionNewLabel { @extend .label; - color: black; - background-color: #c4f4cc; + background-color: colors.$green-10-hover; padding: 0 layout.$spacing-02; } .orderActionIncompleteLabel { - @extend .label; + @extend .orderActionNewLabel; + background-color: colors.$red-60; color: white; - background-color: $danger; - padding: 0 layout.$spacing-02; } .orderActionRenewLabel { - @extend .label; - color: $support-02; + @extend .orderActionNewLabel; } -.orderActionRevisedLabel { - @extend .label; - color: #943d00; +.orderActionReviseLabel { + @extend .orderActionNewLabel; } .orderActionDiscontinueLabel { - @extend .label; - color: $danger; + @extend .orderActionNewLabel; + background-color: colors.$gray-20; } .orderErrorText { From edc522b3e6a4f35eca237390861f75c51be1193f Mon Sep 17 00:00:00 2001 From: Dennis Kigen Date: Fri, 13 Dec 2024 21:08:38 +0300 Subject: [PATCH 04/15] (chore) Scope testing-library plugin to lint tests only (#2153) This PR optimizes our ESLint configuration by only applying testing-library rules to test files. This fixes an issue where Playwright tests were being linted with Testing Library rules, which caused a lot of redundant lint errors. The specific changes are: - Moving testing-library plugin to the `overrides` section of the ESLint config for `.test.tsx` files. - Adding playwright plugin config for e2e tests - Disabling the prefer screen queries rule for e2e tests --- .eslintrc | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.eslintrc b/.eslintrc index eb5aff8d7c..ecd2d2ec05 100644 --- a/.eslintrc +++ b/.eslintrc @@ -2,14 +2,22 @@ "env": { "node": true }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:jest-dom/recommended", - "plugin:testing-library/react" - ], + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:jest-dom/recommended"], "parser": "@typescript-eslint/parser", "plugins": ["@typescript-eslint", "import", "jest-dom", "react-hooks", "testing-library"], + "overrides": [ + { + "files": ["**/*.test.tsx"], + "extends": ["plugin:testing-library/react"] + }, + { + "files": ["e2e/**/*.spec.ts"], + "extends": ["plugin:playwright/recommended"], + "rules": { + "testing-library/prefer-screen-queries": "off" + } + } + ], "rules": { "react-hooks/exhaustive-deps": "warn", "react-hooks/rules-of-hooks": "error", From e4ab50e373efccae6d0c092bd4e4c4f849064108 Mon Sep 17 00:00:00 2001 From: Vineet Sharma Date: Sat, 14 Dec 2024 04:33:45 +0530 Subject: [PATCH 05/15] (chore) Extract translations from extension, hook and workspace files (#2146) * Widen the scope of the translation extraction * Bump framework * Tweak results viewer e2e test --------- Co-authored-by: Dennis Kigen --- e2e/specs/results-viewer.spec.ts | 21 +- packages/esm-form-engine-app/package.json | 4 +- packages/esm-form-entry-app/package.json | 2 +- .../package.json | 4 +- .../esm-patient-allergies-app/package.json | 4 +- .../esm-patient-attachments-app/package.json | 4 +- packages/esm-patient-banner-app/package.json | 4 +- .../translations/en.json | 4 + packages/esm-patient-chart-app/package.json | 4 +- .../chart-review/chart-review.component.tsx | 10 +- .../chart-review/dashboard-view.component.tsx | 9 +- packages/esm-patient-common-lib/package.json | 2 +- .../esm-patient-conditions-app/package.json | 4 +- packages/esm-patient-flags-app/package.json | 4 +- packages/esm-patient-forms-app/package.json | 4 +- .../package.json | 4 +- packages/esm-patient-lists-app/package.json | 4 +- .../esm-patient-medications-app/package.json | 4 +- packages/esm-patient-notes-app/package.json | 4 +- packages/esm-patient-orders-app/package.json | 4 +- .../esm-patient-programs-app/package.json | 4 +- packages/esm-patient-tests-app/package.json | 4 +- packages/esm-patient-vitals-app/package.json | 4 +- yarn.lock | 248 +++++++++--------- 24 files changed, 190 insertions(+), 174 deletions(-) diff --git a/e2e/specs/results-viewer.spec.ts b/e2e/specs/results-viewer.spec.ts index 67f91646ef..b4fdd00ada 100644 --- a/e2e/specs/results-viewer.spec.ts +++ b/e2e/specs/results-viewer.spec.ts @@ -1,8 +1,9 @@ +/* eslint-disable playwright/no-nested-step */ import { expect } from '@playwright/test'; import { type Visit } from '@openmrs/esm-framework'; import { generateRandomPatient, type Patient, startVisit, endVisit, deletePatient } from '../commands'; import { test } from '../core'; -import { ResultsViewerPage, VisitsPage } from '../pages'; +import { ChartPage, ResultsViewerPage, VisitsPage } from '../pages'; let patient: Patient; let visit: Visit; @@ -13,6 +14,7 @@ test.beforeEach(async ({ api }) => { }); test('Record and edit test results', async ({ page }) => { + const chartPage = new ChartPage(page); const resultsViewerPage = new ResultsViewerPage(page); const visitsPage = new VisitsPage(page); const form = page.locator('[data-extension-slot-name="form-widget-slot"]'); @@ -209,12 +211,12 @@ test('Record and edit test results', async ({ page }) => { }, ]; - await test.step('When I visit the results viewer page', async () => { - await resultsViewerPage.goTo(patient.uuid); + await test.step('When I visit the chart summary page', async () => { + await chartPage.goTo(patient.uuid); }); - await test.step('And I click on the `Clinical forms` button on the siderail', async () => { - await page.getByLabel(/clinical forms/i).click(); + await test.step('And I click the `Clinical forms` button on the siderail', async () => { + await page.getByLabel(/clinical forms/i, { exact: true }).click(); }); await test.step('Then I should see the clinical forms workspace', async () => { @@ -226,11 +228,15 @@ test('Record and edit test results', async ({ page }) => { await expect(page.getByRole('cell', { name: /laboratory test results/i })).toBeVisible(); }); - await test.step('When I launch the `Laboratory Test Results` form', async () => { + await test.step('When I click the `Laboratory Test Results` link to launch the form', async () => { await page.getByText(/laboratory test results/i).click(); }); - await test.step('And I fill the "Complete Blood Count" section', async () => { + await test.step('Then I should see the `Laboratory Test Results` form launch in the workspace', async () => { + await expect(page.getByText(/laboratory test results/i)).toBeVisible(); + }); + + await test.step('When I fill the "Complete Blood Count" section', async () => { for (const { label, value } of completeBloodCountData) { await test.step(label, async () => { await form.getByLabel(label, { exact: true }).fill(value); @@ -276,6 +282,7 @@ test('Record and edit test results', async ({ page }) => { }); } }); + for (const { resultsPageReference, value } of chemistryResultsData) { await test.step(resultsPageReference, async () => { const row = page.locator(`tr:has-text("${resultsPageReference}"):has(td:has-text("${value}"))`).first(); diff --git a/packages/esm-form-engine-app/package.json b/packages/esm-form-engine-app/package.json index 641f06d894..ebb7da4efe 100644 --- a/packages/esm-form-engine-app/package.json +++ b/packages/esm-form-engine-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -43,7 +43,7 @@ "react-error-boundary": "^4.0.13" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/packages/esm-form-entry-app/package.json b/packages/esm-form-entry-app/package.json index 1ce81394ed..06a33052fb 100644 --- a/packages/esm-form-entry-app/package.json +++ b/packages/esm-form-entry-app/package.json @@ -65,7 +65,7 @@ "zone.js": "~0.14.8" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "single-spa": "6.x" }, "devDependencies": { diff --git a/packages/esm-generic-patient-widgets-app/package.json b/packages/esm-generic-patient-widgets-app/package.json index dcf8314b2f..9920bc7f7e 100644 --- a/packages/esm-generic-patient-widgets-app/package.json +++ b/packages/esm-generic-patient-widgets-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -43,7 +43,7 @@ "lodash-es": "^4.17.21" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "^18.2.0", diff --git a/packages/esm-patient-allergies-app/package.json b/packages/esm-patient-allergies-app/package.json index 71799db537..00c1724352 100644 --- a/packages/esm-patient-allergies-app/package.json +++ b/packages/esm-patient-allergies-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -41,7 +41,7 @@ "lodash-es": "^4.17.21" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "^18.2.0", diff --git a/packages/esm-patient-attachments-app/package.json b/packages/esm-patient-attachments-app/package.json index fd47a99258..911e3aec46 100644 --- a/packages/esm-patient-attachments-app/package.json +++ b/packages/esm-patient-attachments-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -44,7 +44,7 @@ "react-html5-camera-photo": "^1.5.11" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "^18.2.0", diff --git a/packages/esm-patient-banner-app/package.json b/packages/esm-patient-banner-app/package.json index c8acee182c..d6dcae5211 100644 --- a/packages/esm-patient-banner-app/package.json +++ b/packages/esm-patient-banner-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -42,7 +42,7 @@ "lodash-es": "^4.17.21" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/packages/esm-patient-banner-app/translations/en.json b/packages/esm-patient-banner-app/translations/en.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/en.json +++ b/packages/esm-patient-banner-app/translations/en.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-chart-app/package.json b/packages/esm-patient-chart-app/package.json index 0105ed8219..202bc55257 100644 --- a/packages/esm-patient-chart-app/package.json +++ b/packages/esm-patient-chart-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -42,7 +42,7 @@ }, "peerDependencies": { "@carbon/react": "1.x", - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "*", "dayjs": "1.x", "lodash-es": "4.x", diff --git a/packages/esm-patient-chart-app/src/patient-chart/chart-review/chart-review.component.tsx b/packages/esm-patient-chart-app/src/patient-chart/chart-review/chart-review.component.tsx index 14353f6df7..b91354fb42 100644 --- a/packages/esm-patient-chart-app/src/patient-chart/chart-review/chart-review.component.tsx +++ b/packages/esm-patient-chart-app/src/patient-chart/chart-review/chart-review.component.tsx @@ -19,8 +19,8 @@ function makePath(target: DashboardConfig, params: Record = {}) return parts.join('/'); } -function getDashboardDefinition(meta: object, config: ConfigObject) { - return { ...meta, ...config }; +function getDashboardDefinition(meta: object, config: ConfigObject, moduleName: string) { + return { ...meta, ...config, moduleName }; } interface ChartReviewProps { @@ -35,11 +35,13 @@ const ChartReview: React.FC = ({ patientUuid, patient, view, s const { navGroups } = useNavGroups(); const ungroupedDashboards = extensionStore.slots['patient-chart-dashboard-slot'].assignedExtensions.map((e) => - getDashboardDefinition(e.meta, e.config), + getDashboardDefinition(e.meta, e.config, e.moduleName), ); const groupedDashboards = navGroups .map((slotName) => - extensionStore.slots[slotName].assignedExtensions.map((e) => getDashboardDefinition(e.meta, e.config)), + extensionStore.slots[slotName].assignedExtensions.map((e) => + getDashboardDefinition(e.meta, e.config, e.moduleName), + ), ) .flat(); const dashboards = ungroupedDashboards.concat(groupedDashboards) as Array; diff --git a/packages/esm-patient-chart-app/src/patient-chart/chart-review/dashboard-view.component.tsx b/packages/esm-patient-chart-app/src/patient-chart/chart-review/dashboard-view.component.tsx index 68df28ca6e..080eeeb1bc 100644 --- a/packages/esm-patient-chart-app/src/patient-chart/chart-review/dashboard-view.component.tsx +++ b/packages/esm-patient-chart-app/src/patient-chart/chart-review/dashboard-view.component.tsx @@ -1,10 +1,11 @@ import React, { useEffect, useMemo, useState } from 'react'; +import classNames from 'classnames'; import { useMatch } from 'react-router-dom'; +import { useTranslation } from 'react-i18next'; import { Extension, ExtensionSlot, useExtensionSlotMeta } from '@openmrs/esm-framework'; +import { launchPatientWorkspace, launchStartVisitPrompt } from '@openmrs/esm-patient-common-lib'; import { dashboardPath } from '../../constants'; import styles from './dashboard-view.scss'; -import { launchPatientWorkspace, launchStartVisitPrompt } from '@openmrs/esm-patient-common-lib'; -import classNames from 'classnames'; /** * The layout mode dictates the width occuppied by the chart dashboard widgets. @@ -21,6 +22,7 @@ export interface DashboardConfig { path: string; hideDashboardTitle?: boolean; layoutMode?: LayoutMode; + moduleName: string; } interface DashboardViewProps { @@ -31,6 +33,7 @@ interface DashboardViewProps { export function DashboardView({ dashboard, patientUuid, patient }: DashboardViewProps) { const widgetMetas = useExtensionSlotMeta(dashboard.slot); + const { t } = useTranslation(dashboard.moduleName); const { params: { view }, } = useMatch(dashboardPath); @@ -61,7 +64,7 @@ export function DashboardView({ dashboard, patientUuid, patient }: DashboardView return ( <> - {!dashboard.hideDashboardTitle && resolvedTitle &&

{resolvedTitle}

} + {!dashboard.hideDashboardTitle && resolvedTitle &&

{t(resolvedTitle)}

}
{(extension) => { diff --git a/packages/esm-patient-common-lib/package.json b/packages/esm-patient-common-lib/package.json index f54d158102..c468a04e3e 100644 --- a/packages/esm-patient-common-lib/package.json +++ b/packages/esm-patient-common-lib/package.json @@ -34,7 +34,7 @@ "uuid": "^8.3.2" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "react": "18.x", "single-spa": "6.x" } diff --git a/packages/esm-patient-conditions-app/package.json b/packages/esm-patient-conditions-app/package.json index 2e3f25d984..253a795896 100644 --- a/packages/esm-patient-conditions-app/package.json +++ b/packages/esm-patient-conditions-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -42,7 +42,7 @@ "lodash-es": "^4.17.21" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/packages/esm-patient-flags-app/package.json b/packages/esm-patient-flags-app/package.json index 033716c82e..2c4ee51298 100644 --- a/packages/esm-patient-flags-app/package.json +++ b/packages/esm-patient-flags-app/package.json @@ -17,7 +17,7 @@ "test": "cross-env TZ=UTC jest --config jest.config.js --verbose false --passWithNoTests --color", "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -40,7 +40,7 @@ "@carbon/react": "^1.33.1" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/packages/esm-patient-forms-app/package.json b/packages/esm-patient-forms-app/package.json index 71013750d5..567de31227 100644 --- a/packages/esm-patient-forms-app/package.json +++ b/packages/esm-patient-forms-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -43,7 +43,7 @@ "lodash-es": "^4.17.21" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/packages/esm-patient-immunizations-app/package.json b/packages/esm-patient-immunizations-app/package.json index ade3cd8b1a..6523fab2b8 100644 --- a/packages/esm-patient-immunizations-app/package.json +++ b/packages/esm-patient-immunizations-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -44,7 +44,7 @@ "zod": "^3.22.2" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/packages/esm-patient-lists-app/package.json b/packages/esm-patient-lists-app/package.json index b9c1f2ef37..67b05f6f9b 100644 --- a/packages/esm-patient-lists-app/package.json +++ b/packages/esm-patient-lists-app/package.json @@ -17,7 +17,7 @@ "test": "cross-env TZ=UTC jest --config jest.config.js --verbose false --passWithNoTests --color", "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -40,7 +40,7 @@ "@carbon/react": "^1.33.1" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/packages/esm-patient-medications-app/package.json b/packages/esm-patient-medications-app/package.json index b1210bb2f2..5b59590337 100644 --- a/packages/esm-patient-medications-app/package.json +++ b/packages/esm-patient-medications-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -42,7 +42,7 @@ "lodash-es": "^4.17.21" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/packages/esm-patient-notes-app/package.json b/packages/esm-patient-notes-app/package.json index 9f26a11e5a..fa3d78a7a4 100644 --- a/packages/esm-patient-notes-app/package.json +++ b/packages/esm-patient-notes-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -41,7 +41,7 @@ "lodash-es": "^4.17.21" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/packages/esm-patient-orders-app/package.json b/packages/esm-patient-orders-app/package.json index a2df28ea71..edc0b8acba 100644 --- a/packages/esm-patient-orders-app/package.json +++ b/packages/esm-patient-orders-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -42,7 +42,7 @@ "lodash-es": "^4.17.21" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/packages/esm-patient-programs-app/package.json b/packages/esm-patient-programs-app/package.json index b1eae3ee08..11b0051066 100644 --- a/packages/esm-patient-programs-app/package.json +++ b/packages/esm-patient-programs-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -42,7 +42,7 @@ "lodash-es": "^4.17.21" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/packages/esm-patient-tests-app/package.json b/packages/esm-patient-tests-app/package.json index 0e6751a8b3..fa26d839be 100644 --- a/packages/esm-patient-tests-app/package.json +++ b/packages/esm-patient-tests-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -46,7 +46,7 @@ "lodash-es": "^4.17.21" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-patient-vitals-app/package.json b/packages/esm-patient-vitals-app/package.json index 8d4c4dda61..38c0734ce5 100644 --- a/packages/esm-patient-vitals-app/package.json +++ b/packages/esm-patient-vitals-app/package.json @@ -17,7 +17,7 @@ "test:watch": "cross-env TZ=UTC jest --watch --config jest.config.js --color", "coverage": "yarn test --coverage", "typescript": "tsc", - "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" + "extract-translations": "i18next 'src/**/*.component.tsx' 'src/**/*.modal.tsx' 'src/**/*.extension.tsx' 'src/**/*.workspace.tsx' 'src/**/*.hook.tsx' 'src/index.ts' --config ../../tools/i18next-parser.config.js" }, "browserslist": [ "extends browserslist-config-openmrs" @@ -44,7 +44,7 @@ "lodash-es": "^4.17.21" }, "peerDependencies": { - "@openmrs/esm-framework": "5.x", + "@openmrs/esm-framework": "6.x", "@openmrs/esm-patient-common-lib": "8.x", "dayjs": "1.x", "react": "18.x", diff --git a/yarn.lock b/yarn.lock index 74ffe5fbb9..7a2afaf3db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5516,9 +5516,9 @@ __metadata: languageName: node linkType: hard -"@openmrs/esm-api@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-api@npm:6.0.1-pre.2537" +"@openmrs/esm-api@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-api@npm:6.0.1-pre.2544" dependencies: "@types/fhir": "npm:0.0.31" lodash-es: "npm:^4.17.21" @@ -5527,17 +5527,17 @@ __metadata: "@openmrs/esm-error-handling": 5.x "@openmrs/esm-navigation": 5.x "@openmrs/esm-offline": 5.x - checksum: 10/69d1449bf57c98cca985a21117483c8809dcbbffd1815e62ba3c39f3c8131c2f3988d9658020e1d6c4ea38a493e28a2b9199e988e13b170c214507ed10d84df1 + checksum: 10/92314f079f2e1896729a8c6dfae064af4586063702017d09e170287c71525f62695de1ab9577534d3ca8efe7ca516164829ef384effd79b8a5eb667e1b4ed440 languageName: node linkType: hard -"@openmrs/esm-app-shell@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-app-shell@npm:6.0.1-pre.2537" +"@openmrs/esm-app-shell@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-app-shell@npm:6.0.1-pre.2544" dependencies: "@carbon/react": "npm:~1.37.0" - "@openmrs/esm-framework": "npm:6.0.1-pre.2537" - "@openmrs/esm-styleguide": "npm:6.0.1-pre.2537" + "@openmrs/esm-framework": "npm:6.0.1-pre.2544" + "@openmrs/esm-styleguide": "npm:6.0.1-pre.2544" dayjs: "npm:^1.10.4" dexie: "npm:^3.0.3" html-webpack-plugin: "npm:^5.5.0" @@ -5562,13 +5562,13 @@ __metadata: workbox-strategies: "npm:^6.1.5" workbox-webpack-plugin: "npm:^6.1.5" workbox-window: "npm:^6.1.5" - checksum: 10/d05ac6a9ba283fd13740f92dbaca418f31acbaabde57cd9aeef2da1cdb6ce13ae48d8e0c979dfc94d31674cfc5ffd12914df548534e6691ae102f1bac4865767 + checksum: 10/1b9b190dd20f4b2b4a8649e47432da5b72bbb223205e802c9827362241e8ea43a8adbdf0567a20b9e37f5cd59e9074961b02d6798435cafd76b86850076705f6 languageName: node linkType: hard -"@openmrs/esm-config@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-config@npm:6.0.1-pre.2537" +"@openmrs/esm-config@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-config@npm:6.0.1-pre.2544" dependencies: ramda: "npm:^0.26.1" peerDependencies: @@ -5576,44 +5576,44 @@ __metadata: "@openmrs/esm-state": 5.x "@openmrs/esm-utils": 5.x single-spa: 5.x - checksum: 10/deb323516dbfd79fd89d93056f1e34075ba1bc6a4dda04e23e61796ceaaebb849beb3901ab723a5c4c1790bf86ac64335575e6c13299d19840a629d2fad0dcb6 + checksum: 10/7caa9c509bd52d1c80ff7f989f2401d0b4bb675b956e903bae42ce9664bd239bbc69268dbed41005af11fedd65d3b268f4f55173b2c0bde8aab42e5f0f8a03bb languageName: node linkType: hard -"@openmrs/esm-context@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-context@npm:6.0.1-pre.2537" +"@openmrs/esm-context@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-context@npm:6.0.1-pre.2544" dependencies: immer: "npm:^10.0.4" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x - checksum: 10/20d5618872fa4ff952d9b46fd82efc18b827b4365d01f4dbf95f301f0a8e13571671cb1ee426d62dbc06b1a4f21176e9fdb3e5e80cc8880807957371ae97315d + checksum: 10/2f27a6f0580afd97e443850dbec0df436b078868e60f103fd2a047e981f38bef802626e6c1d73264d89b23392a3cb1a158364ac7a6d5a7cf2875772e86461f14 languageName: node linkType: hard -"@openmrs/esm-dynamic-loading@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-dynamic-loading@npm:6.0.1-pre.2537" +"@openmrs/esm-dynamic-loading@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-dynamic-loading@npm:6.0.1-pre.2544" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-translations": 5.x - checksum: 10/07c860f838df920a0d1a9d0c0175b8d0631e91cc3d792328efa5ab4aa3b32e23c99f77f28b4158a3d47efa9f14252b5ae7eaf3736f1ecc9f3242bfb06b089ce1 + checksum: 10/a8c485c495c20dd096d997cf01909560a31d0ed692c73e1f677a1a6c06ea59d776358009f28356eb5a29b6867fdc7ec44ba04f1debc8cc65769ee93455504f97 languageName: node linkType: hard -"@openmrs/esm-error-handling@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-error-handling@npm:6.0.1-pre.2537" +"@openmrs/esm-error-handling@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-error-handling@npm:6.0.1-pre.2544" peerDependencies: "@openmrs/esm-globals": 5.x - checksum: 10/4a655c6693cbe7dad3cdccde36f571a57ad5dc135e704ffc81b63a794fb21ce4a962927768c870207013fa17162a864c9d0b68e7ef5e60b21c74354f1bc07118 + checksum: 10/ce01de36f5632d21228daf855f0ec22b146b70a6a115ea2804f3a97543b357d166bac3265cc3b2d0c024880feda7aaa03b68b8ac3878fbbdbe12ddf763509bdb languageName: node linkType: hard -"@openmrs/esm-expression-evaluator@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-expression-evaluator@npm:6.0.1-pre.2537" +"@openmrs/esm-expression-evaluator@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-expression-evaluator@npm:6.0.1-pre.2544" dependencies: "@jsep-plugin/arrow": "npm:^1.0.5" "@jsep-plugin/new": "npm:^1.0.3" @@ -5622,13 +5622,13 @@ __metadata: "@jsep-plugin/template": "npm:^1.0.4" "@jsep-plugin/ternary": "npm:^1.1.3" jsep: "npm:^1.3.9" - checksum: 10/88d074434ee405b164900449f367cd40401f1f4d123cff1442c4b5343ca7575765bc71e4cf4954e7f553fce436ab4d3033363dc878d69673576915a119d4538f + checksum: 10/0ef3f93e302b9cefb84f048b4da518d5505100e597a46794ef4a7f184ef32c2214df8d50009c3b2271ab53c4fa2474132280d33214fa77f21c259511445394f1 languageName: node linkType: hard -"@openmrs/esm-extensions@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-extensions@npm:6.0.1-pre.2537" +"@openmrs/esm-extensions@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-extensions@npm:6.0.1-pre.2544" dependencies: lodash-es: "npm:^4.17.21" peerDependencies: @@ -5639,20 +5639,20 @@ __metadata: "@openmrs/esm-state": 5.x "@openmrs/esm-utils": 5.x single-spa: 5.x - checksum: 10/cf05935f5c20fac3a6e9e40489d16039cc652457b7162ea5a2a7899f100e50670c2587b711db9482882766536fbb343d13927d8f7e4498587a14fc5d6ce076dc + checksum: 10/ce8d223adb0af0b75c9b374cd19d12c623856449db72eee51f540e29ee3f7dd9c6123c06d84ae0aad0ca1ac70ad2092a4d9326cd7dc7a34045b758e344491ac8 languageName: node linkType: hard -"@openmrs/esm-feature-flags@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-feature-flags@npm:6.0.1-pre.2537" +"@openmrs/esm-feature-flags@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-feature-flags@npm:6.0.1-pre.2544" dependencies: ramda: "npm:^0.26.1" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x single-spa: 5.x - checksum: 10/32f1a8fba68131bb2721eafa7e4c0a4f7b76d264a99dd48eb3716f6c1a1cc21dc6c9f9271dbfc5dca58ba620d64439e3e0c4c966c6d929a062e92db22983969e + checksum: 10/896ec61ef7ea3ae30793a57a8cbaf6794c2f0930b2b3fee82f1f6b5b8595ecb358da49b97c048c57d18f16ed44cceaa91716f6de2237da281f2fcf549497cea9 languageName: node linkType: hard @@ -5667,7 +5667,7 @@ __metadata: react-error-boundary: "npm:^4.0.13" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -5764,32 +5764,32 @@ __metadata: webpack: "npm:~5.94.0" zone.js: "npm:~0.14.8" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x single-spa: 6.x languageName: unknown linkType: soft -"@openmrs/esm-framework@npm:6.0.1-pre.2537, @openmrs/esm-framework@npm:next": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-framework@npm:6.0.1-pre.2537" - dependencies: - "@openmrs/esm-api": "npm:6.0.1-pre.2537" - "@openmrs/esm-config": "npm:6.0.1-pre.2537" - "@openmrs/esm-context": "npm:6.0.1-pre.2537" - "@openmrs/esm-dynamic-loading": "npm:6.0.1-pre.2537" - "@openmrs/esm-error-handling": "npm:6.0.1-pre.2537" - "@openmrs/esm-expression-evaluator": "npm:6.0.1-pre.2537" - "@openmrs/esm-extensions": "npm:6.0.1-pre.2537" - "@openmrs/esm-feature-flags": "npm:6.0.1-pre.2537" - "@openmrs/esm-globals": "npm:6.0.1-pre.2537" - "@openmrs/esm-navigation": "npm:6.0.1-pre.2537" - "@openmrs/esm-offline": "npm:6.0.1-pre.2537" - "@openmrs/esm-react-utils": "npm:6.0.1-pre.2537" - "@openmrs/esm-routes": "npm:6.0.1-pre.2537" - "@openmrs/esm-state": "npm:6.0.1-pre.2537" - "@openmrs/esm-styleguide": "npm:6.0.1-pre.2537" - "@openmrs/esm-translations": "npm:6.0.1-pre.2537" - "@openmrs/esm-utils": "npm:6.0.1-pre.2537" +"@openmrs/esm-framework@npm:6.0.1-pre.2544, @openmrs/esm-framework@npm:next": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-framework@npm:6.0.1-pre.2544" + dependencies: + "@openmrs/esm-api": "npm:6.0.1-pre.2544" + "@openmrs/esm-config": "npm:6.0.1-pre.2544" + "@openmrs/esm-context": "npm:6.0.1-pre.2544" + "@openmrs/esm-dynamic-loading": "npm:6.0.1-pre.2544" + "@openmrs/esm-error-handling": "npm:6.0.1-pre.2544" + "@openmrs/esm-expression-evaluator": "npm:6.0.1-pre.2544" + "@openmrs/esm-extensions": "npm:6.0.1-pre.2544" + "@openmrs/esm-feature-flags": "npm:6.0.1-pre.2544" + "@openmrs/esm-globals": "npm:6.0.1-pre.2544" + "@openmrs/esm-navigation": "npm:6.0.1-pre.2544" + "@openmrs/esm-offline": "npm:6.0.1-pre.2544" + "@openmrs/esm-react-utils": "npm:6.0.1-pre.2544" + "@openmrs/esm-routes": "npm:6.0.1-pre.2544" + "@openmrs/esm-state": "npm:6.0.1-pre.2544" + "@openmrs/esm-styleguide": "npm:6.0.1-pre.2544" + "@openmrs/esm-translations": "npm:6.0.1-pre.2544" + "@openmrs/esm-utils": "npm:6.0.1-pre.2544" dayjs: "npm:^1.10.7" peerDependencies: dayjs: 1.x @@ -5800,7 +5800,7 @@ __metadata: rxjs: 6.x single-spa: 5.x swr: 2.x - checksum: 10/bb8f3f244d7090541f4d7f1fdd488658b6d45d6804b6026b354a3d3fc843362f23075d0a25ad4eccfe171426d8dfcb17ef950628bf289ef21876549bfc07c4ac + checksum: 10/eb71c682d7b9769b4c5f3bbe5464bc03bcffa64f3da7bca1367f4ebc4a7843d951b77fe359c5177f5b16f360138fd9fc19c522e4eea3d4e1d7355680005abc30 languageName: node linkType: hard @@ -5815,7 +5815,7 @@ __metadata: lodash-es: "npm:^4.17.21" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: ^18.2.0 @@ -5826,31 +5826,31 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-globals@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-globals@npm:6.0.1-pre.2537" +"@openmrs/esm-globals@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-globals@npm:6.0.1-pre.2544" dependencies: "@types/fhir": "npm:0.0.31" peerDependencies: single-spa: 5.x - checksum: 10/24019e7020bf6f8fad803a2884dce97e9c8ec09f77ba88dffbccf1aaa626f4145cb004017d7612c9115e1b19c30c13cb57e002ddb25bf3fb9ea853a10ed6eaad + checksum: 10/c2f37f6f237d3de84947fce75bd2bc814839d263dbb6d6097ccdc08d4cc069984bcc466c5748ef36ec4c132fdec91ca072a812c7daa9a02f5f45598c90c812d7 languageName: node linkType: hard -"@openmrs/esm-navigation@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-navigation@npm:6.0.1-pre.2537" +"@openmrs/esm-navigation@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-navigation@npm:6.0.1-pre.2544" dependencies: path-to-regexp: "npm:6.1.0" peerDependencies: "@openmrs/esm-state": 5.x - checksum: 10/0b094f0ae33c70d2dfa09cfd37f211fd3a0ee01fa649be28cdd638e9e01d4115d7337c897d9de98451fe7d4b9ed80ca60c97949d5f0e34a8971fe89ae66df0e9 + checksum: 10/76d4f72bf8ed5b37127d109b03f596a6b6d914f211a1402f82bbc3f5bef30b71c61beb5d10b34b853c184edf46e28ef813781099864ccc09a3f45c490b39e09d languageName: node linkType: hard -"@openmrs/esm-offline@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-offline@npm:6.0.1-pre.2537" +"@openmrs/esm-offline@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-offline@npm:6.0.1-pre.2544" dependencies: dexie: "npm:^3.0.3" lodash-es: "npm:^4.17.21" @@ -5861,7 +5861,7 @@ __metadata: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x rxjs: 6.x - checksum: 10/a684a65ed7e49e52466800300fde75b1044fb223cfe994bcea87c3cf0be0855760ce9302a43df9c6e553ababb379247658a1e3a4d65d991fe0446dd5e0be8397 + checksum: 10/8e3e60086818d5dcb2734362f08723254b3ea2141cccdb53466a14f1a7f66f0968d15f5d22ffa196318856bdcac1d195a6ed4f79661eff70e7d795b57f3a177c languageName: node linkType: hard @@ -5874,7 +5874,7 @@ __metadata: lodash-es: "npm:^4.17.21" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: ^18.2.0 @@ -5896,7 +5896,7 @@ __metadata: react-html5-camera-photo: "npm:^1.5.11" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: ^18.2.0 @@ -5916,7 +5916,7 @@ __metadata: lodash-es: "npm:^4.17.21" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -5937,7 +5937,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@carbon/react": 1.x - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": "*" dayjs: 1.x lodash-es: 4.x @@ -6024,7 +6024,7 @@ __metadata: lodash-es: "npm:^4.17.21" uuid: "npm:^8.3.2" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x react: 18.x single-spa: 6.x languageName: unknown @@ -6039,7 +6039,7 @@ __metadata: lodash-es: "npm:^4.17.21" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -6058,7 +6058,7 @@ __metadata: "@openmrs/esm-patient-common-lib": "workspace:*" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -6079,7 +6079,7 @@ __metadata: lodash-es: "npm:^4.17.21" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -6102,7 +6102,7 @@ __metadata: webpack: "npm:^5.94.0" zod: "npm:^3.22.2" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -6121,7 +6121,7 @@ __metadata: "@openmrs/esm-patient-common-lib": "workspace:*" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -6141,7 +6141,7 @@ __metadata: lodash-es: "npm:^4.17.21" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -6160,7 +6160,7 @@ __metadata: lodash-es: "npm:^4.17.21" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -6180,7 +6180,7 @@ __metadata: lodash-es: "npm:^4.17.21" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -6200,7 +6200,7 @@ __metadata: lodash-es: "npm:^4.17.21" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -6224,7 +6224,7 @@ __metadata: lodash-es: "npm:^4.17.21" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x react: 18.x react-i18next: 11.x @@ -6245,7 +6245,7 @@ __metadata: lodash-es: "npm:^4.17.21" webpack: "npm:^5.94.0" peerDependencies: - "@openmrs/esm-framework": 5.x + "@openmrs/esm-framework": 6.x "@openmrs/esm-patient-common-lib": 8.x dayjs: 1.x react: 18.x @@ -6256,9 +6256,9 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-react-utils@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-react-utils@npm:6.0.1-pre.2537" +"@openmrs/esm-react-utils@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-react-utils@npm:6.0.1-pre.2544" dependencies: lodash-es: "npm:^4.17.21" single-spa-react: "npm:^6.0.0" @@ -6279,13 +6279,13 @@ __metadata: react-i18next: 11.x rxjs: 6.x swr: 2.x - checksum: 10/c89bb3d0ef53b8137f019ceaadf75d4375657f71d2bb6d3ad5f67904b5b0e9ac2f70fad08ac3823c2d62d57e39368b41c4961e532cf51b0b5b41331f899e33c2 + checksum: 10/1c082be0268aeb0274763c9626315f7dc000341a231d17c8a538eda2f53929dbce602792d362e3b239e052a93d5e2771e5ba123aa6386c6f46e9f0a5f87e3c8a languageName: node linkType: hard -"@openmrs/esm-routes@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-routes@npm:6.0.1-pre.2537" +"@openmrs/esm-routes@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-routes@npm:6.0.1-pre.2544" peerDependencies: "@openmrs/esm-config": 5.x "@openmrs/esm-dynamic-loading": 5.x @@ -6294,25 +6294,25 @@ __metadata: "@openmrs/esm-globals": 5.x "@openmrs/esm-utils": 5.x single-spa: 6.x - checksum: 10/bf3acb7069585677539bdc6e0af9174a7a558d4e9ffcace9466cf37781383935b000cef61b10107aa1fde5dd8a71799deb15a6d50c52a44c218ca8f22271da29 + checksum: 10/de50be219d0dd3ade2ea912092794d3f98a3227fa49af04f16c94131ca6546f00f14e692952143a356f379e2f45120372ce57c6937a1cf3867279c4a80032f5e languageName: node linkType: hard -"@openmrs/esm-state@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-state@npm:6.0.1-pre.2537" +"@openmrs/esm-state@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-state@npm:6.0.1-pre.2544" dependencies: zustand: "npm:^4.5.5" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-utils": 5.x - checksum: 10/5edf3b8e4717aa5ba283a6e03c44213f154f93801bf3b91d64116cd31ef4e3a26205bd05f12ac213c1d386b082c51bf2049e87587cc35c4bb95293c486e0699e + checksum: 10/6c629cdf5a24d74868f455c22bdb10937ffa173ca74d73ce5705953bf06e45c2fc27e3b96f11dbb8332666e9f783cffb29ab04dfe620fec6155cef5eb9bd355d languageName: node linkType: hard -"@openmrs/esm-styleguide@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-styleguide@npm:6.0.1-pre.2537" +"@openmrs/esm-styleguide@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-styleguide@npm:6.0.1-pre.2544" dependencies: "@carbon/charts": "npm:^1.12.0" "@carbon/react": "npm:~1.37.0" @@ -6336,24 +6336,24 @@ __metadata: react-dom: 18.x react-i18next: 11.x rxjs: 6.x - checksum: 10/bd7f725cb797df097622ed0eaf34dbe6b7dc9f9404fea518583620d20148ad01cb643951ba253f9aaa91e289513146ddf218ebd03017c6f1f642043fb8040a5a + checksum: 10/a2fe13b54d67058917e49cbea233f296f74e2e6bd0a4ccd32c280a45509e114fbdd67c1f2b3382fdc421f875477585be78d1cc24c2ed119ca76a87fd207d5eed languageName: node linkType: hard -"@openmrs/esm-translations@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-translations@npm:6.0.1-pre.2537" +"@openmrs/esm-translations@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-translations@npm:6.0.1-pre.2544" dependencies: i18next: "npm:21.10.0" peerDependencies: i18next: 21.x - checksum: 10/a4f8e4763c6c2a1e903c9e8bedfb7d79547c1cbd4c40dfaa0b0005e00c3aaa3e66013de3734051b9b176e07a1e3441279ec4154bf32413898b9c004452276232 + checksum: 10/35fb85a84bbefa973e2767c41d19ccb9b37d7460949630d2a501d6fa750a565e4a03732c1ea8b63b5c6d47ca8f0bed9c95b9ca6121e011507c798eea1b51b96d languageName: node linkType: hard -"@openmrs/esm-utils@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/esm-utils@npm:6.0.1-pre.2537" +"@openmrs/esm-utils@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/esm-utils@npm:6.0.1-pre.2544" dependencies: "@formatjs/intl-durationformat": "npm:^0.2.4" "@internationalized/date": "npm:^3.5.5" @@ -6363,7 +6363,7 @@ __metadata: dayjs: 1.x i18next: 21.x rxjs: 6.x - checksum: 10/4c9803ef4c0eed27d55ad12e5c8e194d51191aa6dfc002abe9a69a7760a616ad7a9022d264904abb23278bf6078453fc0be7471c02e7d8df550e70ef88b1ff50 + checksum: 10/3e0d0b563f14753724bcb62d7041aee24c576e4b65b23e94934e8a5579867f3cc1581d407572c1c4ec5bd90a22cb145829dee0987343062db9305a4000b86dc5 languageName: node linkType: hard @@ -6414,9 +6414,9 @@ __metadata: languageName: node linkType: hard -"@openmrs/webpack-config@npm:6.0.1-pre.2537": - version: 6.0.1-pre.2537 - resolution: "@openmrs/webpack-config@npm:6.0.1-pre.2537" +"@openmrs/webpack-config@npm:6.0.1-pre.2544": + version: 6.0.1-pre.2544 + resolution: "@openmrs/webpack-config@npm:6.0.1-pre.2544" dependencies: "@swc/core": "npm:^1.3.58" clean-webpack-plugin: "npm:^4.0.0" @@ -6434,7 +6434,7 @@ __metadata: webpack-stats-plugin: "npm:^1.0.3" peerDependencies: webpack: 5.x - checksum: 10/70a0e0c1b6fc98d8c7e30ad7de057dfd89036e6a791aa00e45466a8f03c746644f164c654e03b3baa85681481bf309cb6844f138ef326e0361bbf8ffd86c11e7 + checksum: 10/ade6266c4329718e662f1e1a0331f2c32fbed5f44bced40d7beb44559f5ca7919ba746903796db97ffdd85c3396e9639a8986b90fe7a76d1b363e7d9d15252e2 languageName: node linkType: hard @@ -21277,11 +21277,11 @@ __metadata: linkType: hard "openmrs@npm:next": - version: 6.0.1-pre.2537 - resolution: "openmrs@npm:6.0.1-pre.2537" + version: 6.0.1-pre.2544 + resolution: "openmrs@npm:6.0.1-pre.2544" dependencies: - "@openmrs/esm-app-shell": "npm:6.0.1-pre.2537" - "@openmrs/webpack-config": "npm:6.0.1-pre.2537" + "@openmrs/esm-app-shell": "npm:6.0.1-pre.2544" + "@openmrs/webpack-config": "npm:6.0.1-pre.2544" "@pnpm/npm-conf": "npm:^2.1.0" "@swc/core": "npm:^1.3.58" autoprefixer: "npm:^10.4.20" @@ -21320,7 +21320,7 @@ __metadata: yargs: "npm:^17.6.2" bin: openmrs: ./dist/cli.js - checksum: 10/dad3555185f8e260ccf3a13b6dc2fd4f0e4addf5a5902be6129c19a6545580d11864ae7aad62dd88a512435e8353e3428dd70cacafcc336d4211e4311c01d084 + checksum: 10/114414d66faaea61f30785a83bd612278377f75c9387af517232f283ef29855d7deb250b32266e0521d383eb0b273d5cf2097d1c429931eeae337e32ef512b9b languageName: node linkType: hard From 2fe1b8f2ca8ab6942ba078603b95a309db093f7c Mon Sep 17 00:00:00 2001 From: Samuel Male Date: Mon, 16 Dec 2024 02:10:31 +0300 Subject: [PATCH 06/15] (feat) O3-3741: Enable form navigation via sidebar (#2142) Set form-entry workspace size to "extra-wide" --- packages/esm-patient-forms-app/src/routes.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/esm-patient-forms-app/src/routes.json b/packages/esm-patient-forms-app/src/routes.json index 149deb8675..17fd41e0cf 100644 --- a/packages/esm-patient-forms-app/src/routes.json +++ b/packages/esm-patient-forms-app/src/routes.json @@ -52,7 +52,7 @@ "type": "clinical-form", "canMaximize": true, "canHide": true, - "width": "wider" + "width": "extra-wide" }, { "name": "ward-patient-form-entry-workspace", From cfd364b1e8abc98f0ec74aa5abc1975eb78fa507 Mon Sep 17 00:00:00 2001 From: jwnasambu <33891016+jwnasambu@users.noreply.github.com> Date: Mon, 16 Dec 2024 02:24:59 +0300 Subject: [PATCH 07/15] (fix) O3-2846: Adding Medications from Past Medications Section Places Them in Active Medications List (#2120) --- .../src/components/medications-details-table.component.tsx | 4 ++-- .../src/medications-summary/medications-summary.component.tsx | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/esm-patient-medications-app/src/components/medications-details-table.component.tsx b/packages/esm-patient-medications-app/src/components/medications-details-table.component.tsx index d2bf770cc5..b32a720cda 100644 --- a/packages/esm-patient-medications-app/src/components/medications-details-table.component.tsx +++ b/packages/esm-patient-medications-app/src/components/medications-details-table.component.tsx @@ -45,7 +45,7 @@ import { type ConfigObject } from '../config-schema'; import PrintComponent from '../print/print.component'; import styles from './medications-details-table.scss'; -export interface ActiveMedicationsProps { +export interface MedicationsDetailsTableProps { isValidating?: boolean; title?: string; medications?: Array | null; @@ -56,7 +56,7 @@ export interface ActiveMedicationsProps { patient: fhir.Patient; } -const MedicationsDetailsTable: React.FC = ({ +const MedicationsDetailsTable: React.FC = ({ isValidating, title, medications, diff --git a/packages/esm-patient-medications-app/src/medications-summary/medications-summary.component.tsx b/packages/esm-patient-medications-app/src/medications-summary/medications-summary.component.tsx index 9875c4c779..45e85b9aa7 100644 --- a/packages/esm-patient-medications-app/src/medications-summary/medications-summary.component.tsx +++ b/packages/esm-patient-medications-app/src/medications-summary/medications-summary.component.tsx @@ -62,7 +62,7 @@ export default function MedicationsSummary({ patient }: MedicationsSummaryProps) const displayText = t('pastMedicationsDisplayText', 'Past medications'); const headerTitle = t('pastMedicationsHeaderTitle', 'past medications'); - if (isValidatingPastOrders) return ; + if (isLoadingPastOrders) return ; if (pastOrdersError) return ; @@ -72,6 +72,7 @@ export default function MedicationsSummary({ patient }: MedicationsSummaryProps) isValidating={isValidatingPastOrders} title={t('pastMedicationsTableTitle', 'Past Medications')} medications={pastOrders} + showAddButton={false} showDiscontinueButton={false} showModifyButton={false} showReorderButton={true} From b7ef97b01a0cd4f6db54e104db70105c134460ac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:32:43 +0300 Subject: [PATCH 08/15] (chore) Update translations from Transifex (#2155) Co-authored-by: OpenMRS Bot Co-authored-by: Nethmi Rodrigo <34070216+NethmiRodrigo@users.noreply.github.com> --- .../translations/pt_BR.json | 15 ++ .../translations/pt_BR.json | 70 +++++++ .../translations/pt_BR.json | 7 + .../translations/pt_BR.json | 47 +++++ .../translations/pt_BR.json | 57 ++++++ .../translations/am.json | 4 + .../translations/ar.json | 4 + .../translations/de.json | 4 + .../translations/es.json | 4 + .../translations/fr.json | 4 + .../translations/he.json | 4 + .../translations/hi.json | 4 + .../translations/hi_IN.json | 4 + .../translations/id.json | 4 + .../translations/it.json | 4 + .../translations/km.json | 4 + .../translations/ne.json | 4 + .../translations/pt.json | 4 + .../translations/pt_BR.json | 24 +++ .../translations/qu.json | 4 + .../translations/si.json | 4 + .../translations/sw.json | 4 + .../translations/sw_KE.json | 4 + .../translations/tr.json | 4 + .../translations/tr_TR.json | 4 + .../translations/uk.json | 4 + .../translations/vi.json | 4 + .../translations/zh.json | 4 + .../translations/zh_CN.json | 4 + .../translations/pt_BR.json | 182 ++++++++++++++++++ .../translations/pt_BR.json | 41 ++++ .../translations/pt_BR.json | 29 +++ .../translations/pt_BR.json | 25 +++ .../translations/pt_BR.json | 31 +++ .../translations/pt_BR.json | 21 ++ .../translations/ar.json | 2 +- .../translations/pt_BR.json | 95 +++++++++ .../translations/pt_BR.json | 38 ++++ .../translations/ar.json | 6 +- .../translations/pt_BR.json | 111 +++++++++++ .../translations/pt_BR.json | 38 ++++ .../translations/ar.json | 4 +- .../translations/pt_BR.json | 108 +++++++++++ .../translations/pt_BR.json | 63 ++++++ 44 files changed, 1100 insertions(+), 6 deletions(-) create mode 100644 packages/esm-form-engine-app/translations/pt_BR.json create mode 100644 packages/esm-form-entry-app/translations/pt_BR.json create mode 100644 packages/esm-generic-patient-widgets-app/translations/pt_BR.json create mode 100644 packages/esm-patient-allergies-app/translations/pt_BR.json create mode 100644 packages/esm-patient-attachments-app/translations/pt_BR.json create mode 100644 packages/esm-patient-banner-app/translations/pt_BR.json create mode 100644 packages/esm-patient-chart-app/translations/pt_BR.json create mode 100644 packages/esm-patient-conditions-app/translations/pt_BR.json create mode 100644 packages/esm-patient-flags-app/translations/pt_BR.json create mode 100644 packages/esm-patient-forms-app/translations/pt_BR.json create mode 100644 packages/esm-patient-immunizations-app/translations/pt_BR.json create mode 100644 packages/esm-patient-lists-app/translations/pt_BR.json create mode 100644 packages/esm-patient-medications-app/translations/pt_BR.json create mode 100644 packages/esm-patient-notes-app/translations/pt_BR.json create mode 100644 packages/esm-patient-orders-app/translations/pt_BR.json create mode 100644 packages/esm-patient-programs-app/translations/pt_BR.json create mode 100644 packages/esm-patient-tests-app/translations/pt_BR.json create mode 100644 packages/esm-patient-vitals-app/translations/pt_BR.json diff --git a/packages/esm-form-engine-app/translations/pt_BR.json b/packages/esm-form-engine-app/translations/pt_BR.json new file mode 100644 index 0000000000..15c56f807a --- /dev/null +++ b/packages/esm-form-engine-app/translations/pt_BR.json @@ -0,0 +1,15 @@ +{ + "cancel": "Cancel", + "closeThisPanel": "Close this panel", + "collapseAll": "Collapse all", + "deleteQuestion": "Delete question", + "deleteQuestionConfirmation": "Are you sure you want to delete this question?", + "deleteQuestionExplainerText": "This action cannot be undone.", + "errorTitle": "There was an error with this form", + "expandAll": "Expand all", + "loading": "Loading", + "or": "or", + "thisList": "this list", + "toggleCollapseOrExpand": "Toggle collapse or expand", + "tryAgainMessage": "Try opening another form from" +} diff --git a/packages/esm-form-entry-app/translations/pt_BR.json b/packages/esm-form-entry-app/translations/pt_BR.json new file mode 100644 index 0000000000..140719aa15 --- /dev/null +++ b/packages/esm-form-entry-app/translations/pt_BR.json @@ -0,0 +1,70 @@ +{ + "aDayAgo": "um dia atrás", + "aFewSecondsAgo": "alguns segundos atrás", + "aMinuteAgo": "um minuto atrás", + "aMonthAgo": "um mês atrás", + "aYearAgo": "um ano atrás", + "add": "Adicionar", + "addHour": "Adiciona uma hora", + "addMinute": "dicionar um minuto", + "addSecond": "dicionar um segundo", + "anHourAgo": "uma hora atrás", + "cancel": "Cancelar", + "changeToMonthView": "Alterar visualização do mês", + "chooseMonthAndYear": "Escolher mês e ano", + "clearEntry": "Tem certeza que deseja limpar esse campo?", + "closeThisPanel": "Fechar esse painel", + "componentLoadingFailed": "Carregamento de Componente falhou...", + "daysAgo": "dias atrás", + "deleteEntry": "Tem certeza que deseja excluir esse item?", + "discardButton": "Descartar", + "disallowDecimals": "Valores decimais não permitido", + "enterMoreCharacters": "Por favor digite 2 ou mais caracteres", + "errorFetchingFormData": "Houve um erro ao carregar os dados de formulário, Detalhes: {detail}", + "errorLoadingForm": "Erro ao carregar formulário", + "errorWithForm": "Houve um erro com esse formulário", + "fix": "Corrigir", + "formSubmissionFailed": "Um erro ocorreu enquanto processava o envio do formulário. Favor notificar o administrador do sistema e encaminhar o erro a seguir: {error}", + "formSubmittedSuccessfully": "O formulário foi enviado com sucesso", + "from": "De", + "futureDateRestriction": "Não é permitido uma data futura!", + "hoursAgo": "horas atrás", + "invalidDate": "Data fornecida não é válida", + "loading": "Carregando...", + "loadingComponent": "Carregando componente", + "max": "Valor máximo deve ser {max}", + "maxDate": "Data máxima deve ser {maxDate}", + "maxEntries": "Não pode haver mais do que {max} entradas", + "maxLength": "Tamanho máximo deve ser {maxLength}", + "min": "Valor mínimo deve ser {min}", + "minDate": "Data mínima deve ser {minDate}", + "minLength": "Comprimento mínimo deve ser {minLength}", + "minusHour": "Menos uma hora", + "minusMinute": "Menos um minuto", + "minusSecond": "Menos um segundo", + "minutesAgo": "minutos atrás", + "monthsAgo": "meses atrás", + "next": "Próximo", + "next21Years": "Próximos 21 anos", + "nextMonth": "Próximo mês", + "nextYear": "Próximo ano", + "patientIdentifierDuplication": "Registro de Paciente duplicado", + "patientIdentifierDuplicationDescription": "O Registro informado já está associado com um paciente existente. Por favor verifique o código de registro e tente novamente.", + "orderNumber": "Número de pedido", + "previous": "Anterior", + "previous21Years": "21 anos prévios", + "previousMonth": "Mês anterior", + "previousValue": "Valor anterior", + "previousYear": "Ano anterior", + "remove": "Remover", + "requiredField": "Esse campo é obrigatório!", + "saveAndCloseButton": "Salvar e fechar", + "selectWeeks": "Selecionar semanas", + "set": "Configurar", + "submitting": "Enviando", + "to": "Para", + "tryOpeningAnotherForm": "Tente abrir outro formulário", + "useValue": "Usar Valor", + "weeks": "Semanas", + "yearsAgo": "Anos atrás" +} diff --git a/packages/esm-generic-patient-widgets-app/translations/pt_BR.json b/packages/esm-generic-patient-widgets-app/translations/pt_BR.json new file mode 100644 index 0000000000..7b2512d798 --- /dev/null +++ b/packages/esm-generic-patient-widgets-app/translations/pt_BR.json @@ -0,0 +1,7 @@ +{ + "chartView": "Chart View", + "dateAndTime": "Date and time", + "displaying": "Displaying", + "encounterType": "Encounter type", + "tableView": "Table View" +} diff --git a/packages/esm-patient-allergies-app/translations/pt_BR.json b/packages/esm-patient-allergies-app/translations/pt_BR.json new file mode 100644 index 0000000000..92d41f0b49 --- /dev/null +++ b/packages/esm-patient-allergies-app/translations/pt_BR.json @@ -0,0 +1,47 @@ +{ + "add": "Add", + "allergen": "Allergen", + "allergies": "Allergies", + "Allergies": "Allergies", + "allergyDeleted": "Allergy deleted", + "allergyIntolerances": "allergy intolerances", + "allergyNowVisible": "It is now visible on the Allergies page", + "allergySaved": "Allergy saved", + "allergySaveError": "Error saving allergy", + "allergyUpdated": "Allergy updated", + "cancel": "Cancel", + "dateOfOnsetAndComments": "Date of onset and comments", + "delete": "Delete", + "deleteModalConfirmationText": "Are you sure you want to delete this allergy?", + "deletePatientAllergy": "Delete allergy", + "deleting": "Deleting", + "discard": "Discard", + "edit": "Edit", + "editAllergy": "Edit an Allergy", + "editOrDeleteAllergy": "Edit or delete allergy", + "errorDeletingAllergy": "Error deleting allergy", + "invalidComment": "Invalid comment, try again", + "loading": "Loading", + "mild": "Mild", + "moderate": "Moderate", + "name": "Name", + "nonCodedAllergenWarningDescription": "Adding a custom allergen may impact system-wide allergy notifications. It's recommended to choose from the provided list for accurate alerts. Custom entries may not trigger notifications in all relevant contexts.", + "nonCodedAllergenWarningTitle": "Warning: Custom Allergen Entry", + "onsetDateAndComments": "Onset date and comments", + "other": "Other", + "otherNonCodedAllergen": "Other non-coded allergen", + "otherNonCodedAllergicReaction": "Other non-coded allergic reaction", + "reaction": "Reaction", + "reactions": "Reactions", + "recordNewAllergy": "Record a new allergy", + "saveAndClose": "Save and close", + "seeAll": "See all", + "selectAllergen": "Select the allergen", + "selectReactions": "Select the reactions", + "severe": "Severe", + "severityandReaction": "Severity", + "severityOfWorstReaction": "Severity of worst reaction", + "typeAdditionalComments": "Type any additional comments here", + "typeAllergenName": "Please type in the name of the allergen", + "typeAllergicReactionName": "Please type in the name of the allergic reaction" +} diff --git a/packages/esm-patient-attachments-app/translations/pt_BR.json b/packages/esm-patient-attachments-app/translations/pt_BR.json new file mode 100644 index 0000000000..d5513a7af8 --- /dev/null +++ b/packages/esm-patient-attachments-app/translations/pt_BR.json @@ -0,0 +1,57 @@ +{ + "add": "Add", + "addAnImage": "Add image", + "addAttachment": "Add Attachment", + "addAttachment_title": "Add Attachment", + "addMoreAttachments": "Add more attachments", + "attachments": "Attachments", + "Attachments": "Attachments", + "attachmentsInLowerCase": "attachments", + "attachmentsInProperFormat": "Attachments", + "cameraAccessErrorMessage": "Please enable camera access in your browser settings and try again.", + "cameraError": "Camera Error", + "cancel": "Cancel", + "chooseAnAllowedFileType": "The file \"{{fileName}}\" cannot be uploaded. Please upload a file with one of the following extensions: {{supportedExtensions}}, or {{ lastExtension }}.", + "closeModal": "Close", + "closePreview": "Close preview", + "dateUploaded": "Date uploaded", + "delete": "Delete", + "deleteAttachmentConfirmationText": "Are you sure you want to delete this {{attachmentType}}? This action can't be undone.", + "deleteImage": "Delete image", + "deletePdf": "Delete PDF", + "edit": "Edit", + "enterAttachmentDescription": "Enter attachment description", + "enterAttachmentName": "Enter attachment name", + "error": "Error", + "failed": "failed", + "failedDeleting": "couldn't be deleted", + "file": "File", + "fileDeleted": "File deleted", + "fileName": "File name", + "fileSizeInstructions": "Drag and drop files here or click to upload", + "fileSizeLimitExceeded": "exceeds the size limit of", + "fileSizeLimitExceededText": "File size limit exceeded", + "fileUploadSizeConstraints": "File limit is {{fileSize}}MB", + "gridView": "Grid view", + "image": "Image", + "imageDescription": "Image description", + "imagePlaceholder": "Image placeholder", + "imagePreview": "Image preview", + "name": "name", + "nameIsRequired": "Name is required", + "noAttachmentsToDisplay": "There are no attachments to display for this patient", + "noImageToDisplay": "No image to display", + "options": "Options", + "successfullyDeleted": "successfully deleted", + "supportedFiletypes": "Supported files are {{supportedFiles}}", + "tableView": "Table view", + "type": "Type", + "unsupportedFileType": "Unsupported file type", + "uploadComplete": "Upload complete", + "uploadedSuccessfully": "uploaded successfully", + "uploadError": "Error uploading file", + "uploadFiles": "Upload files", + "uploading": "Uploading", + "uploadWillContinueInTheBackground": "Files will be uploaded in the background. You can close this modal.", + "webcam": "Webcam" +} diff --git a/packages/esm-patient-banner-app/translations/am.json b/packages/esm-patient-banner-app/translations/am.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/am.json +++ b/packages/esm-patient-banner-app/translations/am.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/ar.json b/packages/esm-patient-banner-app/translations/ar.json index 31eb1c0743..60b75bd039 100644 --- a/packages/esm-patient-banner-app/translations/ar.json +++ b/packages/esm-patient-banner-app/translations/ar.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "العنوان سطر 1", "address2": "العنوان سطر 2", "city": "المدينة", "cityVillage": "المدينة", "country": "الدولة", "countyDistrict": "المنطقة", + "deceased": "Deceased", "district": "المنطقة", + "from_lower": "from", "implementationLogo": "شعار التنفيذ", "patientAge": "العمر", "patientDateOfBirthWithSeparator": "تاريخ الميلاد", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "اسم المريض", "postalCode": "الرمز البريدي", "printIdentifierSticker": "ملصق تعريف المريض", + "started": "Started", "state": "الولاية", "stateProvince": "الولاية", "telephoneNumberWithSeparator": "رقم الهاتف" diff --git a/packages/esm-patient-banner-app/translations/de.json b/packages/esm-patient-banner-app/translations/de.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/de.json +++ b/packages/esm-patient-banner-app/translations/de.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/es.json b/packages/esm-patient-banner-app/translations/es.json index ccf7485c76..50d0e66146 100644 --- a/packages/esm-patient-banner-app/translations/es.json +++ b/packages/esm-patient-banner-app/translations/es.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Línea de Dirección 1", "address2": "Línea de Dirección 2", "city": "Ciudad", "cityVillage": "ciudad", "country": "País", "countyDistrict": "Distrito", + "deceased": "Deceased", "district": "Distrito", + "from_lower": "from", "implementationLogo": "Logo de la implementación", "patientAge": "Edad:", "patientDateOfBirthWithSeparator": "Fecha de nacimiento:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Nombre del paciente:", "postalCode": "Código postal", "printIdentifierSticker": "Imprimir sticker de identificación", + "started": "Started", "state": "Estado", "stateProvince": "Estado", "telephoneNumberWithSeparator": "Número de teléfono:" diff --git a/packages/esm-patient-banner-app/translations/fr.json b/packages/esm-patient-banner-app/translations/fr.json index 5f367042a5..1b6de49850 100644 --- a/packages/esm-patient-banner-app/translations/fr.json +++ b/packages/esm-patient-banner-app/translations/fr.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Ligne d'adresse 1", "address2": "Ligne d'adresse 2", "city": "Ville", "cityVillage": "ville", "country": "Pays", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Logo de mise en œuvre", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date de Naissance:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Nom du Patient:", "postalCode": "Code postal", "printIdentifierSticker": "Imprimer l'autocollant d'identification", + "started": "Started", "state": "État", "stateProvince": "État", "telephoneNumberWithSeparator": "Numéro de téléphone:" diff --git a/packages/esm-patient-banner-app/translations/he.json b/packages/esm-patient-banner-app/translations/he.json index 2d492a95e2..c1c54a67d0 100644 --- a/packages/esm-patient-banner-app/translations/he.json +++ b/packages/esm-patient-banner-app/translations/he.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "כתובת רשומה 1", "address2": "כתובת רשומה 2", "city": "עיר", "cityVillage": "עיר", "country": "מדינה", "countyDistrict": "מחוז", + "deceased": "Deceased", "district": "מחוז", + "from_lower": "from", "implementationLogo": "לוגו הטמעה", "patientAge": "גיל:", "patientDateOfBirthWithSeparator": "תאריך לידה:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "שם המטופל/ת:", "postalCode": "מיקוד", "printIdentifierSticker": "הדפסת מדבקת זיהוי", + "started": "Started", "state": "מדינה", "stateProvince": "מדינה", "telephoneNumberWithSeparator": "מספר טלפון:" diff --git a/packages/esm-patient-banner-app/translations/hi.json b/packages/esm-patient-banner-app/translations/hi.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/hi.json +++ b/packages/esm-patient-banner-app/translations/hi.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/hi_IN.json b/packages/esm-patient-banner-app/translations/hi_IN.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/hi_IN.json +++ b/packages/esm-patient-banner-app/translations/hi_IN.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/id.json b/packages/esm-patient-banner-app/translations/id.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/id.json +++ b/packages/esm-patient-banner-app/translations/id.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/it.json b/packages/esm-patient-banner-app/translations/it.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/it.json +++ b/packages/esm-patient-banner-app/translations/it.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/km.json b/packages/esm-patient-banner-app/translations/km.json index 233d56abb5..3c53df1521 100644 --- a/packages/esm-patient-banner-app/translations/km.json +++ b/packages/esm-patient-banner-app/translations/km.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "អាសយដ្ឋានជួរទី១", "address2": "អសយដ្ឋានជួរទី 2", "city": "ទីក្រុង", "cityVillage": "ទីក្រុង", "country": "ប្រទេស", "countyDistrict": "ស្រុក/ខ័ណ្ឌ", + "deceased": "Deceased", "district": "ស្រុក/ខ័ណ្ឌ", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "លេខកូដតំបន់", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "រដ្ឋ", "stateProvince": "រដ្ឋ", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/ne.json b/packages/esm-patient-banner-app/translations/ne.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/ne.json +++ b/packages/esm-patient-banner-app/translations/ne.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/pt.json b/packages/esm-patient-banner-app/translations/pt.json index 47d6730993..5a0b17e8cc 100644 --- a/packages/esm-patient-banner-app/translations/pt.json +++ b/packages/esm-patient-banner-app/translations/pt.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Endereço linha 1", "address2": "Endereço linha 2", "city": "Cidade", "cityVillage": "cidade", "country": "País", "countyDistrict": "Distrito", + "deceased": "Deceased", "district": "Distrito", + "from_lower": "from", "implementationLogo": "Logotipo de implementação", "patientAge": "Idade:", "patientDateOfBirthWithSeparator": "Data de nascimento:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Nome do utente:", "postalCode": "Caixa postal", "printIdentifierSticker": "Imprimir etiqueta do identificador", + "started": "Started", "state": "Estado", "stateProvince": "Estado", "telephoneNumberWithSeparator": "Número de Telefone:" diff --git a/packages/esm-patient-banner-app/translations/pt_BR.json b/packages/esm-patient-banner-app/translations/pt_BR.json new file mode 100644 index 0000000000..d6f528ff35 --- /dev/null +++ b/packages/esm-patient-banner-app/translations/pt_BR.json @@ -0,0 +1,24 @@ +{ + "activeVisit": "Active Visit", + "address1": "Address line 1", + "address2": "Address line 2", + "city": "City", + "cityVillage": "city", + "country": "Country", + "countyDistrict": "District", + "deceased": "Deceased", + "district": "District", + "from_lower": "from", + "implementationLogo": "Implementation logo", + "patientAge": "Age:", + "patientDateOfBirthWithSeparator": "Date of birth:", + "patientGenderWithSeparator": "Gender:", + "patientIdentifierSticker": "Patient identifier sticker", + "patientNameWithSeparator": "Patient name:", + "postalCode": "Postal code", + "printIdentifierSticker": "Print identifier sticker", + "started": "Started", + "state": "State", + "stateProvince": "State", + "telephoneNumberWithSeparator": "Telephone number:" +} diff --git a/packages/esm-patient-banner-app/translations/qu.json b/packages/esm-patient-banner-app/translations/qu.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/qu.json +++ b/packages/esm-patient-banner-app/translations/qu.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/si.json b/packages/esm-patient-banner-app/translations/si.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/si.json +++ b/packages/esm-patient-banner-app/translations/si.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/sw.json b/packages/esm-patient-banner-app/translations/sw.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/sw.json +++ b/packages/esm-patient-banner-app/translations/sw.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/sw_KE.json b/packages/esm-patient-banner-app/translations/sw_KE.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/sw_KE.json +++ b/packages/esm-patient-banner-app/translations/sw_KE.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/tr.json b/packages/esm-patient-banner-app/translations/tr.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/tr.json +++ b/packages/esm-patient-banner-app/translations/tr.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/tr_TR.json b/packages/esm-patient-banner-app/translations/tr_TR.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/tr_TR.json +++ b/packages/esm-patient-banner-app/translations/tr_TR.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/uk.json b/packages/esm-patient-banner-app/translations/uk.json index 61c50e2670..d6f528ff35 100644 --- a/packages/esm-patient-banner-app/translations/uk.json +++ b/packages/esm-patient-banner-app/translations/uk.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Address line 1", "address2": "Address line 2", "city": "City", "cityVillage": "city", "country": "Country", "countyDistrict": "District", + "deceased": "Deceased", "district": "District", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "Postal code", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/vi.json b/packages/esm-patient-banner-app/translations/vi.json index c1abe8095a..59f68f52a1 100644 --- a/packages/esm-patient-banner-app/translations/vi.json +++ b/packages/esm-patient-banner-app/translations/vi.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "Địa chỉ 1", "address2": "Địa chỉ 2", "city": "Thành phố", "cityVillage": "thành phố", "country": "Đất nước", "countyDistrict": "Huyện", + "deceased": "Deceased", "district": "Huyện", + "from_lower": "from", "implementationLogo": "Logo triển khai", "patientAge": "Tuổi\"", "patientDateOfBirthWithSeparator": "Ngày sinh:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Tên bệnh nhân:", "postalCode": "Mã bưu chính", "printIdentifierSticker": "In nhãn dán nhận dạng", + "started": "Started", "state": "State", "stateProvince": "State", "telephoneNumberWithSeparator": "Số điện thoại:" diff --git a/packages/esm-patient-banner-app/translations/zh.json b/packages/esm-patient-banner-app/translations/zh.json index 2a7db4c417..0c64edf158 100644 --- a/packages/esm-patient-banner-app/translations/zh.json +++ b/packages/esm-patient-banner-app/translations/zh.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "地址行1", "address2": "地址行2", "city": "城市", "cityVillage": "城市", "country": "国家", "countyDistrict": "区县", + "deceased": "Deceased", "district": "区县", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "邮政编码", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "省份", "stateProvince": "省份", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-banner-app/translations/zh_CN.json b/packages/esm-patient-banner-app/translations/zh_CN.json index bd02eec04c..7b1421b452 100644 --- a/packages/esm-patient-banner-app/translations/zh_CN.json +++ b/packages/esm-patient-banner-app/translations/zh_CN.json @@ -1,11 +1,14 @@ { + "activeVisit": "Active Visit", "address1": "地址行1", "address2": "地址行2", "city": "城市", "cityVillage": "城市", "country": "国家", "countyDistrict": "区县", + "deceased": "Deceased", "district": "区县", + "from_lower": "from", "implementationLogo": "Implementation logo", "patientAge": "Age:", "patientDateOfBirthWithSeparator": "Date of birth:", @@ -14,6 +17,7 @@ "patientNameWithSeparator": "Patient name:", "postalCode": "邮政编码", "printIdentifierSticker": "Print identifier sticker", + "started": "Started", "state": "省份", "stateProvince": "省份", "telephoneNumberWithSeparator": "Telephone number:" diff --git a/packages/esm-patient-chart-app/translations/pt_BR.json b/packages/esm-patient-chart-app/translations/pt_BR.json new file mode 100644 index 0000000000..aaf1e2776a --- /dev/null +++ b/packages/esm-patient-chart-app/translations/pt_BR.json @@ -0,0 +1,182 @@ +{ + "addAPastVisit": "Add a past visit", + "additionalVisitInformationUpdatedSuccessfully": "Additional visit information updated successfully", + "addPastVisit": "Add past visit", + "addPastVisitText": "You can add a new past visit or update an old one. Choose from one of the options below to continue.", + "all": "All", + "allEncounters": "All encounters", + "cancel": "Cancel", + "cancelActiveVisitConfirmation": "Are you sure you want to cancel this active visit?", + "cancellingVisit": "Cancelling visit", + "cancelVisit": "Cancel visit", + "cancelVisitExplainerMessage": "Cancelling this visit will delete its associated encounters", + "causeOfDeath": "Cause of death", + "causeOfDeath_lower": "cause of death concepts configured in the system", + "causeOfDeathIsRequired": "Please select the cause of death", + "checkFilters": "Check the filters above", + "close": "Close", + "confirm": "Confirm", + "confirmDeletingVisitTextWithStartAndEndDate": "Are you sure you want to delete {{visit}} which started {{visitStartDate}} and ended {{visitEndDate}}?", + "confirmModifyingVisitDateToAccomodateEncounter": "The encounter date falls outside the designated visit date range. Would you like to modify the visit date to accommodate the new encounter date?", + "currentVisit": "Current visit", + "date": "Date", + "dateAndTime": "Date & time", + "dateOfDeath": "Date of death", + "deathDateRequired": "Please select the date of death", + "delete": "Delete", + "deleteEncounter": "Delete encounter", + "deleteEncounterConfirmationText": "Are you sure you want to delete this encounter? This action can't be undone.", + "deleteThisEncounter": "Delete this encounter", + "deleteVisit": "Delete visit", + "deleteVisitDialogHeader": "Are you sure you want to delete visit?", + "deletingVisit": "Deleting visit", + "deletingVisitWillDeleteEncounters": "Deleting this visit will delete all associated encounters.", + "diagnoses": "Diagnoses", + "discard": "Discard", + "dose": "Dose", + "editPastVisit": "Edit past visit", + "editThisEncounter": "Edit this encounter", + "editThisVisit": "Edit this visit", + "editVisitDetails": "Edit visit details", + "emptyStateText": "There are no {{displayText}} to display for this patient", + "encounterDeleted": "Encounter deleted", + "encounters": "Encounters", + "encounters__lower": "encounters", + "encounters_title": "Encounters", + "encounterType": "Encounter type", + "end": "End", + "endActiveVisitConfirmation": "Are you sure you want to end this active visit?", + "endDate": "End date", + "endDate_title": "End date", + "endVisit": "End visit", + "endVisit_title": "End Visit", + "endVisitExplainerMessage": "Ending this visit means that you will no longer be able to add encounters to it. If you need to add an encounter, you can create a new visit for this patient or edit a past one.", + "enterNonCodedCauseOfDeath": "Enter non-coded cause of death", + "error": "Error", + "errorCancellingVisit": "Error cancelling active visit", + "errorCopy": "Sorry, there was a problem displaying this information. You can try to reload this page, or contact the site administrator and quote the error code above.", + "errorCreatingVisitAttribute": "Could not delete {{attributeName}} attribute", + "errorDeletingVisit": "Error deleting visit", + "errorDeletingVisitAttribute": "Could not delete {{attributeName}} attribute", + "errorEndingVisit": "Error ending visit", + "errorMarkingPatientAlive": "Error marking patient alive", + "errorMarkingPatientDeceased": "Error marking patient deceased", + "errorOccuredDeletingVisit": "An error occured when deleting visit", + "errorUpdatingVisitAttribute": "Could not update {{attributeName}} attribute", + "errorUpdatingVisitDetails": "Error updating visit details", + "errorWhenRestoringVisit": "Error occured when restoring {{visit}}", + "failedDeleting": "couldn't be deleted", + "failedToLoadCurrentVisit": "Failed loading current visit", + "fieldRequired": "This field is required", + "filterByEncounterType": "Filter by encounter type", + "form": "Form name", + "futureStartTime": "Visit start time cannot be in the future", + "goToThisEncounter": "Go to this encounter", + "indication": "Indication", + "invalidTimeFormat": "Invalid time format", + "invalidVisitStartDate": "Start date needs to be on or before {{firstEncounterDatetime}}", + "invalidVisitStopDate": "Visit stop date time cannot be on or before visit start date time", + "loading": "Loading", + "loadingVisit": "Loading current visit...", + "loadMore": "Load more", + "location": "Location", + "markAliveSuccessfully": "Patient marked alive succesfully", + "markDeceasedWarning": "Marking the patient as deceased will end any active visits for this patient", + "markPatientAlive": "Mark patient alive", + "markPatientAliveConfirmation": "Are you sure you want to mark this patient alive?", + "markPatientDeceased": "Mark patient deceased", + "medications": "Medications", + "medications__lower": "medications", + "missingVisitType": "Missing visit type", + "modifyVisitDate": "Modify visit date", + "movePatient": "Move patient", + "movePatientToNextService": "Move patient to next service", + "name": "Name", + "no": "No", + "noActiveVisit": "No Active Visit", + "noActiveVisitMessage": "active visit", + "noActiveVisitNoRDEText": "You can't add data to the patient chart without an active visit. Would you like to start a new visit?", + "noActiveVisitText": "You can't add data to the patient chart without an active visit. Choose from one of the options below to continue.", + "noDiagnosesFound": "No diagnoses found", + "noEncountersFound": "No encounters found", + "noEncountersToDisplay": "No encounters to display", + "noMatchingCodedCausesOfDeath": "No matching coded causes of death", + "nonCodedCauseOfDeath": "Non-coded cause of death", + "nonCodedCauseOfDeathRequired": "Please enter the non-coded cause of death", + "noObservationsFound": "No observations found", + "notes": "Notes", + "notes__lower": "notes", + "noVisitTypesToDisplay": "No visit types to display", + "optional": "optional", + "orderDurationAndUnit": "for {{duration}} {{durationUnit}}", + "orderIndefiniteDuration": "Indefinite duration", + "paginationItemsCount_one": "{{pageItemsCount}} / {{count}} item", + "paginationItemsCount_other": "{{pageItemsCount}} / {{count}} items", + "paginationPageText_one": "of {{count}} page", + "paginationPageText_other": "of {{count}} pages", + "partOfFormDidntLoad": "Part of the form did not load", + "pastVisitErrorText": "Past visit error", + "pastVisits": "Past visits", + "Patient Summary": "Patient summary", + "program": "Program", + "provider": "Provider", + "quantity": "Quantity", + "recommended": "Recommended", + "record": "Record", + "refills": "Refills", + "refreshToTryAgain": "Please refresh to try again", + "required": "Required", + "retrospectiveEntry": "Retrospective entry", + "saveAndClose": "Save and close", + "saving": "Saving", + "searchForAVisitType": "Search for a visit type", + "searchForCauseOfDeath": "Search for a cause of death", + "searchThisList": "Search this list", + "seeAll": "See all", + "selectAnOption": "Select an option", + "selectLocation": "Select a location", + "selectProgramType": "Select program type", + "selectVisitType": "Please select a visit type", + "start": "Start", + "startAVisit": "Start a visit", + "startDate": "Start date", + "startingVisit": "Starting visit", + "startNewVisit": "Start new visit", + "startVisit": "Start visit", + "startVisitError": "Error starting visit", + "successfullyDeleted": "successfully deleted", + "tests": "Tests", + "time": "Time", + "timeFormat ": "Time Format", + "type": "Type", + "undo": "Undo", + "updateVisit": "Update visit", + "updatingVisit": "Updating visit", + "visit": "Visit", + "visitAttributes": "Visit attributes", + "visitCancelled": "Visit cancelled", + "visitCancelSuccessMessage": "Active {{visit}} cancelled successfully", + "visitDeleted": "{{visit}} deleted", + "visitDeletedSuccessfully": "{{visit}} deleted successfully", + "visitDetailsUpdated": "Visit details updated", + "visitDetailsUpdatedSuccessfully": "{{visit}} updated successfully", + "visitEnded": "Visit ended", + "visitEndSuccessfully": "Ended current visit successfully", + "visitLocation": "Visit location", + "visitNotRestored": "Visit couldn't be restored", + "visitRestored": "Visit restored", + "visitRestoredSuccessfully": "{{visit}} restored successfully", + "visits": "visits", + "Visits": "Visits", + "visitStartDatetime": "Visit start date and time", + "visitStarted": "Visit started", + "visitStartedSuccessfully": "{{visit}} started successfully", + "visitStopDateMustBeAfterMostRecentEncounter": "Stop date needs to be on or after {{lastEncounterDatetime}}", + "visitStopDatetime": "Visit stop date and time", + "visitSummaries": "Visit summaries", + "visitType": "Visit type", + "visitType_title": "Visit Type", + "visitTypeRequired": "Visit type is required", + "warning": "Warning", + "yes": "Yes" +} diff --git a/packages/esm-patient-conditions-app/translations/pt_BR.json b/packages/esm-patient-conditions-app/translations/pt_BR.json new file mode 100644 index 0000000000..1f6dbeb2cd --- /dev/null +++ b/packages/esm-patient-conditions-app/translations/pt_BR.json @@ -0,0 +1,41 @@ +{ + "active": "Active", + "add": "Add", + "cancel": "Cancel", + "checkFilters": "Check the filters above", + "clinicalStatus": "Clinical status", + "clinicalStatusRequired": "A clinical status is required", + "condition": "Condition", + "conditionDeleted": "Condition deleted", + "conditionNowVisible": "It is now visible on the Conditions page", + "conditionRequired": "A condition is required", + "conditions": "Conditions", + "Conditions": "Conditions", + "conditionSaved": "Condition saved successfully", + "conditionUpdated": "Condition updated", + "dateOfOnset": "Date of onset", + "delete": "Delete", + "deleteCondition": "Delete condition", + "deleteModalConfirmationText": "Are you sure you want to delete this condition?", + "deleting": "Deleting", + "edit": "Edit", + "editCondition": "Edit a Condition", + "endDate": "End date", + "enterCondition": "Enter condition", + "errorCreatingCondition": "Error creating condition", + "errorDeletingCondition": "Error deleting condition", + "errorUpdatingCondition": "Error updating condition", + "inactive": "Inactive", + "noConditionsToDisplay": "No conditions to display", + "noResultsFor": "No results for", + "onsetDate": "Onset date", + "recordCondition": "Record a Condition", + "required": "Required", + "saveAndClose": "Save & close", + "saving": "Saving", + "searchConditions": "Search conditions", + "searching": "Searching", + "seeAll": "See all", + "show": "Show", + "status": "Status" +} diff --git a/packages/esm-patient-flags-app/translations/pt_BR.json b/packages/esm-patient-flags-app/translations/pt_BR.json new file mode 100644 index 0000000000..69c9683858 --- /dev/null +++ b/packages/esm-patient-flags-app/translations/pt_BR.json @@ -0,0 +1,29 @@ +{ + "activeFirst": "Active first", + "alphabetically": "A - Z", + "clearSearch": "Clear search", + "closeFlagsBar": "Close flags bar", + "disableFlagError": "Disable flag error", + "disablingFlag": "Disabling flag...", + "discard": "Discard", + "edit": "Edit", + "editFlags": "Edit flags", + "editPatientFlags": "Edit patient flags", + "enabledFlag": "Enabled flag", + "enablingFlag": "Enabling flag...", + "flagCount_one": "{{count}} risk flag", + "flagCount_other": "{{count}} risk flags", + "flagDisabled": "Flag disabled", + "flagDisabledSuccessfully": "Flag successfully disabled", + "flagDisableError": "Error disabling the flag", + "flagEnabled": "flag enabled", + "flagEnabledSuccessfully": "Flag successfully enabled", + "flagEnableError": "Error enabling flag", + "loading": "Loading", + "matchesForSearchTerm_one": "{{count}} flag", + "matchesForSearchTerm_other": "{{count}} flags", + "noFlagsFound": "Sorry, no flags found matching your search", + "retiredFirst": "Retired first", + "saveAndClose": "Save & close", + "searchForAFlag": "Search for a flag" +} diff --git a/packages/esm-patient-forms-app/translations/pt_BR.json b/packages/esm-patient-forms-app/translations/pt_BR.json new file mode 100644 index 0000000000..7cf1901ce6 --- /dev/null +++ b/packages/esm-patient-forms-app/translations/pt_BR.json @@ -0,0 +1,25 @@ +{ + "clinicalForm": "Clinical Form", + "clinicalForms": "Clinical forms", + "editForm": "Edit form", + "formName": "Form Name (A-Z)", + "forms": "Forms", + "formSearchHint": "Try searching for the form using an alternative name or keyword", + "homeOverviewCardView": "View", + "lastCompleted": "Last completed", + "never": "Never", + "noFormsToDisplay": "There are no forms to display.", + "noMatchingFormsAvailable": "There are no {{formCategory}} forms to display", + "noMatchingFormsToDisplay": "No matching forms to display", + "offlineForms": "Offline forms", + "offlineForms__lower": "offline forms", + "offlineFormsOverviewCardAvailableOffline": "Available offline", + "offlineFormsTableFormAvailableOffline": "Offline", + "offlineFormsTableFormNameHeader": "Form name", + "offlineFormsTitle": "Offline forms", + "offlinePatientsTableSearchLabel": "Search this list", + "offlinePatientsTableSearchPlaceholder": "Search this list", + "offlineToggle": "Offline toggle", + "searchForAForm": "Search for a form", + "searchThisList": "Search this list" +} diff --git a/packages/esm-patient-immunizations-app/translations/pt_BR.json b/packages/esm-patient-immunizations-app/translations/pt_BR.json new file mode 100644 index 0000000000..510dd0e3b5 --- /dev/null +++ b/packages/esm-patient-immunizations-app/translations/pt_BR.json @@ -0,0 +1,31 @@ +{ + "add": "Add", + "cancel": "Cancel", + "doseNumber": "Dose number within series", + "doseNumberWithinSeries": "Dose number within series", + "edit": "Edit", + "error": "Error", + "errorSaving": "Error saving vaccination", + "expirationDate": "Expiration Date", + "goToSummary": "Go to Summary", + "immunization": "Immunization", + "immunizations": "Immunizations", + "Immunizations": "Immunizations", + "immunizations__lower": "immunizations", + "immunizationWorkspaceTitle": "Immunization Form", + "lotNumber": "Lot Number", + "manufacturer": "Manufacturer", + "pleaseSelect": "Please select", + "recentVaccination": "Recent vaccination", + "save": "Save", + "seeAll": "See all", + "sequence": "Sequence", + "singleDoseOn": "Single Dose on", + "time": "Time", + "timeFormat ": "Time Format", + "vaccinationDate": "Vaccination date", + "vaccinationDateRequired": "Vaccination date required", + "vaccinationSaved": "Vaccination saved successfully", + "vaccine": "Vaccine", + "vaccineRequired": "Vaccine required" +} diff --git a/packages/esm-patient-lists-app/translations/pt_BR.json b/packages/esm-patient-lists-app/translations/pt_BR.json new file mode 100644 index 0000000000..90c336895d --- /dev/null +++ b/packages/esm-patient-lists-app/translations/pt_BR.json @@ -0,0 +1,21 @@ +{ + "backToPatientLists": "Back to patient lists", + "checkFilters": "Check the filters above", + "createdOn": "Created on", + "identifier": "Identifier", + "listName": "List name", + "listType": "List type", + "name": "Name", + "noMatchingListsFound": "No matching lists to display", + "noMatchingPatients": "No matching patients to display", + "noPatientListsToDisplay": "No patient lists to display", + "noPatientsInList": "There are no patients in this list", + "numberOfPatients": "No. of patients", + "patientListDetailWorkspaceTitle": "Patient List Details", + "patientLists": "Patient lists", + "patientListsWorkspaceTitle": "Patient Lists", + "patients": "patients", + "searchThisList": "Search this list", + "sex": "Sex", + "startDate": "Start Date" +} diff --git a/packages/esm-patient-medications-app/translations/ar.json b/packages/esm-patient-medications-app/translations/ar.json index 862a27e506..94d57e0f0c 100644 --- a/packages/esm-patient-medications-app/translations/ar.json +++ b/packages/esm-patient-medications-app/translations/ar.json @@ -43,7 +43,7 @@ "male": "ذكر", "medicationDurationAndUnit": "لمدة {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "مدة غير محددة", - "Medications": "Medications", + "Medications": "الأدوية", "modify": "تعديل", "none": "لا شيء", "noResultsForDrugSearch": "لا توجد نتائج لـ \"{{searchTerm}}\"", diff --git a/packages/esm-patient-medications-app/translations/pt_BR.json b/packages/esm-patient-medications-app/translations/pt_BR.json new file mode 100644 index 0000000000..5eb48ed2c4 --- /dev/null +++ b/packages/esm-patient-medications-app/translations/pt_BR.json @@ -0,0 +1,95 @@ +{ + "activeMedicationsDisplayText": "Active medications", + "activeMedicationsHeaderTitle": "active medications", + "activeMedicationsTableTitle": "Active Medications", + "add": "Add", + "addDrugOrderWorkspaceTitle": "Add drug order", + "backToOrderBasket": "Back to order basket", + "clearSearchResults": "Clear Results", + "decrement": "Decrement", + "details": "Details", + "directlyAddToBasket": "Add to basket", + "discard": "Discard", + "discontinue": "Discontinue", + "discontinued": "Discontinued", + "dispensingInformation": "3. Dispensing instructions", + "dosageInstructions": "1. Dosage instructions", + "dosageRequiredErrorMessage": "Dosage is required", + "dose": "Dose", + "drugAlreadyPrescribed": "Already prescribed", + "drugOrders": "Drug orders", + "duration": "Duration", + "durationUnit": "Duration unit", + "durationUnitPlaceholder": "Duration Unit", + "editDispensingUnit": "Quantity unit", + "editDosageUnitsPlaceholder": "Unit", + "editDosageUnitsTitle": "Dose unit", + "editDoseComboBoxPlaceholder": "Dose", + "editDoseComboBoxTitle": "Dose", + "editFrequencyComboBoxTitle": "Frequency", + "editRouteComboBoxTitle": "Route", + "error": "Error", + "errorFetchingDrugOrderTemplates": "Error fetching drug order templates", + "errorFetchingDrugResults": "Error fetching results for \"{{searchTerm}}\"", + "errorFetchingOrderConfig": "Error occured when fetching Order config", + "female": "Female", + "freeDosageErrorMessage": "Add free dosage note", + "freeTextDosage": "Free text dosage", + "goToDrugOrderForm": "Order form", + "increment": "Increment", + "indication": "Indication", + "indicationErrorMessage": "Indication is required", + "indicationPlaceholder": "e.g. \"Hypertension\"", + "male": "Male", + "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", + "medicationIndefiniteDuration": "Indefinite duration", + "Medications": "Medications", + "modify": "Modify", + "none": "None", + "noResultsForDrugSearch": "No results to display for \"{{searchTerm}}\"", + "numRefillsErrorMessage": "Number of refills is required", + "onDate": "on", + "or": "or", + "orderActionDiscontinue": "Discontinue", + "orderActionIncomplete": "Incomplete", + "orderActionNew": "New", + "orderActionRenew": "Renew", + "orderActionRevise": "Modify", + "orderForm": "Order Form", + "other": "Other", + "pastMedicationsDisplayText": "Past medications", + "pastMedicationsHeaderTitle": "past medications", + "pastMedicationsTableTitle": "Past Medications", + "patientInstructions": "Patient instructions", + "patientInstructionsPlaceholder": "Additional dosing instructions (e.g. \"Take after eating\")", + "pillDispensedErrorMessage": "Quantity to dispense is required", + "prescriptionDuration": "2. Prescription duration", + "prescriptionRefills": "Prescription refills", + "print": "Print", + "printedBy": "Printed by", + "prn": "P.R.N.", + "prnReason": "P.R.N. reason", + "prnReasonPlaceholder": "Reason to take medicine", + "quantity": "Quantity", + "quantityToDispense": "Quantity to dispense", + "refills": "Refills", + "removeFromBasket": "Remove from basket", + "reorder": "Reorder", + "returnToOrderBasket": "Return to order basket", + "saveOrder": "Save order", + "searchAgain": "search again", + "searchFieldPlaceholder": "Search for a drug or orderset (e.g. \"Aspirin\")", + "searchResultsMatchesForTerm_one": "{{count}} result for \"{{searchTerm}}\"", + "searchResultsMatchesForTerm_other": "{{count}} results for \"{{searchTerm}}\"", + "selectFrequencyErrorMessage": "Frequency is required", + "selectQuantityUnitsErrorMessage": "Quantity unit is required", + "selectRouteErrorMessage": "Route is required", + "selectUnitErrorMessage": "Dose unit is required", + "startDate": "Start date", + "takeAsNeeded": "Take as needed", + "tryReopeningTheForm": "Please try launching the form again", + "trySearchingAgain": "Please try searching again", + "tryTo": "Try to", + "unknown": "Unknown", + "usingADifferentTerm": "using a different term" +} diff --git a/packages/esm-patient-notes-app/translations/pt_BR.json b/packages/esm-patient-notes-app/translations/pt_BR.json new file mode 100644 index 0000000000..51df0d8d62 --- /dev/null +++ b/packages/esm-patient-notes-app/translations/pt_BR.json @@ -0,0 +1,38 @@ +{ + "add": "Add", + "addImage": "Add image", + "addVisitNote": "Add a visit note", + "clinicalNoteLabel": "Write your notes", + "clinicalNotePlaceholder": "Write any notes here", + "date": "Date", + "diagnoses": "Diagnoses", + "discard": "Discard", + "emptyDiagnosisText": "No diagnosis selected — Enter a diagnosis below", + "enterPrimaryDiagnoses": "Enter Primary diagnoses", + "enterSecondaryDiagnoses": "Enter Secondary diagnoses", + "error": "Error", + "errorFetchingConcepts": "There was a problem fetching concepts", + "image": "Image", + "imageRemoved": "Image removed", + "imageUploadHelperText": "Upload an image or use this device's camera to capture an image", + "noMatchingDiagnoses": "No diagnoses found matching", + "note": "Note", + "noVisitNoteToDisplay": "No visit note to display", + "primaryDiagnosis": "Primary diagnosis", + "primaryDiagnosisInputPlaceholder": "Choose a primary diagnosis", + "primaryDiagnosisRequired": "Choose at least one primary diagnosis", + "saveAndClose": "Save and close", + "saving": "Saving", + "searchForPrimaryDiagnosis": "Search for a primary diagnosis", + "searchForSecondaryDiagnosis": "Search for a secondary diagnosis", + "secondaryDiagnosis": "Secondary diagnosis", + "secondaryDiagnosisInputPlaceholder": "Choose a secondary diagnosis", + "seeAll": "See all", + "visitDate": "Visit date", + "visitNote": "Visit note", + "visitNoteNowVisible": "It is now visible on the Encounters page", + "visitNotes": "Visit notes", + "visitNoteSaved": "Visit note saved", + "visitNoteSaveError": "Error saving visit note", + "visitNoteWorkspaceTitle": "Visit Note" +} diff --git a/packages/esm-patient-orders-app/translations/ar.json b/packages/esm-patient-orders-app/translations/ar.json index 7a60686a18..91d4b9a165 100644 --- a/packages/esm-patient-orders-app/translations/ar.json +++ b/packages/esm-patient-orders-app/translations/ar.json @@ -16,7 +16,7 @@ "dateCannotBeBeforeToday": "Date cannot be before today", "dateOfOrder": "Date of order", "dateRange": "النطاق الزمني", - "directlyAddToBasket": "Add to basket", + "directlyAddToBasket": "أضف إلى السلة", "discard": "Discard", "discontinued": "Discontinued", "dosage": "الجرعة", @@ -51,8 +51,8 @@ "orderActionNew": "New", "orderActionRenew": "Renew", "orderActionRevise": "Modify", - "orderBasket": "Order basket", - "orderBasketWorkspaceTitle": "Order basket", + "orderBasket": "سلة الطلب", + "orderBasketWorkspaceTitle": "سلة الطلب", "orderCancellation": "Order cancellation", "orderCancelled": "Order cancelled", "orderCompleted": "Placed orders", diff --git a/packages/esm-patient-orders-app/translations/pt_BR.json b/packages/esm-patient-orders-app/translations/pt_BR.json new file mode 100644 index 0000000000..9d3d18d84c --- /dev/null +++ b/packages/esm-patient-orders-app/translations/pt_BR.json @@ -0,0 +1,111 @@ +{ + "actionsMenu": "Actions menu", + "activeVisitRequired": "An active visit is required to make orders", + "add": "Add", + "additionalInstructions": "Additional instructions", + "addResults": "Add results", + "allOrders": "All orders", + "backToOrderBasket": "Back to order basket", + "cancel": "Cancel", + "cancellationDate": "Cancellation date", + "cancellationDateRequired": "Cancellation date is required", + "cancelOrder": "Cancel order", + "checkFilters": "Check the filters above", + "chooseAnOption": "Choose an option", + "clearSearchResults": "Clear results", + "dateCannotBeBeforeToday": "Date cannot be before today", + "dateOfOrder": "Date of order", + "dateRange": "Date range", + "directlyAddToBasket": "Add to basket", + "discard": "Discard", + "discontinued": "Discontinued", + "dosage": "Dosage", + "dose": "Dose", + "editResults": "Edit results", + "endDate": "End date", + "enterTestResults": "Enter test results", + "error": "Error", + "errorCancellingOrder": "Error cancelling order", + "errorFetchingTestTypes": "Error fetching results for \"{{searchTerm}}\"", + "errorSavingLabResults": "Error saving lab results", + "goToDrugOrderForm": "Order form", + "indication": "Indication", + "inStock": "In stock", + "instructions": "Instructions", + "launchOrderBasket": "Launch order basket", + "loading": "Loading", + "loadingInitialValues": "Loading initial values", + "loadingTestDetails": "Loading test details", + "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", + "medicationIndefiniteDuration": "Indefinite duration", + "medications": "Medications", + "modifyOrder": "Modify order", + "noMatchingOrdersToDisplay": "No matching orders to display", + "noResultsForTestTypeSearch": "No results to display for \"{{searchTerm}}\"", + "normalRange": "Normal range", + "onDate": "on", + "or": "or", + "order": "Order", + "orderActionDiscontinue": "Discontinue", + "orderActionIncomplete": "Incomplete", + "orderActionNew": "New", + "orderActionRenew": "Renew", + "orderActionRevise": "Modify", + "orderBasket": "Order basket", + "orderBasketWorkspaceTitle": "Order basket", + "orderCancellation": "Order cancellation", + "orderCancelled": "Order cancelled", + "orderCompleted": "Placed orders", + "orderDetails": "Order details", + "ordered": "Placed order for", + "orderedBy": "Ordered by", + "ordererInformation": "Orderer information", + "orderNumber": "Order number", + "orders": "Orders", + "Orders": "Orders", + "orderType": "Order type", + "outOfStock": "Out of stock", + "pleaseFillField": "Please fill at least one field", + "pleaseFillRequiredFields": "Please fill all the required fields", + "pleaseRequiredFields": "Please fill all required fields", + "price": "Price", + "priceDisclaimer": "This price is indicative and may not reflect final costs, which could vary due to discounts, insurance coverage, or other pricing rules", + "print": "Print", + "printedBy": "Printed by", + "printOrder": "Print order", + "priority": "Priority", + "quantity": "Quantity", + "reasonForCancellation": "Reason for cancellation", + "reasonForCancellationRequired": "Reason for cancellation is required", + "referenceNumber": "Reference number", + "referenceNumberTableHeader": "{{orderType}} reference number", + "refills": "Refills", + "removeFromBasket": "Remove from basket", + "result": "Result", + "returnToOrderBasket": "Return to order basket", + "saveAndClose": "Save and close", + "saveDrugOrderFailed": "Error ordering {{orderName}}", + "saveLabResults": "Save lab results", + "saveOrder": "Save order", + "saving": "Saving", + "searchAgain": "search again", + "searchFieldOrder": "Search for {{orderType}} order", + "searchOrderables": "Search orderables", + "searchResultsMatchesForTerm_one": "{{count}} results for \"{{searchTerm}}\"", + "searchResultsMatchesForTerm_other": "{{count}} results for \"{{searchTerm}}\"", + "searchTable": "Search table", + "selectOrderType": "Select order type", + "signAndClose": "Sign and close", + "startAVisitToRecordOrders": "Start a visit to order", + "startVisit": "Start visit", + "status": "Status", + "successfullyCancelledOrder": "Order {{orderNumber}} has been cancelled successfully", + "successfullySavedLabResults": "Lab results for {{orderNumber}} have been successfully updated", + "Test Order_few": "Test orders", + "testType": "Test type", + "tryReopeningTheWorkspaceAgain": "Please try launching the workspace again", + "trySearchingAgain": "Please try searching again", + "tryTo": "Try to", + "updated": "Updated", + "usingADifferentTerm": "using a different term" +} diff --git a/packages/esm-patient-programs-app/translations/pt_BR.json b/packages/esm-patient-programs-app/translations/pt_BR.json new file mode 100644 index 0000000000..40df7b82b6 --- /dev/null +++ b/packages/esm-patient-programs-app/translations/pt_BR.json @@ -0,0 +1,38 @@ +{ + "actions": "Actions", + "active": "Active", + "activePrograms": "Active programs", + "add": "Add", + "addPrograms": "Add programs", + "cancel": "Cancel", + "carePrograms": "Care Programs", + "chooseProgram": "Choose a program", + "chooseStatus": "Choose a program status", + "completedOn": "Completed On", + "configurePrograms": "Please configure programs to continue.", + "dateCompleted": "Date completed", + "dateEnrolled": "Date enrolled", + "editProgram": "Edit Program", + "enrollmentLocation": "Enrollment location", + "enrollmentNowVisible": "It is now visible in the Programs table", + "enrollmentSaved": "Program enrollment saved", + "enrollmentUpdated": "Program enrollment updated", + "enrollmentUpdatesNowVisible": "Changes to the program are now visible in the Programs table", + "fullyEnrolled": "Enrolled in all programs", + "location": "Location", + "noEligibleEnrollments": "There are no more programs left to enroll this patient in", + "noProgramsConfigured": "No programs configured", + "programEnrollments": "Program enrollments", + "programEnrollmentSaveError": "Error saving program enrollment", + "programEnrollmentWorkspaceTitle": "Record program enrollment", + "programName": "Program name", + "programRequired": "Program is required", + "programs": "Program enrollments", + "Programs": "Programs", + "programStatus": "Program status", + "saveAndClose": "Save and close", + "saving": "Saving", + "seeAll": "See all", + "state": "State", + "status": "Status" +} diff --git a/packages/esm-patient-tests-app/translations/ar.json b/packages/esm-patient-tests-app/translations/ar.json index 7bfb50bc08..3f1ded3540 100644 --- a/packages/esm-patient-tests-app/translations/ar.json +++ b/packages/esm-patient-tests-app/translations/ar.json @@ -18,7 +18,7 @@ "date": "تاريخ", "dateCollected": "عرض تاريخ الجمع", "dateTime": "التاريخ والوقت", - "directlyAddToBasket": "Add to basket", + "directlyAddToBasket": "أضف إلى السلة", "discard": "تجاهل", "endDate": "End date", "error": "خطأ", @@ -63,7 +63,7 @@ "resetView": "to reset this view", "resulted": "أُظهرت", "results": "نتائج", - "Results": "Results", + "Results": "نتائج", "resultsText": "نتائج", "returnToOrderBasket": "Return to order basket", "returnToTimeline": "العودة إلى الجدول الزمني", diff --git a/packages/esm-patient-tests-app/translations/pt_BR.json b/packages/esm-patient-tests-app/translations/pt_BR.json new file mode 100644 index 0000000000..5b352ddf92 --- /dev/null +++ b/packages/esm-patient-tests-app/translations/pt_BR.json @@ -0,0 +1,108 @@ +{ + "add": "Add", + "additionalInstructions": "Additional instructions", + "addLabOrderWorkspaceTitle": "Add lab order", + "back": "Back", + "backToOrderBasket": "Back to order basket", + "backToTimeline": "Back to timeline", + "cancel": "Cancel", + "checkFilters": "Check the filters above", + "clear": "Clear", + "clearFilters": "Clear filters", + "clearSearchResults": "Clear results", + "closeSearchBar": "Close search", + "data": "data", + "dataLoadError": "Data load error", + "dataTimeline": "Data Timeline", + "dataTimelineText": "Data timeline", + "date": "Date", + "dateCollected": "Displaying date collected", + "dateTime": "Date and time", + "directlyAddToBasket": "Add to basket", + "discard": "Discard", + "endDate": "End date", + "error": "Error", + "errorFetchingTestTypes": "Error fetching results for \"{{searchTerm}}\"", + "female": "Female", + "goToDrugOrderForm": "Order form", + "hideResultsTable": "Hide results table", + "individualTests": "Individual tests", + "labOrders": "Lab orders", + "male": "Male", + "moreResultsAvailable": "More results available", + "noPanelsFound": "No panels found", + "noResultsForTestTypeSearch": "No results to display for \"{{searchTerm}}\"", + "noResultsToDisplay": "No results to display", + "noTestResultsWithinSpecifiedRange": "No test results found within the specified range", + "observationsDisplayText": "observations", + "onDate": "on", + "or": "or", + "orderActionDiscontinue": "Discontinue", + "orderActionIncomplete": "Incomplete", + "orderActionNew": "New", + "orderActionRenew": "Renew", + "orderActionRevise": "Modify", + "ordered": "Ordered", + "orderReason": "Order reason", + "other": "Other", + "overTime": "Over time", + "panel": "Panel", + "panels": "panels", + "pleaseRequiredFields": "Please fill all required fields", + "print": "Print", + "printedBy": "Printed by", + "printTestResults": "Print test results", + "priority": "Priority", + "recentResults": "Recent Results", + "recentTestResults": "recent test results", + "referenceNumber": "Reference number", + "referenceRange": "Reference range", + "removeFromBasket": "Remove from basket", + "reset": "Reset", + "resetTreeText": "Reset tree", + "resetView": "to reset this view", + "resulted": "Resulted", + "results": "Results", + "Results": "Results", + "resultsText": "results", + "returnToOrderBasket": "Return to order basket", + "returnToTimeline": "Return to timeline", + "saveOrder": "Save order", + "search": "Search", + "searchAgain": "search again", + "searchByTestName": "Search by test name", + "searchFieldPlaceholder": "Search for a test type", + "searchResultsMatchesForTerm_one": "{{count}} result for \"{{searchTerm}}\"", + "searchResultsMatchesForTerm_other": "{{count}} results for \"{{searchTerm}}\"", + "searchResultsTextFor_one": "{{count}} search result for {{searchTerm}}", + "searchResultsTextFor_other": "{{count}} search results for {{searchTerm}}", + "seeAllResults": "See all results", + "showResultsTable": "Show results table", + "showTree": "Show tree", + "startDate": "Start date", + "testName": "Test name", + "testResults": "test results", + "testResults_title": "Test Results", + "testResultsData": "Test results data", + "tests": "Tests", + "testType": "Test type", + "timeline": "Timeline", + "timelineData_lower": "timeline data", + "tree": "Tree", + "trend": "Trend", + "trendline": "Trendline", + "trendlineRangeSelector1Day": "1 day", + "trendlineRangeSelector1Month": "1 month", + "trendlineRangeSelector1Year": "1 year", + "trendlineRangeSelector5Days": "5 days", + "trendlineRangeSelector5Years": "5 years", + "trendlineRangeSelectorAll": "All", + "trendlineRangeSelectorMonths": "6 months", + "trySearchingAgain": "Please try searching again", + "tryTo": "Try to", + "unknown": "Unknown", + "usingADifferentTerm": "using a different term", + "value": "Value", + "view": "View", + "viewTimeline": "View timeline" +} diff --git a/packages/esm-patient-vitals-app/translations/pt_BR.json b/packages/esm-patient-vitals-app/translations/pt_BR.json new file mode 100644 index 0000000000..1711e690e2 --- /dev/null +++ b/packages/esm-patient-vitals-app/translations/pt_BR.json @@ -0,0 +1,63 @@ +{ + "abnormalValue": "Abnormal value", + "add": "Add", + "additionalNoteText": "Type any additional notes here", + "biometricDisplayed": "Biometric displayed", + "biometrics": "Biometrics", + "biometrics_lower": "biometrics", + "bloodPressure": "Blood Pressure", + "bloodPressureAbbreviated": "BP", + "bmi": "BMI", + "bp": "BP", + "calculatedBmi": "BMI (calc.)", + "checkForValidity": "Some of the values entered are invalid", + "date": "Date", + "dateAndTime": "Date and time", + "daysOldVitals_one": "<0>These vitals are <1>{{count}} day old", + "daysOldVitals_other": "<0>These vitals are <1>{{count}} days old", + "diastolic": "diastolic", + "discard": "Discard", + "error": "Error", + "female": "Female", + "goToSummary": "Go to Summary", + "heartRate": "Heart rate", + "height": "Height", + "loading": "Loading", + "male": "Male", + "muac": "MUAC", + "noDataRecorded": "No data has been recorded for this patient", + "notes": "Notes", + "other": "Other", + "outOfDateVitals": "<0>These vitals are <1>out of date", + "overOneWeekOldVitals": "<0>These vitals are <1>over one week old", + "oxygenSaturation": "Oxygen saturation", + "pleaseFillField": "Please fill at least one field", + "print": "Print", + "printedBy": "Printed by", + "pulse": "Pulse", + "recordBiometrics": "Record biometrics", + "recordVitals": "Record vitals", + "recordVitalsAndBiometrics": "Record Vitals and Biometrics", + "respirationRate": "Respiration rate", + "respiratoryRate": "R. rate", + "respiratoryRateAbbreviated": "R. Rate", + "saveAndClose": "Save and close", + "seeAll": "See all", + "spo2": "SpO2", + "systolic": "systolic", + "temp": "Temp", + "temperature": "Temperature", + "temperatureAbbreviated": "Temp", + "unknown": "Unknown", + "validationInputError": "Value must be between {{min}} and {{max}}", + "vitals": "Vitals", + "Vitals & Biometrics": "Vitals & Biometrics", + "vitalsAndBiometrics": "Vitals and biometrics", + "vitalsAndBiometricsNowAvailable": "They are now visible on the Vitals and Biometrics page", + "vitalsAndBiometricsRecorded": "Vitals and Biometrics saved", + "vitalsAndBiometricsSaveError": "Error saving vitals and biometrics", + "vitalsHistory": "Vitals history", + "vitalSignDisplayed": "Vital sign displayed", + "vitalSigns": "Vital signs", + "weight": "Weight" +} From ee59431fe0a43bf7b93badbd07527343c45de95d Mon Sep 17 00:00:00 2001 From: Laurent Ouma <98098891+Omoshlawi@users.noreply.github.com> Date: Mon, 16 Dec 2024 14:33:31 +0400 Subject: [PATCH 09/15] (feat)O3-4175 add ability to view and edit completed lab results (#2100) * Cleaned state management, launching form in edit mode * Fixed obs update for none grouped obs * Fixed form mutation, added lab results component for complete lab orders * update lab result test * updated translations * optimized imports * Diplay results in accordion in a tabular form same as in orders --------- Co-authored-by: makombe --- .../src/config-schema.ts | 3 +- .../actions-buttons/start-visit.component.tsx | 10 +- .../visit-header/visit-header.component.tsx | 2 +- .../visit/start-visit-button.component.tsx | 4 +- .../edit-visit-details.component.tsx | 2 +- .../start-visit-dialog.component.tsx | 4 +- .../current-visit-summary.component.tsx | 4 +- .../src/components/test-order.component.tsx | 6 +- packages/esm-patient-orders-app/src/index.ts | 1 + .../src/lab-results/lab-result.component.tsx | 46 ++++++ .../src/lab-results/lab-result.scss | 18 ++ .../lab-results-form-field.component.tsx | 7 +- .../lab-results-form.component.tsx | 156 +++++++++++------- .../src/lab-results/lab-results-form.test.tsx | 35 ++++ .../src/lab-results/lab-results.resource.ts | 51 +++++- .../esm-patient-orders-app/src/routes.json | 10 +- .../translations/en.json | 2 + 17 files changed, 277 insertions(+), 84 deletions(-) create mode 100644 packages/esm-patient-orders-app/src/lab-results/lab-result.component.tsx create mode 100644 packages/esm-patient-orders-app/src/lab-results/lab-result.scss diff --git a/packages/esm-patient-banner-app/src/config-schema.ts b/packages/esm-patient-banner-app/src/config-schema.ts index 23725e4158..5730abe815 100644 --- a/packages/esm-patient-banner-app/src/config-schema.ts +++ b/packages/esm-patient-banner-app/src/config-schema.ts @@ -47,7 +47,8 @@ export const configSchema = { }, printScale: { _type: Type.String, - _description: 'Set the scale for the printed content. A value between 0 and 1 shrinks the content, while a value greater than 1 enlarges it. The scale must be greater than 0.', + _description: + 'Set the scale for the printed content. A value between 0 and 1 shrinks the content, while a value greater than 1 enlarges it. The scale must be greater than 0.', _default: '1', }, identifiersToDisplay: { diff --git a/packages/esm-patient-chart-app/src/actions-buttons/start-visit.component.tsx b/packages/esm-patient-chart-app/src/actions-buttons/start-visit.component.tsx index 08f57f984c..3d568f5833 100644 --- a/packages/esm-patient-chart-app/src/actions-buttons/start-visit.component.tsx +++ b/packages/esm-patient-chart-app/src/actions-buttons/start-visit.component.tsx @@ -14,9 +14,13 @@ const StartVisitOverflowMenuItem: React.FC = ({ const { currentVisit } = useVisit(patient?.id); const isDeceased = Boolean(patient?.deceasedDateTime); - const handleLaunchModal = useCallback(() => launchPatientWorkspace('start-visit-workspace-form', { - openedFrom: "patient-chart-start-visit", - }), []); + const handleLaunchModal = useCallback( + () => + launchPatientWorkspace('start-visit-workspace-form', { + openedFrom: 'patient-chart-start-visit', + }), + [], + ); return ( !currentVisit && diff --git a/packages/esm-patient-chart-app/src/visit-header/visit-header.component.tsx b/packages/esm-patient-chart-app/src/visit-header/visit-header.component.tsx index f91a20d637..1daae7d9b6 100644 --- a/packages/esm-patient-chart-app/src/visit-header/visit-header.component.tsx +++ b/packages/esm-patient-chart-app/src/visit-header/visit-header.component.tsx @@ -118,7 +118,7 @@ const PatientInfo: React.FC = ({ patient }) => { }; function launchStartVisitForm() { - launchPatientWorkspace('start-visit-workspace-form', {openedFrom: "patient-chart-start-visit"}); + launchPatientWorkspace('start-visit-workspace-form', { openedFrom: 'patient-chart-start-visit' }); } const VisitHeader: React.FC<{ patient: fhir.Patient }> = ({ patient }) => { diff --git a/packages/esm-patient-chart-app/src/visit/start-visit-button.component.tsx b/packages/esm-patient-chart-app/src/visit/start-visit-button.component.tsx index 6f88435e10..dfee38e85f 100644 --- a/packages/esm-patient-chart-app/src/visit/start-visit-button.component.tsx +++ b/packages/esm-patient-chart-app/src/visit/start-visit-button.component.tsx @@ -11,8 +11,8 @@ const StartVisitButton = ({ patientUuid }) => { patientUuid, workspaceName: 'start-visit-workspace-form', additionalProps: { - openedFrom: 'patient-chart-start-visit' - } + openedFrom: 'patient-chart-start-visit', + }, }); }, [patientUuid]); diff --git a/packages/esm-patient-chart-app/src/visit/visit-action-items/edit-visit-details.component.tsx b/packages/esm-patient-chart-app/src/visit/visit-action-items/edit-visit-details.component.tsx index 6d96a877e4..555e558c1b 100644 --- a/packages/esm-patient-chart-app/src/visit/visit-action-items/edit-visit-details.component.tsx +++ b/packages/esm-patient-chart-app/src/visit/visit-action-items/edit-visit-details.component.tsx @@ -18,7 +18,7 @@ const EditVisitDetailsActionItem: React.FC = ({ launchPatientWorkspace('start-visit-workspace-form', { workspaceTitle: t('editVisitDetails', 'Edit visit details'), visitToEdit: visit, - openedFrom: 'patient-chart-edit-visit' + openedFrom: 'patient-chart-edit-visit', }); }; diff --git a/packages/esm-patient-chart-app/src/visit/visit-prompt/start-visit-dialog.component.tsx b/packages/esm-patient-chart-app/src/visit/visit-prompt/start-visit-dialog.component.tsx index 561be2cbe0..a0c89135ea 100644 --- a/packages/esm-patient-chart-app/src/visit/visit-prompt/start-visit-dialog.component.tsx +++ b/packages/esm-patient-chart-app/src/visit/visit-prompt/start-visit-dialog.component.tsx @@ -38,10 +38,10 @@ const StartVisitDialog: React.FC = ({ launchPatientChartWithWorkspaceOpen({ patientUuid, workspaceName: 'start-visit-workspace-form', - additionalProps: {openedFrom: 'patient-chart-start-visit'} + additionalProps: { openedFrom: 'patient-chart-start-visit' }, }); } else { - launchPatientWorkspace('start-visit-workspace-form', {openedFrom: 'patient-chart-start-visit'}); + launchPatientWorkspace('start-visit-workspace-form', { openedFrom: 'patient-chart-start-visit' }); } closeModal(); diff --git a/packages/esm-patient-chart-app/src/visit/visits-widget/current-visit-summary.component.tsx b/packages/esm-patient-chart-app/src/visit/visits-widget/current-visit-summary.component.tsx index aa473fd442..8dd30d1913 100644 --- a/packages/esm-patient-chart-app/src/visit/visits-widget/current-visit-summary.component.tsx +++ b/packages/esm-patient-chart-app/src/visit/visits-widget/current-visit-summary.component.tsx @@ -33,7 +33,9 @@ const CurrentVisitSummary: React.FC = ({ patientUuid } launchPatientWorkspace('start-visit-workspace-form', {openedFrom: 'patient-chart-current-visit-summary'})} + launchForm={() => + launchPatientWorkspace('start-visit-workspace-form', { openedFrom: 'patient-chart-current-visit-summary' }) + } /> ); } diff --git a/packages/esm-patient-orders-app/src/components/test-order.component.tsx b/packages/esm-patient-orders-app/src/components/test-order.component.tsx index 5d107fb4db..43a46cd9d5 100644 --- a/packages/esm-patient-orders-app/src/components/test-order.component.tsx +++ b/packages/esm-patient-orders-app/src/components/test-order.component.tsx @@ -56,7 +56,7 @@ const TestOrder: React.FC = ({ testOrder }) => { result: isLoadingResult ? ( ) : ( - testResultObs?.groupMembers?.find((obs) => obs.concept.uuid === memberConcept.uuid)?.value.display ?? '--' + testResultObs?.groupMembers?.find((obs) => obs.concept.uuid === memberConcept.uuid)?.value ?? '--' ), normalRange: memberConcept.hiNormal && memberConcept.lowNormal @@ -68,14 +68,14 @@ const TestOrder: React.FC = ({ testOrder }) => { { id: concept.uuid, testType:
{concept.display}
, - result: isLoadingResult ? : testResultObs?.value.display ?? '--', + result: isLoadingResult ? : testResultObs?.value ?? '--', normalRange: concept.hiNormal && concept.lowNormal ? `${concept.lowNormal} - ${concept.hiNormal}` : 'N/A', }, ]; } else { return []; } - }, [concept, isLoadingResult, testResultObs?.groupMembers, testResultObs?.value?.display]); + }, [concept, isLoadingResult, testResultObs?.groupMembers, testResultObs?.value]); return (
diff --git a/packages/esm-patient-orders-app/src/index.ts b/packages/esm-patient-orders-app/src/index.ts index 636608939a..2e63d7c116 100644 --- a/packages/esm-patient-orders-app/src/index.ts +++ b/packages/esm-patient-orders-app/src/index.ts @@ -55,6 +55,7 @@ export const ordersDashboardLink = ); export const ordersDashboard = getSyncLifecycle(OrdersSummary, options); +export const labResult = getAsyncLifecycle(() => import('./lab-results/lab-result.component'), options); // t('searchOrderables','Search orderables') export const orderableConceptSearch = getAsyncLifecycle( diff --git a/packages/esm-patient-orders-app/src/lab-results/lab-result.component.tsx b/packages/esm-patient-orders-app/src/lab-results/lab-result.component.tsx new file mode 100644 index 0000000000..1d9fad213b --- /dev/null +++ b/packages/esm-patient-orders-app/src/lab-results/lab-result.component.tsx @@ -0,0 +1,46 @@ +import { Tile, InlineLoading , InlineNotification } from '@carbon/react'; +import { type Order } from '@openmrs/esm-patient-common-lib'; +import React from 'react'; +import { useTranslation } from 'react-i18next'; +import { useCompletedLabResults, useOrderConceptByUuid } from './lab-results.resource'; +import styles from './lab-result.scss'; +import TestOrder from '../components/test-order.component'; + +type LabResultsProps = { + order: Order; +}; +const LabResults: React.FC = ({ order }) => { + const { t } = useTranslation(); + const { concept, isLoading: isLoadingConcepts, error: conceptError } = useOrderConceptByUuid(order.concept.uuid); + const { isLoading, error, completeLabResult, mutate } = useCompletedLabResults(order); + + if (isLoading || isLoadingConcepts) + return ( + + ); + + if (error || conceptError) + return ( + + ); + + return ( + + + + ); +}; + +export default LabResults; + +const OrderDetail = ({ order }: { order: Order }) => { + return ; +}; diff --git a/packages/esm-patient-orders-app/src/lab-results/lab-result.scss b/packages/esm-patient-orders-app/src/lab-results/lab-result.scss new file mode 100644 index 0000000000..048d14bc7d --- /dev/null +++ b/packages/esm-patient-orders-app/src/lab-results/lab-result.scss @@ -0,0 +1,18 @@ +@use '@carbon/layout'; +@use '@carbon/type'; + +.resultsCiontainer { + margin-top: layout.$spacing-05; +} + +.detailsContainer { + display: flex; + flex-direction: column; + gap: layout.$spacing-03; +} + +.resultDetail { + display: flex; + flex-direction: row; + gap: layout.$spacing-05; +} diff --git a/packages/esm-patient-orders-app/src/lab-results/lab-results-form-field.component.tsx b/packages/esm-patient-orders-app/src/lab-results/lab-results-form-field.component.tsx index 1d36efe273..2adf6d6e72 100644 --- a/packages/esm-patient-orders-app/src/lab-results/lab-results-form-field.component.tsx +++ b/packages/esm-patient-orders-app/src/lab-results/lab-results-form-field.component.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { NumberInput, Select, SelectItem, TextInput } from '@carbon/react'; import { useTranslation } from 'react-i18next'; import { type Control, Controller, type FieldErrors } from 'react-hook-form'; -import { type LabOrderConcept } from './lab-results.resource'; +import { isCoded, isNumeric, isPanel, isText, type LabOrderConcept } from './lab-results.resource'; import styles from './lab-results-form.scss'; interface ResultFormFieldProps { @@ -15,11 +15,6 @@ interface ResultFormFieldProps { const ResultFormField: React.FC = ({ concept, control, defaultValue, errors }) => { const { t } = useTranslation(); - const isCoded = (concept: LabOrderConcept) => concept.datatype?.display === 'Coded'; - const isNumeric = (concept: LabOrderConcept) => concept.datatype?.display === 'Numeric'; - const isPanel = (concept: LabOrderConcept) => concept.setMembers?.length > 0; - const isText = (concept: LabOrderConcept) => concept.datatype?.display === 'Text'; - const printValueRange = (concept: LabOrderConcept) => { if (concept?.datatype?.display === 'Numeric') { const maxVal = Math.max(concept?.hiAbsolute, concept?.hiCritical, concept?.hiNormal); 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 1745cfed17..964e255a8d 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 @@ -1,21 +1,25 @@ -import React, { useEffect, useState, useCallback } from 'react'; -import { useTranslation } from 'react-i18next'; -import { useForm } from 'react-hook-form'; -import { mutate } from 'swr'; import { Button, ButtonSet, Form, InlineLoading, InlineNotification, Stack } from '@carbon/react'; -import { type DefaultPatientWorkspaceProps, type Order } from '@openmrs/esm-patient-common-lib'; +import { zodResolver } from '@hookform/resolvers/zod'; import { restBaseUrl, showSnackbar, useAbortController, useLayoutType } from '@openmrs/esm-framework'; +import { type DefaultPatientWorkspaceProps, type Order } from '@openmrs/esm-patient-common-lib'; +import React, { useCallback, useEffect, useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { useTranslation } from 'react-i18next'; +import { mutate } from 'swr'; +import ResultFormField from './lab-results-form-field.component'; +import styles from './lab-results-form.scss'; import { - useOrderConceptByUuid, - updateOrderResult, - useLabEncounter, - useObservation, createObservationPayload, + isCoded, + isNumeric, + isPanel, + isText, + updateObservation, + updateOrderResult, + useCompletedLabResults, + useOrderConceptByUuid, } from './lab-results.resource'; -import ResultFormField from './lab-results-form-field.component'; -import styles from './lab-results-form.scss'; import { useLabResultsFormSchema } from './useLabResultsFormSchema'; -import { zodResolver } from '@hookform/resolvers/zod'; export interface LabResultsFormProps extends DefaultPatientWorkspaceProps { order: Order; @@ -30,19 +34,22 @@ const LabResultsForm: React.FC = ({ const { t } = useTranslation(); const abortController = useAbortController(); const isTablet = useLayoutType() === 'tablet'; - const [obsUuid, setObsUuid] = useState(''); - const [isEditing, setIsEditing] = useState(false); - const [initialValues, setInitialValues] = useState(null); - const [isLoadingInitialValues, setIsLoadingInitialValues] = useState(false); const { concept, isLoading: isLoadingConcepts } = useOrderConceptByUuid(order.concept.uuid); - const { encounter, isLoading: isLoadingEncounter, mutate: mutateLabOrders } = useLabEncounter(order.encounter.uuid); - const { data, isLoading: isLoadingObs, error: isErrorObs } = useObservation(obsUuid); const [showEmptyFormErrorNotification, setShowEmptyFormErrorNotification] = useState(false); const schema = useLabResultsFormSchema(order.concept.uuid); + const { completeLabResult, error, isLoading, mutate: mutateResults } = useCompletedLabResults(order); + const mutateOrderData = useCallback(() => { + mutate( + (key) => typeof key === 'string' && key.startsWith(`${restBaseUrl}/order?patient=${order.patient.uuid}`), + undefined, + { revalidate: true }, + ); + }, [order.patient.uuid]); const { control, formState: { errors, isDirty, isSubmitting }, + setValue, handleSubmit, } = useForm<{ testResult: Record }>({ defaultValues: {}, @@ -50,37 +57,30 @@ const LabResultsForm: React.FC = ({ mode: 'all', }); - const mutateOrderData = useCallback(() => { - mutate( - (key) => typeof key === 'string' && key.startsWith(`${restBaseUrl}/order?patient=${order.patient.uuid}`), - undefined, - { revalidate: true }, - ); - }, [order.patient.uuid]); - useEffect(() => { - if (!isLoadingEncounter && encounter?.obs?.length > 0 && !isEditing) { - const obs = encounter.obs.find((obs) => obs.concept?.uuid === order?.concept.uuid); - if (obs) { - setObsUuid(obs.uuid); - setIsEditing(true); + if (concept && completeLabResult && order?.fulfillerStatus === 'COMPLETED') { + if (isCoded(concept) && completeLabResult?.value?.uuid) { + setValue(concept.uuid as any, completeLabResult?.value?.uuid); + } else if (isNumeric(concept) && completeLabResult?.value) { + setValue(concept.uuid as any, parseFloat(completeLabResult?.value as any)); + } else if (isText(concept) && completeLabResult?.value) { + setValue(concept.uuid as any, completeLabResult?.value); + } else if (isPanel(concept)) { + concept.setMembers.forEach((member) => { + const obs = completeLabResult.groupMembers.find((v) => v.concept.uuid === member.uuid); + let value: any; + if (isCoded(member)) { + value = obs?.value?.uuid; + } else if (isNumeric(member)) { + value = obs?.value ? parseFloat(obs?.value as any) : undefined; + } else if (isText(member)) { + value = obs?.value; + } + if (value) setValue(member.uuid as any, value); + }); } } - }, [isLoadingEncounter, encounter, isEditing, order]); - - useEffect(() => { - const loadInitialValues = async () => { - if (isEditing && obsUuid) { - setIsLoadingInitialValues(true); - if (data && !isLoadingObs) { - setInitialValues(data); - } - setIsLoadingInitialValues(false); - } - }; - - loadInitialValues(); - }, [isEditing, obsUuid, data, isLoadingObs]); + }, [concept, completeLabResult, order, setValue]); useEffect(() => { promptBeforeClosing(() => isDirty); @@ -107,6 +107,49 @@ const LabResultsForm: React.FC = ({ setShowEmptyFormErrorNotification(true); return; } + + const showNotification = (kind: 'error' | 'success', message: string) => { + showSnackbar({ + title: + kind === 'success' + ? t('saveLabResults', 'Save lab results') + : t('errorSavingLabResults', 'Error saving lab results'), + kind: kind, + subtitle: message, + }); + }; + + // Handle update operation for completed lab order results + if (order.fulfillerStatus === 'COMPLETED') { + const updateTasks = Object.entries(formValues).map(([conceptUuid, value]) => { + const obs = completeLabResult?.groupMembers?.find((v) => v.concept.uuid === conceptUuid) ?? completeLabResult; + return updateObservation(obs?.uuid, { value }); + }); + const updateResults = await Promise.allSettled(updateTasks); + const failedObsconceptUuids = updateResults.reduce((prev, curr, index) => { + if (curr.status === 'rejected') { + return [...prev, Object.keys(formValues).at(index)]; + } + return prev; + }, []); + + if (failedObsconceptUuids.length) { + showNotification('error', 'Could not save obs with concept uuids ' + failedObsconceptUuids.join(', ')); + } else { + closeWorkspaceWithSavedChanges(); + showNotification( + 'success', + t('successfullySavedLabResults', 'Lab results for {{orderNumber}} have been successfully updated', { + orderNumber: order?.orderNumber, + }), + ); + } + mutateResults(); + return setShowEmptyFormErrorNotification(false); + } + + // Handle Creation logic + // Set the observation status to 'FINAL' as we're not capturing it in the form const obsPayload = createObservationPayload(concept, order, formValues, 'FINAL'); const orderDiscontinuationPayload = { @@ -134,21 +177,16 @@ const LabResultsForm: React.FC = ({ abortController, ); closeWorkspaceWithSavedChanges(); - mutateLabOrders(); + mutateResults(); mutateOrderData(); - showSnackbar({ - title: t('saveLabResults', 'Save lab results'), - kind: 'success', - subtitle: t('successfullySavedLabResults', 'Lab results for {{orderNumber}} have been successfully updated', { + showNotification( + 'success', + t('successfullySavedLabResults', 'Lab results for {{orderNumber}} have been successfully updated', { orderNumber: order?.orderNumber, }), - }); + ); } catch (err) { - showSnackbar({ - title: t('errorSavingLabResults', 'Error saving lab results'), - kind: 'error', - subtitle: err?.message, - }); + showNotification('error', err?.message); } finally { setShowEmptyFormErrorNotification(false); } @@ -160,8 +198,8 @@ const LabResultsForm: React.FC = ({ {concept.setMembers.length > 0 &&

{concept.display}

} {concept && ( - {!isLoadingInitialValues ? ( - + {!isLoading ? ( + ) : ( )} diff --git a/packages/esm-patient-orders-app/src/lab-results/lab-results-form.test.tsx b/packages/esm-patient-orders-app/src/lab-results/lab-results-form.test.tsx index 5f9cafbaa0..f21915620e 100644 --- a/packages/esm-patient-orders-app/src/lab-results/lab-results-form.test.tsx +++ b/packages/esm-patient-orders-app/src/lab-results/lab-results-form.test.tsx @@ -8,6 +8,7 @@ import { type LabOrderConcept, updateOrderResult, type Datatype, + useCompletedLabResults, } from './lab-results.resource'; import LabResultsForm from './lab-results-form.component'; import { type Order } from '@openmrs/esm-patient-common-lib'; @@ -16,6 +17,7 @@ import { type Encounter } from '../types/encounter'; const mockUseOrderConceptByUuid = jest.mocked(useOrderConceptByUuid); const mockUseLabEncounter = jest.mocked(useLabEncounter); const mockUseObservation = jest.mocked(useObservation); +const mockUseCompletedLabResults = jest.mocked(useCompletedLabResults); jest.mock('./lab-results.resource', () => ({ ...jest.requireActual('./lab-results.resource'), @@ -23,6 +25,11 @@ jest.mock('./lab-results.resource', () => ({ useLabEncounter: jest.fn(), useObservation: jest.fn(), updateOrderResult: jest.fn().mockResolvedValue({}), + useCompletedLabResults: jest.fn(), + isCoded: (concept) => concept?.datatype?.display === 'Coded', + isText: (concept) => concept?.datatype?.display === 'Text', + isNumeric: (concept) => concept?.datatype?.display === 'Numeric', + isPanel: (concept) => concept?.setMembers?.length > 0, })); const mockOrder = { @@ -80,6 +87,12 @@ describe('LabResultsForm', () => { isValidating: false, mutate: jest.fn(), }); + mockUseCompletedLabResults.mockReturnValue({ + completeLabResult: null, + isLoading: false, + error: null, + mutate: jest.fn(), + }); }); test('validates numeric input correctly', async () => { @@ -609,4 +622,26 @@ describe('LabResultsForm', () => { expect.anything(), ); }); + + test('should handle empty form submission', async () => { + const user = userEvent.setup(); + render(); + + const saveButton = screen.getByRole('button', { name: /Save and close/i }); + await user.click(saveButton); + + expect(screen.getByText('Please fill at least one field.')).toBeInTheDocument(); + expect(updateOrderResult).not.toHaveBeenCalled(); + }); + + test('should disable save button when form has validation errors', async () => { + const user = userEvent.setup(); + render(); + + const input = await screen.findByLabelText(`Test Concept (0 - 100 mg/dL)`); + await user.type(input, '150'); + + const saveButton = screen.getByRole('button', { name: /Save and close/i }); + expect(saveButton).toBeDisabled(); + }); }); diff --git a/packages/esm-patient-orders-app/src/lab-results/lab-results.resource.ts b/packages/esm-patient-orders-app/src/lab-results/lab-results.resource.ts index 569dc1ae6b..241c9297a6 100644 --- a/packages/esm-patient-orders-app/src/lab-results/lab-results.resource.ts +++ b/packages/esm-patient-orders-app/src/lab-results/lab-results.resource.ts @@ -1,8 +1,8 @@ +import { openmrsFetch, restBaseUrl, type FetchResponse, type OpenmrsResource } from '@openmrs/esm-framework'; +import { type Order } from '@openmrs/esm-patient-common-lib'; import useSWR from 'swr'; -import { type OpenmrsResource, openmrsFetch, restBaseUrl, type FetchResponse } from '@openmrs/esm-framework'; -import { type Observation, type Encounter } from '../types/encounter'; +import { type Encounter, type Observation } from '../types/encounter'; import { type OrderDiscontinuationPayload } from '../types/order'; -import { type Order } from '@openmrs/esm-patient-common-lib'; const labEncounterRepresentation = 'custom:(uuid,encounterDatetime,encounterType,location:(uuid,name),' + @@ -108,7 +108,10 @@ export function useLabEncounter(encounterUuid: string) { export function useObservation(obsUuid: string) { const url = `${restBaseUrl}/obs/${obsUuid}?v=${conceptObsRepresentation}`; - const { data, error, isLoading, isValidating, mutate } = useSWR<{ data: Observation }, Error>(url, openmrsFetch); + const { data, error, isLoading, isValidating, mutate } = useSWR<{ data: Observation }, Error>( + obsUuid ? url : null, + openmrsFetch, + ); return { data: data?.data, isLoading, @@ -118,6 +121,31 @@ export function useObservation(obsUuid: string) { }; } +export function useCompletedLabResults(order: Order) { + const { + encounter, + isLoading: isLoadingEncounter, + mutate: mutateLabOrders, + error: encounterError, + } = useLabEncounter(order.encounter.uuid); + const { + data: observation, + isLoading: isLoadingObs, + error: isErrorObs, + mutate: mutateObs, + } = useObservation(encounter?.obs.find((obs) => obs?.concept?.uuid === order?.concept?.uuid)?.uuid ?? ''); + + return { + isLoading: isLoadingEncounter || isLoadingObs, + completeLabResult: observation, + mutate: () => { + mutateLabOrders(); + mutateObs(); + }, + error: isErrorObs ?? encounterError, + }; +} + // TODO: the calls to update order and observations for results should be transactional to allow for rollback export async function updateOrderResult( orderUuid: string, @@ -186,6 +214,16 @@ export function createObservationPayload( } } +export function updateObservation(observationUuid: string, payload: Record) { + return openmrsFetch(`${restBaseUrl}/obs/${observationUuid}`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload), + }); +} + function createGroupMember(member: LabOrderConcept, order: Order, values: Record, status: string) { const value = getValue(member, values); if (value === null || value === undefined) { @@ -228,3 +266,8 @@ function getValue(concept: LabOrderConcept, values: Record) { return null; } + +export const isCoded = (concept: LabOrderConcept) => concept.datatype?.display === 'Coded'; +export const isNumeric = (concept: LabOrderConcept) => concept.datatype?.display === 'Numeric'; +export const isPanel = (concept: LabOrderConcept) => concept.setMembers?.length > 0; +export const isText = (concept: LabOrderConcept) => concept.datatype?.display === 'Text'; diff --git a/packages/esm-patient-orders-app/src/routes.json b/packages/esm-patient-orders-app/src/routes.json index 98eca5e422..7e0328a018 100644 --- a/packages/esm-patient-orders-app/src/routes.json +++ b/packages/esm-patient-orders-app/src/routes.json @@ -27,6 +27,14 @@ "slot": "action-menu-patient-chart-items-slot", "order": 0 }, + { + "name": "lab-result", + "component": "labResult", + "slot": "completed-lab-order-results-slot", + "meta": { + "fullWidth": false + } + }, { "name": "patient-orders-summary-dashboard", "component": "ordersDashboardLink", @@ -76,4 +84,4 @@ "type": "order" } ] -} +} \ No newline at end of file diff --git a/packages/esm-patient-orders-app/translations/en.json b/packages/esm-patient-orders-app/translations/en.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/en.json +++ b/packages/esm-patient-orders-app/translations/en.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", From e3fdf3e71b896313f58118da4dbf2a666115c27c Mon Sep 17 00:00:00 2001 From: Dennis Kigen Date: Tue, 17 Dec 2024 15:56:45 +0300 Subject: [PATCH 10/15] (refactor) programs-form: Improve error handling and loading states (#2160) Improves form validation in the Programs form by: - Using React Hook Form's `isSubmitting` state instead of local state - Cleaning up styling for the submit button's loading state - Replacing a custom error message solution with the `Select` component's `invalidText` prop. With this change, we don't need additional styling for the error message. --- .../src/programs/programs-form.scss | 10 ++++---- .../src/programs/programs-form.workspace.tsx | 23 ++++++++----------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/packages/esm-patient-programs-app/src/programs/programs-form.scss b/packages/esm-patient-programs-app/src/programs/programs-form.scss index 8b266bd808..446323c5ef 100644 --- a/packages/esm-patient-programs-app/src/programs/programs-form.scss +++ b/packages/esm-patient-programs-app/src/programs/programs-form.scss @@ -15,6 +15,10 @@ align-items: baseline; min-width: 50%; + :global(.cds--inline-loading) { + min-height: layout.$spacing-05 !important; + } + :global(.cds--inline-loading__text) { @include type.type-style('body-01'); } @@ -40,12 +44,6 @@ height: 100%; } -.errorMessage { - @include type.type-style('label-02'); - margin-top: layout.$spacing-03; - color: $danger; -} - .notification { margin: 0; min-width: 100%; diff --git a/packages/esm-patient-programs-app/src/programs/programs-form.workspace.tsx b/packages/esm-patient-programs-app/src/programs/programs-form.workspace.tsx index 926f3e74c9..47965b73b5 100644 --- a/packages/esm-patient-programs-app/src/programs/programs-form.workspace.tsx +++ b/packages/esm-patient-programs-app/src/programs/programs-form.workspace.tsx @@ -57,7 +57,6 @@ const ProgramsForm: React.FC = ({ const availableLocations = useLocations(); const { data: availablePrograms } = useAvailablePrograms(); const { data: enrollments, mutateEnrollments } = useEnrollments(patientUuid); - const [isSubmittingForm, setIsSubmittingForm] = useState(false); const { showProgramStatusField } = useConfig(); const programsFormSchema = useMemo(() => createProgramsFormSchema(t), [t]); @@ -90,7 +89,7 @@ const ProgramsForm: React.FC = ({ control, handleSubmit, watch, - formState: { isDirty }, + formState: { errors, isDirty, isSubmitting }, } = useForm({ mode: 'all', resolver: zodResolver(programsFormSchema), @@ -126,8 +125,6 @@ const ProgramsForm: React.FC = ({ }; try { - setIsSubmittingForm(true); - const abortController = new AbortController(); if (currentEnrollment) { @@ -155,8 +152,6 @@ const ProgramsForm: React.FC = ({ subtitle: error instanceof Error ? error.message : 'An unknown error occurred', }); } - - setIsSubmittingForm(false); }, [closeWorkspaceWithSavedChanges, currentEnrollment, currentState, mutateEnrollments, patientUuid, t], ); @@ -165,12 +160,13 @@ const ProgramsForm: React.FC = ({ ( + render={({ field: { onChange, value } }) => ( <> -

{fieldState?.error?.message}

)} /> @@ -267,12 +262,13 @@ const ProgramsForm: React.FC = ({ ( + render={({ field: { onChange, value } }) => ( <> -

{fieldState?.error?.message}

)} /> @@ -343,8 +338,8 @@ const ProgramsForm: React.FC = ({ - + ); + } + return null; + }, [formsJson, displayText, onFormSave, patientUuid, t, currentVisit]); + + if (isLoading === true || isLoadingFormsJson === true) { + return ; + } + + return ( + <> + {tableRows?.length > 0 || encounters.length > 0 ? ( + <> +
+
+

{t(headerTitle)}

+ {!(hideFormLauncher ?? deathStatus) &&
{formLauncher}
} +
+ + { + setCurrentPage(page); + setPageSize(pageSize); + }} + pageSize={pageSize} + totalItems={total} + /> +
+ + ) : ( + launchEncounterForm(formsJson, currentVisit, 'add', onFormSave, '', '*', patientUuid) + } + /> + )} + + ); +}; diff --git a/packages/esm-patient-chart-app/src/encounter-list/components/encounter-list.scss b/packages/esm-patient-chart-app/src/encounter-list/components/encounter-list.scss new file mode 100644 index 0000000000..3565416375 --- /dev/null +++ b/packages/esm-patient-chart-app/src/encounter-list/components/encounter-list.scss @@ -0,0 +1,28 @@ +@use '@carbon/layout'; +@use '@carbon/type'; +@use '@openmrs/esm-styleguide/src/vars' as *; + +.widgetContainer { + background-color: $ui-background; + border: 1px solid #e0e0e0; + margin-bottom: 1rem; +} + +.widgetHeaderContainer { + display: flex; + justify-content: space-between; + align-items: center; + padding: layout.$spacing-04 0 layout.$spacing-04 layout.$spacing-05; +} + +.widgetHeaderContainer > h4:after { + content: ''; + display: block; + width: 2rem; + padding-top: 0.188rem; + border-bottom: 0.375rem solid var(--brand-03); +} + +.widgetContainer :global(.cds--data-table) thead th button span { + height: unset !important; +} diff --git a/packages/esm-patient-chart-app/src/encounter-list/components/table.component.tsx b/packages/esm-patient-chart-app/src/encounter-list/components/table.component.tsx new file mode 100644 index 0000000000..7ba30f4d78 --- /dev/null +++ b/packages/esm-patient-chart-app/src/encounter-list/components/table.component.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { + DataTable, + Table, + TableCell, + TableContainer, + TableBody, + TableHead, + TableHeader, + TableRow, +} from '@carbon/react'; + +import styles from './table.scss'; + +interface TableProps { + tableHeaders: any; + tableRows: any; +} + +export const EncounterListDataTable: React.FC = ({ tableHeaders, tableRows }) => { + return ( + + + {({ rows, headers, getHeaderProps, getTableProps }) => ( + + + + {headers.map((header, index) => ( + + {header.header?.content ?? header.header} + + ))} + + + + {rows.map((row) => ( + + {row.cells.map((cell) => ( + {cell.value?.content ?? cell.value} + ))} + + ))} + +
+ )} +
+
+ ); +}; diff --git a/packages/esm-patient-chart-app/src/encounter-list/components/table.scss b/packages/esm-patient-chart-app/src/encounter-list/components/table.scss new file mode 100644 index 0000000000..0d1c910d7e --- /dev/null +++ b/packages/esm-patient-chart-app/src/encounter-list/components/table.scss @@ -0,0 +1,7 @@ +@use '@carbon/layout'; +@use '@carbon/type'; +@use '@openmrs/esm-styleguide/src/vars' as *; + +.productiveHeading01 { + @include type.type-style('heading-compact-01'); +} diff --git a/packages/esm-patient-chart-app/src/encounter-list/components/tag.component.tsx b/packages/esm-patient-chart-app/src/encounter-list/components/tag.component.tsx new file mode 100644 index 0000000000..5176174c6f --- /dev/null +++ b/packages/esm-patient-chart-app/src/encounter-list/components/tag.component.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import { Tag } from '@carbon/react'; +import { getObsFromEncounter, findObs } from '../utils/helpers'; +import { type ConfigConcepts, type Encounter } from '../types'; + +export const renderTag = ( + encounter: Encounter, + concept: string, + statusColorMappings: Record, + config: ConfigConcepts, +) => { + const columnStatus = getObsFromEncounter(encounter, concept, false, false, undefined, undefined, undefined, config); + const columnStatusObs = findObs(encounter, concept); + + if (columnStatus == '--') { + return '--'; + } else { + return ( + + {columnStatus} + + ); + } +}; diff --git a/packages/esm-patient-chart-app/src/encounter-list/encounter-list.resource.ts b/packages/esm-patient-chart-app/src/encounter-list/encounter-list.resource.ts new file mode 100644 index 0000000000..f419d0c904 --- /dev/null +++ b/packages/esm-patient-chart-app/src/encounter-list/encounter-list.resource.ts @@ -0,0 +1,26 @@ +import { openmrsFetch, restBaseUrl } from '@openmrs/esm-framework'; + +export function fetchOpenMRSForms(formUuid: string) { + return openmrsFetch(`${restBaseUrl}/form/${formUuid}`).then(({ data }) => { + if (data.results.length) { + return data.results; + } + return null; + }); +} + +export function fetchPatientRelationships(patientUuid: string) { + return openmrsFetch(`${restBaseUrl}relationship?person=${patientUuid}&v=full`).then(({ data }) => { + if (data.results.length) { + return data.results; + } + return null; + }); +} + +export function deleteEncounter(encounterUuid: string, abortController: AbortController) { + return openmrsFetch(`${restBaseUrl}/encounter/${encounterUuid}`, { + method: 'DELETE', + signal: abortController.signal, + }); +} diff --git a/packages/esm-patient-chart-app/src/encounter-list/hooks/index.ts b/packages/esm-patient-chart-app/src/encounter-list/hooks/index.ts new file mode 100644 index 0000000000..fd15cbc4d2 --- /dev/null +++ b/packages/esm-patient-chart-app/src/encounter-list/hooks/index.ts @@ -0,0 +1,2 @@ +export * from './useEncounterRows'; +export * from './useFormsJson'; diff --git a/packages/esm-patient-chart-app/src/encounter-list/hooks/useEncounterRows.ts b/packages/esm-patient-chart-app/src/encounter-list/hooks/useEncounterRows.ts new file mode 100644 index 0000000000..0dcfb05da4 --- /dev/null +++ b/packages/esm-patient-chart-app/src/encounter-list/hooks/useEncounterRows.ts @@ -0,0 +1,58 @@ +import { useCallback, useEffect, useState } from 'react'; +import useSWR from 'swr'; +import { openmrsFetch, restBaseUrl } from '@openmrs/esm-framework'; +import { type Encounter } from '../types'; + +export const encounterRepresentation = + 'custom:(uuid,encounterDatetime,encounterType,location:(uuid,name),' + + 'patient:(uuid,display,age,identifiers,person),encounterProviders:(uuid,provider:(uuid,name)),' + + 'obs:(uuid,obsDatetime,voided,groupMembers,concept:(uuid,name:(uuid,name)),value:(uuid,name:(uuid,name),' + + 'names:(uuid,conceptNameType,name))),form:(uuid,name))'; + +interface EncounterResponse { + results: Encounter[]; + totalCount?: number; +} + +export function useEncounterRows( + patientUuid: string, + encounterType: string, + encounterFilter: (encounter) => boolean, + afterFormSaveAction: () => void, + pageSize?: number, + currentPage?: number, +) { + const startIndex = (currentPage - 1) * pageSize; + const [encounters, setEncounters] = useState([]); + const url = `${restBaseUrl}/encounter?encounterType=${encounterType}&patient=${patientUuid}&v=${encounterRepresentation}&totalCount=true&limit=${pageSize}&startIndex=${startIndex}`; + + const { data: response, error, isLoading, mutate } = useSWR<{ data: EncounterResponse }, Error>(url, openmrsFetch); + + useEffect(() => { + if (response) { + response.data.results.sort( + (a, b) => new Date(b.encounterDatetime).getTime() - new Date(a.encounterDatetime).getTime(), + ); + + if (encounterFilter) { + setEncounters(response.data.results.filter((encounter) => encounterFilter(encounter))); + } else { + setEncounters([...response.data.results]); + } + } + }, [encounterFilter, response]); + + const onFormSave = useCallback(() => { + mutate(); + afterFormSaveAction && afterFormSaveAction(); + }, [afterFormSaveAction, mutate]); + + return { + encounters, + total: response?.data?.totalCount, + isLoading, + error, + onFormSave, + mutate, + }; +} diff --git a/packages/esm-patient-chart-app/src/encounter-list/hooks/useFormsJson.ts b/packages/esm-patient-chart-app/src/encounter-list/hooks/useFormsJson.ts new file mode 100644 index 0000000000..6027050da3 --- /dev/null +++ b/packages/esm-patient-chart-app/src/encounter-list/hooks/useFormsJson.ts @@ -0,0 +1,15 @@ +import useSWR from 'swr'; + +import { openmrsFetch, restBaseUrl } from '@openmrs/esm-framework'; +import { type Form } from '../types'; + +export function useFormsJson(formUuid: string) { + const url = `${restBaseUrl}/form/${formUuid}`; + const { data, isLoading, error } = useSWR<{ data: Form }, Error>(url, openmrsFetch); + + return { + formsJson: data?.data ?? null, + isLoading, + error, + }; +} diff --git a/packages/esm-patient-chart-app/src/encounter-list/types.ts b/packages/esm-patient-chart-app/src/encounter-list/types.ts new file mode 100644 index 0000000000..c11972e56c --- /dev/null +++ b/packages/esm-patient-chart-app/src/encounter-list/types.ts @@ -0,0 +1,211 @@ +import { type OpenmrsResource } from '@openmrs/esm-framework'; +import { type ReactElement } from 'react'; + +export interface Encounter extends OpenmrsResource { + encounterDatetime: Date; + encounterType: { uuid: string; name: string }; + patient: { + uuid: string; + display: string; + age: number; + birthDate: string; + }; + location: { + uuid: string; + display: string; + name: string; + }; + encounterProviders?: Array<{ encounterRole: string; provider: { uuid: string; name: string } }>; + obs: Array; + form?: { + uuid: string; + }; + visit?: string; +} + +export interface Observation { + uuid: string; + concept: { uuid: string; name: string }; + value: + | { + uuid: string; + name: { + name: string; + }; + names?: Array<{ uuid: string; name: string; conceptNameType: string }>; + } + | string; + groupMembers?: Array; + obsDatetime: string; +} + +export interface ListResponse { + results: Array; +} + +export interface Privilege { + uuid: string; + name: string; + display?: string; + description?: string; +} + +export interface EncounterType { + uuid: string; + name: string; + viewPrivilege: Privilege | null; + editPrivilege: Privilege | null; +} + +export interface Form { + uuid: string; + encounterType?: EncounterType; + name: string; + display?: string; + version: string; + published: boolean; + retired: boolean; + resources: Array; + formCategory?: string; +} + +export interface FormEncounterResource { + uuid: string; + name: string; + dataType: string; + valueReference: string; +} + +export interface EncounterWithFormRef { + uuid: string; + encounterType?: EncounterType; + encounterDatetime: string; + form?: Form; +} + +export interface CompletedFormInfo { + form: Form; + associatedEncounters: Array; + lastCompleted?: Date; +} + +export interface HtmlFormEntryForm { + formUuid: string; + formName: string; + formUiResource: string; + formUiPage: 'enterHtmlFormWithSimpleUi' | 'enterHtmlFormWithStandardUi'; + formEditUiPage: 'editHtmlFormWithSimpleUi' | 'editHtmlFormWithStandardUi'; +} + +export interface FormsSection { + name: string; + forms: Array; +} + +export interface ConfigObject { + htmlFormEntryForms: Array; + formSections: Array; + customFormsUrl: string; + orderBy: 'name' | 'most-recent'; + showHtmlFormEntryForms: boolean; +} + +// encounter list types + +export interface ActionProps { + mode: string; + label: string; + formName: string; + intent?: string; +} + +export interface ConditionalActionProps { + mode: string; + label: string; + formName: string; + dependsOn?: string; + dependantConcept?: string; + dependantEncounter?: string; + intent?: string; +} + +export interface ColumnDefinition { + id: string; + title: string; + isComplex?: boolean; + concept?: string; + secondaryConcept?: string; + multipleConcepts?: Array; + fallbackConcepts?: Array; + actionOptions?: Array; + conditionalActionOptions?: Array; + isDate?: boolean; + isTrueFalseConcept?: boolean; + type?: string; + isLink?: boolean; + useMultipleObs?: boolean; + valueMappings?: Record; + conceptMappings?: Array; + statusColorMappings?: Record; + isConditionalConcept?: boolean; + conditionalConceptMappings?: Record; + conditionalEncounterMappings?: Record; +} + +export interface ConditionalEncounterMapping { + concept: string; + isDate?: boolean; +} + +interface LaunchOptions { + displayText: string; + hideFormLauncher?: boolean; +} +export interface TabSchema { + tabName: string; + hasFilter?: boolean; + headerTitle: string; + displayText: string; + encounterType: string; + columns: Array; + formList: Array<{ name: string; uuid: string; fixedIntent?: string; excludedIntents?: Array }>; + launchOptions: LaunchOptions; +} + +export type Mode = 'edit' | 'view'; + +export interface Action { + label: string; + mode: Mode; + form?: { name: string }; + intent?: string; +} + +export interface TableRow { + id: string; + actions: Action[] | ReactElement | null; +} + +export interface FormColumn { + form: { name: string }; + encounterUuid: string; + intent: string; + label: string; + mode: string; +} + +export type NamedColumn = + | string + | { + uuid: string; + name: { name: string }; + names?: { uuid: string; name: string; conceptNameType: string }[]; + }; + +export type ColumnValue = string | number | JSX.Element | NamedColumn | Array | Array | null; + +export interface ConfigConcepts { + trueConceptUuid: string; + falseConceptUuid: string; + otherConceptUuid: string; +} diff --git a/packages/esm-patient-chart-app/src/encounter-list/utils/encounter-list-config-builder.ts b/packages/esm-patient-chart-app/src/encounter-list/utils/encounter-list-config-builder.ts new file mode 100644 index 0000000000..6a0b25297c --- /dev/null +++ b/packages/esm-patient-chart-app/src/encounter-list/utils/encounter-list-config-builder.ts @@ -0,0 +1,152 @@ +import { + getObsFromEncounter, + getMultipleObsFromEncounter, + resolveValueUsingMappings, + getConceptFromMappings, + getConditionalConceptValue, +} from './helpers'; +import { + type Encounter, + type ColumnDefinition, + type TabSchema, + type ActionProps, + type ConditionalActionProps, + type ColumnValue, + type NamedColumn, + type ConfigConcepts, +} from '../types'; +import { renderTag } from '../components/tag.component'; + +export interface FormattedColumn { + key: string; + header: string; + getValue: (encounter: Encounter) => ColumnValue; + link?: { getUrl: (encounter: Encounter) => string; handleNavigate?: (encounter: Encounter) => void }; + concept?: string; +} + +const getColumnValue = (encounter: Encounter, column: ColumnDefinition, config: ConfigConcepts): ColumnValue => { + if (column.id === 'actions') { + return getActions(encounter, column, config); + } + if (column.statusColorMappings) { + return renderTag(encounter, column.concept, column.statusColorMappings, config); + } + + if (column.isConditionalConcept) { + return getConditionalConceptValue(encounter, column.conditionalConceptMappings, column.isDate, config); + } + + if (column.useMultipleObs) { + return getMultipleObsFromEncounter(encounter, column.multipleConcepts, config); + } + + if (column.valueMappings) { + return resolveValueUsingMappings(encounter, column.concept, column.valueMappings); + } + + if (column.conceptMappings) { + return getMappedConceptValue(encounter, column, config); + } + + return getObsFromEncounter( + encounter, + column.concept, + column.isDate, + column.isTrueFalseConcept, + column.type, + column.fallbackConcepts, + column.secondaryConcept, + config, + ); +}; + +const createActionObject = (encounter: Encounter, action: ActionProps | ConditionalActionProps) => ({ + form: { name: action.formName }, + encounterUuid: encounter.uuid, + intent: action.intent || '*', + label: action.label, + mode: action.mode, +}); + +const getActions = (encounter: Encounter, column: ColumnDefinition, config: ConfigConcepts) => { + const baseActions = column.actionOptions?.map((action: ActionProps) => createActionObject(encounter, action)) || []; + + const conditionalActions = + column.conditionalActionOptions + ?.map((action) => createConditionalAction(encounter, action, config)) + .filter(Boolean) || []; + + return [...baseActions, ...conditionalActions]; +}; + +const createConditionalAction = (encounter: Encounter, action: ConditionalActionProps, config: ConfigConcepts) => { + const dependantObsValue = getObsFromEncounter( + encounter, + action.dependantConcept, + false, + false, + undefined, + undefined, + undefined, + config, + ); + if (dependantObsValue === action.dependsOn) { + return createActionObject(encounter, action); + } + + const dependantEncounterValue = encounter.encounterType?.uuid; + if (dependantEncounterValue === action.dependantEncounter) { + return createActionObject(encounter, action); + } + + return null; +}; + +const getMappedConceptValue = (encounter: Encounter, column: ColumnDefinition, config: ConfigConcepts): NamedColumn => { + const concept = getConceptFromMappings(encounter, column.conceptMappings); + return getObsFromEncounter( + encounter, + concept, + column.isDate, + column.isTrueFalseConcept, + column.type, + column.fallbackConcepts, + column.secondaryConcept, + config, + ); +}; + +export const getTabColumns = (columnsDefinition: Array, config: ConfigConcepts) => { + const columns: Array = columnsDefinition.map((column: ColumnDefinition) => ({ + key: column.id, + header: column.title, + concept: column.concept, + getValue: (encounter) => getColumnValue(encounter, column, config), + link: column.isLink + ? { + getUrl: (encounter) => encounter.url, + handleNavigate: (encounter) => encounter.launchFormActions?.viewEncounter(), + } + : null, + })); + + return columns; +}; + +export const getMenuItemTabsConfiguration = (tabDefinitions: Array, config: ConfigConcepts) => { + const tabs = tabDefinitions.map((tab) => { + return { + name: tab.tabName, + hasFilter: tab.hasFilter || false, + encounterType: tab.encounterType, + headerTitle: tab.headerTitle, + description: tab.displayText, + formList: tab.formList, + columns: getTabColumns(tab.columns, config), + launchOptions: tab.launchOptions, + }; + }); + + return tabs; +}; diff --git a/packages/esm-patient-chart-app/src/encounter-list/utils/helpers.ts b/packages/esm-patient-chart-app/src/encounter-list/utils/helpers.ts new file mode 100644 index 0000000000..b189eaea0c --- /dev/null +++ b/packages/esm-patient-chart-app/src/encounter-list/utils/helpers.ts @@ -0,0 +1,182 @@ +import { launchPatientWorkspace } from '@openmrs/esm-patient-common-lib'; +import { formatDate, parseDate, formatDatetime, type Concept, age, type Visit } from '@openmrs/esm-framework'; +import { type Observation, type Encounter, type Form, type ConfigConcepts } from '../types'; + +type LaunchAction = 'add' | 'view' | 'edit' | 'embedded-view'; + +export function launchEncounterForm( + form: Form, + visit: Visit, + action: LaunchAction = 'add', + onFormSave: () => void, + encounterUuid?: string, + intent: string = '*', + patientUuid?: string, +) { + launchPatientWorkspace('patient-form-entry-workspace', { + workspaceTitle: form?.name, + mutateForm: onFormSave, + formInfo: { + encounterUuid, + formUuid: form?.uuid, + patientUuid: patientUuid, + visit: visit, + additionalProps: { + mode: action === 'add' ? 'enter' : action, + formSessionIntent: intent, + openClinicalFormsWorkspaceOnFormClose: false, + }, + }, + }); +} + +export function formatDateTime(dateString: string): string { + const parsedDate = parseDate(dateString.includes('.') ? dateString.split('.')[0] : dateString); + return formatDatetime(parsedDate); +} + +export function obsArrayDateComparator(left: Observation, right: Observation): number { + const leftDate = new Date(left.obsDatetime); + const rightDate = new Date(right.obsDatetime); + return rightDate.getTime() - leftDate.getTime(); +} + +export function findObs(encounter: Encounter, obsConcept: string): Observation | undefined { + const allObs = encounter?.obs?.filter((observation) => observation.concept.uuid === obsConcept) || []; + return !allObs ? undefined : allObs.length === 1 ? allObs[0] : allObs.sort(obsArrayDateComparator)[0]; +} + +export function getObsFromEncounters(encounters: Encounter, obsConcept: Concept) { + const filteredEnc = encounters?.find((enc) => enc.obs.find((obs) => obs.concept.uuid === obsConcept)); + return getObsFromEncounter(filteredEnc, obsConcept); +} + +export function resolveValueUsingMappings(encounter: Encounter, concept: string, mappings) { + const obs = findObs(encounter, concept); + for (const key in mappings) { + if (typeof obs?.value === 'object' && 'uuid' in obs.value) { + if (mappings[key] === obs.value.uuid) { + return key; + } + } + } + return '--'; +} + +export function getConditionalConceptValue( + encounter: Encounter, + conditionalConceptMappings, + isDate: boolean, + config: ConfigConcepts, +) { + const { trueConcept, nonTrueConcept, dependantConcept, conditionalConcept } = conditionalConceptMappings; + const obsValue = findObs(encounter, dependantConcept)?.value; + const dependantUuid = typeof obsValue === 'object' && 'uuid' in obsValue ? obsValue.uuid : null; + const finalConcept = dependantUuid === conditionalConcept ? trueConcept : nonTrueConcept; + return getObsFromEncounter(encounter, finalConcept, isDate, false, undefined, undefined, undefined, config); +} + +export function getConceptFromMappings(encounter: Encounter, concepts) { + for (const concept of concepts) { + const obs = findObs(encounter, concept); + if (obs && obs.value) { + return concept; + } + } + return null; +} + +export function getMultipleObsFromEncounter(encounter: Encounter, obsConcepts: Array, config: ConfigConcepts) { + let observations = []; + obsConcepts.map((concept) => { + const obs = getObsFromEncounter(encounter, concept, false, false, undefined, undefined, undefined, config); + if (obs !== '--') { + observations.push(obs); + } + }); + + return observations.length ? observations.join(', ') : '--'; +} + +export function getObsFromEncounter( + encounter: Encounter, + obsConcept, + isDate?: Boolean, + isTrueFalseConcept?: Boolean, + type?: string, + fallbackConcepts?: Array, + secondaryConcept?: string, + config?: ConfigConcepts, +) { + let obs = findObs(encounter, obsConcept); + + if (!encounter || !obsConcept) { + return '--'; + } + + if (isTrueFalseConcept) { + if (typeof obs?.value === 'object') { + if (obs?.value?.uuid === config.falseConceptUuid || obs?.value?.uuid === config.trueConceptUuid) { + return obs?.value?.name?.name; + } + } + } + + if (type === 'location') { + return encounter.location.name; + } + + if (type === 'provider') { + return encounter.encounterProviders.map((p) => p.provider.name).join(' | '); + } + + // TODO: This needs to be added later + if (type === 'mothersName') { + return; + } + + if (type === 'visitType') { + return encounter.encounterType.name; + } + + // TODO: Need to get a better place for this + if (type === 'ageAtHivTest') { + return age(encounter.patient.birthDate, encounter.encounterDatetime); + } + + // + if (secondaryConcept && typeof obs.value === 'object' && obs.value.names) { + const primaryValue = + obs.value.names.find((conceptName) => conceptName.conceptNameType === 'SHORT')?.name || obs.value.name.name; + if (primaryValue === config.otherConceptUuid) { + const secondaryObs = findObs(encounter, secondaryConcept); + return secondaryObs ? secondaryObs.value : '--'; + } + } + + if (!obs && fallbackConcepts?.length) { + const concept = fallbackConcepts.find((c) => findObs(encounter, c) != null); + obs = findObs(encounter, concept); + } + + if (!obs) { + return '--'; + } + + if (isDate) { + if (typeof obs.value === 'object' && obs.value?.names) { + return formatDate(parseDate(obs.obsDatetime), { mode: 'wide' }); + } else { + return typeof obs.value === 'string' ? formatDate(parseDate(obs.value), { mode: 'wide' }) : '--'; + } + } + + if (typeof obs.value === 'object' && obs.value?.names) { + return ( + obs.value?.names?.find((conceptName) => conceptName.conceptNameType === 'SHORT')?.name || obs.value.name.name + ); + } + return obs.value; +} + +export const filter = (encounter: Encounter, formUuid: string) => encounter?.form?.uuid === formUuid; diff --git a/packages/esm-patient-chart-app/src/index.ts b/packages/esm-patient-chart-app/src/index.ts index 4e1566570e..d46d643695 100644 --- a/packages/esm-patient-chart-app/src/index.ts +++ b/packages/esm-patient-chart-app/src/index.ts @@ -225,3 +225,8 @@ export const activeVisitActionsComponent = getAsyncLifecycle( () => import('./visit/visits-widget/active-visit-buttons/active-visit-buttons'), { featureName: 'active-visit-actions', moduleName }, ); + +export const encounterListTableTabs = getAsyncLifecycle( + () => import('./encounter-list/components/encounter-list-tabs.component'), + { featureName: 'encounter-list-table-tabs', moduleName }, +); diff --git a/packages/esm-patient-chart-app/src/routes.json b/packages/esm-patient-chart-app/src/routes.json index 5973d07f33..4fa53595e5 100644 --- a/packages/esm-patient-chart-app/src/routes.json +++ b/packages/esm-patient-chart-app/src/routes.json @@ -23,6 +23,12 @@ "online": true, "offline": true }, + { + "name": "encounter-list", + "component": "encounterListTableTabs", + "online": true, + "offline": true + }, { "name": "start-visit-button", "component": "startVisitActionButton", diff --git a/packages/esm-patient-chart-app/src/visit/visits-widget/past-visits-components/visits-table/visits-table.component.tsx b/packages/esm-patient-chart-app/src/visit/visits-widget/past-visits-components/visits-table/visits-table.component.tsx index 1a700f488c..2fdba8fe6c 100644 --- a/packages/esm-patient-chart-app/src/visit/visits-widget/past-visits-components/visits-table/visits-table.component.tsx +++ b/packages/esm-patient-chart-app/src/visit/visits-widget/past-visits-components/visits-table/visits-table.component.tsx @@ -147,7 +147,7 @@ const VisitTable: React.FC = ({ showAllEncounters, visits, pati showSnackbar({ isLowContrast: true, title: t('encounterDeleted', 'Encounter deleted'), - subtitle: `Encounter ${t('successfullyDeleted', 'successfully deleted')}`, + subtitle: t('encounterSuccessfullyDeleted', 'The encounter has been deleted successfully'), kind: 'success', }); }) @@ -155,7 +155,10 @@ const VisitTable: React.FC = ({ showAllEncounters, visits, pati showSnackbar({ isLowContrast: false, title: t('error', 'Error'), - subtitle: `Encounter ${t('failedDeleting', "couldn't be deleted")}`, + subtitle: t( + 'encounterWithError', + 'The encounter could not be deleted successfully. If the error persists, please contact your system administrator.', + ), kind: 'error', }); }); diff --git a/packages/esm-patient-chart-app/src/visit/visits-widget/past-visits-components/visits-table/visits-table.resource.tsx b/packages/esm-patient-chart-app/src/visit/visits-widget/past-visits-components/visits-table/visits-table.resource.tsx index a31d1544fe..ddec57b212 100644 --- a/packages/esm-patient-chart-app/src/visit/visits-widget/past-visits-components/visits-table/visits-table.resource.tsx +++ b/packages/esm-patient-chart-app/src/visit/visits-widget/past-visits-components/visits-table/visits-table.resource.tsx @@ -3,9 +3,6 @@ import { openmrsFetch, restBaseUrl } from '@openmrs/esm-framework'; export function deleteEncounter(encounterUuid: string, abortController: AbortController) { return openmrsFetch(`${restBaseUrl}/encounter/${encounterUuid}`, { method: 'DELETE', - headers: { - 'Content-Type': 'application/json', - }, signal: abortController.signal, }); } diff --git a/packages/esm-patient-chart-app/translations/en.json b/packages/esm-patient-chart-app/translations/en.json index aaf1e2776a..f1ac5d0800 100644 --- a/packages/esm-patient-chart-app/translations/en.json +++ b/packages/esm-patient-chart-app/translations/en.json @@ -34,6 +34,7 @@ "diagnoses": "Diagnoses", "discard": "Discard", "dose": "Dose", + "editEncounter": "Edit", "editPastVisit": "Edit past visit", "editThisEncounter": "Edit this encounter", "editThisVisit": "Edit this visit", @@ -43,7 +44,9 @@ "encounters": "Encounters", "encounters__lower": "encounters", "encounters_title": "Encounters", + "encounterSuccessfullyDeleted": "The encounter has been deleted successfully", "encounterType": "Encounter type", + "encounterWithError": "The encounter could not be deleted successfully. If the error persists, please contact your system administrator.", "end": "End", "endActiveVisitConfirmation": "Are you sure you want to end this active visit?", "endDate": "End date", @@ -65,7 +68,6 @@ "errorUpdatingVisitAttribute": "Could not update {{attributeName}} attribute", "errorUpdatingVisitDetails": "Error updating visit details", "errorWhenRestoringVisit": "Error occured when restoring {{visit}}", - "failedDeleting": "couldn't be deleted", "failedToLoadCurrentVisit": "Failed loading current visit", "fieldRequired": "This field is required", "filterByEncounterType": "Filter by encounter type", @@ -144,7 +146,6 @@ "startNewVisit": "Start new visit", "startVisit": "Start visit", "startVisitError": "Error starting visit", - "successfullyDeleted": "successfully deleted", "tests": "Tests", "time": "Time", "timeFormat ": "Time Format", @@ -152,6 +153,7 @@ "undo": "Undo", "updateVisit": "Update visit", "updatingVisit": "Updating visit", + "viewEncounter": "View", "visit": "Visit", "visitAttributes": "Visit attributes", "visitCancelled": "Visit cancelled", From d812c12b6a79bb1d90e5f2a3a8bb658737713780 Mon Sep 17 00:00:00 2001 From: Dennis Kigen Date: Tue, 17 Dec 2024 19:54:27 +0300 Subject: [PATCH 12/15] (fix) Prevent status button text wrapping in the visit header (#2158) Fixes an issue where the status button text would wrap in the visit header when the text was long. Does so by adding `white-space: nowrap` to the status button. --- .../src/visit/queue-entry/edit-queue-entry.scss | 1 + packages/esm-patient-orders-app/translations/en.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/esm-patient-chart-app/src/visit/queue-entry/edit-queue-entry.scss b/packages/esm-patient-chart-app/src/visit/queue-entry/edit-queue-entry.scss index 3d8992a1d6..1fda6a8bd2 100644 --- a/packages/esm-patient-chart-app/src/visit/queue-entry/edit-queue-entry.scss +++ b/packages/esm-patient-chart-app/src/visit/queue-entry/edit-queue-entry.scss @@ -2,6 +2,7 @@ @use '@openmrs/esm-styleguide/src/vars' as *; .editStatusBtn { + white-space: nowrap; margin-left: layout.$spacing-04; border: none; } diff --git a/packages/esm-patient-orders-app/translations/en.json b/packages/esm-patient-orders-app/translations/en.json index 136a4c3b14..9878c76994 100644 --- a/packages/esm-patient-orders-app/translations/en.json +++ b/packages/esm-patient-orders-app/translations/en.json @@ -30,9 +30,9 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", - "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", + "labResultError": "Error loading lab results", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", From b52085672676d476505163d3a3289185a6c6325a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 20:55:49 +0300 Subject: [PATCH 13/15] (chore) Update translations from Transifex (#2159) Co-authored-by: OpenMRS Bot --- .../translations/pt_BR.json | 90 +++++++++---------- .../translations/am.json | 2 + .../translations/ar.json | 2 + .../translations/de.json | 2 + .../translations/es.json | 2 + .../translations/fr.json | 2 + .../translations/he.json | 2 + .../translations/hi.json | 2 + .../translations/hi_IN.json | 2 + .../translations/id.json | 2 + .../translations/it.json | 2 + .../translations/km.json | 2 + .../translations/ne.json | 2 + .../translations/pt.json | 2 + .../translations/pt_BR.json | 2 + .../translations/qu.json | 2 + .../translations/si.json | 2 + .../translations/sw.json | 2 + .../translations/sw_KE.json | 2 + .../translations/tr.json | 2 + .../translations/tr_TR.json | 2 + .../translations/uk.json | 2 + .../translations/vi.json | 2 + .../translations/zh.json | 2 + .../translations/zh_CN.json | 2 + 25 files changed, 93 insertions(+), 45 deletions(-) diff --git a/packages/esm-patient-allergies-app/translations/pt_BR.json b/packages/esm-patient-allergies-app/translations/pt_BR.json index 92d41f0b49..9b96690677 100644 --- a/packages/esm-patient-allergies-app/translations/pt_BR.json +++ b/packages/esm-patient-allergies-app/translations/pt_BR.json @@ -1,47 +1,47 @@ { - "add": "Add", - "allergen": "Allergen", - "allergies": "Allergies", - "Allergies": "Allergies", - "allergyDeleted": "Allergy deleted", - "allergyIntolerances": "allergy intolerances", - "allergyNowVisible": "It is now visible on the Allergies page", - "allergySaved": "Allergy saved", - "allergySaveError": "Error saving allergy", - "allergyUpdated": "Allergy updated", - "cancel": "Cancel", - "dateOfOnsetAndComments": "Date of onset and comments", - "delete": "Delete", - "deleteModalConfirmationText": "Are you sure you want to delete this allergy?", - "deletePatientAllergy": "Delete allergy", - "deleting": "Deleting", - "discard": "Discard", - "edit": "Edit", - "editAllergy": "Edit an Allergy", - "editOrDeleteAllergy": "Edit or delete allergy", - "errorDeletingAllergy": "Error deleting allergy", - "invalidComment": "Invalid comment, try again", - "loading": "Loading", - "mild": "Mild", - "moderate": "Moderate", - "name": "Name", - "nonCodedAllergenWarningDescription": "Adding a custom allergen may impact system-wide allergy notifications. It's recommended to choose from the provided list for accurate alerts. Custom entries may not trigger notifications in all relevant contexts.", - "nonCodedAllergenWarningTitle": "Warning: Custom Allergen Entry", - "onsetDateAndComments": "Onset date and comments", - "other": "Other", - "otherNonCodedAllergen": "Other non-coded allergen", - "otherNonCodedAllergicReaction": "Other non-coded allergic reaction", - "reaction": "Reaction", - "reactions": "Reactions", - "recordNewAllergy": "Record a new allergy", - "saveAndClose": "Save and close", - "seeAll": "See all", - "selectAllergen": "Select the allergen", - "selectReactions": "Select the reactions", - "severe": "Severe", - "severityandReaction": "Severity", - "severityOfWorstReaction": "Severity of worst reaction", - "typeAdditionalComments": "Type any additional comments here", - "typeAllergenName": "Please type in the name of the allergen", - "typeAllergicReactionName": "Please type in the name of the allergic reaction" + "add": "Adicionar", + "allergen": "Alérgeno", + "allergies": "Alergias", + "Allergies": "Alergias", + "allergyDeleted": "Alergia excluída", + "allergyIntolerances": "intolerâncias alérgicas", + "allergyNowVisible": "Agora está visível na página de Alergias", + "allergySaved": "Alergia gravada", + "allergySaveError": "Erro ao gravar alergia", + "allergyUpdated": "Alergia atualizada", + "cancel": "Cancelar", + "dateOfOnsetAndComments": "Data de início e comentários", + "delete": "Apagar", + "deleteModalConfirmationText": "Tem certeza de que deseja remover esta alergia?", + "deletePatientAllergy": "Apagar alergia", + "deleting": "Removendo", + "discard": "Descartar", + "edit": "Editar", + "editAllergy": "Editar uma Alergia", + "editOrDeleteAllergy": "Editar ou apagar alergia", + "errorDeletingAllergy": "Erro ao apagar alergia", + "invalidComment": "Comentário inválido, tente novamente", + "loading": "Carregando", + "mild": "Leve", + "moderate": "Moderado", + "name": "Nome", + "nonCodedAllergenWarningDescription": "Adicionar um alérgeno personalizado pode afetar as notificações de alergia em todo o sistema. É recomendado escolher na lista correta fornecida para melhores alertas. As entradas personalizadas podem não acionar notificações em todos os contextos relevantes.", + "nonCodedAllergenWarningTitle": "Aviso: Entrada personalizada de alérgenos", + "onsetDateAndComments": "Data de início e comentários", + "other": "Outro", + "otherNonCodedAllergen": "Outro alergeno não codificado", + "otherNonCodedAllergicReaction": "Outra reação alérgica não codificada", + "reaction": "Reação", + "reactions": "Reações", + "recordNewAllergy": "Registar nova alergia", + "saveAndClose": "Salvar e fechar", + "seeAll": "Ver tudo", + "selectAllergen": "Selecione o alérgeno", + "selectReactions": "Selecione as reações", + "severe": "Severa", + "severityandReaction": "Gravidade", + "severityOfWorstReaction": "Gravidade da pior reação", + "typeAdditionalComments": "Descreva qualquer comentário adicional aqui", + "typeAllergenName": "Por favor digite o nome do alérgeno", + "typeAllergicReactionName": "Por favor digite o nome da reação alérgica" } diff --git a/packages/esm-patient-orders-app/translations/am.json b/packages/esm-patient-orders-app/translations/am.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/am.json +++ b/packages/esm-patient-orders-app/translations/am.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/ar.json b/packages/esm-patient-orders-app/translations/ar.json index 91d4b9a165..2cd81f4079 100644 --- a/packages/esm-patient-orders-app/translations/ar.json +++ b/packages/esm-patient-orders-app/translations/ar.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/de.json b/packages/esm-patient-orders-app/translations/de.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/de.json +++ b/packages/esm-patient-orders-app/translations/de.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/es.json b/packages/esm-patient-orders-app/translations/es.json index f44c7abdcb..30f5360172 100644 --- a/packages/esm-patient-orders-app/translations/es.json +++ b/packages/esm-patient-orders-app/translations/es.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error al guardar los resultados de laboratorio", "goToDrugOrderForm": "Order form", "indication": "Indicación", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Iniciar cesta de órdenes", "loading": "Cargando", "loadingInitialValues": "Cargando valores iniciales", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Cargando detalles de la prueba", "medicationDurationAndUnit": "por {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Duración indefinida", diff --git a/packages/esm-patient-orders-app/translations/fr.json b/packages/esm-patient-orders-app/translations/fr.json index e0dbe331b4..2c5fdae830 100644 --- a/packages/esm-patient-orders-app/translations/fr.json +++ b/packages/esm-patient-orders-app/translations/fr.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Erreur lors de la sauvegarde du résultat de laboratoire", "goToDrugOrderForm": "Bon de commande", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "En stock", "instructions": "Instructions", "launchOrderBasket": "Charger le panier de commande", "loading": "Chargement", "loadingInitialValues": "Chargement des valeurs initiales", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Chargement des détails du test", "medicationDurationAndUnit": "pour {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Durée indéfinie", diff --git a/packages/esm-patient-orders-app/translations/he.json b/packages/esm-patient-orders-app/translations/he.json index 11030a4774..4a14d1ddd1 100644 --- a/packages/esm-patient-orders-app/translations/he.json +++ b/packages/esm-patient-orders-app/translations/he.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/hi.json b/packages/esm-patient-orders-app/translations/hi.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/hi.json +++ b/packages/esm-patient-orders-app/translations/hi.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/hi_IN.json b/packages/esm-patient-orders-app/translations/hi_IN.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/hi_IN.json +++ b/packages/esm-patient-orders-app/translations/hi_IN.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/id.json b/packages/esm-patient-orders-app/translations/id.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/id.json +++ b/packages/esm-patient-orders-app/translations/id.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/it.json b/packages/esm-patient-orders-app/translations/it.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/it.json +++ b/packages/esm-patient-orders-app/translations/it.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/km.json b/packages/esm-patient-orders-app/translations/km.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/km.json +++ b/packages/esm-patient-orders-app/translations/km.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/ne.json b/packages/esm-patient-orders-app/translations/ne.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/ne.json +++ b/packages/esm-patient-orders-app/translations/ne.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/pt.json b/packages/esm-patient-orders-app/translations/pt.json index 92b0c1f98c..f6d5512fc9 100644 --- a/packages/esm-patient-orders-app/translations/pt.json +++ b/packages/esm-patient-orders-app/translations/pt.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Erro ao salvar resultados laboratoriais", "goToDrugOrderForm": "Order form", "indication": "Indicação", + "labResultError": "Error loading lab results", "inStock": "Em stock", "instructions": "Instructions", "launchOrderBasket": "Iniciar carrinho de pedido", "loading": "Carregando", "loadingInitialValues": "Carregando valores iniciais", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Carregando detalhes do teste", "medicationDurationAndUnit": "para {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Duração indefinida", diff --git a/packages/esm-patient-orders-app/translations/pt_BR.json b/packages/esm-patient-orders-app/translations/pt_BR.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/pt_BR.json +++ b/packages/esm-patient-orders-app/translations/pt_BR.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/qu.json b/packages/esm-patient-orders-app/translations/qu.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/qu.json +++ b/packages/esm-patient-orders-app/translations/qu.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/si.json b/packages/esm-patient-orders-app/translations/si.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/si.json +++ b/packages/esm-patient-orders-app/translations/si.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/sw.json b/packages/esm-patient-orders-app/translations/sw.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/sw.json +++ b/packages/esm-patient-orders-app/translations/sw.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/sw_KE.json b/packages/esm-patient-orders-app/translations/sw_KE.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/sw_KE.json +++ b/packages/esm-patient-orders-app/translations/sw_KE.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/tr.json b/packages/esm-patient-orders-app/translations/tr.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/tr.json +++ b/packages/esm-patient-orders-app/translations/tr.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/tr_TR.json b/packages/esm-patient-orders-app/translations/tr_TR.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/tr_TR.json +++ b/packages/esm-patient-orders-app/translations/tr_TR.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/uk.json b/packages/esm-patient-orders-app/translations/uk.json index 9d3d18d84c..136a4c3b14 100644 --- a/packages/esm-patient-orders-app/translations/uk.json +++ b/packages/esm-patient-orders-app/translations/uk.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Indication", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Loading", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/vi.json b/packages/esm-patient-orders-app/translations/vi.json index 9ed13ee549..b28b89db02 100644 --- a/packages/esm-patient-orders-app/translations/vi.json +++ b/packages/esm-patient-orders-app/translations/vi.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "Error saving lab results", "goToDrugOrderForm": "Order form", "indication": "Chỉ định", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "Launch order basket", "loading": "Đang tải", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "Loading test details", "medicationDurationAndUnit": "for {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "Indefinite duration", diff --git a/packages/esm-patient-orders-app/translations/zh.json b/packages/esm-patient-orders-app/translations/zh.json index 67546dee1f..9a6ff1abc6 100644 --- a/packages/esm-patient-orders-app/translations/zh.json +++ b/packages/esm-patient-orders-app/translations/zh.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "保存检验结果时出现错误", "goToDrugOrderForm": "Order form", "indication": "适应症", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "开启医嘱篮", "loading": "加载中", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "正在加载检验信息", "medicationDurationAndUnit": "持续 {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "无限期", diff --git a/packages/esm-patient-orders-app/translations/zh_CN.json b/packages/esm-patient-orders-app/translations/zh_CN.json index 67546dee1f..9a6ff1abc6 100644 --- a/packages/esm-patient-orders-app/translations/zh_CN.json +++ b/packages/esm-patient-orders-app/translations/zh_CN.json @@ -30,11 +30,13 @@ "errorSavingLabResults": "保存检验结果时出现错误", "goToDrugOrderForm": "Order form", "indication": "适应症", + "labResultError": "Error loading lab results", "inStock": "In stock", "instructions": "Instructions", "launchOrderBasket": "开启医嘱篮", "loading": "加载中", "loadingInitialValues": "Loading initial values", + "loadinglabresults": "Loading lab results", "loadingTestDetails": "正在加载检验信息", "medicationDurationAndUnit": "持续 {{duration}} {{durationUnit}}", "medicationIndefiniteDuration": "无限期", From 19351560c0c4973039e11c988d9370bdf9ec2e87 Mon Sep 17 00:00:00 2001 From: Dennis Kigen Date: Tue, 17 Dec 2024 23:15:08 +0300 Subject: [PATCH 14/15] (chore) Release v9.0.0 (#2162) Cuts a major release of Patient Chart, v9.0.0 with a breaking change, new features and fixes, and host of other changes. --- package.json | 2 +- packages/esm-form-engine-app/package.json | 4 +- packages/esm-form-entry-app/package.json | 2 +- .../package.json | 4 +- .../esm-patient-allergies-app/package.json | 4 +- .../esm-patient-attachments-app/package.json | 6 +- packages/esm-patient-banner-app/package.json | 6 +- packages/esm-patient-chart-app/package.json | 2 +- packages/esm-patient-common-lib/package.json | 2 +- .../esm-patient-conditions-app/package.json | 6 +- packages/esm-patient-flags-app/package.json | 4 +- packages/esm-patient-forms-app/package.json | 6 +- .../package.json | 4 +- packages/esm-patient-lists-app/package.json | 4 +- .../esm-patient-medications-app/package.json | 6 +- packages/esm-patient-notes-app/package.json | 6 +- packages/esm-patient-orders-app/package.json | 6 +- .../esm-patient-programs-app/package.json | 6 +- packages/esm-patient-tests-app/package.json | 6 +- packages/esm-patient-vitals-app/package.json | 6 +- yarn.lock | 348 +++++++++--------- 21 files changed, 220 insertions(+), 220 deletions(-) diff --git a/package.json b/package.json index 218909ae41..3d0a362d5a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@openmrs/esm-patient-chart", "private": true, - "version": "8.2.0", + "version": "9.0.0", "workspaces": [ "packages/*" ], diff --git a/packages/esm-form-engine-app/package.json b/packages/esm-form-engine-app/package.json index ebb7da4efe..7ab6f51dc6 100644 --- a/packages/esm-form-engine-app/package.json +++ b/packages/esm-form-engine-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-form-engine-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Wrapper ESM for the O3 React Form Engine", "browser": "dist/openmrs-esm-form-engine-app.js", @@ -44,7 +44,7 @@ }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-form-entry-app/package.json b/packages/esm-form-entry-app/package.json index 06a33052fb..3bc10fbe32 100644 --- a/packages/esm-form-entry-app/package.json +++ b/packages/esm-form-entry-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-form-entry-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Angular form engine for O3", "browser": "dist/openmrs-esm-form-entry-app.js", diff --git a/packages/esm-generic-patient-widgets-app/package.json b/packages/esm-generic-patient-widgets-app/package.json index 9920bc7f7e..2ed4638d3e 100644 --- a/packages/esm-generic-patient-widgets-app/package.json +++ b/packages/esm-generic-patient-widgets-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-generic-patient-widgets-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Generic widgets for the patient chart", "browser": "dist/openmrs-esm-generic-patient-widgets-app.js", @@ -44,7 +44,7 @@ }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "^18.2.0", "react-i18next": "11.x", diff --git a/packages/esm-patient-allergies-app/package.json b/packages/esm-patient-allergies-app/package.json index 00c1724352..838dfeaa0c 100644 --- a/packages/esm-patient-allergies-app/package.json +++ b/packages/esm-patient-allergies-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-allergies-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient allergies microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-allergies-app.js", @@ -42,7 +42,7 @@ }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "^18.2.0", "react-i18next": "11.x", diff --git a/packages/esm-patient-attachments-app/package.json b/packages/esm-patient-attachments-app/package.json index 911e3aec46..3d33ea0788 100644 --- a/packages/esm-patient-attachments-app/package.json +++ b/packages/esm-patient-attachments-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-attachments-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient attachments microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-attachments-app.js", @@ -38,14 +38,14 @@ }, "dependencies": { "@carbon/react": "^1.12.0", - "@openmrs/esm-patient-common-lib": "^8.2.0", + "@openmrs/esm-patient-common-lib": "^9.0.0", "lodash-es": "^4.17.21", "react-grid-gallery": "^0.5.6", "react-html5-camera-photo": "^1.5.11" }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "^18.2.0", "react-i18next": "11.x", diff --git a/packages/esm-patient-banner-app/package.json b/packages/esm-patient-banner-app/package.json index d6dcae5211..320e88edb7 100644 --- a/packages/esm-patient-banner-app/package.json +++ b/packages/esm-patient-banner-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-banner-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient banner microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-banner-app.js", @@ -38,12 +38,12 @@ }, "dependencies": { "@carbon/react": "^1.12.0", - "@openmrs/esm-patient-common-lib": "^8.2.0", + "@openmrs/esm-patient-common-lib": "^9.0.0", "lodash-es": "^4.17.21" }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-patient-chart-app/package.json b/packages/esm-patient-chart-app/package.json index 202bc55257..b47bbcb07a 100644 --- a/packages/esm-patient-chart-app/package.json +++ b/packages/esm-patient-chart-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-chart-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient dashboard microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-chart-app.js", diff --git a/packages/esm-patient-common-lib/package.json b/packages/esm-patient-common-lib/package.json index c468a04e3e..186ad2d992 100644 --- a/packages/esm-patient-common-lib/package.json +++ b/packages/esm-patient-common-lib/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-common-lib", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Library for common patient chart components", "browser": "dist/openmrs-esm-patient-common-lib.js", diff --git a/packages/esm-patient-conditions-app/package.json b/packages/esm-patient-conditions-app/package.json index 253a795896..a50d3651f4 100644 --- a/packages/esm-patient-conditions-app/package.json +++ b/packages/esm-patient-conditions-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-conditions-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient conditions microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-conditions-app.js", @@ -38,12 +38,12 @@ }, "dependencies": { "@carbon/react": "^1.12.0", - "@openmrs/esm-patient-common-lib": "^8.2.0", + "@openmrs/esm-patient-common-lib": "^9.0.0", "lodash-es": "^4.17.21" }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-patient-flags-app/package.json b/packages/esm-patient-flags-app/package.json index 2c4ee51298..64963e52b3 100644 --- a/packages/esm-patient-flags-app/package.json +++ b/packages/esm-patient-flags-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-flags-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "An OpenMRS frontend module for managing patient flags", "browser": "dist/openmrs-esm-patient-flags-app.js", @@ -41,7 +41,7 @@ }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-patient-forms-app/package.json b/packages/esm-patient-forms-app/package.json index 567de31227..24ebdac511 100644 --- a/packages/esm-patient-forms-app/package.json +++ b/packages/esm-patient-forms-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-forms-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient forms microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-forms-app.js", @@ -38,13 +38,13 @@ }, "dependencies": { "@carbon/react": "^1.12.0", - "@openmrs/esm-patient-common-lib": "^8.2.0", + "@openmrs/esm-patient-common-lib": "^9.0.0", "fuzzy": "^0.1.3", "lodash-es": "^4.17.21" }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-patient-immunizations-app/package.json b/packages/esm-patient-immunizations-app/package.json index 6523fab2b8..b6859728cd 100644 --- a/packages/esm-patient-immunizations-app/package.json +++ b/packages/esm-patient-immunizations-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-immunizations-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient immunizations microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-immunizations-app.js", @@ -45,7 +45,7 @@ }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-patient-lists-app/package.json b/packages/esm-patient-lists-app/package.json index 67b05f6f9b..a087119382 100644 --- a/packages/esm-patient-lists-app/package.json +++ b/packages/esm-patient-lists-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-lists-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "An OpenMRS frontend module for managing patient lists in the Patient Chart", "browser": "dist/openmrs-esm-patient-lists-app.js", @@ -41,7 +41,7 @@ }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-patient-medications-app/package.json b/packages/esm-patient-medications-app/package.json index 5b59590337..7dd8ae14d6 100644 --- a/packages/esm-patient-medications-app/package.json +++ b/packages/esm-patient-medications-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-medications-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient medications microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-medications-app.js", @@ -38,12 +38,12 @@ }, "dependencies": { "@carbon/react": "^1.12.0", - "@openmrs/esm-patient-common-lib": "^8.2.0", + "@openmrs/esm-patient-common-lib": "^9.0.0", "lodash-es": "^4.17.21" }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-patient-notes-app/package.json b/packages/esm-patient-notes-app/package.json index fa3d78a7a4..6661e7c0e0 100644 --- a/packages/esm-patient-notes-app/package.json +++ b/packages/esm-patient-notes-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-notes-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient notes microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-notes-app.js", @@ -37,12 +37,12 @@ "url": "https://github.com/openmrs/openmrs-esm-patient-chart/issues" }, "dependencies": { - "@openmrs/esm-patient-common-lib": "^8.2.0", + "@openmrs/esm-patient-common-lib": "^9.0.0", "lodash-es": "^4.17.21" }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-patient-orders-app/package.json b/packages/esm-patient-orders-app/package.json index edc0b8acba..7bc06fa625 100644 --- a/packages/esm-patient-orders-app/package.json +++ b/packages/esm-patient-orders-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-orders-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Microfrontend for the OpenMRS SPA providing the order basket for the patient chart", "browser": "dist/openmrs-esm-patient-orders-app.js", @@ -38,12 +38,12 @@ }, "dependencies": { "@carbon/react": "^1.12.0", - "@openmrs/esm-patient-common-lib": "^8.2.0", + "@openmrs/esm-patient-common-lib": "^9.0.0", "lodash-es": "^4.17.21" }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-patient-programs-app/package.json b/packages/esm-patient-programs-app/package.json index 11b0051066..17f854efea 100644 --- a/packages/esm-patient-programs-app/package.json +++ b/packages/esm-patient-programs-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-programs-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient programs microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-programs-app.js", @@ -38,12 +38,12 @@ }, "dependencies": { "@carbon/react": "^1.12.0", - "@openmrs/esm-patient-common-lib": "^8.2.0", + "@openmrs/esm-patient-common-lib": "^9.0.0", "lodash-es": "^4.17.21" }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/packages/esm-patient-tests-app/package.json b/packages/esm-patient-tests-app/package.json index fa26d839be..bbd8453987 100644 --- a/packages/esm-patient-tests-app/package.json +++ b/packages/esm-patient-tests-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-tests-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient test order and results microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-tests-app.js", @@ -40,14 +40,14 @@ "@carbon/charts": "^1.5.2", "@carbon/charts-react": "^1.5.2", "@carbon/react": "^1.12.0", - "@openmrs/esm-patient-common-lib": "^8.2.0", + "@openmrs/esm-patient-common-lib": "^9.0.0", "d3": "^7.6.1", "fuzzy": "^0.1.3", "lodash-es": "^4.17.21" }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "react": "18.x", "react-i18next": "11.x", "react-router-dom": "6.x", diff --git a/packages/esm-patient-vitals-app/package.json b/packages/esm-patient-vitals-app/package.json index 38c0734ce5..0ac0bb3857 100644 --- a/packages/esm-patient-vitals-app/package.json +++ b/packages/esm-patient-vitals-app/package.json @@ -1,6 +1,6 @@ { "name": "@openmrs/esm-patient-vitals-app", - "version": "8.2.0", + "version": "9.0.0", "license": "MPL-2.0", "description": "Patient vitals microfrontend for the OpenMRS SPA", "browser": "dist/openmrs-esm-patient-vitals-app.js", @@ -39,13 +39,13 @@ "dependencies": { "@carbon/charts-react": "^1.5.2", "@carbon/react": "^1.12.0", - "@openmrs/esm-patient-common-lib": "^8.2.0", + "@openmrs/esm-patient-common-lib": "^9.0.0", "d3": "^7.6.1", "lodash-es": "^4.17.21" }, "peerDependencies": { "@openmrs/esm-framework": "6.x", - "@openmrs/esm-patient-common-lib": "8.x", + "@openmrs/esm-patient-common-lib": "9.x", "dayjs": "1.x", "react": "18.x", "react-i18next": "11.x", diff --git a/yarn.lock b/yarn.lock index 7a2afaf3db..98c2a79b2c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5516,28 +5516,28 @@ __metadata: languageName: node linkType: hard -"@openmrs/esm-api@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-api@npm:6.0.1-pre.2544" +"@openmrs/esm-api@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-api@npm:6.0.3-pre.2587" dependencies: "@types/fhir": "npm:0.0.31" lodash-es: "npm:^4.17.21" peerDependencies: - "@openmrs/esm-config": 5.x - "@openmrs/esm-error-handling": 5.x - "@openmrs/esm-navigation": 5.x - "@openmrs/esm-offline": 5.x - checksum: 10/92314f079f2e1896729a8c6dfae064af4586063702017d09e170287c71525f62695de1ab9577534d3ca8efe7ca516164829ef384effd79b8a5eb667e1b4ed440 + "@openmrs/esm-config": 6.x + "@openmrs/esm-error-handling": 6.x + "@openmrs/esm-navigation": 6.x + "@openmrs/esm-offline": 6.x + checksum: 10/f60fa558f94b2c25e0b9a41d3545106fa8374873eb3964274da9c5b62815b24f421f6fa37466a1d880c3e1d1c628d12f989ac061f9a1fca050b1e265f83018df languageName: node linkType: hard -"@openmrs/esm-app-shell@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-app-shell@npm:6.0.1-pre.2544" +"@openmrs/esm-app-shell@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-app-shell@npm:6.0.3-pre.2587" dependencies: "@carbon/react": "npm:~1.37.0" - "@openmrs/esm-framework": "npm:6.0.1-pre.2544" - "@openmrs/esm-styleguide": "npm:6.0.1-pre.2544" + "@openmrs/esm-framework": "npm:6.0.3-pre.2587" + "@openmrs/esm-styleguide": "npm:6.0.3-pre.2587" dayjs: "npm:^1.10.4" dexie: "npm:^3.0.3" html-webpack-plugin: "npm:^5.5.0" @@ -5562,58 +5562,58 @@ __metadata: workbox-strategies: "npm:^6.1.5" workbox-webpack-plugin: "npm:^6.1.5" workbox-window: "npm:^6.1.5" - checksum: 10/1b9b190dd20f4b2b4a8649e47432da5b72bbb223205e802c9827362241e8ea43a8adbdf0567a20b9e37f5cd59e9074961b02d6798435cafd76b86850076705f6 + checksum: 10/41d62d459bc14cc289867ace21703eb59718850cff490b557cf411d0cae710f83aed67272c1d9c735802139e68dfa5ae5aeabae90bef1a34c9a036dec0454169 languageName: node linkType: hard -"@openmrs/esm-config@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-config@npm:6.0.1-pre.2544" +"@openmrs/esm-config@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-config@npm:6.0.3-pre.2587" dependencies: ramda: "npm:^0.26.1" peerDependencies: - "@openmrs/esm-globals": 5.x - "@openmrs/esm-state": 5.x - "@openmrs/esm-utils": 5.x - single-spa: 5.x - checksum: 10/7caa9c509bd52d1c80ff7f989f2401d0b4bb675b956e903bae42ce9664bd239bbc69268dbed41005af11fedd65d3b268f4f55173b2c0bde8aab42e5f0f8a03bb + "@openmrs/esm-globals": 6.x + "@openmrs/esm-state": 6.x + "@openmrs/esm-utils": 6.x + single-spa: 6.x + checksum: 10/394f7771cb1c79a7e86ebfdd744b88635694ae40ddcd7480eae6307dbfd1edf384e6472709da8b69c8af3023457fe1903dca4b6b46e950671ef204e3a4f72ce6 languageName: node linkType: hard -"@openmrs/esm-context@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-context@npm:6.0.1-pre.2544" +"@openmrs/esm-context@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-context@npm:6.0.3-pre.2587" dependencies: immer: "npm:^10.0.4" peerDependencies: - "@openmrs/esm-globals": 5.x - "@openmrs/esm-state": 5.x - checksum: 10/2f27a6f0580afd97e443850dbec0df436b078868e60f103fd2a047e981f38bef802626e6c1d73264d89b23392a3cb1a158364ac7a6d5a7cf2875772e86461f14 + "@openmrs/esm-globals": 6.x + "@openmrs/esm-state": 6.x + checksum: 10/44c3a1a0075fea0bc7e46606f5c92acfbf8acf258649d014831433bb1bc35393692afe94dd1d19a5ebe70c17b66a72963bdd1353dd0afa4aff7d4b17e48ba624 languageName: node linkType: hard -"@openmrs/esm-dynamic-loading@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-dynamic-loading@npm:6.0.1-pre.2544" +"@openmrs/esm-dynamic-loading@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-dynamic-loading@npm:6.0.3-pre.2587" peerDependencies: - "@openmrs/esm-globals": 5.x - "@openmrs/esm-translations": 5.x - checksum: 10/a8c485c495c20dd096d997cf01909560a31d0ed692c73e1f677a1a6c06ea59d776358009f28356eb5a29b6867fdc7ec44ba04f1debc8cc65769ee93455504f97 + "@openmrs/esm-globals": 6.x + "@openmrs/esm-translations": 6.x + checksum: 10/e06ce23bbcc251f52ed6ff575b5b75bcd48064705cc93b29b5130b3bb0308a19bb1b27a60407daf561fa9994f2c2ba23af502c6e5ba16f4fb6d178e8fb1f8add languageName: node linkType: hard -"@openmrs/esm-error-handling@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-error-handling@npm:6.0.1-pre.2544" +"@openmrs/esm-error-handling@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-error-handling@npm:6.0.3-pre.2587" peerDependencies: - "@openmrs/esm-globals": 5.x - checksum: 10/ce01de36f5632d21228daf855f0ec22b146b70a6a115ea2804f3a97543b357d166bac3265cc3b2d0c024880feda7aaa03b68b8ac3878fbbdbe12ddf763509bdb + "@openmrs/esm-globals": 6.x + checksum: 10/979df883355efa40ba0afa52aa0bcab2934578daa8486be0b30d3c264fd9994cd7cc777477b8c6fb2912a49cb4e463deebec6bdbf024161362b5236257176ab4 languageName: node linkType: hard -"@openmrs/esm-expression-evaluator@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-expression-evaluator@npm:6.0.1-pre.2544" +"@openmrs/esm-expression-evaluator@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-expression-evaluator@npm:6.0.3-pre.2587" dependencies: "@jsep-plugin/arrow": "npm:^1.0.5" "@jsep-plugin/new": "npm:^1.0.3" @@ -5622,37 +5622,37 @@ __metadata: "@jsep-plugin/template": "npm:^1.0.4" "@jsep-plugin/ternary": "npm:^1.1.3" jsep: "npm:^1.3.9" - checksum: 10/0ef3f93e302b9cefb84f048b4da518d5505100e597a46794ef4a7f184ef32c2214df8d50009c3b2271ab53c4fa2474132280d33214fa77f21c259511445394f1 + checksum: 10/f9784c806af4362ab01be17f265de10eaff37b45a3f5e8bb952c6a1929cf166a9e7b65ec35370119c7287ec23839868ac7e9f72121231a6465630c85b82dde76 languageName: node linkType: hard -"@openmrs/esm-extensions@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-extensions@npm:6.0.1-pre.2544" +"@openmrs/esm-extensions@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-extensions@npm:6.0.3-pre.2587" dependencies: lodash-es: "npm:^4.17.21" peerDependencies: - "@openmrs/esm-api": 5.x - "@openmrs/esm-config": 5.x - "@openmrs/esm-expression-evaluator": 5.x - "@openmrs/esm-feature-flags": 5.x - "@openmrs/esm-state": 5.x - "@openmrs/esm-utils": 5.x - single-spa: 5.x - checksum: 10/ce8d223adb0af0b75c9b374cd19d12c623856449db72eee51f540e29ee3f7dd9c6123c06d84ae0aad0ca1ac70ad2092a4d9326cd7dc7a34045b758e344491ac8 + "@openmrs/esm-api": 6.x + "@openmrs/esm-config": 6.x + "@openmrs/esm-expression-evaluator": 6.x + "@openmrs/esm-feature-flags": 6.x + "@openmrs/esm-state": 6.x + "@openmrs/esm-utils": 6.x + single-spa: 6.x + checksum: 10/026c8971aa678f2ea0a666a72675986f574e0e5557285fc72dad761c5722183fb4ef4c531e920cb8526c506115e753726e01f01f7ca6a096749fcba1ed959ec0 languageName: node linkType: hard -"@openmrs/esm-feature-flags@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-feature-flags@npm:6.0.1-pre.2544" +"@openmrs/esm-feature-flags@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-feature-flags@npm:6.0.3-pre.2587" dependencies: ramda: "npm:^0.26.1" peerDependencies: - "@openmrs/esm-globals": 5.x - "@openmrs/esm-state": 5.x - single-spa: 5.x - checksum: 10/896ec61ef7ea3ae30793a57a8cbaf6794c2f0930b2b3fee82f1f6b5b8595ecb358da49b97c048c57d18f16ed44cceaa91716f6de2237da281f2fcf549497cea9 + "@openmrs/esm-globals": 6.x + "@openmrs/esm-state": 6.x + single-spa: 6.x + checksum: 10/6ee655072ff5967eda26d1ee0b4ac2de79f8cf64378364aecd0f0dd25140744099f6ba9392b0fdf648e79d71a373f47d2c9a746043d0f768b64b34ee7c92b6a9 languageName: node linkType: hard @@ -5668,7 +5668,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -5769,27 +5769,27 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-framework@npm:6.0.1-pre.2544, @openmrs/esm-framework@npm:next": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-framework@npm:6.0.1-pre.2544" - dependencies: - "@openmrs/esm-api": "npm:6.0.1-pre.2544" - "@openmrs/esm-config": "npm:6.0.1-pre.2544" - "@openmrs/esm-context": "npm:6.0.1-pre.2544" - "@openmrs/esm-dynamic-loading": "npm:6.0.1-pre.2544" - "@openmrs/esm-error-handling": "npm:6.0.1-pre.2544" - "@openmrs/esm-expression-evaluator": "npm:6.0.1-pre.2544" - "@openmrs/esm-extensions": "npm:6.0.1-pre.2544" - "@openmrs/esm-feature-flags": "npm:6.0.1-pre.2544" - "@openmrs/esm-globals": "npm:6.0.1-pre.2544" - "@openmrs/esm-navigation": "npm:6.0.1-pre.2544" - "@openmrs/esm-offline": "npm:6.0.1-pre.2544" - "@openmrs/esm-react-utils": "npm:6.0.1-pre.2544" - "@openmrs/esm-routes": "npm:6.0.1-pre.2544" - "@openmrs/esm-state": "npm:6.0.1-pre.2544" - "@openmrs/esm-styleguide": "npm:6.0.1-pre.2544" - "@openmrs/esm-translations": "npm:6.0.1-pre.2544" - "@openmrs/esm-utils": "npm:6.0.1-pre.2544" +"@openmrs/esm-framework@npm:6.0.3-pre.2587, @openmrs/esm-framework@npm:next": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-framework@npm:6.0.3-pre.2587" + dependencies: + "@openmrs/esm-api": "npm:6.0.3-pre.2587" + "@openmrs/esm-config": "npm:6.0.3-pre.2587" + "@openmrs/esm-context": "npm:6.0.3-pre.2587" + "@openmrs/esm-dynamic-loading": "npm:6.0.3-pre.2587" + "@openmrs/esm-error-handling": "npm:6.0.3-pre.2587" + "@openmrs/esm-expression-evaluator": "npm:6.0.3-pre.2587" + "@openmrs/esm-extensions": "npm:6.0.3-pre.2587" + "@openmrs/esm-feature-flags": "npm:6.0.3-pre.2587" + "@openmrs/esm-globals": "npm:6.0.3-pre.2587" + "@openmrs/esm-navigation": "npm:6.0.3-pre.2587" + "@openmrs/esm-offline": "npm:6.0.3-pre.2587" + "@openmrs/esm-react-utils": "npm:6.0.3-pre.2587" + "@openmrs/esm-routes": "npm:6.0.3-pre.2587" + "@openmrs/esm-state": "npm:6.0.3-pre.2587" + "@openmrs/esm-styleguide": "npm:6.0.3-pre.2587" + "@openmrs/esm-translations": "npm:6.0.3-pre.2587" + "@openmrs/esm-utils": "npm:6.0.3-pre.2587" dayjs: "npm:^1.10.7" peerDependencies: dayjs: 1.x @@ -5798,9 +5798,9 @@ __metadata: react-dom: 18.x react-i18next: 11.x rxjs: 6.x - single-spa: 5.x + single-spa: 6.x swr: 2.x - checksum: 10/eb71c682d7b9769b4c5f3bbe5464bc03bcffa64f3da7bca1367f4ebc4a7843d951b77fe359c5177f5b16f360138fd9fc19c522e4eea3d4e1d7355680005abc30 + checksum: 10/1f2fff68cfb68a6a0de8a43f3c64f3b1b7571914eebda97eb7bf30f1f15f39901e770d490e38eab6ff69847718c07aefd379cddb3504aa98cf8907ada4d641f4 languageName: node linkType: hard @@ -5816,7 +5816,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: ^18.2.0 react-i18next: 11.x @@ -5826,42 +5826,42 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-globals@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-globals@npm:6.0.1-pre.2544" +"@openmrs/esm-globals@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-globals@npm:6.0.3-pre.2587" dependencies: "@types/fhir": "npm:0.0.31" peerDependencies: - single-spa: 5.x - checksum: 10/c2f37f6f237d3de84947fce75bd2bc814839d263dbb6d6097ccdc08d4cc069984bcc466c5748ef36ec4c132fdec91ca072a812c7daa9a02f5f45598c90c812d7 + single-spa: 6.x + checksum: 10/7a42d76bbb85bcc7525a2edcfd74c5ce3e6986e3d9d87e6c3979ef2a7c0e40ef1acdbd101a1b02f146371e18efb36f1309d6467cc35abe99678fb605aed0275c languageName: node linkType: hard -"@openmrs/esm-navigation@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-navigation@npm:6.0.1-pre.2544" +"@openmrs/esm-navigation@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-navigation@npm:6.0.3-pre.2587" dependencies: path-to-regexp: "npm:6.1.0" peerDependencies: - "@openmrs/esm-state": 5.x - checksum: 10/76d4f72bf8ed5b37127d109b03f596a6b6d914f211a1402f82bbc3f5bef30b71c61beb5d10b34b853c184edf46e28ef813781099864ccc09a3f45c490b39e09d + "@openmrs/esm-state": 6.x + checksum: 10/6e59e244048341a2842a079a345df889f5cb55f6a389f29b623616e85c39becdd6d18d1806a6de848784ddf8bd8281776ff33ac6ebf37cca4eac6e4fc3bfdd0e languageName: node linkType: hard -"@openmrs/esm-offline@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-offline@npm:6.0.1-pre.2544" +"@openmrs/esm-offline@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-offline@npm:6.0.3-pre.2587" dependencies: dexie: "npm:^3.0.3" lodash-es: "npm:^4.17.21" uuid: "npm:^9.0.1" workbox-window: "npm:^6.1.5" peerDependencies: - "@openmrs/esm-api": 5.x - "@openmrs/esm-globals": 5.x - "@openmrs/esm-state": 5.x + "@openmrs/esm-api": 6.x + "@openmrs/esm-globals": 6.x + "@openmrs/esm-state": 6.x rxjs: 6.x - checksum: 10/8e3e60086818d5dcb2734362f08723254b3ea2141cccdb53466a14f1a7f66f0968d15f5d22ffa196318856bdcac1d195a6ed4f79661eff70e7d795b57f3a177c + checksum: 10/dae8840d8d45596bed64e6f1e8362fa126b1eaba7274c70f144c75be68d967780000b297d061a7c4b405cedf6b67eb09de5c25f6d26a6c61ff0117f57ef2db12 languageName: node linkType: hard @@ -5875,7 +5875,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: ^18.2.0 react-i18next: 11.x @@ -5897,7 +5897,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: ^18.2.0 react-i18next: 11.x @@ -5917,7 +5917,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -6040,7 +6040,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -6059,7 +6059,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -6080,7 +6080,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -6103,7 +6103,7 @@ __metadata: zod: "npm:^3.22.2" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -6122,7 +6122,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -6142,7 +6142,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -6161,7 +6161,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -6181,7 +6181,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -6201,7 +6201,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -6225,7 +6225,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x react: 18.x react-i18next: 11.x react-router-dom: 6.x @@ -6246,7 +6246,7 @@ __metadata: webpack: "npm:^5.94.0" peerDependencies: "@openmrs/esm-framework": 6.x - "@openmrs/esm-patient-common-lib": 8.x + "@openmrs/esm-patient-common-lib": 9.x dayjs: 1.x react: 18.x react-i18next: 11.x @@ -6256,22 +6256,22 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-react-utils@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-react-utils@npm:6.0.1-pre.2544" +"@openmrs/esm-react-utils@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-react-utils@npm:6.0.3-pre.2587" dependencies: lodash-es: "npm:^4.17.21" single-spa-react: "npm:^6.0.0" peerDependencies: - "@openmrs/esm-api": 5.x - "@openmrs/esm-config": 5.x - "@openmrs/esm-context": 5.x - "@openmrs/esm-error-handling": 5.x - "@openmrs/esm-extensions": 5.x - "@openmrs/esm-feature-flags": 5.x - "@openmrs/esm-globals": 5.x - "@openmrs/esm-navigation": 5.x - "@openmrs/esm-utils": 5.x + "@openmrs/esm-api": 6.x + "@openmrs/esm-config": 6.x + "@openmrs/esm-context": 6.x + "@openmrs/esm-error-handling": 6.x + "@openmrs/esm-extensions": 6.x + "@openmrs/esm-feature-flags": 6.x + "@openmrs/esm-globals": 6.x + "@openmrs/esm-navigation": 6.x + "@openmrs/esm-utils": 6.x dayjs: 1.x i18next: 21.x react: 18.x @@ -6279,40 +6279,40 @@ __metadata: react-i18next: 11.x rxjs: 6.x swr: 2.x - checksum: 10/1c082be0268aeb0274763c9626315f7dc000341a231d17c8a538eda2f53929dbce602792d362e3b239e052a93d5e2771e5ba123aa6386c6f46e9f0a5f87e3c8a + checksum: 10/10a4626ce25701630016dcd0c6d6de895e729f76322a8007b90a1adc603adae292cf0655c3667c1370dd0bba6f79844eef08ea8b0f888a15e57d47e9fcba8617 languageName: node linkType: hard -"@openmrs/esm-routes@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-routes@npm:6.0.1-pre.2544" +"@openmrs/esm-routes@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-routes@npm:6.0.3-pre.2587" peerDependencies: - "@openmrs/esm-config": 5.x - "@openmrs/esm-dynamic-loading": 5.x - "@openmrs/esm-extensions": 5.x - "@openmrs/esm-feature-flags": 5.x - "@openmrs/esm-globals": 5.x - "@openmrs/esm-utils": 5.x + "@openmrs/esm-config": 6.x + "@openmrs/esm-dynamic-loading": 6.x + "@openmrs/esm-extensions": 6.x + "@openmrs/esm-feature-flags": 6.x + "@openmrs/esm-globals": 6.x + "@openmrs/esm-utils": 6.x single-spa: 6.x - checksum: 10/de50be219d0dd3ade2ea912092794d3f98a3227fa49af04f16c94131ca6546f00f14e692952143a356f379e2f45120372ce57c6937a1cf3867279c4a80032f5e + checksum: 10/6044fb142356fad114cc3fdf5deb918450f5c7830c1700bb75b4d5d5ee4ef72b9db72819129c15b822d198fe4974b60e0e595009bec401fd104d6d31e152db80 languageName: node linkType: hard -"@openmrs/esm-state@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-state@npm:6.0.1-pre.2544" +"@openmrs/esm-state@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-state@npm:6.0.3-pre.2587" dependencies: zustand: "npm:^4.5.5" peerDependencies: - "@openmrs/esm-globals": 5.x - "@openmrs/esm-utils": 5.x - checksum: 10/6c629cdf5a24d74868f455c22bdb10937ffa173ca74d73ce5705953bf06e45c2fc27e3b96f11dbb8332666e9f783cffb29ab04dfe620fec6155cef5eb9bd355d + "@openmrs/esm-globals": 6.x + "@openmrs/esm-utils": 6.x + checksum: 10/baa6fbc847d7995773ea208795daf316d921fd25fa556c80c7217e6d042e5720317b8d0a2272a2e4c598741f44a1d0558e6c185d397a7916477a3ce270b3eecd languageName: node linkType: hard -"@openmrs/esm-styleguide@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-styleguide@npm:6.0.1-pre.2544" +"@openmrs/esm-styleguide@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-styleguide@npm:6.0.3-pre.2587" dependencies: "@carbon/charts": "npm:^1.12.0" "@carbon/react": "npm:~1.37.0" @@ -6324,46 +6324,46 @@ __metadata: react-aria-components: "npm:^1.3.3" react-avatar: "npm:^5.0.3" peerDependencies: - "@openmrs/esm-error-handling": 5.x - "@openmrs/esm-extensions": 5.x - "@openmrs/esm-navigation": 5.x - "@openmrs/esm-react-utils": 5.x - "@openmrs/esm-state": 5.x - "@openmrs/esm-translations": 5.x + "@openmrs/esm-error-handling": 6.x + "@openmrs/esm-extensions": 6.x + "@openmrs/esm-navigation": 6.x + "@openmrs/esm-react-utils": 6.x + "@openmrs/esm-state": 6.x + "@openmrs/esm-translations": 6.x dayjs: 1.x i18next: 21.x react: 18.x react-dom: 18.x react-i18next: 11.x rxjs: 6.x - checksum: 10/a2fe13b54d67058917e49cbea233f296f74e2e6bd0a4ccd32c280a45509e114fbdd67c1f2b3382fdc421f875477585be78d1cc24c2ed119ca76a87fd207d5eed + checksum: 10/293429860234fb5559d164056188f70c3bb6b5b7010655355b1a1503e21f482e2313596a99bd1dd6be63fe04c1ffe39be057796832b0671db11a2ddff90caa38 languageName: node linkType: hard -"@openmrs/esm-translations@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-translations@npm:6.0.1-pre.2544" +"@openmrs/esm-translations@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-translations@npm:6.0.3-pre.2587" dependencies: i18next: "npm:21.10.0" peerDependencies: i18next: 21.x - checksum: 10/35fb85a84bbefa973e2767c41d19ccb9b37d7460949630d2a501d6fa750a565e4a03732c1ea8b63b5c6d47ca8f0bed9c95b9ca6121e011507c798eea1b51b96d + checksum: 10/b93c3064a6ac88481711d1d4083abd16995dab2e546ae26f71d42a673e705a0632968675657f49c47094495916e7ef1fa0664f163a5765bdea1ea910ebd3fd8f languageName: node linkType: hard -"@openmrs/esm-utils@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/esm-utils@npm:6.0.1-pre.2544" +"@openmrs/esm-utils@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/esm-utils@npm:6.0.3-pre.2587" dependencies: "@formatjs/intl-durationformat": "npm:^0.2.4" "@internationalized/date": "npm:^3.5.5" semver: "npm:7.3.2" peerDependencies: - "@openmrs/esm-globals": 5.x + "@openmrs/esm-globals": 6.x dayjs: 1.x i18next: 21.x rxjs: 6.x - checksum: 10/3e0d0b563f14753724bcb62d7041aee24c576e4b65b23e94934e8a5579867f3cc1581d407572c1c4ec5bd90a22cb145829dee0987343062db9305a4000b86dc5 + checksum: 10/1b66bfa4cc3600b170b423764e6cef553c8cb0779941ac23dd13e3a008720cdd521e2d529a1659b65268bc48b3fd5f8b4cb1771514795674ea2abf7733f6eeee languageName: node linkType: hard @@ -6414,9 +6414,9 @@ __metadata: languageName: node linkType: hard -"@openmrs/webpack-config@npm:6.0.1-pre.2544": - version: 6.0.1-pre.2544 - resolution: "@openmrs/webpack-config@npm:6.0.1-pre.2544" +"@openmrs/webpack-config@npm:6.0.3-pre.2587": + version: 6.0.3-pre.2587 + resolution: "@openmrs/webpack-config@npm:6.0.3-pre.2587" dependencies: "@swc/core": "npm:^1.3.58" clean-webpack-plugin: "npm:^4.0.0" @@ -6434,7 +6434,7 @@ __metadata: webpack-stats-plugin: "npm:^1.0.3" peerDependencies: webpack: 5.x - checksum: 10/ade6266c4329718e662f1e1a0331f2c32fbed5f44bced40d7beb44559f5ca7919ba746903796db97ffdd85c3396e9639a8986b90fe7a76d1b363e7d9d15252e2 + checksum: 10/9fe6fcec0a35dff6ef177e18d9ff9f72d4cec47d829af04a26e96496ccc797bfed14714f7e35c5826833686580da76d455ff4b3484d19f69b46674811f9279b8 languageName: node linkType: hard @@ -21277,11 +21277,11 @@ __metadata: linkType: hard "openmrs@npm:next": - version: 6.0.1-pre.2544 - resolution: "openmrs@npm:6.0.1-pre.2544" + version: 6.0.3-pre.2587 + resolution: "openmrs@npm:6.0.3-pre.2587" dependencies: - "@openmrs/esm-app-shell": "npm:6.0.1-pre.2544" - "@openmrs/webpack-config": "npm:6.0.1-pre.2544" + "@openmrs/esm-app-shell": "npm:6.0.3-pre.2587" + "@openmrs/webpack-config": "npm:6.0.3-pre.2587" "@pnpm/npm-conf": "npm:^2.1.0" "@swc/core": "npm:^1.3.58" autoprefixer: "npm:^10.4.20" @@ -21320,7 +21320,7 @@ __metadata: yargs: "npm:^17.6.2" bin: openmrs: ./dist/cli.js - checksum: 10/114414d66faaea61f30785a83bd612278377f75c9387af517232f283ef29855d7deb250b32266e0521d383eb0b273d5cf2097d1c429931eeae337e32ef512b9b + checksum: 10/6099a55dfaf8b057b7e3420569a839d0f8d9ed4e8c36af8a6a58279c389600bd5549b00ac2e436e88b1e551c959c2994daca811ec6725d6f4f1ba4d6a548c4c0 languageName: node linkType: hard From a928b899060d6f347539c1491ed73e80de718e4f Mon Sep 17 00:00:00 2001 From: Daud Kakumirizi Date: Thu, 19 Dec 2024 08:10:35 +0300 Subject: [PATCH 15/15] (chore) Bump Playwright (#2164) --- e2e/support/bamboo/playwright.Dockerfile | 2 +- package.json | 2 +- yarn.lock | 30 ++++++++++++------------ 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/e2e/support/bamboo/playwright.Dockerfile b/e2e/support/bamboo/playwright.Dockerfile index 761967921a..70548dae35 100644 --- a/e2e/support/bamboo/playwright.Dockerfile +++ b/e2e/support/bamboo/playwright.Dockerfile @@ -1,5 +1,5 @@ # The image version should match the Playwright version specified in the package.json file -FROM mcr.microsoft.com/playwright:v1.48.2-jammy +FROM mcr.microsoft.com/playwright:v1.49.0-jammy ARG USER_ID ARG GROUP_ID diff --git a/package.json b/package.json index 3d0a362d5a..47e682a739 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ }, "devDependencies": { "@openmrs/esm-framework": "next", - "@playwright/test": "1.48.2", + "@playwright/test": "1.49.0", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.89", "@swc/jest": "^0.2.29", diff --git a/yarn.lock b/yarn.lock index 98c2a79b2c..b2b9a15755 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5957,7 +5957,7 @@ __metadata: dependencies: "@hookform/resolvers": "npm:^3.3.1" "@openmrs/esm-framework": "npm:next" - "@playwright/test": "npm:1.48.2" + "@playwright/test": "npm:1.49.0" "@swc/cli": "npm:^0.1.62" "@swc/core": "npm:^1.3.89" "@swc/jest": "npm:^0.2.29" @@ -6445,14 +6445,14 @@ __metadata: languageName: node linkType: hard -"@playwright/test@npm:1.48.2": - version: 1.48.2 - resolution: "@playwright/test@npm:1.48.2" +"@playwright/test@npm:1.49.0": + version: 1.49.0 + resolution: "@playwright/test@npm:1.49.0" dependencies: - playwright: "npm:1.48.2" + playwright: "npm:1.49.0" bin: playwright: cli.js - checksum: 10/8557f9d60b93b9a60b66599d46f991b56df26b691f9285e8755298dabd9f42d1421c330a7d7578b76445fdd56040fe790d3f1081daa80e5e89a380170e0fd217 + checksum: 10/e87485ab4c02b6dc0bc20a43ea3965c949c45caa4e7f5beea4a0abd29be0a318662931e887072db0d165f8dde93709b97ea1b2c6f4c833b403aa13427d76dd22 languageName: node linkType: hard @@ -21969,27 +21969,27 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.48.2": - version: 1.48.2 - resolution: "playwright-core@npm:1.48.2" +"playwright-core@npm:1.49.0": + version: 1.49.0 + resolution: "playwright-core@npm:1.49.0" bin: playwright-core: cli.js - checksum: 10/dd029f797b1afb2240713a032fecc50e1ffc5464a39c075570cf10e929c145da3a8d0951a3f2b279e33b2f09cbeb8ff4330822cb1078452c0c75cc4ce34ca171 + checksum: 10/ef9c708293adab100337ed7fd8e61660be381707fc2b84f07b5f40d1ead44feb6a8e52fef98075e594522229d15a9ad56dd1471689cfa59409bec6447c22944d languageName: node linkType: hard -"playwright@npm:1.48.2": - version: 1.48.2 - resolution: "playwright@npm:1.48.2" +"playwright@npm:1.49.0": + version: 1.49.0 + resolution: "playwright@npm:1.49.0" dependencies: fsevents: "npm:2.3.2" - playwright-core: "npm:1.48.2" + playwright-core: "npm:1.49.0" dependenciesMeta: fsevents: optional: true bin: playwright: cli.js - checksum: 10/331af352504336f419cdf1369f0ef399c6f0e905fdb79a5e97c41f33e74766efd21430ab6ae2de0b237ae765ebfbe701e119a990d8dc01bcdac3bc43c1fa1fbf + checksum: 10/1fb198d09d388ec46cc2f0fc6b889a8bde8a75066ded82d35f08ba333091ebf3fc4ddf11263a86058a7078c7238ec4f23a86a9f1dc3ebd4f610c9eb07841fb32 languageName: node linkType: hard