@haste-health/client 0.15.3

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.
@@ -0,0 +1,566 @@
1
+ import { R4, R4B } from "@haste-health/fhir-types/versions";
2
+ import { OperationError, outcomeError } from "@haste-health/operation-outcomes";
3
+ import { AsynchronousClient } from "../index.js";
4
+ import { createMiddlewareAsync } from "../middleware/index.js";
5
+ function parametersToQueryString(parameters) {
6
+ return parameters
7
+ .map((p) => {
8
+ const name = p.chains ? [p.name, ...p.chains].join(".") : p.name;
9
+ return `${name}${p.modifier ? `:${p.modifier}` : ""}=${p.value
10
+ .map((v) => encodeURIComponent(v))
11
+ .join(",")}`;
12
+ })
13
+ .join("&");
14
+ }
15
+ const pathJoin = (parts, sep = "/") => parts.join(sep).replace(new RegExp(sep + "{1,}", "g"), sep);
16
+ function fhirUrlChunk(version) {
17
+ switch (version) {
18
+ case R4:
19
+ return "r4";
20
+ case R4B:
21
+ return "r4b";
22
+ default:
23
+ return version;
24
+ }
25
+ }
26
+ /**
27
+ * Used as default and for display purposes in admin app.
28
+ * @param domain HasteHealth Domain
29
+ * @param fhirVersion FHIRVersion
30
+ * @returns HasteHealth VersionedURL.
31
+ */
32
+ export const deriveHasteHealthVersionedURL = (domain, fhirVersion) => {
33
+ return new URL(pathJoin([new URL(domain).pathname, `/${fhirUrlChunk(fhirVersion)}`]), domain).toString();
34
+ };
35
+ async function toHTTPRequest(state, context, request) {
36
+ const headers = {
37
+ "Content-Type": "application/fhir+json",
38
+ ...context.headers,
39
+ };
40
+ let FHIRUrl = typeof state.url === "string"
41
+ ? deriveHasteHealthVersionedURL(state.url, request.fhirVersion)
42
+ : state.url(request.fhirVersion);
43
+ if (!FHIRUrl.endsWith("/")) {
44
+ FHIRUrl = FHIRUrl + "/";
45
+ }
46
+ if (state.getAccessToken) {
47
+ const token = await state.getAccessToken();
48
+ headers["Authorization"] = `Bearer ${token}`;
49
+ }
50
+ switch (request.type) {
51
+ case "capabilities-request": {
52
+ return { headers, url: new URL("metadata", FHIRUrl).href, method: "GET" };
53
+ }
54
+ case "create-request": {
55
+ return {
56
+ url: new URL(request.resource, FHIRUrl).href,
57
+ method: "POST",
58
+ body: JSON.stringify(request.body),
59
+ headers,
60
+ };
61
+ }
62
+ case "update-request": {
63
+ switch (request.level) {
64
+ case "instance": {
65
+ return {
66
+ url: new URL(`${request.resource}/${request.id}`, FHIRUrl).href,
67
+ method: "PUT",
68
+ body: JSON.stringify(request.body),
69
+ headers,
70
+ };
71
+ }
72
+ case "type": {
73
+ const queryString = parametersToQueryString(request.parameters);
74
+ return {
75
+ url: new URL(`${request.resource}${queryString ? `?${queryString}` : ""}`, FHIRUrl).href,
76
+ method: "PUT",
77
+ body: JSON.stringify(request.body),
78
+ headers,
79
+ };
80
+ }
81
+ default: {
82
+ throw new OperationError(outcomeError("exception", "Invalid level"));
83
+ }
84
+ }
85
+ }
86
+ case "patch-request": {
87
+ return {
88
+ url: new URL(`${request.resource}/${request.id}`, FHIRUrl).href,
89
+ method: "PATCH",
90
+ body: JSON.stringify(request.body),
91
+ headers,
92
+ };
93
+ }
94
+ case "read-request": {
95
+ return {
96
+ url: new URL(`${request.resource}/${request.id}`, FHIRUrl).href,
97
+ method: "GET",
98
+ headers,
99
+ };
100
+ }
101
+ case "vread-request": {
102
+ return {
103
+ url: new URL(`${request.resource}/${request.id}/_history/${request.versionId}`, FHIRUrl).href,
104
+ method: "GET",
105
+ headers,
106
+ };
107
+ }
108
+ case "delete-request": {
109
+ switch (request.level) {
110
+ case "instance": {
111
+ return {
112
+ url: new URL(`${request.resource}/${request.id}`, FHIRUrl).href,
113
+ method: "DELETE",
114
+ headers,
115
+ };
116
+ }
117
+ case "type": {
118
+ const queryString = parametersToQueryString(request.parameters);
119
+ return {
120
+ url: new URL(`${request.resource}${queryString ? `?${queryString}` : ""}`, FHIRUrl).href,
121
+ method: "DELETE",
122
+ headers,
123
+ };
124
+ }
125
+ case "system": {
126
+ const queryString = parametersToQueryString(request.parameters);
127
+ return {
128
+ url: new URL(`${queryString ? `?${queryString}` : ""}`, FHIRUrl)
129
+ .href,
130
+ method: "DELETE",
131
+ headers,
132
+ };
133
+ }
134
+ }
135
+ throw new OperationError(outcomeError("exception", "Invalid level"));
136
+ }
137
+ case "history-request": {
138
+ let historyUrl;
139
+ const queryString = parametersToQueryString(request.parameters || []);
140
+ switch (request.level) {
141
+ case "instance": {
142
+ historyUrl = new URL(`${request.resource}/${request.id}/_history`, FHIRUrl).href;
143
+ break;
144
+ }
145
+ case "type": {
146
+ historyUrl = new URL(`${request.resource}/_history`, FHIRUrl).href;
147
+ break;
148
+ }
149
+ case "system": {
150
+ historyUrl = new URL(`_history`, FHIRUrl).href;
151
+ break;
152
+ }
153
+ }
154
+ return {
155
+ url: new URL(`${queryString ? `?${queryString}` : ""}`, historyUrl)
156
+ .href,
157
+ method: "GET",
158
+ headers,
159
+ };
160
+ }
161
+ case "batch-request":
162
+ case "transaction-request": {
163
+ return {
164
+ url: FHIRUrl,
165
+ method: "POST",
166
+ body: JSON.stringify(request.body),
167
+ headers,
168
+ };
169
+ }
170
+ case "search-request": {
171
+ const queryString = parametersToQueryString(request.parameters);
172
+ let searchURL;
173
+ switch (request.level) {
174
+ case "type":
175
+ searchURL = new URL(`${request.resource}${queryString ? `?${queryString}` : ""}`, FHIRUrl).href;
176
+ break;
177
+ case "system":
178
+ searchURL = new URL(`${queryString ? `?${queryString}` : ""}`, FHIRUrl).href;
179
+ break;
180
+ }
181
+ return {
182
+ url: searchURL,
183
+ method: "GET",
184
+ headers,
185
+ };
186
+ }
187
+ case "invoke-request": {
188
+ let invokeURL;
189
+ switch (request.level) {
190
+ case "instance":
191
+ invokeURL = new URL(`${request.resource}/${request.id}/$${request.operation}`, FHIRUrl).href;
192
+ break;
193
+ case "type":
194
+ invokeURL = new URL(`${request.resource}/$${request.operation}`, FHIRUrl).href;
195
+ break;
196
+ case "system":
197
+ invokeURL = new URL(`$${request.operation}`, FHIRUrl).href;
198
+ break;
199
+ }
200
+ return {
201
+ url: invokeURL,
202
+ method: "POST",
203
+ body: JSON.stringify(request.body),
204
+ headers,
205
+ };
206
+ }
207
+ }
208
+ }
209
+ export class ResponseError extends Error {
210
+ _request;
211
+ _response;
212
+ constructor(request, response) {
213
+ super();
214
+ this._request = request;
215
+ this._response = response;
216
+ }
217
+ get response() {
218
+ return this._response;
219
+ }
220
+ get request() {
221
+ return this._request;
222
+ }
223
+ }
224
+ export function isResponseError(e) {
225
+ return e instanceof ResponseError;
226
+ }
227
+ async function httpResponseToFHIRResponse(request, response) {
228
+ if (response.status >= 400) {
229
+ switch (response.status) {
230
+ case 401: {
231
+ throw new ResponseError(request, {
232
+ fhirVersion: request.fhirVersion,
233
+ level: request.level,
234
+ type: "error-response",
235
+ body: outcomeError("login", "Unauthorized"),
236
+ http: {
237
+ status: response.status,
238
+ headers: Object.fromEntries(response.headers),
239
+ },
240
+ });
241
+ }
242
+ case 403: {
243
+ throw new ResponseError(request, {
244
+ fhirVersion: request.fhirVersion,
245
+ level: request.level,
246
+ type: "error-response",
247
+ body: outcomeError("forbidden", "Forbidden"),
248
+ http: {
249
+ status: response.status,
250
+ headers: Object.fromEntries(response.headers),
251
+ },
252
+ });
253
+ }
254
+ default: {
255
+ if (!response.body)
256
+ throw new Error(response.statusText);
257
+ const oo = await response.json();
258
+ if (!("resourceType" in oo) || oo.resourceType !== "OperationOutcome") {
259
+ throw new Error(response.statusText);
260
+ }
261
+ throw new ResponseError(request, {
262
+ fhirVersion: request.fhirVersion,
263
+ level: request.level,
264
+ type: "error-response",
265
+ body: oo,
266
+ http: {
267
+ status: response.status,
268
+ headers: Object.fromEntries(response.headers),
269
+ },
270
+ });
271
+ }
272
+ }
273
+ }
274
+ switch (request.type) {
275
+ case "invoke-request": {
276
+ if (!response.body)
277
+ throw new OperationError(outcomeError("exception", "No response body"));
278
+ const parameters = await response.json();
279
+ switch (request.level) {
280
+ case "system": {
281
+ return {
282
+ fhirVersion: request.fhirVersion,
283
+ type: "invoke-response",
284
+ operation: request.operation,
285
+ level: "system",
286
+ body: parameters,
287
+ };
288
+ }
289
+ case "type": {
290
+ return {
291
+ fhirVersion: request.fhirVersion,
292
+ type: "invoke-response",
293
+ operation: request.operation,
294
+ level: "type",
295
+ resource: request.resource,
296
+ body: parameters,
297
+ };
298
+ }
299
+ case "instance": {
300
+ return {
301
+ fhirVersion: request.fhirVersion,
302
+ type: "invoke-response",
303
+ operation: request.operation,
304
+ level: "instance",
305
+ resource: request.resource,
306
+ id: request.id,
307
+ body: parameters,
308
+ };
309
+ }
310
+ }
311
+ throw new OperationError(outcomeError("exception", "Invalid level"));
312
+ }
313
+ case "read-request": {
314
+ if (!response.body)
315
+ throw new OperationError(outcomeError("exception", "No response body"));
316
+ const resource = await response.json();
317
+ return {
318
+ fhirVersion: request.fhirVersion,
319
+ level: "instance",
320
+ type: "read-response",
321
+ resource: request.resource,
322
+ id: request.id,
323
+ body: resource,
324
+ };
325
+ }
326
+ case "vread-request": {
327
+ if (!response.body)
328
+ throw new OperationError(outcomeError("exception", "No response body"));
329
+ const vresource = await response.json();
330
+ return {
331
+ fhirVersion: request.fhirVersion,
332
+ level: "instance",
333
+ type: "vread-response",
334
+ resource: request.resource,
335
+ id: request.id,
336
+ versionId: request.versionId,
337
+ body: vresource,
338
+ };
339
+ }
340
+ case "update-request": {
341
+ if (!response.body)
342
+ throw new OperationError(outcomeError("exception", "No response body"));
343
+ const uresource = await response.json();
344
+ switch (request.level) {
345
+ case "instance": {
346
+ return {
347
+ fhirVersion: request.fhirVersion,
348
+ type: "update-response",
349
+ level: "instance",
350
+ resource: request.resource,
351
+ id: request.id,
352
+ body: uresource,
353
+ };
354
+ }
355
+ case "type": {
356
+ const location = response.headers.get("Location") ?? "";
357
+ const parts = location.split("/");
358
+ return {
359
+ fhirVersion: request.fhirVersion,
360
+ type: "update-response",
361
+ level: "instance",
362
+ resource: request.resource,
363
+ id: parts[parts.length - 1],
364
+ body: uresource,
365
+ };
366
+ }
367
+ default: {
368
+ throw new OperationError(outcomeError("exception", "Invalid level"));
369
+ }
370
+ }
371
+ }
372
+ case "patch-request": {
373
+ if (!response.body)
374
+ throw new OperationError(outcomeError("exception", "No response body"));
375
+ const presource = await response.json();
376
+ return {
377
+ fhirVersion: request.fhirVersion,
378
+ type: "patch-response",
379
+ level: "instance",
380
+ resource: request.resource,
381
+ id: request.id,
382
+ body: presource,
383
+ };
384
+ }
385
+ case "delete-request": {
386
+ switch (request.level) {
387
+ case "instance": {
388
+ return {
389
+ fhirVersion: request.fhirVersion,
390
+ type: "delete-response",
391
+ level: "instance",
392
+ resource: request.resource,
393
+ id: request.id,
394
+ };
395
+ }
396
+ case "type": {
397
+ return {
398
+ fhirVersion: request.fhirVersion,
399
+ type: "delete-response",
400
+ level: "type",
401
+ resource: request.resource,
402
+ parameters: request.parameters,
403
+ };
404
+ }
405
+ case "system": {
406
+ return {
407
+ fhirVersion: request.fhirVersion,
408
+ type: "delete-response",
409
+ level: "system",
410
+ parameters: request.parameters,
411
+ };
412
+ }
413
+ }
414
+ throw new OperationError(outcomeError("exception", "Invalid level"));
415
+ }
416
+ case "history-request": {
417
+ if (!response.body)
418
+ throw new OperationError(outcomeError("exception", "No response body"));
419
+ const bundle = (await response.json());
420
+ switch (request.level) {
421
+ case "system": {
422
+ return {
423
+ fhirVersion: request.fhirVersion,
424
+ type: "history-response",
425
+ level: "system",
426
+ body: bundle,
427
+ };
428
+ }
429
+ case "type": {
430
+ return {
431
+ fhirVersion: request.fhirVersion,
432
+ type: "history-response",
433
+ level: "type",
434
+ resource: request.resource,
435
+ body: bundle,
436
+ };
437
+ }
438
+ case "instance": {
439
+ return {
440
+ fhirVersion: request.fhirVersion,
441
+ type: "history-response",
442
+ level: "instance",
443
+ resource: request.resource,
444
+ id: request.id,
445
+ body: bundle,
446
+ };
447
+ }
448
+ }
449
+ throw new OperationError(outcomeError("exception", "Invalid level"));
450
+ }
451
+ case "create-request": {
452
+ if (!response.body)
453
+ throw new OperationError(outcomeError("exception", "No response body"));
454
+ const resource = await response.json();
455
+ return {
456
+ fhirVersion: request.fhirVersion,
457
+ type: "create-response",
458
+ level: "type",
459
+ resource: request.resource,
460
+ body: resource,
461
+ };
462
+ }
463
+ case "search-request": {
464
+ if (!response.body)
465
+ throw new OperationError(outcomeError("exception", "No response body"));
466
+ const bundle = (await response.json());
467
+ switch (request.level) {
468
+ case "system": {
469
+ return {
470
+ fhirVersion: request.fhirVersion,
471
+ type: "search-response",
472
+ level: "system",
473
+ parameters: request.parameters,
474
+ body: bundle,
475
+ };
476
+ }
477
+ case "type": {
478
+ return {
479
+ fhirVersion: request.fhirVersion,
480
+ type: "search-response",
481
+ level: "type",
482
+ parameters: request.parameters,
483
+ resource: request.resource,
484
+ body: bundle,
485
+ };
486
+ }
487
+ }
488
+ throw new OperationError(outcomeError("exception", "Invalid level"));
489
+ }
490
+ case "capabilities-request": {
491
+ if (!response.body)
492
+ throw new OperationError(outcomeError("exception", "No response body"));
493
+ const capabilities = await response.json();
494
+ return {
495
+ fhirVersion: request.fhirVersion,
496
+ level: "system",
497
+ type: "capabilities-response",
498
+ body: capabilities,
499
+ };
500
+ }
501
+ case "batch-request": {
502
+ if (!response.body)
503
+ throw new OperationError(outcomeError("exception", "No response body"));
504
+ const batch = await response.json();
505
+ return {
506
+ fhirVersion: request.fhirVersion,
507
+ type: "batch-response",
508
+ level: "system",
509
+ body: batch,
510
+ };
511
+ }
512
+ case "transaction-request": {
513
+ if (!response.body)
514
+ throw new OperationError(outcomeError("exception", "No response body"));
515
+ const transaction = await response.json();
516
+ return {
517
+ fhirVersion: request.fhirVersion,
518
+ type: "transaction-response",
519
+ level: "system",
520
+ body: transaction,
521
+ };
522
+ }
523
+ }
524
+ }
525
+ function httpMiddleware(state) {
526
+ return createMiddlewareAsync(state, [
527
+ async (state, context) => {
528
+ try {
529
+ const httpRequest = await toHTTPRequest(state, context.ctx, context.request);
530
+ const response = await fetch(httpRequest.url, {
531
+ method: httpRequest.method,
532
+ headers: httpRequest.headers,
533
+ body: httpRequest.body,
534
+ });
535
+ const fhirResponse = await httpResponseToFHIRResponse(context.request, response);
536
+ fhirResponse.http = {
537
+ status: response.status,
538
+ headers: Object.fromEntries(response.headers),
539
+ };
540
+ return [
541
+ state,
542
+ {
543
+ ...context,
544
+ response: fhirResponse,
545
+ },
546
+ ];
547
+ }
548
+ catch (e) {
549
+ if (isResponseError(e)) {
550
+ if (e.response.body.issue[0].code === "login") {
551
+ if (state.authenticate) {
552
+ state.authenticate();
553
+ }
554
+ }
555
+ }
556
+ throw e;
557
+ }
558
+ },
559
+ ]);
560
+ }
561
+ export default function createHTTPClient(initialState) {
562
+ // Removing trailing slash
563
+ const middleware = httpMiddleware(initialState);
564
+ return new AsynchronousClient(middleware);
565
+ }
566
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,39 @@
1
+ import { code } from "@haste-health/fhir-types/r4/types";
2
+ import { AllResourceTypes, FHIR_VERSION, Resource, ResourceType } from "@haste-health/fhir-types/versions";
3
+ import type { IOperation } from "@haste-health/operation-execution";
4
+ import type { FHIRClientAsync, InvokeParameter } from "./interface.js";
5
+ import { MiddlewareAsync } from "./middleware/index.js";
6
+ import type { AllInteractions, FHIRRequest, FHIRResponse } from "./types/index.js";
7
+ import type { ParsedParameter } from "./url.js";
8
+ export declare class AsynchronousClient<CTX> implements FHIRClientAsync<CTX> {
9
+ private readonly _middleware;
10
+ constructor(middleware: MiddlewareAsync<CTX>);
11
+ get middleware(): MiddlewareAsync<CTX>;
12
+ request<Version extends FHIR_VERSION, I extends AllInteractions>(ctx: CTX, request: FHIRRequest<Version, I>): Promise<FHIRResponse<Version, I | "error">>;
13
+ capabilities<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion): Promise<Resource<FHIRVersion, "CapabilityStatement">>;
14
+ search_system<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion, parameters: ParsedParameter<string | number>[] | string): Promise<{
15
+ total?: number;
16
+ resources: Resource<FHIRVersion, ResourceType<FHIRVersion>>[];
17
+ }>;
18
+ search_type<Version extends FHIR_VERSION, T extends ResourceType<Version>>(ctx: CTX, fhirVersion: Version, type: T, parameters: ParsedParameter<string | number>[] | string): Promise<{
19
+ total?: number;
20
+ resources: Resource<Version, T>[];
21
+ }>;
22
+ create<FHIRVersion extends FHIR_VERSION, T extends Resource<FHIRVersion, AllResourceTypes>>(ctx: CTX, fhirVersion: FHIRVersion, resource: T): Promise<T>;
23
+ conditionalUpdate<FHIRVersion extends FHIR_VERSION, T extends ResourceType<FHIRVersion>>(ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, parameters: ParsedParameter<string | number>[] | string, resource: Resource<FHIRVersion, T>): Promise<Resource<FHIRVersion, T>>;
24
+ update<FHIRVersion extends FHIR_VERSION, T extends ResourceType<FHIRVersion>>(ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, id: NonNullable<Resource<FHIRVersion, ResourceType<FHIRVersion>>["id"]>, resource: Resource<FHIRVersion, T>): Promise<Resource<FHIRVersion, T>>;
25
+ patch<FHIRVersion extends FHIR_VERSION, T extends ResourceType<FHIRVersion>>(ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, id: NonNullable<Resource<FHIRVersion, ResourceType<FHIRVersion>>["id"]>, patches: any): Promise<Resource<FHIRVersion, T>>;
26
+ read<FHIRVersion extends FHIR_VERSION, T extends ResourceType<FHIRVersion>>(ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, id: NonNullable<Resource<FHIRVersion, ResourceType<FHIRVersion>>["id"]>): Promise<Resource<FHIRVersion, T> | undefined>;
27
+ vread<FHIRVersion extends FHIR_VERSION, T extends ResourceType<FHIRVersion>>(ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, id: NonNullable<Resource<FHIRVersion, ResourceType<FHIRVersion>>["id"]>, versionId: NonNullable<Resource<FHIRVersion, ResourceType<FHIRVersion>>["id"]>): Promise<Resource<FHIRVersion, T> | undefined>;
28
+ delete_instance<FHIRVersion extends FHIR_VERSION, T extends ResourceType<FHIRVersion>>(ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, id: NonNullable<Resource<FHIRVersion, ResourceType<FHIRVersion>>["id"]>): Promise<void>;
29
+ delete_type<FHIRVersion extends FHIR_VERSION, T extends ResourceType<FHIRVersion>>(ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, parameters?: ParsedParameter<string | number>[] | string): Promise<void>;
30
+ delete_system<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion, parameters?: ParsedParameter<string | number>[] | string): Promise<void>;
31
+ history_system<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion, parameters?: ParsedParameter<string | number>[] | string): Promise<NonNullable<Resource<FHIRVersion, "Bundle">["entry"]>>;
32
+ history_type<FHIRVersion extends FHIR_VERSION, T extends ResourceType<FHIRVersion>>(ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, parameters?: ParsedParameter<string | number>[] | string): Promise<NonNullable<Resource<FHIRVersion, "Bundle">["entry"]>>;
33
+ history_instance<FHIRVersion extends FHIR_VERSION, T extends ResourceType<FHIRVersion>>(ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, id: NonNullable<Resource<FHIRVersion, ResourceType<FHIRVersion>>["id"]>, parameters?: ParsedParameter<string | number>[] | string): Promise<NonNullable<Resource<FHIRVersion, "Bundle">["entry"]>>;
34
+ invoke_system<FHIRVersion extends FHIR_VERSION, Op extends IOperation<any, any> | code, Input extends InvokeParameter<FHIRVersion, Op, "Input">, Output extends InvokeParameter<FHIRVersion, Op, "Output">>(op: Op, ctx: CTX, fhirVersion: FHIRVersion, input: Input): Promise<Output>;
35
+ invoke_type<FHIRVersion extends FHIR_VERSION, Op extends IOperation<any, any> | code, Input extends InvokeParameter<FHIRVersion, Op, "Input">, Output extends InvokeParameter<FHIRVersion, Op, "Output">, T extends ResourceType<FHIRVersion>>(op: Op, ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, input: Input): Promise<Output>;
36
+ invoke_instance<FHIRVersion extends FHIR_VERSION, Op extends IOperation<any, any> | code, Input extends InvokeParameter<FHIRVersion, Op, "Input">, Output extends InvokeParameter<FHIRVersion, Op, "Output">, T extends ResourceType<FHIRVersion>>(op: Op, ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, id: NonNullable<Resource<FHIRVersion, ResourceType<FHIRVersion>>["id"]>, input: Input): Promise<Output>;
37
+ transaction<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion, bundle: Resource<FHIRVersion, "Bundle">): Promise<Resource<FHIRVersion, "Bundle">>;
38
+ batch<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion, bundle: Resource<FHIRVersion, "Bundle">): Promise<Resource<FHIRVersion, "Bundle">>;
39
+ }