WHOOP
Health metrics from WHOOP wearables can offer detailed insights into individual performance, recovery, and sleep patterns, facilitating more precise health analyses and personalized care plans. This section explains how WHOOP integrates with Avicenna, making it easier for researchers to understand and use the performance-related data of their participants.
Supported WHOOP Metrics in Avicenna
In this section, we list the comprehensive range of WHOOP metrics that Avicenna supports.
WHOOP Sleep
Provides participant's sleep data. It is stored internally as whoop_sleep
and
includes the following fields:
- Sleep ID: Unique identifier for the sleep record. Internally recorded as
event_id
. - Start Time: The start time of the sleep. Internally recorded as
start_time
. - End Time: The end time of the sleep. Internally recorded as
end_time
. - Update Time: The time this event was last updated in WHOOP. Internally
recorded as
updated_at
. - Timezone Offset: The participant's timezone offset from UTC at the time
the workout was recorded. Internally recorded as
timezone_offset
. - Nap: Indicates if the sleep is a nap. Internally recorded as
is_nap
. - Score State:
SCORED
means the sleep activity was scored and the measurement values will be present (see the next field).PENDING_SCORE
means WHOOP is currently evaluating the sleep activity.UNSCORABLE
means this activity could not be scored for some reason, commonly because there is not enough participant metric data for the time range. Internally recorded asscore_state
. - Score: WHOOP's measurements and evaluation of the sleep activity. Only
present if the Score State is
SCORED
. It is internally recorded asscore
and has the following fields:- Stage Summary: Summary of the sleep stages. It is internally recorded as
stage_summary
and includes:- Total In-Bed Time: Total time spent in bed, measured in milliseconds.
Internally recorded as
total_in_bed_time_milli
. - Total Awake Time: Total time spent awake, measured in milliseconds.
Internally recorded as
total_awake_time_milli
. - Total No Data Time: Total time with no data recorded, measured in
milliseconds. Internally recorded as
total_no_data_time_milli
. - Total Light Sleep Time: Total time spent in light sleep, measured in
milliseconds. Internally recorded as
total_light_sleep_time_milli
. - Total Slow Wave Sleep Time: Total time spent in slow wave sleep,
measured in milliseconds. Internally recorded as
total_slow_wave_sleep_time_milli
. - Total REM Sleep Time: Total time spent in REM sleep, measured in
milliseconds. Internally recorded as
total_rem_sleep_time_milli
. - Sleep Cycle Count: Number of sleep cycles. Internally recorded as
sleep_cycle_count
. - Disturbance Count: Number of disturbances during sleep. Internally
recorded as
disturbance_count
.
- Total In-Bed Time: Total time spent in bed, measured in milliseconds.
Internally recorded as
- Sleep Needed: Breakdown of the amount of sleep a participant needed
before the sleep activity. Summing all individual components results in the
amount. Internally recorded as
sleep_needed
and includes:- Baseline Sleep Needed: Baseline sleep needed, measured in
milliseconds. Internally recorded as
baseline_milli
. - Sleep Needed from Sleep Debt: Sleep needed due to sleep debt, measured
in milliseconds. Internally recorded as
need_from_sleep_debt_milli
. - Sleep Needed from Recent Strain: Sleep needed due to a recent strain,
measured in milliseconds. Internally recorded as
need_from_recent_strain_milli
. - Sleep Needed from Recent Nap: Sleep needed due to a recent nap,
measured in milliseconds. Internally recorded as
need_from_recent_nap_milli
.
- Baseline Sleep Needed: Baseline sleep needed, measured in
milliseconds. Internally recorded as
- Respiratory Rate: Respiratory rate in breaths per minute. Internally
recorded as
respiratory_rate
. - Sleep Performance Percentage: Internally recorded as
sleep_performance_percentage
. - Sleep Consistency Percentage: Internally recorded as
sleep_consistency_percentage
. - Sleep Efficiency Percentage: Internally recorded as
sleep_efficiency_percentage
.
- Stage Summary: Summary of the sleep stages. It is internally recorded as
WHOOP Workout
Provides a participant's workout data. It is stored internally as
whoop_workout
and includes the following fields:
- Workout ID: Unique identifier for the workout activity. Internally
recorded as
event_id
. - Updated At: The time the workout activity was last updated in WHOOP.
Internally recorded as
updated_at
. - Start Time: Start time bound of the workout. Internally recorded as
start_time
. - End Time: End time bound of the workout. Internally recorded as
end_time
. - Timezone Offset: The participant's timezone offset from UTC at the time
the workout was recorded. Internally recorded as
timezone_offset
. - Sport ID: ID of the WHOOP Sport performed during the workout. Internally
recorded as
sport_id
. You can check WHOOP's reference document for possible values. - Score State:
SCORED
means the workout activity was scored and the measurement values will be present (see the next field).PENDING_SCORE
means WHOOP is currently evaluating the workout activity.UNSCORABLE
means this activity could not be scored for some reason, commonly because there is not enough participant metric data for the time range. Internally recorded asscore_state
. - Score: WHOOP's measurements and evaluation of the workout activity. Only
present if the Score State is
SCORED
. It is internally recorded asscore
and has the following fields:- Strain: WHOOP metric of the cardiovascular load which is the level of
strain the workout had on the participant's cardiovascular system based on
the participant's heart rate. Strain is scored on a scale from 0 to 21.
Internally recorded as
strain
. - Average Heart Rate: The participant's average heart rate (beats per
minute) during the workout. Internally recorded as
average_heart_rate
. - Max Heart Rate: The participant's max heart rate (beats per minute)
during the workout. Internally recorded as
max_heart_rate
. - Kilojoules: Kilojoules the participant expended during the workout.
Internally recorded as
kilojoule
. - Percent Recorded: Percentage of heart rate data WHOOP received during
the workout. Internally recorded as
percent_recorded
. - Zone Duration: Breakdown of time spent in each heart rate zone during
the workout. It is internally recorded as
zone_duration
and includes:- Zone Zero: Time spent with a Heart Rate lower than Zone One [0-50%].
Internally recorded as
zone_zero_milli
. - Zone One: Time spent in Heart Rate Zone One [50-60%]. Internally
recorded as
zone_one_milli
. - Zone Two: Time spent in Heart Rate Zone Two [60-70%]. Internally
recorded as
zone_two_milli
. - Zone Three: Time spent in Heart Rate Zone Three [70-80%]. Internally
recorded as
zone_three_milli
. - Zone Four: Time spent in Heart Rate Zone Four [80-90%]. Internally
recorded as
zone_four_milli
. - Zone Five: Time spent in Heart Rate Zone Five [90-100%]. Internally
recorded as
zone_five_milli
.
- Zone Zero: Time spent with a Heart Rate lower than Zone One [0-50%].
Internally recorded as
- Distance: The distance the participant traveled during the workout. Only
present if the distance data is sent to WHOOP. Internally recorded as
distance_meter
. - Altitude Gain: The altitude gained during the workout. This measurement
does not account for downward travel; it is strictly a measure of altitude
climbed. If a participant climbed up and down a 1,000-meter mountain, ending
at the same altitude, this measurement would be 1,000 meters. Only present
if altitude data is included as part of the workout. Internally recorded as
altitude_gain_meter
. - Altitude Change: The altitude difference between the start and end
points of the workout. If a participant climbed up and down a mountain,
ending at the same altitude, this measurement would be 0. Only present if
altitude data is included as part of the workout. Internally recorded as
altitude_change_meter
.
- Strain: WHOOP metric of the cardiovascular load which is the level of
strain the workout had on the participant's cardiovascular system based on
the participant's heart rate. Strain is scored on a scale from 0 to 21.
Internally recorded as
WHOOP Recovery
Provides participant's recovery data. It is stored internally as
whoop_recovery
and includes the following fields:
- Cycle ID: Unique identifier for the recovery cycle. Internally recorded as
event_id
. - Updated At: The time the recovery was last updated in WHOOP. Internally
recorded as
updated_at
. - Score State:
SCORED
means the recovery was scored and the measurement values will be present (see the next field).PENDING_SCORE
means WHOOP is currently evaluating the cycle.UNSCORABLE
means this cycle could not be scored for some reason, commonly because there is not enough participant metric data for the time range. Internally recorded asscore_state
. - Score: WHOOP's measurements and evaluation of the recovery. Only present
if the Score State is
SCORED
. It is internally recorded asscore
and has the following fields:- Recovery Score: Percentage that reflects how well prepared the
participant's body is to take on strain. The recovery score is a measure of
the participant's body's "return to baseline" after a stressor. Internally
recorded as
recovery_score
. - Resting Heart Rate: The participant's resting heart rate. Internally
recorded as
resting_heart_rate
. - HRV RMSSD: The participant's Heart Rate Variability measured using the
Root Mean Square of Successive Differences (RMSSD), in milliseconds.
Internally recorded as
hrv_rmssd_milli
. - SPO2 Percentage: The percentage of oxygen in the participant's blood.
Only present if the participant is on WHOOP 4.0 or greater. Internally
recorded as
spo2_percentage
. - Skin Temp Celsius: The participant's skin temperature, in Celsius. Only
present if the participant is on WHOOP 4.0 or greater. Internally recorded
as
skin_temp_celsius
. - User Calibrating: Indicates if the participant is still calibrating and
not enough data is available in WHOOP to provide an accurate recovery.
Internally recorded as
user_calibrating
.
- Recovery Score: Percentage that reflects how well prepared the
participant's body is to take on strain. The recovery score is a measure of
the participant's body's "return to baseline" after a stressor. Internally
recorded as
Data Collection Behavior
Whenever there is new WHOOP data, the WHOOP's server will send the new data to Avicenna.
Adding WHOOP As a Data Source
Monitoring WHOOP Data
There are two ways to monitor and export WHOOP data: using the Data Export page and using Kibana.
WHOOP Data Source in Participant App
After a participant joins a study, they need to grant access to Avicenna to
collect data. To do that, the participant needs to go to Settings
on the
Avicenna app and click on My Studies
. Then they should choose the study that
is collecting WHOOP data. On the study's page, clicking on the Data Sources
will take them to the data sources page:
On this page, the participant will see all of the data sources that the study
uses to collect data. Among these data sources, on the corner of the WHOOP data
source(s), there is a Grant Access
button:
By clicking on the Grant Access
button, the participant will be directed to
the sign-in page of the WHOOP official website. Then, they can decide whether
they want to share those data with Avicenna:
After clicking on Grant, the participant will be redirected to the Data Sources page of the study in the Avicenna app, and they have successfully granted access to Avicenna to gather WHOOP data.
The participants can stop sharing the data anytime by clicking on
Revoke Access
on the Data Sources page.