@metriport/fhir-sdk 0.30.0-alpha.1

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.
Files changed (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +564 -0
  3. package/dist/__tests__/careplan.test.d.ts +2 -0
  4. package/dist/__tests__/careplan.test.d.ts.map +1 -0
  5. package/dist/__tests__/careplan.test.js +544 -0
  6. package/dist/__tests__/careplan.test.js.map +1 -0
  7. package/dist/__tests__/clinical-dates.test.d.ts +2 -0
  8. package/dist/__tests__/clinical-dates.test.d.ts.map +1 -0
  9. package/dist/__tests__/clinical-dates.test.js +341 -0
  10. package/dist/__tests__/clinical-dates.test.js.map +1 -0
  11. package/dist/__tests__/coding-utilities.test.d.ts +2 -0
  12. package/dist/__tests__/coding-utilities.test.d.ts.map +1 -0
  13. package/dist/__tests__/coding-utilities.test.js +482 -0
  14. package/dist/__tests__/coding-utilities.test.js.map +1 -0
  15. package/dist/__tests__/date-range-performance.test.d.ts +2 -0
  16. package/dist/__tests__/date-range-performance.test.d.ts.map +1 -0
  17. package/dist/__tests__/date-range-performance.test.js +218 -0
  18. package/dist/__tests__/date-range-performance.test.js.map +1 -0
  19. package/dist/__tests__/date-range-search.test.d.ts +2 -0
  20. package/dist/__tests__/date-range-search.test.d.ts.map +1 -0
  21. package/dist/__tests__/date-range-search.test.js +215 -0
  22. package/dist/__tests__/date-range-search.test.js.map +1 -0
  23. package/dist/__tests__/env-setup.d.ts +2 -0
  24. package/dist/__tests__/env-setup.d.ts.map +1 -0
  25. package/dist/__tests__/env-setup.js +37 -0
  26. package/dist/__tests__/env-setup.js.map +1 -0
  27. package/dist/__tests__/fhir-bundle-sdk-basic.test.d.ts +2 -0
  28. package/dist/__tests__/fhir-bundle-sdk-basic.test.d.ts.map +1 -0
  29. package/dist/__tests__/fhir-bundle-sdk-basic.test.js +19 -0
  30. package/dist/__tests__/fhir-bundle-sdk-basic.test.js.map +1 -0
  31. package/dist/__tests__/fhir-bundle-sdk.test.d.ts +2 -0
  32. package/dist/__tests__/fhir-bundle-sdk.test.d.ts.map +1 -0
  33. package/dist/__tests__/fhir-bundle-sdk.test.js +953 -0
  34. package/dist/__tests__/fhir-bundle-sdk.test.js.map +1 -0
  35. package/dist/__tests__/fixtures/fhir-bundles.d.ts +31 -0
  36. package/dist/__tests__/fixtures/fhir-bundles.d.ts.map +1 -0
  37. package/dist/__tests__/fixtures/fhir-bundles.js +487 -0
  38. package/dist/__tests__/fixtures/fhir-bundles.js.map +1 -0
  39. package/dist/__tests__/phase1-verification.test.d.ts +2 -0
  40. package/dist/__tests__/phase1-verification.test.d.ts.map +1 -0
  41. package/dist/__tests__/phase1-verification.test.js +141 -0
  42. package/dist/__tests__/phase1-verification.test.js.map +1 -0
  43. package/dist/__tests__/phase2-verification.test.d.ts +2 -0
  44. package/dist/__tests__/phase2-verification.test.d.ts.map +1 -0
  45. package/dist/__tests__/phase2-verification.test.js +234 -0
  46. package/dist/__tests__/phase2-verification.test.js.map +1 -0
  47. package/dist/__tests__/phase3-verification.test.d.ts +2 -0
  48. package/dist/__tests__/phase3-verification.test.d.ts.map +1 -0
  49. package/dist/__tests__/phase3-verification.test.js +121 -0
  50. package/dist/__tests__/phase3-verification.test.js.map +1 -0
  51. package/dist/__tests__/phase4-verification.test.d.ts +2 -0
  52. package/dist/__tests__/phase4-verification.test.d.ts.map +1 -0
  53. package/dist/__tests__/phase4-verification.test.js +168 -0
  54. package/dist/__tests__/phase4-verification.test.js.map +1 -0
  55. package/dist/__tests__/phase5-verification.test.d.ts +2 -0
  56. package/dist/__tests__/phase5-verification.test.d.ts.map +1 -0
  57. package/dist/__tests__/phase5-verification.test.js +397 -0
  58. package/dist/__tests__/phase5-verification.test.js.map +1 -0
  59. package/dist/__tests__/reverse-references.test.d.ts +2 -0
  60. package/dist/__tests__/reverse-references.test.d.ts.map +1 -0
  61. package/dist/__tests__/reverse-references.test.js +294 -0
  62. package/dist/__tests__/reverse-references.test.js.map +1 -0
  63. package/dist/__tests__/type-guards.test.d.ts +2 -0
  64. package/dist/__tests__/type-guards.test.d.ts.map +1 -0
  65. package/dist/__tests__/type-guards.test.js +163 -0
  66. package/dist/__tests__/type-guards.test.js.map +1 -0
  67. package/dist/clinical-dates.d.ts +26 -0
  68. package/dist/clinical-dates.d.ts.map +1 -0
  69. package/dist/clinical-dates.js +571 -0
  70. package/dist/clinical-dates.js.map +1 -0
  71. package/dist/fhir-bundle-sdk.d.ts +233 -0
  72. package/dist/fhir-bundle-sdk.d.ts.map +1 -0
  73. package/dist/fhir-bundle-sdk.js +545 -0
  74. package/dist/fhir-bundle-sdk.js.map +1 -0
  75. package/dist/index.d.ts +8 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +23 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/internal/bundle-operations.d.ts +14 -0
  80. package/dist/internal/bundle-operations.d.ts.map +1 -0
  81. package/dist/internal/bundle-operations.js +55 -0
  82. package/dist/internal/bundle-operations.js.map +1 -0
  83. package/dist/internal/coding-systems.d.ts +48 -0
  84. package/dist/internal/coding-systems.d.ts.map +1 -0
  85. package/dist/internal/coding-systems.js +55 -0
  86. package/dist/internal/coding-systems.js.map +1 -0
  87. package/dist/internal/coding-utilities.d.ts +27 -0
  88. package/dist/internal/coding-utilities.d.ts.map +1 -0
  89. package/dist/internal/coding-utilities.js +297 -0
  90. package/dist/internal/coding-utilities.js.map +1 -0
  91. package/dist/internal/date-extraction.d.ts +12 -0
  92. package/dist/internal/date-extraction.d.ts.map +1 -0
  93. package/dist/internal/date-extraction.js +629 -0
  94. package/dist/internal/date-extraction.js.map +1 -0
  95. package/dist/internal/graph-traversal.d.ts +13 -0
  96. package/dist/internal/graph-traversal.d.ts.map +1 -0
  97. package/dist/internal/graph-traversal.js +89 -0
  98. package/dist/internal/graph-traversal.js.map +1 -0
  99. package/dist/internal/indexing.d.ts +17 -0
  100. package/dist/internal/indexing.d.ts.map +1 -0
  101. package/dist/internal/indexing.js +129 -0
  102. package/dist/internal/indexing.js.map +1 -0
  103. package/dist/internal/llm-context.d.ts +40 -0
  104. package/dist/internal/llm-context.d.ts.map +1 -0
  105. package/dist/internal/llm-context.js +214 -0
  106. package/dist/internal/llm-context.js.map +1 -0
  107. package/dist/internal/reference-resolution.d.ts +29 -0
  108. package/dist/internal/reference-resolution.d.ts.map +1 -0
  109. package/dist/internal/reference-resolution.js +338 -0
  110. package/dist/internal/reference-resolution.js.map +1 -0
  111. package/dist/internal/reference-utils.d.ts +26 -0
  112. package/dist/internal/reference-utils.d.ts.map +1 -0
  113. package/dist/internal/reference-utils.js +89 -0
  114. package/dist/internal/reference-utils.js.map +1 -0
  115. package/dist/internal/transparent-proxy.d.ts +12 -0
  116. package/dist/internal/transparent-proxy.d.ts.map +1 -0
  117. package/dist/internal/transparent-proxy.js +81 -0
  118. package/dist/internal/transparent-proxy.js.map +1 -0
  119. package/dist/internal/validation.d.ts +16 -0
  120. package/dist/internal/validation.d.ts.map +1 -0
  121. package/dist/internal/validation.js +45 -0
  122. package/dist/internal/validation.js.map +1 -0
  123. package/dist/type-guards.d.ts +212 -0
  124. package/dist/type-guards.d.ts.map +1 -0
  125. package/dist/type-guards.js +375 -0
  126. package/dist/type-guards.js.map +1 -0
  127. package/dist/types/coding-fields.d.ts +311 -0
  128. package/dist/types/coding-fields.d.ts.map +1 -0
  129. package/dist/types/coding-fields.js +3 -0
  130. package/dist/types/coding-fields.js.map +1 -0
  131. package/dist/types/sdk-types.d.ts +107 -0
  132. package/dist/types/sdk-types.d.ts.map +1 -0
  133. package/dist/types/sdk-types.js +17 -0
  134. package/dist/types/sdk-types.js.map +1 -0
  135. package/dist/types/smart-resources.d.ts +470 -0
  136. package/dist/types/smart-resources.d.ts.map +1 -0
  137. package/dist/types/smart-resources.js +249 -0
  138. package/dist/types/smart-resources.js.map +1 -0
  139. package/dist/utils/interval-tree/index.d.ts +87 -0
  140. package/dist/utils/interval-tree/index.d.ts.map +1 -0
  141. package/dist/utils/interval-tree/index.js +774 -0
  142. package/dist/utils/interval-tree/index.js.map +1 -0
  143. package/dist/utils/interval-tree/shallowequal/arrays.d.ts +3 -0
  144. package/dist/utils/interval-tree/shallowequal/arrays.d.ts.map +1 -0
  145. package/dist/utils/interval-tree/shallowequal/arrays.js +25 -0
  146. package/dist/utils/interval-tree/shallowequal/arrays.js.map +1 -0
  147. package/dist/utils/interval-tree/shallowequal/index.d.ts +6 -0
  148. package/dist/utils/interval-tree/shallowequal/index.d.ts.map +1 -0
  149. package/dist/utils/interval-tree/shallowequal/index.js +28 -0
  150. package/dist/utils/interval-tree/shallowequal/index.js.map +1 -0
  151. package/dist/utils/interval-tree/shallowequal/objects.d.ts +3 -0
  152. package/dist/utils/interval-tree/shallowequal/objects.d.ts.map +1 -0
  153. package/dist/utils/interval-tree/shallowequal/objects.js +28 -0
  154. package/dist/utils/interval-tree/shallowequal/objects.js.map +1 -0
  155. package/package.json +70 -0
@@ -0,0 +1,482 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
3
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ const index_1 = require("../index");
6
+ /**
7
+ * Tests for coding system utilities
8
+ * Note: Runtime proxies wrap CodeableConcept and Coding properties.
9
+ * Type assertions (as any) are used where TypeScript doesn't infer the wrapper.
10
+ */
11
+ describe("Coding System Utilities", () => {
12
+ describe("SmartCoding - Individual Coding Methods", () => {
13
+ const loincCoding = {
14
+ system: "http://loinc.org",
15
+ code: "8867-4",
16
+ display: "Heart rate",
17
+ };
18
+ const snomedCoding = {
19
+ system: "http://snomed.info/sct",
20
+ code: "73211009",
21
+ display: "Diabetes mellitus",
22
+ };
23
+ const bundle = {
24
+ resourceType: "Bundle",
25
+ type: "collection",
26
+ entry: [
27
+ {
28
+ resource: {
29
+ resourceType: "Observation",
30
+ id: "obs1",
31
+ status: "final",
32
+ code: {
33
+ coding: [loincCoding, snomedCoding],
34
+ },
35
+ },
36
+ },
37
+ ],
38
+ };
39
+ let sdk;
40
+ beforeAll(async () => {
41
+ sdk = await index_1.FhirBundleSdk.create(bundle);
42
+ });
43
+ describe("System checking methods", () => {
44
+ it("should correctly identify LOINC coding", () => {
45
+ const obs = sdk.getObservationById("obs1");
46
+ expect(obs).toBeDefined();
47
+ expect(obs?.code?.coding).toBeDefined();
48
+ const coding = obs.code.coding[0];
49
+ expect(coding).toBeDefined();
50
+ expect(coding.isLoinc()).toBe(true);
51
+ expect(coding.isIcd10()).toBe(false);
52
+ expect(coding.isSnomed()).toBe(false);
53
+ expect(coding.isRxNorm()).toBe(false);
54
+ expect(coding.isNdc()).toBe(false);
55
+ });
56
+ it("should correctly identify SNOMED coding", () => {
57
+ const obs = sdk.getObservationById("obs1");
58
+ expect(obs).toBeDefined();
59
+ expect(obs?.code?.coding).toBeDefined();
60
+ const coding = obs.code.coding[1];
61
+ expect(coding).toBeDefined();
62
+ expect(coding.isSnomed()).toBe(true);
63
+ expect(coding.isLoinc()).toBe(false);
64
+ });
65
+ });
66
+ describe("Code matching methods", () => {
67
+ it("should match specific code", () => {
68
+ const obs = sdk.getObservationById("obs1");
69
+ expect(obs).toBeDefined();
70
+ expect(obs?.code?.coding).toBeDefined();
71
+ const coding = obs.code.coding[0];
72
+ expect(coding).toBeDefined();
73
+ expect(coding.matchesCode("8867-4")).toBe(true);
74
+ expect(coding.matchesCode("wrong-code")).toBe(false);
75
+ });
76
+ it("should match codes from array", () => {
77
+ const obs = sdk.getObservationById("obs1");
78
+ expect(obs).toBeDefined();
79
+ expect(obs?.code?.coding).toBeDefined();
80
+ const coding = obs.code.coding[0];
81
+ expect(coding).toBeDefined();
82
+ expect(coding.matchesCodes(["8867-4", "other-code"])).toBe(true);
83
+ expect(coding.matchesCodes(["wrong-1", "wrong-2"])).toBe(false);
84
+ });
85
+ });
86
+ });
87
+ describe("SmartCodeableConcept - CodeableConcept Methods", () => {
88
+ const bundle = {
89
+ resourceType: "Bundle",
90
+ type: "collection",
91
+ entry: [
92
+ {
93
+ resource: {
94
+ resourceType: "Condition",
95
+ id: "cond1",
96
+ subject: { reference: "Patient/1" },
97
+ code: {
98
+ coding: [
99
+ {
100
+ system: "http://hl7.org/fhir/sid/icd-10-cm",
101
+ code: "E11.9",
102
+ display: "Type 2 diabetes mellitus",
103
+ },
104
+ {
105
+ system: "http://snomed.info/sct",
106
+ code: "73211009",
107
+ display: "Diabetes mellitus",
108
+ },
109
+ ],
110
+ text: "Type 2 Diabetes",
111
+ },
112
+ },
113
+ },
114
+ {
115
+ resource: {
116
+ resourceType: "Observation",
117
+ id: "obs1",
118
+ status: "final",
119
+ code: {
120
+ coding: [
121
+ {
122
+ system: "http://loinc.org",
123
+ code: "8867-4",
124
+ display: "Heart rate",
125
+ },
126
+ {
127
+ system: "http://loinc.org",
128
+ code: "8310-5",
129
+ display: "Body temperature",
130
+ },
131
+ ],
132
+ },
133
+ },
134
+ },
135
+ {
136
+ resource: {
137
+ resourceType: "Observation",
138
+ id: "obs2",
139
+ status: "final",
140
+ code: {
141
+ text: "No coding array",
142
+ },
143
+ },
144
+ },
145
+ ],
146
+ };
147
+ let sdk;
148
+ beforeAll(async () => {
149
+ sdk = await index_1.FhirBundleSdk.create(bundle);
150
+ });
151
+ describe("LOINC methods", () => {
152
+ it("should get first LOINC coding", () => {
153
+ const obs = sdk.getObservationById("obs1");
154
+ expect(obs?.code).toBeDefined();
155
+ const loinc = obs.code.getLoinc();
156
+ expect(loinc).toBeDefined();
157
+ expect(loinc.code).toBe("8867-4");
158
+ });
159
+ it("should get all LOINC codings", () => {
160
+ const obs = sdk.getObservationById("obs1");
161
+ expect(obs?.code).toBeDefined();
162
+ const loincCodings = obs.code.getLoincCodings();
163
+ expect(loincCodings).toHaveLength(2);
164
+ expect(loincCodings[0].code).toBe("8867-4");
165
+ expect(loincCodings[1].code).toBe("8310-5");
166
+ });
167
+ it("should get first LOINC code value", () => {
168
+ const obs = sdk.getObservationById("obs1");
169
+ expect(obs?.code).toBeDefined();
170
+ const code = obs.code.getLoincCode();
171
+ expect(code).toBe("8867-4");
172
+ });
173
+ it("should get all LOINC code values", () => {
174
+ const obs = sdk.getObservationById("obs1");
175
+ expect(obs?.code).toBeDefined();
176
+ const codes = obs.code.getLoincCodes();
177
+ expect(codes).toEqual(["8867-4", "8310-5"]);
178
+ });
179
+ it("should check if has any LOINC", () => {
180
+ const obs = sdk.getObservationById("obs1");
181
+ expect(obs?.code).toBeDefined();
182
+ expect(obs.code.hasLoinc()).toBe(true);
183
+ const cond = sdk.getConditionById("cond1");
184
+ expect(cond?.code).toBeDefined();
185
+ expect(cond.code.hasLoinc()).toBe(false);
186
+ });
187
+ it("should check if has specific LOINC code", () => {
188
+ const obs = sdk.getObservationById("obs1");
189
+ expect(obs?.code).toBeDefined();
190
+ expect(obs.code.hasLoincCode("8867-4")).toBe(true);
191
+ expect(obs.code.hasLoincCode("wrong-code")).toBe(false);
192
+ });
193
+ it("should check if has some LOINC codes", () => {
194
+ const obs = sdk.getObservationById("obs1");
195
+ expect(obs?.code).toBeDefined();
196
+ expect(obs.code.hasSomeLoinc(["8867-4", "other"])).toBe(true);
197
+ expect(obs.code.hasSomeLoinc(["8310-5", "other"])).toBe(true);
198
+ expect(obs.code.hasSomeLoinc(["wrong-1", "wrong-2"])).toBe(false);
199
+ });
200
+ it("should find LOINC coding with predicate", () => {
201
+ const obs = sdk.getObservationById("obs1");
202
+ expect(obs?.code).toBeDefined();
203
+ const found = obs.code.findLoincCoding((code) => code === "8310-5");
204
+ expect(found).toBeDefined();
205
+ expect(found.code).toBe("8310-5");
206
+ const notFound = obs.code.findLoincCoding((code) => code === "wrong");
207
+ expect(notFound).toBeUndefined();
208
+ });
209
+ });
210
+ describe("ICD-10 methods", () => {
211
+ it("should get first ICD-10 coding", () => {
212
+ const cond = sdk.getConditionById("cond1");
213
+ expect(cond?.code).toBeDefined();
214
+ const icd10 = cond.code.getIcd10();
215
+ expect(icd10).toBeDefined();
216
+ expect(icd10.code).toBe("E11.9");
217
+ });
218
+ it("should get all ICD-10 codings", () => {
219
+ const cond = sdk.getConditionById("cond1");
220
+ expect(cond?.code).toBeDefined();
221
+ const icd10Codings = cond.code.getIcd10Codings();
222
+ expect(icd10Codings).toHaveLength(1);
223
+ expect(icd10Codings[0].code).toBe("E11.9");
224
+ });
225
+ it("should check if has ICD-10", () => {
226
+ const cond = sdk.getConditionById("cond1");
227
+ expect(cond?.code).toBeDefined();
228
+ expect(cond.code.hasIcd10()).toBe(true);
229
+ const obs = sdk.getObservationById("obs1");
230
+ expect(obs?.code).toBeDefined();
231
+ expect(obs.code.hasIcd10()).toBe(false);
232
+ });
233
+ it("should check if has specific ICD-10 code", () => {
234
+ const cond = sdk.getConditionById("cond1");
235
+ expect(cond?.code).toBeDefined();
236
+ expect(cond.code.hasIcd10Code("E11.9")).toBe(true);
237
+ expect(cond.code.hasIcd10Code("wrong")).toBe(false);
238
+ });
239
+ it("should check if has some ICD-10 codes", () => {
240
+ const cond = sdk.getConditionById("cond1");
241
+ expect(cond?.code).toBeDefined();
242
+ expect(cond.code.hasSomeIcd10(["E11.9", "other"])).toBe(true);
243
+ expect(cond.code.hasSomeIcd10(["wrong-1", "wrong-2"])).toBe(false);
244
+ });
245
+ });
246
+ describe("SNOMED methods", () => {
247
+ it("should get first SNOMED coding", () => {
248
+ const cond = sdk.getConditionById("cond1");
249
+ expect(cond?.code).toBeDefined();
250
+ const snomed = cond.code.getSnomed();
251
+ expect(snomed).toBeDefined();
252
+ expect(snomed.code).toBe("73211009");
253
+ });
254
+ it("should check if has SNOMED", () => {
255
+ const cond = sdk.getConditionById("cond1");
256
+ expect(cond?.code).toBeDefined();
257
+ expect(cond.code.hasSnomed()).toBe(true);
258
+ });
259
+ it("should check if has specific SNOMED code", () => {
260
+ const cond = sdk.getConditionById("cond1");
261
+ expect(cond?.code).toBeDefined();
262
+ expect(cond.code.hasSnomedCode("73211009")).toBe(true);
263
+ expect(cond.code.hasSnomedCode("wrong")).toBe(false);
264
+ });
265
+ });
266
+ describe("Edge cases", () => {
267
+ it("should handle undefined coding array", () => {
268
+ const obs = sdk.getObservationById("obs2");
269
+ expect(obs?.code).toBeDefined();
270
+ expect(obs.code.getLoinc()).toBeUndefined();
271
+ expect(obs.code.getLoincCodings()).toEqual([]);
272
+ expect(obs.code.getLoincCode()).toBeUndefined();
273
+ expect(obs.code.getLoincCodes()).toEqual([]);
274
+ expect(obs.code.hasLoinc()).toBe(false);
275
+ expect(obs.code.hasLoincCode("any")).toBe(false);
276
+ expect(obs.code.hasSomeLoinc(["any"])).toBe(false);
277
+ });
278
+ it("should handle empty coding array", () => {
279
+ const emptyBundle = {
280
+ resourceType: "Bundle",
281
+ type: "collection",
282
+ entry: [
283
+ {
284
+ resource: {
285
+ resourceType: "Observation",
286
+ id: "obs-empty",
287
+ status: "final",
288
+ code: {
289
+ coding: [],
290
+ text: "Empty codings",
291
+ },
292
+ },
293
+ },
294
+ ],
295
+ };
296
+ const emptySdk = index_1.FhirBundleSdk.createSync(emptyBundle);
297
+ const obs = emptySdk.getObservationById("obs-empty");
298
+ expect(obs?.code).toBeDefined();
299
+ expect(obs.code.hasLoinc()).toBe(false);
300
+ });
301
+ it("should not mistake Identifier for Coding", () => {
302
+ const identifierBundle = {
303
+ resourceType: "Bundle",
304
+ type: "collection",
305
+ entry: [
306
+ {
307
+ resource: {
308
+ resourceType: "Patient",
309
+ id: "patient-with-identifier",
310
+ identifier: [
311
+ {
312
+ use: "official",
313
+ system: "http://hospital.example.org",
314
+ value: "12345",
315
+ },
316
+ ],
317
+ },
318
+ },
319
+ ],
320
+ };
321
+ const identifierSdk = index_1.FhirBundleSdk.createSync(identifierBundle);
322
+ const patient = identifierSdk.getPatientById("patient-with-identifier");
323
+ expect(patient?.identifier).toBeDefined();
324
+ // Identifier should NOT have Coding methods
325
+ const identifier = patient.identifier[0];
326
+ expect(typeof identifier.isLoinc).toBe("undefined");
327
+ expect(typeof identifier.matchesCode).toBe("undefined");
328
+ // Identifier should keep its original properties
329
+ expect(identifier.system).toBe("http://hospital.example.org");
330
+ expect(identifier.value).toBe("12345");
331
+ expect(identifier.use).toBe("official");
332
+ });
333
+ });
334
+ });
335
+ describe("Deep nesting - Transparent Proxy", () => {
336
+ const bundle = {
337
+ resourceType: "Bundle",
338
+ type: "collection",
339
+ entry: [
340
+ {
341
+ resource: {
342
+ resourceType: "Observation",
343
+ id: "obs1",
344
+ status: "final",
345
+ code: {
346
+ coding: [
347
+ {
348
+ system: "http://loinc.org",
349
+ code: "8867-4",
350
+ display: "Heart rate",
351
+ },
352
+ ],
353
+ },
354
+ component: [
355
+ {
356
+ code: {
357
+ coding: [
358
+ {
359
+ system: "http://loinc.org",
360
+ code: "8310-5",
361
+ display: "Body temperature",
362
+ },
363
+ ],
364
+ },
365
+ },
366
+ ],
367
+ },
368
+ },
369
+ ],
370
+ };
371
+ let sdk;
372
+ beforeAll(async () => {
373
+ sdk = await index_1.FhirBundleSdk.create(bundle);
374
+ });
375
+ it("should wrap CodeableConcept in nested component arrays", () => {
376
+ const obs = sdk.getObservationById("obs1");
377
+ expect(obs?.component).toBeDefined();
378
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
379
+ const component = obs.component[0];
380
+ expect(component?.code).toBeDefined();
381
+ // Should have smart methods on nested CodeableConcept
382
+ expect(component.code.hasLoinc()).toBe(true);
383
+ expect(component.code.hasLoincCode("8310-5")).toBe(true);
384
+ });
385
+ it("should wrap Coding in deeply nested structures", () => {
386
+ const obs = sdk.getObservationById("obs1");
387
+ expect(obs?.component).toBeDefined();
388
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
389
+ const component = obs.component[0];
390
+ expect(component?.code?.coding).toBeDefined();
391
+ const componentCoding = component.code.coding[0];
392
+ expect(componentCoding).toBeDefined();
393
+ // Should have smart methods on nested Coding
394
+ expect(componentCoding.isLoinc()).toBe(true);
395
+ expect(componentCoding.matchesCode("8310-5")).toBe(true);
396
+ });
397
+ });
398
+ describe("Integration - Filtering by coding", () => {
399
+ const bundle = {
400
+ resourceType: "Bundle",
401
+ type: "collection",
402
+ entry: [
403
+ {
404
+ resource: {
405
+ resourceType: "Observation",
406
+ id: "obs1",
407
+ status: "final",
408
+ code: {
409
+ coding: [
410
+ {
411
+ system: "http://loinc.org",
412
+ code: "8867-4",
413
+ display: "Heart rate",
414
+ },
415
+ ],
416
+ },
417
+ },
418
+ },
419
+ {
420
+ resource: {
421
+ resourceType: "Observation",
422
+ id: "obs2",
423
+ status: "final",
424
+ code: {
425
+ coding: [
426
+ {
427
+ system: "http://loinc.org",
428
+ code: "8310-5",
429
+ display: "Body temperature",
430
+ },
431
+ ],
432
+ },
433
+ },
434
+ },
435
+ {
436
+ resource: {
437
+ resourceType: "Observation",
438
+ id: "obs3",
439
+ status: "final",
440
+ code: {
441
+ coding: [
442
+ {
443
+ system: "http://snomed.info/sct",
444
+ code: "271649006",
445
+ display: "Systolic blood pressure",
446
+ },
447
+ ],
448
+ },
449
+ },
450
+ },
451
+ ],
452
+ };
453
+ let sdk;
454
+ beforeAll(async () => {
455
+ sdk = await index_1.FhirBundleSdk.create(bundle);
456
+ });
457
+ it("should filter observations by LOINC codes", () => {
458
+ const vitals = sdk
459
+ .getObservations()
460
+ .filter(obs => obs.code?.hasSomeLoinc(["8867-4", "8310-5"]) ?? false);
461
+ expect(vitals).toHaveLength(2);
462
+ expect(vitals[0]?.id).toBe("obs1");
463
+ expect(vitals[1]?.id).toBe("obs2");
464
+ });
465
+ it("should filter observations by specific coding system", () => {
466
+ const loincObs = sdk.getObservations().filter(obs => obs.code?.hasLoinc() ?? false);
467
+ expect(loincObs).toHaveLength(2);
468
+ const snomedObs = sdk.getObservations().filter(obs => obs.code?.hasSnomed() ?? false);
469
+ expect(snomedObs).toHaveLength(1);
470
+ expect(snomedObs[0]?.id).toBe("obs3");
471
+ });
472
+ it("should filter and map to extract codes", () => {
473
+ const loincCodes = sdk
474
+ .getObservations()
475
+ .filter(obs => obs.code?.hasLoinc() ?? false)
476
+ .map(obs => obs.code.getLoincCode())
477
+ .filter((code) => code !== undefined);
478
+ expect(loincCodes).toEqual(["8867-4", "8310-5"]);
479
+ });
480
+ });
481
+ });
482
+ //# sourceMappingURL=coding-utilities.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-utilities.test.js","sourceRoot":"","sources":["../../src/__tests__/coding-utilities.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=date-range-performance.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-performance.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/date-range-performance.test.ts"],"names":[],"mappings":""}