@metriport/shared 0.22.0-alpha.2 → 0.23.0-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__/date.test.js +63 -3
- package/dist/common/__tests__/date.test.js.map +1 -1
- package/dist/common/__tests__/number.test.d.ts +2 -0
- package/dist/common/__tests__/number.test.d.ts.map +1 -0
- package/dist/common/__tests__/number.test.js +33 -0
- package/dist/common/__tests__/number.test.js.map +1 -0
- package/dist/common/date.d.ts +1 -0
- package/dist/common/date.d.ts.map +1 -1
- package/dist/common/date.js +34 -5
- package/dist/common/date.js.map +1 -1
- package/dist/common/numbers.d.ts +1 -0
- package/dist/common/numbers.d.ts.map +1 -1
- package/dist/common/numbers.js +11 -1
- package/dist/common/numbers.js.map +1 -1
- package/dist/common/timer.d.ts +18 -0
- package/dist/common/timer.d.ts.map +1 -0
- package/dist/common/timer.js +26 -0
- package/dist/common/timer.js.map +1 -0
- package/dist/domain/job/job-status.d.ts +15 -0
- package/dist/domain/job/job-status.d.ts.map +1 -0
- package/dist/domain/job/job-status.js +52 -0
- package/dist/domain/job/job-status.js.map +1 -0
- package/dist/domain/job/patient-job.d.ts +22 -0
- package/dist/domain/job/patient-job.d.ts.map +1 -0
- package/dist/domain/job/patient-job.js +3 -0
- package/dist/domain/job/patient-job.js.map +1 -0
- package/dist/domain/job/types.d.ts +8 -0
- package/dist/domain/job/types.d.ts.map +1 -0
- package/dist/domain/job/types.js +10 -0
- package/dist/domain/job/types.js.map +1 -0
- package/dist/domain/patient/patient-import/__tests__/status.test.d.ts +2 -0
- package/dist/domain/patient/patient-import/__tests__/status.test.d.ts.map +1 -0
- package/dist/domain/patient/patient-import/__tests__/status.test.js +74 -0
- package/dist/domain/patient/patient-import/__tests__/status.test.js.map +1 -0
- package/dist/domain/patient/patient-import/__tests__/types.d.ts +4 -0
- package/dist/domain/patient/patient-import/__tests__/types.d.ts.map +1 -0
- package/dist/domain/patient/patient-import/__tests__/types.js +20 -0
- package/dist/domain/patient/patient-import/__tests__/types.js.map +1 -0
- package/dist/domain/patient/patient-import/__tests__/types.test.d.ts +2 -0
- package/dist/domain/patient/patient-import/__tests__/types.test.d.ts.map +1 -0
- package/dist/domain/patient/patient-import/__tests__/types.test.js +69 -0
- package/dist/domain/patient/patient-import/__tests__/types.test.js.map +1 -0
- package/dist/domain/patient/patient-import/create.d.ts +19 -0
- package/dist/domain/patient/patient-import/create.d.ts.map +1 -0
- package/dist/domain/patient/patient-import/create.js +49 -0
- package/dist/domain/patient/patient-import/create.js.map +1 -0
- package/dist/domain/patient/patient-import/mapping.d.ts +21 -0
- package/dist/domain/patient/patient-import/mapping.d.ts.map +1 -0
- package/dist/{validators/driver-license/interfaces.js → domain/patient/patient-import/mapping.js} +1 -1
- package/dist/domain/patient/patient-import/mapping.js.map +1 -0
- package/dist/domain/patient/patient-import/metadata.d.ts +9 -0
- package/dist/domain/patient/patient-import/metadata.d.ts.map +1 -0
- package/dist/domain/patient/patient-import/metadata.js +22 -0
- package/dist/domain/patient/patient-import/metadata.js.map +1 -0
- package/dist/domain/patient/patient-import/schemas.d.ts +39 -0
- package/dist/domain/patient/patient-import/schemas.d.ts.map +1 -0
- package/dist/domain/patient/patient-import/schemas.js +42 -0
- package/dist/domain/patient/patient-import/schemas.js.map +1 -0
- package/dist/domain/patient/patient-import/status.d.ts +13 -0
- package/dist/domain/patient/patient-import/status.d.ts.map +1 -0
- package/dist/domain/patient/patient-import/status.js +48 -0
- package/dist/domain/patient/patient-import/status.js.map +1 -0
- package/dist/domain/patient/patient-import/types.d.ts +41 -0
- package/dist/domain/patient/patient-import/types.d.ts.map +1 -0
- package/dist/domain/patient/patient-import/types.js +10 -0
- package/dist/domain/patient/patient-import/types.js.map +1 -0
- package/dist/index.d.ts +4 -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/external/ehr/elation/patient.d.ts +6 -6
- package/dist/interface/external/ehr/fhir-resource.d.ts +122 -0
- package/dist/interface/external/ehr/fhir-resource.d.ts.map +1 -0
- package/dist/interface/external/ehr/fhir-resource.js +34 -0
- package/dist/interface/external/ehr/fhir-resource.js.map +1 -0
- package/dist/interface/external/ehr/index.d.ts +1 -0
- package/dist/interface/external/ehr/index.d.ts.map +1 -1
- package/dist/interface/external/ehr/index.js +1 -0
- package/dist/interface/external/ehr/index.js.map +1 -1
- package/dist/interface/external/ehr/patient.d.ts +12 -12
- package/dist/interface/external/ehr/resource-diff.d.ts +7 -0
- package/dist/interface/external/ehr/resource-diff.d.ts.map +1 -0
- package/dist/interface/external/ehr/resource-diff.js +12 -0
- package/dist/interface/external/ehr/resource-diff.js.map +1 -0
- package/dist/medical/webhook/webhook-request.d.ts +72 -59
- package/dist/medical/webhook/webhook-request.d.ts.map +1 -1
- package/dist/medical/webhook/webhook-request.js +11 -2
- package/dist/medical/webhook/webhook-request.js.map +1 -1
- package/dist/net/retry.d.ts +2 -0
- package/dist/net/retry.d.ts.map +1 -1
- package/dist/net/retry.js +37 -12
- package/dist/net/retry.js.map +1 -1
- package/dist/util/uuid-v7.d.ts +162 -0
- package/dist/util/uuid-v7.d.ts.map +1 -0
- package/dist/util/uuid-v7.js +401 -0
- package/dist/util/uuid-v7.js.map +1 -0
- package/package.json +8 -8
- package/dist/domain/patient/patient-import.d.ts +0 -131
- package/dist/domain/patient/patient-import.d.ts.map +0 -1
- package/dist/domain/patient/patient-import.js +0 -32
- package/dist/domain/patient/patient-import.js.map +0 -1
- package/dist/validators/driver-license/__tests__/index.test.d.ts +0 -2
- package/dist/validators/driver-license/__tests__/index.test.d.ts.map +0 -1
- package/dist/validators/driver-license/__tests__/index.test.js +0 -87
- package/dist/validators/driver-license/__tests__/index.test.js.map +0 -1
- package/dist/validators/driver-license/ca-dl.d.ts +0 -6
- package/dist/validators/driver-license/ca-dl.d.ts.map +0 -1
- package/dist/validators/driver-license/ca-dl.js +0 -87
- package/dist/validators/driver-license/ca-dl.js.map +0 -1
- package/dist/validators/driver-license/index.d.ts +0 -18
- package/dist/validators/driver-license/index.d.ts.map +0 -1
- package/dist/validators/driver-license/index.js +0 -86
- package/dist/validators/driver-license/index.js.map +0 -1
- package/dist/validators/driver-license/interfaces.d.ts +0 -33
- package/dist/validators/driver-license/interfaces.d.ts.map +0 -1
- package/dist/validators/driver-license/interfaces.js.map +0 -1
- package/dist/validators/driver-license/us-dl.d.ts +0 -6
- package/dist/validators/driver-license/us-dl.d.ts.map +0 -1
- package/dist/validators/driver-license/us-dl.js +0 -471
- package/dist/validators/driver-license/us-dl.js.map +0 -1
|
@@ -9,8 +9,10 @@ describe("shared date functions", () => {
|
|
|
9
9
|
});
|
|
10
10
|
});
|
|
11
11
|
describe("validateIsPastOrPresentSafe", () => {
|
|
12
|
-
it("returns true for
|
|
12
|
+
it("returns true for date in 2020", () => {
|
|
13
13
|
expect((0, date_1.validateIsPastOrPresentSafe)("2020-01-01")).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
it("returns true for date in 1950", () => {
|
|
14
16
|
expect((0, date_1.validateIsPastOrPresentSafe)("1950-12-31")).toBe(true);
|
|
15
17
|
});
|
|
16
18
|
it("returns true for present date", () => {
|
|
@@ -26,14 +28,72 @@ describe("shared date functions", () => {
|
|
|
26
28
|
describe("validateDateIsAfter1900", () => {
|
|
27
29
|
it("returns true for dates after 1900", () => {
|
|
28
30
|
expect((0, date_1.validateDateIsAfter1900)("1999-12-31")).toBe(true);
|
|
31
|
+
});
|
|
32
|
+
it("returns true for dates in 1970", () => {
|
|
29
33
|
expect((0, date_1.validateDateIsAfter1900)("1970-01-31")).toBe(true);
|
|
30
34
|
});
|
|
35
|
+
it("returns true for 1900-01-01", () => {
|
|
36
|
+
expect((0, date_1.validateDateIsAfter1900)("1900-01-01")).toBe(true);
|
|
37
|
+
});
|
|
31
38
|
it("returns false for dates before 1900", () => {
|
|
32
39
|
expect((0, date_1.validateDateIsAfter1900)("1899-12-31")).toBe(false);
|
|
40
|
+
});
|
|
41
|
+
it("returns false for dates with years less than 1000", () => {
|
|
42
|
+
expect((0, date_1.validateDateIsAfter1900)("0007-01-01")).toBe(false);
|
|
43
|
+
});
|
|
44
|
+
it("returns false for dates with years less than 1000 (2)", () => {
|
|
45
|
+
expect((0, date_1.validateDateIsAfter1900)("0014-01-01")).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
it("returns false for dates with years less than 1000 (3)", () => {
|
|
48
|
+
expect((0, date_1.validateDateIsAfter1900)("0123-01-01")).toBe(false);
|
|
49
|
+
});
|
|
50
|
+
it("returns false for dates with year 970", () => {
|
|
33
51
|
expect((0, date_1.validateDateIsAfter1900)("970-01-31")).toBe(false);
|
|
34
52
|
});
|
|
35
|
-
it("
|
|
36
|
-
expect((0, date_1.validateDateIsAfter1900)("
|
|
53
|
+
it("handles MM/DD/YYYY format incorrectly returning false for valid years", () => {
|
|
54
|
+
expect((0, date_1.validateDateIsAfter1900)("12/31/2020")).toBe(false);
|
|
55
|
+
});
|
|
56
|
+
it("handles DD/MM/YYYY format incorrectly returning false for valid years", () => {
|
|
57
|
+
expect((0, date_1.validateDateIsAfter1900)("31/12/2020")).toBe(false);
|
|
58
|
+
});
|
|
59
|
+
it("handles YYYY.MM.DD format returning true for valid years", () => {
|
|
60
|
+
expect((0, date_1.validateDateIsAfter1900)("2020.12.31")).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
it("handles YYYY/MM/DD format returning true for valid years", () => {
|
|
63
|
+
expect((0, date_1.validateDateIsAfter1900)("2020/12/31")).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
it("handles textual month format incorrectly", () => {
|
|
66
|
+
expect((0, date_1.validateDateIsAfter1900)("Dec 31, 2020")).toBe(false);
|
|
67
|
+
});
|
|
68
|
+
it("handles empty string format incorrectly", () => {
|
|
69
|
+
expect((0, date_1.validateDateIsAfter1900)("")).toBe(false);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe("buildDayjsFromCompactDate", () => {
|
|
73
|
+
it("parses compact date format correctly", () => {
|
|
74
|
+
const compactDate = "20240226123000+0000";
|
|
75
|
+
const result = (0, date_1.buildDayjsFromCompactDate)(compactDate);
|
|
76
|
+
expect(result.format()).toBe("2024-02-26T12:30:00Z");
|
|
77
|
+
});
|
|
78
|
+
it("correctly handles offset", () => {
|
|
79
|
+
const compactDate = "20240226123000+0130";
|
|
80
|
+
const result = (0, date_1.buildDayjsFromCompactDate)(compactDate);
|
|
81
|
+
expect(result.format()).toBe("2024-02-26T11:00:00Z");
|
|
82
|
+
});
|
|
83
|
+
it("handles regular date format", () => {
|
|
84
|
+
const regularDate = "2024-02-26T12:30:00Z";
|
|
85
|
+
const result = (0, date_1.buildDayjsFromCompactDate)(regularDate);
|
|
86
|
+
expect(result.format()).toBe("2024-02-26T12:30:00Z");
|
|
87
|
+
});
|
|
88
|
+
it("handles short date format", () => {
|
|
89
|
+
const regularDate = "2024-02-26";
|
|
90
|
+
const result = (0, date_1.buildDayjsFromCompactDate)(regularDate);
|
|
91
|
+
expect(result.format()).toBe("2024-02-26T00:00:00Z");
|
|
92
|
+
});
|
|
93
|
+
it("falls back to regular date parsing for invalid compact date format", () => {
|
|
94
|
+
const invalidDate = "20240226123000";
|
|
95
|
+
const result = (0, date_1.buildDayjsFromCompactDate)(invalidDate);
|
|
96
|
+
expect(result.format()).toBe("2024-02-26T12:30:00Z");
|
|
37
97
|
});
|
|
38
98
|
});
|
|
39
99
|
//# sourceMappingURL=date.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.test.js","sourceRoot":"","sources":["../../../src/common/__tests__/date.test.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"date.test.js","sourceRoot":"","sources":["../../../src/common/__tests__/date.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.test.d.ts","sourceRoot":"","sources":["../../../src/common/__tests__/number.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const numbers_1 = require("../numbers");
|
|
4
|
+
describe("number", () => {
|
|
5
|
+
describe("randomIntBetween", () => {
|
|
6
|
+
const tests = [
|
|
7
|
+
{ min: -10, max: 10 },
|
|
8
|
+
{ min: -10, max: -1 },
|
|
9
|
+
{ min: -10, max: 0 },
|
|
10
|
+
{ min: 0, max: 10 },
|
|
11
|
+
{ min: 1, max: 100 },
|
|
12
|
+
];
|
|
13
|
+
describe("returns a number between", () => {
|
|
14
|
+
tests.forEach(({ min, max }) => {
|
|
15
|
+
it(`${min} and ${max}`, async () => {
|
|
16
|
+
const result = (0, numbers_1.randomIntBetween)(min, max);
|
|
17
|
+
expect(result).toBeGreaterThanOrEqual(min);
|
|
18
|
+
expect(result).toBeLessThanOrEqual(max);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
it(`throws if min is greater than max`, async () => {
|
|
23
|
+
expect(() => (0, numbers_1.randomIntBetween)(1, 0)).toThrow();
|
|
24
|
+
});
|
|
25
|
+
it(`throws if min is NaN`, async () => {
|
|
26
|
+
expect(() => (0, numbers_1.randomIntBetween)(NaN, 10)).toThrow();
|
|
27
|
+
});
|
|
28
|
+
it(`throws if max is NaN`, async () => {
|
|
29
|
+
expect(() => (0, numbers_1.randomIntBetween)(1, NaN)).toThrow();
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=number.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.test.js","sourceRoot":"","sources":["../../../src/common/__tests__/number.test.ts"],"names":[],"mappings":";;AAAA,wCAA8C;AAE9C,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,MAAM,KAAK,GAAG;YACZ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YACrB,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;YACrB,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;YACpB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;YACnB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;SACrB,CAAC;QAEF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACxC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;gBAC7B,EAAE,CAAC,GAAG,GAAG,QAAQ,GAAG,EAAE,EAAE,KAAK,IAAI,EAAE;oBACjC,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;oBAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAgB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAgB,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAgB,EAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/common/date.d.ts
CHANGED
|
@@ -12,5 +12,6 @@ export declare const optionalDateSchema: z.ZodEffects<z.ZodOptional<z.ZodNullabl
|
|
|
12
12
|
export declare const dateSchema: z.ZodEffects<z.ZodString, string, string>;
|
|
13
13
|
export declare function elapsedTimeFromNow(date?: Date, format?: dayjs.UnitTypeLong): number;
|
|
14
14
|
export declare function buildDayjs(date?: ConfigType, format?: string, strict?: boolean): dayjs.Dayjs;
|
|
15
|
+
export declare function buildDayjsFromCompactDate(date?: ConfigType, format?: string, strict?: boolean): dayjs.Dayjs;
|
|
15
16
|
export declare function sortDate(date1: ConfigType, date2: ConfigType, sortingOrder?: "asc" | "desc"): number;
|
|
16
17
|
//# sourceMappingURL=date.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/common/date.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAqB,CAAC,EAAE,MAAM,KAAK,CAAC;AAK3C,eAAO,MAAM,QAAQ,eAAe,CAAC;AAErC,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAMD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/common/date.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAqB,CAAC,EAAE,MAAM,KAAK,CAAC;AAK3C,eAAO,MAAM,QAAQ,eAAe,CAAC;AAErC,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAMD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIzD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK7D;AACD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGjE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK7D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAQrE;AAID,eAAO,MAAM,kBAAkB,+GAIiB,CAAC;AAEjD,eAAO,MAAM,UAAU,2CAA0D,CAAC;AAElF,wBAAgB,kBAAkB,CAChC,IAAI,CAAC,EAAE,IAAI,EACX,MAAM,GAAE,KAAK,CAAC,YAA4B,GACzC,MAAM,CAER;AAED,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,KAAK,CAE5F;AAkBD,wBAAgB,yBAAyB,CACvC,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,GACf,KAAK,CAAC,KAAK,CAMb;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,UAAU,EACjB,YAAY,GAAE,KAAK,GAAG,MAAc,GACnC,MAAM,CAIR"}
|
package/dist/common/date.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.sortDate = exports.buildDayjs = exports.elapsedTimeFromNow = exports.dateSchema = exports.optionalDateSchema = exports.validateDateRange = exports.validateDateIsAfter1900 = exports.validateIsPastOrPresentSafe = exports.validateIsPastOrPresent = exports.validateDateOfBirth = exports.isValidISODate = exports.ISO_DATE = void 0;
|
|
6
|
+
exports.sortDate = exports.buildDayjsFromCompactDate = exports.buildDayjs = exports.elapsedTimeFromNow = exports.dateSchema = exports.optionalDateSchema = exports.validateDateRange = exports.validateDateIsAfter1900 = exports.validateIsPastOrPresentSafe = exports.validateIsPastOrPresent = exports.validateDateOfBirth = exports.isValidISODate = exports.ISO_DATE = void 0;
|
|
7
7
|
const dayjs_1 = __importDefault(require("dayjs"));
|
|
8
8
|
const utc_1 = __importDefault(require("dayjs/plugin/utc"));
|
|
9
9
|
const zod_1 = require("zod");
|
|
@@ -19,7 +19,10 @@ function isValidISODateOptional(date) {
|
|
|
19
19
|
return date ? isValidISODate(date) : true;
|
|
20
20
|
}
|
|
21
21
|
function validateDateOfBirth(date) {
|
|
22
|
-
|
|
22
|
+
const parsedDate = buildDayjs(date);
|
|
23
|
+
if (!parsedDate.isValid())
|
|
24
|
+
return false;
|
|
25
|
+
return validateDateIsAfter1900(parsedDate.format(exports.ISO_DATE));
|
|
23
26
|
}
|
|
24
27
|
exports.validateDateOfBirth = validateDateOfBirth;
|
|
25
28
|
function validateIsPastOrPresent(date) {
|
|
@@ -36,9 +39,11 @@ function validateIsPastOrPresentSafe(date) {
|
|
|
36
39
|
}
|
|
37
40
|
exports.validateIsPastOrPresentSafe = validateIsPastOrPresentSafe;
|
|
38
41
|
function validateDateIsAfter1900(date) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
if (!isValidISODate(date))
|
|
43
|
+
return false;
|
|
44
|
+
const yearStr = date.substring(0, 4);
|
|
45
|
+
const year = Number(yearStr);
|
|
46
|
+
return year >= 1900;
|
|
42
47
|
}
|
|
43
48
|
exports.validateDateIsAfter1900 = validateDateIsAfter1900;
|
|
44
49
|
function validateDateRange(start, end) {
|
|
@@ -66,6 +71,30 @@ function buildDayjs(date, format, strict) {
|
|
|
66
71
|
return dayjs_1.default.utc(date, format, strict);
|
|
67
72
|
}
|
|
68
73
|
exports.buildDayjs = buildDayjs;
|
|
74
|
+
/**
|
|
75
|
+
* Tries to parse a compact date string in the format YYYYMMDDhhmmss±hhmm
|
|
76
|
+
* (year, month, day, hour, minute, second, timezone)
|
|
77
|
+
* and converts it to ISO 8601 format.
|
|
78
|
+
*
|
|
79
|
+
* @param input The compact date string to parse
|
|
80
|
+
* @returns ISO 8601 formatted date string or undefined if input doesn't match expected format
|
|
81
|
+
*/
|
|
82
|
+
function tryParseCompactDate(input) {
|
|
83
|
+
const match = input.match(/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})([+-])(\d{2})(\d{2})$/);
|
|
84
|
+
if (!match)
|
|
85
|
+
return undefined;
|
|
86
|
+
const [, year, month, day, hour, minute, second, sign, tzHour, tzMinute] = match;
|
|
87
|
+
return `${year}-${month}-${day}T${hour}:${minute}:${second}${sign}${tzHour}:${tzMinute}`;
|
|
88
|
+
}
|
|
89
|
+
function buildDayjsFromCompactDate(date, format, strict) {
|
|
90
|
+
if (typeof date === "string") {
|
|
91
|
+
const parsed = tryParseCompactDate(date);
|
|
92
|
+
if (parsed)
|
|
93
|
+
return buildDayjs(parsed, format, strict);
|
|
94
|
+
}
|
|
95
|
+
return buildDayjs(date, format, strict);
|
|
96
|
+
}
|
|
97
|
+
exports.buildDayjsFromCompactDate = buildDayjsFromCompactDate;
|
|
69
98
|
function sortDate(date1, date2, sortingOrder = "asc") {
|
|
70
99
|
return sortingOrder === "desc"
|
|
71
100
|
? buildDayjs(date1).diff(buildDayjs(date2))
|
package/dist/common/date.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/common/date.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0C;AAC1C,2DAAmC;AACnC,6BAA2C;AAC3C,sDAAuD;AAEvD,eAAK,CAAC,MAAM,CAAC,aAAG,CAAC,CAAC;AAEL,QAAA,QAAQ,GAAG,YAAY,CAAC;AAErC,sDAAsD;AACtD,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,UAAU,CAAC,IAAI,EAAE,gBAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACpD,CAAC;AAFD,wCAEC;AAED,SAAS,sBAAsB,CAAC,IAA+B;IAC7D,OAAO,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/common/date.ts"],"names":[],"mappings":"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"}
|
package/dist/common/numbers.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ export declare function getFloatValue(value: string | number): number;
|
|
|
4
4
|
*/
|
|
5
5
|
export declare function formatNumber(num: number): number;
|
|
6
6
|
export declare function randomInt(maxDigits?: number): number;
|
|
7
|
+
export declare function randomIntBetween(min: number, max: number): number;
|
|
7
8
|
//# sourceMappingURL=numbers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../src/common/numbers.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,SAAS,CAAC,SAAS,SAAI,GAAG,MAAM,CAE/C"}
|
|
1
|
+
{"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../src/common/numbers.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,SAAS,CAAC,SAAS,SAAI,GAAG,MAAM,CAE/C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAQjE"}
|
package/dist/common/numbers.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.randomInt = exports.formatNumber = exports.getFloatValue = void 0;
|
|
3
|
+
exports.randomIntBetween = exports.randomInt = exports.formatNumber = exports.getFloatValue = void 0;
|
|
4
4
|
function getFloatValue(value) {
|
|
5
5
|
return typeof value === "string" ? parseFloat(value) : value;
|
|
6
6
|
}
|
|
@@ -16,4 +16,14 @@ function randomInt(maxDigits = 2) {
|
|
|
16
16
|
return Math.floor(Math.random() * Math.pow(10, maxDigits));
|
|
17
17
|
}
|
|
18
18
|
exports.randomInt = randomInt;
|
|
19
|
+
function randomIntBetween(min, max) {
|
|
20
|
+
if (min > max) {
|
|
21
|
+
throw new Error("min must be less than max");
|
|
22
|
+
}
|
|
23
|
+
if (isNaN(min) || isNaN(max)) {
|
|
24
|
+
throw new Error("min and max must be numbers");
|
|
25
|
+
}
|
|
26
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
27
|
+
}
|
|
28
|
+
exports.randomIntBetween = randomIntBetween;
|
|
19
29
|
//# sourceMappingURL=numbers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../src/common/numbers.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAAC,KAAsB;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,CAAC;AAFD,sCAEC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACrC,CAAC;AAFD,oCAEC;AAED,SAAgB,SAAS,CAAC,SAAS,GAAG,CAAC;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7D,CAAC;AAFD,8BAEC"}
|
|
1
|
+
{"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../src/common/numbers.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAAC,KAAsB;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,CAAC;AAFD,sCAEC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACrC,CAAC;AAFD,oCAEC;AAED,SAAgB,SAAS,CAAC,SAAS,GAAG,CAAC;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7D,CAAC;AAFD,8BAEC;AAED,SAAgB,gBAAgB,CAAC,GAAW,EAAE,GAAW;IACvD,IAAI,GAAG,GAAG,GAAG,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;KAC9C;IACD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAChD;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3D,CAAC;AARD,4CAQC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a timer object that tracks elapsed time from initialization.
|
|
3
|
+
* @returns An object with methods to:
|
|
4
|
+
* - Get the start time (`getStartedAt`)
|
|
5
|
+
* - Get the elapsed time since initialization (`getElapsedTime`)
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const timer = initTimer();
|
|
10
|
+
* // ... do some work ...
|
|
11
|
+
* console.log(`Operation took ${timer.getElapsedTime()}ms`);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare function initTimer(): {
|
|
15
|
+
getStartedAt: () => Date;
|
|
16
|
+
getElapsedTime: () => number;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=timer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../../src/common/timer.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS;;;EAMxB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initTimer = void 0;
|
|
4
|
+
const date_1 = require("./date");
|
|
5
|
+
/**
|
|
6
|
+
* Creates a timer object that tracks elapsed time from initialization.
|
|
7
|
+
* @returns An object with methods to:
|
|
8
|
+
* - Get the start time (`getStartedAt`)
|
|
9
|
+
* - Get the elapsed time since initialization (`getElapsedTime`)
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const timer = initTimer();
|
|
14
|
+
* // ... do some work ...
|
|
15
|
+
* console.log(`Operation took ${timer.getElapsedTime()}ms`);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function initTimer() {
|
|
19
|
+
const startedAt = new Date();
|
|
20
|
+
return {
|
|
21
|
+
getStartedAt: () => startedAt,
|
|
22
|
+
getElapsedTime: () => (0, date_1.elapsedTimeFromNow)(startedAt),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
exports.initTimer = initTimer;
|
|
26
|
+
//# sourceMappingURL=timer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timer.js","sourceRoot":"","sources":["../../src/common/timer.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAE5C;;;;;;;;;;;;GAYG;AACH,SAAgB,SAAS;IACvB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,OAAO;QACL,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;QAC7B,cAAc,EAAE,GAAG,EAAE,CAAC,IAAA,yBAAkB,EAAC,SAAS,CAAC;KACpD,CAAC;AACJ,CAAC;AAND,8BAMC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const jobStatus: readonly ["waiting", "processing", "completed", "failed"];
|
|
2
|
+
export type JobStatus = (typeof jobStatus)[number];
|
|
3
|
+
export declare function isValidJobStatus(status: string): status is JobStatus;
|
|
4
|
+
export declare const jobInitialStatus: JobStatus;
|
|
5
|
+
export declare function isJobDone(status: JobStatus): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Validates that a new status is valid based on the current status.
|
|
8
|
+
*
|
|
9
|
+
* @param currentStatus - The current status of the job.
|
|
10
|
+
* @param newStatus - The new status to validate.
|
|
11
|
+
* @returns The validated new status.
|
|
12
|
+
* @throws BadRequestError if the new status is not valid.
|
|
13
|
+
*/
|
|
14
|
+
export declare function validateNewJobStatus(currentStatus: JobStatus, newStatus: JobStatus): JobStatus;
|
|
15
|
+
//# sourceMappingURL=job-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-status.d.ts","sourceRoot":"","sources":["../../../src/domain/job/job-status.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,2DAA4D,CAAC;AACnF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,SAAS,CAIpE;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAqB,CAAC;AAErD,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAEpD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CA2C9F"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateNewJobStatus = exports.isJobDone = exports.jobInitialStatus = exports.isValidJobStatus = exports.jobStatus = void 0;
|
|
4
|
+
const bad_request_1 = require("../../error/bad-request");
|
|
5
|
+
exports.jobStatus = ["waiting", "processing", "completed", "failed"];
|
|
6
|
+
function isValidJobStatus(status) {
|
|
7
|
+
return (status === "waiting" || status === "processing" || status === "completed" || status === "failed");
|
|
8
|
+
}
|
|
9
|
+
exports.isValidJobStatus = isValidJobStatus;
|
|
10
|
+
exports.jobInitialStatus = "waiting";
|
|
11
|
+
function isJobDone(status) {
|
|
12
|
+
return status === "completed" || status === "failed";
|
|
13
|
+
}
|
|
14
|
+
exports.isJobDone = isJobDone;
|
|
15
|
+
/**
|
|
16
|
+
* Validates that a new status is valid based on the current status.
|
|
17
|
+
*
|
|
18
|
+
* @param currentStatus - The current status of the job.
|
|
19
|
+
* @param newStatus - The new status to validate.
|
|
20
|
+
* @returns The validated new status.
|
|
21
|
+
* @throws BadRequestError if the new status is not valid.
|
|
22
|
+
*/
|
|
23
|
+
function validateNewJobStatus(currentStatus, newStatus) {
|
|
24
|
+
const additionalInfo = {
|
|
25
|
+
currentStatus,
|
|
26
|
+
newStatus,
|
|
27
|
+
};
|
|
28
|
+
switch (newStatus) {
|
|
29
|
+
case "waiting":
|
|
30
|
+
throw new bad_request_1.BadRequestError(`Waiting is not a valid status to update to`, undefined, additionalInfo);
|
|
31
|
+
case "processing":
|
|
32
|
+
if (currentStatus !== "waiting" && currentStatus !== "processing") {
|
|
33
|
+
throw new bad_request_1.BadRequestError(`Job is not in a valid state to update to processing`, undefined, additionalInfo);
|
|
34
|
+
}
|
|
35
|
+
break;
|
|
36
|
+
case "completed":
|
|
37
|
+
if (currentStatus !== "processing") {
|
|
38
|
+
throw new bad_request_1.BadRequestError(`Job is not processing, cannot update to completed`, undefined, additionalInfo);
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
case "failed":
|
|
42
|
+
if (currentStatus === "completed") {
|
|
43
|
+
throw new bad_request_1.BadRequestError(`Job is completed, cannot update to failed`, undefined, additionalInfo);
|
|
44
|
+
}
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
throw new bad_request_1.BadRequestError(`Invalid job status`, undefined, additionalInfo);
|
|
48
|
+
}
|
|
49
|
+
return newStatus;
|
|
50
|
+
}
|
|
51
|
+
exports.validateNewJobStatus = validateNewJobStatus;
|
|
52
|
+
//# sourceMappingURL=job-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-status.js","sourceRoot":"","sources":["../../../src/domain/job/job-status.ts"],"names":[],"mappings":";;;AAAA,yDAA0D;AAE7C,QAAA,SAAS,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAGnF,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,OAAO,CACL,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,QAAQ,CACjG,CAAC;AACJ,CAAC;AAJD,4CAIC;AAEY,QAAA,gBAAgB,GAAc,SAAS,CAAC;AAErD,SAAgB,SAAS,CAAC,MAAiB;IACzC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,QAAQ,CAAC;AACvD,CAAC;AAFD,8BAEC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAAC,aAAwB,EAAE,SAAoB;IACjF,MAAM,cAAc,GAAG;QACrB,aAAa;QACb,SAAS;KACV,CAAC;IACF,QAAQ,SAAS,EAAE;QACjB,KAAK,SAAS;YACZ,MAAM,IAAI,6BAAe,CACvB,4CAA4C,EAC5C,SAAS,EACT,cAAc,CACf,CAAC;QACJ,KAAK,YAAY;YACf,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,YAAY,EAAE;gBACjE,MAAM,IAAI,6BAAe,CACvB,qDAAqD,EACrD,SAAS,EACT,cAAc,CACf,CAAC;aACH;YACD,MAAM;QACR,KAAK,WAAW;YACd,IAAI,aAAa,KAAK,YAAY,EAAE;gBAClC,MAAM,IAAI,6BAAe,CACvB,mDAAmD,EACnD,SAAS,EACT,cAAc,CACf,CAAC;aACH;YACD,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,aAAa,KAAK,WAAW,EAAE;gBACjC,MAAM,IAAI,6BAAe,CACvB,2CAA2C,EAC3C,SAAS,EACT,cAAc,CACf,CAAC;aACH;YACD,MAAM;QACR;YACE,MAAM,IAAI,6BAAe,CAAC,oBAAoB,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;KAC9E;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AA3CD,oDA2CC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { JobStatus } from "./job-status";
|
|
2
|
+
import { JobParamsCx, JobParamsOps } from "./types";
|
|
3
|
+
export type PatientJob = {
|
|
4
|
+
id: string;
|
|
5
|
+
cxId: string;
|
|
6
|
+
patientId: string;
|
|
7
|
+
jobType: string;
|
|
8
|
+
jobGroupId: string;
|
|
9
|
+
requestId?: string;
|
|
10
|
+
status: JobStatus;
|
|
11
|
+
statusReason: string | undefined;
|
|
12
|
+
startedAt: Date | undefined;
|
|
13
|
+
finishedAt: Date | undefined;
|
|
14
|
+
total: number;
|
|
15
|
+
successful: number;
|
|
16
|
+
failed: number;
|
|
17
|
+
paramsCx: JobParamsCx | undefined;
|
|
18
|
+
paramsOps: JobParamsOps | undefined;
|
|
19
|
+
data: unknown;
|
|
20
|
+
createdAt: Date;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=patient-job.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patient-job.d.ts","sourceRoot":"","sources":["../../../src/domain/job/patient-job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,IAAI,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAC;IAClC,SAAS,EAAE,YAAY,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patient-job.js","sourceRoot":"","sources":["../../../src/domain/job/patient-job.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type JobParamsCx = Record<string, string | boolean>;
|
|
2
|
+
export type JobParamsOps = Record<string, string | boolean>;
|
|
3
|
+
declare const failed: "failed";
|
|
4
|
+
declare const successful: "successful";
|
|
5
|
+
export type JobEntryStatus = typeof failed | typeof successful;
|
|
6
|
+
export declare function isValidJobEntryStatus(status: string): status is JobEntryStatus;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/domain/job/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;AAC3D,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;AAE5D,QAAA,MAAM,MAAM,UAAoB,CAAC;AACjC,QAAA,MAAM,UAAU,cAAwB,CAAC;AACzC,MAAM,MAAM,cAAc,GAAG,OAAO,MAAM,GAAG,OAAO,UAAU,CAAC;AAE/D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc,CAE9E"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidJobEntryStatus = void 0;
|
|
4
|
+
const failed = "failed";
|
|
5
|
+
const successful = "successful";
|
|
6
|
+
function isValidJobEntryStatus(status) {
|
|
7
|
+
return status === "failed" || status === "successful";
|
|
8
|
+
}
|
|
9
|
+
exports.isValidJobEntryStatus = isValidJobEntryStatus;
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/domain/job/types.ts"],"names":[],"mappings":";;;AAGA,MAAM,MAAM,GAAG,QAAiB,CAAC;AACjC,MAAM,UAAU,GAAG,YAAqB,CAAC;AAGzC,SAAgB,qBAAqB,CAAC,MAAc;IAClD,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,YAAY,CAAC;AACxD,CAAC;AAFD,sDAEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.test.d.ts","sourceRoot":"","sources":["../../../../../src/domain/patient/patient-import/__tests__/status.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const bad_request_1 = require("../../../../error/bad-request");
|
|
4
|
+
const status_1 = require("../status");
|
|
5
|
+
describe("validateNewStatus", () => {
|
|
6
|
+
describe("new status is waiting", () => {
|
|
7
|
+
describe("throws", () => {
|
|
8
|
+
for (const currentStatus of ["waiting", "processing", "completed", "failed"]) {
|
|
9
|
+
it(`throws when updating from ${currentStatus}`, () => {
|
|
10
|
+
expect(() => (0, status_1.validateNewStatus)(currentStatus, "waiting")).toThrow(bad_request_1.BadRequestError);
|
|
11
|
+
expect(() => (0, status_1.validateNewStatus)(currentStatus, "waiting")).toThrow("Waiting is not a valid status to update");
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
describe("new status is processing", () => {
|
|
17
|
+
const destinationStatus = "processing";
|
|
18
|
+
it("allows updating from waiting", () => {
|
|
19
|
+
expect((0, status_1.validateNewStatus)("waiting", destinationStatus)).toBe(destinationStatus);
|
|
20
|
+
});
|
|
21
|
+
it("allows updating from processing", () => {
|
|
22
|
+
expect((0, status_1.validateNewStatus)("processing", destinationStatus)).toBe(destinationStatus);
|
|
23
|
+
});
|
|
24
|
+
describe("throws", () => {
|
|
25
|
+
for (const currentStatus of ["completed", "failed"]) {
|
|
26
|
+
it(`throws when updating from ${currentStatus}`, () => {
|
|
27
|
+
expect(() => (0, status_1.validateNewStatus)(currentStatus, destinationStatus)).toThrow(bad_request_1.BadRequestError);
|
|
28
|
+
expect(() => (0, status_1.validateNewStatus)(currentStatus, destinationStatus)).toThrow("Import job is not in a valid state to update to processing");
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("new status is completed", () => {
|
|
34
|
+
const destinationStatus = "completed";
|
|
35
|
+
it("allows updating from processing", () => {
|
|
36
|
+
expect((0, status_1.validateNewStatus)("processing", destinationStatus)).toBe(destinationStatus);
|
|
37
|
+
});
|
|
38
|
+
describe("throws", () => {
|
|
39
|
+
for (const currentStatus of ["waiting", "completed", "failed"]) {
|
|
40
|
+
it(`throws when updating from ${currentStatus}`, () => {
|
|
41
|
+
expect(() => (0, status_1.validateNewStatus)(currentStatus, destinationStatus)).toThrow(bad_request_1.BadRequestError);
|
|
42
|
+
expect(() => (0, status_1.validateNewStatus)(currentStatus, destinationStatus)).toThrow("Import job is not processing, cannot update to completed");
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe("new status is failed", () => {
|
|
48
|
+
const destinationStatus = "failed";
|
|
49
|
+
it("allows updating from waiting", () => {
|
|
50
|
+
expect((0, status_1.validateNewStatus)("waiting", destinationStatus)).toBe(destinationStatus);
|
|
51
|
+
});
|
|
52
|
+
it("allows updating from processing", () => {
|
|
53
|
+
expect((0, status_1.validateNewStatus)("processing", destinationStatus)).toBe(destinationStatus);
|
|
54
|
+
});
|
|
55
|
+
it("allows updating from failed", () => {
|
|
56
|
+
expect((0, status_1.validateNewStatus)("failed", destinationStatus)).toBe(destinationStatus);
|
|
57
|
+
});
|
|
58
|
+
describe("throws", () => {
|
|
59
|
+
for (const currentStatus of ["completed"]) {
|
|
60
|
+
it(`throws when updating from ${currentStatus}`, () => {
|
|
61
|
+
expect(() => (0, status_1.validateNewStatus)(currentStatus, destinationStatus)).toThrow(bad_request_1.BadRequestError);
|
|
62
|
+
expect(() => (0, status_1.validateNewStatus)(currentStatus, destinationStatus)).toThrow("Import job is completed, cannot update to failed");
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe("new status is invalid", () => {
|
|
68
|
+
it("throws error", () => {
|
|
69
|
+
expect(() => (0, status_1.validateNewStatus)("processing", "invalid")).toThrow(bad_request_1.BadRequestError);
|
|
70
|
+
expect(() => (0, status_1.validateNewStatus)("processing", "invalid")).toThrow("Invalid import job status");
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=status.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.test.js","sourceRoot":"","sources":["../../../../../src/domain/patient/patient-import/__tests__/status.test.ts"],"names":[],"mappings":";;AAAA,+DAAgE;AAChE,sCAAsE;AAEtE,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,KAAK,MAAM,aAAa,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAU,EAAE;gBACrF,EAAE,CAAC,6BAA6B,aAAa,EAAE,EAAE,GAAG,EAAE;oBACpD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAiB,EAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,6BAAe,CAAC,CAAC;oBACnF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAiB,EAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAC/D,yCAAyC,CAC1C,CAAC;gBACJ,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,MAAM,iBAAiB,GAAG,YAAY,CAAC;QAEvC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,IAAA,0BAAiB,EAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,IAAA,0BAAiB,EAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,KAAK,MAAM,aAAa,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAU,EAAE;gBAC5D,EAAE,CAAC,6BAA6B,aAAa,EAAE,EAAE,GAAG,EAAE;oBACpD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAiB,EAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CACvE,6BAAe,CAChB,CAAC;oBACF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAiB,EAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CACvE,4DAA4D,CAC7D,CAAC;gBACJ,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,MAAM,iBAAiB,GAAG,WAAW,CAAC;QAEtC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,IAAA,0BAAiB,EAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,KAAK,MAAM,aAAa,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAU,EAAE;gBACvE,EAAE,CAAC,6BAA6B,aAAa,EAAE,EAAE,GAAG,EAAE;oBACpD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAiB,EAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CACvE,6BAAe,CAChB,CAAC;oBACF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAiB,EAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CACvE,0DAA0D,CAC3D,CAAC;gBACJ,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;QAEnC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,IAAA,0BAAiB,EAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,IAAA,0BAAiB,EAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,IAAA,0BAAiB,EAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,KAAK,MAAM,aAAa,IAAI,CAAC,WAAW,CAAU,EAAE;gBAClD,EAAE,CAAC,6BAA6B,aAAa,EAAE,EAAE,GAAG,EAAE;oBACpD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAiB,EAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CACvE,6BAAe,CAChB,CAAC;oBACF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAiB,EAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CACvE,kDAAkD,CACnD,CAAC;gBACJ,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAiB,EAAC,YAAY,EAAE,SAAmC,CAAC,CAAC,CAAC,OAAO,CACxF,6BAAe,CAChB,CAAC;YACF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAiB,EAAC,YAAY,EAAE,SAAmC,CAAC,CAAC,CAAC,OAAO,CACxF,2BAA2B,CAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PatientImportParamsCx, PatientImportParamsOps } from "../types";
|
|
2
|
+
export declare function makeParamsCx(params?: Partial<PatientImportParamsCx>): PatientImportParamsCx;
|
|
3
|
+
export declare function makeParamsOps(params?: Partial<PatientImportParamsOps>): PatientImportParamsOps;
|
|
4
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/domain/patient/patient-import/__tests__/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEzE,wBAAgB,YAAY,CAAC,MAAM,GAAE,OAAO,CAAC,qBAAqB,CAAM,GAAG,qBAAqB,CAK/F;AACD,wBAAgB,aAAa,CAC3B,MAAM,GAAE,OAAO,CAAC,sBAAsB,CAAM,GAC3C,sBAAsB,CAOxB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeParamsOps = exports.makeParamsCx = void 0;
|
|
4
|
+
function makeParamsCx(params = {}) {
|
|
5
|
+
return {
|
|
6
|
+
dryRun: false,
|
|
7
|
+
...params,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
exports.makeParamsCx = makeParamsCx;
|
|
11
|
+
function makeParamsOps(params = {}) {
|
|
12
|
+
return {
|
|
13
|
+
rerunPdOnNewDemographics: false,
|
|
14
|
+
triggerConsolidated: false,
|
|
15
|
+
disableWebhooks: false,
|
|
16
|
+
...params,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
exports.makeParamsOps = makeParamsOps;
|
|
20
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/domain/patient/patient-import/__tests__/types.ts"],"names":[],"mappings":";;;AAEA,SAAgB,YAAY,CAAC,SAAyC,EAAE;IACtE,OAAO;QACL,MAAM,EAAE,KAAK;QACb,GAAG,MAAM;KACV,CAAC;AACJ,CAAC;AALD,oCAKC;AACD,SAAgB,aAAa,CAC3B,SAA0C,EAAE;IAE5C,OAAO;QACL,wBAAwB,EAAE,KAAK;QAC/B,mBAAmB,EAAE,KAAK;QAC1B,eAAe,EAAE,KAAK;QACtB,GAAG,MAAM;KACV,CAAC;AACJ,CAAC;AATD,sCASC"}
|