@metriport/fhir-sdk 1.6.2 → 1.7.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.
- package/dist/__tests__/careplan.test.js +24 -22
- package/dist/__tests__/careplan.test.js.map +1 -1
- package/dist/__tests__/clinical-dates.test.js +25 -23
- package/dist/__tests__/clinical-dates.test.js.map +1 -1
- package/dist/__tests__/coding-utilities.test.js +9 -7
- package/dist/__tests__/coding-utilities.test.js.map +1 -1
- package/dist/__tests__/date-range-performance.test.js +4 -2
- package/dist/__tests__/date-range-performance.test.js.map +1 -1
- package/dist/__tests__/date-range-search.test.js +15 -13
- package/dist/__tests__/date-range-search.test.js.map +1 -1
- package/dist/__tests__/env-setup.js +32 -4
- package/dist/__tests__/env-setup.js.map +1 -1
- package/dist/__tests__/fhir-bundle-sdk-basic.test.js +6 -4
- package/dist/__tests__/fhir-bundle-sdk-basic.test.js.map +1 -1
- package/dist/__tests__/fhir-bundle-sdk.test.js +87 -85
- package/dist/__tests__/fhir-bundle-sdk.test.js.map +1 -1
- package/dist/__tests__/fixtures/fhir-bundles.d.ts +1 -1
- package/dist/__tests__/fixtures/fhir-bundles.d.ts.map +1 -1
- package/dist/__tests__/fixtures/fhir-bundles.js +17 -11
- package/dist/__tests__/fixtures/fhir-bundles.js.map +1 -1
- package/dist/__tests__/phase1-verification.test.js +12 -10
- package/dist/__tests__/phase1-verification.test.js.map +1 -1
- package/dist/__tests__/phase2-verification.test.js +16 -14
- package/dist/__tests__/phase2-verification.test.js.map +1 -1
- package/dist/__tests__/phase3-verification.test.js +17 -15
- package/dist/__tests__/phase3-verification.test.js.map +1 -1
- package/dist/__tests__/phase4-verification.test.js +29 -27
- package/dist/__tests__/phase4-verification.test.js.map +1 -1
- package/dist/__tests__/phase5-verification.test.js +40 -38
- package/dist/__tests__/phase5-verification.test.js.map +1 -1
- package/dist/__tests__/reverse-references.test.js +31 -29
- package/dist/__tests__/reverse-references.test.js.map +1 -1
- package/dist/__tests__/type-guards.test.js +18 -16
- package/dist/__tests__/type-guards.test.js.map +1 -1
- package/dist/clinical-dates.js +5 -1
- package/dist/clinical-dates.js.map +1 -1
- package/dist/fhir-bundle-sdk.js +38 -34
- package/dist/fhir-bundle-sdk.js.map +1 -1
- package/dist/index.js +22 -4
- package/dist/index.js.map +1 -1
- package/dist/internal/bundle-operations.js +9 -3
- package/dist/internal/bundle-operations.js.map +1 -1
- package/dist/internal/coding-systems.d.ts +12 -12
- package/dist/internal/coding-systems.js +18 -15
- package/dist/internal/coding-systems.js.map +1 -1
- package/dist/internal/coding-utilities.js +23 -15
- package/dist/internal/coding-utilities.js.map +1 -1
- package/dist/internal/date-extraction.js +7 -2
- package/dist/internal/date-extraction.js.map +1 -1
- package/dist/internal/graph-traversal.js +7 -3
- package/dist/internal/graph-traversal.js.map +1 -1
- package/dist/internal/indexing.js +15 -9
- package/dist/internal/indexing.js.map +1 -1
- package/dist/internal/llm-context.js +17 -8
- package/dist/internal/llm-context.js.map +1 -1
- package/dist/internal/reference-resolution.js +32 -25
- package/dist/internal/reference-resolution.js.map +1 -1
- package/dist/internal/reference-utils.js +11 -4
- package/dist/internal/reference-utils.js.map +1 -1
- package/dist/internal/transparent-proxy.js +14 -10
- package/dist/internal/transparent-proxy.js.map +1 -1
- package/dist/internal/validation.js +8 -4
- package/dist/internal/validation.js.map +1 -1
- package/dist/type-guards.d.ts +134 -105
- package/dist/type-guards.d.ts.map +1 -1
- package/dist/type-guards.js +322 -26
- package/dist/type-guards.js.map +1 -1
- package/dist/types/coding-fields.js +2 -1
- package/dist/types/sdk-types.js +5 -1
- package/dist/types/sdk-types.js.map +1 -1
- package/dist/types/smart-resources.js +10 -5
- package/dist/types/smart-resources.js.map +1 -1
- package/dist/utils/interval-tree/index.js +19 -10
- package/dist/utils/interval-tree/index.js.map +1 -1
- package/dist/utils/interval-tree/shallowequal/arrays.js +4 -1
- package/dist/utils/interval-tree/shallowequal/arrays.js.map +1 -1
- package/dist/utils/interval-tree/shallowequal/index.js +13 -5
- package/dist/utils/interval-tree/shallowequal/index.js.map +1 -1
- package/dist/utils/interval-tree/shallowequal/objects.js +4 -1
- package/dist/utils/interval-tree/shallowequal/objects.js.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexing.js","sourceRoot":"","sources":["../../src/internal/indexing.ts"],"names":[],"mappings":"AAIA,
|
|
1
|
+
{"version":3,"file":"indexing.js","sourceRoot":"","sources":["../../src/internal/indexing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateLLMContext = exports.formatAsJSON = exports.formatAsStructuredText = exports.formatResourceAsText = exports.groupResourcesByType = exports.stripNonClinicalData = void 0;
|
|
4
|
+
const smart_resources_1 = require("../types/smart-resources");
|
|
2
5
|
/**
|
|
3
6
|
* Build a set of all reference field names from REFERENCE_METHOD_MAPPING.
|
|
4
7
|
* Extracts base field names, handling nested paths (e.g., "participant.individual" -> "participant")
|
|
5
8
|
*/
|
|
6
9
|
function buildReferenceFieldSet() {
|
|
7
10
|
const fields = new Set();
|
|
8
|
-
for (const resourceMapping of Object.values(REFERENCE_METHOD_MAPPING)) {
|
|
11
|
+
for (const resourceMapping of Object.values(smart_resources_1.REFERENCE_METHOD_MAPPING)) {
|
|
9
12
|
for (const fieldPath of Object.values(resourceMapping)) {
|
|
10
13
|
// Handle nested paths - take the first part
|
|
11
14
|
const parts = fieldPath.split(".");
|
|
@@ -24,7 +27,7 @@ const REFERENCE_FIELDS = buildReferenceFieldSet();
|
|
|
24
27
|
* defined in REFERENCE_METHOD_MAPPING
|
|
25
28
|
* Returns an immutable copy without mutating the original.
|
|
26
29
|
*/
|
|
27
|
-
|
|
30
|
+
function stripNonClinicalData(resource) {
|
|
28
31
|
function deepCloneAndStrip(obj, resourceType) {
|
|
29
32
|
if (obj === null || obj === undefined) {
|
|
30
33
|
return obj;
|
|
@@ -53,10 +56,11 @@ export function stripNonClinicalData(resource) {
|
|
|
53
56
|
}
|
|
54
57
|
return deepCloneAndStrip(resource, resource.resourceType);
|
|
55
58
|
}
|
|
59
|
+
exports.stripNonClinicalData = stripNonClinicalData;
|
|
56
60
|
/**
|
|
57
61
|
* Group resources by their resource type
|
|
58
62
|
*/
|
|
59
|
-
|
|
63
|
+
function groupResourcesByType(resources) {
|
|
60
64
|
const grouped = {};
|
|
61
65
|
for (const resource of resources) {
|
|
62
66
|
const type = resource.resourceType;
|
|
@@ -70,10 +74,11 @@ export function groupResourcesByType(resources) {
|
|
|
70
74
|
}
|
|
71
75
|
return grouped;
|
|
72
76
|
}
|
|
77
|
+
exports.groupResourcesByType = groupResourcesByType;
|
|
73
78
|
/**
|
|
74
79
|
* Format a single resource as readable text
|
|
75
80
|
*/
|
|
76
|
-
|
|
81
|
+
function formatResourceAsText(resource) {
|
|
77
82
|
const lines = [];
|
|
78
83
|
lines.push(`[Type: ${resource.resourceType}, ID: ${resource.id ?? "unknown"}]`);
|
|
79
84
|
function formatValue(value, indent = 2) {
|
|
@@ -110,10 +115,11 @@ export function formatResourceAsText(resource) {
|
|
|
110
115
|
}
|
|
111
116
|
return lines.join("\n");
|
|
112
117
|
}
|
|
118
|
+
exports.formatResourceAsText = formatResourceAsText;
|
|
113
119
|
/**
|
|
114
120
|
* Format resources as structured text for better LLM readability
|
|
115
121
|
*/
|
|
116
|
-
|
|
122
|
+
function formatAsStructuredText(resourcesByDepth) {
|
|
117
123
|
const lines = [];
|
|
118
124
|
// Primary resource section
|
|
119
125
|
const primaryResources = resourcesByDepth.get(0) ?? [];
|
|
@@ -144,10 +150,11 @@ export function formatAsStructuredText(resourcesByDepth) {
|
|
|
144
150
|
}
|
|
145
151
|
return lines.join("\n");
|
|
146
152
|
}
|
|
153
|
+
exports.formatAsStructuredText = formatAsStructuredText;
|
|
147
154
|
/**
|
|
148
155
|
* Format resources as JSON with depth annotations
|
|
149
156
|
*/
|
|
150
|
-
|
|
157
|
+
function formatAsJSON(resourcesByDepth) {
|
|
151
158
|
const relatedResourcesByDepth = {};
|
|
152
159
|
for (const [depth, resources] of resourcesByDepth.entries()) {
|
|
153
160
|
if (depth === 0)
|
|
@@ -160,6 +167,7 @@ export function formatAsJSON(resourcesByDepth) {
|
|
|
160
167
|
};
|
|
161
168
|
return JSON.stringify(output, null, 2);
|
|
162
169
|
}
|
|
170
|
+
exports.formatAsJSON = formatAsJSON;
|
|
163
171
|
/**
|
|
164
172
|
* Generate LLM-friendly context from a starting resource and its related resources.
|
|
165
173
|
* Uses BFS to discover related resources, strips non-clinical data, and formats output.
|
|
@@ -169,7 +177,7 @@ export function formatAsJSON(resourcesByDepth) {
|
|
|
169
177
|
* @param walkReferencesFn - Function to walk references (passed in to avoid circular dependency)
|
|
170
178
|
* @returns Formatted string suitable for LLM context
|
|
171
179
|
*/
|
|
172
|
-
|
|
180
|
+
function generateLLMContext(startResource, options, walkReferencesFn) {
|
|
173
181
|
const maxDepth = options?.maxDepth ?? 2;
|
|
174
182
|
const includeStartResource = options?.includeStartResource ?? true;
|
|
175
183
|
const format = options?.format ?? "structured-text";
|
|
@@ -202,4 +210,5 @@ export function generateLLMContext(startResource, options, walkReferencesFn) {
|
|
|
202
210
|
return formatAsStructuredText(cleanedResourcesByDepth);
|
|
203
211
|
}
|
|
204
212
|
}
|
|
213
|
+
exports.generateLLMContext = generateLLMContext;
|
|
205
214
|
//# sourceMappingURL=llm-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-context.js","sourceRoot":"","sources":["../../src/internal/llm-context.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"llm-context.js","sourceRoot":"","sources":["../../src/internal/llm-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSmartResource = exports.resolveReference = exports.resolveReferenceObject = exports.isArrayReferenceField = void 0;
|
|
4
|
+
const util_1 = require("util");
|
|
5
|
+
const smart_resources_1 = require("../types/smart-resources");
|
|
6
|
+
const coding_utilities_1 = require("./coding-utilities");
|
|
7
|
+
const transparent_proxy_1 = require("./transparent-proxy");
|
|
5
8
|
/**
|
|
6
9
|
* Navigate through a nested path in a resource to get the value at that path.
|
|
7
10
|
* Handles both simple paths ("subject") and nested paths ("diagnosis.condition").
|
|
@@ -54,7 +57,7 @@ function getNestedValue(resource, path) {
|
|
|
54
57
|
* For nested paths, if the intermediate level is an array, the method returns an array.
|
|
55
58
|
* For example, "diagnosis.condition" returns an array because diagnosis is an array field.
|
|
56
59
|
*/
|
|
57
|
-
|
|
60
|
+
function isArrayReferenceField(fieldName) {
|
|
58
61
|
// Known simple array reference fields
|
|
59
62
|
const arrayFields = new Set(["performer", "participant", "result", "generalPractitioner"]);
|
|
60
63
|
// Check if this is a simple array field
|
|
@@ -91,11 +94,12 @@ export function isArrayReferenceField(fieldName) {
|
|
|
91
94
|
}
|
|
92
95
|
return false;
|
|
93
96
|
}
|
|
97
|
+
exports.isArrayReferenceField = isArrayReferenceField;
|
|
94
98
|
/**
|
|
95
99
|
* Resolve a single reference object to a resource
|
|
96
100
|
* FR-5.5: Reference resolution methods handle both resource.id and fullUrl matching
|
|
97
101
|
*/
|
|
98
|
-
|
|
102
|
+
function resolveReferenceObject(referenceObj, resourcesById, resourcesByFullUrl, resolutionStack) {
|
|
99
103
|
if (!referenceObj || typeof referenceObj !== "object" || !("reference" in referenceObj)) {
|
|
100
104
|
return undefined;
|
|
101
105
|
}
|
|
@@ -123,12 +127,13 @@ export function resolveReferenceObject(referenceObj, resourcesById, resourcesByF
|
|
|
123
127
|
resolutionStack.delete(reference);
|
|
124
128
|
}
|
|
125
129
|
}
|
|
130
|
+
exports.resolveReferenceObject = resolveReferenceObject;
|
|
126
131
|
/**
|
|
127
132
|
* Resolve a reference method call to actual resources
|
|
128
133
|
* FR-5.2-5.6: Handle different reference types and patterns
|
|
129
134
|
*/
|
|
130
|
-
|
|
131
|
-
const referenceField = getReferenceField(methodName, resource.resourceType);
|
|
135
|
+
function resolveReference(methodName, resource, resourcesById, resourcesByFullUrl, resolutionStack, createSmartResourceFn) {
|
|
136
|
+
const referenceField = (0, smart_resources_1.getReferenceField)(methodName, resource.resourceType);
|
|
132
137
|
if (!referenceField) {
|
|
133
138
|
return undefined;
|
|
134
139
|
}
|
|
@@ -157,13 +162,14 @@ export function resolveReference(methodName, resource, resourcesById, resourcesB
|
|
|
157
162
|
}
|
|
158
163
|
return undefined;
|
|
159
164
|
}
|
|
165
|
+
exports.resolveReference = resolveReference;
|
|
160
166
|
/**
|
|
161
167
|
* Create a smart resource with reference resolution methods
|
|
162
168
|
* FR-5.1: Resources returned by SDK have additional getter methods for each Reference field
|
|
163
169
|
* FR-5.7: Reference resolution operates in O(1) time complexity per reference
|
|
164
170
|
* FR-5.8: Original reference fields remain unchanged
|
|
165
171
|
*/
|
|
166
|
-
|
|
172
|
+
function createSmartResource(resource, smartResourceCache, resourcesById, resourcesByFullUrl, resolutionStack, getResourcesReferencingIdFn) {
|
|
167
173
|
// Check cache first to maintain object identity
|
|
168
174
|
const cached = smartResourceCache.get(resource);
|
|
169
175
|
if (cached) {
|
|
@@ -189,7 +195,7 @@ export function createSmartResource(resource, smartResourceCache, resourcesById,
|
|
|
189
195
|
if (prop === "getReferencedResources") {
|
|
190
196
|
return () => {
|
|
191
197
|
const referencedResources = [];
|
|
192
|
-
const referenceMethods = REFERENCE_METHOD_MAPPING[target.resourceType];
|
|
198
|
+
const referenceMethods = smart_resources_1.REFERENCE_METHOD_MAPPING[target.resourceType];
|
|
193
199
|
if (!referenceMethods) {
|
|
194
200
|
return referencedResources;
|
|
195
201
|
}
|
|
@@ -218,7 +224,7 @@ export function createSmartResource(resource, smartResourceCache, resourcesById,
|
|
|
218
224
|
};
|
|
219
225
|
}
|
|
220
226
|
// Handle Node.js util.inspect.custom for console.log and REPL
|
|
221
|
-
if (prop === inspect.custom) {
|
|
227
|
+
if (prop === util_1.inspect.custom) {
|
|
222
228
|
return () => {
|
|
223
229
|
return JSON.stringify(target, null, 2);
|
|
224
230
|
};
|
|
@@ -232,7 +238,7 @@ export function createSmartResource(resource, smartResourceCache, resourcesById,
|
|
|
232
238
|
return () => target;
|
|
233
239
|
}
|
|
234
240
|
// Check if this is a reference method call
|
|
235
|
-
if (typeof prop === "string" && isReferenceMethod(prop, target.resourceType)) {
|
|
241
|
+
if (typeof prop === "string" && (0, smart_resources_1.isReferenceMethod)(prop, target.resourceType)) {
|
|
236
242
|
return () => resolveReference(prop, target, resourcesById, resourcesByFullUrl, resolutionStack, res => createSmartResource(res, smartResourceCache, resourcesById, resourcesByFullUrl, resolutionStack, getResourcesReferencingIdFn));
|
|
237
243
|
}
|
|
238
244
|
// Get the property value
|
|
@@ -242,12 +248,12 @@ export function createSmartResource(resource, smartResourceCache, resourcesById,
|
|
|
242
248
|
return value;
|
|
243
249
|
}
|
|
244
250
|
// Wrap CodeableConcept objects (check before Coding to avoid misidentification)
|
|
245
|
-
if (isCodeableConcept(value)) {
|
|
246
|
-
return createSmartCodeableConcept(value);
|
|
251
|
+
if ((0, coding_utilities_1.isCodeableConcept)(value)) {
|
|
252
|
+
return (0, coding_utilities_1.createSmartCodeableConcept)(value);
|
|
247
253
|
}
|
|
248
254
|
// Wrap Coding objects
|
|
249
|
-
if (isCoding(value)) {
|
|
250
|
-
return createSmartCoding(value);
|
|
255
|
+
if ((0, coding_utilities_1.isCoding)(value)) {
|
|
256
|
+
return (0, coding_utilities_1.createSmartCoding)(value);
|
|
251
257
|
}
|
|
252
258
|
// Handle arrays - wrap each element if needed
|
|
253
259
|
if (Array.isArray(value)) {
|
|
@@ -256,16 +262,16 @@ export function createSmartResource(resource, smartResourceCache, resourcesById,
|
|
|
256
262
|
return item;
|
|
257
263
|
}
|
|
258
264
|
// Check CodeableConcept before Coding
|
|
259
|
-
if (isCodeableConcept(item)) {
|
|
260
|
-
return createSmartCodeableConcept(item);
|
|
265
|
+
if ((0, coding_utilities_1.isCodeableConcept)(item)) {
|
|
266
|
+
return (0, coding_utilities_1.createSmartCodeableConcept)(item);
|
|
261
267
|
}
|
|
262
|
-
if (isCoding(item)) {
|
|
263
|
-
return createSmartCoding(item);
|
|
268
|
+
if ((0, coding_utilities_1.isCoding)(item)) {
|
|
269
|
+
return (0, coding_utilities_1.createSmartCoding)(item);
|
|
264
270
|
}
|
|
265
271
|
// Recursively wrap plain objects with transparent proxy
|
|
266
272
|
// Only wrap plain objects, not built-in types
|
|
267
273
|
if (typeof item === "object" && !Array.isArray(item) && item.constructor === Object) {
|
|
268
|
-
return createTransparentProxy(item);
|
|
274
|
+
return (0, transparent_proxy_1.createTransparentProxy)(item);
|
|
269
275
|
}
|
|
270
276
|
return item;
|
|
271
277
|
});
|
|
@@ -273,7 +279,7 @@ export function createSmartResource(resource, smartResourceCache, resourcesById,
|
|
|
273
279
|
// Recursively wrap plain objects with transparent proxy (but not primitives, dates, etc.)
|
|
274
280
|
// Only wrap plain objects, not built-in types like Date, RegExp, etc.
|
|
275
281
|
if (typeof value === "object" && !Array.isArray(value) && value.constructor === Object) {
|
|
276
|
-
return createTransparentProxy(value);
|
|
282
|
+
return (0, transparent_proxy_1.createTransparentProxy)(value);
|
|
277
283
|
}
|
|
278
284
|
// Return original property for primitives and other types
|
|
279
285
|
return value;
|
|
@@ -287,7 +293,7 @@ export function createSmartResource(resource, smartResourceCache, resourcesById,
|
|
|
287
293
|
"toString",
|
|
288
294
|
];
|
|
289
295
|
// Add reference methods for this resource type
|
|
290
|
-
const referenceMethods = REFERENCE_METHOD_MAPPING[target.resourceType];
|
|
296
|
+
const referenceMethods = smart_resources_1.REFERENCE_METHOD_MAPPING[target.resourceType];
|
|
291
297
|
if (referenceMethods) {
|
|
292
298
|
virtualMethods.push(...Object.keys(referenceMethods));
|
|
293
299
|
}
|
|
@@ -299,7 +305,7 @@ export function createSmartResource(resource, smartResourceCache, resourcesById,
|
|
|
299
305
|
if (prop === "__isSmartResource" ||
|
|
300
306
|
prop === Symbol.toStringTag ||
|
|
301
307
|
prop === "toJSON" ||
|
|
302
|
-
prop === inspect.custom) {
|
|
308
|
+
prop === util_1.inspect.custom) {
|
|
303
309
|
return undefined;
|
|
304
310
|
}
|
|
305
311
|
// Make virtual methods enumerable for DevTools
|
|
@@ -313,7 +319,7 @@ export function createSmartResource(resource, smartResourceCache, resourcesById,
|
|
|
313
319
|
};
|
|
314
320
|
}
|
|
315
321
|
// Make reference methods enumerable for DevTools
|
|
316
|
-
const referenceMethods = REFERENCE_METHOD_MAPPING[target.resourceType];
|
|
322
|
+
const referenceMethods = smart_resources_1.REFERENCE_METHOD_MAPPING[target.resourceType];
|
|
317
323
|
if (referenceMethods && typeof prop === "string" && prop in referenceMethods) {
|
|
318
324
|
return {
|
|
319
325
|
enumerable: true,
|
|
@@ -328,4 +334,5 @@ export function createSmartResource(resource, smartResourceCache, resourcesById,
|
|
|
328
334
|
smartResourceCache.set(resource, smartResource);
|
|
329
335
|
return smartResource;
|
|
330
336
|
}
|
|
337
|
+
exports.createSmartResource = createSmartResource;
|
|
331
338
|
//# sourceMappingURL=reference-resolution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-resolution.js","sourceRoot":"","sources":["../../src/internal/reference-resolution.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"reference-resolution.js","sourceRoot":"","sources":["../../src/internal/reference-resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.canResolveReference = exports.normalizeReferenceField = exports.extractTargetIdFromReference = exports.findAllReferences = void 0;
|
|
1
4
|
/**
|
|
2
5
|
* Find all Reference fields in a resource recursively
|
|
3
6
|
*/
|
|
4
|
-
|
|
7
|
+
function findAllReferences(resource) {
|
|
5
8
|
const references = [];
|
|
6
9
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
7
10
|
function searchObject(obj, path = "") {
|
|
@@ -32,10 +35,11 @@ export function findAllReferences(resource) {
|
|
|
32
35
|
searchObject(resource);
|
|
33
36
|
return references;
|
|
34
37
|
}
|
|
38
|
+
exports.findAllReferences = findAllReferences;
|
|
35
39
|
/**
|
|
36
40
|
* Extract target resource ID from a reference string
|
|
37
41
|
*/
|
|
38
|
-
|
|
42
|
+
function extractTargetIdFromReference(reference) {
|
|
39
43
|
if (!reference) {
|
|
40
44
|
return undefined;
|
|
41
45
|
}
|
|
@@ -47,25 +51,27 @@ export function extractTargetIdFromReference(reference) {
|
|
|
47
51
|
// Handle other reference patterns (e.g., "urn:uuid:xxx")
|
|
48
52
|
return reference;
|
|
49
53
|
}
|
|
54
|
+
exports.extractTargetIdFromReference = extractTargetIdFromReference;
|
|
50
55
|
/**
|
|
51
56
|
* Normalize reference field path to base field name
|
|
52
57
|
* e.g., "participant.individual" -> "participant"
|
|
53
58
|
* "performer[0]" -> "performer"
|
|
54
59
|
*/
|
|
55
|
-
|
|
60
|
+
function normalizeReferenceField(field) {
|
|
56
61
|
// Remove array indices
|
|
57
62
|
const withoutIndices = field.replace(/\[\d+\]/g, "");
|
|
58
63
|
// Take first part of dotted path
|
|
59
64
|
const parts = withoutIndices.split(".");
|
|
60
65
|
return parts[0] ?? field;
|
|
61
66
|
}
|
|
67
|
+
exports.normalizeReferenceField = normalizeReferenceField;
|
|
62
68
|
/**
|
|
63
69
|
* Check if a reference can be resolved within the bundle
|
|
64
70
|
* @param reference - The reference string to check
|
|
65
71
|
* @param resourcesById - Map of resources indexed by resource.id
|
|
66
72
|
* @param resourcesByFullUrl - Map of resources indexed by entry.fullUrl
|
|
67
73
|
*/
|
|
68
|
-
|
|
74
|
+
function canResolveReference(reference, resourcesById, resourcesByFullUrl) {
|
|
69
75
|
// Try to resolve by resource ID (e.g., "Patient/123")
|
|
70
76
|
if (reference.includes("/")) {
|
|
71
77
|
const [, resourceId] = reference.split("/");
|
|
@@ -79,4 +85,5 @@ export function canResolveReference(reference, resourcesById, resourcesByFullUrl
|
|
|
79
85
|
}
|
|
80
86
|
return false;
|
|
81
87
|
}
|
|
88
|
+
exports.canResolveReference = canResolveReference;
|
|
82
89
|
//# sourceMappingURL=reference-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-utils.js","sourceRoot":"","sources":["../../src/internal/reference-utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"reference-utils.js","sourceRoot":"","sources":["../../src/internal/reference-utils.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,SAAgB,iBAAiB,CAAC,QAAkB;IAClD,MAAM,UAAU,GAAgD,EAAE,CAAC;IAEnE,8DAA8D;IAC9D,SAAS,YAAY,CAAC,GAAQ,EAAE,IAAI,GAAG,EAAE;QACvC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACnC,OAAO;SACR;QAED,sCAAsC;QACtC,IAAI,GAAG,CAAC,SAAS,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE;YACtD,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,IAAI,IAAI,WAAW;gBAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;aACzB,CAAC,CAAC;YACH,OAAO;SACR;QAED,uCAAuC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAElD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC5B,YAAY,CAAC,IAAI,EAAE,GAAG,WAAW,IAAI,KAAK,GAAG,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;aACJ;iBAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7C,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;aAClC;SACF;IACH,CAAC;IAED,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvB,OAAO,UAAU,CAAC;AACpB,CAAC;AAlCD,8CAkCC;AAED;;GAEG;AACH,SAAgB,4BAA4B,CAAC,SAAiB;IAC5D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,SAAS,CAAC;KAClB;IAED,mCAAmC;IACnC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAChC;IAED,yDAAyD;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAbD,oEAaC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,KAAa;IACnD,uBAAuB;IACvB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACrD,iCAAiC;IACjC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAC3B,CAAC;AAND,0DAMC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,SAAiB,EACjB,aAAoC,EACpC,kBAAyC;IAEzC,sDAAsD;IACtD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,UAAU,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC;SACb;KACF;IAED,mDAAmD;IACnD,IAAI,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QACrC,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAnBD,kDAmBC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createTransparentProxy = void 0;
|
|
4
|
+
const coding_utilities_1 = require("./coding-utilities");
|
|
2
5
|
/**
|
|
3
6
|
* Cache for transparent proxy objects to maintain object identity
|
|
4
7
|
*/
|
|
@@ -13,7 +16,7 @@ const transparentProxyCache = new WeakMap();
|
|
|
13
16
|
* @param obj - The plain object to wrap
|
|
14
17
|
* @returns A proxied object that wraps Coding/CodeableConcept on access
|
|
15
18
|
*/
|
|
16
|
-
|
|
19
|
+
function createTransparentProxy(obj) {
|
|
17
20
|
// Check cache first to maintain object identity
|
|
18
21
|
const cached = transparentProxyCache.get(obj);
|
|
19
22
|
if (cached) {
|
|
@@ -27,12 +30,12 @@ export function createTransparentProxy(obj) {
|
|
|
27
30
|
return value;
|
|
28
31
|
}
|
|
29
32
|
// Wrap CodeableConcept objects (check before Coding to avoid misidentification)
|
|
30
|
-
if (isCodeableConcept(value)) {
|
|
31
|
-
return createSmartCodeableConcept(value);
|
|
33
|
+
if ((0, coding_utilities_1.isCodeableConcept)(value)) {
|
|
34
|
+
return (0, coding_utilities_1.createSmartCodeableConcept)(value);
|
|
32
35
|
}
|
|
33
36
|
// Wrap Coding objects
|
|
34
|
-
if (isCoding(value)) {
|
|
35
|
-
return createSmartCoding(value);
|
|
37
|
+
if ((0, coding_utilities_1.isCoding)(value)) {
|
|
38
|
+
return (0, coding_utilities_1.createSmartCoding)(value);
|
|
36
39
|
}
|
|
37
40
|
// Handle arrays - wrap each element if needed
|
|
38
41
|
if (Array.isArray(value)) {
|
|
@@ -41,11 +44,11 @@ export function createTransparentProxy(obj) {
|
|
|
41
44
|
return item;
|
|
42
45
|
}
|
|
43
46
|
// Check CodeableConcept before Coding
|
|
44
|
-
if (isCodeableConcept(item)) {
|
|
45
|
-
return createSmartCodeableConcept(item);
|
|
47
|
+
if ((0, coding_utilities_1.isCodeableConcept)(item)) {
|
|
48
|
+
return (0, coding_utilities_1.createSmartCodeableConcept)(item);
|
|
46
49
|
}
|
|
47
|
-
if (isCoding(item)) {
|
|
48
|
-
return createSmartCoding(item);
|
|
50
|
+
if ((0, coding_utilities_1.isCoding)(item)) {
|
|
51
|
+
return (0, coding_utilities_1.createSmartCoding)(item);
|
|
49
52
|
}
|
|
50
53
|
// Recursively wrap plain objects, not built-in types
|
|
51
54
|
if (typeof item === "object" && !Array.isArray(item) && item.constructor === Object) {
|
|
@@ -74,4 +77,5 @@ export function createTransparentProxy(obj) {
|
|
|
74
77
|
transparentProxyCache.set(obj, proxy);
|
|
75
78
|
return proxy;
|
|
76
79
|
}
|
|
80
|
+
exports.createTransparentProxy = createTransparentProxy;
|
|
77
81
|
//# sourceMappingURL=transparent-proxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transparent-proxy.js","sourceRoot":"","sources":["../../src/internal/transparent-proxy.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"transparent-proxy.js","sourceRoot":"","sources":["../../src/internal/transparent-proxy.ts"],"names":[],"mappings":";;;AAAA,yDAK4B;AAE5B;;GAEG;AACH,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAAkB,CAAC;AAE5D;;;;;;;;;GASG;AACH,SAAgB,sBAAsB,CAAmB,GAAM;IAC7D,gDAAgD;IAChD,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE;QACV,OAAO,MAAW,CAAC;KACpB;IAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;QAC3B,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAElD,+BAA+B;YAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;gBACzC,OAAO,KAAK,CAAC;aACd;YAED,gFAAgF;YAChF,IAAI,IAAA,oCAAiB,EAAC,KAAK,CAAC,EAAE;gBAC5B,OAAO,IAAA,6CAA0B,EAAC,KAAK,CAAC,CAAC;aAC1C;YAED,sBAAsB;YACtB,IAAI,IAAA,2BAAQ,EAAC,KAAK,CAAC,EAAE;gBACnB,OAAO,IAAA,oCAAiB,EAAC,KAAK,CAAC,CAAC;aACjC;YAED,8CAA8C;YAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACtB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;wBACvC,OAAO,IAAI,CAAC;qBACb;oBACD,sCAAsC;oBACtC,IAAI,IAAA,oCAAiB,EAAC,IAAI,CAAC,EAAE;wBAC3B,OAAO,IAAA,6CAA0B,EAAC,IAAI,CAAC,CAAC;qBACzC;oBACD,IAAI,IAAA,2BAAQ,EAAC,IAAI,CAAC,EAAE;wBAClB,OAAO,IAAA,oCAAiB,EAAC,IAAI,CAAC,CAAC;qBAChC;oBACD,qDAAqD;oBACrD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE;wBACnF,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;qBACrC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;aACJ;YAED,mEAAmE;YACnE,sEAAsE;YACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,EAAE;gBACtF,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;aACtC;YAED,2DAA2D;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,uDAAuD;QACvD,OAAO,EAAE,MAAM,CAAC,EAAE;YAChB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,wBAAwB,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YACzC,OAAO,OAAO,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxD,CAAC;KACF,CAAM,CAAC;IAER,kBAAkB;IAClB,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,KAAK,CAAC;AACf,CAAC;AAvED,wDAuEC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.lookForBrokenReferences = void 0;
|
|
4
|
+
const reference_utils_1 = require("./reference-utils");
|
|
2
5
|
/**
|
|
3
6
|
* Validate all references in the bundle
|
|
4
7
|
* FR-2.1: Validate all references in the bundle
|
|
@@ -11,7 +14,7 @@ import { findAllReferences, canResolveReference } from "./reference-utils";
|
|
|
11
14
|
* @param resourcesByFullUrl - Map of resources indexed by entry.fullUrl
|
|
12
15
|
* @returns ValidationResult with broken reference details
|
|
13
16
|
*/
|
|
14
|
-
|
|
17
|
+
function lookForBrokenReferences(bundle, resourcesById, resourcesByFullUrl) {
|
|
15
18
|
const brokenReferences = [];
|
|
16
19
|
if (!bundle.entry) {
|
|
17
20
|
return { hasBrokenReferences: false, brokenReferences: [] };
|
|
@@ -21,9 +24,9 @@ export function lookForBrokenReferences(bundle, resourcesById, resourcesByFullUr
|
|
|
21
24
|
continue;
|
|
22
25
|
}
|
|
23
26
|
const resource = entry.resource;
|
|
24
|
-
const resourceReferences = findAllReferences(resource);
|
|
27
|
+
const resourceReferences = (0, reference_utils_1.findAllReferences)(resource);
|
|
25
28
|
for (const { field, reference } of resourceReferences) {
|
|
26
|
-
if (!canResolveReference(reference, resourcesById, resourcesByFullUrl)) {
|
|
29
|
+
if (!(0, reference_utils_1.canResolveReference)(reference, resourcesById, resourcesByFullUrl)) {
|
|
27
30
|
brokenReferences.push({
|
|
28
31
|
sourceResourceId: resource.id || entry.fullUrl || "unknown",
|
|
29
32
|
sourceResourceType: resource.resourceType,
|
|
@@ -38,4 +41,5 @@ export function lookForBrokenReferences(bundle, resourcesById, resourcesByFullUr
|
|
|
38
41
|
brokenReferences: brokenReferences,
|
|
39
42
|
};
|
|
40
43
|
}
|
|
44
|
+
exports.lookForBrokenReferences = lookForBrokenReferences;
|
|
41
45
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/internal/validation.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/internal/validation.ts"],"names":[],"mappings":";;;AAEA,uDAA2E;AAE3E;;;;;;;;;;;GAWG;AACH,SAAgB,uBAAuB,CACrC,MAAc,EACd,aAAoC,EACpC,kBAAyC;IAEzC,MAAM,gBAAgB,GAAsB,EAAE,CAAC;IAE/C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACjB,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;KAC7D;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE;QAChC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,SAAS;SACV;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,MAAM,kBAAkB,GAAG,IAAA,mCAAiB,EAAC,QAAQ,CAAC,CAAC;QAEvD,KAAK,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,kBAAkB,EAAE;YACrD,IAAI,CAAC,IAAA,qCAAmB,EAAC,SAAS,EAAE,aAAa,EAAE,kBAAkB,CAAC,EAAE;gBACtE,gBAAgB,CAAC,IAAI,CAAC;oBACpB,gBAAgB,EAAE,QAAQ,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,IAAI,SAAS;oBAC3D,kBAAkB,EAAE,QAAQ,CAAC,YAAY;oBACzC,cAAc,EAAE,KAAK;oBACrB,SAAS,EAAE,SAAS;iBACrB,CAAC,CAAC;aACJ;SACF;KACF;IAED,OAAO;QACL,mBAAmB,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAChD,gBAAgB,EAAE,gBAAgB;KACnC,CAAC;AACJ,CAAC;AAnCD,0DAmCC"}
|