@ugandaemr/esm-ugandaemr-app
Version:
UgandaEMR microfrontend built on top of OpenMRS 3.x and OHRI
88 lines (72 loc) • 2.29 kB
text/typescript
import useSWR from 'swr';
import axios from 'axios';
import { openmrsFetch } from '@openmrs/esm-framework';
import { systemInfo } from './system-info.types';
import { NHFRIdentifier } from '../../constants';
type facilityRequest = {
resource: string;
name: string;
};
export function useGetResourceInformation(params: facilityRequest) {
const apiUrl = `https://api-nhfr.health.go.ug/NHFRSearch?resource=${params.resource}&name=${params.name}`;
const fetcher = async () => {
try {
const response = await axios.get(apiUrl, {
headers: {
'Content-Type': 'application/json',
},
});
return response.data;
} catch (error) {
throw new Error(`Error in fetcher: ${error.message}`);
}
};
const { data, error } = useSWR(apiUrl, fetcher);
const facilities = data?.entry?.filter((entry) =>
entry?.resource?.extension?.find((extension) => extension.url === 'levelOfCare'),
);
return {
data: facilities,
isLoading: !error && !data,
isError: error,
};
}
export async function updatePropertyValue(propertyName: string, value: string) {
const abortController = new AbortController();
try {
const response = await openmrsFetch(`/ws/rest/v1/systemsetting/${propertyName}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
signal: abortController.signal,
body: JSON.stringify({
value: value,
}),
});
if (!response.ok) {
throw new Error(`Failed to update property value: ${response.statusText}`);
}
return response.json();
} catch (error) {
throw new Error(`Error in updatePropertyValue: ${error.message}`);
}
}
export function useGetSystemInformation() {
const apiUrl = `/ws/rest/v1/systeminformation?v=full`;
const { data, error, isLoading } = useSWR<{ data: systemInfo }, Error>(apiUrl, openmrsFetch);
return {
systemInfo: data?.data,
isLoading,
isError: error,
};
}
export function useRetrieveFacilityCode() {
const apiURL = `/ws/rest/v1/systemsetting?q=${NHFRIdentifier}&v=full`;
const { data, error, isLoading } = useSWR<{ data: [] }, Error>(apiURL, openmrsFetch);
return {
facilityIds: data?.data['results'],
isLoading,
isError: error,
};
}