Overview
- Namespace URI:
https://ns.cascadeprotocol.org/health/v1#- Preferred Prefix:
health:- Version:
- 2.5
- 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.
Wellness vital sign readings are serialized using flat health: properties
directly on health:VitalSignReading blank nodes (Pattern A). Time-series history
containers are linked from health:HealthProfile via ObjectProperties such as
health:restingHeartRateHistory. 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
Pattern A Flat Properties v2.3
Flat health: properties used directly on health:VitalSignReading blank nodes
emitted by HealthProfileSerializer (BUG-006 Pattern A standardization).
These replace the previous fhir:Observation nesting pattern.
health:value
owl:DatatypeProperty
The numeric measurement value for a wellness vital sign reading.
Domain: health:VitalSignReading
Range: xsd:double
health:date
owl:DatatypeProperty
The effective date/time of a wellness vital sign reading.
Domain: health:VitalSignReading
Range: xsd:dateTime
health:sdnn
owl:DatatypeProperty
Heart rate variability measured as standard deviation of NN intervals (SDNN), in milliseconds.
Range: xsd:double
Unit: ms
health:systolic
owl:DatatypeProperty
Systolic blood pressure value in mmHg.
Range: xsd:double
Unit: mmHg
health:diastolic
owl:DatatypeProperty
Diastolic blood pressure value in mmHg.
Range: xsd:double
Unit: mmHg
health:walkingSteadinessLevel
owl:ObjectProperty
Apple Walking Steadiness classification. Values: health:OK, health:Low,
health:VeryLow, health:Unknown.
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
Clinical Record Classes v2.5
These five classes have been emitted by Cascade serializers since schema version 1.3 but were
not defined in this ontology until v2.5. Defining them is purely additive: no serializer
changed, no rdf:type changed, and no pod was migrated. What changed is that the
records became describable and, through health.shapes.ttl
v1.2, checkable.
health: / clinical: split is historical, not a provenance
signal. Records typed health:LabResultRecord,
health:ConditionRecord, health:AllergyRecord and
health:ImmunizationRecord routinely carry EHR-sourced data, and
clinical:VitalSign records routinely carry consumer-device data. Provenance is
carried by cascade:dataProvenance, and only by it. Keying on the namespace of the
rdf:type gives the wrong answer on real pods. The four clinical:
classes that duplicate these are deprecated in
clinical v1.13 but not removed; readers must accept both
spellings and writers should prefer these.
health:LabResultRecord
owl:Class
A laboratory test result: the test performed, its value and unit, the reference range it is read against, and the specimen it came from. Emitted for both EHR-imported and patient-entered results.
Subclass of: fhir:Observation —
FHIR R4: Observation
Properties: health:testName (required),
health:resultValue, health:resultUnit,
health:referenceRange, health:interpretation,
health:performedDate, health:reportedDate,
health:testCode, health:labCategory,
health:specimenType, health:orderingProvider,
health:performingLab
health:ConditionRecord
owl:Class
A diagnosed condition or problem-list entry, with its clinical status, onset and coding.
FHIR R4: Condition
Properties: health:conditionName (required),
health:status, health:onsetDate, health:icd10Code,
health:snomedCode, health:conditionClass,
health:monitoredVitalSigns
health:AllergyRecord
owl:Class
An allergy or intolerance: the allergen, the reaction it provokes, and the severity of that reaction.
FHIR R4: AllergyIntolerance
Properties: health:allergen (required),
health:reaction (repeatable), health:allergySeverity,
health:allergyCategory, health:onsetDate
health:ImmunizationRecord
owl:Class
An administered vaccine dose, with product identification, lot, route, site and administering party.
FHIR R4: Immunization
Properties: health:vaccineName (required),
health:administrationDate, health:status,
health:vaccineCode, health:manufacturer,
health:lotNumber, health:doseQuantity, health:route,
health:site, health:administeringProvider,
health:administeringLocation
health:FamilyHistoryRecord
owl:Class
A condition recorded for a relative of the patient, with the relationship and the relative's age at onset.
FHIR R4: FamilyMemberHistory
Properties: health:conditionName (required),
clinical:relationship (required, shared with coverage records),
health:onsetAge
health:sourceRecordId and health:notes are shared by all five. Domains
on shared properties are unions rather than a single class: a single-class
rdfs:domain on a property that several classes use is an assertion the data
falsifies.
Wellness Container Classes v2.5
The wellness partition of a pod stores each metric family in its own container resource. The six
container types are declared rdfs:subClassOf health:HealthProfile.
health:ActivityData
owl:Class
Wellness container for daily activity history: steps, active energy, exercise minutes and
stand hours. Subclass of health:HealthProfile.
health:SleepData
owl:Class
Wellness container for nightly sleep history: duration and quality. Subclass of
health:HealthProfile.
health:HeartRateData
owl:Class
Wellness container for resting and walking heart rate history. Subclass of
health:HealthProfile.
health:BloodPressureData
owl:Class
Wellness container for blood pressure history from home monitors. Subclass of
health:HealthProfile.
health:HRVData
owl:Class
Wellness container for heart rate variability (SDNN) history. Subclass of
health:HealthProfile.
health:BodyMeasurements
owl:Class
Wellness container for body mass and related anthropometric history. Subclass of
health:HealthProfile.
The subclass declarations do two things and require no code change. They make the
rdfs:domain health:HealthProfile already asserted on the eight history properties
(health:restingHeartRateHistory and siblings) true rather than contradicted by
every pod ever written, and they bring the containers under
health:HealthProfileShape. The shapes file additionally names each container as an
explicit sh:targetClass, so coverage does not depend on a validator performing
subclass inference.
SHACL Validation Shapes
Validation shapes for this vocabulary are defined in
health.shapes.ttl (v1.2).
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 (7-day aggregate) with steps, energy, exercise, and stand hourshealth:SleepSnapshotShape— Validates SleepSnapshot instances (7-day aggregate) with duration and qualityhealth:HealthProfileShape— Validates HealthProfile instances with blood type; also targets the six wellness container classes (v1.2)health:SocialHistoryRecordShape— Validates SocialHistoryRecord instanceshealth:LabResultRecordShape— Requireshealth:testName; constrainshealth:interpretationto normal/high/low/abnormal/critical;sh:maxCount 1onhealth:resultValue(v1.2)health:ConditionRecordShape— Requireshealth:conditionName; constrainshealth:statusto the six FHIR clinical-status values (v1.2)health:AllergyRecordShape— Requireshealth:allergen; constrains severity to mild/moderate/severe and category to the four FHIR values (v1.2)health:ImmunizationRecordShape— Requireshealth:vaccineName; constrainshealth:statusto completed/entered-in-error/not-done (v1.2)health:FamilyHistoryRecordShape— Requireshealth:conditionNameandclinical:relationship;health:onsetAge0–130 (v1.2)health:DailyVitalReadingShape— Requirescascade:date;cascade:sampleCount≥ 0 (v1.2)health:DailyActivitySnapshotShape— Requirescascade:date; exercise minutes 0–1440, stand hours 0–24 (v1.2)health:DailySleepSnapshotShape— Requirescascade:date; duration 0–24 hours; quality from the four named individuals (v1.2)
PASS because zero constraints
applied — not because the record conformed. Those records are now actually checked, most
of them for the first time.
Changelog
Version 2.5 (2026-08-03)
- Defined five clinical record classes that Cascade serializers have emitted since schema
version 1.3 but that this ontology never declared:
health:LabResultRecord,health:ConditionRecord,health:AllergyRecord,health:ImmunizationRecord,health:FamilyHistoryRecord. Added the 40 properties they use and 4 sleep-quality named individuals. - Defined six wellness container classes —
health:ActivityData,health:SleepData,health:HeartRateData,health:BloodPressureData,health:HRVData,health:BodyMeasurements— asrdfs:subClassOf health:HealthProfile, which makes therdfs:domain health:HealthProfilealready asserted on the eight history properties true rather than contradicted. - Added a namespace-boundary note recording that the
health:/clinical:split is historical rather than semantic, that provenance is carried bycascade:dataProvenancealone, and thathealth:SocialHistoryRecordandclinical:SocialHistoryRecordare both deliberately retained. health.shapes.ttlv1.2 adds eight shapes: the five record classes and the three daily-snapshot classes (DailyVitalReading,DailyActivitySnapshot,DailySleepSnapshot). Required-property constraints aresh:Violation, lifted from the correspondingclinical:shapes and checked against the FHIR R4 resource definitions.- No serializer changes. Every term added was already being emitted.
Version 2.4 (2026-03-27)
- EHR Import Reconciliation (P1-C). Added
health:SocialHistoryRecordclass for consumer-reported social history observations (smoking, alcohol, exercise, occupation). - Added 4 properties:
health:smokingStatus,health:alcoholUse,health:exerciseFrequency,health:occupationalExposure.
Version 2.3 (2026-02-28)
- BUG-006 Pattern A standardization: added 6 flat
health:properties forVitalSignReadingblank nodes emitted byHealthProfileSerializer:health:value,health:date,health:sdnn,health:systolic,health:diastolic,health:walkingSteadinessLevel. These replace thefhir:Observationnesting pattern (Pattern B) for wellness vital sign serialization. - Added
health:OK,health:Low,health:VeryLow,health:Unknownnamed individuals forwalkingSteadinessLevelvalues. - Added
health:WalkingSteadinessUnknownto legacy steadiness individual set.
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)
Social History v2.4
Consumer-reported social history observations (smoking, alcohol, exercise, occupation), added for EHR import reconciliation (P1-C). Distinct from
clinical:SocialHistoryRecord, which is EHR-extracted and governed by 42 CFR Part 2.health:SocialHistoryRecord
owl:Class
A social history observation about a patient, including smoking status, alcohol use, exercise, occupation, and other lifestyle factors.
health:smokingStatus
owl:DatatypeProperty
Patient's smoking status. Common values:
current-smoker,former-smoker,never-smoker.Domain:
health:SocialHistoryRecordRange:
xsd:stringhealth:alcoholUse
owl:DatatypeProperty
Patient's alcohol consumption description.
Domain:
health:SocialHistoryRecordRange:
xsd:stringhealth:exerciseFrequency
owl:DatatypeProperty
Patient's reported exercise frequency.
Domain:
health:SocialHistoryRecordRange:
xsd:stringhealth:occupationalExposure
owl:DatatypeProperty
Occupational exposures relevant to patient health.
Domain:
health:SocialHistoryRecordRange:
xsd:string