# Foundational analytics

Foundation metrics provide essential health measurements that form the data infrastructure for advanced health analytics. These metrics transform wearable data points into standardized, clinically relevant measurements through sophisticated data processing and validation algorithms.

### Body Composition Analysis

#### BMI and Waist Circumference Estimation

Calculates body mass index and estimates waist circumference using validated anthropometric algorithms that incorporate age and gender-specific adjustments.

**Input Data**

<table><thead><tr><th>dataDimension<select multiple><option value="cvt8P6Lusu6d" label="daily" color="blue"></option><option value="XFNuDkVoCuHF" label="epoch" color="blue"></option><option value="NcGS6usRVIAp" label="dail" color="blue"></option><option value="Tqu2fsZQpEme" label="constant" color="blue"></option></select></th><th>dataTypeId</th><th>Name</th><th data-type="checkbox">Required</th><th>Fallback</th></tr></thead><tbody><tr><td><span data-option="XFNuDkVoCuHF">epoch, </span><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>5020</code></td><td>Weight</td><td>true</td><td>n.a.</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch, </span><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>5030</code></td><td>Height</td><td>false</td><td>male: 175, female: 165</td></tr><tr><td><span data-option="Tqu2fsZQpEme">constant</span></td><td><code>1</code></td><td>Gender</td><td>true</td><td>n.a.</td></tr><tr><td><span data-option="Tqu2fsZQpEme">constant</span></td><td><code>10</code></td><td>Birthyear</td><td>false</td><td>1980</td></tr><tr><td><span data-option="Tqu2fsZQpEme">constant</span></td><td><code>11</code></td><td>Birth Month</td><td>false</td><td>01</td></tr><tr><td><span data-option="Tqu2fsZQpEme">constant</span></td><td><code>12</code></td><td>Birth Day</td><td>false</td><td>01</td></tr></tbody></table>

**Output Data**

<table><thead><tr><th>dataDimension<select multiple><option value="UBtQ2D7bXLcq" label="epoch" color="blue"></option><option value="I92d09KZQRnp" label="daily" color="blue"></option><option value="pmS5xH6BFBmT" label="constant" color="blue"></option></select></th><th>dataTypeId</th><th>Name</th></tr></thead><tbody><tr><td><span data-option="UBtQ2D7bXLcq">epoch</span></td><td><code>5026</code></td><td>BMI</td></tr><tr><td><span data-option="UBtQ2D7bXLcq">epoch</span></td><td><code>5027</code></td><td>WaistCircumference</td></tr></tbody></table>

***

### Daily Activity Intelligence

Processes activity data from multiple sources to generate standardized daily activity summaries for Walk, Run and Bike activities.

**Input Data**

<table><thead><tr><th>dataDimension<select multiple><option value="cvt8P6Lusu6d" label="daily" color="blue"></option><option value="XFNuDkVoCuHF" label="epoch" color="blue"></option><option value="NcGS6usRVIAp" label="dail" color="blue"></option><option value="Tqu2fsZQpEme" label="constant" color="blue"></option></select></th><th>dataTypeId</th><th>Name</th></tr></thead><tbody><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1114</code></td><td>ActiveBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1115</code></td><td>WalkBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1116</code></td><td>RunBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1117</code></td><td>BikeBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1715</code></td><td>CoveredDistanceWalk</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1716</code></td><td>CoveredDistanceRun</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1717</code></td><td>CoveredDistanceBike</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1825</code></td><td>ActiveWalkDuration</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1826</code></td><td>ActiveRunDuration</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1827</code></td><td>ActiveBikeDuration</td></tr></tbody></table>

**Processing Logic**

1. **Overlap Detection**: Identifies and removes duplicate data from multiple sources
2. **Manual vs. Automatic Classification**: Separates user-entered from sensor-detected data for daily data aggregation
3. **Daily Aggregation**: Sums durations and distances by activity type and data source

**Output Data**

**Sensor-Detected Activity**:

