@haste-health/fhir-validation 0.14.3 → 0.126.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/lib/elements/primitive.js +1 -1
- package/lib/elements/primitive.js.map +1 -1
- package/lib/elements/validators/cardinality.js +5 -2
- package/lib/elements/validators/cardinality.js.map +1 -1
- package/lib/profile/element.js +3 -8
- package/lib/profile/element.js.map +1 -1
- package/lib/profile/slicing/index.js +14 -10
- package/lib/profile/slicing/index.js.map +1 -1
- package/package.json +22 -22
- package/lib/elements/conformance.d.ts +0 -9
- package/lib/elements/conformance.js +0 -40
- package/lib/elements/conformance.js.map +0 -1
- package/lib/elements/validators/value.d.ts +0 -10
- package/lib/elements/validators/value.js +0 -18
- package/lib/elements/validators/value.js.map +0 -1
- package/lib/elements/validators.d.ts +0 -8
- package/lib/elements/validators.js +0 -37
- package/lib/elements/validators.js.map +0 -1
- package/lib/profile/slicing.d.ts +0 -47
- package/lib/profile/slicing.js +0 -195
- package/lib/profile/slicing.js.map +0 -1
- package/lib/profile/validators.d.ts +0 -8
- package/lib/profile/validators.js +0 -37
- package/lib/profile/validators.js.map +0 -1
- package/lib/slicing/index.d.ts +0 -47
- package/lib/slicing/index.js +0 -197
- package/lib/slicing/index.js.map +0 -1
- package/lib/structural/validate-primitive.d.ts +0 -11
- package/lib/structural/validate-primitive.js +0 -102
- package/lib/structural/validate-primitive.js.map +0 -1
|
@@ -7,7 +7,7 @@ const REGEX = {
|
|
|
7
7
|
uuid: /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,
|
|
8
8
|
time: /^([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?$/,
|
|
9
9
|
oid: /^urn:oid:[0-2](\.(0|[1-9][0-9]*))+$/,
|
|
10
|
-
unsignedInt: /^(
|
|
10
|
+
unsignedInt: /^(0|([1-9][0-9]*))$/,
|
|
11
11
|
positiveInt: /^(\+?[1-9][0-9]*)$/,
|
|
12
12
|
instant: /^([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))$/,
|
|
13
13
|
id: /^[A-Za-z0-9\-.]{1,64}$/,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../src/elements/primitive.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;AAGvD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EACL,cAAc,EACd,UAAU,EACV,YAAY,GACb,MAAM,kCAAkC,CAAC;AAI1C,MAAM,KAAK,GAA2B;IACpC,iDAAiD;IACjD,IAAI,EAAE,+EAA+E;IACrF,IAAI,EAAE,4DAA4D;IAClE,GAAG,EAAE,qCAAqC;IAC1C,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../src/elements/primitive.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;AAGvD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EACL,cAAc,EACd,UAAU,EACV,YAAY,GACb,MAAM,kCAAkC,CAAC;AAI1C,MAAM,KAAK,GAA2B;IACpC,iDAAiD;IACjD,IAAI,EAAE,+EAA+E;IACrF,IAAI,EAAE,4DAA4D;IAClE,GAAG,EAAE,qCAAqC;IAC1C,WAAW,EAAE,qBAAqB;IAClC,WAAW,EAAE,oBAAoB;IACjC,OAAO,EACL,sMAAsM;IACxM,EAAE,EAAE,wBAAwB;IAC5B,IAAI,EAAE,uGAAuG;IAC7G,QAAQ,EACN,+MAA+M;CAClN,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAkB,EAClB,OAAsC,EACtC,SAAkB,EAClB,IAAoC,EACpC,IAAY;IAEZ,IAAI,KAAK,CAAC;IAEV,IAAI,QAAQ,CAAC,SAAS,CAAC;QAAE,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;SAC1D,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,KAAK,GAAG,SAAS,CAAC;SACpD,CAAC;QACJ,OAAO;YACL,UAAU,CACR,WAAW,EACX,4BAA4B,IAAI,cAAc,QAAQ,CAAC,aAAa,CAClE,IAAI,CACL,GAAG,EACJ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/B;SACF,CAAC;IACJ,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,uCAAuC,CAAC;QAC7C,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,UAAU,CAAC;QAChB,KAAK,cAAc,CAAC;QACpB,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO;oBACL,UAAU,CACR,WAAW,EACX,4BAA4B,IAAI,cAAc,QAAQ,CAAC,aAAa,CAClE,IAAI,CACL,GAAG,EACJ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/B;iBACF,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO;oBACL,UAAU,CACR,OAAO,EACP,kBAAkB,KAAK,cAAc,QAAQ,CAAC,aAAa,CACzD,IAAI,CACL,mCAAmC,KAAK,CAAC,IAAI,CAAC,GAAG,EAClD,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/B;iBACF,CAAC;YACJ,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC/B,OAAO;oBACL,UAAU,CACR,WAAW,EACX,4BAA4B,IAAI,cAAc,QAAQ,CAAC,aAAa,CAClE,IAAI,CACL,GAAG,EACJ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/B;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,QAAQ,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;YAC5C,MAAM,QAAQ,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;YAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO;oBACL,UAAU,CACR,WAAW,EACX,4BAA4B,IAAI,cAAc,QAAQ,CAAC,aAAa,CAClE,IAAI,CACL,GAAG,EACJ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/B;iBACF,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC5D,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO;wBACL,UAAU,CACR,WAAW,EACX,SAAS,KAAK,0BAA0B,QAAQ,cAAc,QAAQ,CAAC,aAAa,CAClF,IAAI,CACL,GAAG,EACJ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/B;qBACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,KAAK,SAAS,CAAC;QACf,KAAK,aAAa,CAAC;QACnB,KAAK,aAAa,CAAC;QACnB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO;oBACL,UAAU,CACR,WAAW,EACX,4BAA4B,IAAI,cAAc,QAAQ,CAAC,aAAa,CAClE,IAAI,CACL,GAAG,EACJ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/B;iBACF,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;gBACvD,OAAO;oBACL,UAAU,CACR,OAAO,EACP,kBAAkB,KAAK,cAAc,QAAQ,CAAC,aAAa,CACzD,IAAI,CACL,mCAAmC,KAAK,CAAC,IAAI,CAAC,GAAG,EAClD,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/B;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD;YACE,MAAM,IAAI,cAAc,CACtB,YAAY,CACV,WAAW,EACX,2BAA2B,IAAI,cAAc,QAAQ,CAAC,aAAa,CACjE,IAAI,CACL,GAAG,EACJ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/B,CACF,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -12,7 +12,10 @@ function isArray(element) {
|
|
|
12
12
|
return false;
|
|
13
13
|
const base = element.base?.max ?? "1";
|
|
14
14
|
const max = element.max ?? "1";
|
|
15
|
-
return base === "*" ||
|
|
15
|
+
return (base === "*" ||
|
|
16
|
+
max === "*" ||
|
|
17
|
+
Number.parseInt(base) > 1 ||
|
|
18
|
+
Number.parseInt(max) > 1);
|
|
16
19
|
}
|
|
17
20
|
function getMin(elementDefinition) {
|
|
18
21
|
return elementDefinition.min ?? 0;
|
|
@@ -39,7 +42,7 @@ export function validateCardinality(element, root, path) {
|
|
|
39
42
|
issueError("structure", `Element is expected to have at least ${min} items.`, [toJSONPointer(path)]),
|
|
40
43
|
];
|
|
41
44
|
}
|
|
42
|
-
if (max !== "*" && value > parseInt(max))
|
|
45
|
+
if (max !== "*" && value > Number.parseInt(max))
|
|
43
46
|
return [
|
|
44
47
|
issueError("structure", `Element is expected to have at most ${max} items.`, [toJSONPointer(path)]),
|
|
45
48
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cardinality.js","sourceRoot":"","sources":["../../../src/elements/validators/cardinality.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAO,GAAG,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAKrE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D;;;;GAIG;AACH,SAAS,OAAO,CAAC,OAA0B;IACzC,kGAAkG;IAClG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;IAE/B,OAAO,IAAI,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"cardinality.js","sourceRoot":"","sources":["../../../src/elements/validators/cardinality.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAO,GAAG,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAKrE,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D;;;;GAIG;AACH,SAAS,OAAO,CAAC,OAA0B;IACzC,kGAAkG;IAClG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;IAE/B,OAAO,CACL,IAAI,KAAK,GAAG;QACZ,GAAG,KAAK,GAAG;QACX,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,iBAAoC;IAClD,OAAO,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,MAAM,CAAC,iBAAoC;IAClD,OAAO,iBAAiB,CAAC,GAAG,IAAI,GAAG,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAA0B,EAC1B,IAAY,EACZ,IAAwB;IAExB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE9B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAE5B,yDAAyD;IACzD,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAChD,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,gBAAgB,EAAE,CAAC;QAC9C,OAAO;YACL,UAAU,CACR,WAAW,EACX,6BACE,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,kBAClC,GAAG,EACH,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CACtB;SACF,CAAC;IACJ,CAAC;IACD,IAAI,gBAAgB,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACvB,OAAO;gBACL,UAAU,CACR,WAAW,EACX,wCAAwC,GAAG,SAAS,EACpD,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CACtB;aACF,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,KAAK,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC7C,OAAO;gBACL,UAAU,CACR,WAAW,EACX,uCAAuC,GAAG,SAAS,EACnD,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CACtB;aACF,CAAC;QAEJ,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO;gBACL,UAAU,CACR,WAAW,EACX,wCAAwC,GAAG,SAAS,EACpD,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CACtB;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/lib/profile/element.js
CHANGED
|
@@ -32,14 +32,9 @@ function ignoreSliceElements(elements, indices) {
|
|
|
32
32
|
*/
|
|
33
33
|
function validateTypeIfMultipleTypesConstrained(ctx, element, type) {
|
|
34
34
|
if (element.type) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
else if (type === "Element" &&
|
|
39
|
-
element.type.find((t) => isPrimitiveType(ctx.fhirVersion, t.code))) {
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
return false;
|
|
35
|
+
return (element.type.some((t) => t.code === type) ||
|
|
36
|
+
(type === "Element" &&
|
|
37
|
+
element.type.some((t) => isPrimitiveType(ctx.fhirVersion, t.code))));
|
|
43
38
|
}
|
|
44
39
|
return true;
|
|
45
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/profile/element.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AAC9F,OAAO,EAAO,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAQ9E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EACL,cAAc,EACd,UAAU,EACV,YAAY,GACb,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE9E;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAC1B,QAA6B,EAC7B,OAAiB;IAEjB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,sCAAsC,CAC7C,GAAkB,EAClB,OAA0B,EAC1B,IAAS;IAET,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,
|
|
1
|
+
{"version":3,"file":"element.js","sourceRoot":"","sources":["../../src/profile/element.ts"],"names":[],"mappings":"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"}
|
|
@@ -142,11 +142,15 @@ async function isConformantToSlicesDiscriminator(discriminator, sliceValueElemen
|
|
|
142
142
|
throw new Error("invalid");
|
|
143
143
|
}
|
|
144
144
|
export async function validateSlice(elements, sliceIndex, root, sliceValueLocs) {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
const sliceElement = elements[sliceIndex];
|
|
146
|
+
// Both constraints come from the slice's element, not from the values, so
|
|
147
|
+
// they are evaluated once for every location checked against them.
|
|
148
|
+
const [patternCheck, fixedValueCheck] = await Promise.all([
|
|
149
|
+
fp.evaluate("$this.pattern", sliceElement),
|
|
150
|
+
fp.evaluate("$this.fixed", sliceElement),
|
|
151
|
+
]);
|
|
152
|
+
await Promise.all(sliceValueLocs.map(async (sliceValueLoc) => {
|
|
148
153
|
const sliceValue = get(sliceValueLoc, root);
|
|
149
|
-
const fixedValueCheck = await fp.evaluate("$this.fixed", sliceElement);
|
|
150
154
|
if (patternCheck && !conformsToPattern(patternCheck[0], sliceValue)) {
|
|
151
155
|
throw new OperationError(outcomeError("exception", "pattern mismatch"));
|
|
152
156
|
}
|
|
@@ -155,13 +159,13 @@ export async function validateSlice(elements, sliceIndex, root, sliceValueLocs)
|
|
|
155
159
|
throw new OperationError(outcomeError("exception", "fixed value mismatch"));
|
|
156
160
|
}
|
|
157
161
|
const childrenIndices = eleIndexToChildIndices(elements, sliceIndex);
|
|
158
|
-
|
|
162
|
+
await Promise.all(childrenIndices.map((child) => {
|
|
159
163
|
const field = fieldName(elements[child]);
|
|
160
164
|
const fieldLoc = descend(sliceValueLoc, field);
|
|
161
|
-
validateSlice(elements, child, root, [fieldLoc]);
|
|
162
|
-
}
|
|
165
|
+
return validateSlice(elements, child, root, [fieldLoc]);
|
|
166
|
+
}));
|
|
163
167
|
}
|
|
164
|
-
}
|
|
168
|
+
}));
|
|
165
169
|
}
|
|
166
170
|
async function splitSlicing(ctx, elements, sliceDescriptor, root, locsToCheck) {
|
|
167
171
|
const sliceSplit = sliceDescriptor.slices.reduce((acc, sliceIndex) => {
|
|
@@ -192,8 +196,8 @@ function validateSliceCardinality(parentLoc, sliceElement, paths) {
|
|
|
192
196
|
if (paths.length < (sliceElement.min ?? 0)) {
|
|
193
197
|
issues.push(issueError("structure", `Slice '${sliceElement.sliceName}' does not have the minimum number of values.`, [toJSONPointer(parentLoc)]));
|
|
194
198
|
}
|
|
195
|
-
if (!isNaN(parseInt(sliceElement.max ?? "1"))) {
|
|
196
|
-
const max = parseInt(sliceElement.max ?? "1");
|
|
199
|
+
if (!Number.isNaN(Number.parseInt(sliceElement.max ?? "1"))) {
|
|
200
|
+
const max = Number.parseInt(sliceElement.max ?? "1");
|
|
197
201
|
if (paths.length > max) {
|
|
198
202
|
issues.push(issueError("structure", `Slice '${sliceElement.sliceName}' has more than the maximum number of values.`, [toJSONPointer(parentLoc)]));
|
|
199
203
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/profile/slicing/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/profile/slicing/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,42 +1,38 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haste-health/fhir-validation",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.126.3",
|
|
4
4
|
"homepage": "https://haste.health",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/HasteHealth/HasteHealth.git"
|
|
8
8
|
},
|
|
9
|
+
"description": "Haste Health FHIR Validation library for TypeScript.",
|
|
9
10
|
"type": "module",
|
|
10
11
|
"main": "lib/structural/index.js",
|
|
11
12
|
"types": "lib/structural/index.d.ts",
|
|
12
|
-
"scripts": {
|
|
13
|
-
"build": "tsc",
|
|
14
|
-
"test": "pnpm node --experimental-vm-modules $(pnpm bin jest)",
|
|
15
|
-
"publish": "pnpm build && pnpm npm publish --access public --tolerate-republish"
|
|
16
|
-
},
|
|
17
13
|
"dependencies": {
|
|
18
|
-
"
|
|
19
|
-
"@haste-health/
|
|
20
|
-
"@haste-health/
|
|
21
|
-
"@haste-health/
|
|
22
|
-
"@haste-health/operation-outcomes": "
|
|
23
|
-
"
|
|
14
|
+
"jsonpointer": "^5.0.1",
|
|
15
|
+
"@haste-health/codegen": "^0.126.3",
|
|
16
|
+
"@haste-health/fhir-pointer": "^0.126.3",
|
|
17
|
+
"@haste-health/fhirpath": "^0.126.3",
|
|
18
|
+
"@haste-health/operation-outcomes": "^0.126.3",
|
|
19
|
+
"@haste-health/meta-value": "^0.126.3"
|
|
24
20
|
},
|
|
25
21
|
"devDependencies": {
|
|
26
|
-
"@babel/plugin-syntax-import-attributes": "^7.
|
|
27
|
-
"@babel/preset-env": "^7.
|
|
28
|
-
"@babel/preset-typescript": "^7.
|
|
29
|
-
"@haste-health/artifacts": "workspace:^",
|
|
30
|
-
"@haste-health/fhir-types": "workspace:^",
|
|
31
|
-
"@haste-health/haste-health.fhir.r4.core": "workspace:^",
|
|
32
|
-
"@haste-health/hl7.fhir.r4.core": "workspace:^",
|
|
33
|
-
"@haste-health/hl7.fhir.r4.test-data": "workspace:^",
|
|
22
|
+
"@babel/plugin-syntax-import-attributes": "^7.29.7",
|
|
23
|
+
"@babel/preset-env": "^7.29.7",
|
|
24
|
+
"@babel/preset-typescript": "^7.29.7",
|
|
34
25
|
"@jest/globals": "^29.7.0",
|
|
35
26
|
"@types/babel__preset-env": "^7.10.0",
|
|
36
27
|
"@types/jest": "^29.5.14",
|
|
37
28
|
"jest": "^29.7.0",
|
|
38
|
-
"ts-jest": "^29.
|
|
39
|
-
"typescript": "
|
|
29
|
+
"ts-jest": "^29.4.11",
|
|
30
|
+
"typescript": "6.0.3",
|
|
31
|
+
"@haste-health/artifacts": "^0.126.3",
|
|
32
|
+
"@haste-health/fhir-types": "^0.126.3",
|
|
33
|
+
"@haste-health/haste-health.fhir.r4.core": "^0.126.3",
|
|
34
|
+
"@haste-health/hl7.fhir.r4.core": "^0.126.3",
|
|
35
|
+
"@haste-health/hl7.fhir.r4.test-data": "^0.126.3"
|
|
40
36
|
},
|
|
41
37
|
"files": [
|
|
42
38
|
"lib/**",
|
|
@@ -46,5 +42,9 @@
|
|
|
46
42
|
".": "./lib/index.js",
|
|
47
43
|
"./structural": "./lib/structural/index.js",
|
|
48
44
|
"./types": "./lib/types.js"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "tsc",
|
|
48
|
+
"test": "pnpm node --experimental-vm-modules $(pnpm bin jest)"
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* If primitive: it must match exactly the pattern value
|
|
3
|
-
* If a complex object: it must match (recursively) the pattern value
|
|
4
|
-
* If an array: it must match (recursively) the pattern value.
|
|
5
|
-
* @param pattern
|
|
6
|
-
* @param value
|
|
7
|
-
*/
|
|
8
|
-
export declare function conformsToPattern(pattern: unknown, value: unknown): boolean;
|
|
9
|
-
export declare function conformsToValue(expectedValue: unknown, foundValue: unknown): boolean;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { isObject } from "@iguhealth/meta-value/utilities";
|
|
2
|
-
/**
|
|
3
|
-
* If primitive: it must match exactly the pattern value
|
|
4
|
-
* If a complex object: it must match (recursively) the pattern value
|
|
5
|
-
* If an array: it must match (recursively) the pattern value.
|
|
6
|
-
* @param pattern
|
|
7
|
-
* @param value
|
|
8
|
-
*/
|
|
9
|
-
export function conformsToPattern(pattern, value) {
|
|
10
|
-
if (isObject(pattern)) {
|
|
11
|
-
if (!isObject(value))
|
|
12
|
-
return false;
|
|
13
|
-
if (Array.isArray(pattern)) {
|
|
14
|
-
if (!Array.isArray(value))
|
|
15
|
-
return false;
|
|
16
|
-
for (const singularPattern of pattern) {
|
|
17
|
-
const valueExists = value.filter((v) => conformsToPattern(singularPattern, v));
|
|
18
|
-
// Per spec as long as a single value matches in the pattern then it's truthy
|
|
19
|
-
if (valueExists.length === 0)
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
const patternKeys = Object.keys(pattern);
|
|
26
|
-
for (const key of patternKeys) {
|
|
27
|
-
if (!conformsToPattern(pattern[key], value[key]))
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
return pattern === value;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
export function conformsToValue(expectedValue, foundValue) {
|
|
38
|
-
return JSON.stringify(expectedValue) === JSON.stringify(foundValue);
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=conformance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../src/elements/conformance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAAE,KAAc;IAChE,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,KAAK,MAAM,eAAe,IAAI,OAAO,EAAE,CAAC;gBACtC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,iBAAiB,CAAC,eAAe,EAAE,CAAC,CAAC,CACtC,CAAC;gBACF,6EAA6E;gBAC7E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;YAC7C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,KAAK,KAAK,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,aAAsB,EACtB,UAAmB;IAEnB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Loc } from "@oxidized-health/fhir-pointer";
|
|
2
|
-
import {
|
|
3
|
-
ElementDefinition,
|
|
4
|
-
OperationOutcomeIssue,
|
|
5
|
-
} from "@oxidized-health/fhir-types/r4/types";
|
|
6
|
-
export declare function validateValue(
|
|
7
|
-
element: ElementDefinition,
|
|
8
|
-
root: object,
|
|
9
|
-
path: Loc<any, any, any>
|
|
10
|
-
): Promise<Array<OperationOutcomeIssue>>;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { get, toJSONPointer } from "@iguhealth/fhir-pointer";
|
|
3
|
-
import * as fp from "@iguhealth/fhirpath";
|
|
4
|
-
import { issueError } from "@iguhealth/operation-outcomes";
|
|
5
|
-
import { conformsToValue } from "../conformance.js";
|
|
6
|
-
export async function validateValue(element, root, path) {
|
|
7
|
-
const expectedValue = (await fp.evaluate("value", element, { type: "ElementDefinition" }))[0];
|
|
8
|
-
const value = get(path, root);
|
|
9
|
-
if (!expectedValue)
|
|
10
|
-
return [];
|
|
11
|
-
if (!conformsToValue(expectedValue, value)) {
|
|
12
|
-
return [
|
|
13
|
-
issueError("structure", `Value does not conform to fixed value ${JSON.stringify(expectedValue)}.`, [toJSONPointer(path)]),
|
|
14
|
-
];
|
|
15
|
-
}
|
|
16
|
-
return [];
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=value.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../../src/elements/validators/value.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAO,GAAG,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAMlE,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA0B,EAC1B,IAAY,EACZ,IAAwB;IAExB,MAAM,aAAa,GAAG,CACpB,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,mBAA0B,EAAE,CAAC,CAC1E,CAAC,CAAC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,CAAC;IAE9B,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO;YACL,UAAU,CACR,WAAW,EACX,yCAAyC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EACzE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CACtB;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* If primitive: it must match exactly the pattern value
|
|
3
|
-
* If a complex object: it must match (recursively) the pattern value
|
|
4
|
-
* If an array: it must match (recursively) the pattern value.
|
|
5
|
-
* @param pattern
|
|
6
|
-
* @param value
|
|
7
|
-
*/
|
|
8
|
-
export declare function conformsToPattern(pattern: unknown, value: unknown): boolean;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { isObject } from "@iguhealth/meta-value/utilities";
|
|
2
|
-
/**
|
|
3
|
-
* If primitive: it must match exactly the pattern value
|
|
4
|
-
* If a complex object: it must match (recursively) the pattern value
|
|
5
|
-
* If an array: it must match (recursively) the pattern value.
|
|
6
|
-
* @param pattern
|
|
7
|
-
* @param value
|
|
8
|
-
*/
|
|
9
|
-
export function conformsToPattern(pattern, value) {
|
|
10
|
-
if (isObject(pattern)) {
|
|
11
|
-
if (!isObject(value))
|
|
12
|
-
return false;
|
|
13
|
-
if (Array.isArray(pattern)) {
|
|
14
|
-
if (!Array.isArray(value))
|
|
15
|
-
return false;
|
|
16
|
-
for (let i = 0; i < pattern.length; i++) {
|
|
17
|
-
const valueExists = value.filter((v) => conformsToPattern(pattern[i], v));
|
|
18
|
-
// Per spec as long as a single value matches in the pattern then it's truthy
|
|
19
|
-
if (valueExists.length === 0)
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
const patternKeys = Object.keys(pattern);
|
|
26
|
-
for (const key of patternKeys) {
|
|
27
|
-
if (!conformsToPattern(pattern[key], value[key]))
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
return pattern === value;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/elements/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAAE,KAAc;IAChE,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACjC,CAAC;gBACF,6EAA6E;gBAC7E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;YAC7C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,KAAK,KAAK,CAAC;IAC3B,CAAC;AACH,CAAC"}
|
package/lib/profile/slicing.d.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ElementDefinition,
|
|
3
|
-
OperationOutcome,
|
|
4
|
-
OperationOutcomeIssue,
|
|
5
|
-
} from "@oxidized-health/fhir-types/r4/types";
|
|
6
|
-
import { Loc } from "@oxidized-health/fhir-pointer";
|
|
7
|
-
import { FHIR_VERSION, Resource } from "@oxidized-health/fhir-types/versions";
|
|
8
|
-
import { ValidationCTX } from "../types.js";
|
|
9
|
-
type SlicingDescriptor = {
|
|
10
|
-
discriminator: number;
|
|
11
|
-
slices: number[];
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Filter elements for discriminator slice + slicing elements.
|
|
15
|
-
* @param elements
|
|
16
|
-
*/
|
|
17
|
-
export declare function getSliceIndices(
|
|
18
|
-
elements: ElementDefinition[],
|
|
19
|
-
index: number
|
|
20
|
-
): SlicingDescriptor[];
|
|
21
|
-
export declare function validateSlice(
|
|
22
|
-
elements: ElementDefinition[],
|
|
23
|
-
sliceIndex: number,
|
|
24
|
-
root: object,
|
|
25
|
-
sliceValueLocs: Loc<any, any, any>[]
|
|
26
|
-
): Promise<void>;
|
|
27
|
-
export declare function splitSlicing(
|
|
28
|
-
elements: ElementDefinition[],
|
|
29
|
-
sliceDescriptor: SlicingDescriptor,
|
|
30
|
-
root: object,
|
|
31
|
-
loc: Loc<any, any, any>
|
|
32
|
-
): Promise<Record<number, Loc<any, any, any>[]>>;
|
|
33
|
-
export declare function validateSliceDescriptor(
|
|
34
|
-
ctx: ValidationCTX,
|
|
35
|
-
profile: Resource<FHIR_VERSION, "StructureDefinition">,
|
|
36
|
-
sliceDescriptor: SlicingDescriptor,
|
|
37
|
-
root: object,
|
|
38
|
-
loc: Loc<any, any, any>
|
|
39
|
-
): Promise<OperationOutcome["issue"]>;
|
|
40
|
-
export default function validateAllSlicesAtLocation(
|
|
41
|
-
ctx: ValidationCTX,
|
|
42
|
-
profile: Resource<FHIR_VERSION, "StructureDefinition">,
|
|
43
|
-
elementIndex: number,
|
|
44
|
-
root: object,
|
|
45
|
-
loc: Loc<any, any, any>
|
|
46
|
-
): Promise<OperationOutcomeIssue[]>;
|
|
47
|
-
export {};
|
package/lib/profile/slicing.js
DELETED
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { eleIndexToChildIndices } from "@iguhealth/codegen/traversal/structure-definition";
|
|
3
|
-
import * as fp from "@iguhealth/fhirpath";
|
|
4
|
-
import { convertPathToElementPointer, removeTypeOnPath, } from "./utilities.js";
|
|
5
|
-
import { issueError, OperationError, outcomeError, outcomeFatal, } from "@iguhealth/operation-outcomes";
|
|
6
|
-
import { fieldName } from "../utilities.js";
|
|
7
|
-
import { conformsToPattern } from "../elements/validators.js";
|
|
8
|
-
import { descend, get, pointer } from "@iguhealth/fhir-pointer";
|
|
9
|
-
import { metaValue } from "@iguhealth/meta-value/v2";
|
|
10
|
-
import { R4 } from "@iguhealth/fhir-types/versions";
|
|
11
|
-
import { validateSingular } from "../structural/index.js";
|
|
12
|
-
function isSliced(element) {
|
|
13
|
-
return element.slicing !== undefined;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Filter elements for discriminator slice + slicing elements.
|
|
17
|
-
* @param elements
|
|
18
|
-
*/
|
|
19
|
-
export function getSliceIndices(elements, index) {
|
|
20
|
-
const children = eleIndexToChildIndices(elements, index);
|
|
21
|
-
const slices = [];
|
|
22
|
-
let i = 0;
|
|
23
|
-
while (i < children.length) {
|
|
24
|
-
const childIndex = children[i++];
|
|
25
|
-
if (isSliced(elements[childIndex])) {
|
|
26
|
-
const discriminatorIndex = childIndex;
|
|
27
|
-
const sliceIndexes = [];
|
|
28
|
-
while (i < children.length && elements[children[i]].sliceName) {
|
|
29
|
-
sliceIndexes.push(children[i]);
|
|
30
|
-
i++;
|
|
31
|
-
}
|
|
32
|
-
slices.push({
|
|
33
|
-
discriminator: discriminatorIndex,
|
|
34
|
-
slices: sliceIndexes,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return slices;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Returns the elementDefinition associated with the given discriminator. This is used to extract the value the slice is expecting.
|
|
42
|
-
* @param discriminator The discriminator to use to distinguish slices.
|
|
43
|
-
* @param elements The elements to search for the slice value.
|
|
44
|
-
* @param currentIndex The current index to search for the slice value.
|
|
45
|
-
* @returns The index of elementdefinition to use to slice the value for the discriminator.
|
|
46
|
-
*/
|
|
47
|
-
function findElementDefinitionForSliceDiscriminator(discriminatorElementPath, elements, currentIndex) {
|
|
48
|
-
const element = elements[currentIndex];
|
|
49
|
-
const typelessPath = removeTypeOnPath(element.path);
|
|
50
|
-
if (discriminatorElementPath === typelessPath) {
|
|
51
|
-
return currentIndex;
|
|
52
|
-
}
|
|
53
|
-
if (discriminatorElementPath.startsWith(typelessPath)) {
|
|
54
|
-
const childIndexes = eleIndexToChildIndices(elements, currentIndex);
|
|
55
|
-
for (const childIndex of childIndexes) {
|
|
56
|
-
const foundIndex = findElementDefinitionForSliceDiscriminator(discriminatorElementPath, elements, childIndex);
|
|
57
|
-
if (foundIndex) {
|
|
58
|
-
return foundIndex;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return undefined;
|
|
63
|
-
}
|
|
64
|
-
async function isConformantToSlicesDiscriminator(discriminator, sliceValueElementDefinition, root, locs) {
|
|
65
|
-
switch (discriminator.type) {
|
|
66
|
-
case "value": {
|
|
67
|
-
const expectedValue = (await fp.evaluate("$this.fixed", sliceValueElementDefinition))[0];
|
|
68
|
-
const conformantLocs = [];
|
|
69
|
-
for (const loc of locs) {
|
|
70
|
-
const value = get(loc, root);
|
|
71
|
-
const evaluation = await fp.evaluate(discriminator.path, value);
|
|
72
|
-
if (evaluation.find((v) => JSON.stringify(v) === JSON.stringify(expectedValue)) !== undefined) {
|
|
73
|
-
conformantLocs.push(loc);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return conformantLocs;
|
|
77
|
-
}
|
|
78
|
-
case "exists":
|
|
79
|
-
case "pattern": {
|
|
80
|
-
const pattern = (await fp.evaluate("$this.pattern", metaValue({ type: "ElementDefinition", fhirVersion: R4 }, sliceValueElementDefinition)))[0];
|
|
81
|
-
if (!pattern) {
|
|
82
|
-
throw new OperationError(outcomeError("not-found", "Could not find a pattern for slice."));
|
|
83
|
-
}
|
|
84
|
-
const conformantLocs = [];
|
|
85
|
-
for (const loc of locs) {
|
|
86
|
-
const value = get(loc, root);
|
|
87
|
-
const evaluation = await fp.evaluate(discriminator.path, value);
|
|
88
|
-
if (evaluation.find((v) => conformsToPattern(pattern, v))) {
|
|
89
|
-
conformantLocs.push(loc);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return conformantLocs;
|
|
93
|
-
}
|
|
94
|
-
case "type":
|
|
95
|
-
case "profile": {
|
|
96
|
-
throw new Error("Not supported");
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
throw new Error("invalid");
|
|
100
|
-
}
|
|
101
|
-
export async function validateSlice(elements, sliceIndex, root, sliceValueLocs) {
|
|
102
|
-
for (const sliceValueLoc of sliceValueLocs) {
|
|
103
|
-
const sliceElement = elements[sliceIndex];
|
|
104
|
-
const patternCheck = await fp.evaluate("$this.pattern", sliceElement);
|
|
105
|
-
const sliceValue = get(sliceValueLoc, root);
|
|
106
|
-
const fixedValueCheck = await fp.evaluate("$this.fixed", sliceElement);
|
|
107
|
-
if (patternCheck && !conformsToPattern(patternCheck[0], sliceValue)) {
|
|
108
|
-
throw new OperationError(outcomeError("exception", "pattern mismatch"));
|
|
109
|
-
}
|
|
110
|
-
if (fixedValueCheck) {
|
|
111
|
-
if (JSON.stringify(fixedValueCheck[0]) !== JSON.stringify(sliceValue)) {
|
|
112
|
-
throw new OperationError(outcomeError("exception", "fixed value mismatch"));
|
|
113
|
-
}
|
|
114
|
-
const childrenIndices = eleIndexToChildIndices(elements, sliceIndex);
|
|
115
|
-
for (const child of childrenIndices) {
|
|
116
|
-
const field = fieldName(elements[child]);
|
|
117
|
-
const fieldLoc = descend(sliceValueLoc, field);
|
|
118
|
-
validateSlice(elements, child, root, [fieldLoc]);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
export async function splitSlicing(elements, sliceDescriptor, root, loc) {
|
|
124
|
-
const sliceSplit = sliceDescriptor.slices.reduce((acc, sliceIndex) => {
|
|
125
|
-
acc[sliceIndex] = [];
|
|
126
|
-
return acc;
|
|
127
|
-
}, {});
|
|
128
|
-
const values = get(loc, root);
|
|
129
|
-
if (!Array.isArray(values)) {
|
|
130
|
-
throw new OperationError(outcomeFatal("not-supported", "Cannot slice non array."));
|
|
131
|
-
}
|
|
132
|
-
let locsToCheck = values.map((_v, i) => descend(loc, i));
|
|
133
|
-
// A couple of notes we will determine per discriminator the element path that should be expected.
|
|
134
|
-
// Using that we will loop over the slices and determine if value conforms to slice element using discriminator.
|
|
135
|
-
// [Serialized as a group] The entries must be adjacent for a given slice.
|
|
136
|
-
const discriminatorElement = elements[sliceDescriptor.discriminator];
|
|
137
|
-
const discriminators = discriminatorElement.slicing?.discriminator ?? [];
|
|
138
|
-
const discriminatorElementPaths = discriminators.map((d) => convertPathToElementPointer(discriminatorElement, d));
|
|
139
|
-
for (const sliceIndex of sliceDescriptor.slices) {
|
|
140
|
-
let sliceValueLocs = locsToCheck;
|
|
141
|
-
for (let d = 0; d < discriminators.length; d++) {
|
|
142
|
-
const discriminator = discriminators[d];
|
|
143
|
-
const sliceElementIndex = findElementDefinitionForSliceDiscriminator(discriminatorElementPaths[d], elements, sliceIndex);
|
|
144
|
-
if (!sliceElementIndex)
|
|
145
|
-
throw new OperationError(outcomeError("invalid", "could not find element definition for slice"));
|
|
146
|
-
const sliceElement = elements[sliceElementIndex];
|
|
147
|
-
sliceValueLocs = await isConformantToSlicesDiscriminator(discriminator, sliceElement, root, locsToCheck);
|
|
148
|
-
}
|
|
149
|
-
locsToCheck = locsToCheck.filter((l) => !sliceValueLocs.includes(l));
|
|
150
|
-
sliceSplit[sliceIndex] = sliceValueLocs;
|
|
151
|
-
}
|
|
152
|
-
return sliceSplit;
|
|
153
|
-
}
|
|
154
|
-
function validateSliceCardinality(sliceElement, paths) {
|
|
155
|
-
const issues = [];
|
|
156
|
-
if (paths.length < (sliceElement.min ?? 0)) {
|
|
157
|
-
issues.push(issueError("structure", `Slice '${sliceElement.sliceName}' does not have the minimum number of values.`));
|
|
158
|
-
}
|
|
159
|
-
if (!isNaN(parseInt(sliceElement.max ?? "1"))) {
|
|
160
|
-
const max = parseInt(sliceElement.max ?? "1");
|
|
161
|
-
if (paths.length > max) {
|
|
162
|
-
issues.push(issueError("structure", `Slice '${sliceElement.sliceName}' has more than the maximum number of values.`));
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
return issues;
|
|
166
|
-
}
|
|
167
|
-
export async function validateSliceDescriptor(ctx, profile, sliceDescriptor, root, loc) {
|
|
168
|
-
const differential = profile.differential?.element ?? [];
|
|
169
|
-
const discriminatorElement = differential[sliceDescriptor.discriminator];
|
|
170
|
-
const sliceLoc = descend(loc, fieldName(discriminatorElement));
|
|
171
|
-
const slices = await splitSlicing(differential, sliceDescriptor, root, sliceLoc);
|
|
172
|
-
let issues = [];
|
|
173
|
-
const profileLoc = pointer("StructureDefinition", profile.id);
|
|
174
|
-
for (const slice of sliceDescriptor.slices) {
|
|
175
|
-
const sliceLoc = descend(descend(descend(profileLoc, "differential"), "element"), slice);
|
|
176
|
-
const sliceElement = get(sliceLoc, profile);
|
|
177
|
-
if (!sliceElement) {
|
|
178
|
-
throw new OperationError(outcomeError("not-found", `Slice element not found at '${sliceLoc}'`));
|
|
179
|
-
}
|
|
180
|
-
const type = sliceElement.type ?? [];
|
|
181
|
-
issues = issues.concat(validateSliceCardinality(sliceElement, slices[slice]));
|
|
182
|
-
for (const path of slices[slice]) {
|
|
183
|
-
if (type.length !== 1) {
|
|
184
|
-
throw new OperationError(outcomeError("not-supported", "typechoices not supported for slicing."));
|
|
185
|
-
}
|
|
186
|
-
issues = issues.concat(await validateSingular(ctx, profile, sliceLoc, root, path, type[0].code));
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return issues;
|
|
190
|
-
}
|
|
191
|
-
export default async function validateAllSlicesAtLocation(ctx, profile, elementIndex, root, loc) {
|
|
192
|
-
const sliceIndices = getSliceIndices(profile.differential?.element ?? [], elementIndex);
|
|
193
|
-
return (await Promise.all(sliceIndices.map((sliceIndex) => validateSliceDescriptor(ctx, profile, sliceIndex, root, loc)))).flat();
|
|
194
|
-
}
|
|
195
|
-
//# sourceMappingURL=slicing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slicing.js","sourceRoot":"","sources":["../../src/profile/slicing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* If primitive: it must match exactly the pattern value
|
|
3
|
-
* If a complex object: it must match (recursively) the pattern value
|
|
4
|
-
* If an array: it must match (recursively) the pattern value.
|
|
5
|
-
* @param pattern
|
|
6
|
-
* @param value
|
|
7
|
-
*/
|
|
8
|
-
export declare function conformsToPattern(pattern: unknown, value: unknown): boolean;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { isObject } from "@iguhealth/meta-value/utilities";
|
|
2
|
-
/**
|
|
3
|
-
* If primitive: it must match exactly the pattern value
|
|
4
|
-
* If a complex object: it must match (recursively) the pattern value
|
|
5
|
-
* If an array: it must match (recursively) the pattern value.
|
|
6
|
-
* @param pattern
|
|
7
|
-
* @param value
|
|
8
|
-
*/
|
|
9
|
-
export function conformsToPattern(pattern, value) {
|
|
10
|
-
if (isObject(pattern)) {
|
|
11
|
-
if (!isObject(value))
|
|
12
|
-
return false;
|
|
13
|
-
if (Array.isArray(pattern)) {
|
|
14
|
-
if (!Array.isArray(value))
|
|
15
|
-
return false;
|
|
16
|
-
for (let i = 0; i < pattern.length; i++) {
|
|
17
|
-
const valueExists = value.filter((v) => conformsToPattern(pattern[i], v));
|
|
18
|
-
// Per spec as long as a single value matches in the pattern then it's truthy
|
|
19
|
-
if (valueExists.length === 0)
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
const patternKeys = Object.keys(pattern);
|
|
26
|
-
for (const key of patternKeys) {
|
|
27
|
-
if (!conformsToPattern(pattern[key], value[key]))
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
return pattern === value;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/profile/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAAE,KAAc;IAChE,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACjC,CAAC;gBACF,6EAA6E;gBAC7E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;YAC7C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACjE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,KAAK,KAAK,CAAC;IAC3B,CAAC;AACH,CAAC"}
|
package/lib/slicing/index.d.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { Loc } from "@oxidized-health/fhir-pointer";
|
|
2
|
-
import {
|
|
3
|
-
ElementDefinition,
|
|
4
|
-
OperationOutcome,
|
|
5
|
-
OperationOutcomeIssue,
|
|
6
|
-
} from "@oxidized-health/fhir-types/r4/types";
|
|
7
|
-
import { FHIR_VERSION, Resource } from "@oxidized-health/fhir-types/versions";
|
|
8
|
-
import { ValidationCTX } from "../types.js";
|
|
9
|
-
type SlicingDescriptor = {
|
|
10
|
-
discriminator: number;
|
|
11
|
-
slices: number[];
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Filter elements for discriminator slice + slicing elements.
|
|
15
|
-
* @param elements
|
|
16
|
-
*/
|
|
17
|
-
export declare function getSliceIndices(
|
|
18
|
-
elements: ElementDefinition[],
|
|
19
|
-
index: number
|
|
20
|
-
): SlicingDescriptor[];
|
|
21
|
-
export declare function validateSlice(
|
|
22
|
-
elements: ElementDefinition[],
|
|
23
|
-
sliceIndex: number,
|
|
24
|
-
root: object,
|
|
25
|
-
sliceValueLocs: Loc<any, any, any>[]
|
|
26
|
-
): Promise<void>;
|
|
27
|
-
export declare function splitSlicing(
|
|
28
|
-
elements: ElementDefinition[],
|
|
29
|
-
sliceDescriptor: SlicingDescriptor,
|
|
30
|
-
root: object,
|
|
31
|
-
loc: Loc<any, any, any>
|
|
32
|
-
): Promise<Record<number, Loc<any, any, any>[]>>;
|
|
33
|
-
export declare function validateSliceDescriptor(
|
|
34
|
-
ctx: ValidationCTX,
|
|
35
|
-
profile: Resource<FHIR_VERSION, "StructureDefinition">,
|
|
36
|
-
sliceDescriptor: SlicingDescriptor,
|
|
37
|
-
root: object,
|
|
38
|
-
loc: Loc<any, any, any>
|
|
39
|
-
): Promise<OperationOutcome["issue"]>;
|
|
40
|
-
export default function validateAllSlicesAtLocation(
|
|
41
|
-
ctx: ValidationCTX,
|
|
42
|
-
profile: Resource<FHIR_VERSION, "StructureDefinition">,
|
|
43
|
-
elementIndex: number,
|
|
44
|
-
root: object,
|
|
45
|
-
loc: Loc<any, any, any>
|
|
46
|
-
): Promise<OperationOutcomeIssue[]>;
|
|
47
|
-
export {};
|
package/lib/slicing/index.js
DELETED
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { eleIndexToChildIndices } from "@iguhealth/codegen/traversal/structure-definition";
|
|
3
|
-
import { descend, get, pointer } from "@iguhealth/fhir-pointer";
|
|
4
|
-
import { R4 } from "@iguhealth/fhir-types/versions";
|
|
5
|
-
import * as fp from "@iguhealth/fhirpath";
|
|
6
|
-
import { metaValue } from "@iguhealth/meta-value/v2";
|
|
7
|
-
import { OperationError, issueError, outcomeError, outcomeFatal, } from "@iguhealth/operation-outcomes";
|
|
8
|
-
import { conformsToPattern, conformsToValue } from "../elements/conformance.js";
|
|
9
|
-
import { convertPathToElementPointer, removeTypeOnPath, } from "../profile/utilities.js";
|
|
10
|
-
import { validateElementSingular } from "../structural/index.js";
|
|
11
|
-
import { fieldName } from "../utilities.js";
|
|
12
|
-
function isSliced(element) {
|
|
13
|
-
return element.slicing !== undefined;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Filter elements for discriminator slice + slicing elements.
|
|
17
|
-
* @param elements
|
|
18
|
-
*/
|
|
19
|
-
export function getSliceIndices(elements, index) {
|
|
20
|
-
const children = eleIndexToChildIndices(elements, index);
|
|
21
|
-
const slices = [];
|
|
22
|
-
let i = 0;
|
|
23
|
-
while (i < children.length) {
|
|
24
|
-
const childIndex = children[i++];
|
|
25
|
-
if (isSliced(elements[childIndex])) {
|
|
26
|
-
const discriminatorIndex = childIndex;
|
|
27
|
-
const sliceIndexes = [];
|
|
28
|
-
while (i < children.length && elements[children[i]].sliceName) {
|
|
29
|
-
sliceIndexes.push(children[i]);
|
|
30
|
-
i++;
|
|
31
|
-
}
|
|
32
|
-
slices.push({
|
|
33
|
-
discriminator: discriminatorIndex,
|
|
34
|
-
slices: sliceIndexes,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return slices;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Returns the elementDefinition associated with the given discriminator. This is used to extract the value the slice is expecting.
|
|
42
|
-
* @param discriminator The discriminator to use to distinguish slices.
|
|
43
|
-
* @param elements The elements to search for the slice value.
|
|
44
|
-
* @param currentIndex The current index to search for the slice value.
|
|
45
|
-
* @returns The index of elementdefinition to use to slice the value for the discriminator.
|
|
46
|
-
*/
|
|
47
|
-
function findElementDefinitionForSliceDiscriminator(discriminatorElementPath, elements, currentIndex) {
|
|
48
|
-
const element = elements[currentIndex];
|
|
49
|
-
const typelessPath = removeTypeOnPath(element.path);
|
|
50
|
-
if (discriminatorElementPath === typelessPath) {
|
|
51
|
-
return currentIndex;
|
|
52
|
-
}
|
|
53
|
-
if (discriminatorElementPath.startsWith(typelessPath)) {
|
|
54
|
-
const childIndexes = eleIndexToChildIndices(elements, currentIndex);
|
|
55
|
-
for (const childIndex of childIndexes) {
|
|
56
|
-
const foundIndex = findElementDefinitionForSliceDiscriminator(discriminatorElementPath, elements, childIndex);
|
|
57
|
-
if (foundIndex) {
|
|
58
|
-
return foundIndex;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return undefined;
|
|
63
|
-
}
|
|
64
|
-
async function isConformantToSlicesDiscriminator(discriminator, sliceValueElementDefinition, root, locs) {
|
|
65
|
-
switch (discriminator.type) {
|
|
66
|
-
case "value": {
|
|
67
|
-
const expectedValue = (await fp.evaluate("$this.fixed", sliceValueElementDefinition))[0];
|
|
68
|
-
const conformantLocs = [];
|
|
69
|
-
for (const loc of locs) {
|
|
70
|
-
const value = get(loc, root);
|
|
71
|
-
const evaluation = await fp.evaluate(discriminator.path, value);
|
|
72
|
-
if (evaluation.find((v) => conformsToValue(expectedValue, v)) !==
|
|
73
|
-
undefined) {
|
|
74
|
-
conformantLocs.push(loc);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return conformantLocs;
|
|
78
|
-
}
|
|
79
|
-
case "exists":
|
|
80
|
-
case "pattern": {
|
|
81
|
-
const pattern = (await fp.evaluate("$this.pattern", metaValue({ type: "ElementDefinition", fhirVersion: R4 }, sliceValueElementDefinition)))[0];
|
|
82
|
-
if (!pattern) {
|
|
83
|
-
throw new OperationError(outcomeError("not-found", "Could not find a pattern for slice."));
|
|
84
|
-
}
|
|
85
|
-
const conformantLocs = [];
|
|
86
|
-
for (const loc of locs) {
|
|
87
|
-
const value = get(loc, root);
|
|
88
|
-
const evaluation = await fp.evaluate(discriminator.path, value);
|
|
89
|
-
if (evaluation.find((v) => conformsToPattern(pattern, v))) {
|
|
90
|
-
conformantLocs.push(loc);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return conformantLocs;
|
|
94
|
-
}
|
|
95
|
-
case "type":
|
|
96
|
-
case "profile": {
|
|
97
|
-
throw new Error("Not supported");
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
throw new Error("invalid");
|
|
101
|
-
}
|
|
102
|
-
export async function validateSlice(elements, sliceIndex, root, sliceValueLocs) {
|
|
103
|
-
for (const sliceValueLoc of sliceValueLocs) {
|
|
104
|
-
const sliceElement = elements[sliceIndex];
|
|
105
|
-
const patternCheck = await fp.evaluate("$this.pattern", sliceElement);
|
|
106
|
-
const sliceValue = get(sliceValueLoc, root);
|
|
107
|
-
const fixedValueCheck = await fp.evaluate("$this.fixed", sliceElement);
|
|
108
|
-
if (patternCheck && !conformsToPattern(patternCheck[0], sliceValue)) {
|
|
109
|
-
throw new OperationError(outcomeError("exception", "pattern mismatch"));
|
|
110
|
-
}
|
|
111
|
-
if (fixedValueCheck) {
|
|
112
|
-
if (JSON.stringify(fixedValueCheck[0]) !== JSON.stringify(sliceValue)) {
|
|
113
|
-
throw new OperationError(outcomeError("exception", "fixed value mismatch"));
|
|
114
|
-
}
|
|
115
|
-
const childrenIndices = eleIndexToChildIndices(elements, sliceIndex);
|
|
116
|
-
for (const child of childrenIndices) {
|
|
117
|
-
const field = fieldName(elements[child]);
|
|
118
|
-
const fieldLoc = descend(sliceValueLoc, field);
|
|
119
|
-
validateSlice(elements, child, root, [fieldLoc]);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
export async function splitSlicing(elements, sliceDescriptor, root, loc) {
|
|
125
|
-
const sliceSplit = sliceDescriptor.slices.reduce((acc, sliceIndex) => {
|
|
126
|
-
acc[sliceIndex] = [];
|
|
127
|
-
return acc;
|
|
128
|
-
}, {});
|
|
129
|
-
const values = get(loc, root);
|
|
130
|
-
if (!Array.isArray(values)) {
|
|
131
|
-
throw new OperationError(outcomeFatal("not-supported", "Cannot slice non array."));
|
|
132
|
-
}
|
|
133
|
-
let locsToCheck = values.map((_v, i) => descend(loc, i));
|
|
134
|
-
// A couple of notes we will determine per discriminator the element path that should be expected.
|
|
135
|
-
// Using that we will loop over the slices and determine if value conforms to slice element using discriminator.
|
|
136
|
-
// [Serialized as a group] The entries must be adjacent for a given slice.
|
|
137
|
-
const discriminatorElement = elements[sliceDescriptor.discriminator];
|
|
138
|
-
const discriminators = discriminatorElement.slicing?.discriminator ?? [];
|
|
139
|
-
const discriminatorElementPaths = discriminators.map((d) => convertPathToElementPointer(discriminatorElement, d));
|
|
140
|
-
for (const sliceIndex of sliceDescriptor.slices) {
|
|
141
|
-
let sliceValueLocs = locsToCheck;
|
|
142
|
-
for (let d = 0; d < discriminators.length; d++) {
|
|
143
|
-
const discriminator = discriminators[d];
|
|
144
|
-
const sliceElementIndex = findElementDefinitionForSliceDiscriminator(discriminatorElementPaths[d], elements, sliceIndex);
|
|
145
|
-
if (!sliceElementIndex)
|
|
146
|
-
throw new OperationError(outcomeError("invalid", "could not find element definition for slice"));
|
|
147
|
-
const sliceElement = elements[sliceElementIndex];
|
|
148
|
-
sliceValueLocs = await isConformantToSlicesDiscriminator(discriminator, sliceElement, root, locsToCheck);
|
|
149
|
-
}
|
|
150
|
-
locsToCheck = locsToCheck.filter((l) => !sliceValueLocs.includes(l));
|
|
151
|
-
sliceSplit[sliceIndex] = sliceValueLocs;
|
|
152
|
-
}
|
|
153
|
-
return sliceSplit;
|
|
154
|
-
}
|
|
155
|
-
function validateSliceCardinality(sliceElement, paths) {
|
|
156
|
-
const issues = [];
|
|
157
|
-
if (paths.length < (sliceElement.min ?? 0)) {
|
|
158
|
-
issues.push(issueError("structure", `Slice '${sliceElement.sliceName}' does not have the minimum number of values.`));
|
|
159
|
-
}
|
|
160
|
-
if (!isNaN(parseInt(sliceElement.max ?? "1"))) {
|
|
161
|
-
const max = parseInt(sliceElement.max ?? "1");
|
|
162
|
-
if (paths.length > max) {
|
|
163
|
-
issues.push(issueError("structure", `Slice '${sliceElement.sliceName}' has more than the maximum number of values.`));
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
return issues;
|
|
167
|
-
}
|
|
168
|
-
export async function validateSliceDescriptor(ctx, profile, sliceDescriptor, root, loc) {
|
|
169
|
-
const differential = profile.differential?.element ?? [];
|
|
170
|
-
const discriminatorElement = differential[sliceDescriptor.discriminator];
|
|
171
|
-
const sliceLoc = descend(loc, fieldName(discriminatorElement));
|
|
172
|
-
const slices = await splitSlicing(differential, sliceDescriptor, root, sliceLoc);
|
|
173
|
-
let issues = [];
|
|
174
|
-
const snapshotLoc = descend(descend(pointer("StructureDefinition", profile.id), "snapshot"), "element");
|
|
175
|
-
for (const slice of sliceDescriptor.slices) {
|
|
176
|
-
const idx = (profile?.snapshot?.element ?? []).findIndex((e) => e.id === differential[slice].id);
|
|
177
|
-
const sliceLoc = descend(snapshotLoc, idx);
|
|
178
|
-
const sliceElement = get(sliceLoc, profile);
|
|
179
|
-
if (!sliceElement) {
|
|
180
|
-
throw new OperationError(outcomeError("not-found", `Slice element not found at '${sliceLoc}'`));
|
|
181
|
-
}
|
|
182
|
-
const type = sliceElement.type ?? [];
|
|
183
|
-
issues = issues.concat(validateSliceCardinality(sliceElement, slices[slice]));
|
|
184
|
-
if (type.length > 1) {
|
|
185
|
-
throw new OperationError(outcomeError("not-supported", "typechoices not supported for slicing."));
|
|
186
|
-
}
|
|
187
|
-
for (const path of slices[slice]) {
|
|
188
|
-
issues = issues.concat(await validateElementSingular(ctx, profile, sliceLoc, root, path, type[0].code));
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return issues;
|
|
192
|
-
}
|
|
193
|
-
export default async function validateAllSlicesAtLocation(ctx, profile, elementIndex, root, loc) {
|
|
194
|
-
const sliceIndices = getSliceIndices(profile.differential?.element ?? [], elementIndex);
|
|
195
|
-
return (await Promise.all(sliceIndices.map((sliceIndex) => validateSliceDescriptor(ctx, profile, sliceIndex, root, loc)))).flat();
|
|
196
|
-
}
|
|
197
|
-
//# sourceMappingURL=index.js.map
|
package/lib/slicing/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/slicing/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as fpointer from "@oxidized-health/fhir-pointer";
|
|
2
|
-
import { ElementDefinition } from "@oxidized-health/fhir-types/r4/types";
|
|
3
|
-
import { FHIR_VERSION, Resource } from "@oxidized-health/fhir-types/versions";
|
|
4
|
-
import { ValidationCTX } from "../types.js";
|
|
5
|
-
export declare function validatePrimitive(
|
|
6
|
-
ctx: ValidationCTX,
|
|
7
|
-
element: ElementDefinition | undefined,
|
|
8
|
-
rootValue: unknown,
|
|
9
|
-
path: fpointer.Loc<object, any, any>,
|
|
10
|
-
type: string
|
|
11
|
-
): Promise<Resource<FHIR_VERSION, "OperationOutcome">["issue"]>;
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import * as fpointer from "@iguhealth/fhir-pointer";
|
|
3
|
-
import { OperationError, issueError, outcomeError, } from "@iguhealth/operation-outcomes";
|
|
4
|
-
import { isObject } from "@iguhealth/meta-value/utilities";
|
|
5
|
-
const REGEX = {
|
|
6
|
-
// base64Binary: /^(\s*([0-9a-zA-Z+=]){4}\s*)+$/,
|
|
7
|
-
uuid: /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,
|
|
8
|
-
time: /^([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?$/,
|
|
9
|
-
oid: /^urn:oid:[0-2](\.(0|[1-9][0-9]*))+$/,
|
|
10
|
-
unsignedInt: /^([0]|([1-9][0-9]*))$/,
|
|
11
|
-
positiveInt: /^(\+?[1-9][0-9]*)$/,
|
|
12
|
-
instant: /^([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))$/,
|
|
13
|
-
id: /^[A-Za-z0-9\-.]{1,64}$/,
|
|
14
|
-
date: /^([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2][0-9]|3[0-1]))?)?$/,
|
|
15
|
-
dateTime: /^([0-9]([0-9]([0-9][1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2][0-9]|3[0-1])(T([01][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00)))?)?)?$/,
|
|
16
|
-
};
|
|
17
|
-
export async function validatePrimitive(ctx, element, rootValue, path, type) {
|
|
18
|
-
let value;
|
|
19
|
-
if (isObject(rootValue))
|
|
20
|
-
value = fpointer.get(path, rootValue);
|
|
21
|
-
else if (path === fpointer.root(path))
|
|
22
|
-
value = rootValue;
|
|
23
|
-
else {
|
|
24
|
-
return [
|
|
25
|
-
issueError("structure", `Expected primitive type '${type}' at path '${fpointer.toJSONPointer(path)}'`, [fpointer.toJSONPointer(path)]),
|
|
26
|
-
];
|
|
27
|
-
}
|
|
28
|
-
switch (type) {
|
|
29
|
-
case "http://hl7.org/fhirpath/System.String":
|
|
30
|
-
case "date":
|
|
31
|
-
case "dateTime":
|
|
32
|
-
case "time":
|
|
33
|
-
case "instant":
|
|
34
|
-
case "id":
|
|
35
|
-
case "string":
|
|
36
|
-
case "xhtml":
|
|
37
|
-
case "markdown":
|
|
38
|
-
case "base64Binary":
|
|
39
|
-
case "uri":
|
|
40
|
-
case "uuid":
|
|
41
|
-
case "canonical":
|
|
42
|
-
case "oid":
|
|
43
|
-
case "url": {
|
|
44
|
-
if (typeof value !== "string") {
|
|
45
|
-
return [
|
|
46
|
-
issueError("structure", `Expected primitive type '${type}' at path '${fpointer.toJSONPointer(path)}'`, [fpointer.toJSONPointer(path)]),
|
|
47
|
-
];
|
|
48
|
-
}
|
|
49
|
-
if (REGEX[type] && !REGEX[type].test(value)) {
|
|
50
|
-
return [
|
|
51
|
-
issueError("value", `Invalid value '${value}' at path '${fpointer.toJSONPointer(path)}'. Value must conform to regex '${REGEX[type]}'`, [fpointer.toJSONPointer(path)]),
|
|
52
|
-
];
|
|
53
|
-
}
|
|
54
|
-
return [];
|
|
55
|
-
}
|
|
56
|
-
case "boolean": {
|
|
57
|
-
if (typeof value !== "boolean") {
|
|
58
|
-
return [
|
|
59
|
-
issueError("structure", `Expected primitive type '${type}' at path '${fpointer.toJSONPointer(path)}'`, [fpointer.toJSONPointer(path)]),
|
|
60
|
-
];
|
|
61
|
-
}
|
|
62
|
-
return [];
|
|
63
|
-
}
|
|
64
|
-
case "code": {
|
|
65
|
-
const strength = element?.binding?.strength;
|
|
66
|
-
const valueSet = element?.binding?.valueSet;
|
|
67
|
-
if (typeof value !== "string") {
|
|
68
|
-
return [
|
|
69
|
-
issueError("structure", `Expected primitive type '${type}' at path '${fpointer.toJSONPointer(path)}'`, [fpointer.toJSONPointer(path)]),
|
|
70
|
-
];
|
|
71
|
-
}
|
|
72
|
-
if (strength === "required" && valueSet && ctx.validateCode) {
|
|
73
|
-
const isValid = await ctx.validateCode(valueSet, value);
|
|
74
|
-
if (!isValid) {
|
|
75
|
-
return [
|
|
76
|
-
issueError("structure", `Code '${value}' is not in value set '${valueSet}' at path '${fpointer.toJSONPointer(path)}'`, [fpointer.toJSONPointer(path)]),
|
|
77
|
-
];
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return [];
|
|
81
|
-
}
|
|
82
|
-
case "integer":
|
|
83
|
-
case "positiveInt":
|
|
84
|
-
case "unsignedInt":
|
|
85
|
-
case "decimal": {
|
|
86
|
-
if (typeof value !== "number") {
|
|
87
|
-
return [
|
|
88
|
-
issueError("structure", `Expected primitive type '${type}' at path '${fpointer.toJSONPointer(path)}'`, [fpointer.toJSONPointer(path)]),
|
|
89
|
-
];
|
|
90
|
-
}
|
|
91
|
-
if (REGEX[type] && !REGEX[type].test(value.toString())) {
|
|
92
|
-
return [
|
|
93
|
-
issueError("value", `Invalid value '${value}' at path '${fpointer.toJSONPointer(path)}'. Value must conform to regex '${REGEX[type]}'`, [fpointer.toJSONPointer(path)]),
|
|
94
|
-
];
|
|
95
|
-
}
|
|
96
|
-
return [];
|
|
97
|
-
}
|
|
98
|
-
default:
|
|
99
|
-
throw new OperationError(outcomeError("structure", `Unknown primitive type '${type}' at path '${fpointer.toJSONPointer(path)}'`, [fpointer.toJSONPointer(path)]));
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=validate-primitive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-primitive.js","sourceRoot":"","sources":["../../src/structural/validate-primitive.ts"],"names":[],"mappings":"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"}
|