@metriport/fhir-sdk 1.3.7 → 1.4.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 (58) hide show
  1. package/README.md +173 -8
  2. package/dist/__tests__/careplan.test.d.ts +2 -0
  3. package/dist/__tests__/careplan.test.d.ts.map +1 -0
  4. package/dist/__tests__/careplan.test.js +544 -0
  5. package/dist/__tests__/careplan.test.js.map +1 -0
  6. package/dist/__tests__/coding-utilities.test.d.ts +2 -0
  7. package/dist/__tests__/coding-utilities.test.d.ts.map +1 -0
  8. package/dist/__tests__/coding-utilities.test.js +482 -0
  9. package/dist/__tests__/coding-utilities.test.js.map +1 -0
  10. package/dist/__tests__/type-guards.test.d.ts +2 -0
  11. package/dist/__tests__/type-guards.test.d.ts.map +1 -0
  12. package/dist/__tests__/type-guards.test.js +163 -0
  13. package/dist/__tests__/type-guards.test.js.map +1 -0
  14. package/dist/demo-reverse-references.d.ts +7 -0
  15. package/dist/demo-reverse-references.d.ts.map +1 -0
  16. package/dist/demo-reverse-references.js +207 -0
  17. package/dist/demo-reverse-references.js.map +1 -0
  18. package/dist/fhir-bundle-sdk.d.ts +50 -47
  19. package/dist/fhir-bundle-sdk.d.ts.map +1 -1
  20. package/dist/fhir-bundle-sdk.js +10 -2
  21. package/dist/fhir-bundle-sdk.js.map +1 -1
  22. package/dist/index.d.ts +4 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +15 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/internal/coding-systems.d.ts +42 -0
  27. package/dist/internal/coding-systems.d.ts.map +1 -0
  28. package/dist/internal/coding-systems.js +47 -0
  29. package/dist/internal/coding-systems.js.map +1 -0
  30. package/dist/internal/coding-utilities.d.ts +27 -0
  31. package/dist/internal/coding-utilities.d.ts.map +1 -0
  32. package/dist/internal/coding-utilities.js +297 -0
  33. package/dist/internal/coding-utilities.js.map +1 -0
  34. package/dist/internal/graph-traversal.js +1 -1
  35. package/dist/internal/graph-traversal.js.map +1 -1
  36. package/dist/internal/llm-context.d.ts.map +1 -1
  37. package/dist/internal/llm-context.js +3 -1
  38. package/dist/internal/llm-context.js.map +1 -1
  39. package/dist/internal/reference-resolution.d.ts.map +1 -1
  40. package/dist/internal/reference-resolution.js +99 -11
  41. package/dist/internal/reference-resolution.js.map +1 -1
  42. package/dist/internal/transparent-proxy.d.ts +12 -0
  43. package/dist/internal/transparent-proxy.d.ts.map +1 -0
  44. package/dist/internal/transparent-proxy.js +81 -0
  45. package/dist/internal/transparent-proxy.js.map +1 -0
  46. package/dist/type-guards.d.ts +183 -0
  47. package/dist/type-guards.d.ts.map +1 -0
  48. package/dist/type-guards.js +108 -0
  49. package/dist/type-guards.js.map +1 -0
  50. package/dist/types/coding-fields.d.ts +292 -0
  51. package/dist/types/coding-fields.d.ts.map +1 -0
  52. package/dist/types/coding-fields.js +3 -0
  53. package/dist/types/coding-fields.js.map +1 -0
  54. package/dist/types/smart-resources.d.ts +152 -6
  55. package/dist/types/smart-resources.d.ts.map +1 -1
  56. package/dist/types/smart-resources.js +35 -3
  57. package/dist/types/smart-resources.js.map +1 -1
  58. package/package.json +2 -3
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fhir_bundle_sdk_1 = require("../fhir-bundle-sdk");
4
+ const type_guards_1 = require("../type-guards");
5
+ describe("Type Guards", () => {
6
+ describe("Basic type narrowing with mixed resource arrays", () => {
7
+ test("filters mixed Resource array to specific type with proper inference", () => {
8
+ const resources = [
9
+ { resourceType: "Patient", id: "patient-1" },
10
+ { resourceType: "Observation", id: "obs-1", status: "final", code: { text: "test" } },
11
+ { resourceType: "Patient", id: "patient-2" },
12
+ {
13
+ resourceType: "DiagnosticReport",
14
+ id: "report-1",
15
+ status: "final",
16
+ code: { text: "test" },
17
+ },
18
+ { resourceType: "Observation", id: "obs-2", status: "final", code: { text: "test" } },
19
+ ];
20
+ const patients = resources.filter(type_guards_1.isPatient);
21
+ const observations = resources.filter(type_guards_1.isObservation);
22
+ const reports = resources.filter(type_guards_1.isDiagnosticReport);
23
+ // Type assertions validate TypeScript properly inferred the types
24
+ expect(patients).toHaveLength(2);
25
+ expect(observations).toHaveLength(2);
26
+ expect(reports).toHaveLength(1);
27
+ // TypeScript knows these are Patients, so we can access Patient-specific fields
28
+ patients.forEach(patient => {
29
+ expect(patient.resourceType).toBe("Patient");
30
+ // This wouldn't compile if TypeScript didn't narrow the type
31
+ void patient.name; // Patient-specific field accessible due to type narrowing
32
+ });
33
+ // TypeScript knows these are Observations
34
+ observations.forEach(obs => {
35
+ expect(obs.resourceType).toBe("Observation");
36
+ expect(obs.status).toBe("final"); // Observation-specific field accessible
37
+ });
38
+ });
39
+ });
40
+ describe("Type guards with Smart resources", () => {
41
+ test("filters Smart resources with proper type inference", async () => {
42
+ const bundle = {
43
+ resourceType: "Bundle",
44
+ type: "collection",
45
+ entry: [
46
+ { resource: { resourceType: "Patient", id: "patient-1" } },
47
+ {
48
+ resource: {
49
+ resourceType: "Observation",
50
+ id: "obs-1",
51
+ status: "final",
52
+ code: { text: "test" },
53
+ subject: { reference: "Patient/patient-1" },
54
+ },
55
+ },
56
+ { resource: { resourceType: "Patient", id: "patient-2" } },
57
+ {
58
+ resource: {
59
+ resourceType: "Encounter",
60
+ id: "enc-1",
61
+ status: "finished",
62
+ class: { code: "test" },
63
+ },
64
+ },
65
+ {
66
+ resource: {
67
+ resourceType: "Observation",
68
+ id: "obs-2",
69
+ status: "final",
70
+ code: { text: "test" },
71
+ },
72
+ },
73
+ ],
74
+ };
75
+ const sdk = await fhir_bundle_sdk_1.FhirBundleSdk.create(bundle);
76
+ // Test filtering observations directly - this is the main use case
77
+ const allObservations = sdk.getObservations();
78
+ expect(allObservations).toHaveLength(2);
79
+ allObservations.forEach(obs => {
80
+ expect(obs.resourceType).toBe("Observation");
81
+ expect(obs.__isSmartResource).toBe(true);
82
+ // Type guard confirms it's an Observation, so we can access observation-specific fields
83
+ if ((0, type_guards_1.isObservation)(obs)) {
84
+ const subject = obs.getSubject();
85
+ void subject;
86
+ }
87
+ });
88
+ // Test filtering patients
89
+ const allPatients = sdk.getPatients();
90
+ expect(allPatients).toHaveLength(2);
91
+ allPatients.forEach(patient => {
92
+ expect(patient.resourceType).toBe("Patient");
93
+ expect(patient.__isSmartResource).toBe(true);
94
+ });
95
+ });
96
+ test("type guards work in conditional blocks with Smart resources", async () => {
97
+ const bundle = {
98
+ resourceType: "Bundle",
99
+ type: "collection",
100
+ entry: [
101
+ {
102
+ resource: {
103
+ resourceType: "Patient",
104
+ id: "patient-1",
105
+ name: [{ given: ["Jane"], family: "Doe" }],
106
+ },
107
+ },
108
+ {
109
+ resource: {
110
+ resourceType: "Observation",
111
+ id: "obs-1",
112
+ status: "final",
113
+ code: { text: "test" },
114
+ valueQuantity: { value: 120, unit: "mmHg" },
115
+ },
116
+ },
117
+ ],
118
+ };
119
+ const sdk = await fhir_bundle_sdk_1.FhirBundleSdk.create(bundle);
120
+ const resource1 = sdk.getResourceById("patient-1");
121
+ const resource2 = sdk.getResourceById("obs-1");
122
+ // Type guard in conditional - TypeScript should narrow the type
123
+ if (resource1 && (0, type_guards_1.isPatient)(resource1)) {
124
+ expect(resource1.resourceType).toBe("Patient");
125
+ const name = resource1.name?.[0]?.given?.[0];
126
+ expect(name).toBe("Jane");
127
+ }
128
+ if (resource2 && (0, type_guards_1.isObservation)(resource2)) {
129
+ expect(resource2.resourceType).toBe("Observation");
130
+ const value = resource2.valueQuantity?.value;
131
+ expect(value).toBe(120);
132
+ }
133
+ });
134
+ });
135
+ describe("Edge cases", () => {
136
+ test("handles undefined gracefully", () => {
137
+ expect((0, type_guards_1.isPatient)(undefined)).toBe(false);
138
+ expect((0, type_guards_1.isObservation)(undefined)).toBe(false);
139
+ expect((0, type_guards_1.isDiagnosticReport)(undefined)).toBe(false);
140
+ });
141
+ test("filters out undefined values from array", () => {
142
+ const resources = [
143
+ { resourceType: "Patient", id: "1" },
144
+ undefined,
145
+ { resourceType: "Observation", id: "2", status: "final", code: { text: "test" } },
146
+ undefined,
147
+ ];
148
+ const patients = resources.filter(type_guards_1.isPatient);
149
+ const observations = resources.filter(type_guards_1.isObservation);
150
+ expect(patients).toHaveLength(1);
151
+ expect(observations).toHaveLength(1);
152
+ });
153
+ test("returns empty array when no matches found", () => {
154
+ const resources = [
155
+ { resourceType: "Patient", id: "1" },
156
+ { resourceType: "Patient", id: "2" },
157
+ ];
158
+ const observations = resources.filter(type_guards_1.isObservation);
159
+ expect(observations).toHaveLength(0);
160
+ });
161
+ });
162
+ });
163
+ //# sourceMappingURL=type-guards.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.test.js","sourceRoot":"","sources":["../../src/__tests__/type-guards.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Demo script showcasing reverse reference functionality in FHIR SDK
3
+ *
4
+ * Run with: npx ts-node src/demo-reverse-references.ts
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=demo-reverse-references.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-reverse-references.d.ts","sourceRoot":"","sources":["../src/demo-reverse-references.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ /**
3
+ * Demo script showcasing reverse reference functionality in FHIR SDK
4
+ *
5
+ * Run with: npx ts-node src/demo-reverse-references.ts
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ const index_1 = require("./index");
9
+ const fhir_bundles_1 = require("./__tests__/fixtures/fhir-bundles");
10
+ async function demonstrateReverseReferences() {
11
+ console.log("=".repeat(80));
12
+ console.log("FHIR SDK - Reverse Reference Lookup Demo");
13
+ console.log("=".repeat(80));
14
+ console.log();
15
+ // Create SDK instance with sample bundle
16
+ const sdk = await index_1.FhirBundleSdk.create(fhir_bundles_1.validCompleteBundle);
17
+ console.log(`📦 Loaded bundle with ${sdk.total} resources`);
18
+ console.log();
19
+ // ============================================================================
20
+ // DEMO 1: Find all resources that reference a patient
21
+ // ============================================================================
22
+ console.log("─".repeat(80));
23
+ console.log("DEMO 1: Find all resources that reference a specific patient");
24
+ console.log("─".repeat(80));
25
+ const patientId = "patient-123";
26
+ console.log(`\n🔍 Finding all resources that reference Patient/${patientId}...\n`);
27
+ const referencingPatient = sdk.getResourcesReferencingId(patientId);
28
+ console.log(`Found ${referencingPatient.length} resources:\n`);
29
+ for (const resource of referencingPatient) {
30
+ console.log(` ✓ ${resource.resourceType}/${resource.id}`);
31
+ }
32
+ console.log();
33
+ // ============================================================================
34
+ // DEMO 2: Filter by resource type
35
+ // ============================================================================
36
+ console.log("─".repeat(80));
37
+ console.log("DEMO 2: Filter reverse references by resource type");
38
+ console.log("─".repeat(80));
39
+ console.log(`\n🔍 Finding only Observations that reference Patient/${patientId}...\n`);
40
+ const observations = sdk.getResourcesReferencingId(patientId, {
41
+ resourceType: "Observation",
42
+ });
43
+ console.log(`Found ${observations.length} Observation(s):\n`);
44
+ for (const obs of observations) {
45
+ const obsData = obs;
46
+ console.log(` ✓ Observation/${obs.id}`);
47
+ console.log(` Code: ${obsData.code?.text || "N/A"}`);
48
+ console.log(
49
+ ` Value: ${obsData.valueQuantity?.value || "N/A"} ${obsData.valueQuantity?.unit || ""}`
50
+ );
51
+ }
52
+ console.log();
53
+ // ============================================================================
54
+ // DEMO 3: Filter by reference field
55
+ // ============================================================================
56
+ console.log("─".repeat(80));
57
+ console.log("DEMO 3: Filter reverse references by field name");
58
+ console.log("─".repeat(80));
59
+ console.log(
60
+ `\n🔍 Finding resources that reference Patient/${patientId} via 'subject' field...\n`
61
+ );
62
+ const subjectReferences = sdk.getResourcesReferencingId(patientId, {
63
+ referenceField: "subject",
64
+ });
65
+ console.log(`Found ${subjectReferences.length} resource(s) with 'subject' reference:\n`);
66
+ for (const resource of subjectReferences) {
67
+ console.log(` ✓ ${resource.resourceType}/${resource.id}`);
68
+ }
69
+ console.log();
70
+ // ============================================================================
71
+ // DEMO 4: Combined filters
72
+ // ============================================================================
73
+ console.log("─".repeat(80));
74
+ console.log("DEMO 4: Combine resource type and field filters");
75
+ console.log("─".repeat(80));
76
+ const practitionerId = "practitioner-456";
77
+ console.log(
78
+ `\n🔍 Finding Observations that reference Practitioner/${practitionerId} via 'performer'...\n`
79
+ );
80
+ const performerObs = sdk.getResourcesReferencingId(practitionerId, {
81
+ resourceType: "Observation",
82
+ referenceField: "performer",
83
+ });
84
+ console.log(`Found ${performerObs.length} Observation(s):\n`);
85
+ for (const obs of performerObs) {
86
+ console.log(` ✓ Observation/${obs.id}`);
87
+ console.log(` Performed by: Practitioner/${practitionerId}`);
88
+ }
89
+ console.log();
90
+ // ============================================================================
91
+ // DEMO 5: Smart resource method
92
+ // ============================================================================
93
+ console.log("─".repeat(80));
94
+ console.log("DEMO 5: Using smart resource getReferencingResources() method");
95
+ console.log("─".repeat(80));
96
+ const patient = sdk.getPatientById(patientId);
97
+ if (patient) {
98
+ console.log(`\n👤 Patient: ${patient.name?.[0]?.family}, ${patient.name?.[0]?.given?.[0]}`);
99
+ console.log(` Gender: ${patient.gender}`);
100
+ console.log(` Birth Date: ${patient.birthDate}\n`);
101
+ // Use the smart resource method
102
+ const referencingResources = patient.getReferencingResources();
103
+ console.log(`📊 This patient is referenced by ${referencingResources.length} resources:\n`);
104
+ // Group by resource type
105
+ const byType = referencingResources.reduce((acc, r) => {
106
+ acc[r.resourceType] = (acc[r.resourceType] || 0) + 1;
107
+ return acc;
108
+ }, {});
109
+ for (const [type, count] of Object.entries(byType)) {
110
+ console.log(` • ${type}: ${count}`);
111
+ }
112
+ }
113
+ console.log();
114
+ // ============================================================================
115
+ // DEMO 6: Discover related encounters
116
+ // ============================================================================
117
+ console.log("─".repeat(80));
118
+ console.log("DEMO 6: Discover what happened during an encounter");
119
+ console.log("─".repeat(80));
120
+ const encounterId = "encounter-789";
121
+ console.log(`\n🏥 Finding all clinical activities during Encounter/${encounterId}...\n`);
122
+ const encounterReferences = sdk.getResourcesReferencingId(encounterId, {
123
+ referenceField: "encounter",
124
+ });
125
+ console.log(`Found ${encounterReferences.length} clinical record(s) from this encounter:\n`);
126
+ for (const resource of encounterReferences) {
127
+ const data = resource;
128
+ console.log(` 📋 ${resource.resourceType}/${resource.id}`);
129
+ if (resource.resourceType === "Observation") {
130
+ console.log(` Type: ${data.code?.text || "N/A"}`);
131
+ console.log(` Status: ${data.status}`);
132
+ } else if (resource.resourceType === "DiagnosticReport") {
133
+ console.log(` Type: ${data.code?.text || "N/A"}`);
134
+ console.log(` Status: ${data.status}`);
135
+ console.log(` Results: ${data.result?.length || 0} observation(s)`);
136
+ }
137
+ }
138
+ console.log();
139
+ // ============================================================================
140
+ // DEMO 7: Performance comparison
141
+ // ============================================================================
142
+ console.log("─".repeat(80));
143
+ console.log("DEMO 7: Performance - O(1) reverse lookup");
144
+ console.log("─".repeat(80));
145
+ console.log("\n⚡ Running 1000 reverse reference lookups...\n");
146
+ const iterations = 1000;
147
+ const startTime = performance.now();
148
+ for (let i = 0; i < iterations; i++) {
149
+ sdk.getResourcesReferencingId(patientId);
150
+ }
151
+ const endTime = performance.now();
152
+ const avgTime = (endTime - startTime) / iterations;
153
+ console.log(` Total time: ${(endTime - startTime).toFixed(2)}ms`);
154
+ console.log(` Average per lookup: ${avgTime.toFixed(4)}ms`);
155
+ console.log(
156
+ ` Performance: ${
157
+ avgTime < 0.1
158
+ ? "✅ Excellent (< 0.1ms)"
159
+ : avgTime < 1
160
+ ? "✅ Good (< 1ms)"
161
+ : "⚠️ Could be better"
162
+ }`
163
+ );
164
+ console.log();
165
+ // ============================================================================
166
+ // DEMO 8: Bi-directional reference navigation
167
+ // ============================================================================
168
+ console.log("─".repeat(80));
169
+ console.log("DEMO 8: Bi-directional reference navigation");
170
+ console.log("─".repeat(80));
171
+ console.log("\n🔄 Demonstrating forward and reverse reference navigation...\n");
172
+ const observation = sdk.getObservationById("observation-001");
173
+ if (observation) {
174
+ console.log(`Starting from: Observation/${observation.id}`);
175
+ console.log();
176
+ // Forward reference: Get the patient
177
+ console.log("➡️ Forward: observation.getSubject()");
178
+ const subject = observation.getSubject();
179
+ if (subject) {
180
+ console.log(` Found: ${subject.resourceType}/${subject.id}`);
181
+ console.log();
182
+ // Reverse reference: Get all resources referencing this patient
183
+ console.log("⬅️ Reverse: patient.getReferencingResources()");
184
+ const backReferences = subject.getReferencingResources();
185
+ console.log(` Found ${backReferences.length} resources referencing this patient:`);
186
+ for (const ref of backReferences) {
187
+ console.log(` • ${ref.resourceType}/${ref.id}`);
188
+ }
189
+ }
190
+ }
191
+ console.log();
192
+ // ============================================================================
193
+ console.log("=".repeat(80));
194
+ console.log("✨ Demo complete! All reverse reference features showcased.");
195
+ console.log("=".repeat(80));
196
+ }
197
+ // Run the demo
198
+ demonstrateReverseReferences()
199
+ .then(() => {
200
+ console.log("\n✅ Demo completed successfully\n");
201
+ process.exit(0);
202
+ })
203
+ .catch(error => {
204
+ console.error("\n❌ Demo failed:", error);
205
+ process.exit(1);
206
+ });
207
+ //# sourceMappingURL=demo-reverse-references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-reverse-references.js","sourceRoot":"","sources":["../src/demo-reverse-references.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAEH,mCAAwC;AACxC,oEAAwE;AAExE,KAAK,UAAU,4BAA4B;IACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,yCAAyC;IACzC,MAAM,GAAG,GAAG,MAAM,qBAAa,CAAC,MAAM,CAAC,kCAAmB,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,KAAK,YAAY,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,+EAA+E;IAC/E,sDAAsD;IACtD,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,MAAM,SAAS,GAAG,aAAa,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,qDAAqD,SAAS,OAAO,CAAC,CAAC;IAEnF,MAAM,kBAAkB,GAAG,GAAG,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAEpE,OAAO,CAAC,GAAG,CAAC,SAAS,kBAAkB,CAAC,MAAM,eAAe,CAAC,CAAC;IAC/D,KAAK,MAAM,QAAQ,IAAI,kBAAkB,EAAE;QACzC,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;KAC5D;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,+EAA+E;IAC/E,kCAAkC;IAClC,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,yDAAyD,SAAS,OAAO,CAAC,CAAC;IAEvF,MAAM,YAAY,GAAG,GAAG,CAAC,yBAAyB,CAAC,SAAS,EAAE;QAC5D,YAAY,EAAE,aAAa;KAC5B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,SAAS,YAAY,CAAC,MAAM,oBAAoB,CAAC,CAAC;IAC9D,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;QAC9B,MAAM,OAAO,GAAG,GAAU,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,aAAa,EAAE,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;KACzG;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,+EAA+E;IAC/E,oCAAoC;IACpC,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,iDAAiD,SAAS,2BAA2B,CAAC,CAAC;IAEnG,MAAM,iBAAiB,GAAG,GAAG,CAAC,yBAAyB,CAAC,SAAS,EAAE;QACjE,cAAc,EAAE,SAAS;KAC1B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,SAAS,iBAAiB,CAAC,MAAM,0CAA0C,CAAC,CAAC;IACzF,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE;QACxC,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;KAC5D;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,+EAA+E;IAC/E,2BAA2B;IAC3B,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,MAAM,cAAc,GAAG,kBAAkB,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,yDAAyD,cAAc,uBAAuB,CAAC,CAAC;IAE5G,MAAM,YAAY,GAAG,GAAG,CAAC,yBAAyB,CAAC,cAAc,EAAE;QACjE,YAAY,EAAE,aAAa;QAC3B,cAAc,EAAE,WAAW;KAC5B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,SAAS,YAAY,CAAC,MAAM,oBAAoB,CAAC,CAAC;IAC9D,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,kCAAkC,cAAc,EAAE,CAAC,CAAC;KACjE;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,+EAA+E;IAC/E,gCAAgC;IAChC,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;QAErD,gCAAgC;QAChC,MAAM,oBAAoB,GAAI,OAAe,CAAC,uBAAuB,EAAE,CAAC;QAExE,OAAO,CAAC,GAAG,CAAC,oCAAoC,oBAAoB,CAAC,MAAM,eAAe,CAAC,CAAC;QAE5F,yBAAyB;QACzB,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,CAAM,EAAE,EAAE;YAC9D,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACrD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAClD,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;SACtC;KACF;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,+EAA+E;IAC/E,sCAAsC;IACtC,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,MAAM,WAAW,GAAG,eAAe,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,yDAAyD,WAAW,OAAO,CAAC,CAAC;IAEzF,MAAM,mBAAmB,GAAG,GAAG,CAAC,yBAAyB,CAAC,WAAW,EAAE;QACrE,cAAc,EAAE,WAAW;KAC5B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,SAAS,mBAAmB,CAAC,MAAM,4CAA4C,CAAC,CAAC;IAC7F,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE;QAC1C,MAAM,IAAI,GAAG,QAAe,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAE5D,IAAI,QAAQ,CAAC,YAAY,KAAK,aAAa,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;SAC5C;aAAM,IAAI,QAAQ,CAAC,YAAY,KAAK,kBAAkB,EAAE;YACvD,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACzE;KACF;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,+EAA+E;IAC/E,iCAAiC;IACjC,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IAE/D,MAAM,UAAU,GAAG,IAAI,CAAC;IACxB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;QACnC,GAAG,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;KAC1C;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,UAAU,CAAC;IAEnD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACjI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,+EAA+E;IAC/E,8CAA8C;IAC9C,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IAEhF,MAAM,WAAW,GAAG,GAAG,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,IAAI,WAAW,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,8BAA8B,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,qCAAqC;QACrC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,gEAAgE;YAChE,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC9D,MAAM,cAAc,GAAI,OAAe,CAAC,uBAAuB,EAAE,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,aAAa,cAAc,CAAC,MAAM,sCAAsC,CAAC,CAAC;YACtF,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE;gBAChC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;aACtD;SACF;KACF;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,+EAA+E;IAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,eAAe;AACf,4BAA4B,EAAE;KAC3B,IAAI,CAAC,GAAG,EAAE;IACT,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;KACD,KAAK,CAAC,KAAK,CAAC,EAAE;IACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,4 +1,5 @@
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";
1
+ import { Bundle, BundleEntry, Resource } from "@medplum/fhirtypes";
2
+ import { SmartAllergyIntolerance, SmartCarePlan, SmartComposition, SmartCondition, SmartCoverage, SmartDiagnosticReport, SmartDocumentReference, SmartEncounter, SmartFamilyMemberHistory, SmartImmunization, SmartLocation, SmartMedication, SmartMedicationAdministration, SmartMedicationDispense, SmartMedicationRequest, SmartMedicationStatement, SmartObservation, SmartOrganization, SmartPatient, SmartPractitioner, SmartProcedure, SmartRelatedPerson, SmartRiskAssessment, SmartServiceRequest } from "./types/coding-fields";
2
3
  import { Smart } from "./types/smart-resources";
3
4
  import { ValidationResult, BundleDiffResult, WalkOptions, LLMContextOptions, WalkResult, ReverseReferenceOptions, DateRangeSearchOptions } from "./types/sdk-types";
4
5
  /**
@@ -98,57 +99,59 @@ export declare class FhirBundleSdk {
98
99
  * Generic helper method to get a resource by ID with type validation
99
100
  */