<table><thead><tr><th>dataDimension<select multiple><option value="cvt8P6Lusu6d" label="daily" color="blue"></option><option value="XFNuDkVoCuHF" label="epoch" color="blue"></option><option value="NcGS6usRVIAp" label="dail" color="blue"></option><option value="Tqu2fsZQpEme" label="constant" color="blue"></option></select></th><th>dataTypeId</th><th>Name</th></tr></thead><tbody><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1114</code></td><td>ActiveDuration</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1115</code></td><td>WalkDuration</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1116</code></td><td>RunDuration</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1117</code></td><td>BikeDuration</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1715</code></td><td>CoveredDistanceWalk</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1716</code></td><td>CoveredDistanceRun</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1717</code></td><td>CoveredDistanceBike</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1825</code></td><td>ActiveWalkDuration</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1826</code></td><td>ActiveRunDuration</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1827</code></td><td>ActiveBikeDuration</td></tr></tbody></table>

**Manual Activity Entries**:

<table><thead><tr><th>dataDimension<select multiple><option value="cvt8P6Lusu6d" label="daily" color="blue"></option><option value="XFNuDkVoCuHF" label="epoch" color="blue"></option><option value="NcGS6usRVIAp" label="dail" color="blue"></option><option value="Tqu2fsZQpEme" label="constant" color="blue"></option></select></th><th>dataTypeId</th><th>Name</th></tr></thead><tbody><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1814</code></td><td>ActiveDurationManual</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1815</code></td><td>WalkDurationManual</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1816</code></td><td>RunDurationManual</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1817</code></td><td>BikeDurationManual</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1725</code></td><td>CoveredDistanceWalkManual</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1726</code></td><td>CoveredDistanceRunManual</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1727</code></td><td>CoveredDistanceBikeManual</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1835</code></td><td>ActiveWalkDurationManual</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1836</code></td><td>ActiveRunDurationManual</td></tr><tr><td><span data-option="cvt8P6Lusu6d">daily</span></td><td><code>1837</code></td><td>ActiveBikeDurationManual</td></tr></tbody></table>

**Data Quality Features**

* Timezone-aware daily boundary calculation
* Multi-source conflict resolution with data prioritization
* Quality indicators for manual vs. automatic data classification

***

### Metabolic Equivalent (MET) Analysis

#### Real-Time Energy Expenditure Analysis

Calculates metabolic equivalent values from calorie expenditure and activity data, providing continuous assessment of activity intensity relative to weight as a multiple of resting metabolic rate.

**Input Data**

<table><thead><tr><th width="231.2109375">dataDimension<select multiple><option value="cvt8P6Lusu6d" label="daily" color="blue"></option><option value="XFNuDkVoCuHF" label="epoch" color="blue"></option><option value="NcGS6usRVIAp" label="dail" color="blue"></option><option value="Tqu2fsZQpEme" label="constant" color="blue"></option></select></th><th width="92.33203125">dataTypeId</th><th width="185.4140625">Name</th><th width="93.6328125" data-type="checkbox">Required</th><th width="144.046875">Fallback</th></tr></thead><tbody><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1011</code></td><td>ActiveBurnedCalories</td><td>true</td><td>n.a.</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1010</code></td><td>BurnedCalories</td><td>true</td><td>n.a.</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>1200</code></td><td>ActivityType</td><td>true</td><td>n.a.</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch, </span><span data-option="cvt8P6Lusu6d">daily, </span><span data-option="Tqu2fsZQpEme">constant</span></td><td><code>5020</code></td><td>Weight</td><td>false</td><td>75kg</td></tr></tbody></table>

**Output Data**

<table><thead><tr><th>dataDimension<select multiple><option value="UBtQ2D7bXLcq" label="epoch" color="blue"></option><option value="I92d09KZQRnp" label="daily" color="blue"></option><option value="pmS5xH6BFBmT" label="constant" color="blue"></option></select></th><th>dataTypeId</th><th>Name</th></tr></thead><tbody><tr><td><span data-option="UBtQ2D7bXLcq">epoch</span></td><td><code>1012</code></td><td>MetabolicEquivalent</td></tr></tbody></table>

**Data Processing Features**

* **Quality Control**: Filters unreasonable MET values
* **Data Prioritization**: Calorie availability takes precedence over generic activity information

**Fallback Mechanisms**

* Weight defaults to 75kg when unavailable
* Activity type classification is used when calorie data is incomplete

