@medplum/core 2.0.0 → 2.0.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/dist/cjs/client.d.ts +16 -0
- package/dist/cjs/index.cjs +317 -697
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.min.cjs +1 -1
- package/dist/cjs/types.d.ts +6 -0
- package/dist/esm/base-schema.json.mjs +219 -690
- package/dist/esm/base-schema.json.mjs.map +1 -1
- package/dist/esm/client.d.ts +16 -0
- package/dist/esm/client.mjs +86 -7
- package/dist/esm/client.mjs.map +1 -1
- package/dist/esm/index.min.mjs +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/node_modules/tslib/tslib.es6.mjs.map +1 -1
- package/dist/esm/types.d.ts +6 -0
- package/dist/esm/types.mjs +12 -1
- package/dist/esm/types.mjs.map +1 -1
- package/package.json +1 -1
- package/rollup.config.mjs +0 -103
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-schema.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-schema.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/esm/client.d.ts
CHANGED
|
@@ -71,6 +71,14 @@ export interface MedplumClientOptions {
|
|
|
71
71
|
* See: https://developer.mozilla.org/en-US/docs/Web/API/Request/cache
|
|
72
72
|
*/
|
|
73
73
|
cacheTime?: number;
|
|
74
|
+
/**
|
|
75
|
+
* The length of time in milliseconds to delay requests for auto batching.
|
|
76
|
+
*
|
|
77
|
+
* Auto batching attempts to group multiple requests together into a single batch request.
|
|
78
|
+
*
|
|
79
|
+
* Default value is 0, which disables auto batching.
|
|
80
|
+
*/
|
|
81
|
+
autoBatchTime?: number;
|
|
74
82
|
/**
|
|
75
83
|
* Fetch implementation.
|
|
76
84
|
*
|
|
@@ -503,6 +511,14 @@ export declare class MedplumClient extends EventTarget {
|
|
|
503
511
|
* @category Authentication
|
|
504
512
|
*/
|
|
505
513
|
signOutWithRedirect(): void;
|
|
514
|
+
/**
|
|
515
|
+
* Initiates sign in with an external identity provider.
|
|
516
|
+
* @param authorizeUrl The external authorization URL.
|
|
517
|
+
* @param clientId The external client ID.
|
|
518
|
+
* @param redirectUri The external identity provider redirect URI.
|
|
519
|
+
* @param baseLogin The Medplum login request.
|
|
520
|
+
*/
|
|
521
|
+
signInWithExternalAuth(authorizeUrl: string, clientId: string, redirectUri: string, baseLogin: BaseLoginRequest): Promise<void>;
|
|
506
522
|
/**
|
|
507
523
|
* Builds a FHIR URL from a collection of URL path components.
|
|
508
524
|
* For example, `buildUrl('/Patient', '123')` returns `fhir/R4/Patient/123`.
|
package/dist/esm/client.mjs
CHANGED
|
@@ -10,8 +10,8 @@ import { createReference, arrayBufferToBase64 } from './utils.mjs';
|
|
|
10
10
|
|
|
11
11
|
// PKCE auth based on:
|
|
12
12
|
// https://aws.amazon.com/blogs/security/how-to-add-authentication-single-page-web-application-with-amazon-cognito-oauth2-implementation/
|
|
13
|
-
var _MedplumClient_instances, _MedplumClient_fetch, _MedplumClient_createPdf, _MedplumClient_storage, _MedplumClient_requestCache, _MedplumClient_cacheTime, _MedplumClient_baseUrl, _MedplumClient_authorizeUrl, _MedplumClient_tokenUrl, _MedplumClient_logoutUrl, _MedplumClient_onUnauthenticated, _MedplumClient_clientId, _MedplumClient_clientSecret, _MedplumClient_accessToken, _MedplumClient_refreshToken, _MedplumClient_refreshPromise, _MedplumClient_profilePromise, _MedplumClient_profile, _MedplumClient_config, _MedplumClient_addLogin, _MedplumClient_refreshProfile, _MedplumClient_getCacheEntry, _MedplumClient_setCacheEntry, _MedplumClient_request, _MedplumClient_addFetchOptionsDefaults, _MedplumClient_setRequestContentType, _MedplumClient_setRequestBody, _MedplumClient_handleUnauthenticated, _MedplumClient_requestAuthorization, _MedplumClient_refresh, _MedplumClient_fetchTokens, _MedplumClient_verifyTokens, _MedplumClient_setupStorageListener;
|
|
14
|
-
const MEDPLUM_VERSION = "2.0.
|
|
13
|
+
var _MedplumClient_instances, _MedplumClient_fetch, _MedplumClient_createPdf, _MedplumClient_storage, _MedplumClient_requestCache, _MedplumClient_cacheTime, _MedplumClient_baseUrl, _MedplumClient_fhirBaseUrl, _MedplumClient_authorizeUrl, _MedplumClient_tokenUrl, _MedplumClient_logoutUrl, _MedplumClient_onUnauthenticated, _MedplumClient_autoBatchTime, _MedplumClient_autoBatchQueue, _MedplumClient_clientId, _MedplumClient_clientSecret, _MedplumClient_autoBatchTimerId, _MedplumClient_accessToken, _MedplumClient_refreshToken, _MedplumClient_refreshPromise, _MedplumClient_profilePromise, _MedplumClient_profile, _MedplumClient_config, _MedplumClient_addLogin, _MedplumClient_refreshProfile, _MedplumClient_getCacheEntry, _MedplumClient_setCacheEntry, _MedplumClient_request, _MedplumClient_executeAutoBatch, _MedplumClient_addFetchOptionsDefaults, _MedplumClient_setRequestContentType, _MedplumClient_setRequestBody, _MedplumClient_handleUnauthenticated, _MedplumClient_requestAuthorization, _MedplumClient_refresh, _MedplumClient_fetchTokens, _MedplumClient_verifyTokens, _MedplumClient_setupStorageListener;
|
|
14
|
+
const MEDPLUM_VERSION = "2.0.1-89a5b1c5";
|
|
15
15
|
const DEFAULT_BASE_URL = 'https://api.medplum.com/';
|
|
16
16
|
const DEFAULT_RESOURCE_CACHE_SIZE = 1000;
|
|
17
17
|
const DEFAULT_CACHE_TIME = 60000; // 60 seconds
|
|
@@ -80,12 +80,16 @@ class MedplumClient extends EventTarget {
|
|
|
80
80
|
_MedplumClient_requestCache.set(this, void 0);
|
|
81
81
|
_MedplumClient_cacheTime.set(this, void 0);
|
|
82
82
|
_MedplumClient_baseUrl.set(this, void 0);
|
|
83
|
+
_MedplumClient_fhirBaseUrl.set(this, void 0);
|
|
83
84
|
_MedplumClient_authorizeUrl.set(this, void 0);
|
|
84
85
|
_MedplumClient_tokenUrl.set(this, void 0);
|
|
85
86
|
_MedplumClient_logoutUrl.set(this, void 0);
|
|
86
87
|
_MedplumClient_onUnauthenticated.set(this, void 0);
|
|
88
|
+
_MedplumClient_autoBatchTime.set(this, void 0);
|
|
89
|
+
_MedplumClient_autoBatchQueue.set(this, void 0);
|
|
87
90
|
_MedplumClient_clientId.set(this, void 0);
|
|
88
91
|
_MedplumClient_clientSecret.set(this, void 0);
|
|
92
|
+
_MedplumClient_autoBatchTimerId.set(this, void 0);
|
|
89
93
|
_MedplumClient_accessToken.set(this, void 0);
|
|
90
94
|
_MedplumClient_refreshToken.set(this, void 0);
|
|
91
95
|
_MedplumClient_refreshPromise.set(this, void 0);
|
|
@@ -103,11 +107,14 @@ class MedplumClient extends EventTarget {
|
|
|
103
107
|
__classPrivateFieldSet(this, _MedplumClient_requestCache, new LRUCache(options?.resourceCacheSize ?? DEFAULT_RESOURCE_CACHE_SIZE), "f");
|
|
104
108
|
__classPrivateFieldSet(this, _MedplumClient_cacheTime, options?.cacheTime ?? DEFAULT_CACHE_TIME, "f");
|
|
105
109
|
__classPrivateFieldSet(this, _MedplumClient_baseUrl, ensureTrailingSlash(options?.baseUrl) || DEFAULT_BASE_URL, "f");
|
|
110
|
+
__classPrivateFieldSet(this, _MedplumClient_fhirBaseUrl, __classPrivateFieldGet(this, _MedplumClient_baseUrl, "f") + 'fhir/R4/', "f");
|
|
106
111
|
__classPrivateFieldSet(this, _MedplumClient_clientId, options?.clientId || '', "f");
|
|
107
112
|
__classPrivateFieldSet(this, _MedplumClient_authorizeUrl, options?.authorizeUrl || __classPrivateFieldGet(this, _MedplumClient_baseUrl, "f") + 'oauth2/authorize', "f");
|
|
108
113
|
__classPrivateFieldSet(this, _MedplumClient_tokenUrl, options?.tokenUrl || __classPrivateFieldGet(this, _MedplumClient_baseUrl, "f") + 'oauth2/token', "f");
|
|
109
114
|
__classPrivateFieldSet(this, _MedplumClient_logoutUrl, options?.logoutUrl || __classPrivateFieldGet(this, _MedplumClient_baseUrl, "f") + 'oauth2/logout', "f");
|
|
110
115
|
__classPrivateFieldSet(this, _MedplumClient_onUnauthenticated, options?.onUnauthenticated, "f");
|
|
116
|
+
__classPrivateFieldSet(this, _MedplumClient_autoBatchTime, options?.autoBatchTime ?? 0, "f");
|
|
117
|
+
__classPrivateFieldSet(this, _MedplumClient_autoBatchQueue, [], "f");
|
|
111
118
|
const activeLogin = this.getActiveLogin();
|
|
112
119
|
if (activeLogin) {
|
|
113
120
|
__classPrivateFieldSet(this, _MedplumClient_accessToken, activeLogin.accessToken, "f");
|
|
@@ -188,9 +195,27 @@ class MedplumClient extends EventTarget {
|
|
|
188
195
|
if (cached) {
|
|
189
196
|
return cached.value;
|
|
190
197
|
}
|
|
191
|
-
|
|
192
|
-
__classPrivateFieldGet(this,
|
|
193
|
-
|
|
198
|
+
let promise;
|
|
199
|
+
if (url.startsWith(__classPrivateFieldGet(this, _MedplumClient_fhirBaseUrl, "f")) && __classPrivateFieldGet(this, _MedplumClient_autoBatchTime, "f") > 0) {
|
|
200
|
+
promise = new Promise((resolve, reject) => {
|
|
201
|
+
__classPrivateFieldGet(this, _MedplumClient_autoBatchQueue, "f").push({
|
|
202
|
+
method: 'GET',
|
|
203
|
+
url: url.replace(__classPrivateFieldGet(this, _MedplumClient_fhirBaseUrl, "f"), ''),
|
|
204
|
+
options,
|
|
205
|
+
resolve,
|
|
206
|
+
reject,
|
|
207
|
+
});
|
|
208
|
+
if (!__classPrivateFieldGet(this, _MedplumClient_autoBatchTimerId, "f")) {
|
|
209
|
+
__classPrivateFieldSet(this, _MedplumClient_autoBatchTimerId, setTimeout(() => __classPrivateFieldGet(this, _MedplumClient_instances, "m", _MedplumClient_executeAutoBatch).call(this), __classPrivateFieldGet(this, _MedplumClient_autoBatchTime, "f")), "f");
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
promise = __classPrivateFieldGet(this, _MedplumClient_instances, "m", _MedplumClient_request).call(this, 'GET', url, options);
|
|
215
|
+
}
|
|
216
|
+
const readablePromise = new ReadablePromise(promise);
|
|
217
|
+
__classPrivateFieldGet(this, _MedplumClient_instances, "m", _MedplumClient_setCacheEntry).call(this, url, readablePromise);
|
|
218
|
+
return readablePromise;
|
|
194
219
|
}
|
|
195
220
|
/**
|
|
196
221
|
* Makes an HTTP POST request to the specified URL.
|
|
@@ -397,6 +422,23 @@ class MedplumClient extends EventTarget {
|
|
|
397
422
|
signOutWithRedirect() {
|
|
398
423
|
window.location.assign(__classPrivateFieldGet(this, _MedplumClient_logoutUrl, "f"));
|
|
399
424
|
}
|
|
425
|
+
/**
|
|
426
|
+
* Initiates sign in with an external identity provider.
|
|
427
|
+
* @param authorizeUrl The external authorization URL.
|
|
428
|
+
* @param clientId The external client ID.
|
|
429
|
+
* @param redirectUri The external identity provider redirect URI.
|
|
430
|
+
* @param baseLogin The Medplum login request.
|
|
431
|
+
*/
|
|
432
|
+
async signInWithExternalAuth(authorizeUrl, clientId, redirectUri, baseLogin) {
|
|
433
|
+
const loginRequest = await this.ensureCodeChallenge(baseLogin);
|
|
434
|
+
const url = new URL(authorizeUrl);
|
|
435
|
+
url.searchParams.set('response_type', 'code');
|
|
436
|
+
url.searchParams.set('client_id', clientId);
|
|
437
|
+
url.searchParams.set('redirect_uri', redirectUri);
|
|
438
|
+
url.searchParams.set('scope', 'openid profile email');
|
|
439
|
+
url.searchParams.set('state', JSON.stringify(loginRequest));
|
|
440
|
+
window.location.assign(url.toString());
|
|
441
|
+
}
|
|
400
442
|
/**
|
|
401
443
|
* Builds a FHIR URL from a collection of URL path components.
|
|
402
444
|
* For example, `buildUrl('/Patient', '123')` returns `fhir/R4/Patient/123`.
|
|
@@ -405,7 +447,7 @@ class MedplumClient extends EventTarget {
|
|
|
405
447
|
* @returns The well-formed FHIR URL.
|
|
406
448
|
*/
|
|
407
449
|
fhirUrl(...path) {
|
|
408
|
-
return new URL(__classPrivateFieldGet(this,
|
|
450
|
+
return new URL(__classPrivateFieldGet(this, _MedplumClient_fhirBaseUrl, "f") + path.join('/'));
|
|
409
451
|
}
|
|
410
452
|
/**
|
|
411
453
|
* Builds a FHIR search URL from a search query or structured query object.
|
|
@@ -1355,7 +1397,7 @@ class MedplumClient extends EventTarget {
|
|
|
1355
1397
|
return __classPrivateFieldGet(this, _MedplumClient_instances, "m", _MedplumClient_fetchTokens).call(this, formBody);
|
|
1356
1398
|
}
|
|
1357
1399
|
}
|
|
1358
|
-
_MedplumClient_fetch = new WeakMap(), _MedplumClient_createPdf = new WeakMap(), _MedplumClient_storage = new WeakMap(), _MedplumClient_requestCache = new WeakMap(), _MedplumClient_cacheTime = new WeakMap(), _MedplumClient_baseUrl = new WeakMap(), _MedplumClient_authorizeUrl = new WeakMap(), _MedplumClient_tokenUrl = new WeakMap(), _MedplumClient_logoutUrl = new WeakMap(), _MedplumClient_onUnauthenticated = new WeakMap(), _MedplumClient_clientId = new WeakMap(), _MedplumClient_clientSecret = new WeakMap(), _MedplumClient_accessToken = new WeakMap(), _MedplumClient_refreshToken = new WeakMap(), _MedplumClient_refreshPromise = new WeakMap(), _MedplumClient_profilePromise = new WeakMap(), _MedplumClient_profile = new WeakMap(), _MedplumClient_config = new WeakMap(), _MedplumClient_instances = new WeakSet(), _MedplumClient_addLogin = function _MedplumClient_addLogin(newLogin) {
|
|
1400
|
+
_MedplumClient_fetch = new WeakMap(), _MedplumClient_createPdf = new WeakMap(), _MedplumClient_storage = new WeakMap(), _MedplumClient_requestCache = new WeakMap(), _MedplumClient_cacheTime = new WeakMap(), _MedplumClient_baseUrl = new WeakMap(), _MedplumClient_fhirBaseUrl = new WeakMap(), _MedplumClient_authorizeUrl = new WeakMap(), _MedplumClient_tokenUrl = new WeakMap(), _MedplumClient_logoutUrl = new WeakMap(), _MedplumClient_onUnauthenticated = new WeakMap(), _MedplumClient_autoBatchTime = new WeakMap(), _MedplumClient_autoBatchQueue = new WeakMap(), _MedplumClient_clientId = new WeakMap(), _MedplumClient_clientSecret = new WeakMap(), _MedplumClient_autoBatchTimerId = new WeakMap(), _MedplumClient_accessToken = new WeakMap(), _MedplumClient_refreshToken = new WeakMap(), _MedplumClient_refreshPromise = new WeakMap(), _MedplumClient_profilePromise = new WeakMap(), _MedplumClient_profile = new WeakMap(), _MedplumClient_config = new WeakMap(), _MedplumClient_instances = new WeakSet(), _MedplumClient_addLogin = function _MedplumClient_addLogin(newLogin) {
|
|
1359
1401
|
const logins = this.getLogins().filter((login) => login.profile?.reference !== newLogin.profile?.reference);
|
|
1360
1402
|
logins.push(newLogin);
|
|
1361
1403
|
__classPrivateFieldGet(this, _MedplumClient_storage, "f").setObject('logins', logins);
|
|
@@ -1416,6 +1458,43 @@ async function _MedplumClient_request(method, url, options = {}) {
|
|
|
1416
1458
|
throw obj;
|
|
1417
1459
|
}
|
|
1418
1460
|
return obj;
|
|
1461
|
+
}, _MedplumClient_executeAutoBatch =
|
|
1462
|
+
/**
|
|
1463
|
+
* Executes a batch of requests that were automatically batched together.
|
|
1464
|
+
*/
|
|
1465
|
+
async function _MedplumClient_executeAutoBatch() {
|
|
1466
|
+
// Get the current queue
|
|
1467
|
+
const entries = [...__classPrivateFieldGet(this, _MedplumClient_autoBatchQueue, "f")];
|
|
1468
|
+
// Clear the queue
|
|
1469
|
+
__classPrivateFieldGet(this, _MedplumClient_autoBatchQueue, "f").length = 0;
|
|
1470
|
+
// Clear the timer
|
|
1471
|
+
__classPrivateFieldSet(this, _MedplumClient_autoBatchTimerId, undefined, "f");
|
|
1472
|
+
// If there is only one request in the batch, just execute it
|
|
1473
|
+
if (entries.length === 1) {
|
|
1474
|
+
const entry = entries[0];
|
|
1475
|
+
entry.resolve(await __classPrivateFieldGet(this, _MedplumClient_instances, "m", _MedplumClient_request).call(this, entry.method, __classPrivateFieldGet(this, _MedplumClient_fhirBaseUrl, "f") + entry.url, entry.options));
|
|
1476
|
+
return;
|
|
1477
|
+
}
|
|
1478
|
+
// Build the batch request
|
|
1479
|
+
const batch = {
|
|
1480
|
+
resourceType: 'Bundle',
|
|
1481
|
+
type: 'batch',
|
|
1482
|
+
entry: entries.map((e) => ({
|
|
1483
|
+
request: {
|
|
1484
|
+
method: e.method,
|
|
1485
|
+
url: e.url,
|
|
1486
|
+
},
|
|
1487
|
+
resource: e.options.body ? JSON.parse(e.options.body) : undefined,
|
|
1488
|
+
})),
|
|
1489
|
+
};
|
|
1490
|
+
// Execute the batch request
|
|
1491
|
+
const response = (await this.post('fhir/R4', batch));
|
|
1492
|
+
// Process the response
|
|
1493
|
+
for (let i = 0; i < entries.length; i++) {
|
|
1494
|
+
const entry = entries[i];
|
|
1495
|
+
const responseEntry = response.entry?.[i];
|
|
1496
|
+
entry.resolve(responseEntry?.resource);
|
|
1497
|
+
}
|
|
1419
1498
|
}, _MedplumClient_addFetchOptionsDefaults = function _MedplumClient_addFetchOptionsDefaults(options) {
|
|
1420
1499
|
if (!options.headers) {
|
|
1421
1500
|
options.headers = {};
|