100
101
  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;
102
+ getPatientById: (id: string) => SmartPatient | undefined;
103
+ getObservationById: (id: string) => SmartObservation | undefined;
104
+ getEncounterById: (id: string) => SmartEncounter | undefined;
105
+ getAllergyIntoleranceById: (id: string) => SmartAllergyIntolerance | undefined;
106
+ getConditionById: (id: string) => SmartCondition | undefined;
107
+ getOrganizationById: (id: string) => SmartOrganization | undefined;
108
+ getLocationById: (id: string) => SmartLocation | undefined;
109
+ getPractitionerById: (id: string) => SmartPractitioner | undefined;
110
+ getDiagnosticReportById: (id: string) => SmartDiagnosticReport | undefined;
111
+ getCompositionById: (id: string) => SmartComposition | undefined;
112
+ getCoverageById: (id: string) => SmartCoverage | undefined;
113
+ getDocumentReferenceById: (id: string) => SmartDocumentReference | undefined;
114
+ getImmunizationById: (id: string) => SmartImmunization | undefined;
115
+ getMedicationById: (id: string) => SmartMedication | undefined;
116
+ getMedicationRequestById: (id: string) => SmartMedicationRequest | undefined;
117
+ getProcedureById: (id: string) => SmartProcedure | undefined;
118
+ getFamilyMemberHistoryById: (id: string) => SmartFamilyMemberHistory | undefined;
119
+ getMedicationAdministrationById: (id: string) => SmartMedicationAdministration | undefined;
120
+ getMedicationDispenseById: (id: string) => SmartMedicationDispense | undefined;
121
+ getMedicationStatementById: (id: string) => SmartMedicationStatement | undefined;
122
+ getRelatedPersonById: (id: string) => SmartRelatedPerson | undefined;
123
+ getRiskAssessmentById: (id: string) => SmartRiskAssessment | undefined;
124
+ getServiceRequestById: (id: string) => SmartServiceRequest | undefined;
125
+ getCarePlanById: (id: string) => SmartCarePlan | undefined;
124
126
  /**
125
127
  * Generic helper method to get all resources of a specific type
126
128
  * FR-10.1: Returns references to cached objects, not copies
127
129
  */