***

### Advanced MET Analysis

#### Daily Physical Activity Assessment

Processes continuous MET data to generate comprehensive daily activity intensity assessments and maximum metabolic capacity indicators.

**Input Data**

<table><thead><tr><th>dataDimension<select multiple><option value="UBtQ2D7bXLcq" label="epoch" color="blue"></option><option value="I92d09KZQRnp" label="daily" color="blue"></option><option value="pmS5xH6BFBmT" label="constant" color="blue"></option></select></th><th>dataTypeId</th><th>Name</th></tr></thead><tbody><tr><td><span data-option="UBtQ2D7bXLcq">epoch</span></td><td><code>1012</code></td><td>MetabolicEquivalent</td></tr></tbody></table>

**METmax Analysis**

Calculates maximum metabolic equivalent values over specified time windows to assess cardiovascular capacity and exercise tolerance.

**Processing Logic**

1. **Daily Maximum Selection**: Peak values identified for each time window

**Output Data**

<table><thead><tr><th width="128.37890625">dataDimension<select multiple><option value="UBtQ2D7bXLcq" label="epoch" color="blue"></option><option value="I92d09KZQRnp" label="daily" color="blue"></option><option value="pmS5xH6BFBmT" label="constant" color="blue"></option></select></th><th width="96.8671875">dataTypeId</th><th width="257.703125">Name</th><th>Description</th></tr></thead><tbody><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>1286</code></td><td>MetabolicEquivalentMax1Min</td><td>highest 1-minute rolling average</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>1287</code></td><td>MetabolicEquivalentMax5Min</td><td>highest 5-minute rolling average</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>1288</code></td><td>MetabolicEquivalentMax10Min</td><td>highest 10-minute rolling average</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>1289</code></td><td>MetabolicEquivalentMax60Min</td><td>highest 60-minute rolling average</td></tr></tbody></table>

**Activity Intensity Classification**

**Input Data**

<table><thead><tr><th>dataDimension<select multiple><option value="UBtQ2D7bXLcq" label="epoch" color="blue"></option><option value="I92d09KZQRnp" label="daily" color="blue"></option><option value="pmS5xH6BFBmT" label="constant" color="blue"></option></select></th><th>dataTypeId</th><th>Name</th></tr></thead><tbody><tr><td><span data-option="UBtQ2D7bXLcq">epoch</span></td><td><code>1012</code></td><td>MetabolicEquivalent</td></tr></tbody></table>

**Output Data**

<table><thead><tr><th>dataDimension<select multiple><option value="UBtQ2D7bXLcq" label="epoch" color="blue"></option><option value="I92d09KZQRnp" label="daily" color="blue"></option><option value="pmS5xH6BFBmT" label="constant" color="blue"></option></select></th><th>dataTypeId</th><th>Name</th></tr></thead><tbody><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>1101</code></td><td>ActivityLowDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>1102</code></td><td>ActivityMidDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>1103</code></td><td>ActivityHighDuration</td></tr></tbody></table>

**Processing Features**:

* Timezone consistency is maintained across daily boundaries

**Clinical Applications**

METmax values provide insights into cardiovascular fitness and exercise capacity, typically available only through clinical exercise testing. Activity intensity classifications align with established exercise prescription guidelines for healthcare applications.

### Standardized Sleep Analysis

#### Sleep Cycle Identification and Standardization

Addresses the challenge of inconsistent sleep definitions across wearable manufacturers by implementing standardized sleep cycle identification and analysis. Provides consistent sleep metrics regardless of the underlying data source. Enriches data when sleep data sets provided by data source are incomplete

#### Input Data

<table><thead><tr><th width="127.953125">dataDimension<select multiple><option value="cvt8P6Lusu6d" label="daily" color="blue"></option><option value="XFNuDkVoCuHF" label="epoch" color="blue"></option><option value="NcGS6usRVIAp" label="dail" color="blue"></option><option value="Tqu2fsZQpEme" label="constant" color="blue"></option></select></th><th width="92.33203125">dataTypeId</th><th width="527.8828125">Name</th></tr></thead><tbody><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2000</code></td><td>SleepStateBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2001</code></td><td>SleepInBedBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2002</code></td><td>SleepREMBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2003</code></td><td>SleepDeepBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2005</code></td><td>SleepLightBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2006</code></td><td>SleepAwakeBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>4101</code></td><td>SnoringBinary</td></tr></tbody></table>

