Overview
- Namespace URI:
https://ns.cascadeprotocol.org/clinical/v1#- Preferred Prefix:
clinical:- Version:
- 1.5
- Status:
- Stable
- Schema File:
- clinical.ttl (Turtle/RDF)
- SHACL Shapes:
- clinical.shapes.ttl
The Clinical Vocabulary provides a comprehensive schema for representing clinical documents and structured health records imported from EHR systems via Apple HealthKit. It supports both narrative clinical documents (progress notes, discharge summaries) and structured records (medications, allergies, lab results, conditions, immunizations, procedures, and vital signs).
All classes align with HL7 FHIR resources and use standard healthcare terminologies including LOINC, SNOMED CT, RxNorm, and ICD-10.
Document Classes
Classes for representing clinical documents and their structure.
clinical:ClinicalDocument
owl:Class
Clinical documentation imported from EHR systems, including narratives and structured data.
Subclass of: fhir:DocumentReference, prov:Entity
clinical:ProgressNote
owl:Class
Provider progress note documenting a patient encounter.
Subclass of: clinical:ClinicalDocument
LOINC: 11506-3
clinical:DischargeSummary
owl:Class
Hospital discharge summary document.
Subclass of: clinical:ClinicalDocument
LOINC: 18842-5
clinical:LaboratoryReport
owl:Class
Laboratory test results with narrative interpretation.
Subclass of: clinical:ClinicalDocument, fhir:DiagnosticReport
clinical:ClinicalSection
owl:Class
Section within a clinical document (e.g., History of Present Illness, Assessment, Plan).
Structured Record Classes
Classes for representing discrete clinical data elements from EHR systems.
clinical:Medication
owl:Class
Medication record from EHR MedicationStatement or MedicationRequest resource.
Subclass of: fhir:MedicationStatement, prov:Entity
Key Properties: drugName, dosage, route, frequency, rxNormCode, prescriber, indication, courseOfTherapyType
FHIR-Enriched Properties (v1.3): medicationForm, activeIngredient, ingredientStrength, asNeeded, refillsAllowed, supplyDurationDays, dispensedQuantity, prescriptionCategory, provenanceClass, sourceFhirResourceType, clinicalIntent
New Properties (v1.5): administrationRoute
clinical:Allergy
owl:Class
Allergy or intolerance record from EHR AllergyIntolerance resource.
Subclass of: fhir:AllergyIntolerance, prov:Entity
Key Properties: allergen, reaction, severity, criticality
clinical:LabResult
owl:Class
Laboratory test result from EHR Observation resource.
Subclass of: fhir:Observation, prov:Entity
Key Properties: testName, value, unit, referenceRange, interpretation, loincCode
New Properties (v1.4): orderingProvider, performingLab, observationStatus, sourceRecordId, panelMembership, referenceRangeLow, referenceRangeHigh, referenceRangeText, issuedDate
clinical:Condition
owl:Class
Medical condition or diagnosis from EHR Condition resource.
Subclass of: fhir:Condition, prov:Entity
Key Properties: conditionName, onsetDate, clinicalStatus, icd10Code, snomedCode
clinical:Immunization
owl:Class
Vaccination record from EHR Immunization resource.
Subclass of: fhir:Immunization, prov:Entity
Key Properties: vaccineName, vaccineCode, lotNumber, manufacturer, doseNumber
clinical:Procedure
owl:Class
Medical procedure record from EHR Procedure resource.
Subclass of: fhir:Procedure, prov:Entity
Key Properties: procedureName, procedureDate, bodySite, cptCode, snomedCode
New Properties (v1.5): procedureStatus, procedureCategory, procedureSnomedCode
clinical:VitalSign
owl:Class
Vital sign observation (heart rate, blood pressure, temperature, etc.) from EHR.
Subclass of: fhir:Observation, prov:Entity
Key Properties: vitalType, value, unit, systolicValue, diastolicValue
clinical:CoverageRecord v1.5 Deprecated
owl:Class · owl:deprecated true
Deprecation Notice: Use coverage:InsurancePlan from coverage.ttl for new insurance data. This class is retained for backward compatibility with existing EHR import pipeline data. See Coverage Vocabulary v1.0 for the replacement.
Insurance coverage record imported from EHR. Layer 2 representation of patient insurance data with FHIR Coverage alignment.
Subclass of: prov:Entity
FHIR Alignment: rdfs:seeAlso fhir:Coverage
Key Properties: providerName, memberId, groupNumber, planName, planType, coverageType, relationship, effectivePeriodStart, effectivePeriodEnd, payorName, subscriberId
Layer Mapping: Layer 2 (clinical:CoverageRecord) complements Layer 3 (checkup:InsuranceInfo) for patient-facing summaries. New data should use coverage:InsurancePlan (Layer 2) instead.
Longitudinal Record Classes v1.2
Classes for tracking health data over time with reconciliation and episode management.
clinical:MedicationUseEpisode
owl:Class
Canonical longitudinal record of patient's relationship with a medication over time. Derived from one or more source records via reconciliation. Episodes represent continuous periods of use—a gap beyond threshold (90 days) creates a new episode.
Subclass of: prov:Entity
Key Properties: canonicalName, episodeFirstSeenDate, episodeLastSeenDate, currentDose, inferredStatus, statusConfidence, usePattern, therapeuticClass
clinical:LabTestSeries v1.4
owl:Class
Longitudinal record of repeated measurements of the same laboratory test (identified by LOINC code) over time. The lab equivalent of MedicationUseEpisode. Unlike medication episodes where a 90-day gap creates a new episode, lab tests have no gap concept — one series per LOINC code per patient.
Subclass of: prov:Entity
Identity Properties: canonicalTestName, testLoincCode, testConceptUri, seriesCategory
Longitudinal Tracking: firstResultDate, lastResultDate, resultCount
Current State: latestValue, latestUnit, latestInterpretation
Trend Inference: trendDirection, trendConfidence, trendReason
Reference Range: currentReferenceRange, currentReferenceRangeLow, currentReferenceRangeHigh
Source Linkage: derivedFromRecord, hasAbnormalHistory, hasUnresolvedConflicts, seriesPanelMembership
clinical:Supplement
owl:Class
Dietary supplement, OTC product, or herbal remedy with explicit regulatory status. Separate from Medication class due to different regulatory status and evidence requirements.
Subclass of: prov:Entity
Key Properties: supplementName, regulatoryStatus, evidenceStrength, brand, form, dsldId, reasonForUse
Note: Supplements do NOT create episodes (different regulatory status from FDA-approved medications).
Key Data Properties
Document Metadata
clinical:importedAt
owl:DatatypeProperty
ISO 8601 timestamp when document was imported from Apple Health.
Range: xsd:dateTime
clinical:sourceEHR
owl:DatatypeProperty
Name of the source EHR system (e.g., 'Epic MyChart', 'Cerner').
Range: xsd:string
clinical:fhirResourceId
owl:DatatypeProperty
Original FHIR resource identifier from the source system.
Range: xsd:string
Terminology Codes
clinical:loincCode
owl:DatatypeProperty
LOINC code for the clinical concept.
Example: "2085-9" (HDL Cholesterol)
clinical:snomedCode
owl:DatatypeProperty
SNOMED CT code for the clinical concept.
Example: "73211009" (Diabetes mellitus)
clinical:icd10Code
owl:DatatypeProperty
ICD-10-CM diagnosis code.
Example: "E11.9" (Type 2 diabetes without complications)
clinical:rxNormCode
owl:DatatypeProperty
RxNorm code for medications.
Example: "197361" (Metformin 500mg)
Typed Code Properties v1.6
These typed code properties were aligned to the clinical: namespace in v1.6 as part of the typed code alignment (Task A2). Previously, some Checkup summary classes used checkup:-namespaced code properties; these now uniformly use clinical: predicates per the mixed namespace pattern.
clinical:cvxCode v1.6
owl:DatatypeProperty • Domain: clinical:Immunization
CDC CVX (Vaccine Administered) code. Preferred over legacy clinical:vaccineCode for new serialization. Used in checkup:ImmunizationSummary via mixed namespace pattern.
Example: "140" (Influenza, seasonal, injectable, preservative free)
clinical:linkedConditionIds v1.6
owl:DatatypeProperty • Domain: clinical:Condition
Space-separated UUIDs of related ConditionSummary records (e.g., linking a complication to its root condition). Enables graph traversal between related diagnoses in Health Map.
Range: xsd:string
CoverageRecord Properties v1.5 Deprecated
Deprecation Notice: clinical:CoverageRecord and its properties are deprecated. Use coverage:InsurancePlan from coverage.ttl for new insurance data. These properties remain defined for backward compatibility with existing EHR import pipeline data.
Properties for representing insurance coverage data imported from EHR systems. Maps to fhir:Coverage resource.
clinical:providerName
owl:DatatypeProperty
Insurance company or plan provider name.
Range: xsd:string
clinical:memberId
owl:DatatypeProperty
Insurance member/subscriber identifier.
Range: xsd:string
clinical:groupNumber
owl:DatatypeProperty
Employer group number for employer-sponsored plans.
Range: xsd:string
clinical:planName
owl:DatatypeProperty
Name of the insurance plan.
Range: xsd:string
clinical:planType
owl:DatatypeProperty
Type of insurance plan: hmo, ppo, epo, pos, hdhp, medicare, medicaid, tricare, other.
Range: xsd:string
clinical:coverageType
owl:DatatypeProperty
Classification of coverage: medical, dental, vision, prescription, mental_health.
Range: xsd:string
clinical:relationship
owl:DatatypeProperty
Beneficiary relationship to subscriber: self, spouse, child, parent, other.
Range: xsd:string
clinical:effectivePeriodStart
owl:DatatypeProperty
Start date of coverage period.
Range: xsd:date
clinical:effectivePeriodEnd
owl:DatatypeProperty
End date of coverage period.
Range: xsd:date
clinical:payorName
owl:DatatypeProperty
Name of the organization paying for coverage.
Range: xsd:string
clinical:subscriberId
owl:DatatypeProperty
Identifier for the policy holder from the insurer.
Range: xsd:string
Usage Example
@prefix clinical: <https://ns.cascadeprotocol.org/clinical/v1#> .
@prefix cascade: <https://ns.cascadeprotocol.org/core/v1#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
# Medication record example (v1.3 — full FHIR enrichment)
<#med-metformin-123> a clinical:Medication ;
cascade:schemaVersion "1.3" ;
cascade:dataProvenance cascade:ClinicalGenerated ;
clinical:drugName "Metformin HCl 500 MG Oral Tablet" ;
clinical:dosage "500 mg" ;
clinical:route "oral" ;
clinical:frequency "twice daily" ;
clinical:rxNormCode "197361" ;
clinical:status "active" ;
clinical:prescriber "Dr. Sarah Johnson" ;
clinical:indication "Type 2 Diabetes" ;
clinical:courseOfTherapyType "continuous" ;
clinical:medicationForm "Tablet" ;
clinical:activeIngredient "Metformin hydrochloride" ;
clinical:ingredientStrength "500 mg" ;
clinical:asNeeded false ;
clinical:refillsAllowed 3 ;
clinical:supplyDurationDays 90 ;
clinical:dispensedQuantity "90 tablets" ;
clinical:prescriptionCategory "community" ;
clinical:provenanceClass "healthKitFHIR" ;
clinical:sourceFhirResourceType "MedicationRequest" ;
clinical:clinicalIntent "prescribed" ;
clinical:sourceEHR "Epic MyChart" ;
prov:wasAttributedTo <https://id.cascadeprotocol.org/users/abc123> .
# Lab result example (v1.4 — full metadata)
<#lab-a1c-456> a clinical:LabResult ;
cascade:schemaVersion "1.4" ;
cascade:dataProvenance cascade:ClinicalGenerated ;
clinical:testName "Hemoglobin A1c" ;
clinical:value "6.5" ;
clinical:unit "%" ;
clinical:referenceRange "4.0-5.6 %" ;
clinical:referenceRangeLow "4.0"^^xsd:decimal ;
clinical:referenceRangeHigh "5.6"^^xsd:decimal ;
clinical:interpretation "H" ;
clinical:observationStatus "final" ;
clinical:loincCode "4548-4" ;
clinical:effectiveDate "2025-12-15T08:30:00Z"^^xsd:dateTime ;
clinical:issuedDate "2025-12-15T14:22:00Z"^^xsd:dateTime ;
clinical:orderingProvider "Dr. Sarah Johnson" ;
clinical:performingLab "Quest Diagnostics" ;
clinical:sourceRecordId "obs-a1c-20251215-001" ;
clinical:sourceEHR "Epic MyChart" ;
clinical:provenanceClass "healthKitFHIR" .
# Lab test series example (v1.4 — longitudinal tracking)
<#series-a1c> a clinical:LabTestSeries ;
cascade:schemaVersion "1.4" ;
clinical:canonicalTestName "Hemoglobin A1C" ;
clinical:testLoincCode "4548-4" ;
clinical:seriesCategory "diabetes" ;
clinical:firstResultDate "2024-06-15T08:00:00Z"^^xsd:dateTime ;
clinical:lastResultDate "2025-12-15T08:30:00Z"^^xsd:dateTime ;
clinical:resultCount "4"^^xsd:integer ;
clinical:latestValue "6.5" ;
clinical:latestUnit "%" ;
clinical:latestInterpretation "H" ;
clinical:trendDirection "increasing" ;
clinical:trendConfidence "high" ;
clinical:trendReason "3-point upward trend over 18 months" ;
clinical:hasAbnormalHistory true ;
clinical:currentReferenceRange "4.0-5.6 %" ;
clinical:currentReferenceRangeLow "4.0"^^xsd:decimal ;
clinical:currentReferenceRangeHigh "5.6"^^xsd:decimal ;
clinical:derivedFromRecord <#lab-a1c-456> .
FHIR Alignment
The Clinical Vocabulary aligns with HL7 FHIR R4 resources to ensure interoperability with healthcare systems:
| Clinical Class | FHIR Resource |
|---|---|
clinical:Medication |
MedicationStatement |
clinical:Allergy |
AllergyIntolerance |
clinical:LabResult |
Observation |
clinical:Condition |
Condition |
clinical:Immunization |
Immunization |
clinical:Procedure |
Procedure |
clinical:VitalSign |
Observation (vital-signs profile) |
clinical:ClinicalDocument |
DocumentReference |
clinical:MedicationUseEpisode v1.2 |
Derived from MedicationStatement |
clinical:Supplement v1.2 |
No direct FHIR equivalent (non-prescription) |
clinical:LabTestSeries v1.4 |
Derived from Observation (longitudinal grouping by LOINC code) |
clinical:CoverageRecord v1.5 |
Coverage |
SHACL Validation
The vocabulary includes SHACL shapes for data validation. Use the shapes file to validate clinical records:
- Required property constraints (e.g., medications must have
drugName) - Datatype constraints (e.g., dates must be
xsd:dateTime) - Value range constraints (e.g., severity must be mild/moderate/severe)
Download SHACL shapes for integration with your validation pipeline.
Data Provenance
All clinical records use cascade:ClinicalGenerated provenance to indicate EHR-verified data:
- Source: Apple HealthKit
HKClinicalRecordAPI - Origin: Patient portals (Epic MyChart, Cerner, etc.)
- Classification: Clinical-generated, EHR-verified
- Privacy: May contain PHI - encrypted storage required
Changelog
Version 1.6 (2026-02-22)
- Added
clinical:linkedConditionIdsDatatypeProperty onclinical:Conditionfor linking related conditions via space-separated UUIDs (enables Health Map graph traversal) - Typed code alignment (Task A2):
clinical:loincCodeonLabResult,clinical:cvxCodepreferred over legacyclinical:vaccineCodeonImmunization,clinical:icd10Codeandclinical:snomedCodeonConditionandFamilyHistoryEntry,clinical:snomedCodeandclinical:rxNormCodeonAllergySummary - Annotated
clinical:vaccineCodeas legacy (retained for backward compatibility; useclinical:cvxCodefor new serialization) - Part of Health Map v3 Pre-Phase Track A
Version 1.5 (2026-02-10)
- Added
CoverageRecordclass for insurance coverage data (11 properties)- Maps to
fhir:Coverageresource - Layer 2 complement to
checkup:InsuranceInfo(Layer 3)
- Maps to
- Added 3 new
Procedureproperties:procedureStatus,procedureCategory,procedureSnomedCode - Added
administrationRouteproperty forMedication
Version 1.4 (2026-01-28)
- Added 5 new lab result properties for enhanced metadata
orderingProvider,performingLab,observationStatus(clinical context)sourceRecordId(FHIR traceability)panelMembership(panel container back-reference)
- Added structured reference range properties:
referenceRangeLow,referenceRangeHigh,referenceRangeText - Added
issuedDatefor result issuance timestamp - Added
clinical:LabTestSeriesclass for longitudinal lab result tracking- Lab equivalent of
MedicationUseEpisode— one series per LOINC code per patient - 20 properties for identity, trending, reference ranges, and source linkage
- Trend inference with confidence and explainable reason
- No gap-based splitting (unlike medication episodes)
- Lab equivalent of
- Extended
derivedFromRecord,sourceExternalId, andhasUnresolvedConflictsdomains to includeLabTestSeries - Extended
sourceEHRandprovenanceClassdomains to includeLabResult
Version 1.3 (2026-01-26)
- Added 14 medication enrichment properties from FHIR extraction pipeline
- Tier 1 (Clinical Detail):
prescriber,indication,courseOfTherapyType,asNeeded,medicationForm,activeIngredient,ingredientStrength - Tier 1 (Provenance):
provenanceClass,sourceFhirResourceType,clinicalIntent - Tier 2 (Dispensing):
refillsAllowed,supplyDurationDays,dispensedQuantity,prescriptionCategory
- Tier 1 (Clinical Detail):
- SHACL shapes with enumerated value constraints for
courseOfTherapyType,provenanceClass,sourceFhirResourceType,clinicalIntent,prescriptionCategory - Full end-to-end FHIR extraction pipeline: JSON → MedicationSummary → MedicationRecord → TTL
- Previously-defined but unpopulated terms (
ndcCode,snomedCode) now extracted from FHIR
Version 1.2 (2026-01-15)
- Added
MedicationUseEpisodeclass for longitudinal medication tracking- Represents continuous periods of medication use
- Links to source MedicationRecord(s) via
derivedFromRecord - Includes inferred status with explainable confidence/reason
- Supports multi-system drug coding (RxNorm, NDC, SNOMED, ATC)
- Added
Supplementclass for dietary supplements and OTC products- Explicit
regulatoryStatus(dietarySupplement, otcDrug, homeopathic, herbalRemedy) evidenceStrengthproperty for clinical evidence level- DSLD integration for NIH supplement database
- Explicit
- Added ~25 new data properties for episode and supplement serialization
- Episode identity rules: gap > 90 days creates new episode
- Supplements intentionally do NOT create episodes (different regulatory status)
Version 1.1 (2026-01-01)
- Added 7 structured clinical record classes: Medication, Allergy, LabResult, Condition, Immunization, Procedure, VitalSign
- Added ~50 data properties for structured records
- Added vital sign component properties for multi-value observations (blood pressure)
- Added SHACL shapes for all structured record types
- Validated with OWL-RL reasoner (no inconsistencies)
- Validated with Apache Jena SHACL validator
Version 1.0 (2025-12-26)
- Initial release with document-centric vocabulary
- ClinicalDocument and subtypes (ProgressNote, DischargeSummary, etc.)
- ClinicalSection for document structure
- Document metadata properties (importedAt, sourceEHR, etc.)
- Narrative content properties