@the-cascade-protocol/cli 0.3.3 → 0.3.5
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/capabilities.d.ts.map +1 -1
- package/dist/commands/capabilities.js +17 -0
- package/dist/commands/capabilities.js.map +1 -1
- package/dist/commands/convert.d.ts.map +1 -1
- package/dist/commands/convert.js +4 -0
- package/dist/commands/convert.js.map +1 -1
- package/dist/lib/fhir-converter/converters-clinical.d.ts.map +1 -1
- package/dist/lib/fhir-converter/converters-clinical.js +12 -0
- package/dist/lib/fhir-converter/converters-clinical.js.map +1 -1
- package/dist/lib/fhir-converter/index.d.ts.map +1 -1
- package/dist/lib/fhir-converter/index.js +11 -8
- package/dist/lib/fhir-converter/index.js.map +1 -1
- package/dist/lib/fhir-converter/types.d.ts +1 -0
- package/dist/lib/fhir-converter/types.d.ts.map +1 -1
- package/dist/lib/fhir-converter/types.js.map +1 -1
- package/dist/shapes/clinical.ttl +192 -4
- package/dist/shapes/core.ttl +198 -3
- package/dist/shapes/coverage.ttl +325 -2
- package/dist/shapes/health.ttl +72 -3
- package/package.json +1 -1
package/dist/shapes/clinical.ttl
CHANGED
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
dct:description "Vocabulary for clinical documents, narratives, and structured notes imported from EHR systems via Apple HealthKit"@en ;
|
|
21
21
|
dct:creator "Cascade Agentic Labs" ;
|
|
22
22
|
dct:created "2025-12-26"^^xsd:date ;
|
|
23
|
-
dct:modified "2026-
|
|
24
|
-
owl:versionInfo "1.
|
|
23
|
+
dct:modified "2026-03-12"^^xsd:date ;
|
|
24
|
+
owl:versionInfo "1.7" ;
|
|
25
25
|
rdfs:comment "Domain-specific vocabulary for clinical documentation and structured records imported from patient portals (MyChart, Epic, etc.). Contains EHR-verified clinical data."@en ;
|
|
26
26
|
rdfs:seeAlso <https://cascadeprotocol.org/docs/clinical/v1.0/> .
|
|
27
27
|
|
|
@@ -752,7 +752,7 @@ clinical:icd10Code a owl:DatatypeProperty ;
|
|
|
752
752
|
|
|
753
753
|
clinical:linkedConditionIds a owl:DatatypeProperty ;
|
|
754
754
|
rdfs:label "Linked Condition IDs"@en ;
|
|
755
|
-
rdfs:comment "Space-separated UUIDs of related ConditionSummary records
|
|
755
|
+
rdfs:comment "Space-separated UUIDs of related ConditionSummary records (e.g., linking a complication to its root condition). Enables graph traversal between related diagnoses."@en ;
|
|
756
756
|
rdfs:domain clinical:Condition ;
|
|
757
757
|
rdfs:range xsd:string .
|
|
758
758
|
|
|
@@ -768,7 +768,7 @@ clinical:vaccineName a owl:DatatypeProperty ;
|
|
|
768
768
|
|
|
769
769
|
clinical:vaccineCode a owl:DatatypeProperty ;
|
|
770
770
|
rdfs:label "Vaccine Code"@en ;
|
|
771
|
-
rdfs:comment "CVX code for the vaccine"@en ;
|
|
771
|
+
rdfs:comment "CVX code for the vaccine (legacy — use clinical:cvxCode for new serialization; v1.6)"@en ;
|
|
772
772
|
rdfs:domain clinical:Immunization ;
|
|
773
773
|
rdfs:range xsd:string .
|
|
774
774
|
|
|
@@ -1298,6 +1298,15 @@ clinical:isActive a owl:DatatypeProperty ;
|
|
|
1298
1298
|
# Changelog
|
|
1299
1299
|
# ============================================================================
|
|
1300
1300
|
#
|
|
1301
|
+
# Version 1.6 (2026-02-22)
|
|
1302
|
+
# - Added clinical:linkedConditionIds DatatypeProperty on clinical:Condition
|
|
1303
|
+
# for linking related ConditionSummary records via space-separated UUIDs.
|
|
1304
|
+
# Enables graph traversal between related diagnoses (e.g., complication to
|
|
1305
|
+
# root condition). Part of Health Map v3 Pre-Phase Track A (Task A2).
|
|
1306
|
+
# - Annotated clinical:vaccineCode as legacy in favor of clinical:cvxCode
|
|
1307
|
+
# (both defined; cvxCode added v1.1, vaccineCode retained for backward
|
|
1308
|
+
# compatibility).
|
|
1309
|
+
#
|
|
1301
1310
|
# Version 1.5 (2026-02-10)
|
|
1302
1311
|
# - Added CoverageRecord class (11 properties) for insurance coverage data
|
|
1303
1312
|
# Maps to fhir:Coverage. Layer 2 complement to checkup:InsuranceInfo (Layer 3).
|
|
@@ -1367,3 +1376,182 @@ clinical:isActive a owl:DatatypeProperty ;
|
|
|
1367
1376
|
# All documents imported via clinical: vocabulary use cascade:ClinicalGenerated provenance
|
|
1368
1377
|
# Source: Apple HealthKit HKClinicalRecord API
|
|
1369
1378
|
# Privacy: Documents may contain PHI - encrypted storage required
|
|
1379
|
+
|
|
1380
|
+
# ============================================================================
|
|
1381
|
+
# New Class: clinical:Encounter
|
|
1382
|
+
# Added in v1.7 — supports FHIR Encounter conversion
|
|
1383
|
+
# ============================================================================
|
|
1384
|
+
|
|
1385
|
+
clinical:Encounter a owl:Class ;
|
|
1386
|
+
rdfs:label "Clinical Encounter"@en ;
|
|
1387
|
+
rdfs:comment "A clinical encounter — any interaction between a patient and a healthcare provider. Enables grouping of clinical events (procedures, observations, prescriptions) that occurred in the same visit context."@en ;
|
|
1388
|
+
rdfs:subClassOf prov:Entity .
|
|
1389
|
+
|
|
1390
|
+
clinical:encounterClass a owl:DatatypeProperty ;
|
|
1391
|
+
rdfs:domain clinical:Encounter ;
|
|
1392
|
+
rdfs:range xsd:string ;
|
|
1393
|
+
rdfs:label "Encounter Class"@en ;
|
|
1394
|
+
rdfs:comment "Values: ambulatory, emergency, inpatient, home-health"@en .
|
|
1395
|
+
|
|
1396
|
+
clinical:encounterStatus a owl:DatatypeProperty ;
|
|
1397
|
+
rdfs:domain clinical:Encounter ;
|
|
1398
|
+
rdfs:range xsd:string ;
|
|
1399
|
+
rdfs:label "Encounter Status"@en ;
|
|
1400
|
+
rdfs:comment "Values: finished, in-progress, cancelled"@en .
|
|
1401
|
+
|
|
1402
|
+
clinical:encounterType a owl:DatatypeProperty ;
|
|
1403
|
+
rdfs:domain clinical:Encounter ;
|
|
1404
|
+
rdfs:range xsd:string ;
|
|
1405
|
+
rdfs:label "Encounter Type"@en ;
|
|
1406
|
+
rdfs:comment "Display name from SNOMED/FHIR code"@en .
|
|
1407
|
+
|
|
1408
|
+
clinical:encounterStart a owl:DatatypeProperty ;
|
|
1409
|
+
rdfs:domain clinical:Encounter ;
|
|
1410
|
+
rdfs:range xsd:dateTime ;
|
|
1411
|
+
rdfs:label "Encounter Start"@en .
|
|
1412
|
+
|
|
1413
|
+
clinical:encounterEnd a owl:DatatypeProperty ;
|
|
1414
|
+
rdfs:domain clinical:Encounter ;
|
|
1415
|
+
rdfs:range xsd:dateTime ;
|
|
1416
|
+
rdfs:label "Encounter End"@en .
|
|
1417
|
+
|
|
1418
|
+
clinical:facilityName a owl:DatatypeProperty ;
|
|
1419
|
+
rdfs:domain clinical:Encounter ;
|
|
1420
|
+
rdfs:range xsd:string ;
|
|
1421
|
+
rdfs:label "Facility Name"@en .
|
|
1422
|
+
|
|
1423
|
+
# ============================================================================
|
|
1424
|
+
# New Class: clinical:MedicationAdministration
|
|
1425
|
+
# Added in v1.7 — supports FHIR MedicationAdministration conversion
|
|
1426
|
+
# ============================================================================
|
|
1427
|
+
|
|
1428
|
+
clinical:MedicationAdministration a owl:Class ;
|
|
1429
|
+
rdfs:label "Medication Administration"@en ;
|
|
1430
|
+
rdfs:comment "A single administration event of a medication given at a specific time by a provider (e.g., IV antibiotics administered pre-surgery, vaccine injection at visit). Semantically distinct from clinical:Medication (ongoing prescription regimens): represents a one-time event, not an ongoing regimen."@en ;
|
|
1431
|
+
rdfs:subClassOf prov:Entity .
|
|
1432
|
+
|
|
1433
|
+
clinical:administeredDate a owl:DatatypeProperty ;
|
|
1434
|
+
rdfs:domain clinical:MedicationAdministration ;
|
|
1435
|
+
rdfs:range xsd:dateTime ;
|
|
1436
|
+
rdfs:label "Administered Date"@en .
|
|
1437
|
+
|
|
1438
|
+
clinical:administeredDose a owl:DatatypeProperty ;
|
|
1439
|
+
rdfs:domain clinical:MedicationAdministration ;
|
|
1440
|
+
rdfs:range xsd:string ;
|
|
1441
|
+
rdfs:label "Administered Dose"@en ;
|
|
1442
|
+
rdfs:comment "e.g., '1g', '500mg'"@en .
|
|
1443
|
+
|
|
1444
|
+
clinical:administeredRoute a owl:DatatypeProperty ;
|
|
1445
|
+
rdfs:domain clinical:MedicationAdministration ;
|
|
1446
|
+
rdfs:range xsd:string ;
|
|
1447
|
+
rdfs:label "Administered Route"@en ;
|
|
1448
|
+
rdfs:comment "Values: oral, IV, IM, subcutaneous, topical"@en .
|
|
1449
|
+
|
|
1450
|
+
clinical:administrationStatus a owl:DatatypeProperty ;
|
|
1451
|
+
rdfs:domain clinical:MedicationAdministration ;
|
|
1452
|
+
rdfs:range xsd:string ;
|
|
1453
|
+
rdfs:label "Administration Status"@en ;
|
|
1454
|
+
rdfs:comment "Values: completed, not-done, in-progress"@en .
|
|
1455
|
+
|
|
1456
|
+
# ============================================================================
|
|
1457
|
+
# New Class: clinical:ImplantedDevice
|
|
1458
|
+
# Added in v1.7 — supports FHIR Device conversion
|
|
1459
|
+
# ============================================================================
|
|
1460
|
+
|
|
1461
|
+
clinical:ImplantedDevice a owl:Class ;
|
|
1462
|
+
rdfs:label "Implanted Device"@en ;
|
|
1463
|
+
rdfs:comment "A medical device implanted in or attached to the patient as a permanent part of their health profile (e.g., pacemaker, cardiac stent, cochlear implant, insulin pump). Presence affects medication safety, imaging eligibility (MRI contraindications), and surgical risk."@en ;
|
|
1464
|
+
rdfs:subClassOf prov:Entity .
|
|
1465
|
+
|
|
1466
|
+
clinical:deviceType a owl:DatatypeProperty ;
|
|
1467
|
+
rdfs:domain clinical:ImplantedDevice ;
|
|
1468
|
+
rdfs:range xsd:string ;
|
|
1469
|
+
rdfs:label "Device Type"@en ;
|
|
1470
|
+
rdfs:comment "e.g., pacemaker, stent, cochlear-implant"@en .
|
|
1471
|
+
|
|
1472
|
+
clinical:implantDate a owl:DatatypeProperty ;
|
|
1473
|
+
rdfs:domain clinical:ImplantedDevice ;
|
|
1474
|
+
rdfs:range xsd:dateTime ;
|
|
1475
|
+
rdfs:label "Implant Date"@en .
|
|
1476
|
+
|
|
1477
|
+
clinical:deviceManufacturer a owl:DatatypeProperty ;
|
|
1478
|
+
rdfs:domain clinical:ImplantedDevice ;
|
|
1479
|
+
rdfs:range xsd:string ;
|
|
1480
|
+
rdfs:label "Device Manufacturer"@en .
|
|
1481
|
+
|
|
1482
|
+
clinical:udiCarrier a owl:DatatypeProperty ;
|
|
1483
|
+
rdfs:domain clinical:ImplantedDevice ;
|
|
1484
|
+
rdfs:range xsd:string ;
|
|
1485
|
+
rdfs:label "UDI Carrier"@en ;
|
|
1486
|
+
rdfs:comment "Unique Device Identifier"@en .
|
|
1487
|
+
|
|
1488
|
+
clinical:deviceStatus a owl:DatatypeProperty ;
|
|
1489
|
+
rdfs:domain clinical:ImplantedDevice ;
|
|
1490
|
+
rdfs:range xsd:string ;
|
|
1491
|
+
rdfs:label "Device Status"@en ;
|
|
1492
|
+
rdfs:comment "Values: active, inactive, entered-in-error"@en .
|
|
1493
|
+
|
|
1494
|
+
# ============================================================================
|
|
1495
|
+
# New Class: clinical:ImagingStudy
|
|
1496
|
+
# Added in v1.7 — supports FHIR ImagingStudy conversion
|
|
1497
|
+
# ============================================================================
|
|
1498
|
+
|
|
1499
|
+
clinical:ImagingStudy a owl:Class ;
|
|
1500
|
+
rdfs:label "Imaging Study"@en ;
|
|
1501
|
+
rdfs:comment "Metadata record for a diagnostic imaging study (CT, MRI, X-ray, ultrasound). Records that imaging exists and its key characteristics without requiring access to DICOM images. Useful for clinical timeline, pre-procedure review, and agent reasoning about the patient's imaging history."@en ;
|
|
1502
|
+
rdfs:subClassOf prov:Entity .
|
|
1503
|
+
|
|
1504
|
+
clinical:imagingModality a owl:DatatypeProperty ;
|
|
1505
|
+
rdfs:domain clinical:ImagingStudy ;
|
|
1506
|
+
rdfs:range xsd:string ;
|
|
1507
|
+
rdfs:label "Imaging Modality"@en ;
|
|
1508
|
+
rdfs:comment "Values: CT, MR, DX, US, NM"@en .
|
|
1509
|
+
|
|
1510
|
+
clinical:studyDescription a owl:DatatypeProperty ;
|
|
1511
|
+
rdfs:domain clinical:ImagingStudy ;
|
|
1512
|
+
rdfs:range xsd:string ;
|
|
1513
|
+
rdfs:label "Study Description"@en .
|
|
1514
|
+
|
|
1515
|
+
clinical:numberOfSeries a owl:DatatypeProperty ;
|
|
1516
|
+
rdfs:domain clinical:ImagingStudy ;
|
|
1517
|
+
rdfs:range xsd:integer ;
|
|
1518
|
+
rdfs:label "Number of Series"@en .
|
|
1519
|
+
|
|
1520
|
+
clinical:studyDate a owl:DatatypeProperty ;
|
|
1521
|
+
rdfs:domain clinical:ImagingStudy ;
|
|
1522
|
+
rdfs:range xsd:dateTime ;
|
|
1523
|
+
rdfs:label "Study Date"@en .
|
|
1524
|
+
|
|
1525
|
+
clinical:dicomStudyUid a owl:DatatypeProperty ;
|
|
1526
|
+
rdfs:domain clinical:ImagingStudy ;
|
|
1527
|
+
rdfs:range xsd:string ;
|
|
1528
|
+
rdfs:label "DICOM Study UID"@en .
|
|
1529
|
+
|
|
1530
|
+
clinical:retrieveUrl a owl:DatatypeProperty ;
|
|
1531
|
+
rdfs:domain clinical:ImagingStudy ;
|
|
1532
|
+
rdfs:range xsd:anyURI ;
|
|
1533
|
+
rdfs:label "Retrieve URL"@en ;
|
|
1534
|
+
rdfs:comment "URL to DICOM server if available"@en .
|
|
1535
|
+
|
|
1536
|
+
# ============================================================================
|
|
1537
|
+
# New Properties on existing class: clinical:LaboratoryReport
|
|
1538
|
+
# Added in v1.7 — supports DiagnosticReport panel grouping
|
|
1539
|
+
# ============================================================================
|
|
1540
|
+
|
|
1541
|
+
clinical:hasLabResult a owl:ObjectProperty ;
|
|
1542
|
+
rdfs:label "Has Lab Result"@en ;
|
|
1543
|
+
rdfs:comment "Links a LaboratoryReport panel to its constituent clinical:LabResult observations. Enables grouping of lab values (e.g., CBC components) under the ordering panel. FHIR alignment: fhir:DiagnosticReport.result."@en ;
|
|
1544
|
+
rdfs:domain clinical:LaboratoryReport ;
|
|
1545
|
+
rdfs:range clinical:LabResult .
|
|
1546
|
+
|
|
1547
|
+
clinical:panelName a owl:DatatypeProperty ;
|
|
1548
|
+
rdfs:domain clinical:LaboratoryReport ;
|
|
1549
|
+
rdfs:range xsd:string ;
|
|
1550
|
+
rdfs:label "Panel Name"@en ;
|
|
1551
|
+
rdfs:comment "e.g., 'Complete Blood Count'"@en .
|
|
1552
|
+
|
|
1553
|
+
clinical:reportCategory a owl:DatatypeProperty ;
|
|
1554
|
+
rdfs:domain clinical:LaboratoryReport ;
|
|
1555
|
+
rdfs:range xsd:string ;
|
|
1556
|
+
rdfs:label "Report Category"@en ;
|
|
1557
|
+
rdfs:comment "Values: LAB, RAD, PATH"@en .
|
package/dist/shapes/core.ttl
CHANGED
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
dct:description "Core vocabulary for schema versioning, data provenance, identity management, and patient demographics across all Cascade Protocol applications"@en ;
|
|
18
18
|
dct:creator "Cascade Agentic Labs" ;
|
|
19
19
|
dct:created "2025-10-31"^^xsd:date ;
|
|
20
|
-
dct:modified "2026-
|
|
21
|
-
owl:versionInfo "2.
|
|
20
|
+
dct:modified "2026-03-12"^^xsd:date ;
|
|
21
|
+
owl:versionInfo "2.8" ;
|
|
22
22
|
rdfs:comment "This vocabulary defines cross-cutting concepts used by all Cascade Protocol health data applications: schema versioning, data provenance, patient demographics (PatientProfile), and supporting identity classes (Address, PharmacyInfo, AdvanceDirectives). Domain-specific vocabularies (e.g., pots:, ecg:, glucose:) import this core vocabulary."@en ;
|
|
23
23
|
rdfs:seeAlso <https://cascadeprotocol.org/docs/core/v1.0/> .
|
|
24
24
|
|
|
@@ -153,10 +153,20 @@ cascade:sourceMetricCoverage a owl:ObjectProperty ;
|
|
|
153
153
|
rdfs:comment "A wellness metric this source provides. Use multiple triples for multiple metrics (e.g., two triples linking to health:restingHeartRate and health:heartRateVariability). Preferred over comma-separated strings for proper RDF graph traversal."@en ;
|
|
154
154
|
rdfs:domain cascade:DataSource .
|
|
155
155
|
|
|
156
|
-
# ============================================================================
|
|
157
156
|
# ============================================================================
|
|
158
157
|
# Provenance Detail Properties (v2.3)
|
|
159
158
|
# ============================================================================
|
|
159
|
+
# Lightweight provenance detail properties for record-level attribution.
|
|
160
|
+
# These properties are placed on record instances directly (not on DataSource
|
|
161
|
+
# objects) for display in Health Map provenance badges without requiring
|
|
162
|
+
# full DataSource graph traversal.
|
|
163
|
+
#
|
|
164
|
+
# cascade:sourceOrganization — populated from FHIR meta.source or contained
|
|
165
|
+
# Organization reference during clinical record import. Examples: "Kaiser
|
|
166
|
+
# Permanente", "Mayo Clinic".
|
|
167
|
+
#
|
|
168
|
+
# cascade:sourceDeviceName — populated from HealthKit HKSource contributing
|
|
169
|
+
# app/device name. Examples: "Apple Watch Series 9", "Omron BP Monitor".
|
|
160
170
|
|
|
161
171
|
cascade:sourceOrganization a owl:DatatypeProperty ;
|
|
162
172
|
rdfs:label "Source Organization"@en ;
|
|
@@ -168,6 +178,7 @@ cascade:sourceDeviceName a owl:DatatypeProperty ;
|
|
|
168
178
|
rdfs:comment "Device or app that recorded this measurement (e.g., 'Apple Watch Series 9', 'Omron BP Monitor'). Populated from HealthKit HKSource contributing app/device name."@en ;
|
|
169
179
|
rdfs:range xsd:string .
|
|
170
180
|
|
|
181
|
+
# ============================================================================
|
|
171
182
|
# Vocabulary Organization (v1.3)
|
|
172
183
|
# ============================================================================
|
|
173
184
|
|
|
@@ -531,6 +542,117 @@ cascade:advanceDirectiveNotes a owl:DatatypeProperty ;
|
|
|
531
542
|
rdfs:domain cascade:AdvanceDirectives ;
|
|
532
543
|
rdfs:range xsd:string .
|
|
533
544
|
|
|
545
|
+
# ============================================================================
|
|
546
|
+
# Reconciliation Properties (v2.4)
|
|
547
|
+
# ============================================================================
|
|
548
|
+
# Used by the Cascade reconciliation pipeline to annotate merged records with
|
|
549
|
+
# provenance and conflict resolution metadata.
|
|
550
|
+
|
|
551
|
+
cascade:sourceSystem a owl:DatatypeProperty ;
|
|
552
|
+
rdfs:label "Source System"@en ;
|
|
553
|
+
rdfs:comment "The name of the EHR or health system that originally held this record (e.g. 'primary-care', 'hospital'). Added during cross-system conversion to enable reconciliation."@en ;
|
|
554
|
+
rdfs:domain owl:Thing ;
|
|
555
|
+
rdfs:range xsd:string .
|
|
556
|
+
|
|
557
|
+
cascade:reconciliationStatus a owl:ObjectProperty ;
|
|
558
|
+
rdfs:label "Reconciliation Status"@en ;
|
|
559
|
+
rdfs:comment "The outcome of reconciliation for this record. Value is one of the cascade:ReconciliationStatus named individuals: cascade:Canonical, cascade:Merged, cascade:ConflictResolved, cascade:UnresolvedConflict."@en ;
|
|
560
|
+
rdfs:domain owl:Thing ;
|
|
561
|
+
rdfs:range cascade:ReconciliationStatus .
|
|
562
|
+
|
|
563
|
+
cascade:ReconciliationStatus a owl:Class ;
|
|
564
|
+
rdfs:label "Reconciliation Status"@en ;
|
|
565
|
+
rdfs:comment "Closed enumeration of possible reconciliation outcomes."@en .
|
|
566
|
+
|
|
567
|
+
cascade:Canonical a owl:NamedIndividual, cascade:ReconciliationStatus ;
|
|
568
|
+
rdfs:label "Canonical"@en ;
|
|
569
|
+
rdfs:comment "Record is unique — no matching record found across other source systems."@en .
|
|
570
|
+
|
|
571
|
+
cascade:Merged a owl:NamedIndividual, cascade:ReconciliationStatus ;
|
|
572
|
+
rdfs:label "Merged"@en ;
|
|
573
|
+
rdfs:comment "Record was deduplicated from two or more identical or near-identical source records."@en .
|
|
574
|
+
|
|
575
|
+
cascade:ConflictResolved a owl:NamedIndividual, cascade:ReconciliationStatus ;
|
|
576
|
+
rdfs:label "Conflict Resolved"@en ;
|
|
577
|
+
rdfs:comment "Conflicting values across source records were resolved automatically using a trust-priority or merge strategy."@en .
|
|
578
|
+
|
|
579
|
+
cascade:UnresolvedConflict a owl:NamedIndividual, cascade:ReconciliationStatus ;
|
|
580
|
+
rdfs:label "Unresolved Conflict"@en ;
|
|
581
|
+
rdfs:comment "Conflicting values could not be automatically resolved (trust scores too similar). Requires manual clinical review."@en .
|
|
582
|
+
|
|
583
|
+
cascade:WithinSourceDuplicate a owl:NamedIndividual, cascade:ReconciliationStatus ;
|
|
584
|
+
rdfs:label "Within-Source Duplicate"@en ;
|
|
585
|
+
rdfs:comment "Record is a duplicate of another record within the same source system (e.g. same condition recorded across multiple clinical encounters). Suppressed from cross-system reconciliation output during Pass 1 deduplication."@en .
|
|
586
|
+
|
|
587
|
+
cascade:mergedFrom a owl:ObjectProperty ;
|
|
588
|
+
rdfs:label "Merged From"@en ;
|
|
589
|
+
rdfs:comment "Links a reconciled record to the source record URIs that were merged into it. Used together with prov:wasDerivedFrom for semantic interoperability."@en ;
|
|
590
|
+
rdfs:domain owl:Thing ;
|
|
591
|
+
rdfs:range owl:Thing ;
|
|
592
|
+
rdfs:subPropertyOf prov:wasDerivedFrom .
|
|
593
|
+
|
|
594
|
+
cascade:conflictResolution a owl:ObjectProperty ;
|
|
595
|
+
rdfs:label "Conflict Resolution Strategy"@en ;
|
|
596
|
+
rdfs:comment "The strategy used to resolve a conflict. Value is one of the cascade:ConflictResolutionStrategy named individuals: cascade:TrustPriority, cascade:MergeValues, cascade:FlagUnresolved."@en ;
|
|
597
|
+
rdfs:domain owl:Thing ;
|
|
598
|
+
rdfs:range cascade:ConflictResolutionStrategy .
|
|
599
|
+
|
|
600
|
+
cascade:ConflictResolutionStrategy a owl:Class ;
|
|
601
|
+
rdfs:label "Conflict Resolution Strategy"@en ;
|
|
602
|
+
rdfs:comment "Closed enumeration of reconciliation resolution strategies."@en .
|
|
603
|
+
|
|
604
|
+
cascade:TrustPriority a owl:NamedIndividual, cascade:ConflictResolutionStrategy ;
|
|
605
|
+
rdfs:label "Trust Priority"@en ;
|
|
606
|
+
rdfs:comment "The record from the highest-trust source system is selected as canonical."@en .
|
|
607
|
+
|
|
608
|
+
cascade:MergeValues a owl:NamedIndividual, cascade:ConflictResolutionStrategy ;
|
|
609
|
+
rdfs:label "Merge Values"@en ;
|
|
610
|
+
rdfs:comment "The canonical record is built by taking the winner's fields and filling any gaps from lower-trust sources."@en .
|
|
611
|
+
|
|
612
|
+
cascade:FlagUnresolved a owl:NamedIndividual, cascade:ConflictResolutionStrategy ;
|
|
613
|
+
rdfs:label "Flag Unresolved"@en ;
|
|
614
|
+
rdfs:comment "The conflict could not be automatically resolved. Record is tagged cascade:UnresolvedConflict for manual clinical review."@en .
|
|
615
|
+
|
|
616
|
+
cascade:conflictField a owl:ObjectProperty ;
|
|
617
|
+
rdfs:label "Conflict Field"@en ;
|
|
618
|
+
rdfs:comment "The predicate URI on which a conflict was detected during reconciliation (e.g. health:status, health:resultValue). Stored as a URI reference, not a prefixed name string."@en ;
|
|
619
|
+
rdfs:domain owl:Thing ;
|
|
620
|
+
rdfs:range rdfs:Resource .
|
|
621
|
+
|
|
622
|
+
cascade:conflictDescription a owl:DatatypeProperty ;
|
|
623
|
+
rdfs:label "Conflict Description"@en ;
|
|
624
|
+
rdfs:comment "Removed v2.7. Was informational prose describing conflicting values per source system. Replaced by cascade:conflictDetail structured blank node (v2.5), which uses rdfs:comment on the blank node for human readability."@en ;
|
|
625
|
+
owl:deprecated true ;
|
|
626
|
+
rdfs:domain owl:Thing ;
|
|
627
|
+
rdfs:range xsd:string .
|
|
628
|
+
|
|
629
|
+
cascade:conflictDetail a owl:ObjectProperty ;
|
|
630
|
+
rdfs:label "Conflict Detail"@en ;
|
|
631
|
+
rdfs:comment "Links a reconciled record to a structured cascade:ConflictDetail blank node describing the per-system values that conflicted. The blank node carries an rdfs:comment with a human-readable summary."@en ;
|
|
632
|
+
rdfs:domain owl:Thing ;
|
|
633
|
+
rdfs:range cascade:ConflictDetail .
|
|
634
|
+
|
|
635
|
+
cascade:ConflictDetail a owl:Class ;
|
|
636
|
+
rdfs:label "Conflict Detail"@en ;
|
|
637
|
+
rdfs:comment "A structured representation of conflicting values across source systems for a single property. Used as a blank node linked from cascade:conflictDetail."@en .
|
|
638
|
+
|
|
639
|
+
cascade:conflictFor a owl:ObjectProperty ;
|
|
640
|
+
rdfs:label "Conflict For"@en ;
|
|
641
|
+
rdfs:comment "The predicate URI on which the conflict was detected (e.g. <https://ns.cascadeprotocol.org/health/v1#status>). Links a cascade:ConflictDetail to the conflicting property."@en ;
|
|
642
|
+
rdfs:domain cascade:ConflictDetail ;
|
|
643
|
+
rdfs:range rdfs:Resource .
|
|
644
|
+
|
|
645
|
+
cascade:systemValue a owl:ObjectProperty ;
|
|
646
|
+
rdfs:label "System Value"@en ;
|
|
647
|
+
rdfs:comment "Links a cascade:ConflictDetail to a blank node representing one source system's value for the conflicting property. Each participating source system has its own cascade:systemValue blank node."@en ;
|
|
648
|
+
rdfs:domain cascade:ConflictDetail .
|
|
649
|
+
|
|
650
|
+
cascade:forSystem a owl:DatatypeProperty ;
|
|
651
|
+
rdfs:label "For System"@en ;
|
|
652
|
+
rdfs:comment "The name of the source EHR system (e.g. 'primary-care', 'specialist') within a cascade:systemValue blank node."@en ;
|
|
653
|
+
rdfs:domain cascade:ConflictDetail ;
|
|
654
|
+
rdfs:range xsd:string .
|
|
655
|
+
|
|
534
656
|
# ============================================================================
|
|
535
657
|
# Alignment with W3C PROV-O
|
|
536
658
|
# ============================================================================
|
|
@@ -554,6 +676,42 @@ cascade:advanceDirectiveNotes a owl:DatatypeProperty ;
|
|
|
554
676
|
# ============================================================================
|
|
555
677
|
# Changelog
|
|
556
678
|
# ============================================================================
|
|
679
|
+
# v2.7 (2026-03-12): Removed cascade:conflictDescription (deprecated since v2.5).
|
|
680
|
+
# cascade:conflictDetail blank nodes now carry an rdfs:comment with a human-readable
|
|
681
|
+
# summary of the conflicting values, replacing the separate prose property.
|
|
682
|
+
# v2.6 (2026-03-11): Within-source deduplication vocabulary. Added
|
|
683
|
+
# cascade:WithinSourceDuplicate named individual for cascade:ReconciliationStatus.
|
|
684
|
+
# Represents encounter-instance duplicate records suppressed during Pass 1
|
|
685
|
+
# within-source deduplication. Phase 6 of reconciliation pipeline.
|
|
686
|
+
# v2.5 (2026-03-11): Structured conflict representation. Added cascade:ConflictDetail
|
|
687
|
+
# class and 4 supporting properties: cascade:conflictDetail (ObjectProperty,
|
|
688
|
+
# links record to ConflictDetail blank node), cascade:conflictFor (ObjectProperty,
|
|
689
|
+
# the conflicting predicate URI), cascade:systemValue (ObjectProperty, per-system
|
|
690
|
+
# value blank node), cascade:forSystem (DatatypeProperty, system name string).
|
|
691
|
+
# Deprecated cascade:conflictDescription (informational prose, replaced by
|
|
692
|
+
# cascade:conflictDetail structured blank node). Phase 5 of reconciliation pipeline.
|
|
693
|
+
# v2.4 (2026-03-11): Added reconciliation vocabulary for multi-system EHR data
|
|
694
|
+
# merging. Properties: cascade:sourceSystem (EHR origin tag, xsd:string),
|
|
695
|
+
# cascade:reconciliationStatus (ObjectProperty, range cascade:ReconciliationStatus),
|
|
696
|
+
# cascade:mergedFrom (ObjectProperty, subPropertyOf prov:wasDerivedFrom),
|
|
697
|
+
# cascade:conflictResolution (ObjectProperty, range cascade:ConflictResolutionStrategy),
|
|
698
|
+
# cascade:conflictField (ObjectProperty, range rdfs:Resource, stores full predicate URI),
|
|
699
|
+
# cascade:conflictDescription (DatatypeProperty, informational prose).
|
|
700
|
+
# Declared named individuals: cascade:Canonical, cascade:Merged,
|
|
701
|
+
# cascade:ConflictResolved, cascade:UnresolvedConflict (ReconciliationStatus);
|
|
702
|
+
# cascade:TrustPriority, cascade:MergeValues, cascade:FlagUnresolved
|
|
703
|
+
# (ConflictResolutionStrategy). Note: cascade:mergedSources (dropped —
|
|
704
|
+
# redundant with mergedFrom+sourceSystem) and cascade:conflictValues
|
|
705
|
+
# (renamed to cascade:conflictDescription) were in the initial design but
|
|
706
|
+
# corrected before the TTL was finalized. Supports CLI v0.2.5 reconcile command.
|
|
707
|
+
# v2.3 (2026-02-22): Added 2 provenance detail properties for record-level
|
|
708
|
+
# attribution: cascade:sourceOrganization (organization that provided a
|
|
709
|
+
# record, populated from FHIR meta.source or contained Organization
|
|
710
|
+
# reference during clinical import) and cascade:sourceDeviceName (device
|
|
711
|
+
# or app that recorded a measurement, populated from HealthKit HKSource
|
|
712
|
+
# contributing app/device name). Used across all 11 CheckupShared record
|
|
713
|
+
# models for Health Map provenance display. Part of Health Map v3
|
|
714
|
+
# Pre-Phase Track A (Task A4).
|
|
557
715
|
# v2.2 (2026-02-18): FHIR-aligned Address expansion and PatientProfile
|
|
558
716
|
# completeness (Phase 3.5 ONT1 + ONT2).
|
|
559
717
|
# ONT1: Added 9 FHIR Address.* aligned properties (addressUse, addressType,
|
|
@@ -601,3 +759,40 @@ cascade:advanceDirectiveNotes a owl:DatatypeProperty ;
|
|
|
601
759
|
# AIExtracted (under ClinicalGenerated). Aligns with SDK DataProvenance
|
|
602
760
|
# enum (6 cases). Backward-compatible: existing data using
|
|
603
761
|
# cascade:ConsumerGenerated/ClinicalGenerated remains valid.
|
|
762
|
+
|
|
763
|
+
# ============================================================================
|
|
764
|
+
# Layer Promotion Status (FHIR Conversion)
|
|
765
|
+
# Added in v2.8 — supports lossless FHIR ↔ Cascade round-trip conversion
|
|
766
|
+
# ============================================================================
|
|
767
|
+
|
|
768
|
+
cascade:LayerPromotionStatusValue a owl:Class ;
|
|
769
|
+
rdfs:label "Layer Promotion Status Value"@en ;
|
|
770
|
+
rdfs:comment "Closed enumeration of Layer 2 promotion states for converted FHIR records."@en .
|
|
771
|
+
|
|
772
|
+
cascade:layerPromotionStatus a owl:ObjectProperty ;
|
|
773
|
+
rdfs:label "Layer Promotion Status"@en ;
|
|
774
|
+
rdfs:comment "Indicates whether a record has been fully mapped to Cascade Layer 2 vocabulary or is preserved as a Layer 1 FHIR passthrough pending future mapping."@en ;
|
|
775
|
+
rdfs:range cascade:LayerPromotionStatusValue .
|
|
776
|
+
|
|
777
|
+
cascade:FullyMapped a owl:NamedIndividual, cascade:LayerPromotionStatusValue ;
|
|
778
|
+
rdfs:label "Fully Mapped"@en ;
|
|
779
|
+
rdfs:comment "Record has been fully mapped to Cascade Layer 2 vocabulary."@en .
|
|
780
|
+
|
|
781
|
+
cascade:PendingLayerTwoPromotion a owl:NamedIndividual, cascade:LayerPromotionStatusValue ;
|
|
782
|
+
rdfs:label "Pending Layer 2 Promotion"@en ;
|
|
783
|
+
rdfs:comment "Record is preserved as Layer 1 FHIR passthrough. Full Layer 2 vocabulary mapping has not yet been defined. Original FHIR JSON is retained in cascade:fhirJson for round-trip export."@en .
|
|
784
|
+
|
|
785
|
+
cascade:fhirJson a owl:DatatypeProperty ;
|
|
786
|
+
rdfs:label "Original FHIR JSON"@en ;
|
|
787
|
+
rdfs:comment "Preserves the complete original FHIR resource JSON for Layer 1 passthrough records. Always stored as plain xsd:string (FHIR JSON is always valid UTF-8). Used for lossless round-trip export. Self-contained — survives reconciliation without sidecar file dependencies."@en ;
|
|
788
|
+
rdfs:range xsd:string .
|
|
789
|
+
|
|
790
|
+
cascade:fhirResourceType a owl:DatatypeProperty ;
|
|
791
|
+
rdfs:label "FHIR Resource Type"@en ;
|
|
792
|
+
rdfs:comment "FHIR R4 resourceType of the source record. Populated on Layer 1 passthrough records."@en ;
|
|
793
|
+
rdfs:range xsd:string .
|
|
794
|
+
|
|
795
|
+
cascade:sourceRecordDate a owl:DatatypeProperty ;
|
|
796
|
+
rdfs:label "Source Record Date"@en ;
|
|
797
|
+
rdfs:comment "Minimal date projection triple for Layer 1 passthrough records. Copied from effectiveDateTime, date, period.start, or created field if present."@en ;
|
|
798
|
+
rdfs:range xsd:dateTime .
|