UNPKG

fhirclient

Version:

JavaScript client for Fast Healthcare Interoperability Resources

157 lines (156 loc) 7.38 kB
import { fhirclient } from "./types"; declare const _debug: any; export { _debug as debug }; /** * A namespace with functions for converting between different measurement units */ export declare const units: { cm({ code, value }: fhirclient.CodeValue): number; kg({ code, value }: fhirclient.CodeValue): number; any(pq: fhirclient.CodeValue): number; }; /** * Used in fetch Promise chains to reject if the "ok" property is not true */ export declare function checkResponse(resp: Response): Promise<Response>; /** * Used in fetch Promise chains to return the JSON version of the response. * Note that `resp.json()` will throw on empty body so we use resp.text() * instead. */ export declare function responseToJSON(resp: Response): Promise<object | string>; export declare function loweCaseKeys<T = Record<string, any> | any[] | undefined>(obj: T): T; /** * This is our built-in request function. It does a few things by default * (unless told otherwise): * - Makes CORS requests * - Sets accept header to "application/json" * - Handles errors * - If the response is json return the json object * - If the response is text return the result text * - Otherwise return the response object on which we call stuff like `.blob()` */ export declare function request<T = fhirclient.FetchResult>(url: string | Request, requestOptions?: fhirclient.FetchOptions): Promise<T>; /** * Makes a request using `fetch` and stores the result in internal memory cache. * The cache is cleared when the page is unloaded. * @param url The URL to request * @param requestOptions Request options * @param force If true, reload from source and update the cache, even if it has * already been cached. */ export declare function getAndCache(url: string, requestOptions?: RequestInit, force?: boolean): Promise<any>; /** * Fetches the conformance statement from the given base URL. * Note that the result is cached in memory (until the page is reloaded in the * browser) because it might have to be re-used by the client * @param baseUrl The base URL of the FHIR server * @param [requestOptions] Any options passed to the fetch call */ export declare function fetchConformanceStatement(baseUrl?: string, requestOptions?: RequestInit): Promise<fhirclient.FHIR.CapabilityStatement>; /** * Walks through an object (or array) and returns the value found at the * provided path. This function is very simple so it intentionally does not * support any argument polymorphism, meaning that the path can only be a * dot-separated string. If the path is invalid returns undefined. * @param obj The object (or Array) to walk through * @param path The path (eg. "a.b.4.c") * @returns {*} Whatever is found in the path or undefined */ export declare function getPath(obj: Record<string, any>, path?: string): any; /** * Like getPath, but if the node is found, its value is set to @value * @param obj The object (or Array) to walk through * @param path The path (eg. "a.b.4.c") * @param value The value to set * @param createEmpty If true, create missing intermediate objects or arrays * @returns The modified object */ export declare function setPath(obj: Record<string, any>, path: string, value: any, createEmpty?: boolean): Record<string, any>; /** * If the argument is an array returns it as is. Otherwise puts it in an array * (`[arg]`) and returns the result * @param arg The element to test and possibly convert to array * @category Utility */ export declare function makeArray<T = any>(arg: any): T[]; /** * Given a path, converts it to absolute url based on the `baseUrl`. If baseUrl * is not provided, the result would be a rooted path (one that starts with `/`). * @param path The path to convert * @param baseUrl The base URL */ export declare function absolute(path: string, baseUrl?: string): string; /** * Generates random strings. By default this returns random 8 characters long * alphanumeric strings. * @param strLength The length of the output string. Defaults to 8. * @param charSet A string containing all the possible characters. * Defaults to all the upper and lower-case letters plus digits. * @category Utility */ export declare function randomString(strLength?: number, charSet?: string): string; /** * Decodes a JWT token and returns it's body. * @param token The token to read * @param env An `Adapter` or any other object that has an `atob` method * @category Utility */ export declare function jwtDecode(token: string, env: fhirclient.Adapter): Record<string, any> | null; /** * Add a supplied number of seconds to the supplied Date, returning * an integer number of seconds since the epoch * @param secondsAhead How far ahead, in seconds (defaults to 120 seconds) * @param from Initial time (defaults to current time) */ export declare function getTimeInFuture(secondsAhead?: number, from?: Date | number): number; /** * Given a token response, computes and returns the expiresAt timestamp. * Note that this should only be used immediately after an access token is * received, otherwise the computed timestamp will be incorrect. * @param tokenResponse * @param env */ export declare function getAccessTokenExpiration(tokenResponse: fhirclient.TokenResponse, env: fhirclient.Adapter): number; /** * Groups the observations by code. Returns a map that will look like: * ```js * const map = client.byCodes(observations, "code"); * // map = { * // "55284-4": [ observation1, observation2 ], * // "6082-2": [ observation3 ] * // } * ``` * @param observations Array of observations * @param property The name of a CodeableConcept property to group by */ export declare function byCode(observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[], property: string): fhirclient.ObservationMap; /** * First groups the observations by code using `byCode`. Then returns a function * that accepts codes as arguments and will return a flat array of observations * having that codes. Example: * ```js * const filter = client.byCodes(observations, "category"); * filter("laboratory") // => [ observation1, observation2 ] * filter("vital-signs") // => [ observation3 ] * filter("laboratory", "vital-signs") // => [ observation1, observation2, observation3 ] * ``` * @param observations Array of observations * @param property The name of a CodeableConcept property to group by */ export declare function byCodes(observations: fhirclient.FHIR.Observation | fhirclient.FHIR.Observation[], property: string): (...codes: string[]) => any[]; /** * Given a conformance statement and a resource type, returns the name of the * URL parameter that can be used to scope the resource type by patient ID. */ export declare function getPatientParam(conformance: fhirclient.FHIR.CapabilityStatement, resourceType: string): string; /** * Resolves a reference to target window. It may also open new window or tab if * the `target = "popup"` or `target = "_blank"`. * @param target * @param width Only used when `target = "popup"` * @param height Only used when `target = "popup"` */ export declare function getTargetWindow(target: fhirclient.WindowTarget, width?: number, height?: number): Promise<Window>; export declare function assert(condition: any, message: string): asserts condition; export declare function assertJsonPatch(patch: fhirclient.JsonPatch): asserts patch;