@metriport/fhir-sdk 1.2.7 → 1.3.0

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 (84) hide show
  1. package/README.md +207 -0
  2. package/dist/__tests__/date-range-performance.test.d.ts +2 -0
  3. package/dist/__tests__/date-range-performance.test.d.ts.map +1 -0
  4. package/dist/__tests__/date-range-performance.test.js +218 -0
  5. package/dist/__tests__/date-range-performance.test.js.map +1 -0
  6. package/dist/__tests__/date-range-search.test.d.ts +2 -0
  7. package/dist/__tests__/date-range-search.test.d.ts.map +1 -0
  8. package/dist/__tests__/date-range-search.test.js +215 -0
  9. package/dist/__tests__/date-range-search.test.js.map +1 -0
  10. package/dist/__tests__/fhir-bundle-sdk.test.js +467 -0
  11. package/dist/__tests__/fhir-bundle-sdk.test.js.map +1 -1
  12. package/dist/__tests__/reverse-references.test.d.ts +2 -0
  13. package/dist/__tests__/reverse-references.test.d.ts.map +1 -0
  14. package/dist/__tests__/reverse-references.test.js +241 -0
  15. package/dist/__tests__/reverse-references.test.js.map +1 -0
  16. package/dist/demo-reverse-references.d.ts +7 -0
  17. package/dist/demo-reverse-references.d.ts.map +1 -0
  18. package/dist/demo-reverse-references.js +207 -0
  19. package/dist/demo-reverse-references.js.map +1 -0
  20. package/dist/fhir-bundle-sdk.d.ts +222 -0
  21. package/dist/fhir-bundle-sdk.d.ts.map +1 -0
  22. package/dist/fhir-bundle-sdk.js +527 -0
  23. package/dist/fhir-bundle-sdk.js.map +1 -0
  24. package/dist/index.d.ts +2 -242
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +2 -677
  27. package/dist/index.js.map +1 -1
  28. package/dist/internal/bundle-operations.d.ts +14 -0
  29. package/dist/internal/bundle-operations.d.ts.map +1 -0
  30. package/dist/internal/bundle-operations.js +55 -0
  31. package/dist/internal/bundle-operations.js.map +1 -0
  32. package/dist/internal/date-extraction.d.ts +12 -0
  33. package/dist/internal/date-extraction.d.ts.map +1 -0
  34. package/dist/internal/date-extraction.js +206 -0
  35. package/dist/internal/date-extraction.js.map +1 -0
  36. package/dist/internal/graph-traversal.d.ts +13 -0
  37. package/dist/internal/graph-traversal.d.ts.map +1 -0
  38. package/dist/internal/graph-traversal.js +89 -0
  39. package/dist/internal/graph-traversal.js.map +1 -0
  40. package/dist/internal/indexing.d.ts +17 -0
  41. package/dist/internal/indexing.d.ts.map +1 -0
  42. package/dist/internal/indexing.js +118 -0
  43. package/dist/internal/indexing.js.map +1 -0
  44. package/dist/internal/llm-context.d.ts +39 -0
  45. package/dist/internal/llm-context.d.ts.map +1 -0
  46. package/dist/internal/llm-context.js +188 -0
  47. package/dist/internal/llm-context.js.map +1 -0
  48. package/dist/internal/reference-resolution.d.ts +25 -0
  49. package/dist/internal/reference-resolution.d.ts.map +1 -0
  50. package/dist/internal/reference-resolution.js +133 -0
  51. package/dist/internal/reference-resolution.js.map +1 -0
  52. package/dist/internal/reference-utils.d.ts +26 -0
  53. package/dist/internal/reference-utils.d.ts.map +1 -0
  54. package/dist/internal/reference-utils.js +89 -0
  55. package/dist/internal/reference-utils.js.map +1 -0
  56. package/dist/internal/validation.d.ts +16 -0
  57. package/dist/internal/validation.d.ts.map +1 -0
  58. package/dist/internal/validation.js +45 -0
  59. package/dist/internal/validation.js.map +1 -0
  60. package/dist/types/sdk-types.d.ts +107 -0
  61. package/dist/types/sdk-types.d.ts.map +1 -0
  62. package/dist/types/sdk-types.js +17 -0
  63. package/dist/types/sdk-types.js.map +1 -0
  64. package/dist/types/smart-resources.d.ts +97 -4
  65. package/dist/types/smart-resources.d.ts.map +1 -1
  66. package/dist/types/smart-resources.js +82 -5
  67. package/dist/types/smart-resources.js.map +1 -1
  68. package/dist/utils/interval-tree/index.d.ts +87 -0
  69. package/dist/utils/interval-tree/index.d.ts.map +1 -0
  70. package/dist/utils/interval-tree/index.js +774 -0
  71. package/dist/utils/interval-tree/index.js.map +1 -0
  72. package/dist/utils/interval-tree/shallowequal/arrays.d.ts +3 -0
  73. package/dist/utils/interval-tree/shallowequal/arrays.d.ts.map +1 -0
  74. package/dist/utils/interval-tree/shallowequal/arrays.js +25 -0
  75. package/dist/utils/interval-tree/shallowequal/arrays.js.map +1 -0
  76. package/dist/utils/interval-tree/shallowequal/index.d.ts +6 -0
  77. package/dist/utils/interval-tree/shallowequal/index.d.ts.map +1 -0
  78. package/dist/utils/interval-tree/shallowequal/index.js +28 -0
  79. package/dist/utils/interval-tree/shallowequal/index.js.map +1 -0
  80. package/dist/utils/interval-tree/shallowequal/objects.d.ts +3 -0
  81. package/dist/utils/interval-tree/shallowequal/objects.d.ts.map +1 -0
  82. package/dist/utils/interval-tree/shallowequal/objects.js +28 -0
  83. package/dist/utils/interval-tree/shallowequal/objects.js.map +1 -0
  84. package/package.json +1 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAAzC,gHAAA,aAAa,OAAA"}
