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.

Three-Layer Architecture: This is a Layer 2 vocabulary. Layer 1 uses established standards (SNOMED CT, LOINC). Layer 2 (this vocabulary) defines domain-specific properties linking to Layer 1 codes. Layer 3 (Checkup Vocabulary) provides patient-facing summaries.
Download TTL Back to Documentation

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

Shared Temporal Properties v1.8

Temporal properties shared across statistics classes (BPStatistics, HRVStatistics, VO2MaxStatistics).

health:periodStart

owl:DatatypeProperty

Start date of the statistical measurement period.

Range: xsd:dateTime

health:periodEnd

owl:DatatypeProperty

End date of the statistical measurement period.

Range: xsd:dateTime

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 / HKStatistics APIs
  • 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 type
  • health:VO2MaxStatisticsShape — Validates VO2 Max statistical summaries with mean, sample count, and period
  • health:HRVStatisticsShape — Validates HRV statistical summaries with mean, sample count, and period
  • health:BPStatisticsShape — Validates blood pressure statistical summaries with systolic/diastolic means and sample count
  • health:MetricTrendShape — Validates MetricTrend instances with metric reference, direction, and period
  • health:ActivitySnapshotShape — Validates ActivitySnapshot instances with steps, energy, exercise, and stand hours
  • health:SleepSnapshotShape — Validates SleepSnapshot instances with duration and quality
  • health:HealthProfileShape — Validates HealthProfile instances with blood type

Changelog

Version 1.9 (2026-02-17)

  • Added health:bloodType property 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 BPStatistics class with 10 properties for blood pressure statistical summaries
  • Added shared temporal properties: periodStart, periodEnd
  • Completed HRVStatistics property definitions (10 properties)

Version 1.7 (2026-02-03)

  • Added VO2MaxStatistics class with 9 properties for VO2 Max trend analysis
  • Added HRVStatistics class for heart rate variability statistical summaries

Version 1.6 (2026-02-02)

  • Added trendPolarity annotation property for trend interpretation semantics (higher_is_better, lower_is_better, neutral)

Version 1.5 (2026-02-01)

  • Added MetricTrend class 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
  • 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)