@metriport/fhir-sdk 1.3.0 → 1.3.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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=clinical-dates.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clinical-dates.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/clinical-dates.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,341 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const clinical_dates_1 = require("../clinical-dates");
4
+ describe("getClinicalDateRange", () => {
5
+ describe("Observation", () => {
6
+ it("returns effectiveDateTime as primary date", () => {
7
+ const observation = {
8
+ resourceType: "Observation",
9
+ id: "obs-1",
10
+ status: "final",
11
+ code: { text: "Test" },
12
+ effectiveDateTime: "2023-05-15T10:30:00Z",
13
+ issued: "2023-05-16T08:00:00Z",
14
+ };
15
+ const result = (0, clinical_dates_1.getClinicalDateRange)(observation);
16
+ expect(result).toEqual({
17
+ startDate: "2023-05-15T10:30:00Z",
18
+ });
19
+ });
20
+ it("returns effectivePeriod when effectiveDateTime not present", () => {
21
+ const observation = {
22
+ resourceType: "Observation",
23
+ id: "obs-2",
24
+ status: "final",
25
+ code: { text: "Test" },
26
+ effectivePeriod: {
27
+ start: "2023-05-10T00:00:00Z",
28
+ end: "2023-05-15T00:00:00Z",
29
+ },
30
+ issued: "2023-05-16T08:00:00Z",
31
+ };
32
+ const result = (0, clinical_dates_1.getClinicalDateRange)(observation);
33
+ expect(result).toEqual({
34
+ startDate: "2023-05-10T00:00:00Z",
35
+ endDate: "2023-05-15T00:00:00Z",
36
+ });
37
+ });
38
+ it("returns effectivePeriod with only end date", () => {
39
+ const observation = {
40
+ resourceType: "Observation",
41
+ id: "obs-3",
42
+ status: "final",
43
+ code: { text: "Test" },
44
+ effectivePeriod: {
45
+ end: "2023-05-15T00:00:00Z",
46
+ },
47
+ };
48
+ const result = (0, clinical_dates_1.getClinicalDateRange)(observation);
49
+ expect(result).toEqual({
50
+ startDate: "2023-05-15T00:00:00Z",
51
+ endDate: "2023-05-15T00:00:00Z",
52
+ });
53
+ });
54
+ it("returns issued when no effective date", () => {
55
+ const observation = {
56
+ resourceType: "Observation",
57
+ id: "obs-4",
58
+ status: "final",
59
+ code: { text: "Test" },
60
+ issued: "2023-05-16T08:00:00Z",
61
+ };
62
+ const result = (0, clinical_dates_1.getClinicalDateRange)(observation);
63
+ expect(result).toEqual({
64
+ startDate: "2023-05-16T08:00:00Z",
65
+ });
66
+ });
67
+ it("returns undefined when no dates present", () => {
68
+ const observation = {
69
+ resourceType: "Observation",
70
+ id: "obs-5",
71
+ status: "final",
72
+ code: { text: "Test" },
73
+ };
74
+ const result = (0, clinical_dates_1.getClinicalDateRange)(observation);
75
+ expect(result).toBeUndefined();
76
+ });
77
+ });
78
+ describe("Condition", () => {
79
+ it("returns onsetDateTime as primary date", () => {
80
+ const condition = {
81
+ resourceType: "Condition",
82
+ id: "cond-1",
83
+ subject: { reference: "Patient/1" },
84
+ onsetDateTime: "2023-01-15T00:00:00Z",
85
+ recordedDate: "2023-01-20T00:00:00Z",
86
+ };
87
+ const result = (0, clinical_dates_1.getClinicalDateRange)(condition);
88
+ expect(result).toEqual({
89
+ startDate: "2023-01-15T00:00:00Z",
90
+ });
91
+ });
92
+ it("returns onsetPeriod when onsetDateTime not present", () => {
93
+ const condition = {
94
+ resourceType: "Condition",
95
+ id: "cond-2",
96
+ subject: { reference: "Patient/1" },
97
+ onsetPeriod: {
98
+ start: "2023-01-01T00:00:00Z",
99
+ end: "2023-01-31T00:00:00Z",
100
+ },
101
+ };
102
+ const result = (0, clinical_dates_1.getClinicalDateRange)(condition);
103
+ expect(result).toEqual({
104
+ startDate: "2023-01-01T00:00:00Z",
105
+ endDate: "2023-01-31T00:00:00Z",
106
+ });
107
+ });
108
+ it("returns recordedDate as fallback", () => {
109
+ const condition = {
110
+ resourceType: "Condition",
111
+ id: "cond-3",
112
+ subject: { reference: "Patient/1" },
113
+ recordedDate: "2023-01-20T00:00:00Z",
114
+ };
115
+ const result = (0, clinical_dates_1.getClinicalDateRange)(condition);
116
+ expect(result).toEqual({
117
+ startDate: "2023-01-20T00:00:00Z",
118
+ });
119
+ });
120
+ });
121
+ describe("Procedure", () => {
122
+ it("returns performedDateTime as primary date", () => {
123
+ const procedure = {
124
+ resourceType: "Procedure",
125
+ id: "proc-1",
126
+ status: "completed",
127
+ subject: { reference: "Patient/1" },
128
+ performedDateTime: "2023-03-10T14:30:00Z",
129
+ };
130
+ const result = (0, clinical_dates_1.getClinicalDateRange)(procedure);
131
+ expect(result).toEqual({
132
+ startDate: "2023-03-10T14:30:00Z",
133
+ });
134
+ });
135
+ it("returns performedPeriod when performedDateTime not present", () => {
136
+ const procedure = {
137
+ resourceType: "Procedure",
138
+ id: "proc-2",
139
+ status: "completed",
140
+ subject: { reference: "Patient/1" },
141
+ performedPeriod: {
142
+ start: "2023-03-10T14:00:00Z",
143
+ end: "2023-03-10T16:00:00Z",
144
+ },
145
+ };
146
+ const result = (0, clinical_dates_1.getClinicalDateRange)(procedure);
147
+ expect(result).toEqual({
148
+ startDate: "2023-03-10T14:00:00Z",
149
+ endDate: "2023-03-10T16:00:00Z",
150
+ });
151
+ });
152
+ });
153
+ describe("Encounter", () => {
154
+ it("returns period as primary date", () => {
155
+ const encounter = {
156
+ resourceType: "Encounter",
157
+ id: "enc-1",
158
+ status: "finished",
159
+ class: { code: "AMB" },
160
+ period: {
161
+ start: "2023-04-01T09:00:00Z",
162
+ end: "2023-04-01T10:00:00Z",
163
+ },
164
+ };
165
+ const result = (0, clinical_dates_1.getClinicalDateRange)(encounter);
166
+ expect(result).toEqual({
167
+ startDate: "2023-04-01T09:00:00Z",
168
+ endDate: "2023-04-01T10:00:00Z",
169
+ });
170
+ });
171
+ it("returns undefined when no period", () => {
172
+ const encounter = {
173
+ resourceType: "Encounter",
174
+ id: "enc-2",
175
+ status: "finished",
176
+ class: { code: "AMB" },
177
+ };
178
+ const result = (0, clinical_dates_1.getClinicalDateRange)(encounter);
179
+ expect(result).toBeUndefined();
180
+ });
181
+ });
182
+ describe("AllergyIntolerance", () => {
183
+ it("returns onsetDateTime as primary date", () => {
184
+ const allergy = {
185
+ resourceType: "AllergyIntolerance",
186
+ id: "allergy-1",
187
+ patient: { reference: "Patient/1" },
188
+ onsetDateTime: "2022-06-15T00:00:00Z",
189
+ recordedDate: "2022-06-20T00:00:00Z",
190
+ };
191
+ const result = (0, clinical_dates_1.getClinicalDateRange)(allergy);
192
+ expect(result).toEqual({
193
+ startDate: "2022-06-15T00:00:00Z",
194
+ });
195
+ });
196
+ });
197
+ describe("DiagnosticReport", () => {
198
+ it("returns effectiveDateTime as primary date", () => {
199
+ const report = {
200
+ resourceType: "DiagnosticReport",
201
+ id: "report-1",
202
+ status: "final",
203
+ code: { text: "Lab Report" },
204
+ effectiveDateTime: "2023-07-10T08:00:00Z",
205
+ issued: "2023-07-11T10:00:00Z",
206
+ };
207
+ const result = (0, clinical_dates_1.getClinicalDateRange)(report);
208
+ expect(result).toEqual({
209
+ startDate: "2023-07-10T08:00:00Z",
210
+ });
211
+ });
212
+ });
213
+ describe("MedicationRequest", () => {
214
+ it("returns authoredOn as primary date", () => {
215
+ const medRequest = {
216
+ resourceType: "MedicationRequest",
217
+ id: "med-1",
218
+ status: "active",
219
+ intent: "order",
220
+ subject: { reference: "Patient/1" },
221
+ authoredOn: "2023-08-05T12:00:00Z",
222
+ };
223
+ const result = (0, clinical_dates_1.getClinicalDateRange)(medRequest);
224
+ expect(result).toEqual({
225
+ startDate: "2023-08-05T12:00:00Z",
226
+ });
227
+ });
228
+ });
229
+ describe("Immunization", () => {
230
+ it("returns occurrenceDateTime as primary date", () => {
231
+ const immunization = {
232
+ resourceType: "Immunization",
233
+ id: "imm-1",
234
+ status: "completed",
235
+ vaccineCode: { text: "Flu vaccine" },
236
+ patient: { reference: "Patient/1" },
237
+ occurrenceDateTime: "2023-09-15T10:00:00Z",
238
+ };
239
+ const result = (0, clinical_dates_1.getClinicalDateRange)(immunization);
240
+ expect(result).toEqual({
241
+ startDate: "2023-09-15T10:00:00Z",
242
+ });
243
+ });
244
+ it("returns recorded when occurrenceDateTime not present", () => {
245
+ const immunization = {
246
+ resourceType: "Immunization",
247
+ id: "imm-2",
248
+ status: "completed",
249
+ vaccineCode: { text: "Flu vaccine" },
250
+ patient: { reference: "Patient/1" },
251
+ recorded: "2023-09-16T08:00:00Z",
252
+ };
253
+ const result = (0, clinical_dates_1.getClinicalDateRange)(immunization);
254
+ expect(result).toEqual({
255
+ startDate: "2023-09-16T08:00:00Z",
256
+ });
257
+ });
258
+ });
259
+ describe("DocumentReference", () => {
260
+ it("returns date as primary date", () => {
261
+ const doc = {
262
+ resourceType: "DocumentReference",
263
+ id: "doc-1",
264
+ status: "current",
265
+ content: [],
266
+ date: "2023-10-01T00:00:00Z",
267
+ };
268
+ const result = (0, clinical_dates_1.getClinicalDateRange)(doc);
269
+ expect(result).toEqual({
270
+ startDate: "2023-10-01T00:00:00Z",
271
+ });
272
+ });
273
+ it("returns context period when date not present", () => {
274
+ const doc = {
275
+ resourceType: "DocumentReference",
276
+ id: "doc-2",
277
+ status: "current",
278
+ content: [],
279
+ context: {
280
+ period: {
281
+ start: "2023-09-01T00:00:00Z",
282
+ end: "2023-09-30T00:00:00Z",
283
+ },
284
+ },
285
+ };
286
+ const result = (0, clinical_dates_1.getClinicalDateRange)(doc);
287
+ expect(result).toEqual({
288
+ startDate: "2023-09-01T00:00:00Z",
289
+ endDate: "2023-09-30T00:00:00Z",
290
+ });
291
+ });
292
+ });
293
+ describe("Composition", () => {
294
+ it("returns date as primary date", () => {
295
+ const composition = {
296
+ resourceType: "Composition",
297
+ id: "comp-1",
298
+ status: "final",
299
+ type: { text: "Clinical Note" },
300
+ author: [{ reference: "Practitioner/1" }],
301
+ title: "Note",
302
+ date: "2023-11-01T00:00:00Z",
303
+ };
304
+ const result = (0, clinical_dates_1.getClinicalDateRange)(composition);
305
+ expect(result).toEqual({
306
+ startDate: "2023-11-01T00:00:00Z",
307
+ });
308
+ });
309
+ });
310
+ describe("Coverage", () => {
311
+ it("returns period as primary date", () => {
312
+ const coverage = {
313
+ resourceType: "Coverage",
314
+ id: "cov-1",
315
+ status: "active",
316
+ beneficiary: { reference: "Patient/1" },
317
+ payor: [{ reference: "Organization/1" }],
318
+ period: {
319
+ start: "2023-01-01T00:00:00Z",
320
+ end: "2023-12-31T23:59:59Z",
321
+ },
322
+ };
323
+ const result = (0, clinical_dates_1.getClinicalDateRange)(coverage);
324
+ expect(result).toEqual({
325
+ startDate: "2023-01-01T00:00:00Z",
326
+ endDate: "2023-12-31T23:59:59Z",
327
+ });
328
+ });
329
+ });
330
+ describe("unsupported resource types", () => {
331
+ it("returns undefined for Patient", () => {
332
+ const patient = {
333
+ resourceType: "Patient",
334
+ id: "pat-1",
335
+ };
336
+ const result = (0, clinical_dates_1.getClinicalDateRange)(patient);
337
+ expect(result).toBeUndefined();
338
+ });
339
+ });
340
+ });
341
+ //# sourceMappingURL=clinical-dates.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clinical-dates.test.js","sourceRoot":"","sources":["../../src/__tests__/clinical-dates.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Resource } from "@medplum/fhirtypes";
2
+ /**
3
+ * Date range extracted from a FHIR resource for use with searchByDateRange()
4
+ */
5
+ export interface ResourceDateRange {
6
+ /** The start date in ISO format */
7
+ startDate: string;
8
+ /** The end date in ISO format (only present for period-based dates) */
9
+ endDate?: string;
10
+ }
11
+ /**
12
+ * Extract the primary clinical date range from a FHIR resource.
13
+ * Returns undefined if the resource has no clinical dates.
14
+ *
15
+ * The returned dates can be passed directly to searchByDateRange():
16
+ * @example
17
+ * const dateRange = getClinicalDateRange(myObservation);
18
+ * if (dateRange) {
19
+ * bundle.searchByDateRange({
20
+ * dateFrom: dateRange.startDate,
21
+ * dateTo: dateRange.endDate
22
+ * });
23
+ * }
24
+ */
25
+ export declare function getClinicalDateRange(resource: Resource): ResourceDateRange | undefined;
26
+ //# sourceMappingURL=clinical-dates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clinical-dates.d.ts","sourceRoot":"","sources":["../src/clinical-dates.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAgDT,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CA0iBtF"}