@@ -0,0 +1,14 @@
1
+ import { Bundle, BundleEntry, Resource } from "@medplum/fhirtypes";
2
+ /**
3
+ * Create a new bundle entry from an existing entry, preserving fullUrl
4
+ */
5
+ export declare function createBundleEntry(originalEntry: BundleEntry, resource: Resource): BundleEntry;
6
+ /**
7
+ * Create a new bundle with specified entries, maintaining original metadata
8
+ */
9
+ export declare function createExportBundle(originalBundle: Bundle, entries: BundleEntry[]): Bundle;
10
+ /**
11
+ * Find original bundle entry for a given resource
12
+ */
13
+ export declare function findOriginalEntry(bundle: Bundle, resource: Resource): BundleEntry | undefined;
14
+ //# sourceMappingURL=bundle-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-operations.d.ts","sourceRoot":"","sources":["../../src/internal/bundle-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAW7F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAuBzF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAS7F"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findOriginalEntry = exports.createExportBundle = exports.createBundleEntry = void 0;
4
+ /**
5
+ * Create a new bundle entry from an existing entry, preserving fullUrl
6
+ */
7
+ function createBundleEntry(originalEntry, resource) {
8
+ if (originalEntry.fullUrl) {
9
+ return {
10
+ fullUrl: originalEntry.fullUrl,
11
+ resource: resource,
12
+ };
13
+ }
14
+ return {
15
+ resource: resource,
16
+ };
17
+ }
18
+ exports.createBundleEntry = createBundleEntry;
19
+ /**
20
+ * Create a new bundle with specified entries, maintaining original metadata
21
+ */
22
+ function createExportBundle(originalBundle, entries) {
23
+ const exportBundle = {
24
+ resourceType: "Bundle",
25
+ type: originalBundle.type || "collection",
26
+ total: entries.length,
27
+ entry: entries,
28
+ };
29
+ // Preserve original bundle metadata (FR-6.4)
30
+ if (originalBundle.id) {
31
+ exportBundle.id = originalBundle.id;
32
+ }
33
+ if (originalBundle.meta) {
34
+ exportBundle.meta = { ...originalBundle.meta };
35
+ }
36
+ if (originalBundle.identifier) {
37
+ exportBundle.identifier = originalBundle.identifier;
38
+ }
39
+ if (originalBundle.timestamp) {
40
+ exportBundle.timestamp = originalBundle.timestamp;
41
+ }
42
+ return exportBundle;
43
+ }
44
+ exports.createExportBundle = createExportBundle;
45
+ /**
46
+ * Find original bundle entry for a given resource
47
+ */
48
+ function findOriginalEntry(bundle, resource) {
49
+ if (!bundle.entry) {
50
+ return undefined;
51
+ }
52
+ return bundle.entry.find(entry => entry.resource === resource || (entry.resource?.id && entry.resource.id === resource.id));
53
+ }
54
+ exports.findOriginalEntry = findOriginalEntry;
55
+ //# sourceMappingURL=bundle-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-operations.js","sourceRoot":"","sources":["../../src/internal/bundle-operations.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,SAAgB,iBAAiB,CAAC,aAA0B,EAAE,QAAkB;IAC9E,IAAI,aAAa,CAAC,OAAO,EAAE;QACzB,OAAO;YACL,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,QAAQ,EAAE,QAAQ;SACnB,CAAC;KACH;IAED,OAAO;QACL,QAAQ,EAAE,QAAQ;KACnB,CAAC;AACJ,CAAC;AAXD,8CAWC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,cAAsB,EAAE,OAAsB;IAC/E,MAAM,YAAY,GAAW;QAC3B,YAAY,EAAE,QAAQ;QACtB,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,YAAY;QACzC,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,KAAK,EAAE,OAAO;KACf,CAAC;IAEF,6CAA6C;IAC7C,IAAI,cAAc,CAAC,EAAE,EAAE;QACrB,YAAY,CAAC,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC;KACrC;IACD,IAAI,cAAc,CAAC,IAAI,EAAE;QACvB,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;KAChD;IACD,IAAI,cAAc,CAAC,UAAU,EAAE;QAC7B,YAAY,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC;KACrD;IACD,IAAI,cAAc,CAAC,SAAS,EAAE;QAC5B,YAAY,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;KACnD;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAvBD,gDAuBC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAc,EAAE,QAAkB;IAClE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACjB,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CACtB,KAAK,CAAC,EAAE,CACN,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAC3F,CAAC;AACJ,CAAC;AATD,8CASC"}
@@ -0,0 +1,12 @@
1
+ import { Resource } from "@medplum/fhirtypes";
2
+ import { DateIndexRecord } from "../types/sdk-types";
3
+ /**
4
+ * Parse date string to milliseconds timestamp, with validation
5
+ */
6
+ export declare function parseDate(dateString: string | undefined): number | undefined;
7
+ /**
8
+ * Extract date intervals from a resource based on its type
9
+ * Returns array of date intervals with metadata
10
+ */
11
+ export declare function extractDateIntervalsFromResource(resource: Resource): DateIndexRecord[];
12
+ //# sourceMappingURL=date-extraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-extraction.d.ts","sourceRoot":"","sources":["../../src/internal/date-extraction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAeT,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAkB5E;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,EAAE,CA2LtF"}
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractDateIntervalsFromResource = exports.parseDate = void 0;
4
+ /**
5
+ * Parse date string to milliseconds timestamp, with validation
6
+ */
7
+ function parseDate(dateString) {
8
+ if (!dateString) {
9
+ return undefined;
10
+ }
11
+ const date = new Date(dateString);
12
+ const timestamp = date.getTime();
13
+ // Validate date is reasonable (between 1900 and 2100)
14
+ if (isNaN(timestamp) ||
15
+ timestamp < new Date("1900-01-01").getTime() ||
16
+ timestamp > new Date("2100-01-01").getTime()) {
17
+ return undefined;
18
+ }
19
+ return timestamp;
20
+ }
21
+ exports.parseDate = parseDate;
22
+ /**
23
+ * Extract date intervals from a resource based on its type
24
+ * Returns array of date intervals with metadata
25
+ */
26
+ function extractDateIntervalsFromResource(resource) {
27
+ const intervals = [];
28
+ const resourceId = resource.id;
29
+ if (resourceId === undefined) {
30
+ return intervals;
31
+ }
32
+ /**
33
+ * Helper to add a date interval to the intervals array. Use arrow to prevent hoist.
34
+ */
35
+ // eslint-disable-next-line @metriport/eslint-rules/no-named-arrow-functions
36
+ const addDateInterval = (dateField, low, high) => {
37
+ const lowMs = parseDate(low);
38
+ const highMs = parseDate(high ?? low);
39
+ if (lowMs !== undefined && highMs !== undefined) {
40
+ intervals.push({
41
+ low: lowMs,
42
+ high: highMs,
43
+ resourceId: resourceId,
44
+ resourceType: resource.resourceType,
45
+ dateField,
46
+ });
47
+ }
48
+ };
49
+ switch (resource.resourceType) {
50
+ case "AllergyIntolerance": {
51
+ const r = resource;
52
+ if (r.onsetDateTime) {
53
+ addDateInterval("onsetDateTime", r.onsetDateTime);
54
+ }
55
+ if (r.onsetPeriod?.start || r.onsetPeriod?.end) {
56
+ addDateInterval("onsetPeriod", r.onsetPeriod.start, r.onsetPeriod.end);
57
+ }
58
+ if (r.lastOccurrence) {
59
+ addDateInterval("lastOccurrence", r.lastOccurrence);
60
+ }
61
+ if (r.recordedDate) {
62
+ addDateInterval("recordedDate", r.recordedDate);
63
+ }
64
+ break;
65
+ }
66
+ case "Condition": {
67
+ const r = resource;
68
+ if (r.onsetDateTime) {
69
+ addDateInterval("onsetDateTime", r.onsetDateTime);
70
+ }
71
+ if (r.onsetPeriod?.start || r.onsetPeriod?.end) {
72
+ addDateInterval("onsetPeriod", r.onsetPeriod.start, r.onsetPeriod.end);
73
+ }
74
+ if (r.abatementDateTime) {
75
+ addDateInterval("abatementDateTime", r.abatementDateTime);
76
+ }
77
+ if (r.abatementPeriod?.start || r.abatementPeriod?.end) {
78
+ addDateInterval("abatementPeriod", r.abatementPeriod.start, r.abatementPeriod.end);
79
+ }
80
+ if (r.recordedDate) {
81
+ addDateInterval("recordedDate", r.recordedDate);
82
+ }
83
+ break;
84
+ }
85
+ case "Observation": {
86
+ const r = resource;
87
+ if (r.effectiveDateTime) {
88
+ addDateInterval("effectiveDateTime", r.effectiveDateTime);
89
+ }
90
+ if (r.effectivePeriod?.start || r.effectivePeriod?.end) {
91
+ addDateInterval("effectivePeriod", r.effectivePeriod.start, r.effectivePeriod.end);
92
+ }
93
+ if (r.effectiveInstant) {
94
+ addDateInterval("effectiveInstant", r.effectiveInstant);
95
+ }
96
+ if (r.issued) {
97
+ addDateInterval("issued", r.issued);
98
+ }
99
+ break;
100
+ }
101
+ case "Encounter": {
102
+ const r = resource;
103
+ if (r.period?.start || r.period?.end) {
104
+ addDateInterval("period", r.period.start, r.period.end);
105
+ }
106
+ break;
107
+ }
108
+ case "Procedure": {
109
+ const r = resource;
110
+ if (r.performedDateTime) {
111
+ addDateInterval("performedDateTime", r.performedDateTime);
112
+ }
113
+ if (r.performedPeriod?.start || r.performedPeriod?.end) {
114
+ addDateInterval("performedPeriod", r.performedPeriod.start, r.performedPeriod.end);
115
+ }
116
+ break;
117
+ }
118
+ case "Immunization": {
119
+ const r = resource;
120
+ if (r.occurrenceDateTime) {
121
+ addDateInterval("occurrenceDateTime", r.occurrenceDateTime);
122
+ }
123
+ if (r.recorded) {
124
+ addDateInterval("recorded", r.recorded);
125
+ }
126
+ break;
127
+ }
128
+ case "DiagnosticReport": {
129
+ const r = resource;
130
+ if (r.effectiveDateTime) {
131
+ addDateInterval("effectiveDateTime", r.effectiveDateTime);
132
+ }
133
+ if (r.effectivePeriod?.start || r.effectivePeriod?.end) {
134
+ addDateInterval("effectivePeriod", r.effectivePeriod.start, r.effectivePeriod.end);
135
+ }
136
+ if (r.issued) {
137
+ addDateInterval("issued", r.issued);
138
+ }
139
+ break;
140
+ }
141
+ case "MedicationRequest": {
142
+ const r = resource;
143
+ if (r.authoredOn) {
144
+ addDateInterval("authoredOn", r.authoredOn);
145
+ }
146
+ break;
147
+ }
148
+ case "MedicationAdministration": {
149
+ const r = resource;
150
+ if (r.effectiveDateTime) {
151
+ addDateInterval("effectiveDateTime", r.effectiveDateTime);
152
+ }
153
+ if (r.effectivePeriod?.start || r.effectivePeriod?.end) {
154
+ addDateInterval("effectivePeriod", r.effectivePeriod.start, r.effectivePeriod.end);
155
+ }
156
+ break;
157
+ }
158
+ case "MedicationStatement": {
159
+ const r = resource;
160
+ if (r.effectiveDateTime) {
161
+ addDateInterval("effectiveDateTime", r.effectiveDateTime);
162
+ }
163
+ if (r.effectivePeriod?.start || r.effectivePeriod?.end) {
164
+ addDateInterval("effectivePeriod", r.effectivePeriod.start, r.effectivePeriod.end);
165
+ }
166
+ break;
167
+ }
168
+ case "MedicationDispense": {
169
+ const r = resource;
170
+ if (r.whenHandedOver) {
171
+ addDateInterval("whenHandedOver", r.whenHandedOver);
172
+ }
173
+ if (r.whenPrepared) {
174
+ addDateInterval("whenPrepared", r.whenPrepared);
175
+ }
176
+ break;
177
+ }
178
+ case "DocumentReference": {
179
+ const r = resource;
180
+ if (r.date) {
181
+ addDateInterval("date", r.date);
182
+ }
183
+ if (r.context?.period?.start || r.context?.period?.end) {
184
+ addDateInterval("context.period", r.context.period.start, r.context.period.end);
185
+ }
186
+ break;
187
+ }
188
+ case "Composition": {
189
+ const r = resource;
190
+ if (r.date) {
191
+ addDateInterval("date", r.date);
192
+ }
193
+ break;
194
+ }
195
+ case "Coverage": {
196
+ const r = resource;
197
+ if (r.period?.start || r.period?.end) {
198
+ addDateInterval("period", r.period.start, r.period.end);
199
+ }
200
+ break;
201
+ }
202
+ }
203
+ return intervals;
204
+ }
205
+ exports.extractDateIntervalsFromResource = extractDateIntervalsFromResource;
206
+ //# sourceMappingURL=date-extraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-extraction.js","sourceRoot":"","sources":["../../src/internal/date-extraction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Resource } from "@medplum/fhirtypes";
2
+ import { Smart } from "../types/smart-resources";
3
+ import { WalkOptions, WalkResult } from "../types/sdk-types";
4
+ /**
5
+ * Walk references from a starting resource using BFS traversal.
6
+ * Discovers all reachable resources up to maxDepth levels.
7
+ *
8
+ * @param startResource - The smart resource to start traversal from
9
+ * @param options - Walk options including maxDepth and includeStartResource
10
+ * @returns WalkResult containing all discovered resources organized by depth
11
+ */
12
+ export declare function walkReferences<T extends Resource>(startResource: Smart<T>, options?: WalkOptions): WalkResult<T>;
13
+ //# sourceMappingURL=graph-traversal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-traversal.d.ts","sourceRoot":"","sources":["../../src/internal/graph-traversal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAA4B,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,EAC/C,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,EACvB,OAAO,CAAC,EAAE,WAAW,GACpB,UAAU,CAAC,CAAC,CAAC,CA0Ff"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.walkReferences = void 0;
4
+ const smart_resources_1 = require("../types/smart-resources");
5
+ /**
6
+ * Walk references from a starting resource using BFS traversal.
7
+ * Discovers all reachable resources up to maxDepth levels.
8
+ *
9
+ * @param startResource - The smart resource to start traversal from
10
+ * @param options - Walk options including maxDepth and includeStartResource
11
+ * @returns WalkResult containing all discovered resources organized by depth
12
+ */
13
+ function walkReferences(startResource, options) {
14
+ const maxDepth = options?.maxDepth ?? Infinity;
15
+ const includeStartResource = options?.includeStartResource ?? true;
16
+ const resourcesByDepth = new Map();
17
+ const visited = new Set();
18
+ const queue = [];
19
+ // Initialize with start resource at depth 0
20
+ queue.push({ resource: startResource, depth: 0 });
21
+ if (startResource.id) {
22
+ visited.add(startResource.id);
23
+ }
24
+ let maxDepthReached = 0;
25
+ while (queue.length > 0) {
26
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
27
+ const { resource, depth } = queue.shift();
28
+ // Track max depth reached
29
+ if (depth > maxDepthReached) {
30
+ maxDepthReached = depth;
31
+ }
32
+ // Add resource to current depth level
33
+ if (!resourcesByDepth.has(depth)) {
34
+ resourcesByDepth.set(depth, []);
35
+ }
36
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
37
+ resourcesByDepth.get(depth).push(resource);
38
+ // Stop if we've reached max depth
39
+ if (depth >= maxDepth) {
40
+ continue;
41
+ }
42
+ // Get all reference methods for this resource type
43
+ const referenceMethods = smart_resources_1.REFERENCE_METHOD_MAPPING[resource.resourceType];
44
+ if (!referenceMethods) {
45
+ continue;
46
+ }
47
+ // Iterate through all reference methods
48
+ for (const methodName of Object.keys(referenceMethods)) {
49
+ // Call the reference method
50
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
+ const referencedResources = resource[methodName]();
52
+ if (!referencedResources) {
53
+ continue;
54
+ }
55
+ // Handle both single and array references
56
+ const resourceArray = Array.isArray(referencedResources)
57
+ ? referencedResources
58
+ : [referencedResources];
59
+ for (const referencedResource of resourceArray) {
60
+ if (!referencedResource?.id) {
61
+ continue;
62
+ }
63
+ // Skip if already visited
64
+ if (visited.has(referencedResource.id)) {
65
+ continue;
66
+ }
67
+ visited.add(referencedResource.id);
68
+ queue.push({ resource: referencedResource, depth: depth + 1 });
69
+ }
70
+ }
71
+ }
72
+ // Build flat array of all resources
73
+ const allResources = [];
74
+ for (const [depth, resources] of resourcesByDepth.entries()) {
75
+ // Skip depth 0 (start resource) if includeStartResource is false
76
+ if (depth === 0 && !includeStartResource) {
77
+ continue;
78
+ }
79
+ allResources.push(...resources);
80
+ }
81
+ return {
82
+ resourcesByDepth,
83
+ allResources,
84
+ startResource,
85
+ depthReached: maxDepthReached,
86
+ };
87
+ }
88
+ exports.walkReferences = walkReferences;
89
+ //# sourceMappingURL=graph-traversal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-traversal.js","sourceRoot":"","sources":["../../src/internal/graph-traversal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Bundle, Resource } from "@medplum/fhirtypes";
2
+ import { ReverseReference } from "../types/sdk-types";
3
+ import { IntervalTree } from "../utils/interval-tree";
4
+ import { DateIndexRecord } from "../types/sdk-types";
5
+ /**
6
+ * Build O(1) indexes for resource lookup
7
+ */
8
+ export declare function buildResourceIndexes(bundle: Bundle, resourcesById: Map<string, Resource>, resourcesByFullUrl: Map<string, Resource>, resourcesByType: Map<string, Resource[]>, reverseReferencesById: Map<string, ReverseReference[]>, dateRangeIndex: IntervalTree<DateIndexRecord, number>, resolutionStack: Set<string>): void;
9
+ /**
10
+ * Build reverse reference index for O(1) reverse lookup
11
+ */
12
+ export declare function buildReverseReferenceIndex(bundle: Bundle, reverseReferencesById: Map<string, ReverseReference[]>, resourcesByFullUrl: Map<string, Resource>): void;
13
+ /**
14
+ * Build date range index for O(log n + k) date range searches
15
+ */
16
+ export declare function buildDateRangeIndex(bundle: Bundle, dateRangeIndex: IntervalTree<DateIndexRecord, number>): void;
17
+ //# sourceMappingURL=indexing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexing.d.ts","sourceRoot":"","sources":["../../src/internal/indexing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAQrD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EACpC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EACzC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EACxC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EACtD,cAAc,EAAE,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,EACrD,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,IAAI,CAuCN;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EACtD,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GACxC,IAAI,CA6DN;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,GACpD,IAAI,CAiBN"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildDateRangeIndex = exports.buildReverseReferenceIndex = exports.buildResourceIndexes = void 0;
4
+ const reference_utils_1 = require("./reference-utils");
5
+ const date_extraction_1 = require("./date-extraction");
6
+ /**
7
+ * Build O(1) indexes for resource lookup
8
+ */
9
+ function buildResourceIndexes(bundle, resourcesById, resourcesByFullUrl, resourcesByType, reverseReferencesById, dateRangeIndex, resolutionStack) {
10
+ if (!bundle.entry) {
11
+ return;
12
+ }
13
+ for (const entry of bundle.entry) {
14
+ if (!entry.resource) {
15
+ continue;
16
+ }
17
+ const resource = entry.resource;
18
+ // Index by resource.id if it exists
19
+ if (resource.id) {
20
+ resourcesById.set(resource.id, resource);
21
+ }
22
+ // Index by fullUrl if it exists
23
+ if (entry.fullUrl) {
24
+ resourcesByFullUrl.set(entry.fullUrl, resource);
25
+ }
26
+ // Index by resource type for type-specific getters
27
+ const resourceType = resource.resourceType;
28
+ if (!resourcesByType.has(resourceType)) {
29
+ resourcesByType.set(resourceType, []);
30
+ }
31
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
32
+ resourcesByType.get(resourceType).push(resource);
33
+ }
34
+ // Build reverse reference index
35
+ buildReverseReferenceIndex(bundle, reverseReferencesById, resourcesByFullUrl);
36
+ // Build date range index
37
+ buildDateRangeIndex(bundle, dateRangeIndex);
38
+ // Clear resolution stack after index building
39
+ resolutionStack.clear();
40
+ }
41
+ exports.buildResourceIndexes = buildResourceIndexes;
42
+ /**
43
+ * Build reverse reference index for O(1) reverse lookup
44
+ */
45
+ function buildReverseReferenceIndex(bundle, reverseReferencesById, resourcesByFullUrl) {
46
+ if (!bundle.entry) {
47
+ return;
48
+ }
49
+ for (const entry of bundle.entry) {
50
+ if (!entry.resource) {
51
+ continue;
52
+ }
53
+ const resource = entry.resource;
54
+ const sourceResourceId = resource.id ?? entry.fullUrl ?? "unknown";
55
+ const references = (0, reference_utils_1.findAllReferences)(resource);
56
+ for (const { field, reference } of references) {
57
+ // Extract target ID from reference
58
+ const targetId = (0, reference_utils_1.extractTargetIdFromReference)(reference);
59
+ if (!targetId) {
60
+ continue;
61
+ }
62
+ // Add to reverse index for both the extracted ID and the full reference
63
+ const reverseRef = {
64
+ sourceResourceId,
65
+ sourceResourceType: resource.resourceType,
66
+ referenceField: (0, reference_utils_1.normalizeReferenceField)(field),
67
+ };
68
+ // Index by extracted resource ID (e.g., "patient-123" from "Patient/patient-123")
69
+ if (!reverseReferencesById.has(targetId)) {
70
+ reverseReferencesById.set(targetId, []);
71
+ }
72
+ reverseReferencesById.get(targetId)?.push(reverseRef);
73
+ // Also index by full reference if it's different (e.g., "urn:uuid:patient-123")
74
+ if (targetId !== reference) {
75
+ if (!reverseReferencesById.has(reference)) {
76
+ reverseReferencesById.set(reference, []);
77
+ }
78
+ reverseReferencesById.get(reference)?.push(reverseRef);
79
+ }
80
+ // Also try to index by the actual resource ID if we can find it efficiently
81
+ // Check if this reference can be resolved to a resource with a different ID
82
+ if (!reference.includes("/")) {
83
+ // This is likely a fullUrl reference (e.g., "urn:uuid:xxx")
84
+ // Check if we have a resource with this fullUrl
85
+ const targetResource = resourcesByFullUrl.get(reference);
86
+ if (targetResource?.id &&
87
+ targetResource.id !== targetId &&
88
+ targetResource.id !== reference) {
89
+ if (!reverseReferencesById.has(targetResource.id)) {
90
+ reverseReferencesById.set(targetResource.id, []);
91
+ }
92
+ reverseReferencesById.get(targetResource.id)?.push(reverseRef);
93
+ }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ exports.buildReverseReferenceIndex = buildReverseReferenceIndex;
99
+ /**
100
+ * Build date range index for O(log n + k) date range searches
101
+ */
102
+ function buildDateRangeIndex(bundle, dateRangeIndex) {
103
+ if (!bundle.entry) {
104
+ return;
105
+ }
106
+ for (const entry of bundle.entry) {
107
+ if (!entry.resource || !entry.resource.id) {
108
+ continue;
109
+ }
110
+ const resource = entry.resource;
111
+ const dateIntervals = (0, date_extraction_1.extractDateIntervalsFromResource)(resource);
112
+ for (const interval of dateIntervals) {
113
+ dateRangeIndex.insert(interval);
114
+ }
115
+ }
116
+ }
117
+ exports.buildDateRangeIndex = buildDateRangeIndex;
118
+ //# sourceMappingURL=indexing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexing.js","sourceRoot":"","sources":["../../src/internal/indexing.ts"],"names":[],"mappings":"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"}