@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.
- package/README.md +228 -0
- package/lib/http/index.d.ts +29 -0
- package/lib/http/index.js +566 -0
- package/lib/http/index.js.map +1 -0
- package/lib/index.d.ts +39 -0
- package/lib/index.js +341 -0
- package/lib/index.js.map +1 -0
- package/lib/interface.d.ts +38 -0
- package/lib/interface.js +2 -0
- package/lib/interface.js.map +1 -0
- package/lib/middleware/index.d.ts +15 -0
- package/lib/middleware/index.js +34 -0
- package/lib/middleware/index.js.map +1 -0
- package/lib/types/index.d.ts +225 -0
- package/lib/types/index.js +2 -0
- package/lib/types/index.js.map +1 -0
- package/lib/types/r4.d.ts +257 -0
- package/lib/types/r4.js +2 -0
- package/lib/types/r4.js.map +1 -0
- package/lib/types/r4b.d.ts +257 -0
- package/lib/types/r4b.js +2 -0
- package/lib/types/r4b.js.map +1 -0
- package/lib/types/utilities.d.ts +40 -0
- package/lib/types/utilities.js +10 -0
- package/lib/types/utilities.js.map +1 -0
- package/lib/url.d.ts +51 -0
- package/lib/url.js +83 -0
- package/lib/url.js.map +1 -0
- package/package.json +45 -0
- package/src/http/index.ts +673 -0
- package/src/index.ts +555 -0
- package/src/interface.ts +203 -0
- package/src/middleware/index.test.ts +120 -0
- package/src/middleware/index.ts +95 -0
- package/src/types/index.ts +373 -0
- package/src/types/utilities.ts +62 -0
- package/src/url.test.ts +52 -0
- package/src/url.ts +141 -0
package/lib/index.js
ADDED
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { OperationError, outcomeError } from "@haste-health/operation-outcomes";
|
|
2
|
+
import { parseQuery } from "./url.js";
|
|
3
|
+
export class AsynchronousClient {
|
|
4
|
+
_middleware;
|
|
5
|
+
constructor(middleware) {
|
|
6
|
+
this._middleware = middleware;
|
|
7
|
+
}
|
|
8
|
+
get middleware() {
|
|
9
|
+
return this._middleware;
|
|
10
|
+
}
|
|
11
|
+
async request(ctx, request) {
|
|
12
|
+
const res = await this._middleware({ ctx, request });
|
|
13
|
+
if (!res.response)
|
|
14
|
+
throw new Error("No Response was returned.");
|
|
15
|
+
if (res.response.fhirVersion !== res.request.fhirVersion)
|
|
16
|
+
throw new Error(`FHIR Version mismatch '${res.response.fhirVersion}' !== '${res.request.fhirVersion}'`);
|
|
17
|
+
return res.response;
|
|
18
|
+
}
|
|
19
|
+
async capabilities(ctx, fhirVersion) {
|
|
20
|
+
const response = await this.request(ctx, {
|
|
21
|
+
fhirVersion,
|
|
22
|
+
type: "capabilities-request",
|
|
23
|
+
level: "system",
|
|
24
|
+
});
|
|
25
|
+
if (response.type !== "capabilities-response")
|
|
26
|
+
throw new Error("Unexpected response type");
|
|
27
|
+
return response.body;
|
|
28
|
+
}
|
|
29
|
+
async search_system(ctx, fhirVersion, parameters) {
|
|
30
|
+
const parsedParameters = typeof parameters === "string" || parameters === undefined
|
|
31
|
+
? parseQuery(parameters)
|
|
32
|
+
: parameters;
|
|
33
|
+
const response = await this.request(ctx, {
|
|
34
|
+
fhirVersion,
|
|
35
|
+
type: "search-request",
|
|
36
|
+
level: "system",
|
|
37
|
+
parameters: parsedParameters,
|
|
38
|
+
});
|
|
39
|
+
if (response.type !== "search-response")
|
|
40
|
+
throw new Error("Unexpected response type");
|
|
41
|
+
return {
|
|
42
|
+
total: response.body.total,
|
|
43
|
+
resources: (response.body.entry ?? []).map((e) => e.resource),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
async search_type(ctx, fhirVersion, type, parameters) {
|
|
47
|
+
const parsedParameters = typeof parameters === "string" || parameters === undefined
|
|
48
|
+
? parseQuery(parameters)
|
|
49
|
+
: parameters;
|
|
50
|
+
const response = await this.request(ctx, {
|
|
51
|
+
fhirVersion,
|
|
52
|
+
type: "search-request",
|
|
53
|
+
level: "type",
|
|
54
|
+
resource: type,
|
|
55
|
+
parameters: parsedParameters,
|
|
56
|
+
});
|
|
57
|
+
if (response.type !== "search-response")
|
|
58
|
+
throw new Error(`Unexpected response type '${response.type}'`);
|
|
59
|
+
return {
|
|
60
|
+
total: response.body.total,
|
|
61
|
+
resources: (response.body.entry ?? []).map((e) => e.resource),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async create(ctx, fhirVersion, resource) {
|
|
65
|
+
const response = await this.request(ctx, {
|
|
66
|
+
fhirVersion,
|
|
67
|
+
type: "create-request",
|
|
68
|
+
level: "type",
|
|
69
|
+
resource: resource.resourceType,
|
|
70
|
+
body: resource,
|
|
71
|
+
});
|
|
72
|
+
if (response.type !== "create-response")
|
|
73
|
+
throw new Error("Unexpected response type");
|
|
74
|
+
return response.body;
|
|
75
|
+
}
|
|
76
|
+
async conditionalUpdate(ctx, fhirVersion, resourceType, parameters, resource) {
|
|
77
|
+
const parsedParameters = typeof parameters === "string"
|
|
78
|
+
? parseQuery(parameters)
|
|
79
|
+
: parameters
|
|
80
|
+
? parameters
|
|
81
|
+
: [];
|
|
82
|
+
const response = await this.request(ctx, {
|
|
83
|
+
fhirVersion,
|
|
84
|
+
type: "update-request",
|
|
85
|
+
level: "type",
|
|
86
|
+
resource: resourceType,
|
|
87
|
+
parameters: parsedParameters,
|
|
88
|
+
body: resource,
|
|
89
|
+
});
|
|
90
|
+
if (response.type !== "update-response")
|
|
91
|
+
throw new Error("Unexpected response type");
|
|
92
|
+
return response.body;
|
|
93
|
+
}
|
|
94
|
+
async update(ctx, fhirVersion, resourceType, id, resource) {
|
|
95
|
+
if (resource.id === undefined)
|
|
96
|
+
throw new Error("Cannot update resource without id");
|
|
97
|
+
const response = await this.request(ctx, {
|
|
98
|
+
fhirVersion,
|
|
99
|
+
type: "update-request",
|
|
100
|
+
level: "instance",
|
|
101
|
+
resource: resourceType,
|
|
102
|
+
id,
|
|
103
|
+
body: resource,
|
|
104
|
+
});
|
|
105
|
+
if (response.type !== "update-response")
|
|
106
|
+
throw new Error("Unexpected response type");
|
|
107
|
+
return response.body;
|
|
108
|
+
}
|
|
109
|
+
async patch(ctx, fhirVersion, resourceType, id, patches) {
|
|
110
|
+
const response = await this.request(ctx, {
|
|
111
|
+
fhirVersion,
|
|
112
|
+
type: "patch-request",
|
|
113
|
+
level: "instance",
|
|
114
|
+
resource: resourceType,
|
|
115
|
+
id: id,
|
|
116
|
+
body: patches,
|
|
117
|
+
});
|
|
118
|
+
if (response.type !== "patch-response")
|
|
119
|
+
throw new Error("Unexpected response type");
|
|
120
|
+
return response.body;
|
|
121
|
+
}
|
|
122
|
+
async read(ctx, fhirVersion, resourceType, id) {
|
|
123
|
+
const response = await this.request(ctx, {
|
|
124
|
+
fhirVersion,
|
|
125
|
+
type: "read-request",
|
|
126
|
+
level: "instance",
|
|
127
|
+
resource: resourceType,
|
|
128
|
+
id: id,
|
|
129
|
+
});
|
|
130
|
+
if (response.type !== "read-response")
|
|
131
|
+
throw new Error("Unexpected response type");
|
|
132
|
+
return response.body;
|
|
133
|
+
}
|
|
134
|
+
async vread(ctx, fhirVersion, resourceType, id, versionId) {
|
|
135
|
+
const response = await this.request(ctx, {
|
|
136
|
+
fhirVersion,
|
|
137
|
+
type: "vread-request",
|
|
138
|
+
level: "instance",
|
|
139
|
+
resource: resourceType,
|
|
140
|
+
id: id,
|
|
141
|
+
versionId: versionId,
|
|
142
|
+
});
|
|
143
|
+
if (response.type !== "vread-response")
|
|
144
|
+
throw new Error("Unexpected response type");
|
|
145
|
+
return response.body;
|
|
146
|
+
}
|
|
147
|
+
async delete_instance(ctx, fhirVersion, resourceType, id) {
|
|
148
|
+
const response = await this.request(ctx, {
|
|
149
|
+
fhirVersion,
|
|
150
|
+
type: "delete-request",
|
|
151
|
+
level: "instance",
|
|
152
|
+
resource: resourceType,
|
|
153
|
+
id: id,
|
|
154
|
+
});
|
|
155
|
+
if (response.type !== "delete-response")
|
|
156
|
+
throw new Error("Unexpected response type");
|
|
157
|
+
}
|
|
158
|
+
async delete_type(ctx, fhirVersion, resourceType, parameters) {
|
|
159
|
+
const parsedParameters = typeof parameters === "string"
|
|
160
|
+
? parseQuery(parameters)
|
|
161
|
+
: parameters
|
|
162
|
+
? parameters
|
|
163
|
+
: [];
|
|
164
|
+
const response = await this.request(ctx, {
|
|
165
|
+
fhirVersion,
|
|
166
|
+
type: "delete-request",
|
|
167
|
+
level: "type",
|
|
168
|
+
resource: resourceType,
|
|
169
|
+
parameters: parsedParameters,
|
|
170
|
+
});
|
|
171
|
+
if (response.type !== "delete-response")
|
|
172
|
+
throw new Error("Unexpected response type");
|
|
173
|
+
}
|
|
174
|
+
async delete_system(ctx, fhirVersion, parameters) {
|
|
175
|
+
const parsedParameters = typeof parameters === "string"
|
|
176
|
+
? parseQuery(parameters)
|
|
177
|
+
: parameters
|
|
178
|
+
? parameters
|
|
179
|
+
: [];
|
|
180
|
+
const response = await this.request(ctx, {
|
|
181
|
+
fhirVersion,
|
|
182
|
+
type: "delete-request",
|
|
183
|
+
level: "system",
|
|
184
|
+
parameters: parsedParameters,
|
|
185
|
+
});
|
|
186
|
+
if (response.type !== "delete-response")
|
|
187
|
+
throw new Error("Unexpected response type");
|
|
188
|
+
}
|
|
189
|
+
async history_system(ctx, fhirVersion, parameters) {
|
|
190
|
+
const parsedParameters = typeof parameters === "string"
|
|
191
|
+
? parseQuery(parameters)
|
|
192
|
+
: parameters
|
|
193
|
+
? parameters
|
|
194
|
+
: [];
|
|
195
|
+
const response = await this.request(ctx, {
|
|
196
|
+
fhirVersion,
|
|
197
|
+
type: "history-request",
|
|
198
|
+
level: "system",
|
|
199
|
+
parameters: parsedParameters,
|
|
200
|
+
});
|
|
201
|
+
if (response.type !== "history-response")
|
|
202
|
+
throw new Error("Unexpected response type");
|
|
203
|
+
return response.body.entry ?? [];
|
|
204
|
+
}
|
|
205
|
+
async history_type(ctx, fhirVersion, resourceType, parameters) {
|
|
206
|
+
const parsedParameters = typeof parameters === "string"
|
|
207
|
+
? parseQuery(parameters)
|
|
208
|
+
: parameters
|
|
209
|
+
? parameters
|
|
210
|
+
: [];
|
|
211
|
+
const response = await this.request(ctx, {
|
|
212
|
+
fhirVersion,
|
|
213
|
+
type: "history-request",
|
|
214
|
+
level: "type",
|
|
215
|
+
resource: resourceType,
|
|
216
|
+
parameters: parsedParameters,
|
|
217
|
+
});
|
|
218
|
+
if (response.type !== "history-response")
|
|
219
|
+
throw new Error("Unexpected response type");
|
|
220
|
+
return response.body.entry ?? [];
|
|
221
|
+
}
|
|
222
|
+
async history_instance(ctx, fhirVersion, resourceType, id, parameters) {
|
|
223
|
+
const parsedParameters = typeof parameters === "string"
|
|
224
|
+
? parseQuery(parameters)
|
|
225
|
+
: parameters
|
|
226
|
+
? parameters
|
|
227
|
+
: [];
|
|
228
|
+
const response = await this.request(ctx, {
|
|
229
|
+
fhirVersion,
|
|
230
|
+
type: "history-request",
|
|
231
|
+
level: "instance",
|
|
232
|
+
resource: resourceType,
|
|
233
|
+
id: id,
|
|
234
|
+
parameters: parsedParameters,
|
|
235
|
+
});
|
|
236
|
+
if (response.type !== "history-response")
|
|
237
|
+
throw new Error("Unexpected response type");
|
|
238
|
+
return response.body.entry ?? [];
|
|
239
|
+
}
|
|
240
|
+
async invoke_system(op, ctx, fhirVersion, input) {
|
|
241
|
+
if (typeof op === "string") {
|
|
242
|
+
const response = await this.request(ctx, {
|
|
243
|
+
fhirVersion,
|
|
244
|
+
type: "invoke-request",
|
|
245
|
+
level: "system",
|
|
246
|
+
operation: op,
|
|
247
|
+
body: input,
|
|
248
|
+
});
|
|
249
|
+
return response.body;
|
|
250
|
+
}
|
|
251
|
+
const response = await this.request(ctx, {
|
|
252
|
+
fhirVersion,
|
|
253
|
+
type: "invoke-request",
|
|
254
|
+
level: "system",
|
|
255
|
+
operation: op.code,
|
|
256
|
+
body: op.parseToParameters("in", input),
|
|
257
|
+
});
|
|
258
|
+
if (response.type !== "invoke-response")
|
|
259
|
+
throw new Error("Unexpected response type");
|
|
260
|
+
return op.parseToObject("out", response.body);
|
|
261
|
+
}
|
|
262
|
+
async invoke_type(op, ctx, fhirVersion, resourceType, input) {
|
|
263
|
+
if (typeof op === "string") {
|
|
264
|
+
const response = await this.request(ctx, {
|
|
265
|
+
fhirVersion,
|
|
266
|
+
type: "invoke-request",
|
|
267
|
+
level: "type",
|
|
268
|
+
resource: resourceType,
|
|
269
|
+
operation: op,
|
|
270
|
+
body: input,
|
|
271
|
+
});
|
|
272
|
+
return response.body;
|
|
273
|
+
}
|
|
274
|
+
const response = await this.request(ctx, {
|
|
275
|
+
fhirVersion,
|
|
276
|
+
type: "invoke-request",
|
|
277
|
+
level: "type",
|
|
278
|
+
operation: op.code,
|
|
279
|
+
resource: resourceType,
|
|
280
|
+
body: op.parseToParameters("in", input),
|
|
281
|
+
});
|
|
282
|
+
if (response.type !== "invoke-response")
|
|
283
|
+
throw new Error("Unexpected response type");
|
|
284
|
+
return op.parseToObject("out", response.body);
|
|
285
|
+
}
|
|
286
|
+
async invoke_instance(op, ctx, fhirVersion, resourceType, id, input) {
|
|
287
|
+
if (typeof op === "string") {
|
|
288
|
+
const response = await this.request(ctx, {
|
|
289
|
+
fhirVersion,
|
|
290
|
+
type: "invoke-request",
|
|
291
|
+
level: "instance",
|
|
292
|
+
operation: op,
|
|
293
|
+
resource: resourceType,
|
|
294
|
+
id,
|
|
295
|
+
body: input,
|
|
296
|
+
});
|
|
297
|
+
return response.body;
|
|
298
|
+
}
|
|
299
|
+
const response = await this.request(ctx, {
|
|
300
|
+
fhirVersion,
|
|
301
|
+
type: "invoke-request",
|
|
302
|
+
level: "instance",
|
|
303
|
+
operation: op.code,
|
|
304
|
+
resource: resourceType,
|
|
305
|
+
id,
|
|
306
|
+
body: op.parseToParameters("in", input),
|
|
307
|
+
});
|
|
308
|
+
if (response.type !== "invoke-response")
|
|
309
|
+
throw new Error("Unexpected response type");
|
|
310
|
+
return op.parseToObject("out", response.body);
|
|
311
|
+
}
|
|
312
|
+
async transaction(ctx, fhirVersion, bundle) {
|
|
313
|
+
if (bundle.type !== "transaction")
|
|
314
|
+
throw new OperationError(outcomeError("invalid", "Bundle must be of type 'transaction'"));
|
|
315
|
+
const response = await this.request(ctx, {
|
|
316
|
+
fhirVersion,
|
|
317
|
+
type: "transaction-request",
|
|
318
|
+
level: "system",
|
|
319
|
+
body: bundle,
|
|
320
|
+
});
|
|
321
|
+
if (response.type !== "transaction-response") {
|
|
322
|
+
throw new OperationError(outcomeError("invalid", "response type must be 'transaction-response'"));
|
|
323
|
+
}
|
|
324
|
+
return response.body;
|
|
325
|
+
}
|
|
326
|
+
async batch(ctx, fhirVersion, bundle) {
|
|
327
|
+
if (bundle.type !== "batch")
|
|
328
|
+
throw new OperationError(outcomeError("invalid", "Bundle must be of type 'batch'"));
|
|
329
|
+
const response = await this.request(ctx, {
|
|
330
|
+
fhirVersion,
|
|
331
|
+
type: "batch-request",
|
|
332
|
+
level: "system",
|
|
333
|
+
body: bundle,
|
|
334
|
+
});
|
|
335
|
+
if (response.type !== "batch-response") {
|
|
336
|
+
throw new OperationError(outcomeError("invalid", "response type must be 'batch-response'"));
|
|
337
|
+
}
|
|
338
|
+
return response.body;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { code } from "@haste-health/fhir-types/lib/generated/r4/types";
|
|
2
|
+
import { AllResourceTypes, FHIR_VERSION, Resource, ResourceType } from "@haste-health/fhir-types/versions";
|
|
3
|
+
import type { IOperation, OPMetadata } from "@haste-health/operation-execution";
|
|
4
|
+
import { MiddlewareAsync } from "./middleware/index.js";
|
|
5
|
+
import type { AllInteractions, FHIRRequest, FHIRResponse } from "./types/index.js";
|
|
6
|
+
import type { ParsedParameter } from "./url.js";
|
|
7
|
+
export type FHIRClient<CTX> = FHIRClientAsync<CTX>;
|
|
8
|
+
export type InvokeParameter<FHIRVersion extends FHIR_VERSION, Op, direction extends "Output" | "Input"> = Op extends IOperation<any, any> ? OPMetadata<Op>[direction] : Resource<FHIRVersion, "Parameters">;
|
|
9
|
+
export interface FHIRClientAsync<CTX> {
|
|
10
|
+
request<Version extends FHIR_VERSION, I extends AllInteractions>(ctx: CTX, request: FHIRRequest<Version, I>): Promise<FHIRResponse<Version, I | "error">>;
|
|
11
|
+
middleware: MiddlewareAsync<CTX>;
|
|
12
|
+
capabilities<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion): Promise<Resource<FHIRVersion, "CapabilityStatement">>;
|
|
13
|
+
search_system<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion, parameters: ParsedParameter<string | number>[] | string): Promise<{
|
|
14
|
+
total?: number;
|
|
15
|
+
resources: Resource<FHIRVersion, ResourceType<FHIRVersion>>[];
|
|
16
|
+
}>;
|
|
17
|
+
search_type<FHIRVersion extends FHIR_VERSION, T extends ResourceType<FHIRVersion>>(ctx: CTX, fhirVersion: FHIRVersion, type: T, parameters: ParsedParameter<string | number>[] | string): Promise<{
|
|
18
|
+
total?: number;
|
|
19
|
+
resources: Resource<FHIRVersion, T>[];
|
|
20
|
+
}>;
|
|
21
|
+
create<FHIRVersion extends FHIR_VERSION, Value extends Resource<FHIRVersion, AllResourceTypes>>(ctx: CTX, fhirVersion: FHIRVersion, resource: Value): Promise<Value>;
|
|
22
|
+
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>>;
|
|
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
|
+
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>>;
|
|
25
|
+
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>;
|
|
26
|
+
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>;
|
|
27
|
+
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>;
|
|
28
|
+
delete_type<FHIRVersion extends FHIR_VERSION, T extends ResourceType<FHIRVersion>>(ctx: CTX, fhirVersion: FHIRVersion, resourceType: T, parameters?: ParsedParameter<string | number>[] | string): Promise<void>;
|
|
29
|
+
delete_system<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion, parameters?: ParsedParameter<string | number>[] | string): Promise<void>;
|
|
30
|
+
history_system<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion, parameters?: ParsedParameter<string | number>[] | string): Promise<NonNullable<Resource<FHIRVersion, "Bundle">["entry"]>>;
|
|
31
|
+
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"]>>;
|
|
32
|
+
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"]>>;
|
|
33
|
+
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>;
|
|
34
|
+
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>;
|
|
35
|
+
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>;
|
|
36
|
+
transaction<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion, bundle: Resource<FHIRVersion, "Bundle">): Promise<Resource<FHIRVersion, "Bundle">>;
|
|
37
|
+
batch<FHIRVersion extends FHIR_VERSION>(ctx: CTX, fhirVersion: FHIRVersion, bundle: Resource<FHIRVersion, "Bundle">): Promise<Resource<FHIRVersion, "Bundle">>;
|
|
38
|
+
}
|
package/lib/interface.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../src/interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FHIR_VERSION } from "@haste-health/fhir-types/versions";
|
|
2
|
+
import { AllInteractions, FHIRRequest, FHIRResponse } from "../types/index.js";
|
|
3
|
+
type Context<CTX, Request, Response> = {
|
|
4
|
+
key?: string;
|
|
5
|
+
ctx: CTX;
|
|
6
|
+
request: Request;
|
|
7
|
+
response?: Response;
|
|
8
|
+
};
|
|
9
|
+
export type MiddlewareAsyncChain<State, CTX, Request = FHIRRequest<FHIR_VERSION, AllInteractions>, Response = FHIRResponse<FHIR_VERSION, AllInteractions | "error">> = (state: State, ctx: Context<CTX, Request, Response>, next: Next<State, CTX, Request, Response>) => Promise<[State, Context<CTX, Request, Response>]>;
|
|
10
|
+
type Next<State, CTX, Request = FHIRRequest<FHIR_VERSION, AllInteractions>, Response = FHIRResponse<FHIR_VERSION, AllInteractions | "error">> = (state: State, context: Context<CTX, Request, Response>) => Promise<[State, Context<CTX, Request, Response>]>;
|
|
11
|
+
export type MiddlewareAsync<CTX, Request = FHIRRequest<FHIR_VERSION, AllInteractions>, Response = FHIRResponse<FHIR_VERSION, AllInteractions | "error">> = (ctx: Context<CTX, Request, Response>) => Promise<Context<CTX, Request, Response>>;
|
|
12
|
+
export declare function createMiddlewareAsync<State, CTX, Request = FHIRRequest<FHIR_VERSION, AllInteractions>, Response = FHIRResponse<FHIR_VERSION, AllInteractions | "error">>(_state: State, middlewareChain: MiddlewareAsyncChain<State, CTX, Request, Response>[], options?: {
|
|
13
|
+
logging?: boolean;
|
|
14
|
+
}): MiddlewareAsync<CTX, Request, Response>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
function createNext(middlewareChain, options = { logging: false }) {
|
|
2
|
+
const [first, ...rest] = middlewareChain;
|
|
3
|
+
if (first) {
|
|
4
|
+
return async (state, context) => {
|
|
5
|
+
if (options.logging)
|
|
6
|
+
console.time(`${context.key}:${first.name}`);
|
|
7
|
+
const response = await first(state, context, createNext(rest));
|
|
8
|
+
if (options.logging)
|
|
9
|
+
console.timeEnd(`${context.key}:${first.name}`);
|
|
10
|
+
return response;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
// placeholder.
|
|
15
|
+
return async (state, context) => {
|
|
16
|
+
return [state, context];
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function createMiddlewareAsync(_state, middlewareChain, options = { logging: false }) {
|
|
21
|
+
let state = _state;
|
|
22
|
+
return async (context) => {
|
|
23
|
+
const [first, ...rest] = middlewareChain;
|
|
24
|
+
context.key = context.key ?? Math.ceil(Math.random() * 10000).toString();
|
|
25
|
+
if (options.logging)
|
|
26
|
+
console.time(`${context.key}:${first.name}`);
|
|
27
|
+
const [nextState, response] = await first(state, context, createNext(rest, options));
|
|
28
|
+
state = nextState;
|
|
29
|
+
if (options.logging)
|
|
30
|
+
console.timeEnd(`${context.key}:${first.name}`);
|
|
31
|
+
return response;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAwCA,SAAS,UAAU,CAMjB,eAAsE,EACtE,UAAiC,EAAE,OAAO,EAAE,KAAK,EAAE;IAEnD,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,eAAe,CAAC;IAEzC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC9B,IAAI,OAAO,CAAC,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,IAAI,OAAO,CAAC,OAAO;gBAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACrE,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,eAAe;QACf,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC9B,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAMnC,MAAa,EACb,eAAsE,EACtE,UAAiC,EAAE,OAAO,EAAE,KAAK,EAAE;IAEnD,IAAI,KAAK,GAAG,MAAM,CAAC;IAEnB,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,eAAe,CAAC;QACzC,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEzE,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAElE,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,KAAK,CACvC,KAAK,EACL,OAAO,EACP,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAC1B,CAAC;QACF,KAAK,GAAG,SAAS,CAAC;QAElB,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
|