Cascade Protocol Health & Wellness Ontology
Vocabulary for consumer-generated wellness observations from wearable devices and HealthKit. Maps Cascade wellness properties to established SNOMED CT and LOINC codes following the three-layer ontology architecture.
Three-layer ontology for wellness data: Layer 1 (Established standards): SNOMED CT concept IDs + LOINC observation codes Layer 2 (Cascade health vocabulary): health: namespace properties linking to Layer 1 Layer 3 (Checkup summary): checkup: namespace patient-facing aggregations
Resting Heart Rate
Average resting heart rate from wearable device
Walking Heart Rate
Average heart rate during walking from wearable device
Heart Rate Variability (SDNN)
Standard deviation of normal-to-normal R-R intervals (SDNN) from wearable device
Blood Pressure
Blood pressure panel observation with systolic and diastolic components
Systolic Blood Pressure
Diastolic Blood Pressure
Respiratory Rate
Average respiratory rate from wearable device
VO2 Max
Estimated maximal oxygen consumption (cardiorespiratory fitness)
Walking Steadiness
Apple Health walking steadiness classification (OK / Low / Very Low). Maps to nearest SNOMED balance concept. No LOINC equivalent exists for this consumer-device metric.
SNOMED mapping note: 364832000 (Balance finding) is the closest available concept. Alternatives considered: 250043000 (Gait finding), 282097004 (Ability to walk). Apple's OK/Low/Very Low classification is proprietary.
Body Mass
Body weight measurement.
Body Height
Body height measurement.
Body Mass Index
Computed body mass index (weight/height squared).
Body Temperature
Body temperature measurement.
Oxygen Saturation
Blood oxygen saturation (SpO2) from pulse oximeter.
Blood Glucose
Blood glucose measurement.
Blood Type
ABO blood group and Rh factor. Values: aPositive, aNegative, bPositive, bNegative, abPositive, abNegative, oPositive, oNegative. Sourced from HealthKit (HKCharacteristicType.bloodType) or manual entry.
Average Daily Steps
Average number of steps per day over measurement period
Active Energy Burned
Active energy expenditure in kilocalories (excludes basal metabolic rate)
Exercise Minutes (Weekly)
Total minutes of exercise activity per week
Stand Hours (Daily)
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.
Average Sleep Duration
Average sleep duration in hours over measurement period
Sleep Quality
Qualitative sleep quality assessment derived from wearable sleep analysis
Activity Snapshot
Aggregated activity metrics over a measurement period (typically 7 days)
Sleep Snapshot
Aggregated sleep metrics over a measurement period (typically 7 days)
VO2 Max Statistics
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.
HRV Statistics
Statistical summary of Heart Rate Variability (SDNN) readings over a measurement period. Provides trend analysis and min/max/mean calculations.
Blood Pressure Statistics
Statistical summary of blood pressure readings over a measurement period. Provides mean, min, max for systolic and diastolic values, plus AHA category classification.
Health Profile
Top-level wellness profile aggregating vital signs, body measurements, activity, and sleep data from consumer devices. Stored at /wellness/ in the Cascade Pod.
Daily Vital Reading
A single day's aggregated vital sign reading with value, unit, date, and sample count. Used in 90-day and 30-day history containers.
HRV Reading
A single heart rate variability (SDNN) observation with timestamp and optional source.
Blood Pressure Reading
A single blood pressure observation with systolic and diastolic components, timestamp, and optional source.
Vital Sign Reading
A single vital sign observation with value, unit, measurement period, timestamp, and source. Used for baseline readings and VO2 Max history entries.
Daily Activity Snapshot
A single day's activity data: steps, active energy, exercise minutes, and stand hours.
Daily Sleep Snapshot
A single night's sleep data: duration in hours and quality classification.
Resting Heart Rate History
Time series of daily resting heart rate readings (90-day lookback). Each entry is a DailyVitalReading with date and value.
Walking Heart Rate History
Time series of daily walking heart rate readings (90-day lookback).
HRV History
Time series of heart rate variability (SDNN) readings (7-day lookback).
Blood Pressure History
Time series of blood pressure readings (30-day lookback). Each entry has systolic and diastolic values.
VO2 Max History
Time series of VO2 Max readings (180-day lookback).
Body Mass History
Time series of daily body mass readings (30-day lookback).
Daily Activity History
Time series of daily activity snapshots (90-day lookback). Steps, exercise, calories, stand hours per day.
Daily Sleep History
Time series of daily sleep snapshots (90-day lookback). Duration and quality per night.
Self Report
Base class for patient-reported daily check-ins and self-assessments. Provides common structure for timestamped self-reports across health domains. Apps extend this with domain-specific response data. Examples: medication adherence, symptom tracking, mood logging, sleep records.
Report Date
When the self-report was recorded.
Report Type
Category of self-report (e.g., medication_adherence, symptom_tracking, mood, sleep).
Completion Status
Whether the report is complete, partial, or skipped.
Report Context
What tracking plan or list this report relates to (free-form reference).
Report Notes
Optional free-text notes from the patient.
SNOMED CT Code
Links a wellness property to its SNOMED CT concept
LOINC Code
Links a wellness property to its LOINC observation code
Display Unit
Human-readable unit of measurement
UCUM Code
Unified Code for Units of Measure code
Trend Polarity
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. This is a general heuristic — individual clinical context may differ.
Observation Value
Generic numeric value for a wellness observation blank node. Used in Pattern A flat serialization where the observation type is identified by the enclosing property (e.g., health:restingHeartRate). The unit is carried by health:unit on the same blank node.
Observation Date
Timestamp of a wellness observation in Pattern A flat serialization. Equivalent in role to fhir:effectiveDateTime but scoped to health: namespace blank nodes.
SDNN (HRV)
Standard deviation of normal-to-normal R-R intervals. The primary HRV scalar emitted in Pattern A HRVReading blank nodes.
Systolic Blood Pressure (reading)
Systolic component value in a Pattern A BloodPressureReading blank node. Distinct from health:systolicBP which is a domain-level property on fhir:Observation.
Diastolic Blood Pressure (reading)
Diastolic component value in a Pattern A BloodPressureReading blank node. Distinct from health:diastolicBP which is a domain-level property on fhir:Observation.
Walking Steadiness Level
Links a Pattern A WalkingSteadiness blank node to its level individual (health:WalkingSteadinessOK, health:WalkingSteadinessLow, health:WalkingSteadinessVeryLow, health:WalkingSteadinessUnknown).
Mean VO2 Max
Average VO2 Max over measurement period (mL/kg/min)
Minimum VO2 Max
Lowest VO2 Max reading in measurement period
Maximum VO2 Max
Highest VO2 Max reading in measurement period
Sample Count
Number of VO2 Max measurements in the period
Days Covered
Number of unique days with VO2 Max measurements
VO2 Trend Direction
Trend direction based on comparison of first half vs second half of readings: 'improving', 'declining', 'stable', or 'unknown'. Uses 3% threshold (1 MET ≈ 3.5 mL/kg/min is clinically meaningful).
Percentage Change
Percentage change from oldest to newest reading period
Fitness Classification
Cardiorespiratory fitness level based on mean VO2 Max: 'veryPoor' (<20), 'poor' (20-29), 'fair' (30-34), 'good' (35-44), 'excellent' (45-54), 'superior' (≥55). Currently age/sex agnostic; future versions may use demographics for personalized classification.
Sparse Data Indicator
True when measurements are limited (< 3 samples or < 30 days covered). Used to trigger messaging about VO2 Max measurement requirements.
Period Start
Start date of the statistical measurement period.
Period End
End date of the statistical measurement period.
HRV Sample Count
Number of HRV readings in the period.
HRV Days Covered
Number of unique days with HRV measurements.
Mean HRV
Average HRV (SDNN) over the measurement period (ms).
Median HRV
Median HRV (SDNN) over the measurement period (ms).
HRV Standard Deviation
Standard deviation of HRV readings over the measurement period (ms).
Minimum HRV
Lowest HRV reading in the period (ms).
Maximum HRV
Highest HRV reading in the period (ms).
HRV 25th Percentile
25th percentile of HRV readings over the measurement period (ms).
HRV 75th Percentile
75th percentile of HRV readings over the measurement period (ms).
HRV Trend Direction
Trend direction for HRV: improving, declining, stable, or unknown.
BP Sample Count
Number of blood pressure readings in the period.
Mean Systolic BP
Average systolic blood pressure over the measurement period (mmHg).
Mean Diastolic BP
Average diastolic blood pressure over the measurement period (mmHg).
Minimum Systolic BP
Lowest systolic blood pressure reading in the period (mmHg).
Maximum Systolic BP
Highest systolic blood pressure reading in the period (mmHg).
Minimum Diastolic BP
Lowest diastolic blood pressure reading in the period (mmHg).
Maximum Diastolic BP
Highest diastolic blood pressure reading in the period (mmHg).
BP Category
AHA blood pressure category based on mean values: normal, elevated, hypertension_stage1, hypertension_stage2, hypertensive_crisis.
A time-bounded trend for a single wellness metric, computed from a series of observations. Captures direction, magnitude, and comparison period.
The wellness property this trend describes (e.g., health:restingHeartRate)
Direction of change: increasing, decreasing, stable, or insufficient_data. Matches clinical:trendDirection values for cross-domain consistency. Semantic interpretation (whether 'increasing' is good or bad) is metric-specific and handled at the presentation layer, not the ontology layer.
Percentage change between comparison periods (e.g., -5.6 means a 5.6% decrease)
The reference value (e.g., 90-day average) this trend is compared against
The current period average (e.g., 7-day average)
Confidence in the trend: high (>30 days data), medium (14-30 days), low (<14 days)
The data source (device, app, or system) that produced the underlying observations. Links to cascade:DataSource when available; for inline use, a blank node with cascade:sourceName is acceptable.
has HRV statistics
Links a wellness profile to its HRV statistical summary.
has BP statistics
Links a wellness profile to its blood pressure statistical summary.
Social History Record
A social history observation about a patient, including smoking status, alcohol use, exercise, occupation, and other lifestyle factors.
Smoking Status
Patient's smoking status (e.g., current-smoker, former-smoker, never-smoker).
Alcohol Use
Patient's alcohol consumption description.
Exercise Frequency
Patient's reported exercise frequency.
Occupational Exposure
Occupational exposures relevant to patient health.
Lab Result Record
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; read cascade:dataProvenance to tell them apart.
Added in health v2.5; emitted since schema 1.3
Condition Record
A diagnosed condition or problem-list entry, with its clinical status, onset, and coding. Emitted for both EHR-imported and self-reported conditions; read cascade:dataProvenance to tell them apart.
Allergy Record
An allergy or intolerance: the allergen, the reaction it provokes, and the severity of that reaction. Emitted for both EHR-imported and self-reported allergies; read cascade:dataProvenance to tell them apart.
Immunization Record
An administered vaccine dose, with product identification, lot, route, site and administering party.
Family History Record
A condition recorded for a relative of the patient, with the relationship and the relative's age at onset. The relationship is expressed with clinical:relationship, which is shared with coverage records.
Notes
Free-text clinical or patient commentary attached to a record.
Source Record Identifier
Identifier of this record in the system it was imported from. Opaque to Cascade; used for reconciliation against the source system, not as a Cascade identity.
Status
Lifecycle status of the record. The permitted values differ by class and are constrained per-shape, not here: condition records use the FHIR R4 ConditionClinicalStatusCodes value set, immunization records use ImmunizationStatusCodes.
Onset Date
When the condition or allergy began, or was first recorded as beginning.
Condition Name
Human-readable name of the condition. Used both for the patient's own conditions and for conditions recorded against a relative.
Test Name
Human-readable name of the laboratory test performed.
Result Value
The measured value. Carried as a string because lab results are not uniformly numeric: ratios, titres, qualitative results ('Negative'), and bounded values ('<0.01') all occur. Exactly one value per record.
Result Unit
Unit of measure for health:resultValue, as reported by the performing laboratory.
Interpretation
Categorical reading of the result, as a code from the HL7 v3 ObservationInterpretation code system: normality (N, A, H, L, HH, LL, ...), susceptibility (S, I, R, SDD, ...), detection (POS, NEG, DET, ND, IND), reactivity (RR, WR, NR), change (B, D, U, W) and the exception codes. Any of the 15 data-absent-reason codes is also accepted, for a source observation whose interpretation element was absent or null-flavoured; that is FHIR's own spelling for a CodeableConcept that is missing for a stated reason, and it is what keeps 'nobody asked' distinguishable from 'asked, did not know'. A source code that is a member of neither value set is carried verbatim on health:interpretationSourceCode instead of being forced into this one. At most one value per record.
Added in health v2.5; bound to HL7 v3 ObservationInterpretation in health v2.6; data-absent-reason codes admitted in health v2.7
Interpretation Source Code
The interpretation code the SOURCE wrote, copied verbatim, for the case where that code is a member of neither value set health:interpretation is bound to (HL7 v3 ObservationInterpretation, and data-absent-reason). A laboratory's local abnormality flag is the ordinary case. WRITE IT ONLY THEN. A code that IS in one of the bound value sets belongs on health:interpretation and must not be duplicated here; this property is the escape hatch for the residue, not a parallel spelling. It is deliberately unconstrained: no value set, no pattern, no case folding. The whole point is that the value is whatever the source said, so a reader can recover the original assertion and a later mapping can be built from real observed codes rather than guesses. Constraining it would recreate the loss it exists to prevent. A producer that recognises the source code's INTENT should also write its best ratified equivalent on health:interpretation, so that a consumer reading only the bound property still gets a usable reading. The pair 'interpretation A, interpretationSourceCode elevated' says: the source said "elevated", and the nearest ratified code is A (Abnormal).
Performed Date
When the specimen was collected or the test performed. Distinct from health:reportedDate.
Reported Date
When the laboratory released the result. Later than health:performedDate.
Test Code
LOINC reference for the test performed, as an IRI. Repeatable: FHIR R4 CodeableConcept.coding is 0..*, and one test is often carried under more than one LOINC coding.
Added in health v2.5; made repeatable in health v2.6
Lab Category
Laboratory department or panel grouping (for example Chemistry, Hematology). Free text: laboratories do not agree on a common set. Repeatable, mirroring FHIR R4 Observation.category, which is 0..*.
Reference Range
The normal range this result is read against, as printed by the performing laboratory (for example '70 - 100'). Not parsed.
Specimen Type
The specimen the test was run on (for example Serum, Whole Blood, Urine).
Ordering Provider
Name of the clinician who ordered the test.
Performing Laboratory
Name of the laboratory that ran the test.
ICD-10-CM Code
ICD-10-CM reference for the condition, as an IRI. Repeatable: FHIR R4 CodeableConcept.coding is 0..*, and problem-list entries are routinely dual coded. Note that ICD-10-CM permits a letter in any character position (C4A, D3A and M1A are ordinary categories), so no lexical pattern is imposed here.
Condition Class
Body-system grouping used for patient-facing organisation (for example cardiovascular, endocrine, respiratory). A presentation aid, not a clinical classification; do not use it for decision support.
Monitored Vital Signs
Ordered list of vital-sign names a patient or app tracks because of this condition (for example bloodPressure, heartRate). An rdf:List of string literals.
Allergen
The substance the patient reacts to. Required: an allergy record without an allergen carries no safety information.
Allergy Category
Category of the allergen, using the FHIR R4 AllergyIntoleranceCategory value set: food, medication, environment, biologic.
Reaction
Description of the manifestation the allergen produces (for example 'Hives (urticaria)').
Allergy Severity
Severity of the reaction as a whole, using the FHIR R4 AllergyIntoleranceSeverity value set: mild, moderate, severe.
Vaccine Name
Human-readable name of the vaccine product administered.
Administration Date
When the dose was administered. Corresponds to FHIR R4 Immunization.occurrence, which is 1..1.
Vaccine Code
Coded identifier for the vaccine product, typically a CVX code.
Manufacturer
Manufacturer of the administered vaccine product.
Lot Number
Manufacturer lot number of the administered dose. Required for recall tracing.
Dose Quantity
Amount administered, value and unit together as printed (for example '0.5 mL').
Route
Route of administration (for example intramuscular, oral, intranasal).
Administration Site
Body site the dose was administered at (for example 'Left deltoid').
Administering Provider
Name of the person who administered the dose.
Administering Location
Facility where the dose was administered.
Onset Age
Age in years at which the relative's condition began. Corresponds to FHIR R4 FamilyMemberHistory.condition.onsetAge.
Activity Data
Wellness container for daily activity history: steps, active energy, exercise minutes and stand hours.
Added in health v2.5; emitted since health v2.0
Sleep Data
Wellness container for nightly sleep history: duration and quality.
Heart Rate Data
Wellness container for resting and walking heart rate history.
Blood Pressure Data
Wellness container for blood pressure history from home monitors.
HRV Data
Wellness container for heart rate variability (SDNN) history.
Body Measurements
Wellness container for body mass and related anthropometric history.
Steps
Step count for a single day.
Active Energy (kcal)
Active energy burned in kilocalories for a single day.
Exercise Minutes
Minutes of exercise recorded for a single day.
Stand Hours
Hours in which standing was recorded for a single day. Bounded 0-24.
Sleep Duration (hours)
Total sleep duration in hours for a single night.
Qualitative classification of a night's sleep, as derived by the recording device.
Excellent
Sleep quality classified as excellent.
Good
Sleep quality classified as good.
Fair
Sleep quality classified as fair.
Poor
Sleep quality classified as poor.