diff --git a/packages/esm-ward-app/src/hooks/useAdmissionLocation.ts b/packages/esm-ward-app/src/hooks/useAdmissionLocation.ts index b34067d4e..f32c570df 100644 --- a/packages/esm-ward-app/src/hooks/useAdmissionLocation.ts +++ b/packages/esm-ward-app/src/hooks/useAdmissionLocation.ts @@ -1,16 +1,34 @@ -import { type FetchResponse, openmrsFetch, restBaseUrl } from '@openmrs/esm-framework'; +import { type FetchResponse, openmrsFetch, restBaseUrl, useFeatureFlag } from '@openmrs/esm-framework'; +import useSWR from 'swr'; import { type AdmissionLocationFetchResponse } from '../types/index'; -import useSWRImmutable from 'swr/immutable'; import useWardLocation from './useWardLocation'; const requestRep = 'custom:(ward,totalBeds,occupiedBeds,bedLayouts:(rowNumber,columnNumber,bedNumber,bedId,bedUuid,status,location,patients:(person:full,identifiers,uuid)))'; -// note "admissionLocation" sn't the clearest name, but it matches the endpoint; endpoint fetches bed information (including info about patients in those beds) for a location (as provided by the bed management module) +/** + * + * Fetches bed information (including info about patients in those beds) for a location, + * as provided by the bed management module. If the bed management module is not installed, + * then no request will be made, the return object's + * `isLoading` field will be false, and the `admissionLocation` field will be undefined. + * + * Note that "admissionLocation" isn't the clearest name, but it matches the endpoint name + * + * @param rep the "v=" representation parameter + * @returns + */ export function useAdmissionLocation(rep: string = requestRep) { const { location } = useWardLocation(); + + const isBedManagementModuleInstalled = useFeatureFlag('bedmanagement-module'); + const apiUrl = location?.uuid ? `${restBaseUrl}/admissionLocation/${location?.uuid}?v=${rep}` : null; - const { data, ...rest } = useSWRImmutable, Error>(apiUrl, openmrsFetch); + const { data, ...rest } = useSWR, Error>( + isBedManagementModuleInstalled ? apiUrl : null, + openmrsFetch, + ); + return { admissionLocation: data?.data, ...rest, diff --git a/packages/esm-ward-app/src/hooks/useBeds.ts b/packages/esm-ward-app/src/hooks/useBeds.ts index 22ae54fd2..9be7e1b31 100644 --- a/packages/esm-ward-app/src/hooks/useBeds.ts +++ b/packages/esm-ward-app/src/hooks/useBeds.ts @@ -1,4 +1,4 @@ -import { openmrsFetch, restBaseUrl } from '@openmrs/esm-framework'; +import { openmrsFetch, restBaseUrl, useOpenmrsFetchAll } from '@openmrs/esm-framework'; import useSWR from 'swr'; import { type Bed, type BedStatus } from '../types/index'; @@ -17,10 +17,10 @@ export function useBeds(searchCriteria?: BedSearchCriteria) { } const apiUrl = `${restBaseUrl}/bed?${searchParam}`; - const { data, ...rest } = useSWR<{ data: { results: Array } }, Error>(apiUrl, openmrsFetch); + const { data, ...rest } = useOpenmrsFetchAll(apiUrl); return { - beds: data?.data?.results ?? [], + beds: data, ...rest, }; } diff --git a/packages/esm-ward-app/src/hooks/useConcept.ts b/packages/esm-ward-app/src/hooks/useConcept.ts index 5ba7935f3..ca72d1fbf 100644 --- a/packages/esm-ward-app/src/hooks/useConcept.ts +++ b/packages/esm-ward-app/src/hooks/useConcept.ts @@ -1,11 +1,10 @@ -import { type Concept, openmrsFetch, restBaseUrl } from '@openmrs/esm-framework'; -import useSWRImmutable from 'swr/immutable'; +import { type Concept, restBaseUrl, useOpenmrsFetchAll } from '@openmrs/esm-framework'; export function useConcepts(uuids: string[], rep = 'default') { const apiUrl = `${restBaseUrl}/concept?references=${uuids.join()}&v=${rep}`; - const { data, ...rest } = useSWRImmutable<{ data: { results: Array } }, Error>(apiUrl, openmrsFetch); + const { data, ...rest } = useOpenmrsFetchAll(apiUrl, { immutable: true }); return { - concepts: data?.data?.results, + concepts: data, ...rest, }; } diff --git a/packages/esm-ward-app/src/hooks/useInpatientAdmission.ts b/packages/esm-ward-app/src/hooks/useInpatientAdmission.ts index db247fa98..b9bf80f0e 100644 --- a/packages/esm-ward-app/src/hooks/useInpatientAdmission.ts +++ b/packages/esm-ward-app/src/hooks/useInpatientAdmission.ts @@ -1,6 +1,5 @@ -import useSWR from 'swr'; -import { type FetchResponse, openmrsFetch, restBaseUrl } from '@openmrs/esm-framework'; -import { type InpatientAdmissionFetchResponse } from '../types'; +import { restBaseUrl, useOpenmrsFetchAll } from '@openmrs/esm-framework'; +import { type InpatientAdmission } from '../types'; import useWardLocation from './useWardLocation'; export function useInpatientAdmission() { @@ -15,15 +14,10 @@ export function useInpatientAdmission() { 'currentInpatientRequest:(dispositionLocation,dispositionType,disposition:(uuid,display),dispositionEncounter:(uuid,display),dispositionObsGroup:(uuid,display),visit:(uuid),patient:(uuid)),' + 'firstAdmissionOrTransferEncounter:(encounterDatetime),' + ')'; - const { data, ...rest } = useSWR, Error>( + + return useOpenmrsFetchAll( location ? `${restBaseUrl}/emrapi/inpatient/admission?currentInpatientLocation=${location.uuid}&v=${customRepresentation}` : null, - openmrsFetch, ); - - return { - inpatientAdmissions: data?.data?.results, - ...rest, - }; } diff --git a/packages/esm-ward-app/src/hooks/useInpatientRequest.ts b/packages/esm-ward-app/src/hooks/useInpatientRequest.ts index 35307db18..27b9b0f68 100644 --- a/packages/esm-ward-app/src/hooks/useInpatientRequest.ts +++ b/packages/esm-ward-app/src/hooks/useInpatientRequest.ts @@ -1,8 +1,6 @@ -import { type FetchResponse, openmrsFetch, restBaseUrl } from '@openmrs/esm-framework'; -import type { DispositionType, InpatientRequestFetchResponse } from '../types'; -import useSWR from 'swr'; +import { restBaseUrl, useOpenmrsFetchAll } from '@openmrs/esm-framework'; +import type { DispositionType, InpatientRequest } from '../types'; import useWardLocation from './useWardLocation'; -import { useMemo } from 'react'; // prettier-ignore const defaultRep = @@ -26,18 +24,9 @@ export function useInpatientRequest( searchParams.set('dispositionLocation', location?.uuid); searchParams.set('v', rep); - const { data, ...rest } = useSWR, Error>( + const { data, ...rest } = useOpenmrsFetchAll( location?.uuid ? `${restBaseUrl}/emrapi/inpatient/request?${searchParams.toString()}` : null, - openmrsFetch, ); - const results = useMemo( - () => ({ - inpatientRequests: data?.data?.results, - ...rest, - }), - [data, rest], - ); - - return results; + return { inpatientRequests: data, ...rest }; } diff --git a/packages/esm-ward-app/src/hooks/useLocations.ts b/packages/esm-ward-app/src/hooks/useLocations.ts index d792e5f1d..0df8a9343 100644 --- a/packages/esm-ward-app/src/hooks/useLocations.ts +++ b/packages/esm-ward-app/src/hooks/useLocations.ts @@ -1,54 +1,11 @@ -import { type FetchResponse, fhirBaseUrl, openmrsFetch } from '@openmrs/esm-framework'; -import { useEffect, useMemo, useState } from 'react'; -import useSWRImmutable from 'swr/immutable'; +import { fhirBaseUrl, useFhirPagination } from '@openmrs/esm-framework'; -interface FhirLocation { - fullUrl: string; - resource: { - resourceType: 'Location'; - id: string; - name: string; - description: string; - }; -} - -interface FhirResponse { - resourceType: 'Bundle'; - id: '6a107c31-d760-4df0-bb70-89ad742225ca'; - meta: { - lastUpdated: '2024-08-08T06:28:01.495+00:00'; - }; - type: 'searchset'; - total: number; - link: Array<{ - relation: 'self' | 'prev' | 'next'; - url: string; - }>; - entry: Array; -} - -export default function useLocations(filterCriteria: Array> = [], skip: boolean = false) { - const [totalLocations, setTotalLocations] = useState(0); - const [url, setUrl] = useState(`${fhirBaseUrl}/Location`); +export default function useLocations( + filterCriteria: Array> = [], + pageSize: number, + skip: boolean = false, +) { const searchParams = new URLSearchParams(filterCriteria); - const urlWithSearchParams = `${url}?${searchParams.toString()}`; - const { data, ...rest } = useSWRImmutable>( - !skip ? urlWithSearchParams : null, - openmrsFetch, - ); - - useEffect(() => { - if (data?.data) { - setTotalLocations(data.data.total); - } - }, [data]); - - const results = useMemo(() => { - return { - locations: data?.data?.entry?.map((entry) => entry.resource), - totalLocations, - ...rest, - }; - }, [data, rest, totalLocations]); - return results; + const urlWithSearchParams = `${fhirBaseUrl}/Location?${searchParams.toString()}`; + return useFhirPagination(skip ? null : urlWithSearchParams, pageSize, { immutable: true }); } diff --git a/packages/esm-ward-app/src/hooks/useObs.ts b/packages/esm-ward-app/src/hooks/useObs.ts index 683f4ba1e..620fbe332 100644 --- a/packages/esm-ward-app/src/hooks/useObs.ts +++ b/packages/esm-ward-app/src/hooks/useObs.ts @@ -1,6 +1,5 @@ -import useSWR from 'swr'; +import { restBaseUrl, useOpenmrsFetchAll } from '@openmrs/esm-framework'; import { type Observation } from '../types'; -import { type Link, openmrsFetch, restBaseUrl } from '@openmrs/esm-framework'; interface ObsSearchCriteria { patient: string; @@ -14,8 +13,5 @@ export function useObs(criteria?: ObsSearchCriteria, representation = 'default') }); const apiUrl = `${restBaseUrl}/obs?${params}`; - return useSWR<{ data: { results: Array; totalCount: number; links: Array } }, Error>( - apiUrl, - openmrsFetch, - ); + return useOpenmrsFetchAll(apiUrl); } diff --git a/packages/esm-ward-app/src/hooks/useWardPatientGrouping.ts b/packages/esm-ward-app/src/hooks/useWardPatientGrouping.ts index eb818a3cd..b58398695 100644 --- a/packages/esm-ward-app/src/hooks/useWardPatientGrouping.ts +++ b/packages/esm-ward-app/src/hooks/useWardPatientGrouping.ts @@ -7,7 +7,7 @@ export function useWardPatientGrouping() { const admissionLocationResponse = useAdmissionLocation(); const inpatientAdmissionResponse = useInpatientAdmission(); - const { inpatientAdmissions } = inpatientAdmissionResponse; + const { data: inpatientAdmissions } = inpatientAdmissionResponse; const { admissionLocation } = admissionLocationResponse; const inpatientAdmissionsByPatientUuid = useMemo(() => { return getInpatientAdmissionsUuidMap(inpatientAdmissions); diff --git a/packages/esm-ward-app/src/location-selector/location-selector.component.tsx b/packages/esm-ward-app/src/location-selector/location-selector.component.tsx index 7e2bb36f3..3585e84e9 100644 --- a/packages/esm-ward-app/src/location-selector/location-selector.component.tsx +++ b/packages/esm-ward-app/src/location-selector/location-selector.component.tsx @@ -24,29 +24,26 @@ export default function LocationSelector(props: LocationSelectorProps) { const isTablet = !isDesktop(useLayoutType()); const [searchTerm, setSearchTerm] = useState(''); const debouncedSearchTerm = useDebounce(searchTerm); - const [page, setPage] = useState(1); const filterCriteria: Array> = useMemo(() => { const criteria = []; if (debouncedSearchTerm) { criteria.push(['name:contains', debouncedSearchTerm]); } - criteria.push(['_count', size.toString()]); if (emrConfiguration) { criteria.push(['_tag', emrConfiguration.supportsTransferLocationTag.name]); } - if (page > 1) { - criteria.push(['_getpagesoffset', ((page - 1) * size).toString()]); - } return criteria; - }, [debouncedSearchTerm, page, emrConfiguration]); - const { locations, isLoading, totalLocations } = useLocations(filterCriteria, !emrConfiguration); + }, [debouncedSearchTerm, emrConfiguration]); + const { + data: locations, + isLoading, + totalCount, + currentPage, + totalPages, + goToNext, + goToPrevious, + } = useLocations(filterCriteria, size, !emrConfiguration); - const handlePageChange = useCallback( - ({ page: newPage }) => { - setPage(newPage); - }, - [setPage, page], - ); const handleSearch = useCallback( (event: React.ChangeEvent) => { setSearchTerm(event.target.value); @@ -84,30 +81,30 @@ export default function LocationSelector(props: LocationSelectorProps) { )} - {totalLocations > 5 && ( + {totalCount > size && (
{t('showingLocations', '{{start}}-{{end}} of {{count}} locations', { - start: (page - 1) * size + 1, - end: Math.min(page * size, totalLocations), - count: totalLocations, + start: (currentPage - 1) * size + 1, + end: Math.min(currentPage * size, totalCount), + count: totalCount, })}
handlePageChange({ page: page - 1 })}> + onClick={() => goToPrevious()}> = totalLocations} + disabled={currentPage >= totalPages} kind="ghost" label={t('nextPage', 'Next page')} - onClick={() => handlePageChange({ page: page + 1 })}> + onClick={() => goToNext()}>
diff --git a/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-coded-obs-tags.tsx b/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-coded-obs-tags.tsx index f6c2fcc9b..a80bc46b4 100644 --- a/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-coded-obs-tags.tsx +++ b/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-coded-obs-tags.tsx @@ -1,12 +1,11 @@ import { SkeletonText, Tag } from '@carbon/react'; -import { type Patient, translateFrom, type Visit, type OpenmrsResource } from '@openmrs/esm-framework'; +import { type OpenmrsResource, type Patient, type Visit } from '@openmrs/esm-framework'; import React from 'react'; import { useTranslation } from 'react-i18next'; -import { moduleName } from '../../constant'; +import { type ColoredObsTagsCardRowConfigObject } from '../../config-schema-extension-colored-obs-tags'; import { useObs } from '../../hooks/useObs'; import styles from '../ward-patient-card.scss'; import { obsCustomRepresentation, useConceptToTagColorMap } from './ward-patient-obs.resource'; -import { type ColoredObsTagsCardRowConfigObject } from '../../config-schema-extension-colored-obs-tags'; interface WardPatientCodedObsTagsProps { config: ColoredObsTagsCardRowConfigObject; @@ -28,12 +27,12 @@ const WardPatientCodedObsTags: React.FC = ({ confi const { conceptUuid, summaryLabel, summaryLabelColor } = config; const { data, isLoading } = useObs({ patient: patient.uuid, concept: conceptUuid }, obsCustomRepresentation); const { t } = useTranslation(); - const { data: conceptToTagColorMap } = useConceptToTagColorMap(config.tags); + const conceptToTagColorMap = useConceptToTagColorMap(config.tags); if (isLoading) { return ; } else { - const obsToDisplay = data?.data?.results?.filter((o) => { + const obsToDisplay = data?.filter((o) => { const matchVisit = o.encounter.visit?.uuid == visit?.uuid; return matchVisit || visit == null; // TODO: remove visit == null hack when server API supports returning visit }); diff --git a/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-obs.resource.ts b/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-obs.resource.ts index 6cde3462e..a8bcec17f 100644 --- a/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-obs.resource.ts +++ b/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-obs.resource.ts @@ -1,5 +1,4 @@ -import { openmrsFetch, restBaseUrl, type Concept } from '@openmrs/esm-framework'; -import useSWRImmutable from 'swr/immutable'; +import { restBaseUrl, useOpenmrsFetchAll, type Concept } from '@openmrs/esm-framework'; import { type TagConfigObject } from '../../config-schema-extension-colored-obs-tags'; // prettier-ignore @@ -13,40 +12,35 @@ export const obsCustomRepresentation = const conceptSetCustomRepresentation = 'custom:(uuid,setMembers:(uuid))'; export function useConceptToTagColorMap(tags: Array) { - // fetch the members of the concept sets and process the data - // to return conceptToTagColorMap (wrapped in a promise). - // Let swr cache the result of this function. - const fetchAndMap = (url: string) => { - const conceptSetToTagColorMap = new Map(); - for (const tag of tags) { - const { color, appliedToConceptSets } = tag; - for (const answer of appliedToConceptSets ?? []) { - if (!conceptSetToTagColorMap.has(answer)) { - conceptSetToTagColorMap.set(answer, color); - } - } - } + // The TacConfigObject allows us to specify the mapping of + // concept sets to colors. However, we also need to build a map of + // concepts to colors. This function does that. - return openmrsFetch<{ results: Array }>(url).then((data) => { - const conceptSets = data.data.results; - const conceptToTagColorMap = new Map(); - if (conceptSets) { - for (const conceptSet of conceptSets) { - for (const concept of conceptSet.setMembers) { - if (!conceptToTagColorMap.has(concept.uuid)) { - conceptToTagColorMap.set(concept.uuid, conceptSetToTagColorMap.get(conceptSet.uuid)); - } - } - } + // TODO: We should cache this map to be re-usable app-wide + const conceptSetToTagColorMap = new Map(); + for (const tag of tags) { + const { color, appliedToConceptSets } = tag; + for (const answer of appliedToConceptSets ?? []) { + if (!conceptSetToTagColorMap.has(answer)) { + conceptSetToTagColorMap.set(answer, color); } - - return conceptToTagColorMap; - }); - }; + } + } const conceptSetUuids = tags.flatMap((tag) => tag.appliedToConceptSets); const apiUrl = `${restBaseUrl}/concept?references=${conceptSetUuids.join()}&v=${conceptSetCustomRepresentation}`; - const conceptToTagColorMap = useSWRImmutable(apiUrl, fetchAndMap); + const { data: conceptSets } = useOpenmrsFetchAll(apiUrl); + + const conceptToTagColorMap = new Map(); + if (conceptSets) { + for (const conceptSet of conceptSets) { + for (const concept of conceptSet.setMembers) { + if (!conceptToTagColorMap.has(concept.uuid)) { + conceptToTagColorMap.set(concept.uuid, conceptSetToTagColorMap.get(conceptSet.uuid)); + } + } + } + } return conceptToTagColorMap; } diff --git a/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-obs.tsx b/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-obs.tsx index 8a9b5ec4b..45432e36c 100644 --- a/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-obs.tsx +++ b/packages/esm-ward-app/src/ward-patient-card/row-elements/ward-patient-obs.tsx @@ -22,7 +22,7 @@ const WardPatientObs: React.FC = ({ config, patient, visit if (isLoading) { return ; } else { - const obsToDisplay = data?.data?.results + const obsToDisplay = data ?.filter((o) => { const matchVisit = !onlyWithinCurrentVisit || o.encounter.visit?.uuid == visit?.uuid; return matchVisit; diff --git a/packages/esm-ward-app/src/ward-view/ward-view.component.tsx b/packages/esm-ward-app/src/ward-view/ward-view.component.tsx index 808134b77..fd61ae2bb 100644 --- a/packages/esm-ward-app/src/ward-view/ward-view.component.tsx +++ b/packages/esm-ward-app/src/ward-view/ward-view.component.tsx @@ -1,16 +1,16 @@ -import React from 'react'; import { InlineNotification } from '@carbon/react'; import { useAppContext, useDefineAppContext, WorkspaceContainer } from '@openmrs/esm-framework'; +import { default as React, useEffect, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import EmptyBedSkeleton from '../beds/empty-bed-skeleton'; import UnassignedPatient from '../beds/unassigned-patient.component'; import useWardLocation from '../hooks/useWardLocation'; -import { type WardPatientGroupDetails, type WardPatient } from '../types'; +import { useWardPatientGrouping } from '../hooks/useWardPatientGrouping'; +import { type WardPatient, type WardPatientGroupDetails } from '../types'; import WardViewHeader from '../ward-view-header/ward-view-header.component'; import WardBed from './ward-bed.component'; import { bedLayoutToBed } from './ward-view.resource'; import styles from './ward-view.scss'; -import { useWardPatientGrouping } from '../hooks/useWardPatientGrouping'; const WardView = () => { const response = useWardLocation(); @@ -48,12 +48,45 @@ const WardViewMain = () => { } = wardPatientsGrouping ?? {}; const { isLoading: isLoadingAdmissionLocation, error: errorLoadingAdmissionLocation } = wardPatientsGrouping?.admissionLocationResponse ?? {}; - const { isLoading: isLoadingInpatientAdmissions, error: errorLoadingInpatientAdmissions } = - wardPatientsGrouping?.inpatientAdmissionResponse ?? {}; + const { + isLoading: isLoadingInpatientAdmissions, + error: errorLoadingInpatientAdmissions, + hasMore: hasMoreInpatientAdmissions, + loadMore: loadMoreInpatientAdmissions + } = wardPatientsGrouping?.inpatientAdmissionResponse ?? {}; const { t } = useTranslation(); + const scrollToLoadMoreTrigger = useRef(null); + useEffect( + function scrollToLoadMore() { + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + if (hasMoreInpatientAdmissions && !errorLoadingInpatientAdmissions && !isLoadingInpatientAdmissions) { + loadMoreInpatientAdmissions(); + } + } + }); + }, + { threshold: 1 }, + ); + + if (scrollToLoadMoreTrigger.current) { + observer.observe(scrollToLoadMoreTrigger.current); + } + return () => { + if (scrollToLoadMoreTrigger.current) { + observer.unobserve(scrollToLoadMoreTrigger.current); + } + }; + }, + [scrollToLoadMoreTrigger, hasMoreInpatientAdmissions, errorLoadingInpatientAdmissions, loadMoreInpatientAdmissions], + ); + if (!wardPatientsGrouping) return <>; + const wardBeds = bedLayouts?.map((bedLayout) => { const { patients } = bedLayout; const bed = bedLayoutToBed(bedLayout); @@ -122,6 +155,7 @@ const WardViewMain = () => { subtitle={errorLoadingInpatientAdmissions?.message} /> )} +
); }; diff --git a/packages/esm-ward-app/src/ward-view/ward-view.resource.ts b/packages/esm-ward-app/src/ward-view/ward-view.resource.ts index 1740135a9..430efb6b0 100644 --- a/packages/esm-ward-app/src/ward-view/ward-view.resource.ts +++ b/packages/esm-ward-app/src/ward-view/ward-view.resource.ts @@ -31,7 +31,7 @@ export function getWardMetrics(beds: Bed[]): WardMetrics { freeBeds: '--', capacity: '--', }; - if (beds.length == 0) return bedMetrics; + if (beds == null || beds.length == 0) return bedMetrics; const total = beds.length; const occupiedBeds = beds.filter((bed) => bed.status === 'OCCUPIED'); const patients = occupiedBeds.length; diff --git a/packages/esm-ward-app/src/ward-view/ward-view.test.tsx b/packages/esm-ward-app/src/ward-view/ward-view.test.tsx index c471a2b36..97b7343b0 100644 --- a/packages/esm-ward-app/src/ward-view/ward-view.test.tsx +++ b/packages/esm-ward-app/src/ward-view/ward-view.test.tsx @@ -73,6 +73,12 @@ const mockWardPatientGroupDetails = jest.mocked(useWardPatientGrouping).mockRetu }); jest.mocked(useAppContext).mockReturnValue(mockWardPatientGroupDetails()); + +const intersectionObserverMock = () => ({ + observe: () => null, +}); +window.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock); + describe('WardView', () => { it('renders the session location when no location provided in URL', () => { renderWithSwr(); diff --git a/packages/esm-ward-app/src/ward-workspace/ward-patient-notes/notes.resource.ts b/packages/esm-ward-app/src/ward-workspace/ward-patient-notes/notes.resource.ts index f25a2cc4e..170967fb5 100644 --- a/packages/esm-ward-app/src/ward-workspace/ward-patient-notes/notes.resource.ts +++ b/packages/esm-ward-app/src/ward-workspace/ward-patient-notes/notes.resource.ts @@ -1,8 +1,7 @@ -import { type FetchResponse, openmrsFetch, restBaseUrl } from '@openmrs/esm-framework'; -import useSWR from 'swr'; -import { type PatientNote, type UsePatientNotes, type VisitEncountersFetchResponse } from './types'; -import { type EncounterPayload } from '../../types'; +import { openmrsFetch, restBaseUrl, useOpenmrsFetchAll } from '@openmrs/esm-framework'; import { useMemo } from 'react'; +import { type EncounterPayload } from '../../types'; +import { type PatientNote, type RESTPatientNote, type UsePatientNotes } from './types'; export function savePatientNote(payload: EncounterPayload, abortController: AbortController = new AbortController()) { return openmrsFetch(`${restBaseUrl}/encounter`, { @@ -29,15 +28,14 @@ export function usePatientNotes( 'diagnoses'; const encountersApiUrl = `${restBaseUrl}/encounter?patient=${patientUuid}&encounterType=${encounterType}&visit=${visitUuid}&v=${customRepresentation}`; - const { data, error, isLoading, isValidating, mutate } = useSWR, Error>( + const { data, error, isLoading, isValidating, mutate } = useOpenmrsFetchAll( patientUuid && encounterType ? encountersApiUrl : null, - openmrsFetch, ); const patientNotes: Array | null = useMemo( () => data - ? data.data.results + ? data .map((encounter) => { const noteObs = encounter.obs.find((obs) => obs.concept.uuid === conceptUuid); diff --git a/packages/esm-ward-app/src/ward-workspace/ward-patient-notes/types.ts b/packages/esm-ward-app/src/ward-workspace/ward-patient-notes/types.ts index f5077b52d..0d42e0c7c 100644 --- a/packages/esm-ward-app/src/ward-workspace/ward-patient-notes/types.ts +++ b/packages/esm-ward-app/src/ward-workspace/ward-patient-notes/types.ts @@ -1,9 +1,5 @@ import { type Concept, type OpenmrsResource } from '@openmrs/esm-framework'; -export interface VisitEncountersFetchResponse { - results: Array; -} - export interface RESTPatientNote extends OpenmrsResource { uuid: string; display: string; diff --git a/yarn.lock b/yarn.lock index 2188baec6..2b5b61a7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2722,9 +2722,9 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-api@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-api@npm:5.8.1-pre.2242" +"@openmrs/esm-api@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-api@npm:5.8.1-pre.2263" dependencies: "@types/fhir": "npm:0.0.31" lodash-es: "npm:^4.17.21" @@ -2733,17 +2733,17 @@ __metadata: "@openmrs/esm-error-handling": 5.x "@openmrs/esm-navigation": 5.x "@openmrs/esm-offline": 5.x - checksum: 10/880af6bc99da22eaf77568e57e33b6615b07929b62afb4c8fd6ca8c6b21a718d62b910c955168a00720a37e392e66ace701ab985fc3515c6ad08c7a727133378 + checksum: 10/66d48fc0ef4fe36ee238bdfd95c2dac6a2bbddb0e0e172b6859eef1d5ba6d194a5ae510fbc91ae324b71e757290cc66adf2184727741d770a994433286a4d8e0 languageName: node linkType: hard -"@openmrs/esm-app-shell@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-app-shell@npm:5.8.1-pre.2242" +"@openmrs/esm-app-shell@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-app-shell@npm:5.8.1-pre.2263" dependencies: "@carbon/react": "npm:~1.37.0" - "@openmrs/esm-framework": "npm:5.8.1-pre.2242" - "@openmrs/esm-styleguide": "npm:5.8.1-pre.2242" + "@openmrs/esm-framework": "npm:5.8.1-pre.2263" + "@openmrs/esm-styleguide": "npm:5.8.1-pre.2263" dayjs: "npm:^1.10.4" dexie: "npm:^3.0.3" html-webpack-plugin: "npm:^5.5.0" @@ -2768,7 +2768,7 @@ __metadata: workbox-strategies: "npm:^6.1.5" workbox-webpack-plugin: "npm:^6.1.5" workbox-window: "npm:^6.1.5" - checksum: 10/dcb96cc882223086d17ed0e3731de322f9fbee2ced079406cb21809bc12bdb6d1af96c45e7f56e9743348183023f950ec87e55022c7c48c9723374655ed9816a + checksum: 10/a3013133a44bcd3a6e846d2862f429ffa4f3ed9aec238abb7299793af94950d8920a6af3e50dab9d5d140328adbd50346c63445e4c873c8774ceb1ee61f4bc20 languageName: node linkType: hard @@ -2808,9 +2808,9 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-config@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-config@npm:5.8.1-pre.2242" +"@openmrs/esm-config@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-config@npm:5.8.1-pre.2263" dependencies: ramda: "npm:^0.26.1" peerDependencies: @@ -2818,44 +2818,44 @@ __metadata: "@openmrs/esm-state": 5.x "@openmrs/esm-utils": 5.x single-spa: 5.x - checksum: 10/bfd1a1154b3c41ea9426dbe6a159b2301e32aa3e5fda8f4890e64cbc6854b469518cbd5793c6d3f23ed53447c65e198c1720de5c8055e8249e91a82597661ffb + checksum: 10/00bd935fed27742f9fed6129f15c3a9d5cea52fb27b1a2ec8c4ee58f40136bd7b469c5b1119025a284c6a4d9f2fd3f8b4316026dcd148b82272d4a0814bd8375 languageName: node linkType: hard -"@openmrs/esm-context@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-context@npm:5.8.1-pre.2242" +"@openmrs/esm-context@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-context@npm:5.8.1-pre.2263" dependencies: immer: "npm:^10.0.4" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x - checksum: 10/cc61c9d86377e70358266366733b752ec11ef88ba0699120f8d9ef1b8e1ef51f10852bf32064d962e091a57aae363a48ec777d7e1d95b17fd28a73a7be91aed2 + checksum: 10/331a5ac858b28aeb8b1fb4865776a13e04413875917c49207eeafbc4ffa4ef5e0231c8baf524eb4827df5a0c058398057017eabdc2b0520cf1c6eb9ae6c9b195 languageName: node linkType: hard -"@openmrs/esm-dynamic-loading@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-dynamic-loading@npm:5.8.1-pre.2242" +"@openmrs/esm-dynamic-loading@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-dynamic-loading@npm:5.8.1-pre.2263" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-translations": 5.x - checksum: 10/f646a40c4db370ea21b29ab14b2d6b6870761233d93aaa4505cc83decb7536e12698a5c3058fa5f25666ef5147ce0fa990c87738655fef45eb6f7afa1517a34e + checksum: 10/9f6d3d1ff55928e03f0265f5bea1b5c780173ef62c71adcf221c86b9e7d1ce8e33c8eda3605c5aed99b5a388ff9288ad01f0aef50763abd4abf917eca56ecbe3 languageName: node linkType: hard -"@openmrs/esm-error-handling@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-error-handling@npm:5.8.1-pre.2242" +"@openmrs/esm-error-handling@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-error-handling@npm:5.8.1-pre.2263" peerDependencies: "@openmrs/esm-globals": 5.x - checksum: 10/d513fcf73f75a61ba72d8e0b06c372ca6c54fbc403cb00200794fe3804577c1e0cbb2f8d9838983bfb1d4389d98d2896efcb21b27c89e0ebe422d20b03e356fd + checksum: 10/0454722b0d217846a1dce55004c3e3759aa7d4f8cd7761e074b86ef041b2d3edd863970f14a34130f698e1fd67458b466e71c7ec485f1caf4d77dcb1b2e4b184 languageName: node linkType: hard -"@openmrs/esm-expression-evaluator@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-expression-evaluator@npm:5.8.1-pre.2242" +"@openmrs/esm-expression-evaluator@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-expression-evaluator@npm:5.8.1-pre.2263" dependencies: "@jsep-plugin/arrow": "npm:^1.0.5" "@jsep-plugin/new": "npm:^1.0.3" @@ -2864,13 +2864,13 @@ __metadata: "@jsep-plugin/template": "npm:^1.0.4" "@jsep-plugin/ternary": "npm:^1.1.3" jsep: "npm:^1.3.9" - checksum: 10/38e73ef31e0de7b1640960a6e23fe84bc67e6fc9339f9f62490522c7e64e7f1583fe6f0e0eaa22ebc39a3faa2a313013a7082d61c103d73295eb84f65765b61c + checksum: 10/2a4daf32cc07c1b4c873fa87aa4862a27ac0a09a050cc4bf3697746193ceaded0f66fe7646637c50144b288ac1e99747b433a1b21c4d04c8ee3c21ce532a48de languageName: node linkType: hard -"@openmrs/esm-extensions@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-extensions@npm:5.8.1-pre.2242" +"@openmrs/esm-extensions@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-extensions@npm:5.8.1-pre.2263" dependencies: lodash-es: "npm:^4.17.21" peerDependencies: @@ -2881,44 +2881,44 @@ __metadata: "@openmrs/esm-state": 5.x "@openmrs/esm-utils": 5.x single-spa: 5.x - checksum: 10/940a2acdade716c1a804c0516f6b01426812f5f90c72d3159eecd3fc5a8e3303c59f392e201953ecc589f79bbd9bec109d000d59d7e882b271a69effdbc109b1 + checksum: 10/e465443e5ed29615c98a1f2c77f28d17bd77584364892c0d3ae3a16a5546481dfc96423506ffd959f9bbdef2faf83a618856238a058236106dd3d0264e791a64 languageName: node linkType: hard -"@openmrs/esm-feature-flags@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-feature-flags@npm:5.8.1-pre.2242" +"@openmrs/esm-feature-flags@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-feature-flags@npm:5.8.1-pre.2263" dependencies: ramda: "npm:^0.26.1" peerDependencies: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x single-spa: 5.x - checksum: 10/121d919797c594ad86123c566a1c372d1f99651102645fb154c70866c61aa4f7370284404c6e71fe5a17f26f8181f9e3b9301f74072b63f12cdc8752d0bbfe6e - languageName: node - linkType: hard - -"@openmrs/esm-framework@npm:5.8.1-pre.2242, @openmrs/esm-framework@npm:next": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-framework@npm:5.8.1-pre.2242" - dependencies: - "@openmrs/esm-api": "npm:5.8.1-pre.2242" - "@openmrs/esm-config": "npm:5.8.1-pre.2242" - "@openmrs/esm-context": "npm:5.8.1-pre.2242" - "@openmrs/esm-dynamic-loading": "npm:5.8.1-pre.2242" - "@openmrs/esm-error-handling": "npm:5.8.1-pre.2242" - "@openmrs/esm-expression-evaluator": "npm:5.8.1-pre.2242" - "@openmrs/esm-extensions": "npm:5.8.1-pre.2242" - "@openmrs/esm-feature-flags": "npm:5.8.1-pre.2242" - "@openmrs/esm-globals": "npm:5.8.1-pre.2242" - "@openmrs/esm-navigation": "npm:5.8.1-pre.2242" - "@openmrs/esm-offline": "npm:5.8.1-pre.2242" - "@openmrs/esm-react-utils": "npm:5.8.1-pre.2242" - "@openmrs/esm-routes": "npm:5.8.1-pre.2242" - "@openmrs/esm-state": "npm:5.8.1-pre.2242" - "@openmrs/esm-styleguide": "npm:5.8.1-pre.2242" - "@openmrs/esm-translations": "npm:5.8.1-pre.2242" - "@openmrs/esm-utils": "npm:5.8.1-pre.2242" + checksum: 10/2b0c5b7b7f655c2d7cd5e08679128eef7bfd7e27b96d213a3968b290b6da28815873cde9f8b8707b9a5d21eb141ee74edfdeb14e9bc31dda3b7261ad7af6e763 + languageName: node + linkType: hard + +"@openmrs/esm-framework@npm:5.8.1-pre.2263, @openmrs/esm-framework@npm:next": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-framework@npm:5.8.1-pre.2263" + dependencies: + "@openmrs/esm-api": "npm:5.8.1-pre.2263" + "@openmrs/esm-config": "npm:5.8.1-pre.2263" + "@openmrs/esm-context": "npm:5.8.1-pre.2263" + "@openmrs/esm-dynamic-loading": "npm:5.8.1-pre.2263" + "@openmrs/esm-error-handling": "npm:5.8.1-pre.2263" + "@openmrs/esm-expression-evaluator": "npm:5.8.1-pre.2263" + "@openmrs/esm-extensions": "npm:5.8.1-pre.2263" + "@openmrs/esm-feature-flags": "npm:5.8.1-pre.2263" + "@openmrs/esm-globals": "npm:5.8.1-pre.2263" + "@openmrs/esm-navigation": "npm:5.8.1-pre.2263" + "@openmrs/esm-offline": "npm:5.8.1-pre.2263" + "@openmrs/esm-react-utils": "npm:5.8.1-pre.2263" + "@openmrs/esm-routes": "npm:5.8.1-pre.2263" + "@openmrs/esm-state": "npm:5.8.1-pre.2263" + "@openmrs/esm-styleguide": "npm:5.8.1-pre.2263" + "@openmrs/esm-translations": "npm:5.8.1-pre.2263" + "@openmrs/esm-utils": "npm:5.8.1-pre.2263" dayjs: "npm:^1.10.7" peerDependencies: dayjs: 1.x @@ -2929,35 +2929,35 @@ __metadata: rxjs: 6.x single-spa: 5.x swr: 2.x - checksum: 10/73f62005ac020b523d8f18af5e2c7706e81cf99b8562500bac3fc97c866ec548d07b68e64408ce5d75751e08037a59e2e7eef236d7ba59e310a56b59f2a01e0f + checksum: 10/cd7bbbb9345ee104e7086879d9e9373d504a01b960dd2321dc72ee0e565ef9844c8a649a71770ef97ff710997b828f0f5aba838f2918abc1ec685d0619242a65 languageName: node linkType: hard -"@openmrs/esm-globals@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-globals@npm:5.8.1-pre.2242" +"@openmrs/esm-globals@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-globals@npm:5.8.1-pre.2263" dependencies: "@types/fhir": "npm:0.0.31" peerDependencies: single-spa: 5.x - checksum: 10/8ec79b70436828f9a4e406c1858220f08f2e437cbc027d3400d12a98eceac6d5b9a05861030f65acb0ace720fb993eb41a0fbdf0b91518b9167140f2de549ba5 + checksum: 10/7da2b4bc2d8098a7ffd86bb7d2670d783828f5bc7e4f460f9f29e82bb899661aa37541bbf1b6d6a8a9c20b5144ce499bffed7393119e8b3a54bfb58e47af56b6 languageName: node linkType: hard -"@openmrs/esm-navigation@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-navigation@npm:5.8.1-pre.2242" +"@openmrs/esm-navigation@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-navigation@npm:5.8.1-pre.2263" dependencies: path-to-regexp: "npm:6.1.0" peerDependencies: "@openmrs/esm-state": 5.x - checksum: 10/542307056a0624da3185634e4fb20341653f8c71afbf6c078b0c740c303df50f8ea678478d2c1f472a178ea4c646e28dfaf94f3eb4c669b7b831300c2841749f + checksum: 10/16c7c1f11afc4ba890811fd83e4454e2634791d9f3728ab10ebea076481f0e660aa557a02f3dca902c2b48b14b468c37c19d3995198fb20a6a0b3cdf99bc0951 languageName: node linkType: hard -"@openmrs/esm-offline@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-offline@npm:5.8.1-pre.2242" +"@openmrs/esm-offline@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-offline@npm:5.8.1-pre.2263" dependencies: dexie: "npm:^3.0.3" lodash-es: "npm:^4.17.21" @@ -2968,7 +2968,7 @@ __metadata: "@openmrs/esm-globals": 5.x "@openmrs/esm-state": 5.x rxjs: 6.x - checksum: 10/4e0694f7ba9ee5beb89ef0d30cbf4968f099ec8effb5237859889fb019ebd0375caad93180613fdf3a3300180be36b91ffe24a3388e8f0eb5c995acf126fae03 + checksum: 10/0ee058969ba72d019280b4bab2152f6496e8624edf8e8f6127b3c3a12a880c4f1c12a230499e5cd8a112f92a42aeb138c92f6ba81994e89e01315d8a30a3ce80 languageName: node linkType: hard @@ -3109,9 +3109,9 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-react-utils@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-react-utils@npm:5.8.1-pre.2242" +"@openmrs/esm-react-utils@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-react-utils@npm:5.8.1-pre.2263" dependencies: lodash-es: "npm:^4.17.21" single-spa-react: "npm:^6.0.0" @@ -3132,13 +3132,13 @@ __metadata: react-i18next: 11.x rxjs: 6.x swr: 2.x - checksum: 10/6cbaa31bc6053381bde561e3bb6645c17e4d2760bff865a5799f1c25f3895a810fde563b533e262dbd2483dbd1638bc8c5d4c2053651bddf2dd37ccfb9e5e821 + checksum: 10/a2c885758ad0b57ca26306f891642f6933a20875559a47a68757439e7d9a66ea955b01bac2fba93c4b8edc616ba97fe1306f3b5fe5611e64516cf57b91e0f86f languageName: node linkType: hard -"@openmrs/esm-routes@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-routes@npm:5.8.1-pre.2242" +"@openmrs/esm-routes@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-routes@npm:5.8.1-pre.2263" peerDependencies: "@openmrs/esm-config": 5.x "@openmrs/esm-dynamic-loading": 5.x @@ -3147,7 +3147,7 @@ __metadata: "@openmrs/esm-globals": 5.x "@openmrs/esm-utils": 5.x single-spa: 6.x - checksum: 10/d54eadf5db66e9ccaf28fb10c936f809f3c366ac53758ff6d93941ea5a80366b8db309ba8f5ff3fc84cea331beee9be18ff5eed959d0f29e846d3aa037f8318c + checksum: 10/8a7b9ddb3623f8f6142d2abf98653b2b0464de782c49f1600326e6e1fd6de3383bf5b3e5a231cbbc039489c1a3f8a6117ce68665dbdb5e5e2d13209c437209f0 languageName: node linkType: hard @@ -3167,20 +3167,20 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/esm-state@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-state@npm:5.8.1-pre.2242" +"@openmrs/esm-state@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-state@npm:5.8.1-pre.2263" dependencies: zustand: "npm:^4.5.5" peerDependencies: "@openmrs/esm-globals": 5.x - checksum: 10/8fa733bc56a74a18d4d89ceaf6c4ccbc183249d1d6606e4b90fd3c7a625cf605863059300408f27ee06d0a9bdecda67445be3ef51ef453ff68a29a9a875c862a + checksum: 10/3fa63f4fbd988d27c875dfc1ae282a7574e2a7e3ac876e5fe4f6a05c02ebeb54788a635285c1c08c48c95f912f707c585a8b7c209bb24e2753c0fcc7e9872235 languageName: node linkType: hard -"@openmrs/esm-styleguide@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-styleguide@npm:5.8.1-pre.2242" +"@openmrs/esm-styleguide@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-styleguide@npm:5.8.1-pre.2263" dependencies: "@carbon/charts": "npm:^1.12.0" "@carbon/react": "npm:~1.37.0" @@ -3203,24 +3203,24 @@ __metadata: react: 18.x react-dom: 18.x rxjs: 6.x - checksum: 10/3f050e94301425914bc46ea95dfb8b617576a028b24a00f3130648664da3633b642f756f90ae01732951062bd589d910acf6e4c43797a11b93f42e120c6c5e1a + checksum: 10/a38a33b6c43f4938afc5c808ccae72efddf1025e41ea07e6dd4e127369e50159f30b30817b805e6d20ec9366e7a7207c0c969cd6d8c0f947851f16ff88a39e5e languageName: node linkType: hard -"@openmrs/esm-translations@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-translations@npm:5.8.1-pre.2242" +"@openmrs/esm-translations@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-translations@npm:5.8.1-pre.2263" dependencies: i18next: "npm:21.10.0" peerDependencies: i18next: 21.x - checksum: 10/f5e7facddddc0eb63755b939bbbb4fba68644c2e3e90778182d8d7512ff59fc8127dae3cd424848f4d3b51433e204f71e3bc4bb39d05e333b864db3ae21a50d8 + checksum: 10/5578b137d713e6b5514f5a342b051c74cee55e1e7fb1e86ad232bc1b2bab08c8936cc43e34ab127ef3178b7c0124a068dd0bf6c53a2de4f5b9d9d6296277937b languageName: node linkType: hard -"@openmrs/esm-utils@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/esm-utils@npm:5.8.1-pre.2242" +"@openmrs/esm-utils@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/esm-utils@npm:5.8.1-pre.2263" dependencies: "@formatjs/intl-durationformat": "npm:^0.2.4" "@internationalized/date": "npm:^3.5.5" @@ -3230,7 +3230,7 @@ __metadata: dayjs: 1.x i18next: 21.x rxjs: 6.x - checksum: 10/49c087567e3bc63a2e96e92bd3bf20cc858ba5fdeaccddc213ef9446a94ea4037c5e180863516d5390fea51d9d98afecb555608db7ed0cff22ac2566ba6b46ee + checksum: 10/9407588f28149831ee8839c475ceedd0b309355582ac03ed71f21599d3bab9ecd940d21a5855263e50509e5b0fce29f170e11bdecaca21a9c0e1ac66456f2043 languageName: node linkType: hard @@ -3250,9 +3250,9 @@ __metadata: languageName: unknown linkType: soft -"@openmrs/webpack-config@npm:5.8.1-pre.2242": - version: 5.8.1-pre.2242 - resolution: "@openmrs/webpack-config@npm:5.8.1-pre.2242" +"@openmrs/webpack-config@npm:5.8.1-pre.2263": + version: 5.8.1-pre.2263 + resolution: "@openmrs/webpack-config@npm:5.8.1-pre.2263" dependencies: "@swc/core": "npm:^1.3.58" clean-webpack-plugin: "npm:^4.0.0" @@ -3270,7 +3270,7 @@ __metadata: webpack-stats-plugin: "npm:^1.0.3" peerDependencies: webpack: 5.x - checksum: 10/d86a7e625b8e221638368c35599f586d74f91b435cd44a0c91014a1410ea11c43afe99526219007873d9a5b9e8ff5e58cf54e0023d0d81ee05af8f02755a532c + checksum: 10/d9de5c4625654d2fcee78c46729060b32b98ef38ac59ac2cc3004ea6a1a1208745bf0fe999d84515156b8f98921e5ca97a9a0744343632a7fda3405e575e80f2 languageName: node linkType: hard @@ -13453,11 +13453,11 @@ __metadata: linkType: hard "openmrs@npm:next": - version: 5.8.1-pre.2242 - resolution: "openmrs@npm:5.8.1-pre.2242" + version: 5.8.1-pre.2263 + resolution: "openmrs@npm:5.8.1-pre.2263" dependencies: - "@openmrs/esm-app-shell": "npm:5.8.1-pre.2242" - "@openmrs/webpack-config": "npm:5.8.1-pre.2242" + "@openmrs/esm-app-shell": "npm:5.8.1-pre.2263" + "@openmrs/webpack-config": "npm:5.8.1-pre.2263" "@pnpm/npm-conf": "npm:^2.1.0" "@swc/core": "npm:^1.3.58" autoprefixer: "npm:^10.4.20" @@ -13496,7 +13496,7 @@ __metadata: yargs: "npm:^17.6.2" bin: openmrs: ./dist/cli.js - checksum: 10/f9bd8fec941f308e7016d033111bd5f08e0da480ba8722b8dee8963037800575e12f39b97456078331d5d54cc607405510956766ed9d4e8ad5f9560256bf04f7 + checksum: 10/cc4661d2501da81526a6a494d697723870f280db0c2e2d063ad0b342777eb0d9b64dc4ae690f9767f69119fe114384e2d5ce9107189a8e7e3fef28f50698b979 languageName: node linkType: hard