#### Processing Logic

1. **Data Harmonization**: Consolidates sleep data from all connected sources
2. **Cycle Identification**: Identifies all sleep periods using a 30-minute interruption threshold
3. **Main Sleep Selection**: Selects the longest cycle as the primary sleep period
4. **Day Assignment**: Assigns sleep cycles to calendar days based on mid-sleep time

**ThryveMainSleep Definition**

The longest continuous sleep cycle of each day, where interruptions (wake phases) do not exceed 30 minutes. This standardized definition enables consistent metrics across different devices and longitudinal tracking when users change devices.

#### Output data

**Standard Sleep Metrics**

<table><thead><tr><th>dataDimension<select multiple><option value="UBtQ2D7bXLcq" label="epoch" color="blue"></option><option value="I92d09KZQRnp" label="daily" color="blue"></option><option value="pmS5xH6BFBmT" label="constant" color="blue"></option></select></th><th>dataTypeId</th><th>Name</th></tr></thead><tbody><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2000</code></td><td>SleepDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2001</code></td><td>SleepInBedDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2002</code></td><td>SleepREMDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2003</code></td><td>SleepDeepDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2005</code></td><td>SleepLightDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2006</code></td><td>SleepAwakeDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2007</code></td><td>SleepLatency</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2008</code></td><td>SleepAwakeAfterWakeup</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2100</code></td><td>SleepStartTime</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2101</code></td><td>SleepEndTime</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2102</code></td><td>SleepInterruptions</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2103</code></td><td>SleepMidTime</td></tr></tbody></table>

**ThryveMainSleep Standardized Metrics**

<table><thead><tr><th>dataDimension<select multiple><option value="UBtQ2D7bXLcq" label="epoch" color="blue"></option><option value="I92d09KZQRnp" label="daily" color="blue"></option><option value="pmS5xH6BFBmT" label="constant" color="blue"></option></select></th><th width="147.8671875">dataTypeId</th><th>Name</th></tr></thead><tbody><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2300</code></td><td>ThryveMainSleepDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2301</code></td><td>ThryveMainSleepInBedDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2302</code></td><td>ThryveMainSleepREMDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2303</code></td><td>ThryveMainSleepDeepDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2305</code></td><td>ThryveMainSleepLightDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2306</code></td><td>ThryveMainSleepAwakeDuration</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2307</code></td><td>ThryveMainSleepLatency</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2308</code></td><td>ThryveMainSleepAwakeAfterWakeup</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2400</code></td><td>ThryveMainSleepStartTime</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2401</code></td><td>ThryveMainSleepEndTime</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2402</code></td><td>ThryveMainSleepInterruptions</td></tr><tr><td><span data-option="I92d09KZQRnp">daily</span></td><td><code>2403</code></td><td>ThryveMainSleepMidTime</td></tr></tbody></table>

**Epoch-Level Sleep State Data**

<table><thead><tr><th width="127.953125">dataDimension<select multiple><option value="cvt8P6Lusu6d" label="daily" color="blue"></option><option value="XFNuDkVoCuHF" label="epoch" color="blue"></option><option value="NcGS6usRVIAp" label="dail" color="blue"></option><option value="Tqu2fsZQpEme" label="constant" color="blue"></option></select></th><th width="92.33203125">dataTypeId</th><th width="527.8828125">Name</th></tr></thead><tbody><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2300</code></td><td>ThryveMainSleepStateBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2301</code></td><td>ThryveMainSleepInBedBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2302</code></td><td>ThryveMainSleepREMBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2303</code></td><td>ThryveMainSleepDeepBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2305</code></td><td>ThryveMainSleepLightBinary</td></tr><tr><td><span data-option="XFNuDkVoCuHF">epoch</span></td><td><code>2306</code></td><td>ThryveMainSleepAwakeBinary</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.thryve.health/thryve-analytics-platform/foundational-analytics.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
