@ugandaemr/esm-patient-queues-app
Version:
Patient queues microfrontend for UgandaEMR
33 lines (30 loc) • 1.04 kB
text/typescript
import { PagingCriteria } from './pageable-result';
export enum ResourceRepresentation {
Default = 'default',
Full = 'full',
REF = 'ref',
}
export interface ResourceFilterCriteria extends PagingCriteria {
v?: ResourceRepresentation | null | string;
q?: string | null;
totalCount?: boolean | null;
limit?: number | null;
sort?: string;
}
export function toQueryParams<T extends ResourceFilterCriteria>(
filterCriteria?: T | null,
skipEmptyString = true,
): string {
if (!filterCriteria) return '';
const queryParams: string = Object.keys(filterCriteria)
?.map((key) => {
const value = filterCriteria[key];
return (skipEmptyString && (value === false || value === true ? true : value)) ||
(!skipEmptyString && (value === '' || (value === false || value === true ? true : value)))
? `${encodeURIComponent(key)}=${encodeURIComponent(value.toString())}`
: null;
})
.filter((o) => o != null)
.join('&');
return queryParams.length > 0 ? '?' + queryParams : '';
}