@the-cascade-protocol/cli 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/convert.d.ts +8 -5
- package/dist/commands/convert.d.ts.map +1 -1
- package/dist/commands/convert.js +55 -7
- package/dist/commands/convert.js.map +1 -1
- package/dist/commands/pod/helpers.d.ts +2 -0
- package/dist/commands/pod/helpers.d.ts.map +1 -1
- package/dist/commands/pod/helpers.js +62 -1
- package/dist/commands/pod/helpers.js.map +1 -1
- package/dist/commands/pod/import.d.ts +20 -0
- package/dist/commands/pod/import.d.ts.map +1 -0
- package/dist/commands/pod/import.js +382 -0
- package/dist/commands/pod/import.js.map +1 -0
- package/dist/commands/pod/index.d.ts.map +1 -1
- package/dist/commands/pod/index.js +2 -0
- package/dist/commands/pod/index.js.map +1 -1
- package/dist/commands/reconcile.d.ts +32 -0
- package/dist/commands/reconcile.d.ts.map +1 -0
- package/dist/commands/reconcile.js +116 -0
- package/dist/commands/reconcile.js.map +1 -0
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/fhir-converter/cascade-to-fhir-admin.d.ts +13 -0
- package/dist/lib/fhir-converter/cascade-to-fhir-admin.d.ts.map +1 -0
- package/dist/lib/fhir-converter/cascade-to-fhir-admin.js +70 -0
- package/dist/lib/fhir-converter/cascade-to-fhir-admin.js.map +1 -0
- package/dist/lib/fhir-converter/cascade-to-fhir-clinical.d.ts +36 -0
- package/dist/lib/fhir-converter/cascade-to-fhir-clinical.d.ts.map +1 -0
- package/dist/lib/fhir-converter/cascade-to-fhir-clinical.js +407 -0
- package/dist/lib/fhir-converter/cascade-to-fhir-clinical.js.map +1 -0
- package/dist/lib/fhir-converter/cascade-to-fhir-demographics.d.ts +15 -0
- package/dist/lib/fhir-converter/cascade-to-fhir-demographics.d.ts.map +1 -0
- package/dist/lib/fhir-converter/cascade-to-fhir-demographics.js +115 -0
- package/dist/lib/fhir-converter/cascade-to-fhir-demographics.js.map +1 -0
- package/dist/lib/fhir-converter/cascade-to-fhir.d.ts +9 -3
- package/dist/lib/fhir-converter/cascade-to-fhir.d.ts.map +1 -1
- package/dist/lib/fhir-converter/cascade-to-fhir.js +69 -290
- package/dist/lib/fhir-converter/cascade-to-fhir.js.map +1 -1
- package/dist/lib/fhir-converter/converters-clinical-admin.d.ts +16 -0
- package/dist/lib/fhir-converter/converters-clinical-admin.d.ts.map +1 -0
- package/dist/lib/fhir-converter/converters-clinical-admin.js +166 -0
- package/dist/lib/fhir-converter/converters-clinical-admin.js.map +1 -0
- package/dist/lib/fhir-converter/converters-clinical.d.ts +28 -0
- package/dist/lib/fhir-converter/converters-clinical.d.ts.map +1 -1
- package/dist/lib/fhir-converter/converters-clinical.js +436 -11
- package/dist/lib/fhir-converter/converters-clinical.js.map +1 -1
- package/dist/lib/fhir-converter/converters-demographics.d.ts.map +1 -1
- package/dist/lib/fhir-converter/converters-demographics.js +4 -5
- package/dist/lib/fhir-converter/converters-demographics.js.map +1 -1
- package/dist/lib/fhir-converter/converters-passthrough.d.ts +29 -0
- package/dist/lib/fhir-converter/converters-passthrough.d.ts.map +1 -0
- package/dist/lib/fhir-converter/converters-passthrough.js +86 -0
- package/dist/lib/fhir-converter/converters-passthrough.js.map +1 -0
- package/dist/lib/fhir-converter/fhir-to-cascade.d.ts +8 -4
- package/dist/lib/fhir-converter/fhir-to-cascade.d.ts.map +1 -1
- package/dist/lib/fhir-converter/fhir-to-cascade.js +41 -10
- package/dist/lib/fhir-converter/fhir-to-cascade.js.map +1 -1
- package/dist/lib/fhir-converter/import-manifest.d.ts +40 -0
- package/dist/lib/fhir-converter/import-manifest.d.ts.map +1 -0
- package/dist/lib/fhir-converter/import-manifest.js +66 -0
- package/dist/lib/fhir-converter/import-manifest.js.map +1 -0
- package/dist/lib/fhir-converter/index.d.ts +33 -13
- package/dist/lib/fhir-converter/index.d.ts.map +1 -1
- package/dist/lib/fhir-converter/index.js +53 -17
- package/dist/lib/fhir-converter/index.js.map +1 -1
- package/dist/lib/fhir-converter/types.d.ts +12 -1
- package/dist/lib/fhir-converter/types.d.ts.map +1 -1
- package/dist/lib/fhir-converter/types.js +67 -2
- package/dist/lib/fhir-converter/types.js.map +1 -1
- package/dist/lib/output.d.ts +5 -0
- package/dist/lib/output.d.ts.map +1 -1
- package/dist/lib/output.js +6 -1
- package/dist/lib/output.js.map +1 -1
- package/dist/lib/reconciler.d.ts +45 -0
- package/dist/lib/reconciler.d.ts.map +1 -0
- package/dist/lib/reconciler.js +397 -0
- package/dist/lib/reconciler.js.map +1 -0
- package/dist/shapes/checkup.shapes.ttl +10 -0
- package/package.json +1 -1
|
@@ -7,15 +7,21 @@
|
|
|
7
7
|
* - AllergyIntolerance -> health:AllergyRecord
|
|
8
8
|
* - Observation (lab) -> health:LabResultRecord
|
|
9
9
|
* - Observation (vital) -> clinical:VitalSign
|
|
10
|
+
* - Procedure -> clinical:Procedure
|
|
11
|
+
* - DocumentReference -> clinical:ClinicalDocument
|
|
12
|
+
* - Encounter -> clinical:Encounter
|
|
13
|
+
* - DiagnosticReport -> clinical:LaboratoryReport
|
|
14
|
+
* - MedicationAdministration -> clinical:MedicationAdministration
|
|
15
|
+
* - Device -> clinical:ImplantedDevice
|
|
16
|
+
* - ImagingStudy -> clinical:ImagingStudy
|
|
10
17
|
*/
|
|
11
|
-
import {
|
|
12
|
-
import { NS, CODING_SYSTEM_MAP, VITAL_LOINC_CODES, VITAL_CATEGORIES, extractCodings, codeableConceptText, tripleStr, tripleBool, tripleDouble, tripleRef, tripleType, tripleDateTime, commonTriples, quadsToJsonLd, } from './types.js';
|
|
18
|
+
import { NS, CODING_SYSTEM_MAP, VITAL_LOINC_CODES, VITAL_CATEGORIES, isLoincSystem, extractCodings, codeableConceptText, tripleStr, tripleBool, tripleDouble, tripleRef, tripleType, tripleDateTime, tripleTyped, commonTriples, quadsToJsonLd, mintSubjectUri, } from './types.js';
|
|
13
19
|
// ---------------------------------------------------------------------------
|
|
14
20
|
// Medication converter
|
|
15
21
|
// ---------------------------------------------------------------------------
|
|
16
22
|
export function convertMedicationStatement(resource) {
|
|
17
23
|
const warnings = [];
|
|
18
|
-
const subjectUri =
|
|
24
|
+
const subjectUri = mintSubjectUri(resource);
|
|
19
25
|
const quads = [];
|
|
20
26
|
quads.push(tripleType(subjectUri, NS.health + 'MedicationRecord'));
|
|
21
27
|
quads.push(...commonTriples(subjectUri));
|
|
@@ -105,7 +111,7 @@ export function convertMedicationStatement(resource) {
|
|
|
105
111
|
// ---------------------------------------------------------------------------
|
|
106
112
|
export function convertCondition(resource) {
|
|
107
113
|
const warnings = [];
|
|
108
|
-
const subjectUri =
|
|
114
|
+
const subjectUri = mintSubjectUri(resource);
|
|
109
115
|
const quads = [];
|
|
110
116
|
quads.push(tripleType(subjectUri, NS.health + 'ConditionRecord'));
|
|
111
117
|
quads.push(...commonTriples(subjectUri));
|
|
@@ -157,7 +163,7 @@ export function convertCondition(resource) {
|
|
|
157
163
|
// ---------------------------------------------------------------------------
|
|
158
164
|
export function convertAllergyIntolerance(resource) {
|
|
159
165
|
const warnings = [];
|
|
160
|
-
const subjectUri =
|
|
166
|
+
const subjectUri = mintSubjectUri(resource);
|
|
161
167
|
const quads = [];
|
|
162
168
|
quads.push(tripleType(subjectUri, NS.health + 'AllergyRecord'));
|
|
163
169
|
quads.push(...commonTriples(subjectUri));
|
|
@@ -210,17 +216,23 @@ export function convertAllergyIntolerance(resource) {
|
|
|
210
216
|
export function isVitalSignObservation(resource) {
|
|
211
217
|
if (Array.isArray(resource.category)) {
|
|
212
218
|
for (const cat of resource.category) {
|
|
219
|
+
// Structured coding check
|
|
213
220
|
if (Array.isArray(cat.coding)) {
|
|
214
221
|
for (const c of cat.coding) {
|
|
215
222
|
if (VITAL_CATEGORIES.includes(c.code))
|
|
216
223
|
return true;
|
|
217
224
|
}
|
|
218
225
|
}
|
|
226
|
+
// Text fallback — some systems only populate category.text
|
|
227
|
+
if (typeof cat.text === 'string' && /vital/i.test(cat.text))
|
|
228
|
+
return true;
|
|
219
229
|
}
|
|
220
230
|
}
|
|
231
|
+
// LOINC code fallback — catches observations with no/wrong category
|
|
232
|
+
// Accepts all known LOINC system URL variants (http, https, OID, trailing slash)
|
|
221
233
|
const codings = extractCodings(resource.code);
|
|
222
234
|
for (const c of codings) {
|
|
223
|
-
if (c.system
|
|
235
|
+
if (isLoincSystem(c.system) && VITAL_LOINC_CODES[c.code])
|
|
224
236
|
return true;
|
|
225
237
|
}
|
|
226
238
|
return false;
|
|
@@ -230,7 +242,7 @@ export function isVitalSignObservation(resource) {
|
|
|
230
242
|
// ---------------------------------------------------------------------------
|
|
231
243
|
export function convertObservationLab(resource) {
|
|
232
244
|
const warnings = [];
|
|
233
|
-
const subjectUri =
|
|
245
|
+
const subjectUri = mintSubjectUri(resource);
|
|
234
246
|
const quads = [];
|
|
235
247
|
quads.push(tripleType(subjectUri, NS.health + 'LabResultRecord'));
|
|
236
248
|
quads.push(...commonTriples(subjectUri));
|
|
@@ -249,6 +261,29 @@ export function convertObservationLab(resource) {
|
|
|
249
261
|
const valText = codeableConceptText(resource.valueCodeableConcept) ?? '';
|
|
250
262
|
quads.push(tripleStr(subjectUri, NS.health + 'resultValue', valText));
|
|
251
263
|
}
|
|
264
|
+
else if (Array.isArray(resource.component) && resource.component.length > 0) {
|
|
265
|
+
// Panel-style observation (e.g., PRAPARE survey, multi-question assessments):
|
|
266
|
+
// serialize component question/answer pairs into a single resultValue string.
|
|
267
|
+
const parts = [];
|
|
268
|
+
for (const comp of resource.component) {
|
|
269
|
+
const question = codeableConceptText(comp.code);
|
|
270
|
+
if (!question)
|
|
271
|
+
continue;
|
|
272
|
+
const answer = (comp.valueCodeableConcept ? codeableConceptText(comp.valueCodeableConcept) : undefined) ??
|
|
273
|
+
comp.valueString ??
|
|
274
|
+
(comp.valueQuantity !== undefined ? `${comp.valueQuantity.value} ${comp.valueQuantity.unit ?? ''}`.trim() : undefined);
|
|
275
|
+
if (answer !== undefined) {
|
|
276
|
+
parts.push(`${question}: ${answer}`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
if (parts.length > 0) {
|
|
280
|
+
quads.push(tripleStr(subjectUri, NS.health + 'resultValue', parts.join('; ')));
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
quads.push(tripleStr(subjectUri, NS.health + 'resultValue', ''));
|
|
284
|
+
warnings.push('No result value found in Observation resource');
|
|
285
|
+
}
|
|
286
|
+
}
|
|
252
287
|
else {
|
|
253
288
|
quads.push(tripleStr(subjectUri, NS.health + 'resultValue', ''));
|
|
254
289
|
warnings.push('No result value found in Observation resource');
|
|
@@ -324,14 +359,14 @@ export function convertObservationLab(resource) {
|
|
|
324
359
|
// ---------------------------------------------------------------------------
|
|
325
360
|
export function convertObservationVital(resource) {
|
|
326
361
|
const warnings = [];
|
|
327
|
-
const subjectUri =
|
|
362
|
+
const subjectUri = mintSubjectUri(resource);
|
|
328
363
|
const quads = [];
|
|
329
364
|
quads.push(tripleType(subjectUri, NS.clinical + 'VitalSign'));
|
|
330
365
|
quads.push(...commonTriples(subjectUri));
|
|
331
366
|
const codings = extractCodings(resource.code);
|
|
332
367
|
let vitalInfo;
|
|
333
368
|
for (const c of codings) {
|
|
334
|
-
if (c.system
|
|
369
|
+
if (isLoincSystem(c.system) && VITAL_LOINC_CODES[c.code]) {
|
|
335
370
|
vitalInfo = VITAL_LOINC_CODES[c.code];
|
|
336
371
|
quads.push(tripleRef(subjectUri, NS.clinical + 'loincCode', NS.loinc + c.code));
|
|
337
372
|
break;
|
|
@@ -343,15 +378,42 @@ export function convertObservationVital(resource) {
|
|
|
343
378
|
quads.push(tripleRef(subjectUri, NS.clinical + 'snomedCode', NS.sct + vitalInfo.snomedCode));
|
|
344
379
|
}
|
|
345
380
|
else {
|
|
381
|
+
// No LOINC match in the map — fall back to a slug derived from the display name.
|
|
382
|
+
// Data is fully preserved (value + unit + name); we just lack a canonical vitalType enum.
|
|
346
383
|
const name = codeableConceptText(resource.code) ?? 'Unknown Vital';
|
|
347
|
-
quads.push(tripleStr(subjectUri, NS.clinical + 'vitalType', name.toLowerCase().replace(
|
|
384
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'vitalType', name.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_|_$/g, '')));
|
|
348
385
|
quads.push(tripleStr(subjectUri, NS.clinical + 'vitalTypeName', name));
|
|
349
|
-
warnings.push(`Unknown vital sign LOINC code -- using display name: ${name}`);
|
|
350
386
|
}
|
|
351
387
|
if (resource.valueQuantity) {
|
|
352
388
|
quads.push(tripleDouble(subjectUri, NS.clinical + 'value', resource.valueQuantity.value));
|
|
353
389
|
quads.push(tripleStr(subjectUri, NS.clinical + 'unit', resource.valueQuantity.unit ?? vitalInfo?.unit ?? ''));
|
|
354
390
|
}
|
|
391
|
+
else if (Array.isArray(resource.component) && resource.component.length > 0) {
|
|
392
|
+
// Panel-style vital (e.g., blood pressure panel LOINC 55284-4): component children
|
|
393
|
+
// hold the individual readings. Emit each known component as a typed value predicate,
|
|
394
|
+
// e.g., clinical:bloodPressureSystolicValue / clinical:bloodPressureDiastolicValue.
|
|
395
|
+
let emittedCount = 0;
|
|
396
|
+
for (const comp of resource.component) {
|
|
397
|
+
if (!comp.valueQuantity)
|
|
398
|
+
continue;
|
|
399
|
+
const compCodings = extractCodings(comp.code);
|
|
400
|
+
let compInfo;
|
|
401
|
+
for (const c of compCodings) {
|
|
402
|
+
if (isLoincSystem(c.system) && VITAL_LOINC_CODES[c.code]) {
|
|
403
|
+
compInfo = VITAL_LOINC_CODES[c.code];
|
|
404
|
+
break;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
if (compInfo) {
|
|
408
|
+
quads.push(tripleDouble(subjectUri, NS.clinical + compInfo.type + 'Value', comp.valueQuantity.value));
|
|
409
|
+
quads.push(tripleStr(subjectUri, NS.clinical + compInfo.type + 'Unit', comp.valueQuantity.unit ?? compInfo.unit ?? ''));
|
|
410
|
+
emittedCount++;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
if (emittedCount === 0) {
|
|
414
|
+
warnings.push('No valueQuantity found in vital sign Observation');
|
|
415
|
+
}
|
|
416
|
+
}
|
|
355
417
|
else {
|
|
356
418
|
warnings.push('No valueQuantity found in vital sign Observation');
|
|
357
419
|
}
|
|
@@ -388,4 +450,367 @@ export function convertObservationVital(resource) {
|
|
|
388
450
|
_quads: quads,
|
|
389
451
|
};
|
|
390
452
|
}
|
|
453
|
+
// ---------------------------------------------------------------------------
|
|
454
|
+
// Procedure converter (B1)
|
|
455
|
+
// ---------------------------------------------------------------------------
|
|
456
|
+
export function convertProcedure(resource) {
|
|
457
|
+
const warnings = [];
|
|
458
|
+
const subjectUri = mintSubjectUri(resource);
|
|
459
|
+
const quads = [];
|
|
460
|
+
quads.push(tripleType(subjectUri, NS.clinical + 'Procedure'));
|
|
461
|
+
quads.push(...commonTriples(subjectUri));
|
|
462
|
+
// Procedure name
|
|
463
|
+
const name = codeableConceptText(resource.code) ?? 'Unknown Procedure';
|
|
464
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'procedureName', name));
|
|
465
|
+
// Procedure codes
|
|
466
|
+
const codings = extractCodings(resource.code);
|
|
467
|
+
for (const c of codings) {
|
|
468
|
+
if (c.system === 'http://snomed.info/sct') {
|
|
469
|
+
quads.push(tripleRef(subjectUri, NS.clinical + 'procedureSnomedCode', NS.sct + c.code));
|
|
470
|
+
}
|
|
471
|
+
else if (c.system === 'http://www.ama-assn.org/go/cpt' || c.system.includes('cpt')) {
|
|
472
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'cptCode', c.code));
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
// performedDate -- use performedDateTime first, fall back to performedPeriod.start
|
|
476
|
+
const performedDate = resource.performedDateTime ?? resource.performedPeriod?.start;
|
|
477
|
+
if (performedDate) {
|
|
478
|
+
quads.push(tripleDateTime(subjectUri, NS.clinical + 'performedDate', performedDate));
|
|
479
|
+
}
|
|
480
|
+
// Status
|
|
481
|
+
if (resource.status) {
|
|
482
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'procedureStatus', resource.status));
|
|
483
|
+
}
|
|
484
|
+
// Source record ID
|
|
485
|
+
if (resource.id) {
|
|
486
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'sourceRecordId', resource.id));
|
|
487
|
+
}
|
|
488
|
+
quads.push(tripleRef(subjectUri, NS.cascade + 'layerPromotionStatus', NS.cascade + 'FullyMapped'));
|
|
489
|
+
return {
|
|
490
|
+
turtle: '',
|
|
491
|
+
jsonld: quadsToJsonLd(quads, 'clinical:Procedure'),
|
|
492
|
+
warnings,
|
|
493
|
+
resourceType: 'Procedure',
|
|
494
|
+
cascadeType: 'clinical:Procedure',
|
|
495
|
+
_quads: quads,
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
// ---------------------------------------------------------------------------
|
|
499
|
+
// ClinicalDocument converter (B1)
|
|
500
|
+
// ---------------------------------------------------------------------------
|
|
501
|
+
export function convertClinicalDocument(resource) {
|
|
502
|
+
const warnings = [];
|
|
503
|
+
const subjectUri = mintSubjectUri(resource);
|
|
504
|
+
const quads = [];
|
|
505
|
+
quads.push(tripleType(subjectUri, NS.clinical + 'ClinicalDocument'));
|
|
506
|
+
quads.push(...commonTriples(subjectUri));
|
|
507
|
+
// Document type
|
|
508
|
+
const docType = codeableConceptText(resource.type) ?? 'Unknown Document';
|
|
509
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'documentType', docType));
|
|
510
|
+
// Date
|
|
511
|
+
const docDate = resource.date ?? resource.indexed;
|
|
512
|
+
if (docDate) {
|
|
513
|
+
quads.push(tripleDateTime(subjectUri, NS.clinical + 'documentDate', docDate));
|
|
514
|
+
}
|
|
515
|
+
// Content type and URL from first attachment
|
|
516
|
+
if (Array.isArray(resource.content) && resource.content.length > 0) {
|
|
517
|
+
const attachment = resource.content[0]?.attachment;
|
|
518
|
+
if (attachment) {
|
|
519
|
+
if (attachment.contentType) {
|
|
520
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'contentType', attachment.contentType));
|
|
521
|
+
}
|
|
522
|
+
if (attachment.url) {
|
|
523
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'documentUrl', attachment.url));
|
|
524
|
+
}
|
|
525
|
+
if (attachment.title) {
|
|
526
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'documentTitle', attachment.title));
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
if (resource.id) {
|
|
531
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'sourceRecordId', resource.id));
|
|
532
|
+
}
|
|
533
|
+
quads.push(tripleRef(subjectUri, NS.cascade + 'layerPromotionStatus', NS.cascade + 'FullyMapped'));
|
|
534
|
+
return {
|
|
535
|
+
turtle: '',
|
|
536
|
+
jsonld: quadsToJsonLd(quads, 'clinical:ClinicalDocument'),
|
|
537
|
+
warnings,
|
|
538
|
+
resourceType: 'DocumentReference',
|
|
539
|
+
cascadeType: 'clinical:ClinicalDocument',
|
|
540
|
+
_quads: quads,
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
// ---------------------------------------------------------------------------
|
|
544
|
+
// Encounter converter (B2)
|
|
545
|
+
// ---------------------------------------------------------------------------
|
|
546
|
+
export function convertEncounter(resource) {
|
|
547
|
+
const warnings = [];
|
|
548
|
+
const subjectUri = mintSubjectUri(resource);
|
|
549
|
+
const quads = [];
|
|
550
|
+
quads.push(tripleType(subjectUri, NS.clinical + 'Encounter'));
|
|
551
|
+
quads.push(...commonTriples(subjectUri));
|
|
552
|
+
// Encounter class (ambulatory, emergency, inpatient, etc.)
|
|
553
|
+
const encounterClass = resource.class?.code ?? resource.class?.coding?.[0]?.code;
|
|
554
|
+
if (encounterClass) {
|
|
555
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'encounterClass', encounterClass));
|
|
556
|
+
}
|
|
557
|
+
// Status
|
|
558
|
+
if (resource.status) {
|
|
559
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'encounterStatus', resource.status));
|
|
560
|
+
}
|
|
561
|
+
// Encounter type (from type[0])
|
|
562
|
+
if (Array.isArray(resource.type) && resource.type.length > 0) {
|
|
563
|
+
const typeText = codeableConceptText(resource.type[0]);
|
|
564
|
+
if (typeText) {
|
|
565
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'encounterType', typeText));
|
|
566
|
+
}
|
|
567
|
+
// SNOMED code from type
|
|
568
|
+
const codings = extractCodings(resource.type[0]);
|
|
569
|
+
for (const c of codings) {
|
|
570
|
+
if (c.system === 'http://snomed.info/sct') {
|
|
571
|
+
quads.push(tripleRef(subjectUri, NS.clinical + 'snomedCode', NS.sct + c.code));
|
|
572
|
+
break;
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
// Period
|
|
577
|
+
if (resource.period?.start) {
|
|
578
|
+
quads.push(tripleDateTime(subjectUri, NS.clinical + 'encounterStart', resource.period.start));
|
|
579
|
+
}
|
|
580
|
+
if (resource.period?.end) {
|
|
581
|
+
quads.push(tripleDateTime(subjectUri, NS.clinical + 'encounterEnd', resource.period.end));
|
|
582
|
+
}
|
|
583
|
+
// Provider from first participant
|
|
584
|
+
if (Array.isArray(resource.participant) && resource.participant.length > 0) {
|
|
585
|
+
const providerName = resource.participant[0]?.individual?.display;
|
|
586
|
+
if (providerName) {
|
|
587
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'providerName', providerName));
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
// Facility from serviceProvider
|
|
591
|
+
if (resource.serviceProvider?.display) {
|
|
592
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'facilityName', resource.serviceProvider.display));
|
|
593
|
+
}
|
|
594
|
+
if (resource.id) {
|
|
595
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'sourceRecordId', resource.id));
|
|
596
|
+
}
|
|
597
|
+
quads.push(tripleRef(subjectUri, NS.cascade + 'layerPromotionStatus', NS.cascade + 'FullyMapped'));
|
|
598
|
+
return {
|
|
599
|
+
turtle: '',
|
|
600
|
+
jsonld: quadsToJsonLd(quads, 'clinical:Encounter'),
|
|
601
|
+
warnings,
|
|
602
|
+
resourceType: 'Encounter',
|
|
603
|
+
cascadeType: 'clinical:Encounter',
|
|
604
|
+
_quads: quads,
|
|
605
|
+
};
|
|
606
|
+
}
|
|
607
|
+
// ---------------------------------------------------------------------------
|
|
608
|
+
// LaboratoryReport (DiagnosticReport) converter (B5)
|
|
609
|
+
// ---------------------------------------------------------------------------
|
|
610
|
+
export function convertLaboratoryReport(resource) {
|
|
611
|
+
const warnings = [];
|
|
612
|
+
const subjectUri = mintSubjectUri(resource);
|
|
613
|
+
const quads = [];
|
|
614
|
+
quads.push(tripleType(subjectUri, NS.clinical + 'LaboratoryReport'));
|
|
615
|
+
quads.push(...commonTriples(subjectUri));
|
|
616
|
+
// Panel name from code.text or first coding display
|
|
617
|
+
const panelName = codeableConceptText(resource.code) ?? 'Unknown Panel';
|
|
618
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'panelName', panelName));
|
|
619
|
+
// LOINC code
|
|
620
|
+
const codings = extractCodings(resource.code);
|
|
621
|
+
for (const c of codings) {
|
|
622
|
+
if (c.system === 'http://loinc.org') {
|
|
623
|
+
quads.push(tripleRef(subjectUri, NS.clinical + 'loincCode', NS.loinc + c.code));
|
|
624
|
+
break;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
// Report category
|
|
628
|
+
if (Array.isArray(resource.category) && resource.category.length > 0) {
|
|
629
|
+
const catCode = resource.category[0]?.coding?.[0]?.code ?? codeableConceptText(resource.category[0]);
|
|
630
|
+
if (catCode) {
|
|
631
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'reportCategory', catCode));
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
// Effective date
|
|
635
|
+
const effectiveDate = resource.effectiveDateTime ?? resource.effectivePeriod?.start;
|
|
636
|
+
if (effectiveDate) {
|
|
637
|
+
quads.push(tripleDateTime(subjectUri, NS.clinical + 'performedDate', effectiveDate));
|
|
638
|
+
}
|
|
639
|
+
// Provider from first performer
|
|
640
|
+
if (Array.isArray(resource.performer) && resource.performer.length > 0) {
|
|
641
|
+
const provName = resource.performer[0]?.display;
|
|
642
|
+
if (provName) {
|
|
643
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'providerName', provName));
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
// Link to constituent LabResult Observations via hasLabResult
|
|
647
|
+
if (Array.isArray(resource.result)) {
|
|
648
|
+
for (const ref of resource.result) {
|
|
649
|
+
// Extract ID from reference like "Observation/uuid-here"
|
|
650
|
+
const refStr = ref.reference;
|
|
651
|
+
if (refStr) {
|
|
652
|
+
const parts = refStr.split('/');
|
|
653
|
+
const obsId = parts[parts.length - 1];
|
|
654
|
+
if (obsId) {
|
|
655
|
+
// Mint deterministic URI for the referenced Observation
|
|
656
|
+
const obsUri = `urn:uuid:${obsId}`;
|
|
657
|
+
quads.push(tripleRef(subjectUri, NS.clinical + 'hasLabResult', obsUri));
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
if (resource.id) {
|
|
663
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'sourceRecordId', resource.id));
|
|
664
|
+
}
|
|
665
|
+
quads.push(tripleRef(subjectUri, NS.cascade + 'layerPromotionStatus', NS.cascade + 'FullyMapped'));
|
|
666
|
+
return {
|
|
667
|
+
turtle: '',
|
|
668
|
+
jsonld: quadsToJsonLd(quads, 'clinical:LaboratoryReport'),
|
|
669
|
+
warnings,
|
|
670
|
+
resourceType: 'DiagnosticReport',
|
|
671
|
+
cascadeType: 'clinical:LaboratoryReport',
|
|
672
|
+
_quads: quads,
|
|
673
|
+
};
|
|
674
|
+
}
|
|
675
|
+
// ---------------------------------------------------------------------------
|
|
676
|
+
// MedicationAdministration converter (B5)
|
|
677
|
+
// ---------------------------------------------------------------------------
|
|
678
|
+
export function convertMedicationAdministration(resource) {
|
|
679
|
+
const warnings = [];
|
|
680
|
+
const subjectUri = mintSubjectUri(resource);
|
|
681
|
+
const quads = [];
|
|
682
|
+
quads.push(tripleType(subjectUri, NS.clinical + 'MedicationAdministration'));
|
|
683
|
+
quads.push(...commonTriples(subjectUri));
|
|
684
|
+
// Medication name
|
|
685
|
+
const medName = codeableConceptText(resource.medicationCodeableConcept)
|
|
686
|
+
?? resource.medicationReference?.display
|
|
687
|
+
?? 'Unknown Medication';
|
|
688
|
+
quads.push(tripleStr(subjectUri, NS.health + 'medicationName', medName));
|
|
689
|
+
// Status
|
|
690
|
+
if (resource.status) {
|
|
691
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'administrationStatus', resource.status));
|
|
692
|
+
}
|
|
693
|
+
// Administered date
|
|
694
|
+
const adminDate = resource.effectiveDateTime ?? resource.effectivePeriod?.start;
|
|
695
|
+
if (adminDate) {
|
|
696
|
+
quads.push(tripleDateTime(subjectUri, NS.clinical + 'administeredDate', adminDate));
|
|
697
|
+
}
|
|
698
|
+
// Dose and route from dosage
|
|
699
|
+
if (resource.dosage) {
|
|
700
|
+
if (resource.dosage.dose) {
|
|
701
|
+
const dose = `${resource.dosage.dose.value ?? ''} ${resource.dosage.dose.unit ?? ''}`.trim();
|
|
702
|
+
if (dose)
|
|
703
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'administeredDose', dose));
|
|
704
|
+
}
|
|
705
|
+
const route = codeableConceptText(resource.dosage.route);
|
|
706
|
+
if (route) {
|
|
707
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'administeredRoute', route));
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
if (resource.id) {
|
|
711
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'sourceRecordId', resource.id));
|
|
712
|
+
}
|
|
713
|
+
quads.push(tripleRef(subjectUri, NS.cascade + 'layerPromotionStatus', NS.cascade + 'FullyMapped'));
|
|
714
|
+
return {
|
|
715
|
+
turtle: '',
|
|
716
|
+
jsonld: quadsToJsonLd(quads, 'clinical:MedicationAdministration'),
|
|
717
|
+
warnings,
|
|
718
|
+
resourceType: 'MedicationAdministration',
|
|
719
|
+
cascadeType: 'clinical:MedicationAdministration',
|
|
720
|
+
_quads: quads,
|
|
721
|
+
};
|
|
722
|
+
}
|
|
723
|
+
// ---------------------------------------------------------------------------
|
|
724
|
+
// Device (ImplantedDevice) converter (B5)
|
|
725
|
+
// ---------------------------------------------------------------------------
|
|
726
|
+
export function convertDevice(resource) {
|
|
727
|
+
const warnings = [];
|
|
728
|
+
const subjectUri = mintSubjectUri(resource);
|
|
729
|
+
const quads = [];
|
|
730
|
+
quads.push(tripleType(subjectUri, NS.clinical + 'ImplantedDevice'));
|
|
731
|
+
quads.push(...commonTriples(subjectUri));
|
|
732
|
+
// Device type
|
|
733
|
+
const deviceType = codeableConceptText(resource.type) ?? 'Unknown Device';
|
|
734
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'deviceType', deviceType));
|
|
735
|
+
// Status
|
|
736
|
+
if (resource.status) {
|
|
737
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'deviceStatus', resource.status));
|
|
738
|
+
}
|
|
739
|
+
// Manufacturer
|
|
740
|
+
if (resource.manufacturer) {
|
|
741
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'deviceManufacturer', resource.manufacturer));
|
|
742
|
+
}
|
|
743
|
+
// UDI carrier
|
|
744
|
+
if (Array.isArray(resource.udiCarrier) && resource.udiCarrier.length > 0) {
|
|
745
|
+
const udi = resource.udiCarrier[0]?.deviceIdentifier ?? resource.udiCarrier[0]?.carrierHRF;
|
|
746
|
+
if (udi)
|
|
747
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'udiCarrier', udi));
|
|
748
|
+
}
|
|
749
|
+
// Implant date (from manufactureDate or extension)
|
|
750
|
+
if (resource.manufactureDate) {
|
|
751
|
+
quads.push(tripleDateTime(subjectUri, NS.clinical + 'implantDate', resource.manufactureDate));
|
|
752
|
+
}
|
|
753
|
+
if (resource.id) {
|
|
754
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'sourceRecordId', resource.id));
|
|
755
|
+
}
|
|
756
|
+
quads.push(tripleRef(subjectUri, NS.cascade + 'layerPromotionStatus', NS.cascade + 'FullyMapped'));
|
|
757
|
+
return {
|
|
758
|
+
turtle: '',
|
|
759
|
+
jsonld: quadsToJsonLd(quads, 'clinical:ImplantedDevice'),
|
|
760
|
+
warnings,
|
|
761
|
+
resourceType: 'Device',
|
|
762
|
+
cascadeType: 'clinical:ImplantedDevice',
|
|
763
|
+
_quads: quads,
|
|
764
|
+
};
|
|
765
|
+
}
|
|
766
|
+
// ---------------------------------------------------------------------------
|
|
767
|
+
// ImagingStudy converter (B5)
|
|
768
|
+
// ---------------------------------------------------------------------------
|
|
769
|
+
export function convertImagingStudy(resource) {
|
|
770
|
+
const warnings = [];
|
|
771
|
+
const subjectUri = mintSubjectUri(resource);
|
|
772
|
+
const quads = [];
|
|
773
|
+
quads.push(tripleType(subjectUri, NS.clinical + 'ImagingStudy'));
|
|
774
|
+
quads.push(...commonTriples(subjectUri));
|
|
775
|
+
// Modality from first series
|
|
776
|
+
const modality = resource.series?.[0]?.modality?.code;
|
|
777
|
+
if (modality) {
|
|
778
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'imagingModality', modality));
|
|
779
|
+
}
|
|
780
|
+
// Description
|
|
781
|
+
if (resource.description) {
|
|
782
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'studyDescription', resource.description));
|
|
783
|
+
}
|
|
784
|
+
// Number of series
|
|
785
|
+
if (resource.numberOfSeries !== undefined) {
|
|
786
|
+
quads.push(tripleTyped(subjectUri, NS.clinical + 'numberOfSeries', String(resource.numberOfSeries), NS.xsd + 'integer'));
|
|
787
|
+
}
|
|
788
|
+
// Study date
|
|
789
|
+
if (resource.started) {
|
|
790
|
+
quads.push(tripleDateTime(subjectUri, NS.clinical + 'studyDate', resource.started));
|
|
791
|
+
}
|
|
792
|
+
// DICOM Study UID from identifier[0]
|
|
793
|
+
if (Array.isArray(resource.identifier) && resource.identifier.length > 0) {
|
|
794
|
+
const uid = resource.identifier[0]?.value;
|
|
795
|
+
if (uid)
|
|
796
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'dicomStudyUid', uid));
|
|
797
|
+
}
|
|
798
|
+
// Retrieve URL from first series endpoint
|
|
799
|
+
const retrieveUrl = resource.series?.[0]?.endpoint?.[0]?.reference;
|
|
800
|
+
if (retrieveUrl) {
|
|
801
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'retrieveUrl', retrieveUrl));
|
|
802
|
+
}
|
|
803
|
+
if (resource.id) {
|
|
804
|
+
quads.push(tripleStr(subjectUri, NS.clinical + 'sourceRecordId', resource.id));
|
|
805
|
+
}
|
|
806
|
+
quads.push(tripleRef(subjectUri, NS.cascade + 'layerPromotionStatus', NS.cascade + 'FullyMapped'));
|
|
807
|
+
return {
|
|
808
|
+
turtle: '',
|
|
809
|
+
jsonld: quadsToJsonLd(quads, 'clinical:ImagingStudy'),
|
|
810
|
+
warnings,
|
|
811
|
+
resourceType: 'ImagingStudy',
|
|
812
|
+
cascadeType: 'clinical:ImagingStudy',
|
|
813
|
+
_quads: quads,
|
|
814
|
+
};
|
|
815
|
+
}
|
|
391
816
|
//# sourceMappingURL=converters-clinical.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"converters-clinical.js","sourceRoot":"","sources":["../../../src/lib/fhir-converter/converters-clinical.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"converters-clinical.js","sourceRoot":"","sources":["../../../src/lib/fhir-converter/converters-clinical.ts"],"names":[],"mappings":"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"}
|