@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,571 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getClinicalDateRange = void 0;
4
+ /**
5
+ * Extract the primary clinical date range from a FHIR resource.
6
+ * Returns undefined if the resource has no clinical dates.
7
+ *
8
+ * The returned dates can be passed directly to searchByDateRange():
9
+ * @example
10
+ * const dateRange = getClinicalDateRange(myObservation);
11
+ * if (dateRange) {
12
+ * bundle.searchByDateRange({
13
+ * dateFrom: dateRange.startDate,
14
+ * dateTo: dateRange.endDate
15
+ * });
16
+ * }
17
+ */
18
+ function getClinicalDateRange(resource) {
19
+ switch (resource.resourceType) {
20
+ case "AllergyIntolerance": {
21
+ const r = resource;
22
+ if (r.onsetDateTime) {
23
+ return { startDate: r.onsetDateTime };
24
+ }
25
+ if (r.onsetPeriod?.start || r.onsetPeriod?.end) {
26
+ const startDate = r.onsetPeriod.start ?? r.onsetPeriod.end ?? "";
27
+ return r.onsetPeriod.end ? { startDate, endDate: r.onsetPeriod.end } : { startDate };
28
+ }
29
+ if (r.lastOccurrence) {
30
+ return { startDate: r.lastOccurrence };
31
+ }
32
+ if (r.recordedDate) {
33
+ return { startDate: r.recordedDate };
34
+ }
35
+ break;
36
+ }
37
+ case "Condition": {
38
+ const r = resource;
39
+ if (r.onsetDateTime) {
40
+ return { startDate: r.onsetDateTime };
41
+ }
42
+ if (r.onsetPeriod?.start || r.onsetPeriod?.end) {
43
+ const startDate = r.onsetPeriod.start ?? r.onsetPeriod.end ?? "";
44
+ return r.onsetPeriod.end ? { startDate, endDate: r.onsetPeriod.end } : { startDate };
45
+ }
46
+ if (r.abatementDateTime) {
47
+ return { startDate: r.abatementDateTime };
48
+ }
49
+ if (r.abatementPeriod?.start || r.abatementPeriod?.end) {
50
+ const startDate = r.abatementPeriod.start ?? r.abatementPeriod.end ?? "";
51
+ return r.abatementPeriod.end
52
+ ? { startDate, endDate: r.abatementPeriod.end }
53
+ : { startDate };
54
+ }
55
+ if (r.recordedDate) {
56
+ return { startDate: r.recordedDate };
57
+ }
58
+ break;
59
+ }
60
+ case "Observation": {
61
+ const r = resource;
62
+ if (r.effectiveDateTime) {
63
+ return { startDate: r.effectiveDateTime };
64
+ }
65
+ if (r.effectivePeriod?.start || r.effectivePeriod?.end) {
66
+ const startDate = r.effectivePeriod.start ?? r.effectivePeriod.end ?? "";
67
+ return r.effectivePeriod.end
68
+ ? { startDate, endDate: r.effectivePeriod.end }
69
+ : { startDate };
70
+ }
71
+ if (r.effectiveInstant) {
72
+ return { startDate: r.effectiveInstant };
73
+ }
74
+ if (r.issued) {
75
+ return { startDate: r.issued };
76
+ }
77
+ break;
78
+ }
79
+ case "Encounter": {
80
+ const r = resource;
81
+ if (r.period?.start || r.period?.end) {
82
+ const startDate = r.period.start ?? r.period.end ?? "";
83
+ return r.period.end ? { startDate, endDate: r.period.end } : { startDate };
84
+ }
85
+ break;
86
+ }
87
+ case "Procedure": {
88
+ const r = resource;
89
+ if (r.performedDateTime) {
90
+ return { startDate: r.performedDateTime };
91
+ }
92
+ if (r.performedPeriod?.start || r.performedPeriod?.end) {
93
+ const startDate = r.performedPeriod.start ?? r.performedPeriod.end ?? "";
94
+ return r.performedPeriod.end
95
+ ? { startDate, endDate: r.performedPeriod.end }
96
+ : { startDate };
97
+ }
98
+ break;
99
+ }
100
+ case "Immunization": {
101
+ const r = resource;
102
+ if (r.occurrenceDateTime) {
103
+ return { startDate: r.occurrenceDateTime };
104
+ }
105
+ if (r.recorded) {
106
+ return { startDate: r.recorded };
107
+ }
108
+ break;
109
+ }
110
+ case "DiagnosticReport": {
111
+ const r = resource;
112
+ if (r.effectiveDateTime) {
113
+ return { startDate: r.effectiveDateTime };
114
+ }
115
+ if (r.effectivePeriod?.start || r.effectivePeriod?.end) {
116
+ const startDate = r.effectivePeriod.start ?? r.effectivePeriod.end ?? "";
117
+ return r.effectivePeriod.end
118
+ ? { startDate, endDate: r.effectivePeriod.end }
119
+ : { startDate };
120
+ }
121
+ if (r.issued) {
122
+ return { startDate: r.issued };
123
+ }
124
+ break;
125
+ }
126
+ case "MedicationRequest": {
127
+ const r = resource;
128
+ if (r.authoredOn) {
129
+ return { startDate: r.authoredOn };
130
+ }
131
+ break;
132
+ }
133
+ case "MedicationAdministration": {
134
+ const r = resource;
135
+ if (r.effectiveDateTime) {
136
+ return { startDate: r.effectiveDateTime };
137
+ }
138
+ if (r.effectivePeriod?.start || r.effectivePeriod?.end) {
139
+ const startDate = r.effectivePeriod.start ?? r.effectivePeriod.end ?? "";
140
+ return r.effectivePeriod.end
141
+ ? { startDate, endDate: r.effectivePeriod.end }
142
+ : { startDate };
143
+ }
144
+ break;
145
+ }
146
+ case "MedicationStatement": {
147
+ const r = resource;
148
+ if (r.effectiveDateTime) {
149
+ return { startDate: r.effectiveDateTime };
150
+ }
151
+ if (r.effectivePeriod?.start || r.effectivePeriod?.end) {
152
+ const startDate = r.effectivePeriod.start ?? r.effectivePeriod.end ?? "";
153
+ return r.effectivePeriod.end
154
+ ? { startDate, endDate: r.effectivePeriod.end }
155
+ : { startDate };
156
+ }
157
+ break;
158
+ }
159
+ case "MedicationDispense": {
160
+ const r = resource;
161
+ if (r.whenHandedOver) {
162
+ return { startDate: r.whenHandedOver };
163
+ }
164
+ if (r.whenPrepared) {
165
+ return { startDate: r.whenPrepared };
166
+ }
167
+ break;
168
+ }
169
+ case "DocumentReference": {
170
+ const r = resource;
171
+ if (r.date) {
172
+ return { startDate: r.date };
173
+ }
174
+ if (r.context?.period?.start || r.context?.period?.end) {
175
+ const startDate = r.context.period.start ?? r.context.period.end ?? "";
176
+ return r.context.period.end ? { startDate, endDate: r.context.period.end } : { startDate };
177
+ }
178
+ break;
179
+ }
180
+ case "Composition": {
181
+ const r = resource;
182
+ if (r.date) {
183
+ return { startDate: r.date };
184
+ }
185
+ break;
186
+ }
187
+ case "Coverage": {
188
+ const r = resource;
189
+ if (r.period?.start || r.period?.end) {
190
+ const startDate = r.period.start ?? r.period.end ?? "";
191
+ return r.period.end ? { startDate, endDate: r.period.end } : { startDate };
192
+ }
193
+ break;
194
+ }
195
+ case "Appointment": {
196
+ const r = resource;
197
+ if (r.start) {
198
+ return r.end ? { startDate: r.start, endDate: r.end } : { startDate: r.start };
199
+ }
200
+ if (r.created) {
201
+ return { startDate: r.created };
202
+ }
203
+ break;
204
+ }
205
+ case "ServiceRequest": {
206
+ const r = resource;
207
+ if (r.occurrenceDateTime) {
208
+ return { startDate: r.occurrenceDateTime };
209
+ }
210
+ if (r.occurrencePeriod?.start || r.occurrencePeriod?.end) {
211
+ const startDate = r.occurrencePeriod.start ?? r.occurrencePeriod.end ?? "";
212
+ return r.occurrencePeriod.end
213
+ ? { startDate, endDate: r.occurrencePeriod.end }
214
+ : { startDate };
215
+ }
216
+ if (r.authoredOn) {
217
+ return { startDate: r.authoredOn };
218
+ }
219
+ break;
220
+ }
221
+ case "Specimen": {
222
+ const r = resource;
223
+ if (r.collection?.collectedDateTime) {
224
+ return { startDate: r.collection.collectedDateTime };
225
+ }
226
+ if (r.collection?.collectedPeriod?.start || r.collection?.collectedPeriod?.end) {
227
+ const startDate = r.collection.collectedPeriod.start ?? r.collection.collectedPeriod.end ?? "";
228
+ return r.collection.collectedPeriod.end
229
+ ? { startDate, endDate: r.collection.collectedPeriod.end }
230
+ : { startDate };
231
+ }
232
+ if (r.receivedTime) {
233
+ return { startDate: r.receivedTime };
234
+ }
235
+ break;
236
+ }
237
+ case "Communication": {
238
+ const r = resource;
239
+ if (r.sent) {
240
+ return { startDate: r.sent };
241
+ }
242
+ if (r.received) {
243
+ return { startDate: r.received };
244
+ }
245
+ break;
246
+ }
247
+ case "CommunicationRequest": {
248
+ const r = resource;
249
+ if (r.occurrenceDateTime) {
250
+ return { startDate: r.occurrenceDateTime };
251
+ }
252
+ if (r.occurrencePeriod?.start || r.occurrencePeriod?.end) {
253
+ const startDate = r.occurrencePeriod.start ?? r.occurrencePeriod.end ?? "";
254
+ return r.occurrencePeriod.end
255
+ ? { startDate, endDate: r.occurrencePeriod.end }
256
+ : { startDate };
257
+ }
258
+ if (r.authoredOn) {
259
+ return { startDate: r.authoredOn };
260
+ }
261
+ break;
262
+ }
263
+ case "Task": {
264
+ const r = resource;
265
+ if (r.executionPeriod?.start || r.executionPeriod?.end) {
266
+ const startDate = r.executionPeriod.start ?? r.executionPeriod.end ?? "";
267
+ return r.executionPeriod.end
268
+ ? { startDate, endDate: r.executionPeriod.end }
269
+ : { startDate };
270
+ }
271
+ if (r.authoredOn) {
272
+ return { startDate: r.authoredOn };
273
+ }
274
+ break;
275
+ }
276
+ case "Media": {
277
+ const r = resource;
278
+ if (r.createdDateTime) {
279
+ return { startDate: r.createdDateTime };
280
+ }
281
+ if (r.createdPeriod?.start || r.createdPeriod?.end) {
282
+ const startDate = r.createdPeriod.start ?? r.createdPeriod.end ?? "";
283
+ return r.createdPeriod.end ? { startDate, endDate: r.createdPeriod.end } : { startDate };
284
+ }
285
+ if (r.issued) {
286
+ return { startDate: r.issued };
287
+ }
288
+ break;
289
+ }
290
+ case "ClinicalImpression": {
291
+ const r = resource;
292
+ if (r.effectiveDateTime) {
293
+ return { startDate: r.effectiveDateTime };
294
+ }
295
+ if (r.effectivePeriod?.start || r.effectivePeriod?.end) {
296
+ const startDate = r.effectivePeriod.start ?? r.effectivePeriod.end ?? "";
297
+ return r.effectivePeriod.end
298
+ ? { startDate, endDate: r.effectivePeriod.end }
299
+ : { startDate };
300
+ }
301
+ if (r.date) {
302
+ return { startDate: r.date };
303
+ }
304
+ break;
305
+ }
306
+ case "DeviceRequest": {
307
+ const r = resource;
308
+ if (r.occurrenceDateTime) {
309
+ return { startDate: r.occurrenceDateTime };
310
+ }
311
+ if (r.occurrencePeriod?.start || r.occurrencePeriod?.end) {
312
+ const startDate = r.occurrencePeriod.start ?? r.occurrencePeriod.end ?? "";
313
+ return r.occurrencePeriod.end
314
+ ? { startDate, endDate: r.occurrencePeriod.end }
315
+ : { startDate };
316
+ }
317
+ if (r.authoredOn) {
318
+ return { startDate: r.authoredOn };
319
+ }
320
+ break;
321
+ }
322
+ case "DeviceUseStatement": {
323
+ const r = resource;
324
+ if (r.timingTiming?.event && r.timingTiming.event.length > 0 && r.timingTiming.event[0]) {
325
+ return { startDate: r.timingTiming.event[0] };
326
+ }
327
+ if (r.timingPeriod?.start || r.timingPeriod?.end) {
328
+ const startDate = r.timingPeriod.start ?? r.timingPeriod.end ?? "";
329
+ return r.timingPeriod.end ? { startDate, endDate: r.timingPeriod.end } : { startDate };
330
+ }
331
+ if (r.timingDateTime) {
332
+ return { startDate: r.timingDateTime };
333
+ }
334
+ if (r.recordedOn) {
335
+ return { startDate: r.recordedOn };
336
+ }
337
+ break;
338
+ }
339
+ case "RiskAssessment": {
340
+ const r = resource;
341
+ if (r.occurrenceDateTime) {
342
+ return { startDate: r.occurrenceDateTime };
343
+ }
344
+ if (r.occurrencePeriod?.start || r.occurrencePeriod?.end) {
345
+ const startDate = r.occurrencePeriod.start ?? r.occurrencePeriod.end ?? "";
346
+ return r.occurrencePeriod.end
347
+ ? { startDate, endDate: r.occurrencePeriod.end }
348
+ : { startDate };
349
+ }
350
+ break;
351
+ }
352
+ case "Provenance": {
353
+ const r = resource;
354
+ if (r.occurredDateTime) {
355
+ return { startDate: r.occurredDateTime };
356
+ }
357
+ if (r.occurredPeriod?.start || r.occurredPeriod?.end) {
358
+ const startDate = r.occurredPeriod.start ?? r.occurredPeriod.end ?? "";
359
+ return r.occurredPeriod.end ? { startDate, endDate: r.occurredPeriod.end } : { startDate };
360
+ }
361
+ if (r.recorded) {
362
+ return { startDate: r.recorded };
363
+ }
364
+ break;
365
+ }
366
+ case "AdverseEvent": {
367
+ const r = resource;
368
+ if (r.date) {
369
+ return { startDate: r.date };
370
+ }
371
+ if (r.recordedDate) {
372
+ return { startDate: r.recordedDate };
373
+ }
374
+ break;
375
+ }
376
+ case "Consent": {
377
+ const r = resource;
378
+ if (r.dateTime) {
379
+ return { startDate: r.dateTime };
380
+ }
381
+ break;
382
+ }
383
+ case "CarePlan": {
384
+ const r = resource;
385
+ if (r.period?.start || r.period?.end) {
386
+ const startDate = r.period.start ?? r.period.end ?? "";
387
+ return r.period.end ? { startDate, endDate: r.period.end } : { startDate };
388
+ }
389
+ if (r.created) {
390
+ return { startDate: r.created };
391
+ }
392
+ break;
393
+ }
394
+ case "CareTeam": {
395
+ const r = resource;
396
+ if (r.period?.start || r.period?.end) {
397
+ const startDate = r.period.start ?? r.period.end ?? "";
398
+ return r.period.end ? { startDate, endDate: r.period.end } : { startDate };
399
+ }
400
+ break;
401
+ }
402
+ case "FamilyMemberHistory": {
403
+ const r = resource;
404
+ if (r.date) {
405
+ return { startDate: r.date };
406
+ }
407
+ break;
408
+ }
409
+ case "Goal": {
410
+ const r = resource;
411
+ if (r.startDate) {
412
+ return { startDate: r.startDate };
413
+ }
414
+ if (r.statusDate) {
415
+ return { startDate: r.statusDate };
416
+ }
417
+ break;
418
+ }
419
+ case "Claim": {
420
+ const r = resource;
421
+ if (r.billablePeriod?.start || r.billablePeriod?.end) {
422
+ const startDate = r.billablePeriod.start ?? r.billablePeriod.end ?? "";
423
+ return r.billablePeriod.end ? { startDate, endDate: r.billablePeriod.end } : { startDate };
424
+ }
425
+ if (r.created) {
426
+ return { startDate: r.created };
427
+ }
428
+ break;
429
+ }
430
+ case "ChargeItem": {
431
+ const r = resource;
432
+ if (r.occurrenceDateTime) {
433
+ return { startDate: r.occurrenceDateTime };
434
+ }
435
+ if (r.occurrencePeriod?.start || r.occurrencePeriod?.end) {
436
+ const startDate = r.occurrencePeriod.start ?? r.occurrencePeriod.end ?? "";
437
+ return r.occurrencePeriod.end
438
+ ? { startDate, endDate: r.occurrencePeriod.end }
439
+ : { startDate };
440
+ }
441
+ if (r.enteredDate) {
442
+ return { startDate: r.enteredDate };
443
+ }
444
+ break;
445
+ }
446
+ case "SupplyDelivery": {
447
+ const r = resource;
448
+ if (r.occurrenceDateTime) {
449
+ return { startDate: r.occurrenceDateTime };
450
+ }
451
+ if (r.occurrencePeriod?.start || r.occurrencePeriod?.end) {
452
+ const startDate = r.occurrencePeriod.start ?? r.occurrencePeriod.end ?? "";
453
+ return r.occurrencePeriod.end
454
+ ? { startDate, endDate: r.occurrencePeriod.end }
455
+ : { startDate };
456
+ }
457
+ break;
458
+ }
459
+ case "SupplyRequest": {
460
+ const r = resource;
461
+ if (r.occurrenceDateTime) {
462
+ return { startDate: r.occurrenceDateTime };
463
+ }
464
+ if (r.occurrencePeriod?.start || r.occurrencePeriod?.end) {
465
+ const startDate = r.occurrencePeriod.start ?? r.occurrencePeriod.end ?? "";
466
+ return r.occurrencePeriod.end
467
+ ? { startDate, endDate: r.occurrencePeriod.end }
468
+ : { startDate };
469
+ }
470
+ if (r.authoredOn) {
471
+ return { startDate: r.authoredOn };
472
+ }
473
+ break;
474
+ }
475
+ case "EpisodeOfCare": {
476
+ const r = resource;
477
+ if (r.period?.start || r.period?.end) {
478
+ const startDate = r.period.start ?? r.period.end ?? "";
479
+ return r.period.end ? { startDate, endDate: r.period.end } : { startDate };
480
+ }
481
+ break;
482
+ }
483
+ case "NutritionOrder": {
484
+ const r = resource;
485
+ if (r.dateTime) {
486
+ return { startDate: r.dateTime };
487
+ }
488
+ break;
489
+ }
490
+ case "VisionPrescription": {
491
+ const r = resource;
492
+ if (r.created) {
493
+ return { startDate: r.created };
494
+ }
495
+ if (r.dateWritten) {
496
+ return { startDate: r.dateWritten };
497
+ }
498
+ break;
499
+ }
500
+ case "RequestGroup": {
501
+ const r = resource;
502
+ if (r.authoredOn) {
503
+ return { startDate: r.authoredOn };
504
+ }
505
+ break;
506
+ }
507
+ case "ExplanationOfBenefit": {
508
+ const r = resource;
509
+ if (r.billablePeriod?.start || r.billablePeriod?.end) {
510
+ const startDate = r.billablePeriod.start ?? r.billablePeriod.end ?? "";
511
+ return r.billablePeriod.end ? { startDate, endDate: r.billablePeriod.end } : { startDate };
512
+ }
513
+ if (r.created) {
514
+ return { startDate: r.created };
515
+ }
516
+ break;
517
+ }
518
+ case "Flag": {
519
+ const r = resource;
520
+ if (r.period?.start || r.period?.end) {
521
+ const startDate = r.period.start ?? r.period.end ?? "";
522
+ return r.period.end ? { startDate, endDate: r.period.end } : { startDate };
523
+ }
524
+ break;
525
+ }
526
+ case "BiologicallyDerivedProduct": {
527
+ const r = resource;
528
+ if (r.collection?.collectedDateTime) {
529
+ return { startDate: r.collection.collectedDateTime };
530
+ }
531
+ if (r.collection?.collectedPeriod?.start || r.collection?.collectedPeriod?.end) {
532
+ const startDate = r.collection.collectedPeriod.start ?? r.collection.collectedPeriod.end ?? "";
533
+ return r.collection.collectedPeriod.end
534
+ ? { startDate, endDate: r.collection.collectedPeriod.end }
535
+ : { startDate };
536
+ }
537
+ break;
538
+ }
539
+ case "QuestionnaireResponse": {
540
+ const r = resource;
541
+ if (r.authored) {
542
+ return { startDate: r.authored };
543
+ }
544
+ break;
545
+ }
546
+ case "List": {
547
+ const r = resource;
548
+ if (r.date) {
549
+ return { startDate: r.date };
550
+ }
551
+ break;
552
+ }
553
+ case "Invoice": {
554
+ const r = resource;
555
+ if (r.date) {
556
+ return { startDate: r.date };
557
+ }
558
+ break;
559
+ }
560
+ case "ImagingStudy": {
561
+ const r = resource;
562
+ if (r.started) {
563
+ return { startDate: r.started };
564
+ }
565
+ break;
566
+ }
567
+ }
568
+ return undefined;
569
+ }
570
+ exports.getClinicalDateRange = getClinicalDateRange;
571
+ //# sourceMappingURL=clinical-dates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clinical-dates.js","sourceRoot":"","sources":["../src/clinical-dates.ts"],"names":[],"mappings":"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"}