@metriport/shared 0.33.7 → 0.34.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/__tests__/object.test.d.ts +2 -0
- package/dist/common/__tests__/object.test.d.ts.map +1 -0
- package/dist/common/__tests__/object.test.js +55 -0
- package/dist/common/__tests__/object.test.js.map +1 -0
- package/dist/common/__tests__/purpose-of-use.test.d.ts +2 -0
- package/dist/common/__tests__/purpose-of-use.test.d.ts.map +1 -0
- package/dist/common/__tests__/purpose-of-use.test.js +24 -0
- package/dist/common/__tests__/purpose-of-use.test.js.map +1 -0
- package/dist/common/__tests__/string.test.js +71 -0
- package/dist/common/__tests__/string.test.js.map +1 -1
- package/dist/common/object.d.ts +15 -0
- package/dist/common/object.d.ts.map +1 -0
- package/dist/common/object.js +50 -0
- package/dist/common/object.js.map +1 -0
- package/dist/common/purpose-of-use.d.ts +16 -1
- package/dist/common/purpose-of-use.d.ts.map +1 -1
- package/dist/common/purpose-of-use.js +25 -2
- package/dist/common/purpose-of-use.js.map +1 -1
- package/dist/common/string.d.ts +26 -0
- package/dist/common/string.d.ts.map +1 -1
- package/dist/common/string.js +39 -0
- package/dist/common/string.js.map +1 -1
- package/dist/domain/cohort.d.ts +9 -1
- package/dist/domain/cohort.d.ts.map +1 -1
- package/dist/domain/cohort.js +16 -2
- package/dist/domain/cohort.js.map +1 -1
- package/dist/domain/patient/patient-settings.d.ts +19 -120
- package/dist/domain/patient/patient-settings.d.ts.map +1 -1
- package/dist/domain/patient/patient-settings.js +7 -24
- package/dist/domain/patient/patient-settings.js.map +1 -1
- package/dist/domain/patient/patient-status.d.ts +4 -12
- package/dist/domain/patient/patient-status.d.ts.map +1 -1
- package/dist/domain/patient/patient-status.js +0 -6
- package/dist/domain/patient/patient-status.js.map +1 -1
- package/dist/external/hl7v2/constants.d.ts +2 -0
- package/dist/external/hl7v2/constants.d.ts.map +1 -1
- package/dist/external/hl7v2/constants.js +15 -2
- package/dist/external/hl7v2/constants.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/interface/internal/cohort.d.ts +16 -0
- package/dist/interface/internal/cohort.d.ts.map +1 -1
- package/dist/interface/internal/cohort.js +1 -0
- package/dist/interface/internal/cohort.js.map +1 -1
- package/dist/interface/internal/consolidated.d.ts +37 -0
- package/dist/interface/internal/consolidated.d.ts.map +1 -1
- package/dist/interface/internal/consolidated.js +7 -1
- package/dist/interface/internal/consolidated.js.map +1 -1
- package/dist/interface/internal/index.d.ts +2 -0
- package/dist/interface/internal/index.d.ts.map +1 -1
- package/dist/interface/internal/index.js +2 -0
- package/dist/interface/internal/index.js.map +1 -1
- package/dist/interface/internal/patient-settings.d.ts +108 -0
- package/dist/interface/internal/patient-settings.d.ts.map +1 -0
- package/dist/interface/internal/patient-settings.js +19 -0
- package/dist/interface/internal/patient-settings.js.map +1 -0
- package/dist/interface/internal/patient-status.d.ts +12 -0
- package/dist/interface/internal/patient-status.d.ts.map +1 -0
- package/dist/interface/internal/patient-status.js +9 -0
- package/dist/interface/internal/patient-status.js.map +1 -0
- package/dist/medical/fhir/__tests__/primitive-types.test.d.ts +2 -0
- package/dist/medical/fhir/__tests__/primitive-types.test.d.ts.map +1 -0
- package/dist/medical/fhir/__tests__/primitive-types.test.js +56 -0
- package/dist/medical/fhir/__tests__/primitive-types.test.js.map +1 -0
- package/dist/medical/fhir/coding.d.ts +1 -0
- package/dist/medical/fhir/coding.d.ts.map +1 -1
- package/dist/medical/fhir/coding.js +8 -0
- package/dist/medical/fhir/coding.js.map +1 -1
- package/dist/medical/fhir/primitive-types.d.ts +18 -0
- package/dist/medical/fhir/primitive-types.d.ts.map +1 -0
- package/dist/medical/fhir/primitive-types.js +31 -0
- package/dist/medical/fhir/primitive-types.js.map +1 -0
- package/dist/medical/index.d.ts +1 -0
- package/dist/medical/index.d.ts.map +1 -1
- package/dist/medical/index.js +1 -0
- package/dist/medical/index.js.map +1 -1
- package/dist/util/sqs-delay-from-uuid.d.ts +11 -0
- package/dist/util/sqs-delay-from-uuid.d.ts.map +1 -0
- package/dist/util/sqs-delay-from-uuid.js +21 -0
- package/dist/util/sqs-delay-from-uuid.js.map +1 -0
- package/package.json +3 -5
- package/dist/domain/__tests__/cohort-purpose-of-use-hies.test.d.ts +0 -2
- package/dist/domain/__tests__/cohort-purpose-of-use-hies.test.d.ts.map +0 -1
- package/dist/domain/__tests__/cohort-purpose-of-use-hies.test.js +0 -10
- package/dist/domain/__tests__/cohort-purpose-of-use-hies.test.js.map +0 -1
- package/dist/domain/__tests__/cohort-response-dto.test.d.ts +0 -2
- package/dist/domain/__tests__/cohort-response-dto.test.d.ts.map +0 -1
- package/dist/domain/__tests__/cohort-response-dto.test.js +0 -59
- package/dist/domain/__tests__/cohort-response-dto.test.js.map +0 -1
- package/dist/domain/cohort-purpose-of-use-hies.d.ts +0 -3
- package/dist/domain/cohort-purpose-of-use-hies.d.ts.map +0 -1
- package/dist/domain/cohort-purpose-of-use-hies.js +0 -11
- package/dist/domain/cohort-purpose-of-use-hies.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/object.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const object_1 = require("../object");
|
|
4
|
+
describe("dangerouslyRemoveNullFieldsAndEmptyObjects", () => {
|
|
5
|
+
it("deletes top-level null properties", () => {
|
|
6
|
+
const input = { a: 1, b: null };
|
|
7
|
+
(0, object_1.dangerouslyRemoveNullFieldsAndEmptyObjects)(input);
|
|
8
|
+
expect(input).toEqual({ a: 1 });
|
|
9
|
+
expect("b" in input).toBe(false);
|
|
10
|
+
});
|
|
11
|
+
it("deletes nested null properties", () => {
|
|
12
|
+
const input = { valueQuantity: { unit: "mg", value: null } };
|
|
13
|
+
(0, object_1.dangerouslyRemoveNullFieldsAndEmptyObjects)(input);
|
|
14
|
+
expect(input).toEqual({ valueQuantity: { unit: "mg" } });
|
|
15
|
+
});
|
|
16
|
+
it("prunes a property that becomes an empty object after stripping nulls", () => {
|
|
17
|
+
const input = { valueQuantity: { value: null } };
|
|
18
|
+
(0, object_1.dangerouslyRemoveNullFieldsAndEmptyObjects)(input);
|
|
19
|
+
expect(input).toEqual({});
|
|
20
|
+
expect("valueQuantity" in input).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
it("prunes empty objects bubbling up through nesting", () => {
|
|
23
|
+
const input = { a: { b: { c: null } } };
|
|
24
|
+
(0, object_1.dangerouslyRemoveNullFieldsAndEmptyObjects)(input);
|
|
25
|
+
expect(input).toEqual({});
|
|
26
|
+
});
|
|
27
|
+
it("recurses into array items", () => {
|
|
28
|
+
const input = { coding: [{ system: "x", display: null }] };
|
|
29
|
+
(0, object_1.dangerouslyRemoveNullFieldsAndEmptyObjects)(input);
|
|
30
|
+
expect(input).toEqual({ coding: [{ system: "x" }] });
|
|
31
|
+
});
|
|
32
|
+
it("removes array items that become empty objects, keeping the rest", () => {
|
|
33
|
+
const input = { coding: [{ system: null }, { system: "x" }] };
|
|
34
|
+
(0, object_1.dangerouslyRemoveNullFieldsAndEmptyObjects)(input);
|
|
35
|
+
expect(input).toEqual({ coding: [{ system: "x" }] });
|
|
36
|
+
});
|
|
37
|
+
it("drops an array that becomes empty after pruning its only empty-object item", () => {
|
|
38
|
+
const input = { coding: [{ system: null }] };
|
|
39
|
+
(0, object_1.dangerouslyRemoveNullFieldsAndEmptyObjects)(input);
|
|
40
|
+
expect(input).toEqual({});
|
|
41
|
+
expect("coding" in input).toBe(false);
|
|
42
|
+
});
|
|
43
|
+
it("removes a pre-existing empty array", () => {
|
|
44
|
+
const input = { a: 1, coding: [] };
|
|
45
|
+
(0, object_1.dangerouslyRemoveNullFieldsAndEmptyObjects)(input);
|
|
46
|
+
expect(input).toEqual({ a: 1 });
|
|
47
|
+
expect("coding" in input).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
it("leaves undefined and falsy values untouched", () => {
|
|
50
|
+
const input = { a: undefined, b: 0, c: "", d: false };
|
|
51
|
+
(0, object_1.dangerouslyRemoveNullFieldsAndEmptyObjects)(input);
|
|
52
|
+
expect(input).toEqual({ a: undefined, b: 0, c: "", d: false });
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=object.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.test.js","sourceRoot":"","sources":["../../../src/common/__tests__/object.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purpose-of-use.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/purpose-of-use.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const purpose_of_use_1 = require("../purpose-of-use");
|
|
4
|
+
describe("isAcceptedTefcaPurposeOfUse", () => {
|
|
5
|
+
it("accepts T-TRTMNT", () => {
|
|
6
|
+
expect((0, purpose_of_use_1.isAcceptedTefcaPurposeOfUse)(purpose_of_use_1.TefcaPurposeOfUse.TREATMENT)).toBe(true);
|
|
7
|
+
});
|
|
8
|
+
it("accepts T-IAS", () => {
|
|
9
|
+
expect((0, purpose_of_use_1.isAcceptedTefcaPurposeOfUse)(purpose_of_use_1.TefcaPurposeOfUse.IAS)).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
it("accepts TEFCA codes case-insensitively", () => {
|
|
12
|
+
expect((0, purpose_of_use_1.isAcceptedTefcaPurposeOfUse)("t-trtmnt")).toBe(true);
|
|
13
|
+
expect((0, purpose_of_use_1.isAcceptedTefcaPurposeOfUse)(" t-ias ")).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
it("rejects eHex Treatment PurposeOfUse", () => {
|
|
16
|
+
expect((0, purpose_of_use_1.isAcceptedTefcaPurposeOfUse)(purpose_of_use_1.PurposeOfUse.TREATMENT)).toBe(false);
|
|
17
|
+
});
|
|
18
|
+
it("rejects missing and sentinel values", () => {
|
|
19
|
+
expect((0, purpose_of_use_1.isAcceptedTefcaPurposeOfUse)(undefined)).toBe(false);
|
|
20
|
+
expect((0, purpose_of_use_1.isAcceptedTefcaPurposeOfUse)("")).toBe(false);
|
|
21
|
+
expect((0, purpose_of_use_1.isAcceptedTefcaPurposeOfUse)(purpose_of_use_1.NO_POU_SPECIFIED)).toBe(false);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=purpose-of-use.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purpose-of-use.test.js","sourceRoot":"","sources":["../../../src/common/__tests__/purpose-of-use.test.ts"],"names":[],"mappings":";;AAAA,sDAK2B;AAE3B,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,CAAC,IAAA,4CAA2B,EAAC,kCAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,IAAA,4CAA2B,EAAC,kCAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,IAAA,4CAA2B,EAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAA,4CAA2B,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,IAAA,4CAA2B,EAAC,6BAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,IAAA,4CAA2B,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAA,4CAA2B,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,IAAA,4CAA2B,EAAC,iCAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -2,6 +2,77 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const faker_1 = require("@faker-js/faker");
|
|
4
4
|
const string_1 = require("../string");
|
|
5
|
+
describe("stripWhitespace", () => {
|
|
6
|
+
it("removes leading and trailing whitespace", () => {
|
|
7
|
+
expect((0, string_1.stripWhitespace)(" http://loinc.org ")).toBe("http://loinc.org");
|
|
8
|
+
});
|
|
9
|
+
it("removes internal whitespace", () => {
|
|
10
|
+
expect((0, string_1.stripWhitespace)("http://loinc .org")).toBe("http://loinc.org");
|
|
11
|
+
});
|
|
12
|
+
it("removes tabs and newlines", () => {
|
|
13
|
+
expect((0, string_1.stripWhitespace)("http://loinc\t.org\n")).toBe("http://loinc.org");
|
|
14
|
+
});
|
|
15
|
+
it("leaves whitespace-free strings unchanged", () => {
|
|
16
|
+
expect((0, string_1.stripWhitespace)("http://snomed.info/sct")).toBe("http://snomed.info/sct");
|
|
17
|
+
});
|
|
18
|
+
it("returns empty string for whitespace-only input", () => {
|
|
19
|
+
expect((0, string_1.stripWhitespace)(" ")).toBe("");
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
describe("collapseWhitespace", () => {
|
|
23
|
+
it("trims leading whitespace", () => {
|
|
24
|
+
expect((0, string_1.collapseWhitespace)(" 1234-5")).toBe("1234-5");
|
|
25
|
+
});
|
|
26
|
+
it("trims trailing whitespace", () => {
|
|
27
|
+
expect((0, string_1.collapseWhitespace)("1234-5 ")).toBe("1234-5");
|
|
28
|
+
});
|
|
29
|
+
it("collapses doubled internal spaces to a single space", () => {
|
|
30
|
+
expect((0, string_1.collapseWhitespace)("abc def")).toBe("abc def");
|
|
31
|
+
});
|
|
32
|
+
it("collapses tabs and newlines to a single space", () => {
|
|
33
|
+
expect((0, string_1.collapseWhitespace)("abc\t\ndef")).toBe("abc def");
|
|
34
|
+
});
|
|
35
|
+
it("preserves a single internal space", () => {
|
|
36
|
+
expect((0, string_1.collapseWhitespace)("abc def")).toBe("abc def");
|
|
37
|
+
});
|
|
38
|
+
it("returns empty string for whitespace-only input", () => {
|
|
39
|
+
expect((0, string_1.collapseWhitespace)(" ")).toBe("");
|
|
40
|
+
});
|
|
41
|
+
it("leaves a clean code unchanged", () => {
|
|
42
|
+
expect((0, string_1.collapseWhitespace)("1234-5")).toBe("1234-5");
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe("stripInvalidFhirStringChars", () => {
|
|
46
|
+
it("preserves space, tab, carriage return, and line feed", () => {
|
|
47
|
+
const input = "a b\tc\rd\ne";
|
|
48
|
+
expect((0, string_1.stripInvalidFhirStringChars)(input)).toBe(input);
|
|
49
|
+
});
|
|
50
|
+
it("preserves printable text unchanged", () => {
|
|
51
|
+
expect((0, string_1.stripInvalidFhirStringChars)("Hello, world!")).toBe("Hello, world!");
|
|
52
|
+
});
|
|
53
|
+
it("replaces vertical tab with a space", () => {
|
|
54
|
+
expect((0, string_1.stripInvalidFhirStringChars)("a\u000bb")).toBe("a b");
|
|
55
|
+
});
|
|
56
|
+
it("replaces form feed with a space", () => {
|
|
57
|
+
expect((0, string_1.stripInvalidFhirStringChars)("a\u000cb")).toBe("a b");
|
|
58
|
+
});
|
|
59
|
+
it("replaces non-breaking space with a space", () => {
|
|
60
|
+
expect((0, string_1.stripInvalidFhirStringChars)("a\u00a0b")).toBe("a b");
|
|
61
|
+
});
|
|
62
|
+
it("replaces line and paragraph separators with a space", () => {
|
|
63
|
+
expect((0, string_1.stripInvalidFhirStringChars)("a\u2028b\u2029c")).toBe("a b c");
|
|
64
|
+
});
|
|
65
|
+
it("replaces multiple disallowed characters", () => {
|
|
66
|
+
expect((0, string_1.stripInvalidFhirStringChars)("a\u000b\u000c\u00a0b")).toBe("a b");
|
|
67
|
+
});
|
|
68
|
+
it("is idempotent", () => {
|
|
69
|
+
const once = (0, string_1.stripInvalidFhirStringChars)("a\u000b\u00a0b");
|
|
70
|
+
expect((0, string_1.stripInvalidFhirStringChars)(once)).toBe(once);
|
|
71
|
+
});
|
|
72
|
+
it("returns empty string for empty input", () => {
|
|
73
|
+
expect((0, string_1.stripInvalidFhirStringChars)("")).toBe("");
|
|
74
|
+
});
|
|
75
|
+
});
|
|
5
76
|
describe("stripTrailingNonAlphanumeric", () => {
|
|
6
77
|
it("removes trailing slash", () => {
|
|
7
78
|
expect((0, string_1.stripTrailingNonAlphanumeric)("Suite/")).toBe("Suite");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.test.js","sourceRoot":"","sources":["../../../src/common/__tests__/string.test.ts"],"names":[],"mappings":";;AAAA,2CAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"string.test.js","sourceRoot":"","sources":["../../../src/common/__tests__/string.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively removes properties that carry no information from a plain object
|
|
3
|
+
* (or array of objects):
|
|
4
|
+
* - properties whose value is literally `null`
|
|
5
|
+
* - empty-object items within arrays
|
|
6
|
+
* - properties that become an empty object or empty array once their null/empty children are
|
|
7
|
+
* removed
|
|
8
|
+
*
|
|
9
|
+
* This mirrors the FHIR JSON rule that objects and arrays are never empty and properties are
|
|
10
|
+
* never null - empty content must be omitted (see https://hl7.org/fhir/R4/json.html).
|
|
11
|
+
*
|
|
12
|
+
* Mutates the input in place.
|
|
13
|
+
*/
|
|
14
|
+
export declare function dangerouslyRemoveNullFieldsAndEmptyObjects(value: unknown): void;
|
|
15
|
+
//# sourceMappingURL=object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/common/object.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,0CAA0C,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAsB/E"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dangerouslyRemoveNullFieldsAndEmptyObjects = dangerouslyRemoveNullFieldsAndEmptyObjects;
|
|
4
|
+
/**
|
|
5
|
+
* Recursively removes properties that carry no information from a plain object
|
|
6
|
+
* (or array of objects):
|
|
7
|
+
* - properties whose value is literally `null`
|
|
8
|
+
* - empty-object items within arrays
|
|
9
|
+
* - properties that become an empty object or empty array once their null/empty children are
|
|
10
|
+
* removed
|
|
11
|
+
*
|
|
12
|
+
* This mirrors the FHIR JSON rule that objects and arrays are never empty and properties are
|
|
13
|
+
* never null - empty content must be omitted (see https://hl7.org/fhir/R4/json.html).
|
|
14
|
+
*
|
|
15
|
+
* Mutates the input in place.
|
|
16
|
+
*/
|
|
17
|
+
function dangerouslyRemoveNullFieldsAndEmptyObjects(value) {
|
|
18
|
+
if (Array.isArray(value)) {
|
|
19
|
+
for (const item of value)
|
|
20
|
+
dangerouslyRemoveNullFieldsAndEmptyObjects(item);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (!value || typeof value !== "object")
|
|
24
|
+
return;
|
|
25
|
+
const obj = value;
|
|
26
|
+
for (const [key, val] of Object.entries(obj)) {
|
|
27
|
+
if (val === null) {
|
|
28
|
+
delete obj[key];
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
dangerouslyRemoveNullFieldsAndEmptyObjects(val);
|
|
32
|
+
if (Array.isArray(val)) {
|
|
33
|
+
const cleaned = val.filter(item => !isEmptyObject(item));
|
|
34
|
+
if (cleaned.length < 1)
|
|
35
|
+
delete obj[key];
|
|
36
|
+
else
|
|
37
|
+
obj[key] = cleaned;
|
|
38
|
+
}
|
|
39
|
+
else if (isEmptyObject(val)) {
|
|
40
|
+
delete obj[key];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function isEmptyObject(value) {
|
|
45
|
+
return (typeof value === "object" &&
|
|
46
|
+
value !== null &&
|
|
47
|
+
!Array.isArray(value) &&
|
|
48
|
+
Object.keys(value).length === 0);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/common/object.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;GAYG;AACH,oDAA2D,KAAc;IACvE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,0CAA0C,CAAC,IAAI,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO;IAEhD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QACD,0CAA0C,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YACzD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;;gBACnC,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAC1B,CAAC;aAAM,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAChC,CAAC;AACJ,CAAC"}
|
|
@@ -27,11 +27,20 @@ export declare enum PurposeOfUse {
|
|
|
27
27
|
COVERAGE = "COVERAGE",
|
|
28
28
|
REQUEST = "REQUEST"
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* TEFCA Exchange Purpose (XP) codes in SAML PurposeOfUse (OID 2.16.840.1.113883.3.7204.1.5.2.1).
|
|
32
|
+
* @see https://rce.sequoiaproject.org/
|
|
33
|
+
*/
|
|
34
|
+
export declare enum TefcaPurposeOfUse {
|
|
35
|
+
TREATMENT = "T-TRTMNT",
|
|
36
|
+
IAS = "T-IAS"
|
|
37
|
+
}
|
|
30
38
|
/**
|
|
31
39
|
* Sentinel value used by inbound SAML parsers when a peer's assertion omits the PoU
|
|
32
40
|
* attribute entirely. Lets us keep `purposeOfUse: string` (required) in the SAML attribute
|
|
33
41
|
* schema while still distinguishing "peer did not assert PoU" from a real value at the
|
|
34
|
-
* application layer. `isAcceptedPurposeOfUse`
|
|
42
|
+
* application layer. `isAcceptedPurposeOfUse` and `isAcceptedTefcaPurposeOfUse` reject this
|
|
43
|
+
* sentinel by design.
|
|
35
44
|
*/
|
|
36
45
|
export declare const NO_POU_SPECIFIED = "NO_POU_SPECIFIED";
|
|
37
46
|
/**
|
|
@@ -40,4 +49,10 @@ export declare const NO_POU_SPECIFIED = "NO_POU_SPECIFIED";
|
|
|
40
49
|
* @returns True if the purpose of use is valid (Treatment), false otherwise.
|
|
41
50
|
*/
|
|
42
51
|
export declare function isAcceptedPurposeOfUse(pou: string | undefined): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* TEFCA inbound Responding Node supports Treatment (T-TRTMNT) and IAS (T-IAS) exchange purposes.
|
|
54
|
+
* @param pou Purpose of use / XP code from the SAML PurposeOfUse attribute.
|
|
55
|
+
* @returns True if the purpose of use is valid (T-TRTMNT or T-IAS), false otherwise.
|
|
56
|
+
*/
|
|
57
|
+
export declare function isAcceptedTefcaPurposeOfUse(pou: string | undefined): boolean;
|
|
43
58
|
//# sourceMappingURL=purpose-of-use.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purpose-of-use.d.ts","sourceRoot":"","sources":["../../src/common/purpose-of-use.ts"],"names":[],"mappings":"AACA,oBAAY,YAAY;IACtB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED
|
|
1
|
+
{"version":3,"file":"purpose-of-use.d.ts","sourceRoot":"","sources":["../../src/common/purpose-of-use.ts"],"names":[],"mappings":"AACA,oBAAY,YAAY;IACtB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,aAAa,kBAAkB;IAC/B,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B,SAAS,aAAa;IACtB,GAAG,UAAU;CACd;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvE;AAMD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAK5E"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NO_POU_SPECIFIED = exports.PurposeOfUse = void 0;
|
|
3
|
+
exports.NO_POU_SPECIFIED = exports.TefcaPurposeOfUse = exports.PurposeOfUse = void 0;
|
|
4
4
|
exports.isAcceptedPurposeOfUse = isAcceptedPurposeOfUse;
|
|
5
|
+
exports.isAcceptedTefcaPurposeOfUse = isAcceptedTefcaPurposeOfUse;
|
|
5
6
|
// https://www.hl7.org/fhir/codesystem-nhin-purposeofuse.html
|
|
6
7
|
var PurposeOfUse;
|
|
7
8
|
(function (PurposeOfUse) {
|
|
@@ -33,11 +34,21 @@ var PurposeOfUse;
|
|
|
33
34
|
PurposeOfUse["COVERAGE"] = "COVERAGE";
|
|
34
35
|
PurposeOfUse["REQUEST"] = "REQUEST";
|
|
35
36
|
})(PurposeOfUse || (exports.PurposeOfUse = PurposeOfUse = {}));
|
|
37
|
+
/**
|
|
38
|
+
* TEFCA Exchange Purpose (XP) codes in SAML PurposeOfUse (OID 2.16.840.1.113883.3.7204.1.5.2.1).
|
|
39
|
+
* @see https://rce.sequoiaproject.org/
|
|
40
|
+
*/
|
|
41
|
+
var TefcaPurposeOfUse;
|
|
42
|
+
(function (TefcaPurposeOfUse) {
|
|
43
|
+
TefcaPurposeOfUse["TREATMENT"] = "T-TRTMNT";
|
|
44
|
+
TefcaPurposeOfUse["IAS"] = "T-IAS";
|
|
45
|
+
})(TefcaPurposeOfUse || (exports.TefcaPurposeOfUse = TefcaPurposeOfUse = {}));
|
|
36
46
|
/**
|
|
37
47
|
* Sentinel value used by inbound SAML parsers when a peer's assertion omits the PoU
|
|
38
48
|
* attribute entirely. Lets us keep `purposeOfUse: string` (required) in the SAML attribute
|
|
39
49
|
* schema while still distinguishing "peer did not assert PoU" from a real value at the
|
|
40
|
-
* application layer. `isAcceptedPurposeOfUse`
|
|
50
|
+
* application layer. `isAcceptedPurposeOfUse` and `isAcceptedTefcaPurposeOfUse` reject this
|
|
51
|
+
* sentinel by design.
|
|
41
52
|
*/
|
|
42
53
|
exports.NO_POU_SPECIFIED = "NO_POU_SPECIFIED";
|
|
43
54
|
/**
|
|
@@ -48,4 +59,16 @@ exports.NO_POU_SPECIFIED = "NO_POU_SPECIFIED";
|
|
|
48
59
|
function isAcceptedPurposeOfUse(pou) {
|
|
49
60
|
return pou?.trim().toUpperCase() === PurposeOfUse.TREATMENT;
|
|
50
61
|
}
|
|
62
|
+
const acceptedTefcaPurposeOfUse = new Set(Object.values(TefcaPurposeOfUse).map(value => value.trim().toUpperCase()));
|
|
63
|
+
/**
|
|
64
|
+
* TEFCA inbound Responding Node supports Treatment (T-TRTMNT) and IAS (T-IAS) exchange purposes.
|
|
65
|
+
* @param pou Purpose of use / XP code from the SAML PurposeOfUse attribute.
|
|
66
|
+
* @returns True if the purpose of use is valid (T-TRTMNT or T-IAS), false otherwise.
|
|
67
|
+
*/
|
|
68
|
+
function isAcceptedTefcaPurposeOfUse(pou) {
|
|
69
|
+
if (!pou) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return acceptedTefcaPurposeOfUse.has(pou.trim().toUpperCase());
|
|
73
|
+
}
|
|
51
74
|
//# sourceMappingURL=purpose-of-use.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purpose-of-use.js","sourceRoot":"","sources":["../../src/common/purpose-of-use.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"purpose-of-use.js","sourceRoot":"","sources":["../../src/common/purpose-of-use.ts"],"names":[],"mappings":";;;;;AAAA,6DAA6D;AAC7D,IAAY,YA4BX;AA5BD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,mCAAmB,CAAA;IACnB,yCAAyB,CAAA;IACzB,qCAAqB,CAAA;IACrB,+BAAe,CAAA;IACf,+CAA+B,CAAA;IAC/B,qCAAqB,CAAA;IACrB,+BAAe,CAAA;IACf,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;IACrB,6CAA6B,CAAA;IAC7B,+BAAe,CAAA;IACf,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;IACrB,2BAAW,CAAA;IACX,qCAAqB,CAAA;IACrB,qCAAqB,CAAA;IACrB,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;IACjB,yCAAyB,CAAA;IACzB,2CAA2B,CAAA;IAC3B,qCAAqB,CAAA;IACrB,mCAAmB,CAAA;AACrB,CAAC,EA5BW,YAAY,aAAZ,YAAY,GAAZ,YAAY,QA4BvB;AAED;;;GAGG;AACH,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,2CAAsB,CAAA;IACtB,kCAAa,CAAA;AACf,CAAC,EAHW,iBAAiB,aAAjB,iBAAiB,GAAjB,iBAAiB,QAG5B;AAED;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,gCAAuC,GAAuB;IAC5D,OAAO,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,SAAS,CAAC;AAC9D,CAAC;AAED,MAAM,yBAAyB,GAAG,IAAI,GAAG,CACvC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAC1E,CAAC;AAEF;;;;GAIG;AACH,qCAA4C,GAAuB;IACjE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC"}
|
package/dist/common/string.d.ts
CHANGED
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
export declare function limitStringLength<T extends string | undefined>(value: T, max?: number, suffix?: string): T;
|
|
2
2
|
export declare function stripNonNumericChars(str: string): string;
|
|
3
3
|
export declare function stripPeriods(str: string): string;
|
|
4
|
+
/**
|
|
5
|
+
* Removes all whitespace characters from a string (spaces, tabs, newlines, etc.).
|
|
6
|
+
*
|
|
7
|
+
* Useful for FHIR `system` values (uri/code), which must match `^\S*$` - i.e. contain
|
|
8
|
+
* no whitespace at all (not just leading/trailing). Use this instead of `.trim()` when
|
|
9
|
+
* the target disallows any internal whitespace as well.
|
|
10
|
+
*/
|
|
11
|
+
export declare function stripWhitespace(str: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Replaces characters that FHIR disallows in string values with a space.
|
|
14
|
+
*
|
|
15
|
+
* FHIR `string` values must match `^[ \r\n\t\S]+$`. The only disallowed characters are
|
|
16
|
+
* whitespace characters other than space, carriage return, line feed, and tab (for example
|
|
17
|
+
* vertical tab, form feed, and non-breaking space). Each such character is replaced with a
|
|
18
|
+
* single space so the value stays non-empty and valid.
|
|
19
|
+
*/
|
|
20
|
+
export declare function stripInvalidFhirStringChars(str: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Trims leading/trailing whitespace and collapses internal runs of whitespace to a single
|
|
23
|
+
* space.
|
|
24
|
+
*
|
|
25
|
+
* Useful for FHIR `code` values, which must match `^[^\s]+(\s[^\s]+)*$` - i.e. no leading,
|
|
26
|
+
* trailing, or doubled whitespace, but single internal spaces are allowed and preserved.
|
|
27
|
+
* Unlike `stripWhitespace`, this keeps legitimate single internal spaces intact.
|
|
28
|
+
*/
|
|
29
|
+
export declare function collapseWhitespace(str: string): string;
|
|
4
30
|
/**
|
|
5
31
|
* Removes trailing characters that are not letters or digits in any script (Unicode-aware).
|
|
6
32
|
* Keeps international addresses intact (e.g. "Straße", "1-2-3 号") while still stripping
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/common/string.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,EAC5D,KAAK,EAAE,CAAC,EACR,GAAG,SAAM,EACT,MAAM,SAAQ,GACb,CAAC,CAOH;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI/D;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAWzD"}
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/common/string.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,EAC5D,KAAK,EAAE,CAAC,EACR,GAAG,SAAM,EACT,MAAM,SAAQ,GACb,CAAC,CAOH;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAOD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI/D;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAWzD"}
|
package/dist/common/string.js
CHANGED
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.limitStringLength = limitStringLength;
|
|
4
4
|
exports.stripNonNumericChars = stripNonNumericChars;
|
|
5
5
|
exports.stripPeriods = stripPeriods;
|
|
6
|
+
exports.stripWhitespace = stripWhitespace;
|
|
7
|
+
exports.stripInvalidFhirStringChars = stripInvalidFhirStringChars;
|
|
8
|
+
exports.collapseWhitespace = collapseWhitespace;
|
|
6
9
|
exports.stripTrailingNonAlphanumeric = stripTrailingNonAlphanumeric;
|
|
7
10
|
exports.trimWhitespace = trimWhitespace;
|
|
8
11
|
exports.safeTrim = safeTrim;
|
|
@@ -19,6 +22,42 @@ function stripNonNumericChars(str) {
|
|
|
19
22
|
function stripPeriods(str) {
|
|
20
23
|
return str.trim().replace(/\./g, "");
|
|
21
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Removes all whitespace characters from a string (spaces, tabs, newlines, etc.).
|
|
27
|
+
*
|
|
28
|
+
* Useful for FHIR `system` values (uri/code), which must match `^\S*$` - i.e. contain
|
|
29
|
+
* no whitespace at all (not just leading/trailing). Use this instead of `.trim()` when
|
|
30
|
+
* the target disallows any internal whitespace as well.
|
|
31
|
+
*/
|
|
32
|
+
function stripWhitespace(str) {
|
|
33
|
+
return str.replace(/\s/g, "");
|
|
34
|
+
}
|
|
35
|
+
// FHIR string values must match `^[ \r\n\t\S]+$`, so the only disallowed characters are
|
|
36
|
+
// whitespace other than space/CR/LF/tab (e.g. vertical tab, form feed, NBSP). Verified fix
|
|
37
|
+
// per ENG-3117: replace each disallowed character with a space.
|
|
38
|
+
const invalidFhirStringCharsRegex = /[^ \r\n\t\S]/g;
|
|
39
|
+
/**
|
|
40
|
+
* Replaces characters that FHIR disallows in string values with a space.
|
|
41
|
+
*
|
|
42
|
+
* FHIR `string` values must match `^[ \r\n\t\S]+$`. The only disallowed characters are
|
|
43
|
+
* whitespace characters other than space, carriage return, line feed, and tab (for example
|
|
44
|
+
* vertical tab, form feed, and non-breaking space). Each such character is replaced with a
|
|
45
|
+
* single space so the value stays non-empty and valid.
|
|
46
|
+
*/
|
|
47
|
+
function stripInvalidFhirStringChars(str) {
|
|
48
|
+
return str.replace(invalidFhirStringCharsRegex, " ");
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Trims leading/trailing whitespace and collapses internal runs of whitespace to a single
|
|
52
|
+
* space.
|
|
53
|
+
*
|
|
54
|
+
* Useful for FHIR `code` values, which must match `^[^\s]+(\s[^\s]+)*$` - i.e. no leading,
|
|
55
|
+
* trailing, or doubled whitespace, but single internal spaces are allowed and preserved.
|
|
56
|
+
* Unlike `stripWhitespace`, this keeps legitimate single internal spaces intact.
|
|
57
|
+
*/
|
|
58
|
+
function collapseWhitespace(str) {
|
|
59
|
+
return str.trim().replace(/\s+/g, " ");
|
|
60
|
+
}
|
|
22
61
|
/**
|
|
23
62
|
* Removes trailing characters that are not letters or digits in any script (Unicode-aware).
|
|
24
63
|
* Keeps international addresses intact (e.g. "Straße", "1-2-3 号") while still stripping
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/common/string.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/common/string.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,2BACE,KAAQ,EACR,GAAG,GAAG,GAAG,EACT,MAAM,GAAG,KAAK;IAEd,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,CACL,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;QAChD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM;QAClD,CAAC,CAAC,KAAK,CACL,CAAC;AACT,CAAC;AAED,8BAAqC,GAAW;IAC9C,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,sBAA6B,GAAW;IACtC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,yBAAgC,GAAW;IACzC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,wFAAwF;AACxF,2FAA2F;AAC3F,gEAAgE;AAChE,MAAM,2BAA2B,GAAG,eAAe,CAAC;AAEpD;;;;;;;GAOG;AACH,qCAA4C,GAAW;IACrD,OAAO,GAAG,CAAC,OAAO,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;GAOG;AACH,4BAAmC,GAAW;IAC5C,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,sCAA6C,CAAS;IACpD,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,wBAA+B,GAAY;IACzC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACnD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,kBAAyB,GAAY;IACnC,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAClC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5B,CAAC"}
|
package/dist/domain/cohort.d.ts
CHANGED
|
@@ -11,6 +11,11 @@ export declare const DEFAULT_NOTIFICATION: Notification;
|
|
|
11
11
|
export declare const DEFAULT_PHARMACY_NOTIFICATION_SCHEDULE: PharmacyNotificationSchedule;
|
|
12
12
|
export declare const DEFAULT_MONITORING: MonitoringSettings;
|
|
13
13
|
export declare const DEFAULT_OVERRIDES: Overrides;
|
|
14
|
+
export declare const TREATMENT_COHORT_PURPOSE_OF_USE: "treatment";
|
|
15
|
+
export declare const OPERATIONS_COHORT_PURPOSE_OF_USE: "operations";
|
|
16
|
+
export declare const COHORT_PURPOSE_OF_USE_VALUES: readonly ["treatment", "operations"];
|
|
17
|
+
export type CohortPurposeOfUse = (typeof COHORT_PURPOSE_OF_USE_VALUES)[number];
|
|
18
|
+
export declare const DEFAULT_COHORT_PURPOSE_OF_USE: CohortPurposeOfUse;
|
|
14
19
|
export declare const DEFAULT_SETTINGS: Settings;
|
|
15
20
|
export type Schedule<TFrequency extends PatientMonitoringCadence> = {
|
|
16
21
|
enabled: boolean;
|
|
@@ -52,12 +57,13 @@ export type Cohort = BaseDomain & {
|
|
|
52
57
|
color: CohortColors;
|
|
53
58
|
description: string;
|
|
54
59
|
settings: Settings;
|
|
60
|
+
purposeOfUse: CohortPurposeOfUse;
|
|
55
61
|
cxId: string;
|
|
56
62
|
};
|
|
57
63
|
export type CohortWithSize = Cohort & {
|
|
58
64
|
size: number;
|
|
59
65
|
};
|
|
60
|
-
export type CohortCreateCmd = Pick<Cohort, "name"> & Partial<Pick<Cohort, "description" | "color" | "settings">> & {
|
|
66
|
+
export type CohortCreateCmd = Pick<Cohort, "name"> & Partial<Pick<Cohort, "description" | "color" | "settings" | "purposeOfUse">> & {
|
|
61
67
|
cxId: string;
|
|
62
68
|
};
|
|
63
69
|
export type CohortUpdateCmd = Partial<Pick<Cohort, "name" | "description" | "color">> & {
|
|
@@ -71,6 +77,7 @@ export type CohortResponse = BaseDTO & {
|
|
|
71
77
|
name: string;
|
|
72
78
|
description: string;
|
|
73
79
|
color: CohortColors;
|
|
80
|
+
purposeOfUse: CohortPurposeOfUse;
|
|
74
81
|
settings: Settings;
|
|
75
82
|
};
|
|
76
83
|
export type CohortResponseWithoutOverrides = Omit<CohortResponse, "settings"> & {
|
|
@@ -85,6 +92,7 @@ export type CohortWithSizeResponseWithoutOverrides = Omit<CohortWithSizeResponse
|
|
|
85
92
|
export declare function responseDtoFromCohort(cohort: Cohort): CohortResponseWithoutOverrides;
|
|
86
93
|
export declare const cohortPatientMaxPageSize = 100;
|
|
87
94
|
export declare function normalizeCohortName(name: string): string;
|
|
95
|
+
export declare function isTreatmentCohort(cohort: Cohort): boolean;
|
|
88
96
|
export declare function isScheduleMonitoringActive(cohort: Cohort): boolean;
|
|
89
97
|
export {};
|
|
90
98
|
//# sourceMappingURL=cohort.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cohort.d.ts","sourceRoot":"","sources":["../../src/domain/cohort.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cohort.d.ts","sourceRoot":"","sources":["../../src/domain/cohort.ts"],"names":[],"mappings":"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"}
|
package/dist/domain/cohort.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cohortPatientMaxPageSize = exports.DEFAULT_SETTINGS = exports.DEFAULT_OVERRIDES = exports.DEFAULT_MONITORING = exports.DEFAULT_PHARMACY_NOTIFICATION_SCHEDULE = exports.DEFAULT_NOTIFICATION = exports.DEFAULT_PHARMACY_SCHEDULE = exports.DEFAULT_HIE_SCHEDULE = exports.DEFAULT_COLOR = exports.STATE_VALIDATION_OVERRIDE_KEY = exports.COHORT_COLORS = void 0;
|
|
3
|
+
exports.cohortPatientMaxPageSize = exports.DEFAULT_SETTINGS = exports.DEFAULT_COHORT_PURPOSE_OF_USE = exports.COHORT_PURPOSE_OF_USE_VALUES = exports.OPERATIONS_COHORT_PURPOSE_OF_USE = exports.TREATMENT_COHORT_PURPOSE_OF_USE = exports.DEFAULT_OVERRIDES = exports.DEFAULT_MONITORING = exports.DEFAULT_PHARMACY_NOTIFICATION_SCHEDULE = exports.DEFAULT_NOTIFICATION = exports.DEFAULT_PHARMACY_SCHEDULE = exports.DEFAULT_HIE_SCHEDULE = exports.DEFAULT_COLOR = exports.STATE_VALIDATION_OVERRIDE_KEY = exports.COHORT_COLORS = void 0;
|
|
4
4
|
exports.responseDtoFromCohort = responseDtoFromCohort;
|
|
5
5
|
exports.normalizeCohortName = normalizeCohortName;
|
|
6
|
+
exports.isTreatmentCohort = isTreatmentCohort;
|
|
6
7
|
exports.isScheduleMonitoringActive = isScheduleMonitoringActive;
|
|
7
8
|
const lodash_1 = require("lodash");
|
|
8
9
|
const bad_request_1 = require("../error/bad-request");
|
|
@@ -48,6 +49,13 @@ exports.DEFAULT_MONITORING = {
|
|
|
48
49
|
laboratory: (0, lodash_1.cloneDeep)(exports.DEFAULT_NOTIFICATION),
|
|
49
50
|
};
|
|
50
51
|
exports.DEFAULT_OVERRIDES = {};
|
|
52
|
+
exports.TREATMENT_COHORT_PURPOSE_OF_USE = "treatment";
|
|
53
|
+
exports.OPERATIONS_COHORT_PURPOSE_OF_USE = "operations";
|
|
54
|
+
exports.COHORT_PURPOSE_OF_USE_VALUES = [
|
|
55
|
+
exports.TREATMENT_COHORT_PURPOSE_OF_USE,
|
|
56
|
+
exports.OPERATIONS_COHORT_PURPOSE_OF_USE,
|
|
57
|
+
];
|
|
58
|
+
exports.DEFAULT_COHORT_PURPOSE_OF_USE = exports.TREATMENT_COHORT_PURPOSE_OF_USE;
|
|
51
59
|
exports.DEFAULT_SETTINGS = {
|
|
52
60
|
monitoring: exports.DEFAULT_MONITORING,
|
|
53
61
|
overrides: exports.DEFAULT_OVERRIDES,
|
|
@@ -60,7 +68,10 @@ function responseDtoFromCohort(cohort) {
|
|
|
60
68
|
name: cohort.name,
|
|
61
69
|
color: cohort.color,
|
|
62
70
|
description: cohort.description,
|
|
63
|
-
|
|
71
|
+
purposeOfUse: cohort.purposeOfUse,
|
|
72
|
+
settings: {
|
|
73
|
+
monitoring: settingsWithoutOverrides.monitoring,
|
|
74
|
+
},
|
|
64
75
|
};
|
|
65
76
|
}
|
|
66
77
|
// ### Query Constants ###
|
|
@@ -72,6 +83,9 @@ function normalizeCohortName(name) {
|
|
|
72
83
|
}
|
|
73
84
|
return trimmed;
|
|
74
85
|
}
|
|
86
|
+
function isTreatmentCohort(cohort) {
|
|
87
|
+
return cohort.purposeOfUse === exports.TREATMENT_COHORT_PURPOSE_OF_USE;
|
|
88
|
+
}
|
|
75
89
|
function isScheduleMonitoringActive(cohort) {
|
|
76
90
|
return (cohort.settings.monitoring.hie.enabled || cohort.settings.monitoring.pharmacy.schedule.enabled);
|
|
77
91
|
}
|