@openmrs/esm-api
Version:
The javascript module for interacting with the OpenMRS API
37 lines (33 loc) • 1.04 kB
text/typescript
/** @module @category API */
import type { Observable } from 'rxjs';
import { map, take } from 'rxjs/operators';
import { openmrsObservableFetch, restBaseUrl } from '../openmrs-fetch';
import type { Location } from '../types';
export function toLocationObject(openmrsRestForm: any): Location {
return {
uuid: openmrsRestForm.uuid,
display: openmrsRestForm.display,
};
}
export function getLocations(
tagUuidOrName: string | null = null,
query: string | null = null,
): Observable<Array<Location>> {
const params = new URLSearchParams();
if (tagUuidOrName) {
params.set('tag', tagUuidOrName);
}
if (query) {
params.set('q', query);
}
const queryString = params.toString();
const url = `${restBaseUrl}/location${queryString ? '?' + queryString : ''}`;
return openmrsObservableFetch<{ results: Array<Location> }>(url)
.pipe(
map((results) => {
const locations: Array<Location> = results.data.results.map(toLocationObject);
return locations;
}),
)
.pipe(take(1));
}