@metriport/fhir-sdk 1.6.0 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/careplan.test.js +22 -24
- package/dist/__tests__/careplan.test.js.map +1 -1
- package/dist/__tests__/clinical-dates.test.js +23 -25
- package/dist/__tests__/clinical-dates.test.js.map +1 -1
- package/dist/__tests__/coding-utilities.test.js +7 -9
- package/dist/__tests__/coding-utilities.test.js.map +1 -1
- package/dist/__tests__/date-range-performance.test.js +2 -4
- package/dist/__tests__/date-range-performance.test.js.map +1 -1
- package/dist/__tests__/date-range-search.test.js +13 -15
- package/dist/__tests__/date-range-search.test.js.map +1 -1
- package/dist/__tests__/env-setup.js +4 -32
- package/dist/__tests__/env-setup.js.map +1 -1
- package/dist/__tests__/fhir-bundle-sdk-basic.test.js +4 -6
- package/dist/__tests__/fhir-bundle-sdk-basic.test.js.map +1 -1
- package/dist/__tests__/fhir-bundle-sdk.test.js +85 -87
- 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 +11 -17
- package/dist/__tests__/fixtures/fhir-bundles.js.map +1 -1
- package/dist/__tests__/phase1-verification.test.js +10 -12
- package/dist/__tests__/phase1-verification.test.js.map +1 -1
- package/dist/__tests__/phase2-verification.test.js +14 -16
- package/dist/__tests__/phase2-verification.test.js.map +1 -1
- package/dist/__tests__/phase3-verification.test.js +15 -17
- package/dist/__tests__/phase3-verification.test.js.map +1 -1
- package/dist/__tests__/phase4-verification.test.js +27 -29
- package/dist/__tests__/phase4-verification.test.js.map +1 -1
- package/dist/__tests__/phase5-verification.test.js +38 -40
- package/dist/__tests__/phase5-verification.test.js.map +1 -1
- package/dist/__tests__/reverse-references.test.js +29 -31
- package/dist/__tests__/reverse-references.test.js.map +1 -1
- package/dist/__tests__/type-guards.test.js +16 -18
- package/dist/__tests__/type-guards.test.js.map +1 -1
- package/dist/clinical-dates.js +1 -5
- package/dist/clinical-dates.js.map +1 -1
- package/dist/fhir-bundle-sdk.js +34 -38
- package/dist/fhir-bundle-sdk.js.map +1 -1
- package/dist/index.js +4 -22
- package/dist/index.js.map +1 -1
- package/dist/internal/bundle-operations.js +3 -9
- package/dist/internal/bundle-operations.js.map +1 -1
- package/dist/internal/coding-systems.d.ts +12 -12
- package/dist/internal/coding-systems.js +15 -18
- package/dist/internal/coding-systems.js.map +1 -1
- package/dist/internal/coding-utilities.js +15 -23
- package/dist/internal/coding-utilities.js.map +1 -1
- package/dist/internal/date-extraction.js +2 -7
- package/dist/internal/date-extraction.js.map +1 -1
- package/dist/internal/graph-traversal.js +3 -7
- package/dist/internal/graph-traversal.js.map +1 -1
- package/dist/internal/indexing.js +9 -15
- package/dist/internal/indexing.js.map +1 -1
- package/dist/internal/llm-context.js +8 -17
- package/dist/internal/llm-context.js.map +1 -1
- package/dist/internal/reference-resolution.js +25 -32
- package/dist/internal/reference-resolution.js.map +1 -1
- package/dist/internal/reference-utils.js +4 -11
- package/dist/internal/reference-utils.js.map +1 -1
- package/dist/internal/transparent-proxy.js +10 -14
- package/dist/internal/transparent-proxy.js.map +1 -1
- package/dist/internal/validation.js +4 -8
- package/dist/internal/validation.js.map +1 -1
- package/dist/type-guards.js +26 -55
- package/dist/type-guards.js.map +1 -1
- package/dist/types/coding-fields.js +1 -2
- package/dist/types/sdk-types.js +1 -5
- package/dist/types/sdk-types.js.map +1 -1
- package/dist/types/smart-resources.js +5 -10
- package/dist/types/smart-resources.js.map +1 -1
- package/dist/utils/interval-tree/index.js +10 -19
- package/dist/utils/interval-tree/index.js.map +1 -1
- package/dist/utils/interval-tree/shallowequal/arrays.js +1 -4
- package/dist/utils/interval-tree/shallowequal/arrays.js.map +1 -1
- package/dist/utils/interval-tree/shallowequal/index.js +5 -13
- package/dist/utils/interval-tree/shallowequal/index.js.map +1 -1
- package/dist/utils/interval-tree/shallowequal/objects.js +1 -4
- package/dist/utils/interval-tree/shallowequal/objects.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexing.js","sourceRoot":"","sources":["../../src/internal/indexing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"indexing.js","sourceRoot":"","sources":["../../src/internal/indexing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
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");
|
|
1
|
+
import { REFERENCE_METHOD_MAPPING } from "../types/smart-resources";
|
|
5
2
|
/**
|
|
6
3
|
* Build a set of all reference field names from REFERENCE_METHOD_MAPPING.
|
|
7
4
|
* Extracts base field names, handling nested paths (e.g., "participant.individual" -> "participant")
|
|
8
5
|
*/
|
|
9
6
|
function buildReferenceFieldSet() {
|
|
10
7
|
const fields = new Set();
|
|
11
|
-
for (const resourceMapping of Object.values(
|
|
8
|
+
for (const resourceMapping of Object.values(REFERENCE_METHOD_MAPPING)) {
|
|
12
9
|
for (const fieldPath of Object.values(resourceMapping)) {
|
|
13
10
|
// Handle nested paths - take the first part
|
|
14
11
|
const parts = fieldPath.split(".");
|
|
@@ -27,7 +24,7 @@ const REFERENCE_FIELDS = buildReferenceFieldSet();
|
|
|
27
24
|
* defined in REFERENCE_METHOD_MAPPING
|
|
28
25
|
* Returns an immutable copy without mutating the original.
|
|
29
26
|
*/
|
|
30
|
-
function stripNonClinicalData(resource) {
|
|
27
|
+
export function stripNonClinicalData(resource) {
|
|
31
28
|
function deepCloneAndStrip(obj, resourceType) {
|
|
32
29
|
if (obj === null || obj === undefined) {
|
|
33
30
|
return obj;
|
|
@@ -56,11 +53,10 @@ function stripNonClinicalData(resource) {
|
|
|
56
53
|
}
|
|
57
54
|
return deepCloneAndStrip(resource, resource.resourceType);
|
|
58
55
|
}
|
|
59
|
-
exports.stripNonClinicalData = stripNonClinicalData;
|
|
60
56
|
/**
|
|
61
57
|
* Group resources by their resource type
|
|
62
58
|
*/
|
|
63
|
-
function groupResourcesByType(resources) {
|
|
59
|
+
export function groupResourcesByType(resources) {
|
|
64
60
|
const grouped = {};
|
|
65
61
|
for (const resource of resources) {
|
|
66
62
|
const type = resource.resourceType;
|
|
@@ -74,11 +70,10 @@ function groupResourcesByType(resources) {
|
|
|
74
70
|
}
|
|
75
71
|
return grouped;
|
|
76
72
|
}
|
|
77
|
-
exports.groupResourcesByType = groupResourcesByType;
|
|
78
73
|
/**
|
|
79
74
|
* Format a single resource as readable text
|
|
80
75
|
*/
|
|
81
|
-
function formatResourceAsText(resource) {
|
|
76
|
+
export function formatResourceAsText(resource) {
|
|
82
77
|
const lines = [];
|
|
83
78
|
lines.push(`[Type: ${resource.resourceType}, ID: ${resource.id ?? "unknown"}]`);
|
|
84
79
|
function formatValue(value, indent = 2) {
|
|
@@ -115,11 +110,10 @@ function formatResourceAsText(resource) {
|
|
|
115
110
|
}
|
|
116
111
|
return lines.join("\n");
|
|
117
112
|
}
|
|
118
|
-
exports.formatResourceAsText = formatResourceAsText;
|
|
119
113
|
/**
|
|
120
114
|
* Format resources as structured text for better LLM readability
|
|
121
115
|
*/
|
|
122
|
-
function formatAsStructuredText(resourcesByDepth) {
|
|
116
|
+
export function formatAsStructuredText(resourcesByDepth) {
|
|
123
117
|
const lines = [];
|
|
124
118
|
// Primary resource section
|
|
125
119
|
const primaryResources = resourcesByDepth.get(0) ?? [];
|
|
@@ -150,11 +144,10 @@ function formatAsStructuredText(resourcesByDepth) {
|
|
|
150
144
|
}
|
|
151
145
|
return lines.join("\n");
|
|
152
146
|
}
|
|
153
|
-
exports.formatAsStructuredText = formatAsStructuredText;
|
|
154
147
|
/**
|
|
155
148
|
* Format resources as JSON with depth annotations
|
|
156
149
|
*/
|
|
157
|
-
function formatAsJSON(resourcesByDepth) {
|
|
150
|
+
export function formatAsJSON(resourcesByDepth) {
|
|
158
151
|
const relatedResourcesByDepth = {};
|
|
159
152
|
for (const [depth, resources] of resourcesByDepth.entries()) {
|
|
160
153
|
if (depth === 0)
|
|
@@ -167,7 +160,6 @@ function formatAsJSON(resourcesByDepth) {
|
|
|
167
160
|
};
|
|
168
161
|
return JSON.stringify(output, null, 2);
|
|
169
162
|
}
|
|
170
|
-
exports.formatAsJSON = formatAsJSON;
|
|
171
163
|
/**
|
|
172
164
|
* Generate LLM-friendly context from a starting resource and its related resources.
|
|
173
165
|
* Uses BFS to discover related resources, strips non-clinical data, and formats output.
|
|
@@ -177,7 +169,7 @@ exports.formatAsJSON = formatAsJSON;
|
|
|
177
169
|
* @param walkReferencesFn - Function to walk references (passed in to avoid circular dependency)
|
|
178
170
|
* @returns Formatted string suitable for LLM context
|
|
179
171
|
*/
|
|
180
|
-
function generateLLMContext(startResource, options, walkReferencesFn) {
|
|
172
|
+
export function generateLLMContext(startResource, options, walkReferencesFn) {
|
|
181
173
|
const maxDepth = options?.maxDepth ?? 2;
|
|
182
174
|
const includeStartResource = options?.includeStartResource ?? true;
|
|
183
175
|
const format = options?.format ?? "structured-text";
|
|
@@ -210,5 +202,4 @@ function generateLLMContext(startResource, options, walkReferencesFn) {
|
|
|
210
202
|
return formatAsStructuredText(cleanedResourcesByDepth);
|
|
211
203
|
}
|
|
212
204
|
}
|
|
213
|
-
exports.generateLLMContext = generateLLMContext;
|
|
214
205
|
//# sourceMappingURL=llm-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-context.js","sourceRoot":"","sources":["../../src/internal/llm-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"llm-context.js","sourceRoot":"","sources":["../../src/internal/llm-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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");
|
|
1
|
+
import { inspect } from "util";
|
|
2
|
+
import { getReferenceField, isReferenceMethod, REFERENCE_METHOD_MAPPING, } from "../types/smart-resources";
|
|
3
|
+
import { createSmartCoding, createSmartCodeableConcept, isCoding, isCodeableConcept, } from "./coding-utilities";
|
|
4
|
+
import { createTransparentProxy } from "./transparent-proxy";
|
|
8
5
|
/**
|
|
9
6
|
* Navigate through a nested path in a resource to get the value at that path.
|
|
10
7
|
* Handles both simple paths ("subject") and nested paths ("diagnosis.condition").
|
|
@@ -57,7 +54,7 @@ function getNestedValue(resource, path) {
|
|
|
57
54
|
* For nested paths, if the intermediate level is an array, the method returns an array.
|
|
58
55
|
* For example, "diagnosis.condition" returns an array because diagnosis is an array field.
|
|
59
56
|
*/
|
|
60
|
-
function isArrayReferenceField(fieldName) {
|
|
57
|
+
export function isArrayReferenceField(fieldName) {
|
|
61
58
|
// Known simple array reference fields
|
|
62
59
|
const arrayFields = new Set(["performer", "participant", "result", "generalPractitioner"]);
|
|
63
60
|
// Check if this is a simple array field
|
|
@@ -94,12 +91,11 @@ function isArrayReferenceField(fieldName) {
|
|
|
94
91
|
}
|
|
95
92
|
return false;
|
|
96
93
|
}
|
|
97
|
-
exports.isArrayReferenceField = isArrayReferenceField;
|
|
98
94
|
/**
|
|
99
95
|
* Resolve a single reference object to a resource
|
|
100
96
|
* FR-5.5: Reference resolution methods handle both resource.id and fullUrl matching
|
|
101
97
|
*/
|
|
102
|
-
function resolveReferenceObject(referenceObj, resourcesById, resourcesByFullUrl, resolutionStack) {
|
|
98
|
+
export function resolveReferenceObject(referenceObj, resourcesById, resourcesByFullUrl, resolutionStack) {
|
|
103
99
|
if (!referenceObj || typeof referenceObj !== "object" || !("reference" in referenceObj)) {
|
|
104
100
|
return undefined;
|
|
105
101
|
}
|
|
@@ -127,13 +123,12 @@ function resolveReferenceObject(referenceObj, resourcesById, resourcesByFullUrl,
|
|
|
127
123
|
resolutionStack.delete(reference);
|
|
128
124
|
}
|
|
129
125
|
}
|
|
130
|
-
exports.resolveReferenceObject = resolveReferenceObject;
|
|
131
126
|
/**
|
|
132
127
|
* Resolve a reference method call to actual resources
|
|
133
128
|
* FR-5.2-5.6: Handle different reference types and patterns
|
|
134
129
|
*/
|
|
135
|
-
function resolveReference(methodName, resource, resourcesById, resourcesByFullUrl, resolutionStack, createSmartResourceFn) {
|
|
136
|
-
const referenceField =
|
|
130
|
+
export function resolveReference(methodName, resource, resourcesById, resourcesByFullUrl, resolutionStack, createSmartResourceFn) {
|
|
131
|
+
const referenceField = getReferenceField(methodName, resource.resourceType);
|
|
137
132
|
if (!referenceField) {
|
|
138
133
|
return undefined;
|
|
139
134
|
}
|
|
@@ -162,14 +157,13 @@ function resolveReference(methodName, resource, resourcesById, resourcesByFullUr
|
|
|
162
157
|
}
|
|
163
158
|
return undefined;
|
|
164
159
|
}
|
|
165
|
-
exports.resolveReference = resolveReference;
|
|
166
160
|
/**
|
|
167
161
|
* Create a smart resource with reference resolution methods
|
|
168
162
|
* FR-5.1: Resources returned by SDK have additional getter methods for each Reference field
|
|
169
163
|
* FR-5.7: Reference resolution operates in O(1) time complexity per reference
|
|
170
164
|
* FR-5.8: Original reference fields remain unchanged
|
|
171
165
|
*/
|
|
172
|
-
function createSmartResource(resource, smartResourceCache, resourcesById, resourcesByFullUrl, resolutionStack, getResourcesReferencingIdFn) {
|
|
166
|
+
export function createSmartResource(resource, smartResourceCache, resourcesById, resourcesByFullUrl, resolutionStack, getResourcesReferencingIdFn) {
|
|
173
167
|
// Check cache first to maintain object identity
|
|
174
168
|
const cached = smartResourceCache.get(resource);
|
|
175
169
|
if (cached) {
|
|
@@ -195,7 +189,7 @@ function createSmartResource(resource, smartResourceCache, resourcesById, resour
|
|
|
195
189
|
if (prop === "getReferencedResources") {
|
|
196
190
|
return () => {
|
|
197
191
|
const referencedResources = [];
|
|
198
|
-
const referenceMethods =
|
|
192
|
+
const referenceMethods = REFERENCE_METHOD_MAPPING[target.resourceType];
|
|
199
193
|
if (!referenceMethods) {
|
|
200
194
|
return referencedResources;
|
|
201
195
|
}
|
|
@@ -224,7 +218,7 @@ function createSmartResource(resource, smartResourceCache, resourcesById, resour
|
|
|
224
218
|
};
|
|
225
219
|
}
|
|
226
220
|
// Handle Node.js util.inspect.custom for console.log and REPL
|
|
227
|
-
if (prop ===
|
|
221
|
+
if (prop === inspect.custom) {
|
|
228
222
|
return () => {
|
|
229
223
|
return JSON.stringify(target, null, 2);
|
|
230
224
|
};
|
|
@@ -238,7 +232,7 @@ function createSmartResource(resource, smartResourceCache, resourcesById, resour
|
|
|
238
232
|
return () => target;
|
|
239
233
|
}
|
|
240
234
|
// Check if this is a reference method call
|
|
241
|
-
if (typeof prop === "string" &&
|
|
235
|
+
if (typeof prop === "string" && isReferenceMethod(prop, target.resourceType)) {
|
|
242
236
|
return () => resolveReference(prop, target, resourcesById, resourcesByFullUrl, resolutionStack, res => createSmartResource(res, smartResourceCache, resourcesById, resourcesByFullUrl, resolutionStack, getResourcesReferencingIdFn));
|
|
243
237
|
}
|
|
244
238
|
// Get the property value
|
|
@@ -248,12 +242,12 @@ function createSmartResource(resource, smartResourceCache, resourcesById, resour
|
|
|
248
242
|
return value;
|
|
249
243
|
}
|
|
250
244
|
// Wrap CodeableConcept objects (check before Coding to avoid misidentification)
|
|
251
|
-
if (
|
|
252
|
-
return
|
|
245
|
+
if (isCodeableConcept(value)) {
|
|
246
|
+
return createSmartCodeableConcept(value);
|
|
253
247
|
}
|
|
254
248
|
// Wrap Coding objects
|
|
255
|
-
if (
|
|
256
|
-
return
|
|
249
|
+
if (isCoding(value)) {
|
|
250
|
+
return createSmartCoding(value);
|
|
257
251
|
}
|
|
258
252
|
// Handle arrays - wrap each element if needed
|
|
259
253
|
if (Array.isArray(value)) {
|
|
@@ -262,16 +256,16 @@ function createSmartResource(resource, smartResourceCache, resourcesById, resour
|
|
|
262
256
|
return item;
|
|
263
257
|
}
|
|
264
258
|
// Check CodeableConcept before Coding
|
|
265
|
-
if (
|
|
266
|
-
return
|
|
259
|
+
if (isCodeableConcept(item)) {
|
|
260
|
+
return createSmartCodeableConcept(item);
|
|
267
261
|
}
|
|
268
|
-
if (
|
|
269
|
-
return
|
|
262
|
+
if (isCoding(item)) {
|
|
263
|
+
return createSmartCoding(item);
|
|
270
264
|
}
|
|
271
265
|
// Recursively wrap plain objects with transparent proxy
|
|
272
266
|
// Only wrap plain objects, not built-in types
|
|
273
267
|
if (typeof item === "object" && !Array.isArray(item) && item.constructor === Object) {
|
|
274
|
-
return
|
|
268
|
+
return createTransparentProxy(item);
|
|
275
269
|
}
|
|
276
270
|
return item;
|
|
277
271
|
});
|
|
@@ -279,7 +273,7 @@ function createSmartResource(resource, smartResourceCache, resourcesById, resour
|
|
|
279
273
|
// Recursively wrap plain objects with transparent proxy (but not primitives, dates, etc.)
|
|
280
274
|
// Only wrap plain objects, not built-in types like Date, RegExp, etc.
|
|
281
275
|
if (typeof value === "object" && !Array.isArray(value) && value.constructor === Object) {
|
|
282
|
-
return
|
|
276
|
+
return createTransparentProxy(value);
|
|
283
277
|
}
|
|
284
278
|
// Return original property for primitives and other types
|
|
285
279
|
return value;
|
|
@@ -293,7 +287,7 @@ function createSmartResource(resource, smartResourceCache, resourcesById, resour
|
|
|
293
287
|
"toString",
|
|
294
288
|
];
|
|
295
289
|
// Add reference methods for this resource type
|
|
296
|
-
const referenceMethods =
|
|
290
|
+
const referenceMethods = REFERENCE_METHOD_MAPPING[target.resourceType];
|
|
297
291
|
if (referenceMethods) {
|
|
298
292
|
virtualMethods.push(...Object.keys(referenceMethods));
|
|
299
293
|
}
|
|
@@ -305,7 +299,7 @@ function createSmartResource(resource, smartResourceCache, resourcesById, resour
|
|
|
305
299
|
if (prop === "__isSmartResource" ||
|
|
306
300
|
prop === Symbol.toStringTag ||
|
|
307
301
|
prop === "toJSON" ||
|
|
308
|
-
prop ===
|
|
302
|
+
prop === inspect.custom) {
|
|
309
303
|
return undefined;
|
|
310
304
|
}
|
|
311
305
|
// Make virtual methods enumerable for DevTools
|
|
@@ -319,7 +313,7 @@ function createSmartResource(resource, smartResourceCache, resourcesById, resour
|
|
|
319
313
|
};
|
|
320
314
|
}
|
|
321
315
|
// Make reference methods enumerable for DevTools
|
|
322
|
-
const referenceMethods =
|
|
316
|
+
const referenceMethods = REFERENCE_METHOD_MAPPING[target.resourceType];
|
|
323
317
|
if (referenceMethods && typeof prop === "string" && prop in referenceMethods) {
|
|
324
318
|
return {
|
|
325
319
|
enumerable: true,
|
|
@@ -334,5 +328,4 @@ function createSmartResource(resource, smartResourceCache, resourcesById, resour
|
|
|
334
328
|
smartResourceCache.set(resource, smartResource);
|
|
335
329
|
return smartResource;
|
|
336
330
|
}
|
|
337
|
-
exports.createSmartResource = createSmartResource;
|
|
338
331
|
//# sourceMappingURL=reference-resolution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-resolution.js","sourceRoot":"","sources":["../../src/internal/reference-resolution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reference-resolution.js","sourceRoot":"","sources":["../../src/internal/reference-resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.canResolveReference = exports.normalizeReferenceField = exports.extractTargetIdFromReference = exports.findAllReferences = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* Find all Reference fields in a resource recursively
|
|
6
3
|
*/
|
|
7
|
-
function findAllReferences(resource) {
|
|
4
|
+
export function findAllReferences(resource) {
|
|
8
5
|
const references = [];
|
|
9
6
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
7
|
function searchObject(obj, path = "") {
|
|
@@ -35,11 +32,10 @@ function findAllReferences(resource) {
|
|
|
35
32
|
searchObject(resource);
|
|
36
33
|
return references;
|
|
37
34
|
}
|
|
38
|
-
exports.findAllReferences = findAllReferences;
|
|
39
35
|
/**
|
|
40
36
|
* Extract target resource ID from a reference string
|
|
41
37
|
*/
|
|
42
|
-
function extractTargetIdFromReference(reference) {
|
|
38
|
+
export function extractTargetIdFromReference(reference) {
|
|
43
39
|
if (!reference) {
|
|
44
40
|
return undefined;
|
|
45
41
|
}
|
|
@@ -51,27 +47,25 @@ function extractTargetIdFromReference(reference) {
|
|
|
51
47
|
// Handle other reference patterns (e.g., "urn:uuid:xxx")
|
|
52
48
|
return reference;
|
|
53
49
|
}
|
|
54
|
-
exports.extractTargetIdFromReference = extractTargetIdFromReference;
|
|
55
50
|
/**
|
|
56
51
|
* Normalize reference field path to base field name
|
|
57
52
|
* e.g., "participant.individual" -> "participant"
|
|
58
53
|
* "performer[0]" -> "performer"
|
|
59
54
|
*/
|
|
60
|
-
function normalizeReferenceField(field) {
|
|
55
|
+
export function normalizeReferenceField(field) {
|
|
61
56
|
// Remove array indices
|
|
62
57
|
const withoutIndices = field.replace(/\[\d+\]/g, "");
|
|
63
58
|
// Take first part of dotted path
|
|
64
59
|
const parts = withoutIndices.split(".");
|
|
65
60
|
return parts[0] ?? field;
|
|
66
61
|
}
|
|
67
|
-
exports.normalizeReferenceField = normalizeReferenceField;
|
|
68
62
|
/**
|
|
69
63
|
* Check if a reference can be resolved within the bundle
|
|
70
64
|
* @param reference - The reference string to check
|
|
71
65
|
* @param resourcesById - Map of resources indexed by resource.id
|
|
72
66
|
* @param resourcesByFullUrl - Map of resources indexed by entry.fullUrl
|
|
73
67
|
*/
|
|
74
|
-
function canResolveReference(reference, resourcesById, resourcesByFullUrl) {
|
|
68
|
+
export function canResolveReference(reference, resourcesById, resourcesByFullUrl) {
|
|
75
69
|
// Try to resolve by resource ID (e.g., "Patient/123")
|
|
76
70
|
if (reference.includes("/")) {
|
|
77
71
|
const [, resourceId] = reference.split("/");
|
|
@@ -85,5 +79,4 @@ function canResolveReference(reference, resourcesById, resourcesByFullUrl) {
|
|
|
85
79
|
}
|
|
86
80
|
return false;
|
|
87
81
|
}
|
|
88
|
-
exports.canResolveReference = canResolveReference;
|
|
89
82
|
//# sourceMappingURL=reference-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-utils.js","sourceRoot":"","sources":["../../src/internal/reference-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reference-utils.js","sourceRoot":"","sources":["../../src/internal/reference-utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,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;AAED;;GAEG;AACH,MAAM,UAAU,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;AAED;;;;GAIG;AACH,MAAM,UAAU,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;AAED;;;;;GAKG;AACH,MAAM,UAAU,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"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createTransparentProxy = void 0;
|
|
4
|
-
const coding_utilities_1 = require("./coding-utilities");
|
|
1
|
+
import { createSmartCoding, createSmartCodeableConcept, isCoding, isCodeableConcept, } from "./coding-utilities";
|
|
5
2
|
/**
|
|
6
3
|
* Cache for transparent proxy objects to maintain object identity
|
|
7
4
|
*/
|
|
@@ -16,7 +13,7 @@ const transparentProxyCache = new WeakMap();
|
|
|
16
13
|
* @param obj - The plain object to wrap
|
|
17
14
|
* @returns A proxied object that wraps Coding/CodeableConcept on access
|
|
18
15
|
*/
|
|
19
|
-
function createTransparentProxy(obj) {
|
|
16
|
+
export function createTransparentProxy(obj) {
|
|
20
17
|
// Check cache first to maintain object identity
|
|
21
18
|
const cached = transparentProxyCache.get(obj);
|
|
22
19
|
if (cached) {
|
|
@@ -30,12 +27,12 @@ function createTransparentProxy(obj) {
|
|
|
30
27
|
return value;
|
|
31
28
|
}
|
|
32
29
|
// Wrap CodeableConcept objects (check before Coding to avoid misidentification)
|
|
33
|
-
if (
|
|
34
|
-
return
|
|
30
|
+
if (isCodeableConcept(value)) {
|
|
31
|
+
return createSmartCodeableConcept(value);
|
|
35
32
|
}
|
|
36
33
|
// Wrap Coding objects
|
|
37
|
-
if (
|
|
38
|
-
return
|
|
34
|
+
if (isCoding(value)) {
|
|
35
|
+
return createSmartCoding(value);
|
|
39
36
|
}
|
|
40
37
|
// Handle arrays - wrap each element if needed
|
|
41
38
|
if (Array.isArray(value)) {
|
|
@@ -44,11 +41,11 @@ function createTransparentProxy(obj) {
|
|
|
44
41
|
return item;
|
|
45
42
|
}
|
|
46
43
|
// Check CodeableConcept before Coding
|
|
47
|
-
if (
|
|
48
|
-
return
|
|
44
|
+
if (isCodeableConcept(item)) {
|
|
45
|
+
return createSmartCodeableConcept(item);
|
|
49
46
|
}
|
|
50
|
-
if (
|
|
51
|
-
return
|
|
47
|
+
if (isCoding(item)) {
|
|
48
|
+
return createSmartCoding(item);
|
|
52
49
|
}
|
|
53
50
|
// Recursively wrap plain objects, not built-in types
|
|
54
51
|
if (typeof item === "object" && !Array.isArray(item) && item.constructor === Object) {
|
|
@@ -77,5 +74,4 @@ function createTransparentProxy(obj) {
|
|
|
77
74
|
transparentProxyCache.set(obj, proxy);
|
|
78
75
|
return proxy;
|
|
79
76
|
}
|
|
80
|
-
exports.createTransparentProxy = createTransparentProxy;
|
|
81
77
|
//# sourceMappingURL=transparent-proxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transparent-proxy.js","sourceRoot":"","sources":["../../src/internal/transparent-proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transparent-proxy.js","sourceRoot":"","sources":["../../src/internal/transparent-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,QAAQ,EACR,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAAkB,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,UAAU,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,iBAAiB,CAAC,KAAK,CAAC,EAAE;gBAC5B,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;aAC1C;YAED,sBAAsB;YACtB,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACnB,OAAO,iBAAiB,CAAC,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,iBAAiB,CAAC,IAAI,CAAC,EAAE;wBAC3B,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC;qBACzC;oBACD,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;wBAClB,OAAO,iBAAiB,CAAC,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"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.lookForBrokenReferences = void 0;
|
|
4
|
-
const reference_utils_1 = require("./reference-utils");
|
|
1
|
+
import { findAllReferences, canResolveReference } from "./reference-utils";
|
|
5
2
|
/**
|
|
6
3
|
* Validate all references in the bundle
|
|
7
4
|
* FR-2.1: Validate all references in the bundle
|
|
@@ -14,7 +11,7 @@ const reference_utils_1 = require("./reference-utils");
|
|
|
14
11
|
* @param resourcesByFullUrl - Map of resources indexed by entry.fullUrl
|
|
15
12
|
* @returns ValidationResult with broken reference details
|
|
16
13
|
*/
|
|
17
|
-
function lookForBrokenReferences(bundle, resourcesById, resourcesByFullUrl) {
|
|
14
|
+
export function lookForBrokenReferences(bundle, resourcesById, resourcesByFullUrl) {
|
|
18
15
|
const brokenReferences = [];
|
|
19
16
|
if (!bundle.entry) {
|
|
20
17
|
return { hasBrokenReferences: false, brokenReferences: [] };
|
|
@@ -24,9 +21,9 @@ function lookForBrokenReferences(bundle, resourcesById, resourcesByFullUrl) {
|
|
|
24
21
|
continue;
|
|
25
22
|
}
|
|
26
23
|
const resource = entry.resource;
|
|
27
|
-
const resourceReferences =
|
|
24
|
+
const resourceReferences = findAllReferences(resource);
|
|
28
25
|
for (const { field, reference } of resourceReferences) {
|
|
29
|
-
if (!
|
|
26
|
+
if (!canResolveReference(reference, resourcesById, resourcesByFullUrl)) {
|
|
30
27
|
brokenReferences.push({
|
|
31
28
|
sourceResourceId: resource.id || entry.fullUrl || "unknown",
|
|
32
29
|
sourceResourceType: resource.resourceType,
|
|
@@ -41,5 +38,4 @@ function lookForBrokenReferences(bundle, resourcesById, resourcesByFullUrl) {
|
|
|
41
38
|
brokenReferences: brokenReferences,
|
|
42
39
|
};
|
|
43
40
|
}
|
|
44
|
-
exports.lookForBrokenReferences = lookForBrokenReferences;
|
|
45
41
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/internal/validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/internal/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE3E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,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,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEvD,KAAK,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,kBAAkB,EAAE;YACrD,IAAI,CAAC,mBAAmB,CAAC,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"}
|