128
130
  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>[];
131
+ getPatients: () => SmartPatient[];
132
+ getObservations: () => SmartObservation[];
133
+ getEncounters: () => SmartEncounter[];
134
+ getPractitioners: () => SmartPractitioner[];
135
+ getDiagnosticReports: () => SmartDiagnosticReport[];
136
+ getAllergyIntolerances: () => SmartAllergyIntolerance[];
137
+ getConditions: () => SmartCondition[];
138
+ getOrganizations: () => SmartOrganization[];
139
+ getLocations: () => SmartLocation[];
140
+ getCompositions: () => SmartComposition[];
141
+ getCoverages: () => SmartCoverage[];
142
+ getDocumentReferences: () => SmartDocumentReference[];
143
+ getImmunizations: () => SmartImmunization[];
144
+ getMedications: () => SmartMedication[];
145
+ getMedicationRequests: () => SmartMedicationRequest[];
146
+ getProcedures: () => SmartProcedure[];
147
+ getFamilyMemberHistories: () => SmartFamilyMemberHistory[];
148
+ getMedicationAdministrations: () => SmartMedicationAdministration[];
149
+ getMedicationDispenses: () => SmartMedicationDispense[];
150
+ getMedicationStatements: () => SmartMedicationStatement[];
151
+ getRelatedPersons: () => SmartRelatedPerson[];
152
+ getRiskAssessments: () => SmartRiskAssessment[];
153
+ getServiceRequests: () => SmartServiceRequest[];
154
+ getCarePlans: () => SmartCarePlan[];
152
155
  /**
153
156
  * FR-6.1: Export subset of resources by their IDs
154
157
  * FR-6.4: Exported bundles maintain original bundle metadata but update total count
@@ -1 +1 @@
1
- {"version":3,"file":"fhir-bundle-sdk.d.ts","sourceRoot":"","sources":["../src/fhir-bundle-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fhir-bundle-sdk.d.ts","sourceRoot":"","sources":["../src/fhir-bundle-sdk.ts"],"names":[],"mappings":"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"}
@@ -152,9 +152,11 @@ class FhirBundleSdk {
152
152
  for (const resourceId of resourceIds) {
153
153
  const resource = this.getResourceById(resourceId);
154
154
  if (resource) {
155
- const originalEntry = (0, bundle_operations_1.findOriginalEntry)(this.bundle, resource);
155
+ // Cast to Resource to satisfy type checker - Smart extends Resource
156
+ const plainResource = resource;
157
+ const originalEntry = (0, bundle_operations_1.findOriginalEntry)(this.bundle, plainResource);
156
158
  if (originalEntry) {
157
- exportEntries.push((0, bundle_operations_1.createBundleEntry)(originalEntry, resource));
159
+ exportEntries.push((0, bundle_operations_1.createBundleEntry)(originalEntry, plainResource));
158
160
  }
159
161
  }
160
162
  // FR-6.5: Silently skip resources that don't exist
@@ -172,6 +174,7 @@ class FhirBundleSdk {
172
174
  for (const resource of resources) {
173
175
  const originalEntry = (0, bundle_operations_1.findOriginalEntry)(this.bundle, resource);
174
176
  if (originalEntry) {
177
+ // Resource is already a plain Resource from our internal maps
175
178
  exportEntries.push((0, bundle_operations_1.createBundleEntry)(originalEntry, resource));
176
179
  }
177
180
  }
@@ -511,6 +514,11 @@ FhirBundleSdk.RESOURCE_METHODS = [
511
514
  singleGetterMethodName: "getServiceRequestById",
512
515
  collectionGetterMethodName: "getServiceRequests",
513
516
  },
517
+ {
518
+ resourceType: "CarePlan",
519
+ singleGetterMethodName: "getCarePlanById",
520
+ collectionGetterMethodName: "getCarePlans",
521
+ },
514
522
  ];
515
523
  // Static initialization block to generate methods
516
524
  (() => {