@oystehr/sdk 4.2.5 → 4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -1
- package/dist/cjs/client/client.cjs +35 -7
- package/dist/cjs/client/client.cjs.map +1 -1
- package/dist/cjs/index.min.cjs +1 -1
- package/dist/cjs/index.min.cjs.map +1 -1
- package/dist/cjs/resources/classes/erx.cjs +8 -0
- package/dist/cjs/resources/classes/erx.cjs.map +1 -1
- package/dist/cjs/resources/classes/erx.d.ts +13 -1
- package/dist/cjs/resources/classes/fhir-ext.cjs +39 -10
- package/dist/cjs/resources/classes/fhir-ext.cjs.map +1 -1
- package/dist/cjs/resources/classes/fhir-ext.d.ts +8 -8
- package/dist/cjs/resources/classes/fhir.d.ts +2 -2
- package/dist/cjs/resources/types/ErxGetMedicationParams.d.ts +5 -0
- package/dist/cjs/resources/types/ErxGetMedicationResponse.d.ts +39 -0
- package/dist/cjs/resources/types/ErxSearchPharmaciesParams.d.ts +1 -0
- package/dist/cjs/resources/types/ZambdaCreateParams.d.ts +1 -1
- package/dist/cjs/resources/types/ZambdaExecuteResult.d.ts +6 -0
- package/dist/cjs/resources/types/ZambdaUpdateParams.d.ts +1 -1
- package/dist/cjs/resources/types/fhir.d.ts +20 -0
- package/dist/cjs/resources/types/index.d.ts +2 -0
- package/dist/esm/client/client.js +35 -7
- package/dist/esm/client/client.js.map +1 -1
- package/dist/esm/index.min.js +1 -1
- package/dist/esm/index.min.js.map +1 -1
- package/dist/esm/resources/classes/erx.d.ts +13 -1
- package/dist/esm/resources/classes/erx.js +8 -0
- package/dist/esm/resources/classes/erx.js.map +1 -1
- package/dist/esm/resources/classes/fhir-ext.d.ts +8 -8
- package/dist/esm/resources/classes/fhir-ext.js +39 -10
- package/dist/esm/resources/classes/fhir-ext.js.map +1 -1
- package/dist/esm/resources/classes/fhir.d.ts +2 -2
- package/dist/esm/resources/types/ErxGetMedicationParams.d.ts +5 -0
- package/dist/esm/resources/types/ErxGetMedicationResponse.d.ts +39 -0
- package/dist/esm/resources/types/ErxSearchPharmaciesParams.d.ts +1 -0
- package/dist/esm/resources/types/ZambdaCreateParams.d.ts +1 -1
- package/dist/esm/resources/types/ZambdaExecuteResult.d.ts +6 -0
- package/dist/esm/resources/types/ZambdaUpdateParams.d.ts +1 -1
- package/dist/esm/resources/types/fhir.d.ts +20 -0
- package/dist/esm/resources/types/index.d.ts +2 -0
- package/package.json +1 -1
- package/src/client/client.ts +37 -6
- package/src/resources/classes/erx.ts +25 -0
- package/src/resources/classes/fhir-ext.ts +69 -23
- package/src/resources/types/ErxGetMedicationParams.ts +7 -0
- package/src/resources/types/ErxGetMedicationResponse.ts +41 -0
- package/src/resources/types/ErxSearchPharmaciesParams.ts +1 -0
- package/src/resources/types/ZambdaCreateParams.ts +1 -1
- package/src/resources/types/ZambdaExecuteResult.ts +6 -0
- package/src/resources/types/ZambdaUpdateParams.ts +1 -1
- package/src/resources/types/fhir.ts +13 -0
- package/src/resources/types/index.ts +2 -0
package/README.md
CHANGED
|
@@ -260,7 +260,36 @@ const getAppointments: BatchInputGetRequest = {
|
|
|
260
260
|
method: 'GET',
|
|
261
261
|
url: `/Appointment?date=sa${dayjs().startOf('day').format('YYYY-MM-DDTHH:mm:ss.SSSZ')}`,
|
|
262
262
|
};
|
|
263
|
-
await oystehr.fhir.transaction({ requests: [patchAppointment, getAppointments ]});
|
|
263
|
+
await oystehr.fhir.transaction<Appointment>({ requests: [patchAppointment, getAppointments ]});
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Since the SDK batch functions return `Bundle`s, they also support the `unbundle()` helper:
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
const txBundle = await oystehr.fhir.transaction<Appointment>({ requests: [patchAppointment, getAppointments ]});
|
|
270
|
+
const results/*: Appointment[]*/ = txBundle.unbundle();
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Batch Request Error Handling
|
|
274
|
+
|
|
275
|
+
Batch and transaction requests produce errors differently. For transactions, if there is an error processing any part of the transaction, all operations will be rolled back and the SDK will throw an `OystehrFHIRError` with the `OperationOutcome` object in the `error` field:
|
|
276
|
+
|
|
277
|
+
```typescript
|
|
278
|
+
try {
|
|
279
|
+
const txBundle = await oystehr.fhir.transaction<Appointment>({ requests: [patchAppointment, getAppointments ]});
|
|
280
|
+
// ...
|
|
281
|
+
} catch (err) {
|
|
282
|
+
const error: OperationOutcome = (err as OystehrFHIRError).error;
|
|
283
|
+
// ...
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Batch errors are returned in-line with successful responses in the `Bundle`. The SDK has a helper function to pull errors out of the bundle result:
|
|
288
|
+
|
|
289
|
+
```typescript
|
|
290
|
+
const batchBundle = await oystehr.fhir.batch<Appointment>({ requests: [patchAppointment, getAppointments ]});
|
|
291
|
+
const batchResources/*: Appointment[]*/ = batchBundle.unbundle();
|
|
292
|
+
const batchErrors/*: OperationOutcome[]*/ = batchBundle.errors();
|
|
264
293
|
```
|
|
265
294
|
|
|
266
295
|
### FHIR Search and Batch Types
|
|
@@ -62,6 +62,26 @@ class SDKResource {
|
|
|
62
62
|
function isInternalClientRequest(request) {
|
|
63
63
|
return 'accessToken' in request;
|
|
64
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Parse XML response in format <response><status>...</status><output>...</output></response>
|
|
67
|
+
*/
|
|
68
|
+
function parseXmlResponse(xmlString) {
|
|
69
|
+
try {
|
|
70
|
+
// Extract status
|
|
71
|
+
const statusMatch = xmlString.match(/<status>(\d+)<\/status>/);
|
|
72
|
+
const status = statusMatch ? parseInt(statusMatch[1], 10) : null;
|
|
73
|
+
// Extract output - everything between <output> and </output>
|
|
74
|
+
const outputMatch = xmlString.match(/<output>([\s\S]*?)<\/output>/);
|
|
75
|
+
const output = outputMatch ? outputMatch[1] : null;
|
|
76
|
+
if (status === null || output === null) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
return { status, output };
|
|
80
|
+
}
|
|
81
|
+
catch (_err) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
65
85
|
function fetcher(baseUrlThunk, configThunk, path, methodParam) {
|
|
66
86
|
return async (params, request) => {
|
|
67
87
|
// this function supports multiple signatures. fetcher(baseUrl, path, method)(params, request) or fetcher(baseUrl, path, method)(request)
|
|
@@ -138,13 +158,19 @@ function fetcher(baseUrlThunk, configThunk, path, methodParam) {
|
|
|
138
158
|
}));
|
|
139
159
|
const responseBody = response.body ? await response.text() : null;
|
|
140
160
|
let responseJson;
|
|
161
|
+
const contentType = response.headers.get('content-type');
|
|
141
162
|
try {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
163
|
+
if (responseBody &&
|
|
164
|
+
(contentType?.includes('application/json') || contentType?.includes('application/fhir+json'))) {
|
|
165
|
+
responseJson = JSON.parse(responseBody);
|
|
166
|
+
}
|
|
167
|
+
else if (responseBody && (contentType?.includes('application/xml') || contentType?.includes('text/xml'))) {
|
|
168
|
+
// Parse XML response into { status, output } structure
|
|
169
|
+
responseJson = parseXmlResponse(responseBody);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
responseJson = null;
|
|
173
|
+
}
|
|
148
174
|
}
|
|
149
175
|
catch (_err) {
|
|
150
176
|
// ignore JSON.parse errors
|
|
@@ -153,7 +179,9 @@ function fetcher(baseUrlThunk, configThunk, path, methodParam) {
|
|
|
153
179
|
const isError = !response.ok || response.status >= 400;
|
|
154
180
|
if (isError) {
|
|
155
181
|
const errObj = {
|
|
156
|
-
message: responseJson?.output
|
|
182
|
+
message: (typeof responseJson?.output === 'string'
|
|
183
|
+
? responseJson.output // XML error case - output is XML string
|
|
184
|
+
: responseJson?.output?.message) ?? // official zambda output format (JSON)
|
|
157
185
|
responseJson?.message ?? // normal endpoint output format
|
|
158
186
|
responseJson ?? // parsable json
|
|
159
187
|
responseBody ?? // raw response
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.cjs","sources":["../../../src/client/client.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid';\nimport { OystehrConfig } from '../config';\nimport { OystehrFHIRError, OystehrSdkError } from '../errors';\nimport { FhirBundle, FhirResource, OperationOutcome } from '../resources/types';\n\ntype HttpMethod = 'get' | 'put' | 'post' | 'delete' | 'options' | 'head' | 'patch' | 'trace';\nexport const defaultProjectApiUrl = 'https://project-api.zapehr.com/v1';\nconst defaultFhirApiUrl = 'https://fhir-api.zapehr.com';\nconst STATUS_CODES_TO_RETRY = [408, 429, 500, 502, 503, 504];\nconst ERROR_CODES_TO_RETRY = [\n 'ECONNRESET',\n 'ECONNREFUSED',\n 'EPIPE',\n 'ETIMEDOUT',\n 'UND_ERR_CONNECT_TIMEOUT',\n 'UND_ERR_HEADERS_TIMEOUT',\n 'UND_ERR_HEADERS_TIMEOUT',\n 'UND_ERR_SOCKET',\n];\n\n/**\n * Optional parameter that can be passed to the client methods. It allows\n * overriding the access token or project ID, and setting various headers,\n * such as 'Content-Type'.\n */\nexport interface OystehrClientRequest {\n /**\n * The access token to use for the request. If not provided, the access token from `oystehr.init()` will be used.\n */\n accessToken?: string;\n /**\n * The project ID to use for the request. If not provided, the project ID from `oystehr.init()` will be used.\n */\n projectId?: string;\n /**\n * The value of the 'Content-Type' header to use for the request.\n */\n contentType?: string;\n /**\n * Unique identifier for this request.\n */\n requestId?: string;\n}\n\ninterface InternalClientRequest extends OystehrClientRequest {\n ifMatch?: string;\n}\n\ntype FhirData<T extends FhirResource> = T | T[] | FhirBundle<T>;\nexport type FhirFetcherResponse<T extends FhirData<FhirResource> = any> = T;\n\nexport class SDKResource {\n protected readonly config: OystehrConfig;\n constructor(config: OystehrConfig) {\n this.config = config;\n }\n\n protected request(path: string, method: string, baseUrlThunk: () => string): FetcherFunction {\n return async (params: any, request?: InternalClientRequest): Promise<FetcherResponse> => {\n const configThunk = (): OystehrConfig => this.config;\n try {\n return await fetcher(baseUrlThunk, configThunk, path, method)(params, request);\n } catch (err: any) {\n const error = err as { message: string; code: number; cause?: unknown };\n throw new OystehrSdkError({ message: error.message, code: error.code, cause: error.cause });\n }\n };\n }\n\n protected fhirRequest<T extends FhirResource = any>(path: string, method: string) {\n return async (params: any, request?: InternalClientRequest): Promise<FhirFetcherResponse<T>> => {\n try {\n const baseUrlThunk = (): string => this.config.services?.fhirApiUrl ?? defaultFhirApiUrl;\n const configThunk = (): OystehrConfig => this.config;\n // must await here to catch\n return await fetcher(baseUrlThunk, configThunk, path, method)(params, request);\n } catch (err: unknown) {\n // FHIR API error messages are JSON strings\n const fullError = err as { message: string | Record<string, any>; code: number; cause?: unknown };\n if (typeof fullError.message === 'string') {\n throw new OystehrSdkError({\n message: fullError.message,\n code: fullError.code,\n cause: fullError.cause,\n });\n }\n throw new OystehrFHIRError({\n error: fullError.message as OperationOutcome,\n code: fullError.code,\n });\n }\n };\n }\n}\n\nexport type FetcherError = { message: string; code: number };\nexport type FetcherResponse = any;\nexport type FetcherFunction = (\n params?: Record<string, any> | [any] | InternalClientRequest,\n request?: InternalClientRequest\n) => Promise<FetcherResponse>;\n\nfunction isInternalClientRequest(request: Record<string, any>): request is InternalClientRequest {\n return 'accessToken' in request;\n}\n\nfunction fetcher(\n baseUrlThunk: () => string,\n configThunk: () => OystehrConfig,\n path: string,\n methodParam: string\n): FetcherFunction {\n return async (\n params?: Record<string, unknown> | [any] | InternalClientRequest,\n request?: InternalClientRequest\n ): Promise<FetcherResponse> => {\n // this function supports multiple signatures. fetcher(baseUrl, path, method)(params, request) or fetcher(baseUrl, path, method)(request)\n // or fetcher(baseUrl, path, method)(params) or fetcher(baseUrl, path, method)(). the types for this are handled by Client<Path, Methods>\n // and this is the backend implementation behind it. the heuristic we're using is that if the first param is an object with an accessToken\n // and there is no second param, assume the first one is the request object instead\n const providedParams: Record<string, unknown> | [any] =\n !!params && !request && !Array.isArray(params) && isInternalClientRequest(params)\n ? {}\n : (params as Record<string, unknown>) ?? {};\n const requestCtx =\n !!params && !request && !Array.isArray(params) && isInternalClientRequest(params)\n ? (params as InternalClientRequest)\n : request;\n const method = methodParam.toLowerCase() as HttpMethod;\n const config = configThunk();\n const fetchImpl = config.fetch ?? fetch;\n const accessToken = requestCtx?.accessToken ?? config.accessToken;\n const projectId = requestCtx?.projectId ?? configThunk().projectId;\n let finalPath = path;\n let finalParams = providedParams;\n if (!Array.isArray(providedParams)) {\n const [subbedPath, addlParams] = subParamsInPath(path, providedParams);\n finalPath = subbedPath;\n finalParams = addlParams;\n }\n finalPath = finalPath.replace(/^\\//, ''); // remove leading slash\n const baseUrlEvaluated = baseUrlThunk();\n const fullBaseUrl = baseUrlEvaluated.endsWith('/') ? baseUrlEvaluated : baseUrlEvaluated + '/';\n const url = new URL(finalPath, fullBaseUrl);\n let body: any;\n\n if (Array.isArray(finalParams)) {\n body = JSON.stringify(finalParams);\n } else if (Object.keys(finalParams).length) {\n if (method === 'get') {\n addParamsToSearch(finalParams, url.searchParams);\n } else if (requestCtx?.contentType === 'application/x-www-form-urlencoded') {\n const search = new URLSearchParams();\n addParamsToSearch(finalParams, search);\n body = search.toString();\n } else {\n body = JSON.stringify(finalParams);\n }\n } else {\n // override for rpc call\n if (requestCtx?.contentType !== 'application/x-www-form-urlencoded' && method === 'post') {\n body = '{}';\n }\n }\n\n const headers: Record<string, string> = Object.assign(\n projectId\n ? {\n 'x-zapehr-project-id': projectId,\n 'x-oystehr-project-id': projectId,\n }\n : {},\n {\n 'content-type': requestCtx?.contentType ?? 'application/json',\n },\n accessToken ? { Authorization: `Bearer ${accessToken}` } : {},\n requestCtx?.ifMatch ? { 'If-Match': requestCtx.ifMatch } : {},\n { 'x-oystehr-request-id': requestCtx?.requestId ?? uuidv4() }\n );\n const retryConfig: ConstructedRetryConfig = {\n retries: config.retry?.retries ?? 3,\n jitter: config.retry?.jitter ?? 20,\n delay: config.retry?.delay ?? 100,\n onRetry: config.retry?.onRetry,\n // Using array instead of set because the length is too short for uniqueness to be important\n retryOn: [...(config.retry?.retryOn ?? []), ...STATUS_CODES_TO_RETRY],\n };\n retryConfig.retryOn.push(...STATUS_CODES_TO_RETRY);\n return retry(async () => {\n const response = await fetchImpl(\n new Request(url, {\n method: method.toUpperCase(),\n body,\n headers,\n })\n );\n const responseBody = response.body ? await response.text() : null;\n let responseJson: Record<string, unknown> | null;\n try {\n responseJson =\n responseBody &&\n (response.headers.get('content-type')?.includes('application/json') ||\n response.headers.get('content-type')?.includes('application/fhir+json'))\n ? JSON.parse(responseBody)\n : null;\n } catch (_err) {\n // ignore JSON.parse errors\n responseJson = null;\n }\n const isError = !response.ok || response.status >= 400;\n if (isError) {\n const errObj = {\n message:\n (responseJson?.output as Record<string, unknown>)?.message ?? // official zambda output format\n responseJson?.message ?? // normal endpoint output format\n responseJson ?? // parsable json\n responseBody ?? // raw response\n response.statusText, // fallback to status text\n code:\n (responseJson?.output as Record<string, unknown>)?.code ?? // official zambda output format\n responseJson?.code ?? // normal endpoint output format\n response.status, // fallback to status code\n response,\n };\n throw errObj;\n }\n return responseJson;\n }, retryConfig);\n };\n}\n\ntype ConstructedRetryConfig = Omit<NonNullable<OystehrConfig['retry']>, 'retryOn'> & {\n jitter: NonNullable<NonNullable<OystehrConfig['retry']>['jitter']>;\n delay: NonNullable<NonNullable<OystehrConfig['retry']>['delay']>;\n retryOn: NonNullable<NonNullable<OystehrConfig['retry']>['retryOn']>;\n};\nasync function retry<T>(work: (attempt: number) => Promise<T>, config: ConstructedRetryConfig): Promise<T> {\n let lastErr;\n for (const attempt of Array.from({ length: (config.retries ?? 0) + 1 }, (_, index) => index)) {\n try {\n return await work(attempt);\n } catch (e: any) {\n let isRetryable = false;\n if ('response' in e) {\n // error from API\n const err = e as FetcherError;\n isRetryable = config.retryOn.includes(err.code);\n // Removes response\n lastErr = { message: e.message, code: e.code };\n } else {\n lastErr = e;\n // error from fetch\n if ('code' in e && typeof e.code === 'string') {\n const err = e as { code: string };\n isRetryable = ERROR_CODES_TO_RETRY.includes(err.code);\n }\n }\n if (!isRetryable) {\n break;\n }\n const jitter = Math.floor(Math.random() * (config.jitter + 1));\n await new Promise((resolve) => setTimeout(resolve, config.delay + jitter));\n if (config.onRetry && attempt !== (config.retries ?? 0)) {\n config.onRetry(attempt + 1);\n }\n }\n }\n throw lastErr;\n}\n\n/**\n * Substitutes params in a path and returns the path with params substituted and any unused params.\n *\n * Uses the property names in the params object to determine the param to substitute in the path.\n *\n * @param path JSON API resource URI\n * @param params all params provided to the client method\n * @returns resource URI with params substituted and any unused params\n */\nfunction subParamsInPath(path: string, params: Record<string, unknown>): [string, Record<string, string>] {\n const unusedParams = { ...params };\n // capture everything of the form `{paramName}` and replace with the value of `params[paramName]`\n const subbedPath = path.replace(/\\{([^}]+)\\}/g, (_, paramName) => {\n delete unusedParams[paramName];\n // override for path params that are paths, indicated by a `+` at the end\n if (paramName.match(/^.*\\+$/)) {\n return params[paramName] + '';\n }\n // error if param value is empty\n if (!params[paramName] || params[paramName] === '') {\n throw new OystehrSdkError({ message: `Required path parameter is an empty string: ${paramName}`, code: 400 });\n }\n // encode search params\n if (params[paramName]) {\n return encodeURIComponent(params[paramName] + ''); // coerce to string\n }\n return '';\n });\n\n const unusedKeys = Object.keys(unusedParams);\n const addlParams = unusedKeys.length\n ? unusedKeys.reduce((acc, key) => ({ ...acc, [key]: unusedParams[key] }), {})\n : {};\n return [subbedPath, addlParams];\n}\n\n/**\n * Adds params to a URLSearchParams object in such a way as to preserve array values.\n * @param params params\n * @param search URLSearchParams object\n */\nexport function addParamsToSearch(params: Record<string, unknown>, search: URLSearchParams): void {\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n value.forEach((v) => search.append(key, v as string));\n continue;\n }\n search.append(key, value as string);\n }\n}\n"],"names":["OystehrSdkError","OystehrFHIRError","uuidv4"],"mappings":";;;;;AAMO,MAAM,oBAAoB,GAAG;AACpC,MAAM,iBAAiB,GAAG,6BAA6B;AACvD,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAC5D,MAAM,oBAAoB,GAAG;IAC3B,YAAY;IACZ,cAAc;IACd,OAAO;IACP,WAAW;IACX,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,gBAAgB;CACjB;MAiCY,WAAW,CAAA;AACH,IAAA,MAAM;AACzB,IAAA,WAAA,CAAY,MAAqB,EAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACtB;AAEU,IAAA,OAAO,CAAC,IAAY,EAAE,MAAc,EAAE,YAA0B,EAAA;AACxE,QAAA,OAAO,OAAO,MAAW,EAAE,OAA+B,KAA8B;YACtF,MAAM,WAAW,GAAG,MAAqB,IAAI,CAAC,MAAM;AACpD,YAAA,IAAI;AACF,gBAAA,OAAO,MAAM,OAAO,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC;YAChF;YAAE,OAAO,GAAQ,EAAE;gBACjB,MAAM,KAAK,GAAG,GAAyD;gBACvE,MAAM,IAAIA,qBAAe,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YAC7F;AACF,QAAA,CAAC;IACH;IAEU,WAAW,CAA+B,IAAY,EAAE,MAAc,EAAA;AAC9E,QAAA,OAAO,OAAO,MAAW,EAAE,OAA+B,KAAqC;AAC7F,YAAA,IAAI;AACF,gBAAA,MAAM,YAAY,GAAG,MAAc,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,IAAI,iBAAiB;gBACxF,MAAM,WAAW,GAAG,MAAqB,IAAI,CAAC,MAAM;;AAEpD,gBAAA,OAAO,MAAM,OAAO,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC;YAChF;YAAE,OAAO,GAAY,EAAE;;gBAErB,MAAM,SAAS,GAAG,GAA+E;AACjG,gBAAA,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,EAAE;oBACzC,MAAM,IAAIA,qBAAe,CAAC;wBACxB,OAAO,EAAE,SAAS,CAAC,OAAO;wBAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;wBACpB,KAAK,EAAE,SAAS,CAAC,KAAK;AACvB,qBAAA,CAAC;gBACJ;gBACA,MAAM,IAAIC,sBAAgB,CAAC;oBACzB,KAAK,EAAE,SAAS,CAAC,OAA2B;oBAC5C,IAAI,EAAE,SAAS,CAAC,IAAI;AACrB,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC;IACH;AACD;AASD,SAAS,uBAAuB,CAAC,OAA4B,EAAA;IAC3D,OAAO,aAAa,IAAI,OAAO;AACjC;AAEA,SAAS,OAAO,CACd,YAA0B,EAC1B,WAAgC,EAChC,IAAY,EACZ,WAAmB,EAAA;AAEnB,IAAA,OAAO,OACL,MAAgE,EAChE,OAA+B,KACH;;;;;QAK5B,MAAM,cAAc,GAClB,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,uBAAuB,CAAC,MAAM;AAC9E,cAAE;AACF,cAAG,MAAkC,IAAI,EAAE;QAC/C,MAAM,UAAU,GACd,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,uBAAuB,CAAC,MAAM;AAC9E,cAAG;cACD,OAAO;AACb,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAgB;AACtD,QAAA,MAAM,MAAM,GAAG,WAAW,EAAE;AAC5B,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK;QACvC,MAAM,WAAW,GAAG,UAAU,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW;QACjE,MAAM,SAAS,GAAG,UAAU,EAAE,SAAS,IAAI,WAAW,EAAE,CAAC,SAAS;QAClE,IAAI,SAAS,GAAG,IAAI;QACpB,IAAI,WAAW,GAAG,cAAc;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAClC,YAAA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,eAAe,CAAC,IAAI,EAAE,cAAc,CAAC;YACtE,SAAS,GAAG,UAAU;YACtB,WAAW,GAAG,UAAU;QAC1B;QACA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACzC,QAAA,MAAM,gBAAgB,GAAG,YAAY,EAAE;AACvC,QAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,GAAG;QAC9F,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC;AAC3C,QAAA,IAAI,IAAS;AAEb,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAC9B,YAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QACpC;aAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;AAC1C,YAAA,IAAI,MAAM,KAAK,KAAK,EAAE;AACpB,gBAAA,iBAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC;YAClD;AAAO,iBAAA,IAAI,UAAU,EAAE,WAAW,KAAK,mCAAmC,EAAE;AAC1E,gBAAA,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE;AACpC,gBAAA,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC;AACtC,gBAAA,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE;YAC1B;iBAAO;AACL,gBAAA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;YACpC;QACF;aAAO;;YAEL,IAAI,UAAU,EAAE,WAAW,KAAK,mCAAmC,IAAI,MAAM,KAAK,MAAM,EAAE;gBACxF,IAAI,GAAG,IAAI;YACb;QACF;AAEA,QAAA,MAAM,OAAO,GAA2B,MAAM,CAAC,MAAM,CACnD;AACE,cAAE;AACE,gBAAA,qBAAqB,EAAE,SAAS;AAChC,gBAAA,sBAAsB,EAAE,SAAS;AAClC;cACD,EAAE,EACN;AACE,YAAA,cAAc,EAAE,UAAU,EAAE,WAAW,IAAI,kBAAkB;SAC9D,EACD,WAAW,GAAG,EAAE,aAAa,EAAE,UAAU,WAAW,CAAA,CAAE,EAAE,GAAG,EAAE,EAC7D,UAAU,EAAE,OAAO,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,EAC7D,EAAE,sBAAsB,EAAE,UAAU,EAAE,SAAS,IAAIC,OAAM,EAAE,EAAE,CAC9D;AACD,QAAA,MAAM,WAAW,GAA2B;AAC1C,YAAA,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC;AACnC,YAAA,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE;AAClC,YAAA,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,GAAG;AACjC,YAAA,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO;;AAE9B,YAAA,OAAO,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,qBAAqB,CAAC;SACtE;QACD,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC;AAClD,QAAA,OAAO,KAAK,CAAC,YAAW;YACtB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAC9B,IAAI,OAAO,CAAC,GAAG,EAAE;AACf,gBAAA,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;gBAC5B,IAAI;gBACJ,OAAO;AACR,aAAA,CAAC,CACH;AACD,YAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI;AACjE,YAAA,IAAI,YAA4C;AAChD,YAAA,IAAI;gBACF,YAAY;oBACV,YAAY;AACZ,yBAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC;AACjE,4BAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC;AACvE,0BAAE,IAAI,CAAC,KAAK,CAAC,YAAY;0BACvB,IAAI;YACZ;YAAE,OAAO,IAAI,EAAE;;gBAEb,YAAY,GAAG,IAAI;YACrB;AACA,YAAA,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG;YACtD,IAAI,OAAO,EAAE;AACX,gBAAA,MAAM,MAAM,GAAG;AACb,oBAAA,OAAO,EACJ,YAAY,EAAE,MAAkC,EAAE,OAAO;wBAC1D,YAAY,EAAE,OAAO;AACrB,wBAAA,YAAY;AACZ,wBAAA,YAAY;wBACZ,QAAQ,CAAC,UAAU;AACrB,oBAAA,IAAI,EACD,YAAY,EAAE,MAAkC,EAAE,IAAI;wBACvD,YAAY,EAAE,IAAI;wBAClB,QAAQ,CAAC,MAAM;oBACjB,QAAQ;iBACT;AACD,gBAAA,MAAM,MAAM;YACd;AACA,YAAA,OAAO,YAAY;QACrB,CAAC,EAAE,WAAW,CAAC;AACjB,IAAA,CAAC;AACH;AAOA,eAAe,KAAK,CAAI,IAAqC,EAAE,MAA8B,EAAA;AAC3F,IAAA,IAAI,OAAO;AACX,IAAA,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,EAAE;AAC5F,QAAA,IAAI;AACF,YAAA,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;QAC5B;QAAE,OAAO,CAAM,EAAE;YACf,IAAI,WAAW,GAAG,KAAK;AACvB,YAAA,IAAI,UAAU,IAAI,CAAC,EAAE;;gBAEnB,MAAM,GAAG,GAAG,CAAiB;gBAC7B,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;;AAE/C,gBAAA,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAChD;iBAAO;gBACL,OAAO,GAAG,CAAC;;gBAEX,IAAI,MAAM,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;oBAC7C,MAAM,GAAG,GAAG,CAAqB;oBACjC,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBACvD;YACF;YACA,IAAI,CAAC,WAAW,EAAE;gBAChB;YACF;AACA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9D,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;AAC1E,YAAA,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE;AACvD,gBAAA,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;YAC7B;QACF;IACF;AACA,IAAA,MAAM,OAAO;AACf;AAEA;;;;;;;;AAQG;AACH,SAAS,eAAe,CAAC,IAAY,EAAE,MAA+B,EAAA;AACpE,IAAA,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,EAAE;;AAElC,IAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,SAAS,KAAI;AAC/D,QAAA,OAAO,YAAY,CAAC,SAAS,CAAC;;AAE9B,QAAA,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC7B,YAAA,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;QAC/B;;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE;AAClD,YAAA,MAAM,IAAIF,qBAAe,CAAC,EAAE,OAAO,EAAE,CAAA,4CAAA,EAA+C,SAAS,CAAA,CAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/G;;AAEA,QAAA,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE;YACrB,OAAO,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACpD;AACA,QAAA,OAAO,EAAE;AACX,IAAA,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;AAC5C,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC;AAC5B,UAAE,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;UAC1E,EAAE;AACN,IAAA,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC;AACjC;AAEA;;;;AAIG;AACG,SAAU,iBAAiB,CAAC,MAA+B,EAAE,MAAuB,EAAA;AACxF,IAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACjD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAW,CAAC,CAAC;YACrD;QACF;AACA,QAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAe,CAAC;IACrC;AACF;;;;;;"}
|
|
1
|
+
{"version":3,"file":"client.cjs","sources":["../../../src/client/client.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid';\nimport { OystehrConfig } from '../config';\nimport { OystehrFHIRError, OystehrSdkError } from '../errors';\nimport { FhirBundle, FhirResource, OperationOutcome } from '../resources/types';\n\ntype HttpMethod = 'get' | 'put' | 'post' | 'delete' | 'options' | 'head' | 'patch' | 'trace';\nexport const defaultProjectApiUrl = 'https://project-api.zapehr.com/v1';\nconst defaultFhirApiUrl = 'https://fhir-api.zapehr.com';\nconst STATUS_CODES_TO_RETRY = [408, 429, 500, 502, 503, 504];\nconst ERROR_CODES_TO_RETRY = [\n 'ECONNRESET',\n 'ECONNREFUSED',\n 'EPIPE',\n 'ETIMEDOUT',\n 'UND_ERR_CONNECT_TIMEOUT',\n 'UND_ERR_HEADERS_TIMEOUT',\n 'UND_ERR_HEADERS_TIMEOUT',\n 'UND_ERR_SOCKET',\n];\n\n/**\n * Optional parameter that can be passed to the client methods. It allows\n * overriding the access token or project ID, and setting various headers,\n * such as 'Content-Type'.\n */\nexport interface OystehrClientRequest {\n /**\n * The access token to use for the request. If not provided, the access token from `oystehr.init()` will be used.\n */\n accessToken?: string;\n /**\n * The project ID to use for the request. If not provided, the project ID from `oystehr.init()` will be used.\n */\n projectId?: string;\n /**\n * The value of the 'Content-Type' header to use for the request.\n */\n contentType?: string;\n /**\n * Unique identifier for this request.\n */\n requestId?: string;\n}\n\ninterface InternalClientRequest extends OystehrClientRequest {\n ifMatch?: string;\n}\n\ntype FhirData<T extends FhirResource> = T | T[] | FhirBundle<T>;\nexport type FhirFetcherResponse<T extends FhirData<FhirResource> = any> = T;\n\nexport class SDKResource {\n protected readonly config: OystehrConfig;\n constructor(config: OystehrConfig) {\n this.config = config;\n }\n\n protected request(path: string, method: string, baseUrlThunk: () => string): FetcherFunction {\n return async (params: any, request?: InternalClientRequest): Promise<FetcherResponse> => {\n const configThunk = (): OystehrConfig => this.config;\n try {\n return await fetcher(baseUrlThunk, configThunk, path, method)(params, request);\n } catch (err: any) {\n const error = err as { message: string; code: number; cause?: unknown };\n throw new OystehrSdkError({ message: error.message, code: error.code, cause: error.cause });\n }\n };\n }\n\n protected fhirRequest<T extends FhirResource = any>(path: string, method: string) {\n return async (params: any, request?: InternalClientRequest): Promise<FhirFetcherResponse<T>> => {\n try {\n const baseUrlThunk = (): string => this.config.services?.fhirApiUrl ?? defaultFhirApiUrl;\n const configThunk = (): OystehrConfig => this.config;\n // must await here to catch\n return await fetcher(baseUrlThunk, configThunk, path, method)(params, request);\n } catch (err: unknown) {\n // FHIR API error messages are JSON strings\n const fullError = err as { message: string | Record<string, any>; code: number; cause?: unknown };\n if (typeof fullError.message === 'string') {\n throw new OystehrSdkError({\n message: fullError.message,\n code: fullError.code,\n cause: fullError.cause,\n });\n }\n throw new OystehrFHIRError({\n error: fullError.message as OperationOutcome,\n code: fullError.code,\n });\n }\n };\n }\n}\n\nexport type FetcherError = { message: string; code: number };\nexport type FetcherResponse = any;\nexport type FetcherFunction = (\n params?: Record<string, any> | [any] | InternalClientRequest,\n request?: InternalClientRequest\n) => Promise<FetcherResponse>;\n\nfunction isInternalClientRequest(request: Record<string, any>): request is InternalClientRequest {\n return 'accessToken' in request;\n}\n\n/**\n * Parse XML response in format <response><status>...</status><output>...</output></response>\n */\nfunction parseXmlResponse(xmlString: string): Record<string, unknown> | null {\n try {\n // Extract status\n const statusMatch = xmlString.match(/<status>(\\d+)<\\/status>/);\n const status = statusMatch ? parseInt(statusMatch[1], 10) : null;\n\n // Extract output - everything between <output> and </output>\n const outputMatch = xmlString.match(/<output>([\\s\\S]*?)<\\/output>/);\n const output = outputMatch ? outputMatch[1] : null;\n\n if (status === null || output === null) {\n return null;\n }\n\n return { status, output };\n } catch (_err) {\n return null;\n }\n}\n\nfunction fetcher(\n baseUrlThunk: () => string,\n configThunk: () => OystehrConfig,\n path: string,\n methodParam: string\n): FetcherFunction {\n return async (\n params?: Record<string, unknown> | [any] | InternalClientRequest,\n request?: InternalClientRequest\n ): Promise<FetcherResponse> => {\n // this function supports multiple signatures. fetcher(baseUrl, path, method)(params, request) or fetcher(baseUrl, path, method)(request)\n // or fetcher(baseUrl, path, method)(params) or fetcher(baseUrl, path, method)(). the types for this are handled by Client<Path, Methods>\n // and this is the backend implementation behind it. the heuristic we're using is that if the first param is an object with an accessToken\n // and there is no second param, assume the first one is the request object instead\n const providedParams: Record<string, unknown> | [any] =\n !!params && !request && !Array.isArray(params) && isInternalClientRequest(params)\n ? {}\n : (params as Record<string, unknown>) ?? {};\n const requestCtx =\n !!params && !request && !Array.isArray(params) && isInternalClientRequest(params)\n ? (params as InternalClientRequest)\n : request;\n const method = methodParam.toLowerCase() as HttpMethod;\n const config = configThunk();\n const fetchImpl = config.fetch ?? fetch;\n const accessToken = requestCtx?.accessToken ?? config.accessToken;\n const projectId = requestCtx?.projectId ?? configThunk().projectId;\n let finalPath = path;\n let finalParams = providedParams;\n if (!Array.isArray(providedParams)) {\n const [subbedPath, addlParams] = subParamsInPath(path, providedParams);\n finalPath = subbedPath;\n finalParams = addlParams;\n }\n finalPath = finalPath.replace(/^\\//, ''); // remove leading slash\n const baseUrlEvaluated = baseUrlThunk();\n const fullBaseUrl = baseUrlEvaluated.endsWith('/') ? baseUrlEvaluated : baseUrlEvaluated + '/';\n const url = new URL(finalPath, fullBaseUrl);\n let body: any;\n\n if (Array.isArray(finalParams)) {\n body = JSON.stringify(finalParams);\n } else if (Object.keys(finalParams).length) {\n if (method === 'get') {\n addParamsToSearch(finalParams, url.searchParams);\n } else if (requestCtx?.contentType === 'application/x-www-form-urlencoded') {\n const search = new URLSearchParams();\n addParamsToSearch(finalParams, search);\n body = search.toString();\n } else {\n body = JSON.stringify(finalParams);\n }\n } else {\n // override for rpc call\n if (requestCtx?.contentType !== 'application/x-www-form-urlencoded' && method === 'post') {\n body = '{}';\n }\n }\n\n const headers: Record<string, string> = Object.assign(\n projectId\n ? {\n 'x-zapehr-project-id': projectId,\n 'x-oystehr-project-id': projectId,\n }\n : {},\n {\n 'content-type': requestCtx?.contentType ?? 'application/json',\n },\n accessToken ? { Authorization: `Bearer ${accessToken}` } : {},\n requestCtx?.ifMatch ? { 'If-Match': requestCtx.ifMatch } : {},\n { 'x-oystehr-request-id': requestCtx?.requestId ?? uuidv4() }\n );\n const retryConfig: ConstructedRetryConfig = {\n retries: config.retry?.retries ?? 3,\n jitter: config.retry?.jitter ?? 20,\n delay: config.retry?.delay ?? 100,\n onRetry: config.retry?.onRetry,\n // Using array instead of set because the length is too short for uniqueness to be important\n retryOn: [...(config.retry?.retryOn ?? []), ...STATUS_CODES_TO_RETRY],\n };\n retryConfig.retryOn.push(...STATUS_CODES_TO_RETRY);\n return retry(async () => {\n const response = await fetchImpl(\n new Request(url, {\n method: method.toUpperCase(),\n body,\n headers,\n })\n );\n const responseBody = response.body ? await response.text() : null;\n let responseJson: Record<string, unknown> | null;\n const contentType = response.headers.get('content-type');\n try {\n if (\n responseBody &&\n (contentType?.includes('application/json') || contentType?.includes('application/fhir+json'))\n ) {\n responseJson = JSON.parse(responseBody);\n } else if (responseBody && (contentType?.includes('application/xml') || contentType?.includes('text/xml'))) {\n // Parse XML response into { status, output } structure\n responseJson = parseXmlResponse(responseBody);\n } else {\n responseJson = null;\n }\n } catch (_err) {\n // ignore JSON.parse errors\n responseJson = null;\n }\n const isError = !response.ok || response.status >= 400;\n if (isError) {\n const errObj = {\n message:\n (typeof responseJson?.output === 'string'\n ? responseJson.output // XML error case - output is XML string\n : (responseJson?.output as Record<string, unknown>)?.message) ?? // official zambda output format (JSON)\n responseJson?.message ?? // normal endpoint output format\n responseJson ?? // parsable json\n responseBody ?? // raw response\n response.statusText, // fallback to status text\n code:\n (responseJson?.output as Record<string, unknown>)?.code ?? // official zambda output format\n responseJson?.code ?? // normal endpoint output format\n response.status, // fallback to status code\n response,\n };\n throw errObj;\n }\n return responseJson;\n }, retryConfig);\n };\n}\n\ntype ConstructedRetryConfig = Omit<NonNullable<OystehrConfig['retry']>, 'retryOn'> & {\n jitter: NonNullable<NonNullable<OystehrConfig['retry']>['jitter']>;\n delay: NonNullable<NonNullable<OystehrConfig['retry']>['delay']>;\n retryOn: NonNullable<NonNullable<OystehrConfig['retry']>['retryOn']>;\n};\nasync function retry<T>(work: (attempt: number) => Promise<T>, config: ConstructedRetryConfig): Promise<T> {\n let lastErr;\n for (const attempt of Array.from({ length: (config.retries ?? 0) + 1 }, (_, index) => index)) {\n try {\n return await work(attempt);\n } catch (e: any) {\n let isRetryable = false;\n if ('response' in e) {\n // error from API\n const err = e as FetcherError;\n isRetryable = config.retryOn.includes(err.code);\n // Removes response\n lastErr = { message: e.message, code: e.code };\n } else {\n lastErr = e;\n // error from fetch\n if ('code' in e && typeof e.code === 'string') {\n const err = e as { code: string };\n isRetryable = ERROR_CODES_TO_RETRY.includes(err.code);\n }\n }\n if (!isRetryable) {\n break;\n }\n const jitter = Math.floor(Math.random() * (config.jitter + 1));\n await new Promise((resolve) => setTimeout(resolve, config.delay + jitter));\n if (config.onRetry && attempt !== (config.retries ?? 0)) {\n config.onRetry(attempt + 1);\n }\n }\n }\n throw lastErr;\n}\n\n/**\n * Substitutes params in a path and returns the path with params substituted and any unused params.\n *\n * Uses the property names in the params object to determine the param to substitute in the path.\n *\n * @param path JSON API resource URI\n * @param params all params provided to the client method\n * @returns resource URI with params substituted and any unused params\n */\nfunction subParamsInPath(path: string, params: Record<string, unknown>): [string, Record<string, string>] {\n const unusedParams = { ...params };\n // capture everything of the form `{paramName}` and replace with the value of `params[paramName]`\n const subbedPath = path.replace(/\\{([^}]+)\\}/g, (_, paramName) => {\n delete unusedParams[paramName];\n // override for path params that are paths, indicated by a `+` at the end\n if (paramName.match(/^.*\\+$/)) {\n return params[paramName] + '';\n }\n // error if param value is empty\n if (!params[paramName] || params[paramName] === '') {\n throw new OystehrSdkError({ message: `Required path parameter is an empty string: ${paramName}`, code: 400 });\n }\n // encode search params\n if (params[paramName]) {\n return encodeURIComponent(params[paramName] + ''); // coerce to string\n }\n return '';\n });\n\n const unusedKeys = Object.keys(unusedParams);\n const addlParams = unusedKeys.length\n ? unusedKeys.reduce((acc, key) => ({ ...acc, [key]: unusedParams[key] }), {})\n : {};\n return [subbedPath, addlParams];\n}\n\n/**\n * Adds params to a URLSearchParams object in such a way as to preserve array values.\n * @param params params\n * @param search URLSearchParams object\n */\nexport function addParamsToSearch(params: Record<string, unknown>, search: URLSearchParams): void {\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n value.forEach((v) => search.append(key, v as string));\n continue;\n }\n search.append(key, value as string);\n }\n}\n"],"names":["OystehrSdkError","OystehrFHIRError","uuidv4"],"mappings":"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"}
|
package/dist/cjs/index.min.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor({message:e,code:i,cause:s}){super(e,{cause:s}),Object.setPrototypeOf(this,t.prototype),this.code=i,this.name="OystehrSdkError"}toString(){return`${this.name}: ${this.message} (code: ${this.code})`}toJSON(){return{name:this.name,message:this.message,code:this.code,cause:this.cause}}}function e(t){var e;const i=[];for(const s of null!==(e=t.issue)&&void 0!==e?e:[])s.details&&s.details.text&&i.push(s.details.text);return i.length||i.push("Unknown FHIR error"),i.join(",")}class i extends t{constructor({error:t,code:s}){super({message:e(t),code:s}),Object.setPrototypeOf(this,i.prototype),this.cause=t,this.name="OystehrFHIRError"}toJSON(){return{name:this.name,message:this.message,code:this.code,cause:this.cause}}}function s(t,e,i,s){return new(i||(i=Promise))((function(r,n){function o(t){try{c(s.next(t))}catch(e){n(e)}}function u(t){try{c(s.throw(t))}catch(e){n(e)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,u)}c((s=s.apply(t,e||[])).next())}))}function r(t,e,i,s){if("a"===i&&!s)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?s:"a"===i?s.call(t):s?s.value:e.get(t)}"function"==typeof SuppressedError&&SuppressedError;const n=[];for(let ee=0;ee<256;++ee)n.push((ee+256).toString(16).slice(1));let o;const u=new Uint8Array(16);var c={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function h(t,e,i){if(c.randomUUID&&!t)return c.randomUUID();const s=(t=t||{}).random??t.rng?.()??function(){if(!o){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");o=crypto.getRandomValues.bind(crypto)}return o(u)}();if(s.length<16)throw new Error("Random bytes length must be >= 16");return s[6]=15&s[6]|64,s[8]=63&s[8]|128,function(t,e=0){return(n[t[e+0]]+n[t[e+1]]+n[t[e+2]]+n[t[e+3]]+"-"+n[t[e+4]]+n[t[e+5]]+"-"+n[t[e+6]]+n[t[e+7]]+"-"+n[t[e+8]]+n[t[e+9]]+"-"+n[t[e+10]]+n[t[e+11]]+n[t[e+12]]+n[t[e+13]]+n[t[e+14]]+n[t[e+15]]).toLowerCase()}(s)}const a=[408,429,500,502,503,504],d=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_SOCKET"];class l{constructor(t){this.config=t}request(e,i,r){return(n,o)=>s(this,void 0,void 0,(function*(){const s=()=>this.config;try{return yield m(r,s,e,i)(n,o)}catch(u){const e=u;throw new t({message:e.message,code:e.code,cause:e.cause})}}))}fhirRequest(e,r){return(n,o)=>s(this,void 0,void 0,(function*(){try{const t=()=>{var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.fhirApiUrl)&&void 0!==e?e:"https://fhir-api.zapehr.com"},i=()=>this.config;return yield m(t,i,e,r)(n,o)}catch(s){const e=s;if("string"==typeof e.message)throw new t({message:e.message,code:e.code,cause:e.cause});throw new i({error:e.message,code:e.code})}}))}}function p(t){return"accessToken"in t}function m(e,i,r,n){return(o,u)=>s(this,void 0,void 0,(function*(){var c,l,m,f,g,b,y,q,j,w,U,k,S,E,O;const T=o&&!u&&!Array.isArray(o)&&p(o)?{}:null!==(c=o)&&void 0!==c?c:{},x=o&&!u&&!Array.isArray(o)&&p(o)?o:u,z=n.toLowerCase(),A=i(),I=null!==(l=A.fetch)&&void 0!==l?l:fetch,P=null!==(m=null==x?void 0:x.accessToken)&&void 0!==m?m:A.accessToken,R=null!==(f=null==x?void 0:x.projectId)&&void 0!==f?f:i().projectId;let N=r,$=T;if(!Array.isArray(T)){const[e,i]=function(e,i){const s=Object.assign({},i),r=e.replace(/\{([^}]+)\}/g,((e,r)=>{if(delete s[r],r.match(/^.*\+$/))return i[r]+"";if(!i[r]||""===i[r])throw new t({message:`Required path parameter is an empty string: ${r}`,code:400});return i[r]?encodeURIComponent(i[r]+""):""})),n=Object.keys(s);return[r,n.length?n.reduce(((t,e)=>Object.assign(Object.assign({},t),{[e]:s[e]})),{}):{}]}(r,T);N=e,$=i}N=N.replace(/^\//,"");const C=e(),_=C.endsWith("/")?C:C+"/",W=new URL(N,_);let M;if(Array.isArray($))M=JSON.stringify($);else if(Object.keys($).length)if("get"===z)v($,W.searchParams);else if("application/x-www-form-urlencoded"===(null==x?void 0:x.contentType)){const t=new URLSearchParams;v($,t),M=t.toString()}else M=JSON.stringify($);else"application/x-www-form-urlencoded"!==(null==x?void 0:x.contentType)&&"post"===z&&(M="{}");const L=Object.assign(R?{"x-zapehr-project-id":R,"x-oystehr-project-id":R}:{},{"content-type":null!==(g=null==x?void 0:x.contentType)&&void 0!==g?g:"application/json"},P?{Authorization:`Bearer ${P}`}:{},(null==x?void 0:x.ifMatch)?{"If-Match":x.ifMatch}:{},{"x-oystehr-request-id":null!==(b=null==x?void 0:x.requestId)&&void 0!==b?b:h()}),D={retries:null!==(q=null===(y=A.retry)||void 0===y?void 0:y.retries)&&void 0!==q?q:3,jitter:null!==(w=null===(j=A.retry)||void 0===j?void 0:j.jitter)&&void 0!==w?w:20,delay:null!==(k=null===(U=A.retry)||void 0===U?void 0:U.delay)&&void 0!==k?k:100,onRetry:null===(S=A.retry)||void 0===S?void 0:S.onRetry,retryOn:[...null!==(O=null===(E=A.retry)||void 0===E?void 0:E.retryOn)&&void 0!==O?O:[],...a]};return D.retryOn.push(...a),function(t,e){return s(this,void 0,void 0,(function*(){var i,s;let r;for(const o of Array.from({length:(null!==(i=e.retries)&&void 0!==i?i:0)+1},((t,e)=>e)))try{return yield t()}catch(n){let t=!1;if("response"in n){const i=n;t=e.retryOn.includes(i.code),r={message:n.message,code:n.code}}else if(r=n,"code"in n&&"string"==typeof n.code){const e=n;t=d.includes(e.code)}if(!t)break;const i=Math.floor(Math.random()*(e.jitter+1));yield new Promise((t=>setTimeout(t,e.delay+i))),e.onRetry&&o!==(null!==(s=e.retries)&&void 0!==s?s:0)&&e.onRetry(o+1)}throw r}))}((()=>s(this,void 0,void 0,(function*(){var t,e,i,s,r,n,o,u,c,h;const a=yield I(new Request(W,{method:z.toUpperCase(),body:M,headers:L})),d=a.body?yield a.text():null;let l;try{l=d&&((null===(t=a.headers.get("content-type"))||void 0===t?void 0:t.includes("application/json"))||(null===(e=a.headers.get("content-type"))||void 0===e?void 0:e.includes("application/fhir+json")))?JSON.parse(d):null}catch(p){l=null}if(!a.ok||a.status>=400)throw{message:null!==(o=null!==(n=null!==(r=null!==(s=null===(i=null==l?void 0:l.output)||void 0===i?void 0:i.message)&&void 0!==s?s:null==l?void 0:l.message)&&void 0!==r?r:l)&&void 0!==n?n:d)&&void 0!==o?o:a.statusText,code:null!==(h=null!==(c=null===(u=null==l?void 0:l.output)||void 0===u?void 0:u.code)&&void 0!==c?c:null==l?void 0:l.code)&&void 0!==h?h:a.status,response:a};return l}))),D)}))}function v(t,e){for(const[i,s]of Object.entries(t))Array.isArray(s)?s.forEach((t=>e.append(i,t))):e.append(i,s)}var f,g,b,y;class q extends l{constructor(t){super(t),f.add(this)}list(t){return this.request("/application","get",r(this,f,"m",g).bind(this))(t)}create(t,e){return this.request("/application","post",r(this,f,"m",g).bind(this))(t,e)}get(t,e){return this.request("/application/{id}","get",r(this,f,"m",g).bind(this))(t,e)}update(t,e){return this.request("/application/{id}","patch",r(this,f,"m",g).bind(this))(t,e)}delete(t,e){return this.request("/application/{id}","delete",r(this,f,"m",g).bind(this))(t,e)}rotateSecret(t,e){return this.request("/application/{id}/rotate-secret","post",r(this,f,"m",g).bind(this))(t,e)}revokeRefreshToken(t,e){return this.request("/application/{id}/revoke-refresh-token","post",r(this,f,"m",g).bind(this))(t,e)}revokeAccessToken(t,e){return this.request("/application/{id}/revoke-access-token","post",r(this,f,"m",g).bind(this))(t,e)}}f=new WeakSet,g=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class j extends l{constructor(t){super(t),b.add(this)}issue(t,e){return this.request("/payment/charge/issue","post",r(this,b,"m",y).bind(this))(t,e)}status(t,e){return this.request("/payment/charge/status","post",r(this,b,"m",y).bind(this))(t,e)}}b=new WeakSet,y=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};const w="https://extensions.fhir.zapehr.com/encounter-virtual-service-pre-release",U="addressString";function k(t){var e,i,s;if(function(t){return Object.hasOwn(t,"virtualService")}(t)){const i=null===(e=t.virtualService)||void 0===e?void 0:e.find((t=>{var e;return"https://fhir.zapehr.com/virtual-service-type"===(null===(e=t.channelType)||void 0===e?void 0:e.system)}));return null==i?void 0:i.addressString}if(!t.extension)return;const r=t.extension.find((t=>t.url===w));return(null==r?void 0:r.extension)?null===(s=null===(i=r.extension)||void 0===i?void 0:i.find((t=>t.url===U)))||void 0===s?void 0:s.valueString:void 0}var S,E,O,T,x,z,A,I;class P extends l{constructor(t){super(t),S.add(this),this.ENCOUNTER_VS_EXTENSION_URL=w,this.ENCOUNTER_VS_EXTENSION_RELATIVE_URL=U,this.getConversationIdFromEncounter=k}create(t,e){return this.request("/messaging/conversation","post",r(this,S,"m",E).bind(this))(t,e)}getToken(t){return this.request("/messaging/conversation/token","get",r(this,S,"m",E).bind(this))(t)}addParticipant(t,e){return this.request("/messaging/conversation/{conversationId}/participant","post",r(this,S,"m",E).bind(this))(t,e)}removeParticipant(t,e){return this.request("/messaging/conversation/{conversationId}/participant","delete",r(this,S,"m",E).bind(this))(t,e)}message(t,e){return this.request("/messaging/conversation/{conversationId}/message","post",r(this,S,"m",E).bind(this))(t,e)}}S=new WeakSet,E=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class R extends l{constructor(t){super(t),O.add(this)}get(t,e){return this.request("/developer/{id}","get",r(this,O,"m",T).bind(this))(t,e)}update(t,e){return this.request("/developer/{id}","patch",r(this,O,"m",T).bind(this))(t,e)}delete(t,e){return this.request("/developer/{id}","delete",r(this,O,"m",T).bind(this))(t,e)}invite(t,e){return this.request("/developer/invite","post",r(this,O,"m",T).bind(this))(t,e)}list(t){return this.request("/developer","get",r(this,O,"m",T).bind(this))(t)}listV2(t,e){return this.request("/developer/v2/list","get",r(this,O,"m",T).bind(this))(t,e)}}O=new WeakSet,T=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class N extends l{constructor(t){super(t),x.add(this)}searchAllergens(t,e){return this.request("/allergen","get",r(this,x,"m",z).bind(this))(t,e)}searchMedications(t,e){return this.request("/medication","get",r(this,x,"m",z).bind(this))(t,e)}getConfiguration(t){return this.request("/config","get",r(this,x,"m",z).bind(this))(t)}checkAllergyInteractions(t,e){return this.request("/patient/{patientId}/interactions/allergy","get",r(this,x,"m",z).bind(this))(t,e)}checkMedicationInteractions(t,e){return this.request("/patient/{patientId}/interactions/medication","get",r(this,x,"m",z).bind(this))(t,e)}checkPrecheckInteractions(t,e){return this.request("/patient/{patientId}/interactions/precheck/{drugId}","get",r(this,x,"m",z).bind(this))(t,e)}addPatientPharmacy(t,e){return this.request("/patient/{patientId}/pharmacies","post",r(this,x,"m",z).bind(this))(t,e)}cancelPrescription(t,e){return this.request("/patient/{patientId}/prescriptions/{medicationRequestId}","delete",r(this,x,"m",z).bind(this))(t,e)}syncPatient(t,e){return this.request("/patient/{patientId}/sync","post",r(this,x,"m",z).bind(this))(t,e)}searchPharmacies(t,e){return this.request("/pharmacy","get",r(this,x,"m",z).bind(this))(t,e)}connectPractitioner(t,e){return this.request("/practitioner/connect","get",r(this,x,"m",z).bind(this))(t,e)}checkPractitionerEnrollment(t,e){return this.request("/practitioner/{practitionerId}","get",r(this,x,"m",z).bind(this))(t,e)}enrollPractitioner(t,e){return this.request("/practitioner/{practitionerId}","post",r(this,x,"m",z).bind(this))(t,e)}unenrollPractitioner(t,e){return this.request("/practitioner/{practitionerId}","delete",r(this,x,"m",z).bind(this))(t,e)}}x=new WeakSet,z=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.erxApiUrl)&&void 0!==e?e:"https://erx-api.zapehr.com/v3"};class $ extends l{constructor(t){super(t),A.add(this)}offboard(t){return this.request("/offboard","post",r(this,A,"m",I).bind(this))(t)}onboard(t){return this.request("/onboard","post",r(this,A,"m",I).bind(this))(t)}getConfiguration(t){return this.request("/config","get",r(this,A,"m",I).bind(this))(t)}send(t,e){return this.request("/send","post",r(this,A,"m",I).bind(this))(t,e)}}A=new WeakSet,I=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.faxApiUrl)&&void 0!==e?e:"https://fax-api.zapehr.com/v1"};const C=65535;function _(t,e){return s(this,void 0,void 0,(function*(){const{resourceType:i,params:s}=t;let r;s&&(r=Object.entries(s).reduce(((t,[e,i])=>(t[i.name]||(t[i.name]=[]),t[i.name].push(i.value),t)),{}));const n=yield this.fhirRequest(`/${i}/_search`,"POST")(r,Object.assign(Object.assign({},e),{contentType:"application/x-www-form-urlencoded"}));return Object.assign(Object.assign({},n),{entry:n.entry,unbundle:function(){var t,e;return null!==(e=null===(t=this.entry)||void 0===t?void 0:t.map((t=>t.resource)).filter((t=>void 0!==t)))&&void 0!==e?e:[]}})}))}function W(t,e){return s(this,void 0,void 0,(function*(){const{resourceType:i}=t;return this.fhirRequest(`/${i}`,"POST")(t,e)}))}function M(t,e){return s(this,arguments,void 0,(function*({resourceType:t,id:e},i){return this.fhirRequest(`/${t}/${e}`,"GET")({},i)}))}function L(t,e){return s(this,void 0,void 0,(function*(){const{id:i,resourceType:s}=t;return this.fhirRequest(`/${s}/${i}`,"PUT")(t,Object.assign(Object.assign({},e),{ifMatch:(null==e?void 0:e.optimisticLockingVersionId)?`W/"${e.optimisticLockingVersionId}"`:void 0}))}))}function D(t,e){return s(this,arguments,void 0,(function*({resourceType:t,id:e,operations:i},s){return this.fhirRequest(`/${t}/${e}`,"PATCH")(i,Object.assign(Object.assign({},s),{contentType:"application/json-patch+json",ifMatch:(null==s?void 0:s.optimisticLockingVersionId)?`W/"${s.optimisticLockingVersionId}"`:void 0}))}))}function V(t,e){return s(this,arguments,void 0,(function*({resourceType:t,id:e},i){return this.fhirRequest(`/${t}/${e}`,"DELETE")({},i)}))}function G(t,e){return s(this,arguments,void 0,(function*({resourceType:t,id:e,versionId:i,count:s,offset:r},n){return i?this.fhirRequest(`/${t}/${e}/_history/${i}`,"GET")({},n):s?this.fhirRequest(`/${t}/${e}/_history?_total=accurate&_count=${s}\n ${r?`&_offset=${r}`:""}`,"GET")({},n):this.fhirRequest(`/${t}/${e}/_history?_total=accurate`,"GET")({},n)}))}function F(t){const{method:e,url:i}=t,s={request:{method:e,url:i}};if(i.split("?").length>1){const[t,e]=i.split("?"),r=e.split("&").map((t=>{const[e,i]=t.split("=");return{name:e,value:i}})).reduce(((t,{name:e,value:i})=>e?(t[e]||(t[e]=[]),t[e].push(i),t):t),{}),n=new URLSearchParams;v(r,n),s.request.url=`${t}?${n.toString()}`}if(["GET","DELETE","HEAD"].includes(e))return s;if("PUT"===e){const{resource:e}=t;return{request:Object.assign(Object.assign({},s.request),{ifMatch:t.ifMatch}),resource:e}}if("PATCH"===e){if("resource"in t)return{request:Object.assign(Object.assign({},s.request),{ifMatch:t.ifMatch}),resource:t.resource};const e=function(t){const e=(new globalThis.TextEncoder).encode(t);let i="";for(let s=0;s<e.length;s+=C){const t=e.subarray(s,s+C);i+=globalThis.btoa(String.fromCodePoint.apply(void 0,t))}return i}(JSON.stringify(t.operations));return Object.assign(Object.assign({},s),{resource:{resourceType:"Binary",contentType:"application/json-patch+json",data:e}})}if("POST"===e){const{resource:e,fullUrl:i}=t;return Object.assign(Object.assign({},s),{resource:e,fullUrl:i})}throw new Error("Unrecognized method")}function H(t){return function(e,i){return s(this,void 0,void 0,(function*(){return this.fhirRequest("/","POST")({resourceType:"Bundle",type:t,entry:e.requests.map(F)},i)}))}}const B=H("batch"),J=H("transaction");function X(t,e){const i=[];if(t.line&&i.push(...t.line),t.city||t.state||t.postalCode){const e=[];t.city&&e.push(t.city),t.state&&e.push(t.state),t.postalCode&&e.push(t.postalCode),i.push(e.join(", "))}return t.use&&((null==e?void 0:e.all)||(null==e?void 0:e.use))&&i.push("["+t.use+"]"),i.join((null==e?void 0:e.lineSeparator)||", ").trim()}function Z(t,e){const i=[];return t.prefix&&!1!==(null==e?void 0:e.prefix)&&i.push(...t.prefix),t.given&&i.push(...t.given),t.family&&i.push(t.family),t.suffix&&!1!==(null==e?void 0:e.suffix)&&i.push(...t.suffix),t.use&&((null==e?void 0:e.all)||(null==e?void 0:e.use))&&i.push("["+t.use+"]"),i.join(" ").trim()}var K,Q,Y,tt,et,it,st,rt,nt,ot,ut,ct,ht,at,dt,lt,pt,mt,vt,ft,gt,bt,yt,qt,jt,wt,Ut,kt,St,Et,Ot,Tt,xt;class zt extends l{constructor(t){super(t),K.add(this),this.search=_,this.create=W,this.get=M,this.update=L,this.patch=D,this.delete=V,this.history=G,this.batch=B,this.transaction=J,this.formatAddress=X,this.formatHumanName=Z}}K=new WeakSet;class At extends l{constructor(t){super(t),Q.add(this)}routeList(t){return this.request("/route","get",r(this,Q,"m",Y).bind(this))(t)}routeCreate(t,e){return this.request("/route","post",r(this,Q,"m",Y).bind(this))(t,e)}routeGet(t,e){return this.request("/route/{routeGuid}","get",r(this,Q,"m",Y).bind(this))(t,e)}routeDelete(t,e){return this.request("/route/{routeGuid}","delete",r(this,Q,"m",Y).bind(this))(t,e)}orderableItemList(t,e){return this.request("/orderableItem","get",r(this,Q,"m",Y).bind(this))(t,e)}orderableItemQuestionnaireGet(t,e){return this.request("/canonical-questionnaire/lab/{labGuid}/compendium/{compendiumVersion}/item/{itemCode}/questionnaire","get",r(this,Q,"m",Y).bind(this))(t,e)}orderSubmit(t,e){return this.request("/submit","post",r(this,Q,"m",Y).bind(this))(t,e)}}Q=new WeakSet,Y=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.labApiUrl)&&void 0!==e?e:"https://labs-api.zapehr.com/v1"};class It extends l{constructor(t){super(t),tt.add(this)}list(t){return this.request("/m2m","get",r(this,tt,"m",et).bind(this))(t)}create(t,e){return this.request("/m2m","post",r(this,tt,"m",et).bind(this))(t,e)}me(t){return this.request("/m2m/me","get",r(this,tt,"m",et).bind(this))(t)}get(t,e){return this.request("/m2m/{id}","get",r(this,tt,"m",et).bind(this))(t,e)}update(t,e){return this.request("/m2m/{id}","patch",r(this,tt,"m",et).bind(this))(t,e)}delete(t,e){return this.request("/m2m/{id}","delete",r(this,tt,"m",et).bind(this))(t,e)}rotateSecret(t,e){return this.request("/m2m/{id}/rotate-secret","post",r(this,tt,"m",et).bind(this))(t,e)}listV2(t,e){return this.request("/m2m/v2/list","get",r(this,tt,"m",et).bind(this))(t,e)}}tt=new WeakSet,et=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Pt extends l{constructor(t){super(t),it.add(this)}getMessagingConfig(t){return this.request("/messaging/config","get",r(this,it,"m",st).bind(this))(t)}}it=new WeakSet,st=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Rt extends l{constructor(t){super(t),rt.add(this)}setUp(t,e){return this.request("/payment/payment-method/setup","post",r(this,rt,"m",nt).bind(this))(t,e)}setDefault(t,e){return this.request("/payment/payment-method/set-default","post",r(this,rt,"m",nt).bind(this))(t,e)}delete(t,e){return this.request("/payment/payment-method","delete",r(this,rt,"m",nt).bind(this))(t,e)}list(t,e){return this.request("/payment/payment-method/list","post",r(this,rt,"m",nt).bind(this))(t,e)}}rt=new WeakSet,nt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Nt extends l{constructor(t){super(t),ot.add(this)}get(t){return this.request("/project","get",r(this,ot,"m",ut).bind(this))(t)}update(t,e){return this.request("/project","patch",r(this,ot,"m",ut).bind(this))(t,e)}}ot=new WeakSet,ut=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class $t extends l{constructor(t){super(t),ct.add(this)}eligibilityCheck(t,e){return this.request("/rcm/eligibility-check","post",r(this,ct,"m",ht).bind(this))(t,e)}validateProfessionalClaim(t,e){return this.request("/rcm/professional-claim/validate","post",r(this,ct,"m",ht).bind(this))(t,e)}submitProfessionalClaim(t,e){return this.request("/rcm/professional-claim/submit","post",r(this,ct,"m",ht).bind(this))(t,e)}}ct=new WeakSet,ht=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Ct extends l{constructor(t){super(t),at.add(this)}list(t){return this.request("/iam/role","get",r(this,at,"m",dt).bind(this))(t)}create(t,e){return this.request("/iam/role","post",r(this,at,"m",dt).bind(this))(t,e)}get(t,e){return this.request("/iam/role/{roleId}","get",r(this,at,"m",dt).bind(this))(t,e)}update(t,e){return this.request("/iam/role/{roleId}","patch",r(this,at,"m",dt).bind(this))(t,e)}delete(t,e){return this.request("/iam/role/{roleId}","delete",r(this,at,"m",dt).bind(this))(t,e)}}at=new WeakSet,dt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class _t extends l{constructor(t){super(t),lt.add(this)}list(t){return this.request("/secret","get",r(this,lt,"m",pt).bind(this))(t)}set(t,e){return this.request("/secret","post",r(this,lt,"m",pt).bind(this))(t,e)}get(t,e){return this.request("/secret/{name}","get",r(this,lt,"m",pt).bind(this))(t,e)}delete(t,e){return this.request("/secret/{name}","delete",r(this,lt,"m",pt).bind(this))(t,e)}}lt=new WeakSet,pt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Wt extends l{constructor(t){super(t),mt.add(this)}createMeeting(t,e){return this.request("/telemed/v2/meeting","post",r(this,mt,"m",vt).bind(this))(t,e)}joinMeeting(t,e){return this.request("/telemed/v2/meeting/{encounterId}/join","get",r(this,mt,"m",vt).bind(this))(t,e)}}mt=new WeakSet,vt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Mt extends l{constructor(t){super(t),ft.add(this)}searchCpt(t,e){return this.request("/cpt/search","get",r(this,ft,"m",gt).bind(this))(t,e)}searchHcpcs(t,e){return this.request("/hcpcs/search","get",r(this,ft,"m",gt).bind(this))(t,e)}}ft=new WeakSet,gt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.terminologyApiUrl)&&void 0!==e?e:"https://terminology-api.zapehr.com/v1"};class Lt extends l{constructor(t){super(t),bt.add(this)}send(t,e){return this.request("/messaging/transactional-sms/send","post",r(this,bt,"m",yt).bind(this))(t,e)}}bt=new WeakSet,yt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Dt extends l{constructor(t){super(t),qt.add(this)}me(t){return this.request("/user/me","get",r(this,qt,"m",jt).bind(this))(t)}get(t,e){return this.request("/user/{id}","get",r(this,qt,"m",jt).bind(this))(t,e)}update(t,e){return this.request("/user/{id}","patch",r(this,qt,"m",jt).bind(this))(t,e)}delete(t,e){return this.request("/user/{id}","delete",r(this,qt,"m",jt).bind(this))(t,e)}resetMfa(t,e){return this.request("/user/{id}/reset-mfa","post",r(this,qt,"m",jt).bind(this))(t,e)}resetPasswordLink(t,e){return this.request("/user/{id}/reset-password-link","post",r(this,qt,"m",jt).bind(this))(t,e)}invite(t,e){return this.request("/user/invite","post",r(this,qt,"m",jt).bind(this))(t,e)}list(t){return this.request("/user","get",r(this,qt,"m",jt).bind(this))(t)}listV2(t,e){return this.request("/user/v2/list","get",r(this,qt,"m",jt).bind(this))(t,e)}}qt=new WeakSet,jt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Vt extends l{constructor(t){super(t),wt.add(this)}get(t){return this.request("/version","get",r(this,wt,"m",Ut).bind(this))(t)}}function Gt(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"}function Ft(t){return s(this,arguments,void 0,(function*({bucketName:t,"objectPath+":e,file:i}){const s=yield this.request("/z3/{bucketName}/{objectPath+}","post",Gt.bind(this))({action:"upload",bucketName:t,"objectPath+":e});yield fetch(s.signedUrl,{method:"PUT",body:i})}))}function Ht(t){return s(this,arguments,void 0,(function*({bucketName:t,"objectPath+":e}){const i=yield this.request("/z3/{bucketName}/{objectPath+}","post",Gt.bind(this))({action:"download",bucketName:t,"objectPath+":e}),s=yield fetch(i.signedUrl,{method:"GET"});if(!s.ok)throw new Error("Failed to download file");return s.arrayBuffer()}))}function Bt(e){return s(this,void 0,void 0,(function*(){var i,s;let r,n;const o=new URL(e.url);if("z3:"===o.protocol){const t=o.pathname.split("/").slice(1);r=o.hostname,n=t.join("/")}else{if(!o.href.startsWith(null!==(s=null===(i=this.config.services)||void 0===i?void 0:i.projectApiUrl)&&void 0!==s?s:"https://project-api.zapehr.com/v1"))throw new t({message:"Invalid Z3 URL",code:400});{const t=o.pathname.split("/").slice(3);r=t[0],n=t.slice(1).join("/")}}const u={action:"upload",bucketName:r,"objectPath+":n};return this.request("/z3/{bucketName}/{objectPath+}","post",Gt.bind(this))(u)}))}wt=new WeakSet,Ut=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Jt extends l{constructor(t){super(t),kt.add(this),this.uploadFile=Ft,this.downloadFile=Ht,this.getPresignedUrlForZ3Url=Bt}listBuckets(t){return this.request("/z3","get",r(this,kt,"m",St).bind(this))(t)}createBucket(t,e){return this.request("/z3/{bucketName}","put",r(this,kt,"m",St).bind(this))(t,e)}deleteBucket(t,e){return this.request("/z3/{bucketName}","delete",r(this,kt,"m",St).bind(this))(t,e)}listObjects(t,e){return this.request("/z3/{bucketName}/{objectPath+}","get",r(this,kt,"m",St).bind(this))(t,e)}getPresignedUrl(t,e){return this.request("/z3/{bucketName}/{objectPath+}","post",r(this,kt,"m",St).bind(this))(t,e)}deleteObject(t,e){return this.request("/z3/{bucketName}/{objectPath+}","delete",r(this,kt,"m",St).bind(this))(t,e)}}function Xt(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"}function Zt(t){return s(this,arguments,void 0,(function*({id:t,file:e,filename:i}){const s=yield this.request("/zambda/{id}/s3-upload","post",Xt.bind(this))({id:t,filename:i});yield fetch(s.signedUrl,{method:"PUT",body:e})}))}kt=new WeakSet,St=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Kt extends l{constructor(t){super(t),Et.add(this),this.uploadFile=Zt}list(t){return this.request("/zambda","get",r(this,Et,"m",Ot).bind(this))(t)}create(t,e){return this.request("/zambda","post",r(this,Et,"m",Ot).bind(this))(t,e)}get(t,e){return this.request("/zambda/{id}","get",r(this,Et,"m",Ot).bind(this))(t,e)}update(t,e){return this.request("/zambda/{id}","patch",r(this,Et,"m",Ot).bind(this))(t,e)}delete(t,e){return this.request("/zambda/{id}","delete",r(this,Et,"m",Ot).bind(this))(t,e)}execute(t,e){return this.request("/zambda/{id}/execute","post",r(this,Et,"m",Ot).bind(this))(t,e)}executePublic(t,e){return this.request("/zambda/{id}/execute-public","post",r(this,Et,"m",Ot).bind(this))(t,e)}s3Upload(t,e){return this.request("/zambda/{id}/s3-upload","post",r(this,Et,"m",Ot).bind(this))(t,e)}}Et=new WeakSet,Ot=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Qt extends l{constructor(t){super(t),Tt.add(this)}list(t,e){return this.request("/zambda/{id}/logStream","post",r(this,Tt,"m",xt).bind(this))(t,e)}search(t,e){return this.request("/zambda/{id}/logStream/search","post",r(this,Tt,"m",xt).bind(this))(t,e)}get(t,e){return this.request("/zambda/{id}/logStream/{logStreamName}","post",r(this,Tt,"m",xt).bind(this))(t,e)}}Tt=new WeakSet,xt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};let Yt=class{constructor(t){var e,i,s,r,n,o;this.config=t,null!==(e=(r=this.config).services)&&void 0!==e||(r.services={}),null!==(i=(n=this.config.services).projectApiUrl)&&void 0!==i||(n.projectApiUrl=t.projectApiUrl),null!==(s=(o=this.config.services).fhirApiUrl)&&void 0!==s||(o.fhirApiUrl=t.fhirApiUrl),this.application=new q(t),this.developer=new R(t),this.m2m=new It(t),this.messaging=new Pt(t),this.conversation=new P(t),this.transactionalSMS=new Lt(t),this.paymentMethod=new Rt(t),this.charge=new j(t),this.project=new Nt(t),this.rcm=new $t(t),this.role=new Ct(t),this.secret=new _t(t),this.telemed=new Wt(t),this.user=new Dt(t),this.version=new Vt(t),this.z3=new Jt(t),this.zambda=new Kt(t),this.zambdaLogStream=new Qt(t),this.fax=new $(t),this.lab=new At(t),this.erx=new N(t),this.terminology=new Mt(t),this.fhir=new zt(t)}};class te extends Yt{}te.OystehrFHIRError=i,te.OystehrSdkError=t,exports.default=te;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class t extends Error{constructor({message:e,code:i,cause:s}){super(e,{cause:s}),Object.setPrototypeOf(this,t.prototype),this.code=i,this.name="OystehrSdkError"}toString(){return`${this.name}: ${this.message} (code: ${this.code})`}toJSON(){return{name:this.name,message:this.message,code:this.code,cause:this.cause}}}function e(t){var e;const i=[];for(const s of null!==(e=t.issue)&&void 0!==e?e:[])s.details&&s.details.text&&i.push(s.details.text);return i.length||i.push("Unknown FHIR error"),i.join(",")}class i extends t{constructor({error:t,code:s}){super({message:e(t),code:s}),Object.setPrototypeOf(this,i.prototype),this.cause=t,this.name="OystehrFHIRError"}toJSON(){return{name:this.name,message:this.message,code:this.code,cause:this.cause}}}function s(t,e,i,s){return new(i||(i=Promise))((function(r,n){function o(t){try{c(s.next(t))}catch(e){n(e)}}function u(t){try{c(s.throw(t))}catch(e){n(e)}}function c(t){var e;t.done?r(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(o,u)}c((s=s.apply(t,e||[])).next())}))}function r(t,e,i,s){if("a"===i&&!s)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!s:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?s:"a"===i?s.call(t):s?s.value:e.get(t)}"function"==typeof SuppressedError&&SuppressedError;const n=[];for(let te=0;te<256;++te)n.push((te+256).toString(16).slice(1));let o;const u=new Uint8Array(16);var c={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function a(t,e,i){if(c.randomUUID&&!t)return c.randomUUID();const s=(t=t||{}).random??t.rng?.()??function(){if(!o){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");o=crypto.getRandomValues.bind(crypto)}return o(u)}();if(s.length<16)throw new Error("Random bytes length must be >= 16");return s[6]=15&s[6]|64,s[8]=63&s[8]|128,function(t,e=0){return(n[t[e+0]]+n[t[e+1]]+n[t[e+2]]+n[t[e+3]]+"-"+n[t[e+4]]+n[t[e+5]]+"-"+n[t[e+6]]+n[t[e+7]]+"-"+n[t[e+8]]+n[t[e+9]]+"-"+n[t[e+10]]+n[t[e+11]]+n[t[e+12]]+n[t[e+13]]+n[t[e+14]]+n[t[e+15]]).toLowerCase()}(s)}const h=[408,429,500,502,503,504],d=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_SOCKET"];class l{constructor(t){this.config=t}request(e,i,r){return(n,o)=>s(this,void 0,void 0,(function*(){const s=()=>this.config;try{return yield m(r,s,e,i)(n,o)}catch(u){const e=u;throw new t({message:e.message,code:e.code,cause:e.cause})}}))}fhirRequest(e,r){return(n,o)=>s(this,void 0,void 0,(function*(){try{const t=()=>{var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.fhirApiUrl)&&void 0!==e?e:"https://fhir-api.zapehr.com"},i=()=>this.config;return yield m(t,i,e,r)(n,o)}catch(s){const e=s;if("string"==typeof e.message)throw new t({message:e.message,code:e.code,cause:e.cause});throw new i({error:e.message,code:e.code})}}))}}function p(t){return"accessToken"in t}function m(e,i,r,n){return(o,u)=>s(this,void 0,void 0,(function*(){var c,l,m,f,g,b,y,q,j,w,U,k,S,O,x;const T=o&&!u&&!Array.isArray(o)&&p(o)?{}:null!==(c=o)&&void 0!==c?c:{},E=o&&!u&&!Array.isArray(o)&&p(o)?o:u,z=n.toLowerCase(),A=i(),I=null!==(l=A.fetch)&&void 0!==l?l:fetch,P=null!==(m=null==E?void 0:E.accessToken)&&void 0!==m?m:A.accessToken,R=null!==(f=null==E?void 0:E.projectId)&&void 0!==f?f:i().projectId;let N=r,$=T;if(!Array.isArray(T)){const[e,i]=function(e,i){const s=Object.assign({},i),r=e.replace(/\{([^}]+)\}/g,((e,r)=>{if(delete s[r],r.match(/^.*\+$/))return i[r]+"";if(!i[r]||""===i[r])throw new t({message:`Required path parameter is an empty string: ${r}`,code:400});return i[r]?encodeURIComponent(i[r]+""):""})),n=Object.keys(s);return[r,n.length?n.reduce(((t,e)=>Object.assign(Object.assign({},t),{[e]:s[e]})),{}):{}]}(r,T);N=e,$=i}N=N.replace(/^\//,"");const W=e(),C=W.endsWith("/")?W:W+"/",_=new URL(N,C);let M;if(Array.isArray($))M=JSON.stringify($);else if(Object.keys($).length)if("get"===z)v($,_.searchParams);else if("application/x-www-form-urlencoded"===(null==E?void 0:E.contentType)){const t=new URLSearchParams;v($,t),M=t.toString()}else M=JSON.stringify($);else"application/x-www-form-urlencoded"!==(null==E?void 0:E.contentType)&&"post"===z&&(M="{}");const L=Object.assign(R?{"x-zapehr-project-id":R,"x-oystehr-project-id":R}:{},{"content-type":null!==(g=null==E?void 0:E.contentType)&&void 0!==g?g:"application/json"},P?{Authorization:`Bearer ${P}`}:{},(null==E?void 0:E.ifMatch)?{"If-Match":E.ifMatch}:{},{"x-oystehr-request-id":null!==(b=null==E?void 0:E.requestId)&&void 0!==b?b:a()}),D={retries:null!==(q=null===(y=A.retry)||void 0===y?void 0:y.retries)&&void 0!==q?q:3,jitter:null!==(w=null===(j=A.retry)||void 0===j?void 0:j.jitter)&&void 0!==w?w:20,delay:null!==(k=null===(U=A.retry)||void 0===U?void 0:U.delay)&&void 0!==k?k:100,onRetry:null===(S=A.retry)||void 0===S?void 0:S.onRetry,retryOn:[...null!==(x=null===(O=A.retry)||void 0===O?void 0:O.retryOn)&&void 0!==x?x:[],...h]};return D.retryOn.push(...h),function(t,e){return s(this,void 0,void 0,(function*(){var i,s;let r;for(const o of Array.from({length:(null!==(i=e.retries)&&void 0!==i?i:0)+1},((t,e)=>e)))try{return yield t()}catch(n){let t=!1;if("response"in n){const i=n;t=e.retryOn.includes(i.code),r={message:n.message,code:n.code}}else if(r=n,"code"in n&&"string"==typeof n.code){const e=n;t=d.includes(e.code)}if(!t)break;const i=Math.floor(Math.random()*(e.jitter+1));yield new Promise((t=>setTimeout(t,e.delay+i))),e.onRetry&&o!==(null!==(s=e.retries)&&void 0!==s?s:0)&&e.onRetry(o+1)}throw r}))}((()=>s(this,void 0,void 0,(function*(){var t,e,i,s,r,n,o,u;const c=yield I(new Request(_,{method:z.toUpperCase(),body:M,headers:L})),a=c.body?yield c.text():null;let h;const d=c.headers.get("content-type");try{h=a&&((null==d?void 0:d.includes("application/json"))||(null==d?void 0:d.includes("application/fhir+json")))?JSON.parse(a):a&&((null==d?void 0:d.includes("application/xml"))||(null==d?void 0:d.includes("text/xml")))?function(t){try{const e=t.match(/<status>(\d+)<\/status>/),i=e?parseInt(e[1],10):null,s=t.match(/<output>([\s\S]*?)<\/output>/),r=s?s[1]:null;return null===i||null===r?null:{status:i,output:r}}catch(e){return null}}(a):null}catch(l){h=null}if(!c.ok||c.status>=400)throw{message:null!==(r=null!==(s=null!==(i=null!==(e="string"==typeof(null==h?void 0:h.output)?h.output:null===(t=null==h?void 0:h.output)||void 0===t?void 0:t.message)&&void 0!==e?e:null==h?void 0:h.message)&&void 0!==i?i:h)&&void 0!==s?s:a)&&void 0!==r?r:c.statusText,code:null!==(u=null!==(o=null===(n=null==h?void 0:h.output)||void 0===n?void 0:n.code)&&void 0!==o?o:null==h?void 0:h.code)&&void 0!==u?u:c.status,response:c};return h}))),D)}))}function v(t,e){for(const[i,s]of Object.entries(t))Array.isArray(s)?s.forEach((t=>e.append(i,t))):e.append(i,s)}var f,g,b,y;class q extends l{constructor(t){super(t),f.add(this)}list(t){return this.request("/application","get",r(this,f,"m",g).bind(this))(t)}create(t,e){return this.request("/application","post",r(this,f,"m",g).bind(this))(t,e)}get(t,e){return this.request("/application/{id}","get",r(this,f,"m",g).bind(this))(t,e)}update(t,e){return this.request("/application/{id}","patch",r(this,f,"m",g).bind(this))(t,e)}delete(t,e){return this.request("/application/{id}","delete",r(this,f,"m",g).bind(this))(t,e)}rotateSecret(t,e){return this.request("/application/{id}/rotate-secret","post",r(this,f,"m",g).bind(this))(t,e)}revokeRefreshToken(t,e){return this.request("/application/{id}/revoke-refresh-token","post",r(this,f,"m",g).bind(this))(t,e)}revokeAccessToken(t,e){return this.request("/application/{id}/revoke-access-token","post",r(this,f,"m",g).bind(this))(t,e)}}f=new WeakSet,g=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class j extends l{constructor(t){super(t),b.add(this)}issue(t,e){return this.request("/payment/charge/issue","post",r(this,b,"m",y).bind(this))(t,e)}status(t,e){return this.request("/payment/charge/status","post",r(this,b,"m",y).bind(this))(t,e)}}b=new WeakSet,y=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};const w="https://extensions.fhir.zapehr.com/encounter-virtual-service-pre-release",U="addressString";function k(t){var e,i,s;if(function(t){return Object.hasOwn(t,"virtualService")}(t)){const i=null===(e=t.virtualService)||void 0===e?void 0:e.find((t=>{var e;return"https://fhir.zapehr.com/virtual-service-type"===(null===(e=t.channelType)||void 0===e?void 0:e.system)}));return null==i?void 0:i.addressString}if(!t.extension)return;const r=t.extension.find((t=>t.url===w));return(null==r?void 0:r.extension)?null===(s=null===(i=r.extension)||void 0===i?void 0:i.find((t=>t.url===U)))||void 0===s?void 0:s.valueString:void 0}var S,O,x,T,E,z,A,I;class P extends l{constructor(t){super(t),S.add(this),this.ENCOUNTER_VS_EXTENSION_URL=w,this.ENCOUNTER_VS_EXTENSION_RELATIVE_URL=U,this.getConversationIdFromEncounter=k}create(t,e){return this.request("/messaging/conversation","post",r(this,S,"m",O).bind(this))(t,e)}getToken(t){return this.request("/messaging/conversation/token","get",r(this,S,"m",O).bind(this))(t)}addParticipant(t,e){return this.request("/messaging/conversation/{conversationId}/participant","post",r(this,S,"m",O).bind(this))(t,e)}removeParticipant(t,e){return this.request("/messaging/conversation/{conversationId}/participant","delete",r(this,S,"m",O).bind(this))(t,e)}message(t,e){return this.request("/messaging/conversation/{conversationId}/message","post",r(this,S,"m",O).bind(this))(t,e)}}S=new WeakSet,O=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class R extends l{constructor(t){super(t),x.add(this)}get(t,e){return this.request("/developer/{id}","get",r(this,x,"m",T).bind(this))(t,e)}update(t,e){return this.request("/developer/{id}","patch",r(this,x,"m",T).bind(this))(t,e)}delete(t,e){return this.request("/developer/{id}","delete",r(this,x,"m",T).bind(this))(t,e)}invite(t,e){return this.request("/developer/invite","post",r(this,x,"m",T).bind(this))(t,e)}list(t){return this.request("/developer","get",r(this,x,"m",T).bind(this))(t)}listV2(t,e){return this.request("/developer/v2/list","get",r(this,x,"m",T).bind(this))(t,e)}}x=new WeakSet,T=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class N extends l{constructor(t){super(t),E.add(this)}searchAllergens(t,e){return this.request("/allergen","get",r(this,E,"m",z).bind(this))(t,e)}searchMedications(t,e){return this.request("/medication","get",r(this,E,"m",z).bind(this))(t,e)}getMedication(t,e){return this.request("/medication/details","get",r(this,E,"m",z).bind(this))(t,e)}getConfiguration(t){return this.request("/config","get",r(this,E,"m",z).bind(this))(t)}checkAllergyInteractions(t,e){return this.request("/patient/{patientId}/interactions/allergy","get",r(this,E,"m",z).bind(this))(t,e)}checkMedicationInteractions(t,e){return this.request("/patient/{patientId}/interactions/medication","get",r(this,E,"m",z).bind(this))(t,e)}checkPrecheckInteractions(t,e){return this.request("/patient/{patientId}/interactions/precheck/{drugId}","get",r(this,E,"m",z).bind(this))(t,e)}addPatientPharmacy(t,e){return this.request("/patient/{patientId}/pharmacies","post",r(this,E,"m",z).bind(this))(t,e)}cancelPrescription(t,e){return this.request("/patient/{patientId}/prescriptions/{medicationRequestId}","delete",r(this,E,"m",z).bind(this))(t,e)}syncPatient(t,e){return this.request("/patient/{patientId}/sync","post",r(this,E,"m",z).bind(this))(t,e)}searchPharmacies(t,e){return this.request("/pharmacy","get",r(this,E,"m",z).bind(this))(t,e)}connectPractitioner(t,e){return this.request("/practitioner/connect","get",r(this,E,"m",z).bind(this))(t,e)}checkPractitionerEnrollment(t,e){return this.request("/practitioner/{practitionerId}","get",r(this,E,"m",z).bind(this))(t,e)}enrollPractitioner(t,e){return this.request("/practitioner/{practitionerId}","post",r(this,E,"m",z).bind(this))(t,e)}unenrollPractitioner(t,e){return this.request("/practitioner/{practitionerId}","delete",r(this,E,"m",z).bind(this))(t,e)}}E=new WeakSet,z=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.erxApiUrl)&&void 0!==e?e:"https://erx-api.zapehr.com/v3"};class $ extends l{constructor(t){super(t),A.add(this)}offboard(t){return this.request("/offboard","post",r(this,A,"m",I).bind(this))(t)}onboard(t){return this.request("/onboard","post",r(this,A,"m",I).bind(this))(t)}getConfiguration(t){return this.request("/config","get",r(this,A,"m",I).bind(this))(t)}send(t,e){return this.request("/send","post",r(this,A,"m",I).bind(this))(t,e)}}A=new WeakSet,I=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.faxApiUrl)&&void 0!==e?e:"https://fax-api.zapehr.com/v1"};const W=65535;function C(t,e){return s(this,void 0,void 0,(function*(){const{resourceType:i,params:s}=t;let r;s&&(r=Object.entries(s).reduce(((t,[e,i])=>(t[i.name]||(t[i.name]=[]),t[i.name].push(i.value),t)),{}));const n=yield this.fhirRequest(`/${i}/_search`,"POST")(r,Object.assign(Object.assign({},e),{contentType:"application/x-www-form-urlencoded"}));return Object.assign(Object.assign({},n),{entry:n.entry,unbundle:function(){var t,e;return null!==(e=null===(t=this.entry)||void 0===t?void 0:t.map((t=>t.resource)).filter((t=>void 0!==t)))&&void 0!==e?e:[]}})}))}function _(t,e){return s(this,void 0,void 0,(function*(){const{resourceType:i}=t;return this.fhirRequest(`/${i}`,"POST")(t,e)}))}function M(t,e){return s(this,arguments,void 0,(function*({resourceType:t,id:e},i){return this.fhirRequest(`/${t}/${e}`,"GET")({},i)}))}function L(t,e){return s(this,void 0,void 0,(function*(){const{id:i,resourceType:s}=t;return this.fhirRequest(`/${s}/${i}`,"PUT")(t,Object.assign(Object.assign({},e),{ifMatch:(null==e?void 0:e.optimisticLockingVersionId)?`W/"${e.optimisticLockingVersionId}"`:void 0}))}))}function D(t,e){return s(this,arguments,void 0,(function*({resourceType:t,id:e,operations:i},s){return this.fhirRequest(`/${t}/${e}`,"PATCH")(i,Object.assign(Object.assign({},s),{contentType:"application/json-patch+json",ifMatch:(null==s?void 0:s.optimisticLockingVersionId)?`W/"${s.optimisticLockingVersionId}"`:void 0}))}))}function V(t,e){return s(this,arguments,void 0,(function*({resourceType:t,id:e},i){return this.fhirRequest(`/${t}/${e}`,"DELETE")({},i)}))}function G(t,e){return s(this,arguments,void 0,(function*({resourceType:t,id:e,versionId:i,count:s,offset:r},n){return i?this.fhirRequest(`/${t}/${e}/_history/${i}`,"GET")({},n):s?this.fhirRequest(`/${t}/${e}/_history?_total=accurate&_count=${s}\n ${r?`&_offset=${r}`:""}`,"GET")({},n):this.fhirRequest(`/${t}/${e}/_history?_total=accurate`,"GET")({},n)}))}function F(t){const{method:e,url:i}=t,s={request:{method:e,url:i}};if(i.split("?").length>1){const[t,e]=i.split("?"),r=e.split("&").map((t=>{const[e,i]=t.split("=");return{name:e,value:i}})).reduce(((t,{name:e,value:i})=>e?(t[e]||(t[e]=[]),t[e].push(i),t):t),{}),n=new URLSearchParams;v(r,n),s.request.url=`${t}?${n.toString()}`}if(["GET","DELETE","HEAD"].includes(e))return s;if("PUT"===e){const{resource:e}=t;return{request:Object.assign(Object.assign({},s.request),{ifMatch:t.ifMatch}),resource:e}}if("PATCH"===e){if("resource"in t)return{request:Object.assign(Object.assign({},s.request),{ifMatch:t.ifMatch}),resource:t.resource};const e=function(t){const e=(new globalThis.TextEncoder).encode(t);let i="";for(let s=0;s<e.length;s+=W){const t=e.subarray(s,s+W);i+=globalThis.btoa(String.fromCodePoint.apply(void 0,t))}return i}(JSON.stringify(t.operations));return Object.assign(Object.assign({},s),{resource:{resourceType:"Binary",contentType:"application/json-patch+json",data:e}})}if("POST"===e){const{resource:e,fullUrl:i}=t;return Object.assign(Object.assign({},s),{resource:e,fullUrl:i})}throw new Error("Unrecognized method")}function H(t,e){return s(this,void 0,void 0,(function*(){const i=yield this.fhirRequest("/","POST")({resourceType:"Bundle",type:"batch",entry:t.requests.map(F)},e);return Object.assign(Object.assign({},i),{entry:i.entry,unbundle:function(){var t,e;return null!==(e=null===(t=this.entry)||void 0===t?void 0:t.map((t=>t.resource)).filter((t=>void 0!==t)))&&void 0!==e?e:[]},errors:function(){var t;return null===(t=this.entry)||void 0===t?void 0:t.filter((t=>{var e,i,s,r;return(null===(i=null===(e=t.response)||void 0===e?void 0:e.status)||void 0===i?void 0:i.startsWith("4"))||(null===(r=null===(s=t.response)||void 0===s?void 0:s.status)||void 0===r?void 0:r.startsWith("5"))})).map((t=>{var e;return null===(e=t.response)||void 0===e?void 0:e.outcome})).filter((t=>void 0!==t))}})}))}function B(t,e){return s(this,void 0,void 0,(function*(){const i=yield this.fhirRequest("/","POST")({resourceType:"Bundle",type:"transaction",entry:t.requests.map(F)},e);return Object.assign(Object.assign({},i),{entry:i.entry,unbundle:function(){var t,e;return null!==(e=null===(t=this.entry)||void 0===t?void 0:t.map((t=>t.resource)).filter((t=>void 0!==t)))&&void 0!==e?e:[]}})}))}function J(t,e){const i=[];if(t.line&&i.push(...t.line),t.city||t.state||t.postalCode){const e=[];t.city&&e.push(t.city),t.state&&e.push(t.state),t.postalCode&&e.push(t.postalCode),i.push(e.join(", "))}return t.use&&((null==e?void 0:e.all)||(null==e?void 0:e.use))&&i.push("["+t.use+"]"),i.join((null==e?void 0:e.lineSeparator)||", ").trim()}function X(t,e){const i=[];return t.prefix&&!1!==(null==e?void 0:e.prefix)&&i.push(...t.prefix),t.given&&i.push(...t.given),t.family&&i.push(t.family),t.suffix&&!1!==(null==e?void 0:e.suffix)&&i.push(...t.suffix),t.use&&((null==e?void 0:e.all)||(null==e?void 0:e.use))&&i.push("["+t.use+"]"),i.join(" ").trim()}var Z,K,Q,Y,tt,et,it,st,rt,nt,ot,ut,ct,at,ht,dt,lt,pt,mt,vt,ft,gt,bt,yt,qt,jt,wt,Ut,kt,St,Ot,xt,Tt;class Et extends l{constructor(t){super(t),Z.add(this),this.search=C,this.create=_,this.get=M,this.update=L,this.patch=D,this.delete=V,this.history=G,this.batch=H,this.transaction=B,this.formatAddress=J,this.formatHumanName=X}}Z=new WeakSet;class zt extends l{constructor(t){super(t),K.add(this)}routeList(t){return this.request("/route","get",r(this,K,"m",Q).bind(this))(t)}routeCreate(t,e){return this.request("/route","post",r(this,K,"m",Q).bind(this))(t,e)}routeGet(t,e){return this.request("/route/{routeGuid}","get",r(this,K,"m",Q).bind(this))(t,e)}routeDelete(t,e){return this.request("/route/{routeGuid}","delete",r(this,K,"m",Q).bind(this))(t,e)}orderableItemList(t,e){return this.request("/orderableItem","get",r(this,K,"m",Q).bind(this))(t,e)}orderableItemQuestionnaireGet(t,e){return this.request("/canonical-questionnaire/lab/{labGuid}/compendium/{compendiumVersion}/item/{itemCode}/questionnaire","get",r(this,K,"m",Q).bind(this))(t,e)}orderSubmit(t,e){return this.request("/submit","post",r(this,K,"m",Q).bind(this))(t,e)}}K=new WeakSet,Q=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.labApiUrl)&&void 0!==e?e:"https://labs-api.zapehr.com/v1"};class At extends l{constructor(t){super(t),Y.add(this)}list(t){return this.request("/m2m","get",r(this,Y,"m",tt).bind(this))(t)}create(t,e){return this.request("/m2m","post",r(this,Y,"m",tt).bind(this))(t,e)}me(t){return this.request("/m2m/me","get",r(this,Y,"m",tt).bind(this))(t)}get(t,e){return this.request("/m2m/{id}","get",r(this,Y,"m",tt).bind(this))(t,e)}update(t,e){return this.request("/m2m/{id}","patch",r(this,Y,"m",tt).bind(this))(t,e)}delete(t,e){return this.request("/m2m/{id}","delete",r(this,Y,"m",tt).bind(this))(t,e)}rotateSecret(t,e){return this.request("/m2m/{id}/rotate-secret","post",r(this,Y,"m",tt).bind(this))(t,e)}listV2(t,e){return this.request("/m2m/v2/list","get",r(this,Y,"m",tt).bind(this))(t,e)}}Y=new WeakSet,tt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class It extends l{constructor(t){super(t),et.add(this)}getMessagingConfig(t){return this.request("/messaging/config","get",r(this,et,"m",it).bind(this))(t)}}et=new WeakSet,it=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Pt extends l{constructor(t){super(t),st.add(this)}setUp(t,e){return this.request("/payment/payment-method/setup","post",r(this,st,"m",rt).bind(this))(t,e)}setDefault(t,e){return this.request("/payment/payment-method/set-default","post",r(this,st,"m",rt).bind(this))(t,e)}delete(t,e){return this.request("/payment/payment-method","delete",r(this,st,"m",rt).bind(this))(t,e)}list(t,e){return this.request("/payment/payment-method/list","post",r(this,st,"m",rt).bind(this))(t,e)}}st=new WeakSet,rt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Rt extends l{constructor(t){super(t),nt.add(this)}get(t){return this.request("/project","get",r(this,nt,"m",ot).bind(this))(t)}update(t,e){return this.request("/project","patch",r(this,nt,"m",ot).bind(this))(t,e)}}nt=new WeakSet,ot=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Nt extends l{constructor(t){super(t),ut.add(this)}eligibilityCheck(t,e){return this.request("/rcm/eligibility-check","post",r(this,ut,"m",ct).bind(this))(t,e)}validateProfessionalClaim(t,e){return this.request("/rcm/professional-claim/validate","post",r(this,ut,"m",ct).bind(this))(t,e)}submitProfessionalClaim(t,e){return this.request("/rcm/professional-claim/submit","post",r(this,ut,"m",ct).bind(this))(t,e)}}ut=new WeakSet,ct=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class $t extends l{constructor(t){super(t),at.add(this)}list(t){return this.request("/iam/role","get",r(this,at,"m",ht).bind(this))(t)}create(t,e){return this.request("/iam/role","post",r(this,at,"m",ht).bind(this))(t,e)}get(t,e){return this.request("/iam/role/{roleId}","get",r(this,at,"m",ht).bind(this))(t,e)}update(t,e){return this.request("/iam/role/{roleId}","patch",r(this,at,"m",ht).bind(this))(t,e)}delete(t,e){return this.request("/iam/role/{roleId}","delete",r(this,at,"m",ht).bind(this))(t,e)}}at=new WeakSet,ht=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Wt extends l{constructor(t){super(t),dt.add(this)}list(t){return this.request("/secret","get",r(this,dt,"m",lt).bind(this))(t)}set(t,e){return this.request("/secret","post",r(this,dt,"m",lt).bind(this))(t,e)}get(t,e){return this.request("/secret/{name}","get",r(this,dt,"m",lt).bind(this))(t,e)}delete(t,e){return this.request("/secret/{name}","delete",r(this,dt,"m",lt).bind(this))(t,e)}}dt=new WeakSet,lt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Ct extends l{constructor(t){super(t),pt.add(this)}createMeeting(t,e){return this.request("/telemed/v2/meeting","post",r(this,pt,"m",mt).bind(this))(t,e)}joinMeeting(t,e){return this.request("/telemed/v2/meeting/{encounterId}/join","get",r(this,pt,"m",mt).bind(this))(t,e)}}pt=new WeakSet,mt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class _t extends l{constructor(t){super(t),vt.add(this)}searchCpt(t,e){return this.request("/cpt/search","get",r(this,vt,"m",ft).bind(this))(t,e)}searchHcpcs(t,e){return this.request("/hcpcs/search","get",r(this,vt,"m",ft).bind(this))(t,e)}}vt=new WeakSet,ft=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.terminologyApiUrl)&&void 0!==e?e:"https://terminology-api.zapehr.com/v1"};class Mt extends l{constructor(t){super(t),gt.add(this)}send(t,e){return this.request("/messaging/transactional-sms/send","post",r(this,gt,"m",bt).bind(this))(t,e)}}gt=new WeakSet,bt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Lt extends l{constructor(t){super(t),yt.add(this)}me(t){return this.request("/user/me","get",r(this,yt,"m",qt).bind(this))(t)}get(t,e){return this.request("/user/{id}","get",r(this,yt,"m",qt).bind(this))(t,e)}update(t,e){return this.request("/user/{id}","patch",r(this,yt,"m",qt).bind(this))(t,e)}delete(t,e){return this.request("/user/{id}","delete",r(this,yt,"m",qt).bind(this))(t,e)}resetMfa(t,e){return this.request("/user/{id}/reset-mfa","post",r(this,yt,"m",qt).bind(this))(t,e)}resetPasswordLink(t,e){return this.request("/user/{id}/reset-password-link","post",r(this,yt,"m",qt).bind(this))(t,e)}invite(t,e){return this.request("/user/invite","post",r(this,yt,"m",qt).bind(this))(t,e)}list(t){return this.request("/user","get",r(this,yt,"m",qt).bind(this))(t)}listV2(t,e){return this.request("/user/v2/list","get",r(this,yt,"m",qt).bind(this))(t,e)}}yt=new WeakSet,qt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Dt extends l{constructor(t){super(t),jt.add(this)}get(t){return this.request("/version","get",r(this,jt,"m",wt).bind(this))(t)}}function Vt(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"}function Gt(t){return s(this,arguments,void 0,(function*({bucketName:t,"objectPath+":e,file:i}){const s=yield this.request("/z3/{bucketName}/{objectPath+}","post",Vt.bind(this))({action:"upload",bucketName:t,"objectPath+":e});yield fetch(s.signedUrl,{method:"PUT",body:i})}))}function Ft(t){return s(this,arguments,void 0,(function*({bucketName:t,"objectPath+":e}){const i=yield this.request("/z3/{bucketName}/{objectPath+}","post",Vt.bind(this))({action:"download",bucketName:t,"objectPath+":e}),s=yield fetch(i.signedUrl,{method:"GET"});if(!s.ok)throw new Error("Failed to download file");return s.arrayBuffer()}))}function Ht(e){return s(this,void 0,void 0,(function*(){var i,s;let r,n;const o=new URL(e.url);if("z3:"===o.protocol){const t=o.pathname.split("/").slice(1);r=o.hostname,n=t.join("/")}else{if(!o.href.startsWith(null!==(s=null===(i=this.config.services)||void 0===i?void 0:i.projectApiUrl)&&void 0!==s?s:"https://project-api.zapehr.com/v1"))throw new t({message:"Invalid Z3 URL",code:400});{const t=o.pathname.split("/").slice(3);r=t[0],n=t.slice(1).join("/")}}const u={action:"upload",bucketName:r,"objectPath+":n};return this.request("/z3/{bucketName}/{objectPath+}","post",Vt.bind(this))(u)}))}jt=new WeakSet,wt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Bt extends l{constructor(t){super(t),Ut.add(this),this.uploadFile=Gt,this.downloadFile=Ft,this.getPresignedUrlForZ3Url=Ht}listBuckets(t){return this.request("/z3","get",r(this,Ut,"m",kt).bind(this))(t)}createBucket(t,e){return this.request("/z3/{bucketName}","put",r(this,Ut,"m",kt).bind(this))(t,e)}deleteBucket(t,e){return this.request("/z3/{bucketName}","delete",r(this,Ut,"m",kt).bind(this))(t,e)}listObjects(t,e){return this.request("/z3/{bucketName}/{objectPath+}","get",r(this,Ut,"m",kt).bind(this))(t,e)}getPresignedUrl(t,e){return this.request("/z3/{bucketName}/{objectPath+}","post",r(this,Ut,"m",kt).bind(this))(t,e)}deleteObject(t,e){return this.request("/z3/{bucketName}/{objectPath+}","delete",r(this,Ut,"m",kt).bind(this))(t,e)}}function Jt(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"}function Xt(t){return s(this,arguments,void 0,(function*({id:t,file:e,filename:i}){const s=yield this.request("/zambda/{id}/s3-upload","post",Jt.bind(this))({id:t,filename:i});yield fetch(s.signedUrl,{method:"PUT",body:e})}))}Ut=new WeakSet,kt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Zt extends l{constructor(t){super(t),St.add(this),this.uploadFile=Xt}list(t){return this.request("/zambda","get",r(this,St,"m",Ot).bind(this))(t)}create(t,e){return this.request("/zambda","post",r(this,St,"m",Ot).bind(this))(t,e)}get(t,e){return this.request("/zambda/{id}","get",r(this,St,"m",Ot).bind(this))(t,e)}update(t,e){return this.request("/zambda/{id}","patch",r(this,St,"m",Ot).bind(this))(t,e)}delete(t,e){return this.request("/zambda/{id}","delete",r(this,St,"m",Ot).bind(this))(t,e)}execute(t,e){return this.request("/zambda/{id}/execute","post",r(this,St,"m",Ot).bind(this))(t,e)}executePublic(t,e){return this.request("/zambda/{id}/execute-public","post",r(this,St,"m",Ot).bind(this))(t,e)}s3Upload(t,e){return this.request("/zambda/{id}/s3-upload","post",r(this,St,"m",Ot).bind(this))(t,e)}}St=new WeakSet,Ot=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};class Kt extends l{constructor(t){super(t),xt.add(this)}list(t,e){return this.request("/zambda/{id}/logStream","post",r(this,xt,"m",Tt).bind(this))(t,e)}search(t,e){return this.request("/zambda/{id}/logStream/search","post",r(this,xt,"m",Tt).bind(this))(t,e)}get(t,e){return this.request("/zambda/{id}/logStream/{logStreamName}","post",r(this,xt,"m",Tt).bind(this))(t,e)}}xt=new WeakSet,Tt=function(){var t,e;return null!==(e=null===(t=this.config.services)||void 0===t?void 0:t.projectApiUrl)&&void 0!==e?e:"https://project-api.zapehr.com/v1"};let Qt=class{constructor(t){var e,i,s,r,n,o;this.config=t,null!==(e=(r=this.config).services)&&void 0!==e||(r.services={}),null!==(i=(n=this.config.services).projectApiUrl)&&void 0!==i||(n.projectApiUrl=t.projectApiUrl),null!==(s=(o=this.config.services).fhirApiUrl)&&void 0!==s||(o.fhirApiUrl=t.fhirApiUrl),this.application=new q(t),this.developer=new R(t),this.m2m=new At(t),this.messaging=new It(t),this.conversation=new P(t),this.transactionalSMS=new Mt(t),this.paymentMethod=new Pt(t),this.charge=new j(t),this.project=new Rt(t),this.rcm=new Nt(t),this.role=new $t(t),this.secret=new Wt(t),this.telemed=new Ct(t),this.user=new Lt(t),this.version=new Dt(t),this.z3=new Bt(t),this.zambda=new Zt(t),this.zambdaLogStream=new Kt(t),this.fax=new $(t),this.lab=new zt(t),this.erx=new N(t),this.terminology=new _t(t),this.fhir=new Et(t)}};class Yt extends Qt{}Yt.OystehrFHIRError=i,Yt.OystehrSdkError=t,exports.default=Yt;
|
|
2
2
|
//# sourceMappingURL=index.min.cjs.map
|