@metriport/fhir-sdk 1.6.0 → 1.6.2
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/__tests__/careplan.test.js +22 -24
- package/dist/__tests__/careplan.test.js.map +1 -1
- package/dist/__tests__/clinical-dates.test.js +23 -25
- package/dist/__tests__/clinical-dates.test.js.map +1 -1
- package/dist/__tests__/coding-utilities.test.js +7 -9
- package/dist/__tests__/coding-utilities.test.js.map +1 -1
- package/dist/__tests__/date-range-performance.test.js +2 -4
- package/dist/__tests__/date-range-performance.test.js.map +1 -1
- package/dist/__tests__/date-range-search.test.js +13 -15
- package/dist/__tests__/date-range-search.test.js.map +1 -1
- package/dist/__tests__/env-setup.js +4 -32
- package/dist/__tests__/env-setup.js.map +1 -1
- package/dist/__tests__/fhir-bundle-sdk-basic.test.js +4 -6
- package/dist/__tests__/fhir-bundle-sdk-basic.test.js.map +1 -1
- package/dist/__tests__/fhir-bundle-sdk.test.js +85 -87
- package/dist/__tests__/fhir-bundle-sdk.test.js.map +1 -1
- package/dist/__tests__/fixtures/fhir-bundles.d.ts +1 -1
- package/dist/__tests__/fixtures/fhir-bundles.d.ts.map +1 -1
- package/dist/__tests__/fixtures/fhir-bundles.js +11 -17
- package/dist/__tests__/fixtures/fhir-bundles.js.map +1 -1
- package/dist/__tests__/phase1-verification.test.js +10 -12
- package/dist/__tests__/phase1-verification.test.js.map +1 -1
- package/dist/__tests__/phase2-verification.test.js +14 -16
- package/dist/__tests__/phase2-verification.test.js.map +1 -1
- package/dist/__tests__/phase3-verification.test.js +15 -17
- package/dist/__tests__/phase3-verification.test.js.map +1 -1
- package/dist/__tests__/phase4-verification.test.js +27 -29
- package/dist/__tests__/phase4-verification.test.js.map +1 -1
- package/dist/__tests__/phase5-verification.test.js +38 -40
- package/dist/__tests__/phase5-verification.test.js.map +1 -1
- package/dist/__tests__/reverse-references.test.js +29 -31
- package/dist/__tests__/reverse-references.test.js.map +1 -1
- package/dist/__tests__/type-guards.test.js +16 -18
- package/dist/__tests__/type-guards.test.js.map +1 -1
- package/dist/clinical-dates.js +1 -5
- package/dist/clinical-dates.js.map +1 -1
- package/dist/fhir-bundle-sdk.js +34 -38
- package/dist/fhir-bundle-sdk.js.map +1 -1
- package/dist/index.js +4 -22
- package/dist/index.js.map +1 -1
- package/dist/internal/bundle-operations.js +3 -9
- package/dist/internal/bundle-operations.js.map +1 -1
- package/dist/internal/coding-systems.d.ts +12 -12
- package/dist/internal/coding-systems.js +15 -18
- package/dist/internal/coding-systems.js.map +1 -1
- package/dist/internal/coding-utilities.js +15 -23
- package/dist/internal/coding-utilities.js.map +1 -1
- package/dist/internal/date-extraction.js +2 -7
- package/dist/internal/date-extraction.js.map +1 -1
- package/dist/internal/graph-traversal.js +3 -7
- package/dist/internal/graph-traversal.js.map +1 -1
- package/dist/internal/indexing.js +9 -15
- package/dist/internal/indexing.js.map +1 -1
- package/dist/internal/llm-context.js +8 -17
- package/dist/internal/llm-context.js.map +1 -1
- package/dist/internal/reference-resolution.js +25 -32
- package/dist/internal/reference-resolution.js.map +1 -1
- package/dist/internal/reference-utils.js +4 -11
- package/dist/internal/reference-utils.js.map +1 -1
- package/dist/internal/transparent-proxy.js +10 -14
- package/dist/internal/transparent-proxy.js.map +1 -1
- package/dist/internal/validation.js +4 -8
- package/dist/internal/validation.js.map +1 -1
- package/dist/type-guards.js +26 -55
- package/dist/type-guards.js.map +1 -1
- package/dist/types/coding-fields.js +1 -2
- package/dist/types/sdk-types.js +1 -5
- package/dist/types/sdk-types.js.map +1 -1
- package/dist/types/smart-resources.js +5 -10
- package/dist/types/smart-resources.js.map +1 -1
- package/dist/utils/interval-tree/index.js +10 -19
- package/dist/utils/interval-tree/index.js.map +1 -1
- package/dist/utils/interval-tree/shallowequal/arrays.js +1 -4
- package/dist/utils/interval-tree/shallowequal/arrays.js.map +1 -1
- package/dist/utils/interval-tree/shallowequal/index.js +5 -13
- package/dist/utils/interval-tree/shallowequal/index.js.map +1 -1
- package/dist/utils/interval-tree/shallowequal/objects.js +1 -4
- package/dist/utils/interval-tree/shallowequal/objects.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
1
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { inspect } from "util";
|
|
3
|
+
import { FhirBundleSdk } from "../index";
|
|
4
|
+
import { validCompleteBundle, bundleWithBrokenReferences, CONSTANT_TIME_EXPECTED_THRESHOLD_MS, } from "./fixtures/fhir-bundles";
|
|
7
5
|
describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
8
6
|
describe("FR-5.1: Resources returned by SDK have additional getter methods for each Reference field", () => {
|
|
9
7
|
it("should add reference methods to Observation resources", async () => {
|
|
10
|
-
const sdk = await
|
|
8
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
11
9
|
const observations = sdk.getObservations();
|
|
12
10
|
expect(observations.length).toBeGreaterThan(0);
|
|
13
11
|
const observation = observations[0];
|
|
@@ -16,7 +14,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
16
14
|
expect(typeof observation.getPerformers).toBe("function");
|
|
17
15
|
});
|
|
18
16
|
it("should add reference methods to Encounter resources", async () => {
|
|
19
|
-
const sdk = await
|
|
17
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
20
18
|
const encounters = sdk.getEncounters();
|
|
21
19
|
expect(encounters.length).toBeGreaterThan(0);
|
|
22
20
|
const encounter = encounters[0];
|
|
@@ -26,7 +24,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
26
24
|
});
|
|
27
25
|
describe("FR-5.2: For Observation.subject reference, SDK adds getSubject() method", () => {
|
|
28
26
|
it("should resolve subject reference to Patient", async () => {
|
|
29
|
-
const sdk = await
|
|
27
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
30
28
|
const observations = sdk.getObservations();
|
|
31
29
|
expect(observations.length).toBeGreaterThan(0);
|
|
32
30
|
const observation = observations[0];
|
|
@@ -38,7 +36,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
38
36
|
});
|
|
39
37
|
describe("FR-5.3: For Observation.encounter reference, SDK adds getEncounter() method", () => {
|
|
40
38
|
it("should resolve encounter reference to Encounter", async () => {
|
|
41
|
-
const sdk = await
|
|
39
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
42
40
|
const observations = sdk.getObservations();
|
|
43
41
|
expect(observations.length).toBeGreaterThan(0);
|
|
44
42
|
const observation = observations[0];
|
|
@@ -50,7 +48,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
50
48
|
});
|
|
51
49
|
describe("FR-5.4: For Observation.performer reference array, SDK adds getPerformers() method", () => {
|
|
52
50
|
it("should resolve performer references to array of resources", async () => {
|
|
53
|
-
const sdk = await
|
|
51
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
54
52
|
const observations = sdk.getObservations();
|
|
55
53
|
expect(observations.length).toBeGreaterThan(0);
|
|
56
54
|
const observation = observations[0];
|
|
@@ -63,7 +61,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
63
61
|
});
|
|
64
62
|
describe("FR-5.5: Reference resolution methods handle both resource.id and fullUrl matching", () => {
|
|
65
63
|
it("should resolve references by resource.id", async () => {
|
|
66
|
-
const sdk = await
|
|
64
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
67
65
|
const observations = sdk.getObservations();
|
|
68
66
|
expect(observations.length).toBeGreaterThan(0);
|
|
69
67
|
const observation = observations[0];
|
|
@@ -73,7 +71,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
73
71
|
});
|
|
74
72
|
describe("FR-5.6: Reference resolution methods return undefined for unresolvable references", () => {
|
|
75
73
|
it("should return undefined for broken references", async () => {
|
|
76
|
-
const sdk = await
|
|
74
|
+
const sdk = await FhirBundleSdk.create(bundleWithBrokenReferences);
|
|
77
75
|
const observations = sdk.getObservations();
|
|
78
76
|
if (observations.length > 0) {
|
|
79
77
|
const observation = observations[0];
|
|
@@ -82,7 +80,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
82
80
|
}
|
|
83
81
|
});
|
|
84
82
|
it("should return empty array for missing array references", async () => {
|
|
85
|
-
const sdk = await
|
|
83
|
+
const sdk = await FhirBundleSdk.create(bundleWithBrokenReferences);
|
|
86
84
|
const observations = sdk.getObservations();
|
|
87
85
|
if (observations.length > 0) {
|
|
88
86
|
const observation = observations[0];
|
|
@@ -94,19 +92,19 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
94
92
|
});
|
|
95
93
|
describe("FR-5.7: Reference resolution operates in O(1) time complexity per reference", () => {
|
|
96
94
|
it("should resolve references in O(1) time", async () => {
|
|
97
|
-
const sdk = await
|
|
95
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
98
96
|
const observations = sdk.getObservations();
|
|
99
97
|
expect(observations.length).toBeGreaterThan(0);
|
|
100
98
|
const observation = observations[0];
|
|
101
99
|
const start = performance.now();
|
|
102
100
|
observation.getSubject();
|
|
103
101
|
const end = performance.now();
|
|
104
|
-
expect(end - start).toBeLessThan(
|
|
102
|
+
expect(end - start).toBeLessThan(CONSTANT_TIME_EXPECTED_THRESHOLD_MS);
|
|
105
103
|
});
|
|
106
104
|
});
|
|
107
105
|
describe("FR-5.8: Original reference fields remain unchanged", () => {
|
|
108
106
|
it("should preserve original reference fields", async () => {
|
|
109
|
-
const sdk = await
|
|
107
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
110
108
|
const observations = sdk.getObservations();
|
|
111
109
|
expect(observations.length).toBeGreaterThan(0);
|
|
112
110
|
const observation = observations[0];
|
|
@@ -115,7 +113,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
115
113
|
expect(observation.performer).toEqual([{ reference: "Practitioner/practitioner-456" }]);
|
|
116
114
|
});
|
|
117
115
|
it("should not include getter methods in JSON serialization", async () => {
|
|
118
|
-
const sdk = await
|
|
116
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
119
117
|
const observations = sdk.getObservations();
|
|
120
118
|
expect(observations.length).toBeGreaterThan(0);
|
|
121
119
|
const observation = observations[0];
|
|
@@ -127,7 +125,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
127
125
|
});
|
|
128
126
|
describe("Reference Chaining", () => {
|
|
129
127
|
it("should support chaining through resolved references", async () => {
|
|
130
|
-
const sdk = await
|
|
128
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
131
129
|
const observations = sdk.getObservations();
|
|
132
130
|
expect(observations.length).toBeGreaterThan(0);
|
|
133
131
|
const observation = observations[0];
|
|
@@ -138,7 +136,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
138
136
|
expect(patientViaChain?.id).toBe("patient-123");
|
|
139
137
|
});
|
|
140
138
|
it("should handle broken chains gracefully", async () => {
|
|
141
|
-
const sdk = await
|
|
139
|
+
const sdk = await FhirBundleSdk.create(bundleWithBrokenReferences);
|
|
142
140
|
const observations = sdk.getObservations();
|
|
143
141
|
if (observations.length > 0) {
|
|
144
142
|
const observation = observations[0];
|
|
@@ -149,19 +147,19 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
149
147
|
});
|
|
150
148
|
describe("Smart Resource Identity and Caching", () => {
|
|
151
149
|
it("should maintain object identity for cached resources", async () => {
|
|
152
|
-
const sdk = await
|
|
150
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
153
151
|
const observation1 = sdk.getObservations()[0];
|
|
154
152
|
const observation2 = sdk.getObservations()[0];
|
|
155
153
|
expect(observation1).toBe(observation2);
|
|
156
154
|
});
|
|
157
155
|
it("should maintain consistency across different access methods", async () => {
|
|
158
|
-
const sdk = await
|
|
156
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
159
157
|
const observationFromList = sdk.getObservations()[0];
|
|
160
158
|
const observationById = sdk.getResourceById("observation-001");
|
|
161
159
|
expect(observationFromList).toBe(observationById);
|
|
162
160
|
});
|
|
163
161
|
it("should cache resolved references", async () => {
|
|
164
|
-
const sdk = await
|
|
162
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
165
163
|
const observations = sdk.getObservations();
|
|
166
164
|
expect(observations.length).toBeGreaterThan(0);
|
|
167
165
|
const observation = observations[0];
|
|
@@ -172,7 +170,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
172
170
|
});
|
|
173
171
|
describe("Array Reference Chaining", () => {
|
|
174
172
|
it("should support chaining through array elements", async () => {
|
|
175
|
-
const sdk = await
|
|
173
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
176
174
|
const reports = sdk.getDiagnosticReports();
|
|
177
175
|
if (reports.length > 0) {
|
|
178
176
|
const report = reports[0];
|
|
@@ -189,7 +187,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
189
187
|
});
|
|
190
188
|
describe("Smart Resource Marker", () => {
|
|
191
189
|
it("should mark resources as smart resources", async () => {
|
|
192
|
-
const sdk = await
|
|
190
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
193
191
|
const observations = sdk.getObservations();
|
|
194
192
|
expect(observations.length).toBeGreaterThan(0);
|
|
195
193
|
const observation = observations[0];
|
|
@@ -199,7 +197,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
199
197
|
});
|
|
200
198
|
describe("Smart Resource toString() method", () => {
|
|
201
199
|
it("should render resources without proxy limitations", async () => {
|
|
202
|
-
const sdk = await
|
|
200
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
203
201
|
const observations = sdk.getObservations();
|
|
204
202
|
expect(observations.length).toBeGreaterThan(0);
|
|
205
203
|
const observation = observations[0];
|
|
@@ -211,7 +209,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
211
209
|
expect(stringified).not.toContain("getSubject");
|
|
212
210
|
});
|
|
213
211
|
it("should render nested objects deeply", async () => {
|
|
214
|
-
const sdk = await
|
|
212
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
215
213
|
const observation = sdk.getObservationById("observation-001");
|
|
216
214
|
expect(observation).toBeDefined();
|
|
217
215
|
const stringified = observation.toString();
|
|
@@ -222,7 +220,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
222
220
|
expect(parsed.encounter.reference).toBeDefined();
|
|
223
221
|
});
|
|
224
222
|
it("should support custom spacing", async () => {
|
|
225
|
-
const sdk = await
|
|
223
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
226
224
|
const observation = sdk.getObservationById("observation-001");
|
|
227
225
|
expect(observation).toBeDefined();
|
|
228
226
|
const compactString = observation.toString(0);
|
|
@@ -232,7 +230,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
232
230
|
expect(spacedString).toContain("\n");
|
|
233
231
|
});
|
|
234
232
|
it("should render complex nested structures", async () => {
|
|
235
|
-
const sdk = await
|
|
233
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
236
234
|
const patients = sdk.getPatients();
|
|
237
235
|
expect(patients.length).toBeGreaterThan(0);
|
|
238
236
|
const patient = patients[0];
|
|
@@ -245,11 +243,11 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
245
243
|
}
|
|
246
244
|
});
|
|
247
245
|
it("should automatically format for console.log and REPL via util.inspect", async () => {
|
|
248
|
-
const sdk = await
|
|
246
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
249
247
|
const observation = sdk.getObservationById("observation-001");
|
|
250
248
|
expect(observation).toBeDefined();
|
|
251
249
|
// util.inspect is what console.log and REPL use under the hood
|
|
252
|
-
const inspected =
|
|
250
|
+
const inspected = inspect(observation);
|
|
253
251
|
// Should be formatted as readable object output, not [Object] or [Proxy]
|
|
254
252
|
expect(inspected).toContain("resourceType:");
|
|
255
253
|
expect(inspected).toContain("Observation");
|
|
@@ -262,7 +260,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
262
260
|
describe("Nested Reference Path Resolution", () => {
|
|
263
261
|
describe("Encounter.diagnosis.condition", () => {
|
|
264
262
|
it("should resolve diagnosis.condition nested array reference", async () => {
|
|
265
|
-
const sdk = await
|
|
263
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
266
264
|
const encounters = sdk.getEncounters();
|
|
267
265
|
expect(encounters.length).toBeGreaterThan(0);
|
|
268
266
|
const encounter = encounters[0];
|
|
@@ -274,7 +272,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
274
272
|
expect(conditions[0]?.id).toBe("condition-222");
|
|
275
273
|
});
|
|
276
274
|
it("should preserve original diagnosis array field", async () => {
|
|
277
|
-
const sdk = await
|
|
275
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
278
276
|
const encounters = sdk.getEncounters();
|
|
279
277
|
expect(encounters.length).toBeGreaterThan(0);
|
|
280
278
|
const encounter = encounters[0];
|
|
@@ -287,7 +285,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
287
285
|
});
|
|
288
286
|
describe("Encounter.participant.individual", () => {
|
|
289
287
|
it("should resolve participant.individual nested array reference", async () => {
|
|
290
|
-
const sdk = await
|
|
288
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
291
289
|
const encounters = sdk.getEncounters();
|
|
292
290
|
expect(encounters.length).toBeGreaterThan(0);
|
|
293
291
|
const encounter = encounters[0];
|
|
@@ -301,7 +299,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
301
299
|
});
|
|
302
300
|
describe("Encounter.location.location", () => {
|
|
303
301
|
it("should resolve location.location nested array reference", async () => {
|
|
304
|
-
const sdk = await
|
|
302
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
305
303
|
const encounters = sdk.getEncounters();
|
|
306
304
|
expect(encounters.length).toBeGreaterThan(0);
|
|
307
305
|
const encounter = encounters[0];
|
|
@@ -315,7 +313,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
315
313
|
});
|
|
316
314
|
describe("Encounter.hospitalization.origin", () => {
|
|
317
315
|
it("should resolve hospitalization.origin nested single reference", async () => {
|
|
318
|
-
const sdk = await
|
|
316
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
319
317
|
const encounters = sdk.getEncounters();
|
|
320
318
|
expect(encounters.length).toBeGreaterThan(0);
|
|
321
319
|
const encounter = encounters[0];
|
|
@@ -328,7 +326,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
328
326
|
});
|
|
329
327
|
describe("Encounter.hospitalization.destination", () => {
|
|
330
328
|
it("should resolve hospitalization.destination nested single reference", async () => {
|
|
331
|
-
const sdk = await
|
|
329
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
332
330
|
const encounters = sdk.getEncounters();
|
|
333
331
|
expect(encounters.length).toBeGreaterThan(0);
|
|
334
332
|
const encounter = encounters[0];
|
|
@@ -341,7 +339,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
341
339
|
});
|
|
342
340
|
describe("Patient.contact.organization", () => {
|
|
343
341
|
it("should resolve contact.organization nested array reference", async () => {
|
|
344
|
-
const sdk = await
|
|
342
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
345
343
|
const patients = sdk.getPatients();
|
|
346
344
|
expect(patients.length).toBeGreaterThan(0);
|
|
347
345
|
const patient = patients[0];
|
|
@@ -355,7 +353,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
355
353
|
});
|
|
356
354
|
describe("Practitioner.qualification.issuer", () => {
|
|
357
355
|
it("should resolve qualification.issuer nested array reference", async () => {
|
|
358
|
-
const sdk = await
|
|
356
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
359
357
|
const practitioners = sdk.getPractitioners();
|
|
360
358
|
expect(practitioners.length).toBeGreaterThan(0);
|
|
361
359
|
const practitioner = practitioners[0];
|
|
@@ -369,7 +367,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
369
367
|
});
|
|
370
368
|
describe("Missing nested references", () => {
|
|
371
369
|
it("should return empty array when nested array reference field is missing", async () => {
|
|
372
|
-
const sdk = await
|
|
370
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
373
371
|
const diagnosticReports = sdk.getDiagnosticReports();
|
|
374
372
|
expect(diagnosticReports.length).toBeGreaterThan(0);
|
|
375
373
|
const report = diagnosticReports[0];
|
|
@@ -380,7 +378,7 @@ describe("Phase 5 Verification - Smart Reference Resolution", () => {
|
|
|
380
378
|
expect(mediaLinks.length).toBe(0);
|
|
381
379
|
});
|
|
382
380
|
it("should return undefined when nested single reference field is missing", async () => {
|
|
383
|
-
const sdk = await
|
|
381
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
384
382
|
const patients = sdk.getPatients();
|
|
385
383
|
expect(patients.length).toBeGreaterThan(0);
|
|
386
384
|
const patient = patients[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase5-verification.test.js","sourceRoot":"","sources":["../../src/__tests__/phase5-verification.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"phase5-verification.test.js","sourceRoot":"","sources":["../../src/__tests__/phase5-verification.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { FhirBundleSdk } from "../index";
|
|
3
|
+
import { validCompleteBundle, mixedResourceTypesBundle } from "./fixtures/fhir-bundles";
|
|
6
4
|
describe("Reverse References", () => {
|
|
7
5
|
describe("getResourcesReferencingId - basic functionality", () => {
|
|
8
6
|
it("should return all resources that reference a given resource ID", async () => {
|
|
9
|
-
const sdk = await
|
|
7
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
10
8
|
// patient-123 is referenced by:
|
|
11
9
|
// - encounter-789 (subject)
|
|
12
10
|
// - observation-001 (subject)
|
|
@@ -17,12 +15,12 @@ describe("Reverse References", () => {
|
|
|
17
15
|
expect(resourceTypes).toEqual(["Condition", "DiagnosticReport", "Encounter", "Observation"]);
|
|
18
16
|
});
|
|
19
17
|
it("should return empty array when no resources reference the given ID", async () => {
|
|
20
|
-
const sdk = await
|
|
18
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
21
19
|
const referencingResources = sdk.getResourcesReferencingId("nonexistent-id");
|
|
22
20
|
expect(referencingResources).toEqual([]);
|
|
23
21
|
});
|
|
24
22
|
it("should handle resources referenced by multiple other resources", async () => {
|
|
25
|
-
const sdk = await
|
|
23
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
26
24
|
// encounter-789 is referenced by:
|
|
27
25
|
// - observation-001 (encounter)
|
|
28
26
|
// - diagnostic-report-002 (encounter)
|
|
@@ -31,7 +29,7 @@ describe("Reverse References", () => {
|
|
|
31
29
|
expect(referencingResources.every(r => r.resourceType === "Observation" || r.resourceType === "DiagnosticReport")).toBe(true);
|
|
32
30
|
});
|
|
33
31
|
it("should handle resources referenced by array fields", async () => {
|
|
34
|
-
const sdk = await
|
|
32
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
35
33
|
// practitioner-456 is referenced by:
|
|
36
34
|
// - encounter-789 (participant array)
|
|
37
35
|
// - observation-001 (performer array)
|
|
@@ -42,7 +40,7 @@ describe("Reverse References", () => {
|
|
|
42
40
|
});
|
|
43
41
|
describe("getResourcesReferencingId - filtering by resource type", () => {
|
|
44
42
|
it("should filter by source resource type", async () => {
|
|
45
|
-
const sdk = await
|
|
43
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
46
44
|
// Get only Observations that reference patient-123
|
|
47
45
|
const observations = sdk.getResourcesReferencingId("patient-123", {
|
|
48
46
|
resourceType: "Observation",
|
|
@@ -52,7 +50,7 @@ describe("Reverse References", () => {
|
|
|
52
50
|
expect(observations[0]?.id).toBe("observation-001");
|
|
53
51
|
});
|
|
54
52
|
it("should return empty array when filtering by type with no matches", async () => {
|
|
55
|
-
const sdk = await
|
|
53
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
56
54
|
// No Practitioners reference patient-123
|
|
57
55
|
const practitioners = sdk.getResourcesReferencingId("patient-123", {
|
|
58
56
|
resourceType: "Practitioner",
|
|
@@ -60,7 +58,7 @@ describe("Reverse References", () => {
|
|
|
60
58
|
expect(practitioners).toEqual([]);
|
|
61
59
|
});
|
|
62
60
|
it("should handle multiple resources of same type referencing target", async () => {
|
|
63
|
-
const sdk = await
|
|
61
|
+
const sdk = await FhirBundleSdk.create(mixedResourceTypesBundle);
|
|
64
62
|
// patient-mix-1 is referenced by observation-mix-1 and observation-mix-2
|
|
65
63
|
const observations = sdk.getResourcesReferencingId("patient-mix-1", {
|
|
66
64
|
resourceType: "Observation",
|
|
@@ -71,7 +69,7 @@ describe("Reverse References", () => {
|
|
|
71
69
|
});
|
|
72
70
|
describe("getResourcesReferencingId - filtering by reference field", () => {
|
|
73
71
|
it("should filter by specific reference field", async () => {
|
|
74
|
-
const sdk = await
|
|
72
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
75
73
|
// Get only resources that reference patient-123 via "subject" field
|
|
76
74
|
const subjectReferences = sdk.getResourcesReferencingId("patient-123", {
|
|
77
75
|
referenceField: "subject",
|
|
@@ -83,7 +81,7 @@ describe("Reverse References", () => {
|
|
|
83
81
|
})).toBe(true);
|
|
84
82
|
});
|
|
85
83
|
it("should filter by nested reference field", async () => {
|
|
86
|
-
const sdk = await
|
|
84
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
87
85
|
// Get only resources that reference practitioner-456 via "performer" field
|
|
88
86
|
const performerReferences = sdk.getResourcesReferencingId("practitioner-456", {
|
|
89
87
|
referenceField: "performer",
|
|
@@ -91,7 +89,7 @@ describe("Reverse References", () => {
|
|
|
91
89
|
expect(performerReferences.length).toBeGreaterThan(0);
|
|
92
90
|
});
|
|
93
91
|
it("should return empty array when field does not match", async () => {
|
|
94
|
-
const sdk = await
|
|
92
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
95
93
|
// No resources reference patient-123 via "performer" field
|
|
96
94
|
const performerReferences = sdk.getResourcesReferencingId("patient-123", {
|
|
97
95
|
referenceField: "performer",
|
|
@@ -101,7 +99,7 @@ describe("Reverse References", () => {
|
|
|
101
99
|
});
|
|
102
100
|
describe("getResourcesReferencingId - combined filters", () => {
|
|
103
101
|
it("should apply both resourceType and referenceField filters", async () => {
|
|
104
|
-
const sdk = await
|
|
102
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
105
103
|
// Get only Observations that reference patient-123 via "subject"
|
|
106
104
|
const observations = sdk.getResourcesReferencingId("patient-123", {
|
|
107
105
|
resourceType: "Observation",
|
|
@@ -114,13 +112,13 @@ describe("Reverse References", () => {
|
|
|
114
112
|
});
|
|
115
113
|
describe("Smart resource getReferencingResources method", () => {
|
|
116
114
|
it("should expose getReferencingResources on smart resources", async () => {
|
|
117
|
-
const sdk = await
|
|
115
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
118
116
|
const patient = sdk.getPatientById("patient-123");
|
|
119
117
|
expect(patient).toBeDefined();
|
|
120
118
|
expect(typeof patient.getReferencingResources).toBe("function");
|
|
121
119
|
});
|
|
122
120
|
it("should return all resources referencing the smart resource", async () => {
|
|
123
|
-
const sdk = await
|
|
121
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
124
122
|
const patient = sdk.getPatientById("patient-123");
|
|
125
123
|
const referencingResources = patient.getReferencingResources();
|
|
126
124
|
expect(referencingResources).toHaveLength(4);
|
|
@@ -128,7 +126,7 @@ describe("Reverse References", () => {
|
|
|
128
126
|
expect(resourceTypes).toEqual(["Condition", "DiagnosticReport", "Encounter", "Observation"]);
|
|
129
127
|
});
|
|
130
128
|
it("should support filtering options on smart resource method", async () => {
|
|
131
|
-
const sdk = await
|
|
129
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
132
130
|
const patient = sdk.getPatientById("patient-123");
|
|
133
131
|
const observations = patient.getReferencingResources({
|
|
134
132
|
resourceType: "Observation",
|
|
@@ -137,7 +135,7 @@ describe("Reverse References", () => {
|
|
|
137
135
|
expect(observations[0].resourceType).toBe("Observation");
|
|
138
136
|
});
|
|
139
137
|
it("should support referenceField filtering on smart resource method", async () => {
|
|
140
|
-
const sdk = await
|
|
138
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
141
139
|
const patient = sdk.getPatientById("patient-123");
|
|
142
140
|
const subjectReferences = patient.getReferencingResources({
|
|
143
141
|
referenceField: "subject",
|
|
@@ -145,14 +143,14 @@ describe("Reverse References", () => {
|
|
|
145
143
|
expect(subjectReferences).toHaveLength(4);
|
|
146
144
|
});
|
|
147
145
|
it("should return empty array when smart resource is not referenced", async () => {
|
|
148
|
-
const sdk = await
|
|
146
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
149
147
|
const practitioner = sdk.getPractitionerById("practitioner-456");
|
|
150
148
|
// Check if the method exists and returns an array
|
|
151
149
|
const pracReferences = practitioner.getReferencingResources();
|
|
152
150
|
expect(Array.isArray(pracReferences)).toBe(true);
|
|
153
151
|
});
|
|
154
152
|
it("should work with resources that have no ID", async () => {
|
|
155
|
-
const sdk = await
|
|
153
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
156
154
|
const observation = sdk.getObservationById("observation-001");
|
|
157
155
|
const referencingResources = observation.getReferencingResources();
|
|
158
156
|
// observation-001 is referenced by diagnostic-report-002 in the "result" field
|
|
@@ -175,7 +173,7 @@ describe("Reverse References", () => {
|
|
|
175
173
|
},
|
|
176
174
|
],
|
|
177
175
|
};
|
|
178
|
-
const sdk = await
|
|
176
|
+
const sdk = await FhirBundleSdk.create(bundle);
|
|
179
177
|
const referencingResources = sdk.getResourcesReferencingId("patient-solo");
|
|
180
178
|
expect(referencingResources).toEqual([]);
|
|
181
179
|
});
|
|
@@ -205,7 +203,7 @@ describe("Reverse References", () => {
|
|
|
205
203
|
},
|
|
206
204
|
],
|
|
207
205
|
};
|
|
208
|
-
const sdk = await
|
|
206
|
+
const sdk = await FhirBundleSdk.create(bundle);
|
|
209
207
|
// Should work with resource ID
|
|
210
208
|
const referencingById = sdk.getResourcesReferencingId("patient-fullurl-test");
|
|
211
209
|
expect(referencingById).toHaveLength(1);
|
|
@@ -214,7 +212,7 @@ describe("Reverse References", () => {
|
|
|
214
212
|
expect(referencingByFullUrl).toHaveLength(1);
|
|
215
213
|
});
|
|
216
214
|
it("should return smart resources from reverse lookup", async () => {
|
|
217
|
-
const sdk = await
|
|
215
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
218
216
|
const referencingResources = sdk.getResourcesReferencingId("patient-123");
|
|
219
217
|
// Check that returned resources are smart resources
|
|
220
218
|
expect(referencingResources.length).toBeGreaterThan(0);
|
|
@@ -223,7 +221,7 @@ describe("Reverse References", () => {
|
|
|
223
221
|
});
|
|
224
222
|
describe("Performance", () => {
|
|
225
223
|
it("should perform reverse lookup in constant time", async () => {
|
|
226
|
-
const sdk = await
|
|
224
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
227
225
|
const iterations = 100;
|
|
228
226
|
const times = [];
|
|
229
227
|
for (let i = 0; i < iterations; i++) {
|
|
@@ -239,13 +237,13 @@ describe("Reverse References", () => {
|
|
|
239
237
|
});
|
|
240
238
|
describe("getReferencedResources - forward reference lookup", () => {
|
|
241
239
|
it("should expose getReferencedResources on smart resources", async () => {
|
|
242
|
-
const sdk = await
|
|
240
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
243
241
|
const observation = sdk.getObservationById("observation-001");
|
|
244
242
|
expect(observation).toBeDefined();
|
|
245
243
|
expect(typeof observation.getReferencedResources).toBe("function");
|
|
246
244
|
});
|
|
247
245
|
it("should return all resources referenced by a resource", async () => {
|
|
248
|
-
const sdk = await
|
|
246
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
249
247
|
const observation = sdk.getObservationById("observation-001");
|
|
250
248
|
const referencedResources = observation.getReferencedResources();
|
|
251
249
|
// observation-001 references:
|
|
@@ -257,14 +255,14 @@ describe("Reverse References", () => {
|
|
|
257
255
|
expect(resourceTypes.has("Patient")).toBe(true);
|
|
258
256
|
});
|
|
259
257
|
it("should return empty array for resources with no references", async () => {
|
|
260
|
-
const sdk = await
|
|
258
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
261
259
|
const patient = sdk.getPatientById("patient-123");
|
|
262
260
|
const referencedResources = patient.getReferencedResources();
|
|
263
261
|
// Patient may have no outgoing references or very few
|
|
264
262
|
expect(Array.isArray(referencedResources)).toBe(true);
|
|
265
263
|
});
|
|
266
264
|
it("should work with SDK-level method getResourcesReferencedBy", async () => {
|
|
267
|
-
const sdk = await
|
|
265
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
268
266
|
const observation = sdk.getObservationById("observation-001");
|
|
269
267
|
expect(observation).toBeDefined();
|
|
270
268
|
if (!observation) {
|
|
@@ -275,7 +273,7 @@ describe("Reverse References", () => {
|
|
|
275
273
|
expect(referencedResources.length).toBeGreaterThan(0);
|
|
276
274
|
});
|
|
277
275
|
it("should handle array reference fields", async () => {
|
|
278
|
-
const sdk = await
|
|
276
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
279
277
|
const diagnosticReport = sdk.getDiagnosticReportById("diagnostic-report-002");
|
|
280
278
|
const referencedResources = diagnosticReport.getReferencedResources();
|
|
281
279
|
// DiagnosticReport references multiple resources including results array
|
|
@@ -283,7 +281,7 @@ describe("Reverse References", () => {
|
|
|
283
281
|
expect(referencedResources.length).toBeGreaterThan(0);
|
|
284
282
|
});
|
|
285
283
|
it("should not include undefined values", async () => {
|
|
286
|
-
const sdk = await
|
|
284
|
+
const sdk = await FhirBundleSdk.create(validCompleteBundle);
|
|
287
285
|
const observation = sdk.getObservationById("observation-001");
|
|
288
286
|
const referencedResources = observation.getReferencedResources();
|
|
289
287
|
// All returned resources should be defined
|