@metriport/fhir-sdk 1.7.1 → 1.7.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__/reverse-references.test.js +178 -0
- package/dist/__tests__/reverse-references.test.js.map +1 -1
- package/dist/internal/reference-utils.d.ts +3 -2
- package/dist/internal/reference-utils.d.ts.map +1 -1
- package/dist/internal/reference-utils.js +5 -7
- package/dist/internal/reference-utils.js.map +1 -1
- package/package.json +2 -3
- package/dist/__tests__/type-guards.test.d.ts +0 -2
- package/dist/__tests__/type-guards.test.d.ts.map +0 -1
- package/dist/__tests__/type-guards.test.js +0 -163
- package/dist/__tests__/type-guards.test.js.map +0 -1
|
@@ -221,6 +221,184 @@ describe("Reverse References", () => {
|
|
|
221
221
|
expect(referencingResources[0].__isSmartResource).toBe(true);
|
|
222
222
|
});
|
|
223
223
|
});
|
|
224
|
+
describe("Nested reference field filtering", () => {
|
|
225
|
+
describe("Array-based nesting (e.g., diagnosis.condition)", () => {
|
|
226
|
+
it("should filter by diagnosis.condition nested path", async () => {
|
|
227
|
+
const sdk = await index_1.FhirBundleSdk.create(fhir_bundles_1.validCompleteBundle);
|
|
228
|
+
// condition-222 is referenced by encounter-789 via diagnosis[].condition
|
|
229
|
+
const referencingResources = sdk.getResourcesReferencingId("condition-222", {
|
|
230
|
+
referenceField: "diagnosis.condition",
|
|
231
|
+
});
|
|
232
|
+
expect(referencingResources).toHaveLength(1);
|
|
233
|
+
expect(referencingResources[0]?.resourceType).toBe("Encounter");
|
|
234
|
+
expect(referencingResources[0]?.id).toBe("encounter-789");
|
|
235
|
+
});
|
|
236
|
+
it("should filter by participant.individual nested path", async () => {
|
|
237
|
+
const sdk = await index_1.FhirBundleSdk.create(fhir_bundles_1.validCompleteBundle);
|
|
238
|
+
// practitioner-456 is referenced by encounter-789 via participant[].individual
|
|
239
|
+
const referencingResources = sdk.getResourcesReferencingId("practitioner-456", {
|
|
240
|
+
referenceField: "participant.individual",
|
|
241
|
+
});
|
|
242
|
+
expect(referencingResources).toHaveLength(1);
|
|
243
|
+
expect(referencingResources[0]?.resourceType).toBe("Encounter");
|
|
244
|
+
expect(referencingResources[0]?.id).toBe("encounter-789");
|
|
245
|
+
});
|
|
246
|
+
it("should filter by location.location nested path", async () => {
|
|
247
|
+
const sdk = await index_1.FhirBundleSdk.create(fhir_bundles_1.validCompleteBundle);
|
|
248
|
+
// location-111 is referenced by encounter-789 via location[].location
|
|
249
|
+
const referencingResources = sdk.getResourcesReferencingId("location-111", {
|
|
250
|
+
referenceField: "location.location",
|
|
251
|
+
});
|
|
252
|
+
expect(referencingResources).toHaveLength(1);
|
|
253
|
+
expect(referencingResources[0]?.resourceType).toBe("Encounter");
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
describe("Non-array based nesting (e.g., hospitalization.origin)", () => {
|
|
257
|
+
it("should filter by hospitalization.origin nested path", async () => {
|
|
258
|
+
const sdk = await index_1.FhirBundleSdk.create(fhir_bundles_1.validCompleteBundle);
|
|
259
|
+
// location-111 is referenced by encounter-789 via hospitalization.origin
|
|
260
|
+
const referencingResources = sdk.getResourcesReferencingId("location-111", {
|
|
261
|
+
referenceField: "hospitalization.origin",
|
|
262
|
+
});
|
|
263
|
+
expect(referencingResources).toHaveLength(1);
|
|
264
|
+
expect(referencingResources[0]?.resourceType).toBe("Encounter");
|
|
265
|
+
expect(referencingResources[0]?.id).toBe("encounter-789");
|
|
266
|
+
});
|
|
267
|
+
it("should filter by hospitalization.destination nested path", async () => {
|
|
268
|
+
const sdk = await index_1.FhirBundleSdk.create(fhir_bundles_1.validCompleteBundle);
|
|
269
|
+
// location-111 is referenced by encounter-789 via hospitalization.destination
|
|
270
|
+
const referencingResources = sdk.getResourcesReferencingId("location-111", {
|
|
271
|
+
referenceField: "hospitalization.destination",
|
|
272
|
+
});
|
|
273
|
+
expect(referencingResources).toHaveLength(1);
|
|
274
|
+
expect(referencingResources[0]?.resourceType).toBe("Encounter");
|
|
275
|
+
expect(referencingResources[0]?.id).toBe("encounter-789");
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
describe("Doubly nested arrays (e.g., activity.detail.goal)", () => {
|
|
279
|
+
const bundleWithDoublyNestedRefs = {
|
|
280
|
+
resourceType: "Bundle",
|
|
281
|
+
type: "collection",
|
|
282
|
+
entry: [
|
|
283
|
+
{
|
|
284
|
+
resource: {
|
|
285
|
+
resourceType: "Goal",
|
|
286
|
+
id: "goal-1",
|
|
287
|
+
lifecycleStatus: "active",
|
|
288
|
+
description: { text: "Test Goal 1" },
|
|
289
|
+
subject: { reference: "Patient/patient-123" },
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
resource: {
|
|
294
|
+
resourceType: "Goal",
|
|
295
|
+
id: "goal-2",
|
|
296
|
+
lifecycleStatus: "active",
|
|
297
|
+
description: { text: "Test Goal 2" },
|
|
298
|
+
subject: { reference: "Patient/patient-123" },
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
resource: {
|
|
303
|
+
resourceType: "CarePlan",
|
|
304
|
+
id: "careplan-1",
|
|
305
|
+
status: "active",
|
|
306
|
+
intent: "plan",
|
|
307
|
+
subject: { reference: "Patient/patient-123" },
|
|
308
|
+
activity: [
|
|
309
|
+
{
|
|
310
|
+
detail: {
|
|
311
|
+
status: "in-progress",
|
|
312
|
+
goal: [{ reference: "Goal/goal-1" }, { reference: "Goal/goal-2" }],
|
|
313
|
+
},
|
|
314
|
+
},
|
|
315
|
+
],
|
|
316
|
+
},
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
resource: {
|
|
320
|
+
resourceType: "CarePlan",
|
|
321
|
+
id: "careplan-2",
|
|
322
|
+
status: "active",
|
|
323
|
+
intent: "plan",
|
|
324
|
+
subject: { reference: "Patient/patient-123" },
|
|
325
|
+
activity: [
|
|
326
|
+
{
|
|
327
|
+
detail: {
|
|
328
|
+
status: "scheduled",
|
|
329
|
+
goal: [{ reference: "Goal/goal-1" }],
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
],
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
],
|
|
336
|
+
};
|
|
337
|
+
it("should filter by activity.detail.goal doubly nested path", async () => {
|
|
338
|
+
const sdk = await index_1.FhirBundleSdk.create(bundleWithDoublyNestedRefs);
|
|
339
|
+
// goal-1 is referenced by both careplan-1 and careplan-2 via activity[].detail.goal[]
|
|
340
|
+
const referencingResources = sdk.getResourcesReferencingId("goal-1", {
|
|
341
|
+
referenceField: "activity.detail.goal",
|
|
342
|
+
});
|
|
343
|
+
expect(referencingResources).toHaveLength(2);
|
|
344
|
+
expect(referencingResources.every(r => r.resourceType === "CarePlan")).toBe(true);
|
|
345
|
+
const ids = referencingResources.map(r => r.id).sort();
|
|
346
|
+
expect(ids).toEqual(["careplan-1", "careplan-2"]);
|
|
347
|
+
});
|
|
348
|
+
it("should find only CarePlans that reference a specific goal via doubly nested path", async () => {
|
|
349
|
+
const sdk = await index_1.FhirBundleSdk.create(bundleWithDoublyNestedRefs);
|
|
350
|
+
// goal-2 is only referenced by careplan-1
|
|
351
|
+
const referencingResources = sdk.getResourcesReferencingId("goal-2", {
|
|
352
|
+
referenceField: "activity.detail.goal",
|
|
353
|
+
});
|
|
354
|
+
expect(referencingResources).toHaveLength(1);
|
|
355
|
+
expect(referencingResources[0]?.resourceType).toBe("CarePlan");
|
|
356
|
+
expect(referencingResources[0]?.id).toBe("careplan-1");
|
|
357
|
+
});
|
|
358
|
+
});
|
|
359
|
+
describe("Filtering should not match partial paths", () => {
|
|
360
|
+
it("should not match diagnosis when filtering for diagnosis.condition", async () => {
|
|
361
|
+
// Create a bundle where diagnosis field alone doesn't match
|
|
362
|
+
const bundleWithMultipleRefs = {
|
|
363
|
+
resourceType: "Bundle",
|
|
364
|
+
type: "collection",
|
|
365
|
+
entry: [
|
|
366
|
+
{
|
|
367
|
+
resource: {
|
|
368
|
+
resourceType: "Location",
|
|
369
|
+
id: "location-test",
|
|
370
|
+
name: "Test Location",
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
resource: {
|
|
375
|
+
resourceType: "Encounter",
|
|
376
|
+
id: "encounter-test",
|
|
377
|
+
status: "finished",
|
|
378
|
+
class: { code: "AMB" },
|
|
379
|
+
location: [
|
|
380
|
+
{
|
|
381
|
+
location: { reference: "Location/location-test" },
|
|
382
|
+
},
|
|
383
|
+
],
|
|
384
|
+
},
|
|
385
|
+
},
|
|
386
|
+
],
|
|
387
|
+
};
|
|
388
|
+
const sdk = await index_1.FhirBundleSdk.create(bundleWithMultipleRefs);
|
|
389
|
+
// Should match location.location
|
|
390
|
+
const locationRefs = sdk.getResourcesReferencingId("location-test", {
|
|
391
|
+
referenceField: "location.location",
|
|
392
|
+
});
|
|
393
|
+
expect(locationRefs).toHaveLength(1);
|
|
394
|
+
// Should NOT match just "location" since it's stored as "location.location"
|
|
395
|
+
const partialRefs = sdk.getResourcesReferencingId("location-test", {
|
|
396
|
+
referenceField: "location",
|
|
397
|
+
});
|
|
398
|
+
expect(partialRefs).toHaveLength(0);
|
|
399
|
+
});
|
|
400
|
+
});
|
|
401
|
+
});
|
|
224
402
|
describe("Performance", () => {
|
|
225
403
|
it("should perform reverse lookup in constant time", async () => {
|
|
226
404
|
const sdk = await index_1.FhirBundleSdk.create(fhir_bundles_1.validCompleteBundle);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverse-references.test.js","sourceRoot":"","sources":["../../src/__tests__/reverse-references.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reverse-references.test.js","sourceRoot":"","sources":["../../src/__tests__/reverse-references.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,9 +11,10 @@ export declare function findAllReferences(resource: Resource): Array<{
|
|
|
11
11
|
*/
|
|
12
12
|
export declare function extractTargetIdFromReference(reference: string): string | undefined;
|
|
13
13
|
/**
|
|
14
|
-
* Normalize reference field path
|
|
15
|
-
* e.g., "
|
|
14
|
+
* Normalize reference field path by removing array indices but preserving nested paths.
|
|
15
|
+
* e.g., "diagnosis[0].condition" -> "diagnosis.condition"
|
|
16
16
|
* "performer[0]" -> "performer"
|
|
17
|
+
* "participant[0].individual" -> "participant.individual"
|
|
17
18
|
*/
|
|
18
19
|
export declare function normalizeReferenceField(field: string): string;
|
|
19
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-utils.d.ts","sourceRoot":"","sources":["../../src/internal/reference-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAkCjG;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAalF;AAED
|
|
1
|
+
{"version":3,"file":"reference-utils.d.ts","sourceRoot":"","sources":["../../src/internal/reference-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAkCjG;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAalF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EACpC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GACxC,OAAO,CAeT"}
|
|
@@ -53,16 +53,14 @@ function extractTargetIdFromReference(reference) {
|
|
|
53
53
|
}
|
|
54
54
|
exports.extractTargetIdFromReference = extractTargetIdFromReference;
|
|
55
55
|
/**
|
|
56
|
-
* Normalize reference field path
|
|
57
|
-
* e.g., "
|
|
56
|
+
* Normalize reference field path by removing array indices but preserving nested paths.
|
|
57
|
+
* e.g., "diagnosis[0].condition" -> "diagnosis.condition"
|
|
58
58
|
* "performer[0]" -> "performer"
|
|
59
|
+
* "participant[0].individual" -> "participant.individual"
|
|
59
60
|
*/
|
|
60
61
|
function normalizeReferenceField(field) {
|
|
61
|
-
// Remove array indices
|
|
62
|
-
|
|
63
|
-
// Take first part of dotted path
|
|
64
|
-
const parts = withoutIndices.split(".");
|
|
65
|
-
return parts[0] ?? field;
|
|
62
|
+
// Remove array indices while preserving the full nested path
|
|
63
|
+
return field.replace(/\[\d+\]/g, "");
|
|
66
64
|
}
|
|
67
65
|
exports.normalizeReferenceField = normalizeReferenceField;
|
|
68
66
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-utils.js","sourceRoot":"","sources":["../../src/internal/reference-utils.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,SAAgB,iBAAiB,CAAC,QAAkB;IAClD,MAAM,UAAU,GAAgD,EAAE,CAAC;IAEnE,8DAA8D;IAC9D,SAAS,YAAY,CAAC,GAAQ,EAAE,IAAI,GAAG,EAAE;QACvC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACnC,OAAO;SACR;QAED,sCAAsC;QACtC,IAAI,GAAG,CAAC,SAAS,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE;YACtD,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,IAAI,IAAI,WAAW;gBAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;aACzB,CAAC,CAAC;YACH,OAAO;SACR;QAED,uCAAuC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAElD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC5B,YAAY,CAAC,IAAI,EAAE,GAAG,WAAW,IAAI,KAAK,GAAG,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;aACJ;iBAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7C,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;aAClC;SACF;IACH,CAAC;IAED,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvB,OAAO,UAAU,CAAC;AACpB,CAAC;AAlCD,8CAkCC;AAED;;GAEG;AACH,SAAgB,4BAA4B,CAAC,SAAiB;IAC5D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,SAAS,CAAC;KAClB;IAED,mCAAmC;IACnC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAChC;IAED,yDAAyD;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAbD,oEAaC;AAED
|
|
1
|
+
{"version":3,"file":"reference-utils.js","sourceRoot":"","sources":["../../src/internal/reference-utils.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,SAAgB,iBAAiB,CAAC,QAAkB;IAClD,MAAM,UAAU,GAAgD,EAAE,CAAC;IAEnE,8DAA8D;IAC9D,SAAS,YAAY,CAAC,GAAQ,EAAE,IAAI,GAAG,EAAE;QACvC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACnC,OAAO;SACR;QAED,sCAAsC;QACtC,IAAI,GAAG,CAAC,SAAS,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE;YACtD,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,IAAI,IAAI,WAAW;gBAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;aACzB,CAAC,CAAC;YACH,OAAO;SACR;QAED,uCAAuC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAElD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC5B,YAAY,CAAC,IAAI,EAAE,GAAG,WAAW,IAAI,KAAK,GAAG,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;aACJ;iBAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7C,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;aAClC;SACF;IACH,CAAC;IAED,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvB,OAAO,UAAU,CAAC;AACpB,CAAC;AAlCD,8CAkCC;AAED;;GAEG;AACH,SAAgB,4BAA4B,CAAC,SAAiB;IAC5D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,SAAS,CAAC;KAClB;IAED,mCAAmC;IACnC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAChC;IAED,yDAAyD;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAbD,oEAaC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,KAAa;IACnD,6DAA6D;IAC7D,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAHD,0DAGC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,SAAiB,EACjB,aAAoC,EACpC,kBAAyC;IAEzC,sDAAsD;IACtD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,UAAU,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC;SACb;KACF;IAED,mDAAmD;IACnD,IAAI,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QACrC,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAnBD,kDAmBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metriport/fhir-sdk",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.2",
|
|
4
4
|
"description": "FHIR Bundle SDK for parsing, querying, and manipulating FHIR bundles with reference resolution",
|
|
5
5
|
"author": "Metriport Inc. <contact@metriport.com>",
|
|
6
6
|
"homepage": "https://metriport.com/",
|
|
@@ -65,6 +65,5 @@
|
|
|
65
65
|
"rimraf": "^5.0.1",
|
|
66
66
|
"ts-jest": "29.1.1",
|
|
67
67
|
"typescript": "^4.9.5"
|
|
68
|
-
}
|
|
69
|
-
"gitHead": "93c974e4836229e16f2766770f4d2ff50acda14e"
|
|
68
|
+
}
|
|
70
69
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"type-guards.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/type-guards.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const fhir_bundle_sdk_1 = require("../fhir-bundle-sdk");
|
|
4
|
-
const type_guards_1 = require("../type-guards");
|
|
5
|
-
describe("Type Guards", () => {
|
|
6
|
-
describe("Basic type narrowing with mixed resource arrays", () => {
|
|
7
|
-
test("filters mixed Resource array to specific type with proper inference", () => {
|
|
8
|
-
const resources = [
|
|
9
|
-
{ resourceType: "Patient", id: "patient-1" },
|
|
10
|
-
{ resourceType: "Observation", id: "obs-1", status: "final", code: { text: "test" } },
|
|
11
|
-
{ resourceType: "Patient", id: "patient-2" },
|
|
12
|
-
{
|
|
13
|
-
resourceType: "DiagnosticReport",
|
|
14
|
-
id: "report-1",
|
|
15
|
-
status: "final",
|
|
16
|
-
code: { text: "test" },
|
|
17
|
-
},
|
|
18
|
-
{ resourceType: "Observation", id: "obs-2", status: "final", code: { text: "test" } },
|
|
19
|
-
];
|
|
20
|
-
const patients = resources.filter(type_guards_1.isPatient);
|
|
21
|
-
const observations = resources.filter(type_guards_1.isObservation);
|
|
22
|
-
const reports = resources.filter(type_guards_1.isDiagnosticReport);
|
|
23
|
-
// Type assertions validate TypeScript properly inferred the types
|
|
24
|
-
expect(patients).toHaveLength(2);
|
|
25
|
-
expect(observations).toHaveLength(2);
|
|
26
|
-
expect(reports).toHaveLength(1);
|
|
27
|
-
// TypeScript knows these are Patients, so we can access Patient-specific fields
|
|
28
|
-
patients.forEach(patient => {
|
|
29
|
-
expect(patient.resourceType).toBe("Patient");
|
|
30
|
-
// This wouldn't compile if TypeScript didn't narrow the type
|
|
31
|
-
void patient.name; // Patient-specific field accessible due to type narrowing
|
|
32
|
-
});
|
|
33
|
-
// TypeScript knows these are Observations
|
|
34
|
-
observations.forEach(obs => {
|
|
35
|
-
expect(obs.resourceType).toBe("Observation");
|
|
36
|
-
expect(obs.status).toBe("final"); // Observation-specific field accessible
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
describe("Type guards with Smart resources", () => {
|
|
41
|
-
test("filters Smart resources with proper type inference", async () => {
|
|
42
|
-
const bundle = {
|
|
43
|
-
resourceType: "Bundle",
|
|
44
|
-
type: "collection",
|
|
45
|
-
entry: [
|
|
46
|
-
{ resource: { resourceType: "Patient", id: "patient-1" } },
|
|
47
|
-
{
|
|
48
|
-
resource: {
|
|
49
|
-
resourceType: "Observation",
|
|
50
|
-
id: "obs-1",
|
|
51
|
-
status: "final",
|
|
52
|
-
code: { text: "test" },
|
|
53
|
-
subject: { reference: "Patient/patient-1" },
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
{ resource: { resourceType: "Patient", id: "patient-2" } },
|
|
57
|
-
{
|
|
58
|
-
resource: {
|
|
59
|
-
resourceType: "Encounter",
|
|
60
|
-
id: "enc-1",
|
|
61
|
-
status: "finished",
|
|
62
|
-
class: { code: "test" },
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
resource: {
|
|
67
|
-
resourceType: "Observation",
|
|
68
|
-
id: "obs-2",
|
|
69
|
-
status: "final",
|
|
70
|
-
code: { text: "test" },
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
],
|
|
74
|
-
};
|
|
75
|
-
const sdk = await fhir_bundle_sdk_1.FhirBundleSdk.create(bundle);
|
|
76
|
-
// Test filtering observations directly - this is the main use case
|
|
77
|
-
const allObservations = sdk.getObservations();
|
|
78
|
-
expect(allObservations).toHaveLength(2);
|
|
79
|
-
allObservations.forEach(obs => {
|
|
80
|
-
expect(obs.resourceType).toBe("Observation");
|
|
81
|
-
expect(obs.__isSmartResource).toBe(true);
|
|
82
|
-
// Type guard confirms it's an Observation, so we can access observation-specific fields
|
|
83
|
-
if ((0, type_guards_1.isObservation)(obs)) {
|
|
84
|
-
const subject = obs.getSubject();
|
|
85
|
-
void subject;
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
// Test filtering patients
|
|
89
|
-
const allPatients = sdk.getPatients();
|
|
90
|
-
expect(allPatients).toHaveLength(2);
|
|
91
|
-
allPatients.forEach(patient => {
|
|
92
|
-
expect(patient.resourceType).toBe("Patient");
|
|
93
|
-
expect(patient.__isSmartResource).toBe(true);
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
test("type guards work in conditional blocks with Smart resources", async () => {
|
|
97
|
-
const bundle = {
|
|
98
|
-
resourceType: "Bundle",
|
|
99
|
-
type: "collection",
|
|
100
|
-
entry: [
|
|
101
|
-
{
|
|
102
|
-
resource: {
|
|
103
|
-
resourceType: "Patient",
|
|
104
|
-
id: "patient-1",
|
|
105
|
-
name: [{ given: ["Jane"], family: "Doe" }],
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
resource: {
|
|
110
|
-
resourceType: "Observation",
|
|
111
|
-
id: "obs-1",
|
|
112
|
-
status: "final",
|
|
113
|
-
code: { text: "test" },
|
|
114
|
-
valueQuantity: { value: 120, unit: "mmHg" },
|
|
115
|
-
},
|
|
116
|
-
},
|
|
117
|
-
],
|
|
118
|
-
};
|
|
119
|
-
const sdk = await fhir_bundle_sdk_1.FhirBundleSdk.create(bundle);
|
|
120
|
-
const resource1 = sdk.getResourceById("patient-1");
|
|
121
|
-
const resource2 = sdk.getResourceById("obs-1");
|
|
122
|
-
// Type guard in conditional - TypeScript should narrow the type
|
|
123
|
-
if (resource1 && (0, type_guards_1.isPatient)(resource1)) {
|
|
124
|
-
expect(resource1.resourceType).toBe("Patient");
|
|
125
|
-
const name = resource1.name?.[0]?.given?.[0];
|
|
126
|
-
expect(name).toBe("Jane");
|
|
127
|
-
}
|
|
128
|
-
if (resource2 && (0, type_guards_1.isObservation)(resource2)) {
|
|
129
|
-
expect(resource2.resourceType).toBe("Observation");
|
|
130
|
-
const value = resource2.valueQuantity?.value;
|
|
131
|
-
expect(value).toBe(120);
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
describe("Edge cases", () => {
|
|
136
|
-
test("handles undefined gracefully", () => {
|
|
137
|
-
expect((0, type_guards_1.isPatient)(undefined)).toBe(false);
|
|
138
|
-
expect((0, type_guards_1.isObservation)(undefined)).toBe(false);
|
|
139
|
-
expect((0, type_guards_1.isDiagnosticReport)(undefined)).toBe(false);
|
|
140
|
-
});
|
|
141
|
-
test("filters out undefined values from array", () => {
|
|
142
|
-
const resources = [
|
|
143
|
-
{ resourceType: "Patient", id: "1" },
|
|
144
|
-
undefined,
|
|
145
|
-
{ resourceType: "Observation", id: "2", status: "final", code: { text: "test" } },
|
|
146
|
-
undefined,
|
|
147
|
-
];
|
|
148
|
-
const patients = resources.filter(type_guards_1.isPatient);
|
|
149
|
-
const observations = resources.filter(type_guards_1.isObservation);
|
|
150
|
-
expect(patients).toHaveLength(1);
|
|
151
|
-
expect(observations).toHaveLength(1);
|
|
152
|
-
});
|
|
153
|
-
test("returns empty array when no matches found", () => {
|
|
154
|
-
const resources = [
|
|
155
|
-
{ resourceType: "Patient", id: "1" },
|
|
156
|
-
{ resourceType: "Patient", id: "2" },
|
|
157
|
-
];
|
|
158
|
-
const observations = resources.filter(type_guards_1.isObservation);
|
|
159
|
-
expect(observations).toHaveLength(0);
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
//# sourceMappingURL=type-guards.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"type-guards.test.js","sourceRoot":"","sources":["../../src/__tests__/type-guards.test.ts"],"names":[],"mappings":"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"}
|