@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
@@ -0,0 +1,222 @@
1
+ import { AllergyIntolerance, Bundle, BundleEntry, Composition, Condition, Coverage, DiagnosticReport, DocumentReference, Encounter, FamilyMemberHistory, Immunization, Location, Medication, MedicationAdministration, MedicationDispense, MedicationRequest, MedicationStatement, Observation, Organization, Patient, Practitioner, Procedure, RelatedPerson, Resource, RiskAssessment, ServiceRequest } from "@medplum/fhirtypes";
2
+ import { Smart } from "./types/smart-resources";
3
+ import { ValidationResult, BundleDiffResult, WalkOptions, LLMContextOptions, WalkResult, ReverseReferenceOptions, DateRangeSearchOptions } from "./types/sdk-types";
4
+ /**
5
+ * FHIR Bundle SDK for parsing, querying, and manipulating FHIR bundles with reference resolution
6
+ */
7
+ export declare class FhirBundleSdk {
8
+ private bundle;
9
+ private resourcesById;
10
+ private resourcesByFullUrl;
11
+ private resourcesByType;
12
+ private reverseReferencesById;
13
+ private dateRangeIndex;
14
+ private smartResourceCache;
15
+ private smartResourceArrayCache;
16
+ private resolutionStack;
17
+ /**
18
+ * Configuration for dynamically generated resource getter methods.
19
+ *
20
+ * Each entry in this array automatically generates both single and collection getter methods.
21
+ *
22
+ * **Example:**
23
+ * ```typescript
24
+ * {
25
+ * resourceType: 'Patient',
26
+ * singleGetterMethodName: 'getPatientById',
27
+ * collectionGetterMethodName: 'getPatients'
28
+ * }
29
+ * ```
30
+ *
31
+ * **Generates the equivalent of:**
32
+ * ```typescript
33
+ * // Single resource getter
34
+ * getPatientById(id: string): Smart<Patient> | undefined {
35
+ * return this.getResourceByIdAndType<Patient>(id, 'Patient');
36
+ * }
37
+ *
38
+ * // Collection getter
39
+ * getPatients(): Smart<Patient>[] {
40
+ * return this.getResourcesByType<Patient>('Patient');
41
+ * }
42
+ * ```
43
+ *
44
+ * **Usage:**
45
+ * ```typescript
46
+ * const sdk = await FhirBundleSdk.create(bundle);
47
+ * const patient = sdk.getPatientById('patient-123'); // Smart<Patient> | undefined
48
+ * const allPatients = sdk.getPatients(); // Smart<Patient>[]
49
+ * ```
50
+ *
51
+ * To add a new resource type, simply add a new entry to this array and declare
52
+ * the corresponding method signatures in the class body.
53
+ */
54
+ private static readonly RESOURCE_METHODS;
55
+ private constructor();
56
+ get total(): number;
57
+ get entry(): BundleEntry[];
58
+ toObject(): Bundle;
59
+ /**
60
+ * Strip non-clinical metadata from a FHIR resource to reduce noise for LLM consumption.
61
+ * Removes: meta, extension, modifierExtension, text
62
+ * Returns an immutable copy without mutating the original.
63
+ */
64
+ static stripNonClinicalData<T extends Resource>(resource: T): T;
65
+ /**
66
+ * Create a new FhirBundleSdk instance (async for backwards compatibility)
67
+ * FR-1.2: Validate bundle resourceType
68
+ */
69
+ static create(bundle: Bundle): Promise<FhirBundleSdk>;
70
+ /**
71
+ * Create a new FhirBundleSdk instance synchronously
72
+ * FR-1.2: Validate bundle resourceType
73
+ */
74
+ static createSync(bundle: Bundle): FhirBundleSdk;
75
+ /**
76
+ * Create a smart resource with reference resolution methods
77
+ * FR-5.1: Resources returned by SDK have additional getter methods for each Reference field
78
+ * FR-5.7: Reference resolution operates in O(1) time complexity per reference
79
+ * FR-5.8: Original reference fields remain unchanged
80
+ */
81
+ private createSmartResource;
82
+ /**
83
+ * FR-2.1: Validate all references in the bundle
84
+ * FR-2.2: Identifies references by Resource/id pattern and fullUrl references
85
+ * FR-2.3: Handles both relative and absolute references
86
+ * FR-2.4: Returns validation result with broken reference details
87
+ */
88
+ lookForBrokenReferences(): ValidationResult;
89
+ /**
90
+ * FR-3.1: Get resource by ID with type parameter support
91
+ * FR-3.2: Method searches both resource.id and entry.fullUrl for matches
92
+ * FR-3.4: Method returns undefined if resource not found
93
+ * FR-3.5: Lookup operates in O(1) time complexity
94
+ * FR-5.1: Returns smart resource with reference resolution methods
95
+ */
96
+ getResourceById<T extends Resource>(id: string): Smart<T> | undefined;
97
+ /**
98
+ * Generic helper method to get a resource by ID with type validation
99
+ */
100
+ private getResourceByIdAndType;
101
+ getPatientById: (id: string) => Smart<Patient> | undefined;
102
+ getObservationById: (id: string) => Smart<Observation> | undefined;
103
+ getEncounterById: (id: string) => Smart<Encounter> | undefined;
104
+ getAllergyIntoleranceById: (id: string) => Smart<AllergyIntolerance> | undefined;
105
+ getConditionById: (id: string) => Smart<Condition> | undefined;
106
+ getOrganizationById: (id: string) => Smart<Organization> | undefined;
107
+ getLocationById: (id: string) => Smart<Location> | undefined;
108
+ getPractitionerById: (id: string) => Smart<Practitioner> | undefined;
109
+ getDiagnosticReportById: (id: string) => Smart<DiagnosticReport> | undefined;
110
+ getCompositionById: (id: string) => Smart<Composition> | undefined;
111
+ getCoverageById: (id: string) => Smart<Coverage> | undefined;
112
+ getDocumentReferenceById: (id: string) => Smart<DocumentReference> | undefined;
113
+ getImmunizationById: (id: string) => Smart<Immunization> | undefined;
114
+ getMedicationById: (id: string) => Smart<Medication> | undefined;
115
+ getMedicationRequestById: (id: string) => Smart<MedicationRequest> | undefined;
116
+ getProcedureById: (id: string) => Smart<Procedure> | undefined;
117
+ getFamilyMemberHistoryById: (id: string) => Smart<FamilyMemberHistory> | undefined;
118
+ getMedicationAdministrationById: (id: string) => Smart<MedicationAdministration> | undefined;
119
+ getMedicationDispenseById: (id: string) => Smart<MedicationDispense> | undefined;
120
+ getMedicationStatementById: (id: string) => Smart<MedicationStatement> | undefined;
121
+ getRelatedPersonById: (id: string) => Smart<RelatedPerson> | undefined;
122
+ getRiskAssessmentById: (id: string) => Smart<RiskAssessment> | undefined;
123
+ getServiceRequestById: (id: string) => Smart<ServiceRequest> | undefined;
124
+ /**
125
+ * Generic helper method to get all resources of a specific type
126
+ * FR-10.1: Returns references to cached objects, not copies
127
+ */
128
+ private getResourcesByType;
129
+ getPatients: () => Smart<Patient>[];
130
+ getObservations: () => Smart<Observation>[];
131
+ getEncounters: () => Smart<Encounter>[];
132
+ getPractitioners: () => Smart<Practitioner>[];
133
+ getDiagnosticReports: () => Smart<DiagnosticReport>[];
134
+ getAllergyIntolerances: () => Smart<AllergyIntolerance>[];
135
+ getConditions: () => Smart<Condition>[];
136
+ getOrganizations: () => Smart<Organization>[];
137
+ getLocations: () => Smart<Location>[];
138
+ getCompositions: () => Smart<Composition>[];
139
+ getCoverages: () => Smart<Coverage>[];
140
+ getDocumentReferences: () => Smart<DocumentReference>[];
141
+ getImmunizations: () => Smart<Immunization>[];
142
+ getMedications: () => Smart<Medication>[];
143
+ getMedicationRequests: () => Smart<MedicationRequest>[];
144
+ getProcedures: () => Smart<Procedure>[];
145
+ getFamilyMemberHistories: () => Smart<FamilyMemberHistory>[];
146
+ getMedicationAdministrations: () => Smart<MedicationAdministration>[];
147
+ getMedicationDispenses: () => Smart<MedicationDispense>[];
148
+ getMedicationStatements: () => Smart<MedicationStatement>[];
149
+ getRelatedPersons: () => Smart<RelatedPerson>[];
150
+ getRiskAssessments: () => Smart<RiskAssessment>[];
151
+ getServiceRequests: () => Smart<ServiceRequest>[];
152
+ /**
153
+ * FR-6.1: Export subset of resources by their IDs
154
+ * FR-6.4: Exported bundles maintain original bundle metadata but update total count
155
+ * FR-6.5: Exported bundles include only resources that exist in the original bundle
156
+ * FR-6.6: Exported bundles preserve original entry.fullUrl values
157
+ */
158
+ exportSubset(resourceIds: string[]): Bundle;
159
+ /**
160
+ * FR-6.2: Export all resources of a specific type
161
+ * FR-6.4: Exported bundles maintain original bundle metadata but update total count
162
+ * FR-6.6: Exported bundles preserve original entry.fullUrl values
163
+ */
164
+ exportByType(resourceType: string): Bundle;
165
+ /**
166
+ * FR-6.3: Export all resources of specified types
167
+ * FR-6.4: Exported bundles maintain original bundle metadata but update total count
168
+ * FR-6.6: Exported bundles preserve original entry.fullUrl values
169
+ */
170
+ exportByTypes(resourceTypes: string[]): Bundle;
171
+ /**
172
+ * Concatenate entries from another FhirBundleSdk with this bundle
173
+ * Returns a new bundle with combined entries while preserving original metadata
174
+ */
175
+ concatEntries(otherSdk: FhirBundleSdk): Promise<FhirBundleSdk>;
176
+ /**
177
+ * Diff this bundle with another FHIR Bundle by comparing resource ids.
178
+ * Returns three FhirBundleSdk instances: common, baseOnly, parameterOnly.
179
+ */
180
+ diff(other: Bundle): Promise<BundleDiffResult>;
181
+ /**
182
+ * Diff this bundle with another FhirBundleSdk by comparing resource ids.
183
+ * Returns three FhirBundleSdk instances: common, baseOnly, parameterOnly.
184
+ */
185
+ diff(other: FhirBundleSdk): Promise<BundleDiffResult>;
186
+ /**
187
+ * Walk references from a starting resource using BFS traversal.
188
+ * Discovers all reachable resources up to maxDepth levels.
189
+ *
190
+ * @param startResource - The smart resource to start traversal from
191
+ * @param options - Walk options including maxDepth and includeStartResource
192
+ * @returns WalkResult containing all discovered resources organized by depth
193
+ */
194
+ walkReferences<T extends Resource>(startResource: Smart<T>, options?: WalkOptions): WalkResult<T>;
195
+ /**
196
+ * Generate LLM-friendly context from a starting resource and its related resources.
197
+ * Uses BFS to discover related resources, strips non-clinical data, and formats output.
198
+ *
199
+ * @param startResource - The smart resource to start traversal from
200
+ * @param options - Options for depth, inclusion, and format
201
+ * @returns Formatted string suitable for LLM context
202
+ */
203
+ generateLLMContext<T extends Resource>(startResource: Smart<T>, options?: LLMContextOptions): string;
204
+ /**
205
+ * Get all resources that reference a given resource ID (reverse reference lookup).
206
+ * Operates in O(1) time complexity.
207
+ *
208
+ * @param targetId - The ID of the resource to find references to
209
+ * @param options - Optional filters for resourceType and referenceField
210
+ * @returns Array of smart resources that reference the target resource
211
+ */
212
+ getResourcesReferencingId<T extends Resource = Resource>(targetId: string, options?: ReverseReferenceOptions): Smart<T>[];
213
+ /**
214
+ * Search for resources by date range using interval tree.
215
+ * Operates in O(log n + k) time complexity, where k is the number of matching intervals.
216
+ *
217
+ * @param options - Search options including date range and optional filters
218
+ * @returns Array of smart resources that match the date range criteria
219
+ */
220
+ searchByDateRange<T extends Resource = Resource>(options: DateRangeSearchOptions): Smart<T>[];
221
+ }
222
+ //# sourceMappingURL=fhir-bundle-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fhir-bundle-sdk.d.ts","sourceRoot":"","sources":["../src/fhir-bundle-sdk.ts"],"names":[],"mappings":"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"}