@haste-health/operation-execution 0.14.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 +1 -0
- package/lib/index.d.ts +37 -0
- package/lib/index.js +301 -0
- package/lib/index.js.map +1 -0
- package/package.json +36 -0
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# operation_execution
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { OperationDefinition, OperationOutcomeIssue, Parameters, Resource, code } from "@haste-health/fhir-types/r4/types";
|
|
2
|
+
import type { ValidationCTX } from "@haste-health/fhir-validation/types";
|
|
3
|
+
type ParameterDefinitions = NonNullable<OperationDefinition["parameter"]>;
|
|
4
|
+
export declare function mapToParameter(definition: NonNullable<ParameterDefinitions[number]>, use: "out" | "in", valueMap: any): NonNullable<Parameters["parameter"]>;
|
|
5
|
+
export declare function toParametersResource(operationDefinition: OperationDefinition, use: "out" | "in", value: Record<string, unknown>): Parameters;
|
|
6
|
+
export declare function parseParameters(operationDefinition: OperationDefinition, use: "out" | "in", parameters: Parameters): Record<string, unknown>;
|
|
7
|
+
type InputOutput<I, O> = {
|
|
8
|
+
in: I;
|
|
9
|
+
out: O;
|
|
10
|
+
};
|
|
11
|
+
export declare function isParameters(input: unknown): input is Parameters;
|
|
12
|
+
export interface OpCTX extends ValidationCTX {
|
|
13
|
+
level: "system" | "type" | "instance";
|
|
14
|
+
}
|
|
15
|
+
export interface IOperation<I, O> {
|
|
16
|
+
code: code;
|
|
17
|
+
get operationDefinition(): OperationDefinition;
|
|
18
|
+
parseToObject<Use extends "in" | "out">(use: Use, input: unknown): InputOutput<I, O>[Use];
|
|
19
|
+
parseToParameters<Use extends "in" | "out">(use: Use, input: InputOutput<I, O>[Use]): Parameters | I | O;
|
|
20
|
+
validate<Use extends "in" | "out">(ctx: OpCTX, use: Use, value: unknown): Promise<OperationOutcomeIssue[]>;
|
|
21
|
+
}
|
|
22
|
+
export type Executor<CTX, I, O> = (ctx: CTX, input: I) => Promise<O>;
|
|
23
|
+
export type OPMetadata<O> = O extends IOperation<infer Input, infer Output> ? {
|
|
24
|
+
Input: Input;
|
|
25
|
+
Output: Output;
|
|
26
|
+
} : never;
|
|
27
|
+
export declare class Operation<I, O> implements IOperation<I, O> {
|
|
28
|
+
private _operationDefinition;
|
|
29
|
+
code: code;
|
|
30
|
+
constructor(operationDefinition: OperationDefinition);
|
|
31
|
+
get operationDefinition(): OperationDefinition;
|
|
32
|
+
parseToObject<Use extends "in" | "out">(use: Use, passedInInput: Parameters | Resource): InputOutput<I, O>[Use];
|
|
33
|
+
parseToParameters(use: "in" | "out", input: I | O): Parameters | I | O;
|
|
34
|
+
validate<Use extends "in" | "out">(ctx: OpCTX, use: Use, value: unknown): Promise<OperationOutcomeIssue[]>;
|
|
35
|
+
}
|
|
36
|
+
export type Invocation = <T extends IOperation<unknown, unknown>, CTX extends OpCTX>(op: T, ctx: CTX, input: OPMetadata<T>["Input"]) => Promise<OPMetadata<T>["Output"]>;
|
|
37
|
+
export {};
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import { descend, typedPointer } from "@haste-health/fhir-pointer";
|
|
2
|
+
import { resourceTypes } from "@haste-health/fhir-types/r4/sets";
|
|
3
|
+
import validate from "@haste-health/fhir-validation";
|
|
4
|
+
import { OperationError, issueError, outcomeError, } from "@haste-health/operation-outcomes";
|
|
5
|
+
function capitalize(string) {
|
|
6
|
+
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
7
|
+
}
|
|
8
|
+
export function mapToParameter(definition, use, valueMap) {
|
|
9
|
+
const isArray = definition.max !== "1";
|
|
10
|
+
let value = valueMap[definition.name];
|
|
11
|
+
if (value === undefined || value === null)
|
|
12
|
+
return [];
|
|
13
|
+
if (!isArray)
|
|
14
|
+
value = [value];
|
|
15
|
+
if (isArray && !Array.isArray(value))
|
|
16
|
+
value = [value];
|
|
17
|
+
const params = value.map((value) => {
|
|
18
|
+
if (definition.type) {
|
|
19
|
+
if (definition.type === "Type")
|
|
20
|
+
throw new Error("Cannot process 'Type'");
|
|
21
|
+
if (definition.type === "Any" || resourceTypes.has(definition.type)) {
|
|
22
|
+
return { name: definition.name, resource: value };
|
|
23
|
+
}
|
|
24
|
+
const fieldName = `value${capitalize(definition.type || "")}`;
|
|
25
|
+
return {
|
|
26
|
+
name: definition.name,
|
|
27
|
+
[fieldName]: value,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
if (!definition.part)
|
|
32
|
+
throw new OperationError(outcomeError("invalid", `No type or part found on parameter definition ${definition.name}`));
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
name: definition.name,
|
|
36
|
+
part: definition.part
|
|
37
|
+
.map((partDefinition) => {
|
|
38
|
+
return mapToParameter(partDefinition, use, value);
|
|
39
|
+
})
|
|
40
|
+
.flat(),
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
return params;
|
|
44
|
+
}
|
|
45
|
+
export function toParametersResource(operationDefinition, use, value) {
|
|
46
|
+
const definitions = operationDefinition.parameter?.filter((param) => param.use === use) || [];
|
|
47
|
+
const parameters = {
|
|
48
|
+
resourceType: "Parameters",
|
|
49
|
+
parameter: definitions
|
|
50
|
+
.map((definition) => mapToParameter(definition, use, value))
|
|
51
|
+
.flat(),
|
|
52
|
+
};
|
|
53
|
+
return parameters;
|
|
54
|
+
}
|
|
55
|
+
function validateNoExtraFields(definitions, use, parameters) {
|
|
56
|
+
const definitionNames = new Set(definitions
|
|
57
|
+
.filter((d) => d.use === use)
|
|
58
|
+
.map((definition) => definition.name));
|
|
59
|
+
const paramNames = new Set(parameters.map((param) => param.name));
|
|
60
|
+
paramNames.forEach((paramName) => {
|
|
61
|
+
if (!definitionNames.has(paramName)) {
|
|
62
|
+
throw new OperationError(outcomeError("invalid", `Parameter '${paramName}' not supported`));
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function parseParameter(definition, use, parameters) {
|
|
67
|
+
const isRequired = definition.min > 1;
|
|
68
|
+
const isArray = definition.max !== "1";
|
|
69
|
+
const parsedParameters = parameters
|
|
70
|
+
.map((param) => {
|
|
71
|
+
if (definition.type || definition.searchType) {
|
|
72
|
+
if (definition.type === "Any" ||
|
|
73
|
+
resourceTypes.has(definition.type || "")) {
|
|
74
|
+
return param.resource;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
if (!definition.type) {
|
|
78
|
+
throw new OperationError(outcomeError("invalid", `No type found on parameter definition ${definition.name}`));
|
|
79
|
+
}
|
|
80
|
+
// if (definition.searchType)
|
|
81
|
+
// throw new OperationError(
|
|
82
|
+
// outcomeError("not-supported", `SearchType not supported`)
|
|
83
|
+
// );
|
|
84
|
+
if (definition.type === "Type")
|
|
85
|
+
throw new Error("Cannot process 'Type'");
|
|
86
|
+
// @ts-ignore
|
|
87
|
+
return param[`value${capitalize(definition.type || "")}`];
|
|
88
|
+
}
|
|
89
|
+
// Means this is a primitive
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
if (!definition.part)
|
|
93
|
+
throw new OperationError(outcomeError("invalid", `No type or part found on parameter definition ${definition.name}`));
|
|
94
|
+
validateNoExtraFields(definition.part, use, param.part || []);
|
|
95
|
+
return (definition.part || []).reduce((acc, paramDefinition) => {
|
|
96
|
+
const parsedParam = parseParameter(paramDefinition, use, (param.part || []).filter((param) => param.name === paramDefinition.name));
|
|
97
|
+
if (parsedParam !== undefined)
|
|
98
|
+
acc[paramDefinition.name] = parsedParam;
|
|
99
|
+
return acc;
|
|
100
|
+
}, {});
|
|
101
|
+
}
|
|
102
|
+
})
|
|
103
|
+
.filter((v) => v !== undefined);
|
|
104
|
+
if (isRequired && parsedParameters.length === 0)
|
|
105
|
+
throw new OperationError(outcomeError("required", `Missing required parameter ${definition.name}`));
|
|
106
|
+
if (definition.max !== "*" &&
|
|
107
|
+
parsedParameters.length > parseInt(definition.max)) {
|
|
108
|
+
throw new OperationError(outcomeError("too-costly", `Too many parameters ${definition.name}`));
|
|
109
|
+
}
|
|
110
|
+
if (!isArray) {
|
|
111
|
+
return parsedParameters[0];
|
|
112
|
+
}
|
|
113
|
+
return parsedParameters.length > 0 ? parsedParameters : undefined;
|
|
114
|
+
}
|
|
115
|
+
export function parseParameters(operationDefinition, use, parameters) {
|
|
116
|
+
const paramDefinitions = operationDefinition.parameter?.filter((param) => param.use === use) || [];
|
|
117
|
+
validateNoExtraFields(paramDefinitions, use, parameters.parameter || []);
|
|
118
|
+
const parametersParsed = paramDefinitions.reduce((parametersParsed, parameterDefinition) => {
|
|
119
|
+
const curParameters = parameters.parameter?.filter((param) => param.name === parameterDefinition.name) || [];
|
|
120
|
+
const parsedParam = parseParameter(parameterDefinition, use, curParameters);
|
|
121
|
+
if (parsedParam !== undefined) {
|
|
122
|
+
parametersParsed[parameterDefinition.name] = parsedParam;
|
|
123
|
+
}
|
|
124
|
+
return parametersParsed;
|
|
125
|
+
}, {});
|
|
126
|
+
return parametersParsed;
|
|
127
|
+
}
|
|
128
|
+
export function isParameters(input) {
|
|
129
|
+
return (Object.prototype.hasOwnProperty.call(input, "resourceType") &&
|
|
130
|
+
input.resourceType === "Parameters");
|
|
131
|
+
}
|
|
132
|
+
function isRecord(input) {
|
|
133
|
+
return typeof input === "object" && input !== null;
|
|
134
|
+
}
|
|
135
|
+
function validateRequired(definitions, value) {
|
|
136
|
+
return definitions
|
|
137
|
+
.filter((d) => d.min > 0)
|
|
138
|
+
.reduce((issues, definition) => {
|
|
139
|
+
if (!(definition.name in value))
|
|
140
|
+
return [
|
|
141
|
+
...issues,
|
|
142
|
+
issueError("required", `Missing required parameter '${definition.name}'`),
|
|
143
|
+
];
|
|
144
|
+
return issues;
|
|
145
|
+
}, []);
|
|
146
|
+
}
|
|
147
|
+
function validateCardinalities(definition, value) {
|
|
148
|
+
if (definition.min > value.length)
|
|
149
|
+
throw new OperationError(outcomeError("required", `Must have '${definition.min}' minimum for field ${definition.min}`));
|
|
150
|
+
if (definition.max !== "*" && value.length > parseInt(definition.max)) {
|
|
151
|
+
throw new OperationError(outcomeError("too-costly", `Too many parameters ${definition.name}`));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
async function validateParameter(ctx, paramDefinition, use, value) {
|
|
155
|
+
let arr = (value = Array.isArray(value) ? value : [value]);
|
|
156
|
+
validateCardinalities(paramDefinition, value);
|
|
157
|
+
let issues = [];
|
|
158
|
+
for (const index in arr) {
|
|
159
|
+
if (paramDefinition.type) {
|
|
160
|
+
const type = paramDefinition.type === "Any" ||
|
|
161
|
+
paramDefinition.type === "Resource" ||
|
|
162
|
+
paramDefinition.type === "DomainResource"
|
|
163
|
+
? arr[index].resourceType
|
|
164
|
+
: paramDefinition.type;
|
|
165
|
+
issues = [
|
|
166
|
+
...issues,
|
|
167
|
+
...(await validate(ctx, type, arr, descend(typedPointer(), index))),
|
|
168
|
+
];
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
if (!paramDefinition.part) {
|
|
172
|
+
issues = [
|
|
173
|
+
...issues,
|
|
174
|
+
issueError("invalid", `Invalid definition '${paramDefinition.name}' must have either part or type`),
|
|
175
|
+
];
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
issues = [
|
|
179
|
+
...issues,
|
|
180
|
+
...validateRequired(paramDefinition.part, arr[index]),
|
|
181
|
+
];
|
|
182
|
+
for (const part of paramDefinition.part) {
|
|
183
|
+
if (!isRecord(arr[index])) {
|
|
184
|
+
issues = [
|
|
185
|
+
...issues,
|
|
186
|
+
issueError("invalid", `Parameter ${part.name} must be an object found: '${arr[index]}'`),
|
|
187
|
+
];
|
|
188
|
+
}
|
|
189
|
+
issues = [
|
|
190
|
+
...issues,
|
|
191
|
+
...(await validateParameter(ctx, part, use, arr[index][part.name])),
|
|
192
|
+
];
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return issues;
|
|
198
|
+
}
|
|
199
|
+
async function validateParameters(ctx, op, use, value) {
|
|
200
|
+
let issues = [];
|
|
201
|
+
const definitions = (op.operationDefinition.parameter || []).filter((p) => p.use === use);
|
|
202
|
+
const parameterName = use === "in" ? "input" : "output";
|
|
203
|
+
if (!isRecord(value))
|
|
204
|
+
return [
|
|
205
|
+
...issues,
|
|
206
|
+
issueError("invalid", `Invalid ${parameterName}: Must be an object but instead is '${value === null ? "null" : typeof value}'`),
|
|
207
|
+
];
|
|
208
|
+
issues = [...issues, ...validateRequired(definitions, value)];
|
|
209
|
+
for (const key of Object.keys(value)) {
|
|
210
|
+
const paramDefinition = definitions.find((d) => d.name === key);
|
|
211
|
+
if (paramDefinition === undefined) {
|
|
212
|
+
issues = [
|
|
213
|
+
...issues,
|
|
214
|
+
issueError("invalid", `Invalid ${parameterName}: '${key}' not found in definition`),
|
|
215
|
+
];
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
issues = [
|
|
219
|
+
...issues,
|
|
220
|
+
...(await validateParameter(ctx, paramDefinition, use, value[key])),
|
|
221
|
+
];
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return issues;
|
|
225
|
+
}
|
|
226
|
+
function isStrictlyReturn(op) {
|
|
227
|
+
const outputParameters = op.parameter?.filter((p) => p.use === "out") || [];
|
|
228
|
+
if (outputParameters.length === 1) {
|
|
229
|
+
return (outputParameters[0].name === "return" &&
|
|
230
|
+
outputParameters[0].max === "1" &&
|
|
231
|
+
outputParameters[0].min === 1 &&
|
|
232
|
+
(outputParameters[0].type === "Any" ||
|
|
233
|
+
resourceTypes.has(outputParameters[0].type || "")));
|
|
234
|
+
}
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* If, when invoking the operation, there is exactly one input parameter of type Resource (irrespective of whether other possible parameters are defined), that the operation can also be executed by a POST with that resource as the body of the request (and no parameters on the url).
|
|
239
|
+
* @param op OperationDefinition
|
|
240
|
+
*/
|
|
241
|
+
function singleResource(op, type) {
|
|
242
|
+
const foundName = op.parameter?.filter((p) => p.type === type || p.type === "Resource" || p.type === "DomainResource");
|
|
243
|
+
if (foundName?.length !== 1)
|
|
244
|
+
return undefined;
|
|
245
|
+
return foundName[0].name;
|
|
246
|
+
}
|
|
247
|
+
export class Operation {
|
|
248
|
+
_operationDefinition;
|
|
249
|
+
code;
|
|
250
|
+
constructor(operationDefinition) {
|
|
251
|
+
this.code = operationDefinition.code;
|
|
252
|
+
this._operationDefinition = operationDefinition;
|
|
253
|
+
}
|
|
254
|
+
get operationDefinition() {
|
|
255
|
+
return this._operationDefinition;
|
|
256
|
+
}
|
|
257
|
+
parseToObject(use, passedInInput) {
|
|
258
|
+
let input = passedInInput;
|
|
259
|
+
if (use === "out" &&
|
|
260
|
+
!isParameters(input) &&
|
|
261
|
+
isStrictlyReturn(this.operationDefinition)) {
|
|
262
|
+
return input;
|
|
263
|
+
}
|
|
264
|
+
// Allow for single resource input.
|
|
265
|
+
if (use === "in" &&
|
|
266
|
+
input.resourceType !== "Parameters" &&
|
|
267
|
+
resourceTypes.has(input.resourceType)) {
|
|
268
|
+
const fieldName = singleResource(this.operationDefinition, input.resourceType);
|
|
269
|
+
if (fieldName) {
|
|
270
|
+
return {
|
|
271
|
+
[fieldName]: input,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
throw new OperationError(outcomeError("invalid", "Invalid input, input must be a Parameters"));
|
|
275
|
+
}
|
|
276
|
+
else if (!isParameters(input)) {
|
|
277
|
+
throw new OperationError(outcomeError("invalid", "Invalid input, input must be a Parameters"));
|
|
278
|
+
}
|
|
279
|
+
const output = parseParameters(this._operationDefinition, use, input);
|
|
280
|
+
return output;
|
|
281
|
+
}
|
|
282
|
+
parseToParameters(use, input) {
|
|
283
|
+
if (use === "out" &&
|
|
284
|
+
!isParameters(input) &&
|
|
285
|
+
isStrictlyReturn(this.operationDefinition)) {
|
|
286
|
+
return input;
|
|
287
|
+
}
|
|
288
|
+
return toParametersResource(this._operationDefinition, use, input);
|
|
289
|
+
}
|
|
290
|
+
async validate(ctx, use, value) {
|
|
291
|
+
if (isStrictlyReturn(this.operationDefinition) && use === "out") {
|
|
292
|
+
const type = this.operationDefinition.parameter?.find((p) => p.use === "out")
|
|
293
|
+
?.type || "Resource";
|
|
294
|
+
const fhirtype = type === "Any" ? "Resource" : type;
|
|
295
|
+
const issues = await validate(ctx, fhirtype, value);
|
|
296
|
+
return issues;
|
|
297
|
+
}
|
|
298
|
+
return await validateParameters(ctx, this, use, value);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
//# 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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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@haste-health/operation-execution",
|
|
3
|
+
"version": "0.14.3",
|
|
4
|
+
"homepage": "https://haste.health",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/HasteHealth/HasteHealth.git"
|
|
8
|
+
},
|
|
9
|
+
"description": "Package to create operation definition executables.",
|
|
10
|
+
"type": "module",
|
|
11
|
+
"main": "lib/index.js",
|
|
12
|
+
"types": "lib/index.d.ts",
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"test": "pnpm node --experimental-vm-modules $(pnpm bin jest)",
|
|
16
|
+
"publish": "pnpm build && pnpm npm publish --access public --tolerate-republish"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@haste-health/fhir-pointer": "workspace:^",
|
|
20
|
+
"@haste-health/fhir-types": "workspace:^",
|
|
21
|
+
"@haste-health/fhir-validation": "workspace:^",
|
|
22
|
+
"@haste-health/operation-outcomes": "workspace:^"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@haste-health/artifacts": "workspace:^",
|
|
26
|
+
"@haste-health/haste-health.fhir.r4.core": "workspace:^",
|
|
27
|
+
"@haste-health/hl7.fhir.r4.core": "workspace:^",
|
|
28
|
+
"@jest/globals": "^29.7.0",
|
|
29
|
+
"jest": "^29.7.0",
|
|
30
|
+
"ts-jest": "^29.3.2",
|
|
31
|
+
"typescript": "5.9.2"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"lib/**"
|
|
35
|
+
]
|
|
36
|
+
}
|