Overview
- Namespace URI:
https://ns.cascadeprotocol.org/health/v1#- Preferred Prefix:
health:- Version:
- 1.9
- Status:
- Stable
- Imports:
cascade:(Core Vocabulary v1)- Schema File:
- health.ttl (Turtle/RDF)
The Health Vocabulary provides a comprehensive schema for representing consumer-generated wellness observations from wearable devices and Apple HealthKit. It maps Cascade wellness properties to established SNOMED CT and LOINC codes following the three-layer ontology architecture.
All vital sign properties use fhir:Observation as their domain, aligning with
HL7 FHIR observation resources.
Activity and sleep metrics use composite snapshot classes (ActivitySnapshot,
SleepSnapshot) that subclass prov:Entity.
Composite Classes
Aggregate snapshot classes for activity and sleep data collected over a measurement period.
health:ActivitySnapshot
owl:Class
Aggregated activity metrics over a measurement period (typically 7 days). Includes steps, active energy, exercise minutes, and stand hours.
Subclass of: prov:Entity
health:SleepSnapshot
owl:Class
Aggregated sleep metrics over a measurement period (typically 7 days). Includes duration and quality assessment.
Subclass of: prov:Entity
health:MetricTrend v1.5
owl:Class
A time-bounded trend for a single wellness metric, computed from a series of observations. Captures direction, magnitude, and comparison period. Designed for continuous daily observations from consumer devices.
Subclass of: prov:Entity
health:VO2MaxStatistics v1.7
owl:Class
Statistical summary of VO2 Max readings over a measurement period (typically 180 days). Provides trend analysis, fitness classification, and min/max/mean calculations. Designed for dual-path UI display: rich statistics view when available, fallback to single VO2 Max value otherwise.
Subclass of: prov:Entity
health:HRVStatistics v1.7
owl:Class
Statistical summary of Heart Rate Variability (SDNN) readings over a measurement period. Provides trend analysis and min/max/mean calculations.
Subclass of: prov:Entity
health:BPStatistics v1.8
owl:Class
Statistical summary of blood pressure readings over a measurement period. Provides mean, min, max for systolic and diastolic values, plus AHA category classification.
Subclass of: prov:Entity
Cardiac Properties
Heart rate and heart rate variability observations from wearable devices.
health:restingHeartRate
owl:DatatypeProperty
Average resting heart rate from wearable device.
Domain: fhir:Observation
Range: xsd:double
Unit: beats/min (UCUM: /min)
SNOMED CT: 364075005 (Heart rate)
LOINC: 40443-4 (Heart rate — resting)
health:walkingHeartRate
owl:DatatypeProperty
Average heart rate during walking from wearable device.
Domain: fhir:Observation
Range: xsd:double
Unit: beats/min (UCUM: /min)
SNOMED CT: 364075005 (Heart rate)
LOINC: 89270-3 (Heart rate — walking exercise)
health:heartRateVariability
owl:DatatypeProperty
Standard deviation of normal-to-normal R-R intervals (SDNN) from wearable device.
Domain: fhir:Observation
Range: xsd:double
Unit: ms (UCUM: ms)
SNOMED CT: 80404004 (Heart rate variability)
LOINC: 80404-7 (R-R interval standard deviation)
Cardiovascular Properties
Blood pressure observations with systolic and diastolic components.
health:bloodPressure
owl:ObjectProperty
Blood pressure panel observation with systolic and diastolic components.
Domain: fhir:Observation
SNOMED CT: 75367002 (Blood pressure)
LOINC: 85354-9 (Blood pressure panel)
health:systolicBP
owl:DatatypeProperty
Systolic blood pressure component.
Domain: fhir:Observation
Range: xsd:double
Unit: mmHg (UCUM: mm[Hg])
SNOMED CT: 271649006 (Systolic blood pressure)
LOINC: 8480-6 (Systolic blood pressure)
health:diastolicBP
owl:DatatypeProperty
Diastolic blood pressure component.
Domain: fhir:Observation
Range: xsd:double
Unit: mmHg (UCUM: mm[Hg])
SNOMED CT: 271650006 (Diastolic blood pressure)
LOINC: 8462-4 (Diastolic blood pressure)
Respiratory & Fitness Properties
health:respiratoryRate
owl:DatatypeProperty
Average respiratory rate from wearable device.
Domain: fhir:Observation
Range: xsd:double
Unit: breaths/min (UCUM: /min)
SNOMED CT: 86290005 (Respiratory rate)
LOINC: 9279-1 (Respiratory rate)
health:vo2Max
owl:DatatypeProperty
Estimated maximal oxygen consumption (cardiorespiratory fitness).
Domain: fhir:Observation
Range: xsd:double
Unit: mL/kg/min (UCUM: mL/kg/min)
SNOMED CT: 251880009 (Aerobic capacity)
LOINC: 60842-2 (VO2 max)
Walking Steadiness
health:walkingSteadiness
owl:DatatypeProperty
Apple Health walking steadiness classification (OK / Low / Very Low). Maps to nearest SNOMED balance concept. No LOINC equivalent exists for this consumer-device metric.
Domain: fhir:Observation
Range: xsd:string
SNOMED CT: 364832000 (Balance finding)
LOINC: — (no equivalent)
Note: SNOMED mapping is approximate. Alternatives considered: 250043000 (Gait finding — too broad), 282097004 (Ability to walk — functional assessment, not a measurement). Apple's OK/Low/Very Low classification is proprietary.
Body Measurement Properties v1.8
Body measurement observations with SNOMED CT and LOINC standard code mappings.
health:bodyMass
owl:DatatypeProperty
Body weight measurement.
Domain: fhir:Observation
Range: xsd:double
Unit: kg (UCUM: kg)
SNOMED CT: 27113001 (Body weight)
LOINC: 29463-7 (Body weight)
Trend Polarity: neutral
health:bodyHeight
owl:DatatypeProperty
Body height measurement.
Domain: fhir:Observation
Range: xsd:double
Unit: cm (UCUM: cm)
SNOMED CT: 50373000 (Body height)
LOINC: 8302-2 (Body height)
Trend Polarity: neutral
health:bodyMassIndex
owl:DatatypeProperty
Computed body mass index (weight/height squared).
Domain: fhir:Observation
Range: xsd:double
Unit: kg/m2 (UCUM: kg/m2)
SNOMED CT: 60621009 (Body mass index)
LOINC: 39156-5 (Body mass index)
Trend Polarity: neutral
health:bodyTemperature
owl:DatatypeProperty
Body temperature measurement.
Domain: fhir:Observation
Range: xsd:double
Unit: degC (UCUM: Cel)
SNOMED CT: 386725007 (Body temperature)
LOINC: 8310-5 (Body temperature)
Trend Polarity: neutral
health:oxygenSaturation
owl:DatatypeProperty
Blood oxygen saturation (SpO2) from pulse oximeter.
Domain: fhir:Observation
Range: xsd:double
Unit: % (UCUM: %)
SNOMED CT: 431314004 (Oxygen saturation)
LOINC: 2708-6 (Oxygen saturation)
Trend Polarity: higher_is_better
health:bloodGlucose
owl:DatatypeProperty
Blood glucose measurement.
Domain: fhir:Observation
Range: xsd:double
Unit: mg/dL (UCUM: mg/dL)
SNOMED CT: 33747003 (Blood glucose)
LOINC: 2339-0 (Blood glucose)
Trend Polarity: neutral
health:bloodType v1.9
owl:DatatypeProperty
ABO blood group and Rh factor. Sourced from HealthKit (HKCharacteristicType.bloodType) or manual entry.
Domain: health:HealthProfile
Range: xsd:string
Values: aPositive, aNegative, bPositive, bNegative, abPositive, abNegative, oPositive, oNegative
SNOMED CT: 365637002 (Finding of ABO blood group)
LOINC: 882-1 (ABO group [Type] in Blood)
Note: This is a patient characteristic, not a time-series observation. Domain is HealthProfile rather than fhir:Observation.
Activity Properties
Properties for the health:ActivitySnapshot class.
health:averageDailySteps
owl:DatatypeProperty
Average number of steps per day over measurement period.
Domain: health:ActivitySnapshot
Range: xsd:integer
Unit: steps
SNOMED CT: 68130003 (Physical activity)
LOINC: 41950-7 (Number of steps in 24 hour Measured)
health:activeEnergyBurnedKcal
owl:DatatypeProperty
Active energy expenditure in kilocalories (excludes basal metabolic rate).
Domain: health:ActivitySnapshot
Range: xsd:decimal
Unit: kcal (UCUM: kcal)
SNOMED CT: 251833007 (Energy expenditure)
LOINC: 41981-2 (Calories burned)
health:exerciseMinutesWeekly
owl:DatatypeProperty
Total minutes of exercise activity per week.
Domain: health:ActivitySnapshot
Range: xsd:integer
Unit: min (UCUM: min)
SNOMED CT: 68130003 (Physical activity)
LOINC: 73985-4 (Exercise activity)
health:standHoursDaily
owl:DatatypeProperty
Number of hours per day with at least one minute of standing. Cascade-proprietary metric — no SNOMED CT or LOINC equivalent exists. Apple Health-specific activity ring metric.
Domain: health:ActivitySnapshot
Range: xsd:integer
Unit: hours
SNOMED CT: — (no equivalent)
LOINC: — (no equivalent)
Sleep Properties
Properties for the health:SleepSnapshot class.
health:averageDurationHours
owl:DatatypeProperty
Average sleep duration in hours over measurement period.
Domain: health:SleepSnapshot
Range: xsd:decimal
Unit: hours (UCUM: h)
SNOMED CT: 248263006 (Duration of sleep)
LOINC: 93832-4 (Sleep duration)
health:sleepQuality
owl:DatatypeProperty
Qualitative sleep quality assessment derived from wearable sleep analysis.
Domain: health:SleepSnapshot
Range: xsd:string
Metric Trend Properties v1.5
Properties for the health:MetricTrend class. Captures time-bounded wellness trends with direction, magnitude, confidence, and baseline/current values.
health:trendMetric
owl:ObjectProperty
The wellness property this trend describes (e.g., health:restingHeartRate).
Domain: health:MetricTrend
health:trendDirection
owl:DatatypeProperty
Direction of change: increasing, decreasing, stable, or insufficient_data. Matches clinical:trendDirection values for cross-domain consistency.
Domain: health:MetricTrend
Range: xsd:string
health:trendMagnitude
owl:DatatypeProperty
Percentage change between comparison periods (e.g., -5.6 means a 5.6% decrease).
Domain: health:MetricTrend
Range: xsd:decimal
health:trendPeriodStart
owl:DatatypeProperty
Start of the trend measurement period.
Domain: health:MetricTrend
Range: xsd:dateTime
health:trendPeriodEnd
owl:DatatypeProperty
End of the trend measurement period.
Domain: health:MetricTrend
Range: xsd:dateTime
health:trendBaselineValue
owl:DatatypeProperty
The reference value (e.g., 90-day average) this trend is compared against.
Domain: health:MetricTrend
Range: xsd:decimal
health:trendCurrentValue
owl:DatatypeProperty
The current period average (e.g., 7-day average).
Domain: health:MetricTrend
Range: xsd:decimal
health:trendConfidence
owl:DatatypeProperty
Confidence in the trend: high (>30 days data), medium (14-30 days), low (<14 days).
Domain: health:MetricTrend
Range: xsd:string
health:trendSource
owl:ObjectProperty
The data source (device, app, or system) that produced the underlying observations.
Domain: health:MetricTrend
Range: cascade:DataSource
VO2 Max Statistics Properties v1.7
Properties for the health:VO2MaxStatistics class. Statistical analysis of VO2 Max readings with trend detection and fitness classification.
health:vo2Mean
owl:DatatypeProperty
Average VO2 Max over measurement period.
Domain: health:VO2MaxStatistics
Range: xsd:double
Unit: mL/kg/min (UCUM: mL/kg/min)
health:vo2Min
owl:DatatypeProperty
Lowest VO2 Max reading in measurement period.
Domain: health:VO2MaxStatistics
Range: xsd:double
Unit: mL/kg/min
health:vo2MaxValue
owl:DatatypeProperty
Highest VO2 Max reading in measurement period.
Domain: health:VO2MaxStatistics
Range: xsd:double
Unit: mL/kg/min
health:vo2SampleCount
owl:DatatypeProperty
Number of VO2 Max measurements in the period.
Domain: health:VO2MaxStatistics
Range: xsd:integer
health:vo2DaysCovered
owl:DatatypeProperty
Number of unique days with VO2 Max measurements.
Domain: health:VO2MaxStatistics
Range: xsd:integer
health:vo2TrendDirection
owl:DatatypeProperty
Trend direction: improving, declining, stable, or unknown. Uses 3% threshold.
Domain: health:VO2MaxStatistics
Range: xsd:string
health:vo2PercentageChange
owl:DatatypeProperty
Percentage change from oldest to newest reading period.
Domain: health:VO2MaxStatistics
Range: xsd:double
health:fitnessClassification
owl:DatatypeProperty
Cardiorespiratory fitness level based on mean VO2 Max: veryPoor, poor, fair, good, excellent, superior.
Domain: health:VO2MaxStatistics
Range: xsd:string
health:isSparseData
owl:DatatypeProperty
True when measurements are limited (< 3 samples or < 30 days covered).
Domain: health:VO2MaxStatistics
Range: xsd:boolean
HRV Statistics Properties v1.7
Properties for the health:HRVStatistics class. Statistical analysis of Heart Rate Variability (SDNN) readings with trend detection.
health:hrvSampleCount v1.8
owl:DatatypeProperty
Number of HRV readings in the period.
Domain: health:HRVStatistics
Range: xsd:integer
health:hrvDaysCovered v1.8
owl:DatatypeProperty
Number of unique days with HRV measurements.
Domain: health:HRVStatistics
Range: xsd:integer
health:hrvMean v1.8
owl:DatatypeProperty
Average HRV (SDNN) over the measurement period.
Domain: health:HRVStatistics
Range: xsd:double
Unit: ms
health:hrvMedian v1.8
owl:DatatypeProperty
Median HRV (SDNN) over the measurement period.
Domain: health:HRVStatistics
Range: xsd:double
Unit: ms
health:hrvStdDev v1.8
owl:DatatypeProperty
Standard deviation of HRV readings over the measurement period.
Domain: health:HRVStatistics
Range: xsd:double
Unit: ms
health:hrvMin v1.8
owl:DatatypeProperty
Lowest HRV reading in the period.
Domain: health:HRVStatistics
Range: xsd:double
Unit: ms
health:hrvMax v1.8
owl:DatatypeProperty
Highest HRV reading in the period.
Domain: health:HRVStatistics
Range: xsd:double
Unit: ms
health:hrvPercentile25 v1.8
owl:DatatypeProperty
25th percentile of HRV readings over the measurement period.
Domain: health:HRVStatistics
Range: xsd:double
Unit: ms
health:hrvPercentile75 v1.8
owl:DatatypeProperty
75th percentile of HRV readings over the measurement period.
Domain: health:HRVStatistics
Range: xsd:double
Unit: ms
health:hrvTrendDirection v1.8
owl:DatatypeProperty
Trend direction for HRV: improving, declining, stable, or unknown.
Domain: health:HRVStatistics
Range: xsd:string
Blood Pressure Statistics Properties v1.8
Properties for the health:BPStatistics class. Statistical summary of blood pressure readings with AHA category classification.
health:bpSampleCount
owl:DatatypeProperty
Number of blood pressure readings in the period.
Domain: health:BPStatistics
Range: xsd:integer
health:bpMeanSystolic
owl:DatatypeProperty
Average systolic blood pressure over the measurement period.
Domain: health:BPStatistics
Range: xsd:double
Unit: mmHg
health:bpMeanDiastolic
owl:DatatypeProperty
Average diastolic blood pressure over the measurement period.
Domain: health:BPStatistics
Range: xsd:double
Unit: mmHg
health:bpMinSystolic
owl:DatatypeProperty
Lowest systolic blood pressure reading in the period.
Domain: health:BPStatistics
Range: xsd:double
Unit: mmHg
health:bpMaxSystolic
owl:DatatypeProperty
Highest systolic blood pressure reading in the period.
Domain: health:BPStatistics
Range: xsd:double
Unit: mmHg
health:bpMinDiastolic
owl:DatatypeProperty
Lowest diastolic blood pressure reading in the period.
Domain: health:BPStatistics
Range: xsd:double
Unit: mmHg
health:bpMaxDiastolic
owl:DatatypeProperty
Highest diastolic blood pressure reading in the period.
Domain: health:BPStatistics
Range: xsd:double
Unit: mmHg
health:bpCategory
owl:DatatypeProperty
AHA blood pressure category based on mean values: normal, elevated, hypertension_stage1, hypertension_stage2, hypertensive_crisis.
Domain: health:BPStatistics
Range: xsd:string
Annotation Properties
Metadata annotations linking wellness properties to established standard codes.
health:snomedCode
owl:AnnotationProperty
Links a wellness property to its SNOMED CT concept.
health:loincCode
owl:AnnotationProperty
Links a wellness property to its LOINC observation code.
health:unit
owl:AnnotationProperty
Human-readable unit of measurement.
health:ucumCode
owl:AnnotationProperty
Unified Code for Units of Measure (UCUM) code.
health:trendPolarity v1.6
owl:AnnotationProperty
Whether an increase in this metric is generally favorable (higher_is_better), unfavorable (lower_is_better), or context-dependent (neutral). Used by presentation layers to determine trend arrow color semantics.
Standard Code Mappings
Complete mapping of all health vocabulary properties to established clinical terminologies.
| Metric | Property | SNOMED CT | LOINC |
|---|---|---|---|
| Resting Heart Rate | health:restingHeartRate |
364075005 |
40443-4 |
| Walking Heart Rate | health:walkingHeartRate |
364075005 |
89270-3 |
| HRV (SDNN) | health:heartRateVariability |
80404004 |
80404-7 |
| Blood Pressure | health:bloodPressure |
75367002 |
85354-9 |
| Systolic BP | health:systolicBP |
271649006 |
8480-6 |
| Diastolic BP | health:diastolicBP |
271650006 |
8462-4 |
| Respiratory Rate | health:respiratoryRate |
86290005 |
9279-1 |
| VO2 Max | health:vo2Max |
251880009 |
60842-2 |
| Walking Steadiness | health:walkingSteadiness |
364832000 |
— |
| Average Daily Steps | health:averageDailySteps |
68130003 |
41950-7 |
| Active Energy Burned | health:activeEnergyBurnedKcal |
251833007 |
41981-2 |
| Exercise Minutes | health:exerciseMinutesWeekly |
68130003 |
73985-4 |
| Stand Hours | health:standHoursDaily |
— | — |
| Sleep Duration | health:averageDurationHours |
248263006 |
93832-4 |
| Body Mass | health:bodyMass |
27113001 |
29463-7 |
| Body Height | health:bodyHeight |
50373000 |
8302-2 |
| Body Mass Index | health:bodyMassIndex |
60621009 |
39156-5 |
| Body Temperature | health:bodyTemperature |
386725007 |
8310-5 |
| Oxygen Saturation | health:oxygenSaturation |
431314004 |
2708-6 |
| Blood Glucose | health:bloodGlucose |
33747003 |
2339-0 |
| Blood Type | health:bloodType |
365637002 |
882-1 |
Usage Example
@prefix health: <https://ns.cascadeprotocol.org/health/v1#> .
@prefix cascade: <https://ns.cascadeprotocol.org/core/v1#> .
@prefix fhir: <http://hl7.org/fhir/> .
@prefix loinc: <https://loinc.org/rdf/> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
# Resting heart rate observation
<#rhr-reading-001> a fhir:Observation ;
cascade:schemaVersion "1.4" ;
cascade:dataProvenance cascade:ConsumerGenerated ;
health:restingHeartRate "68.0"^^xsd:double ;
cascade:loincCode loinc:40443-4 ;
prov:wasAttributedTo <https://id.cascadeprotocol.org/users/abc123> .
# Activity snapshot
<#activity-2026-01> a health:ActivitySnapshot ;
cascade:schemaVersion "1.4" ;
cascade:dataProvenance cascade:ConsumerGenerated ;
health:averageDailySteps "8500"^^xsd:integer ;
health:activeEnergyBurnedKcal "450.0"^^xsd:decimal ;
health:exerciseMinutesWeekly "185"^^xsd:integer ;
health:standHoursDaily "11"^^xsd:integer .
# Sleep snapshot
<#sleep-2026-01> a health:SleepSnapshot ;
cascade:schemaVersion "1.4" ;
health:averageDurationHours "7.5"^^xsd:decimal ;
health:sleepQuality "good" .
Data Provenance
All health vocabulary observations use cascade:ConsumerGenerated provenance to indicate
device-generated wellness data:
- Source: Apple HealthKit
HKQuantityType/HKStatisticsAPIs - Origin: Apple Watch, iPhone, and compatible third-party devices
- Classification: Consumer-generated, non-diagnostic
- Privacy: Encrypted storage required, local-first architecture
SHACL Validation Shapes
Validation shapes for this vocabulary are defined in
health.shapes.ttl.
Shapes defined:
health:SelfReportShape— Validates SelfReport instances with required report date and typehealth:VO2MaxStatisticsShape— Validates VO2 Max statistical summaries with mean, sample count, and periodhealth:HRVStatisticsShape— Validates HRV statistical summaries with mean, sample count, and periodhealth:BPStatisticsShape— Validates blood pressure statistical summaries with systolic/diastolic means and sample counthealth:MetricTrendShape— Validates MetricTrend instances with metric reference, direction, and periodhealth:ActivitySnapshotShape— Validates ActivitySnapshot instances with steps, energy, exercise, and stand hourshealth:SleepSnapshotShape— Validates SleepSnapshot instances with duration and qualityhealth:HealthProfileShape— Validates HealthProfile instances with blood type
Changelog
Version 1.9 (2026-02-17)
- Added
health:bloodTypeproperty for ABO blood group and Rh factor with SNOMED CT (365637002) and LOINC (882-1) mappings. Previously dark vocabulary emitted in QR payload. Part of Schema Refactoring Plan Phase 2.5 (PF4).
Version 1.8 (2026-02-10)
- Added 6 body measurement properties with SNOMED CT and LOINC mappings:
bodyMass,bodyHeight,bodyMassIndex,bodyTemperature,oxygenSaturation,bloodGlucose - Added
BPStatisticsclass with 10 properties for blood pressure statistical summaries - Added shared temporal properties:
periodStart,periodEnd - Completed
HRVStatisticsproperty definitions (10 properties)
Version 1.7 (2026-02-03)
- Added
VO2MaxStatisticsclass with 9 properties for VO2 Max trend analysis - Added
HRVStatisticsclass for heart rate variability statistical summaries
Version 1.6 (2026-02-02)
- Added
trendPolarityannotation property for trend interpretation semantics (higher_is_better, lower_is_better, neutral)
Version 1.5 (2026-02-01)
- Added
MetricTrendclass for wellness metric trend analysis with 9 properties
Version 1.4 (2026-01-29)
- Initial release of the Health Vocabulary with SNOMED CT and LOINC mappings for all wellness metrics
- 2 composite classes:
ActivitySnapshot,SleepSnapshot - 14 wellness observation properties organized by category:
- Cardiac:
restingHeartRate,walkingHeartRate,heartRateVariability - Cardiovascular:
bloodPressure,systolicBP,diastolicBP - Respiratory & Fitness:
respiratoryRate,vo2Max - Walking Steadiness:
walkingSteadiness - Activity:
averageDailySteps,activeEnergyBurnedKcal,exerciseMinutesWeekly,standHoursDaily - Sleep:
averageDurationHours,sleepQuality
- Cardiac:
- 4 annotation properties:
snomedCode,loincCode,unit,ucumCode - Three-layer ontology architecture documented (Layer 1: SNOMED/LOINC, Layer 2: health:, Layer 3: checkup:)
- Walking Steadiness mapped to
sct:364832000(Balance finding) with documentation of alternative considerations - Stand Hours documented as Cascade-proprietary (no SNOMED CT or LOINC equivalent exists)