@metriport/shared 0.34.0 → 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__/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/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/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/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 -48
- package/dist/domain/__tests__/cohort-response-dto.test.js.map +0 -1
- package/dist/domain/cohort-purpose-of-use-hies.d.ts +0 -4
- package/dist/domain/cohort-purpose-of-use-hies.d.ts.map +0 -1
- package/dist/domain/cohort-purpose-of-use-hies.js +0 -15
- package/dist/domain/cohort-purpose-of-use-hies.js.map +0 -1
- package/dist/interface/internal/adt.d.ts +0 -1
- package/dist/interface/internal/adt.d.ts.map +0 -1
- package/dist/interface/internal/adt.js +0 -2
- package/dist/interface/internal/adt.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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"}
|
|
@@ -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"}
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-types.test.d.ts","sourceRoot":"","sources":["../../../../src/medical/fhir/__tests__/primitive-types.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const primitive_types_1 = require("../primitive-types");
|
|
4
|
+
describe("isValidFhirDateTime", () => {
|
|
5
|
+
it("returns false for undefined and empty", () => {
|
|
6
|
+
expect((0, primitive_types_1.isValidFhirDateTime)(undefined)).toEqual(false);
|
|
7
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("")).toEqual(false);
|
|
8
|
+
});
|
|
9
|
+
it("returns true for conformant values", () => {
|
|
10
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2018")).toEqual(true);
|
|
11
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("1973-06")).toEqual(true);
|
|
12
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("1905-08-23")).toEqual(true);
|
|
13
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2015-02-07T13:28:17-05:00")).toEqual(true);
|
|
14
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2017-01-01T00:00:00.000Z")).toEqual(true);
|
|
15
|
+
});
|
|
16
|
+
it("returns false for non-conformant values dayjs would otherwise accept", () => {
|
|
17
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("01/01/2023")).toEqual(false);
|
|
18
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020/01/01")).toEqual(false);
|
|
19
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("Jan 1 2020")).toEqual(false);
|
|
20
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020-13")).toEqual(false);
|
|
21
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020-2-7")).toEqual(false);
|
|
22
|
+
});
|
|
23
|
+
it("requires a timezone when a time is present", () => {
|
|
24
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2024-12-18T04:18:01")).toEqual(false);
|
|
25
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2024-12-18T04:18:01.263")).toEqual(false);
|
|
26
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2024-12-18T04:18:01Z")).toEqual(true);
|
|
27
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2024-12-18T04:18:01.263Z")).toEqual(true);
|
|
28
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2024-12-18T04:18:01-05:00")).toEqual(true);
|
|
29
|
+
});
|
|
30
|
+
it("does not require a timezone for date-only and partial dates", () => {
|
|
31
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2024-12-18")).toEqual(true);
|
|
32
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("1973-06")).toEqual(true);
|
|
33
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2018")).toEqual(true);
|
|
34
|
+
});
|
|
35
|
+
it("accepts leap seconds and the full timezone range", () => {
|
|
36
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020-01-31T23:59:60Z")).toEqual(true);
|
|
37
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020-01-31T13:30:00+14:00")).toEqual(true);
|
|
38
|
+
});
|
|
39
|
+
it("rejects malformed years", () => {
|
|
40
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("0000")).toEqual(false);
|
|
41
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("22025-11-11")).toEqual(false);
|
|
42
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("202202-12-23")).toEqual(false);
|
|
43
|
+
});
|
|
44
|
+
it("rejects out-of-range or unpadded month/day", () => {
|
|
45
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020-00")).toEqual(false);
|
|
46
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020-01-00")).toEqual(false);
|
|
47
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020-01-32")).toEqual(false);
|
|
48
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020-1-1")).toEqual(false);
|
|
49
|
+
});
|
|
50
|
+
it("rejects malformed time components", () => {
|
|
51
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020-01-31T13:30Z")).toEqual(false);
|
|
52
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020-01-31 13:30:00Z")).toEqual(false);
|
|
53
|
+
expect((0, primitive_types_1.isValidFhirDateTime)("2020-01-31T24:00:00Z")).toEqual(false);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=primitive-types.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-types.test.js","sourceRoot":"","sources":["../../../../src/medical/fhir/__tests__/primitive-types.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FHIR primitive type formats and validators.
|
|
3
|
+
* @see https://hl7.org/fhir/R4/datatypes.html#primitive
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Exact FHIR R4 dateTime format regex (anchored for full-string matching).
|
|
7
|
+
* Format: YYYY, YYYY-MM, YYYY-MM-DD or YYYY-MM-DDThh:mm:ss(.sss)?(±zz:zz|Z).
|
|
8
|
+
* @see https://hl7.org/fhir/R4/datatypes.html#dateTime
|
|
9
|
+
*/
|
|
10
|
+
export declare const fhirDateTimeRegex: RegExp;
|
|
11
|
+
/**
|
|
12
|
+
* Returns true when the value is a non-nullish string that is a valid FHIR R4 dateTime.
|
|
13
|
+
*
|
|
14
|
+
* Beyond matching fhirDateTimeRegex (format only), this enforces the spec's prose rule that a
|
|
15
|
+
* timezone offset SHALL be present when a time is present
|
|
16
|
+
*/
|
|
17
|
+
export declare function isValidFhirDateTime(value: string | undefined): boolean;
|
|
18
|
+
//# sourceMappingURL=primitive-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-types.d.ts","sourceRoot":"","sources":["../../../src/medical/fhir/primitive-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QACyL,CAAC;AAIxN;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAKtE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FHIR primitive type formats and validators.
|
|
4
|
+
* @see https://hl7.org/fhir/R4/datatypes.html#primitive
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.fhirDateTimeRegex = void 0;
|
|
8
|
+
exports.isValidFhirDateTime = isValidFhirDateTime;
|
|
9
|
+
/**
|
|
10
|
+
* Exact FHIR R4 dateTime format regex (anchored for full-string matching).
|
|
11
|
+
* Format: YYYY, YYYY-MM, YYYY-MM-DD or YYYY-MM-DDThh:mm:ss(.sss)?(±zz:zz|Z).
|
|
12
|
+
* @see https://hl7.org/fhir/R4/datatypes.html#dateTime
|
|
13
|
+
*/
|
|
14
|
+
exports.fhirDateTimeRegex = /^([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]{1,9})?)?)?(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00)?)?)?$/;
|
|
15
|
+
const timezoneSuffixRegex = /(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))$/;
|
|
16
|
+
/**
|
|
17
|
+
* Returns true when the value is a non-nullish string that is a valid FHIR R4 dateTime.
|
|
18
|
+
*
|
|
19
|
+
* Beyond matching fhirDateTimeRegex (format only), this enforces the spec's prose rule that a
|
|
20
|
+
* timezone offset SHALL be present when a time is present
|
|
21
|
+
*/
|
|
22
|
+
function isValidFhirDateTime(value) {
|
|
23
|
+
if (value === undefined)
|
|
24
|
+
return false;
|
|
25
|
+
if (!exports.fhirDateTimeRegex.test(value))
|
|
26
|
+
return false;
|
|
27
|
+
if (value.includes("T") && !timezoneSuffixRegex.test(value))
|
|
28
|
+
return false;
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=primitive-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitive-types.js","sourceRoot":"","sources":["../../../src/medical/fhir/primitive-types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;AAEH;;;;GAIG;AACU,QAAA,iBAAiB,GAC5B,qNAAqN,CAAC;AAExN,MAAM,mBAAmB,GAAG,+CAA+C,CAAC;AAE5E;;;;;GAKG;AACH,6BAAoC,KAAyB;IAC3D,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,CAAC,QAAA,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/medical/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export * from "./fhir/constants";
|
|
|
7
7
|
export * from "./fhir/condition-clinical-status-map";
|
|
8
8
|
export * from "./fhir/condition-clinical-status-priority";
|
|
9
9
|
export * from "./fhir/imaging-detection";
|
|
10
|
+
export * from "./fhir/primitive-types";
|
|
10
11
|
export * from "./fhir/procedure-category";
|
|
11
12
|
export * from "./fhir/procedure-category-from-cpt";
|
|
12
13
|
export * from "./webhook/webhook-request";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/medical/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/medical/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC"}
|
package/dist/medical/index.js
CHANGED
|
@@ -23,6 +23,7 @@ __exportStar(require("./fhir/constants"), exports);
|
|
|
23
23
|
__exportStar(require("./fhir/condition-clinical-status-map"), exports);
|
|
24
24
|
__exportStar(require("./fhir/condition-clinical-status-priority"), exports);
|
|
25
25
|
__exportStar(require("./fhir/imaging-detection"), exports);
|
|
26
|
+
__exportStar(require("./fhir/primitive-types"), exports);
|
|
26
27
|
__exportStar(require("./fhir/procedure-category"), exports);
|
|
27
28
|
__exportStar(require("./fhir/procedure-category-from-cpt"), exports);
|
|
28
29
|
__exportStar(require("./webhook/webhook-request"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/medical/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,oDAAkC;AAClC,sDAAoC;AACpC,mDAAiC;AACjC,gDAA8B;AAC9B,mDAAiC;AACjC,uEAAqD;AACrD,4EAA0D;AAC1D,2DAAyC;AACzC,4DAA0C;AAC1C,qEAAmD;AACnD,4DAA0C;AAC1C,oEAAkD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/medical/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,oDAAkC;AAClC,sDAAoC;AACpC,mDAAiC;AACjC,gDAA8B;AAC9B,mDAAiC;AACjC,uEAAqD;AACrD,4EAA0D;AAC1D,2DAAyC;AACzC,yDAAuC;AACvC,4DAA0C;AAC1C,qEAAmD;AACnD,4DAA0C;AAC1C,oEAAkD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** SQS max delivery delay is 15 minutes (900 seconds). Delay must not exceed this. */
|
|
2
|
+
export declare const SQS_MAX_DELAY_SECONDS = 900;
|
|
3
|
+
/**
|
|
4
|
+
* Maps a string (e.g. cxId or UUID v4) to a delivery delay in seconds for SQS,
|
|
5
|
+
* evenly distributed across 0 to 15 minutes (max). Same input always gets the same delay (deterministic).
|
|
6
|
+
*
|
|
7
|
+
* @param id - Any string identifier (e.g. cxId, UUID v4)
|
|
8
|
+
* @returns Delay in seconds in [0, 900] (≤ 15 min, SQS max)
|
|
9
|
+
*/
|
|
10
|
+
export declare function uuidToDelaySeconds(id: string, maxDelaySeconds?: number): number;
|
|
11
|
+
//# sourceMappingURL=sqs-delay-from-uuid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqs-delay-from-uuid.d.ts","sourceRoot":"","sources":["../../src/util/sqs-delay-from-uuid.ts"],"names":[],"mappings":"AAEA,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,MAAM,EACV,eAAe,GAAE,MAA8B,GAC9C,MAAM,CAKR"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQS_MAX_DELAY_SECONDS = void 0;
|
|
4
|
+
exports.uuidToDelaySeconds = uuidToDelaySeconds;
|
|
5
|
+
const node_crypto_1 = require("node:crypto");
|
|
6
|
+
/** SQS max delivery delay is 15 minutes (900 seconds). Delay must not exceed this. */
|
|
7
|
+
exports.SQS_MAX_DELAY_SECONDS = 900;
|
|
8
|
+
/**
|
|
9
|
+
* Maps a string (e.g. cxId or UUID v4) to a delivery delay in seconds for SQS,
|
|
10
|
+
* evenly distributed across 0 to 15 minutes (max). Same input always gets the same delay (deterministic).
|
|
11
|
+
*
|
|
12
|
+
* @param id - Any string identifier (e.g. cxId, UUID v4)
|
|
13
|
+
* @returns Delay in seconds in [0, 900] (≤ 15 min, SQS max)
|
|
14
|
+
*/
|
|
15
|
+
function uuidToDelaySeconds(id, maxDelaySeconds = exports.SQS_MAX_DELAY_SECONDS) {
|
|
16
|
+
const BUCKET_COUNT = maxDelaySeconds + 1; // maxDelaySeconds + 1 → 0..maxDelaySeconds
|
|
17
|
+
const hash = (0, node_crypto_1.createHash)("sha256").update(id, "utf8").digest();
|
|
18
|
+
const value = hash.readUInt32BE(0) * 0x100000000 + hash.readUInt32BE(4);
|
|
19
|
+
return value % BUCKET_COUNT; // always in [0, maxDelaySeconds]
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=sqs-delay-from-uuid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqs-delay-from-uuid.js","sourceRoot":"","sources":["../../src/util/sqs-delay-from-uuid.ts"],"names":[],"mappings":";;;;AAAA,6CAAyC;AAEzC,sFAAsF;AACzE,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAEzC;;;;;;GAMG;AACH,4BACE,EAAU,EACV,eAAe,GAAW,QAAA,qBAAqB;IAE/C,MAAM,YAAY,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC,2CAA2C;IACrF,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACxE,OAAO,KAAK,GAAG,YAAY,CAAC,CAAC,iCAAiC;AAChE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metriport/shared",
|
|
3
|
-
"version": "0.34.0",
|
|
3
|
+
"version": "0.34.1-alpha.0",
|
|
4
4
|
"description": "Common code shared across packages - by Metriport Inc.",
|
|
5
5
|
"author": "Metriport Inc. <contact@metriport.com>",
|
|
6
6
|
"homepage": "https://metriport.com/",
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
"http-status": "~1.7.0",
|
|
145
145
|
"lodash": "^4.18.0",
|
|
146
146
|
"semver": ">=5.7.2",
|
|
147
|
-
"uuid": "^
|
|
147
|
+
"uuid": "^13.0.1",
|
|
148
148
|
"validator": "^13.15.15",
|
|
149
149
|
"zod": "^3.22.1"
|
|
150
150
|
},
|
|
@@ -155,7 +155,6 @@
|
|
|
155
155
|
"@tsconfig/recommended": "^1.0.2",
|
|
156
156
|
"@types/jest": "29.5.3",
|
|
157
157
|
"@types/lodash": "4.14.194",
|
|
158
|
-
"@types/uuid": "^9.0.0",
|
|
159
158
|
"@typescript-eslint/eslint-plugin": "8.59.4",
|
|
160
159
|
"@typescript-eslint/parser": "8.59.4",
|
|
161
160
|
"eslint": "8.57.1",
|
|
@@ -164,6 +163,5 @@
|
|
|
164
163
|
"ts-essentials": "^9.3.1",
|
|
165
164
|
"ts-jest": "29.4.11",
|
|
166
165
|
"typescript": "6.0.3"
|
|
167
|
-
}
|
|
168
|
-
"gitHead": "5ff26465f430e8a22a2fbfa770f414d78b2aecf9"
|
|
166
|
+
}
|
|
169
167
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cohort-purpose-of-use-hies.test.d.ts","sourceRoot":"","sources":["../../../src/domain/__tests__/cohort-purpose-of-use-hies.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const constants_1 = require("../../external/hl7v2/constants");
|
|
4
|
-
const cohort_purpose_of_use_hies_1 = require("../cohort-purpose-of-use-hies");
|
|
5
|
-
describe("cohort-purpose-of-use-hies", () => {
|
|
6
|
-
it("defines ops ADT HIE allowlist", () => {
|
|
7
|
-
expect(cohort_purpose_of_use_hies_1.OPS_ADT_HIE_NAMES).toEqual([constants_1.HieName.Bamboo, constants_1.HieName.Riqi, constants_1.HieName.Pcc, constants_1.HieName.Konza]);
|
|
8
|
-
});
|
|
9
|
-
});
|
|
10
|
-
//# sourceMappingURL=cohort-purpose-of-use-hies.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cohort-purpose-of-use-hies.test.js","sourceRoot":"","sources":["../../../src/domain/__tests__/cohort-purpose-of-use-hies.test.ts"],"names":[],"mappings":";;AAAA,8DAAyD;AACzD,8EAAkE;AAElE,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,8CAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,mBAAO,CAAC,MAAM,EAAE,mBAAO,CAAC,IAAI,EAAE,mBAAO,CAAC,GAAG,EAAE,mBAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cohort-response-dto.test.d.ts","sourceRoot":"","sources":["../../../src/domain/__tests__/cohort-response-dto.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const cohort_1 = require("../cohort");
|
|
4
|
-
const now = new Date("2024-01-01T12:00:00Z");
|
|
5
|
-
const cohortBase = {
|
|
6
|
-
id: "cohort-id",
|
|
7
|
-
eTag: "1",
|
|
8
|
-
cxId: "cx-id",
|
|
9
|
-
name: "Test Cohort",
|
|
10
|
-
color: "red",
|
|
11
|
-
description: "Test description",
|
|
12
|
-
createdAt: now,
|
|
13
|
-
updatedAt: now,
|
|
14
|
-
};
|
|
15
|
-
describe("resolveCohortPurposeOfUseForResponse", () => {
|
|
16
|
-
it("returns explicit purposeOfUse when set", () => {
|
|
17
|
-
expect((0, cohort_1.resolveCohortPurposeOfUseForResponse)("operations")).toBe("operations");
|
|
18
|
-
});
|
|
19
|
-
it("defaults to treatment when purposeOfUse is missing", () => {
|
|
20
|
-
expect((0, cohort_1.resolveCohortPurposeOfUseForResponse)(undefined)).toBe("treatment");
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
describe("responseDtoFromCohort", () => {
|
|
24
|
-
it("includes purposeOfUse when set on domain cohort", () => {
|
|
25
|
-
const response = (0, cohort_1.responseDtoFromCohort)({
|
|
26
|
-
...cohortBase,
|
|
27
|
-
purposeOfUse: "operations",
|
|
28
|
-
settings: {
|
|
29
|
-
monitoring: cohort_1.DEFAULT_MONITORING,
|
|
30
|
-
overrides: cohort_1.DEFAULT_OVERRIDES,
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
expect(response.purposeOfUse).toBe("operations");
|
|
34
|
-
expect(response.settings.monitoring).toEqual(cohort_1.DEFAULT_MONITORING);
|
|
35
|
-
});
|
|
36
|
-
it("strips overrides from public response", () => {
|
|
37
|
-
const response = (0, cohort_1.responseDtoFromCohort)({
|
|
38
|
-
...cohortBase,
|
|
39
|
-
purposeOfUse: "treatment",
|
|
40
|
-
settings: {
|
|
41
|
-
monitoring: cohort_1.DEFAULT_MONITORING,
|
|
42
|
-
overrides: { [cohort_1.STATE_VALIDATION_OVERRIDE_KEY]: true },
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
expect(response.settings).not.toHaveProperty("overrides");
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
//# sourceMappingURL=cohort-response-dto.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cohort-response-dto.test.js","sourceRoot":"","sources":["../../../src/domain/__tests__/cohort-response-dto.test.ts"],"names":[],"mappings":";;AAAA,sCAMmB;AAEnB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAE7C,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE,WAAW;IACf,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,KAAc;IACrB,WAAW,EAAE,kBAAkB;IAC/B,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,GAAG;CACf,CAAC;AAEF,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,IAAA,6CAAoC,EAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,IAAA,6CAAoC,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,QAAQ,GAAG,IAAA,8BAAqB,EAAC;YACrC,GAAG,UAAU;YACb,YAAY,EAAE,YAAY;YAC1B,QAAQ,EAAE;gBACR,UAAU,EAAE,2BAAkB;gBAC9B,SAAS,EAAE,0BAAiB;aAC7B;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,2BAAkB,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,QAAQ,GAAG,IAAA,8BAAqB,EAAC;YACrC,GAAG,UAAU;YACb,YAAY,EAAE,WAAW;YACzB,QAAQ,EAAE;gBACR,UAAU,EAAE,2BAAkB;gBAC9B,SAAS,EAAE,EAAE,CAAC,sCAA6B,CAAC,EAAE,IAAI,EAAE;aACrD;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cohort-purpose-of-use-hies.d.ts","sourceRoot":"","sources":["../../src/domain/cohort-purpose-of-use-hies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,eAAO,MAAM,qBAAqB,EAAE,SAAS,OAAO,EAKnD,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAElE"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.operationsAllowedHies = void 0;
|
|
4
|
-
exports.isOperationsAllowedAdtHie = isOperationsAllowedAdtHie;
|
|
5
|
-
const constants_1 = require("../external/hl7v2/constants");
|
|
6
|
-
exports.operationsAllowedHies = [
|
|
7
|
-
constants_1.HieName.Bamboo,
|
|
8
|
-
constants_1.HieName.Riqi,
|
|
9
|
-
constants_1.HieName.Pcc,
|
|
10
|
-
constants_1.HieName.Konza,
|
|
11
|
-
];
|
|
12
|
-
function isOperationsAllowedAdtHie(hieName) {
|
|
13
|
-
return exports.operationsAllowedHies.includes(hieName);
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=cohort-purpose-of-use-hies.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cohort-purpose-of-use-hies.js","sourceRoot":"","sources":["../../src/domain/cohort-purpose-of-use-hies.ts"],"names":[],"mappings":";;;AASA,8DAEC;AAXD,2DAAsD;AAEzC,QAAA,qBAAqB,GAAuB;IACvD,mBAAO,CAAC,MAAM;IACd,mBAAO,CAAC,IAAI;IACZ,mBAAO,CAAC,GAAG;IACX,mBAAO,CAAC,KAAK;CACd,CAAC;AAEF,SAAgB,yBAAyB,CAAC,OAAe;IACvD,OAAO,6BAAqB,CAAC,QAAQ,CAAC,OAAkB,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=adt.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adt.d.ts","sourceRoot":"","sources":["../../../src/interface/internal/adt.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"adt.js","sourceRoot":"","sources":["../../../src/interface/internal/adt.ts"],"names":[],"mappings":""}
|