nokken/docs/site/core/health_analytics/index.html
2025-04-20 11:17:03 -04:00

1852 lines
No EOL
88 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Documentation for the Nokken medical tracking application">
<meta name="author" content="Charlotte Croce">
<link rel="prev" href="../notifications/">
<link rel="next" href="../ui/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.9">
<title>Health Analytics - Nokken Documentation</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.4af4bdda.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="pink">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#health-analytics-service" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="Nokken Documentation" class="md-header__button md-logo" aria-label="Nokken Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Nokken Documentation
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Health Analytics
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="black" data-md-color-accent="pink" aria-hidden="true" type="radio" name="__palette" id="__palette_0">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="blue" data-md-color-accent="pink" aria-hidden="true" type="radio" name="__palette" id="__palette_1">
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://codeberg.org/charlottecroce/nokken" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
</div>
<div class="md-source__repository">
Codeberg
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--integrated" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="Nokken Documentation" class="md-nav__button md-logo" aria-label="Nokken Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
Nokken Documentation
</label>
<div class="md-nav__source">
<a href="https://codeberg.org/charlottecroce/nokken" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
</div>
<div class="md-source__repository">
Codeberg
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1" >
<div class="md-nav__link md-nav__container">
<a href="../.." class="md-nav__link ">
<span class="md-ellipsis">
Home
</span>
</a>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
Home
</label>
<ul class="md-nav__list" data-md-scrollfix>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
<div class="md-nav__link md-nav__container">
<a href="../../getting-started/" class="md-nav__link ">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Getting Started
</label>
<ul class="md-nav__list" data-md-scrollfix>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
<div class="md-nav__link md-nav__container">
<a href="../../architecture/" class="md-nav__link ">
<span class="md-ellipsis">
Architecture
</span>
</a>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Architecture
</label>
<ul class="md-nav__list" data-md-scrollfix>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
<div class="md-nav__link md-nav__container">
<a href="../" class="md-nav__link ">
<span class="md-ellipsis">
Core Services
</span>
</a>
<label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Core Services
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../database/" class="md-nav__link">
<span class="md-ellipsis">
Database
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../navigation/" class="md-nav__link">
<span class="md-ellipsis">
Navigation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../notifications/" class="md-nav__link">
<span class="md-ellipsis">
Notifications
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Health Analytics
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Health Analytics
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#table-of-contents" class="md-nav__link">
<span class="md-ellipsis">
Table of Contents
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#core-features" class="md-nav__link">
<span class="md-ellipsis">
Core Features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#api-reference" class="md-nav__link">
<span class="md-ellipsis">
API Reference
</span>
</a>
<nav class="md-nav" aria-label="API Reference">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#basic-statistics" class="md-nav__link">
<span class="md-ellipsis">
Basic Statistics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#trend-analysis" class="md-nav__link">
<span class="md-ellipsis">
Trend Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#correlation-analysis" class="md-nav__link">
<span class="md-ellipsis">
Correlation Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#multivariate-analysis" class="md-nav__link">
<span class="md-ellipsis">
Multivariate Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cluster-analysis" class="md-nav__link">
<span class="md-ellipsis">
Cluster Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#time-series-forecasting" class="md-nav__link">
<span class="md-ellipsis">
Time Series Forecasting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#anomaly-detection" class="md-nav__link">
<span class="md-ellipsis">
Anomaly Detection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#factor-impact-analysis" class="md-nav__link">
<span class="md-ellipsis">
Factor Impact Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#date-pattern-analysis" class="md-nav__link">
<span class="md-ellipsis">
Date Pattern Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cycle-analysis" class="md-nav__link">
<span class="md-ellipsis">
Cycle Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#medication-impact-analysis" class="md-nav__link">
<span class="md-ellipsis">
Medication Impact Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hormone-analysis" class="md-nav__link">
<span class="md-ellipsis">
Hormone Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#comprehensive-analysis" class="md-nav__link">
<span class="md-ellipsis">
Comprehensive Analysis
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#data-models" class="md-nav__link">
<span class="md-ellipsis">
Data Models
</span>
</a>
<nav class="md-nav" aria-label="Data Models">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#health-statistics" class="md-nav__link">
<span class="md-ellipsis">
Health Statistics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#trend-analysis_1" class="md-nav__link">
<span class="md-ellipsis">
Trend Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#factor-correlation" class="md-nav__link">
<span class="md-ellipsis">
Factor Correlation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#multivariate-relationship" class="md-nav__link">
<span class="md-ellipsis">
Multivariate Relationship
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cluster-pattern" class="md-nav__link">
<span class="md-ellipsis">
Cluster Pattern
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#time-series-prediction" class="md-nav__link">
<span class="md-ellipsis">
Time Series Prediction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#anomaly-result" class="md-nav__link">
<span class="md-ellipsis">
Anomaly Result
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#factor-impact" class="md-nav__link">
<span class="md-ellipsis">
Factor Impact
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#date-pattern" class="md-nav__link">
<span class="md-ellipsis">
Date Pattern
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#cycle-analysis_1" class="md-nav__link">
<span class="md-ellipsis">
Cycle Analysis
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#medication-impact-result" class="md-nav__link">
<span class="md-ellipsis">
Medication Impact Result
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hormone-impact-result" class="md-nav__link">
<span class="md-ellipsis">
Hormone Impact Result
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#comprehensive-health-analysis" class="md-nav__link">
<span class="md-ellipsis">
Comprehensive Health Analysis
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#example-usage" class="md-nav__link">
<span class="md-ellipsis">
Example Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#performance-considerations" class="md-nav__link">
<span class="md-ellipsis">
Performance Considerations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
Troubleshooting
</span>
</a>
<nav class="md-nav" aria-label="Troubleshooting">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#common-issues" class="md-nav__link">
<span class="md-ellipsis">
Common Issues
</span>
</a>
<nav class="md-nav" aria-label="Common Issues">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#native-library-loading-failures" class="md-nav__link">
<span class="md-ellipsis">
Native Library Loading Failures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#insufficient-data-errors" class="md-nav__link">
<span class="md-ellipsis">
Insufficient Data Errors
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../ui/" class="md-nav__link">
<span class="md-ellipsis">
UI Componenets
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../utilities/" class="md-nav__link">
<span class="md-ellipsis">
Utilities
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../validation/" class="md-nav__link">
<span class="md-ellipsis">
Validation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
<div class="md-nav__link md-nav__container">
<a href="../../features/" class="md-nav__link ">
<span class="md-ellipsis">
Features
</span>
</a>
<label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Features
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../features/medication-tracker/" class="md-nav__link">
<span class="md-ellipsis">
Medication Tracker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/bloodwork-tracker/" class="md-nav__link">
<span class="md-ellipsis">
Bloodwork Tracker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/mood-tracker/" class="md-nav__link">
<span class="md-ellipsis">
Mood Tracker
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/scheduler/" class="md-nav__link">
<span class="md-ellipsis">
Scheduler
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/statistics/" class="md-nav__link">
<span class="md-ellipsis">
Statistics
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../features/settings/" class="md-nav__link">
<span class="md-ellipsis">
Settings
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="health-analytics-service">Health Analytics Service<a class="headerlink" href="#health-analytics-service" title="Permanent link">&para;</a></h1>
<p>The Health Analytics Service provides advanced statistical analysis capabilities for health-related data. It's designed to identify patterns, correlations, and insights in health metrics through a high-performance native C++ implementation with a Dart interface.</p>
<p>This service leverages Foreign Function Interface (FFI) to bridge Dart applications with the C++ analytics engine, enabling complex health data analysis with minimal computational overhead in Flutter applications.</p>
<p>Key capabilities include statistical computations, correlation identification, time series analysis, anomaly detection, clustering, and health-specific analyses like medication impact and hormone level monitoring.</p>
<h2 id="table-of-contents">Table of Contents<a class="headerlink" href="#table-of-contents" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="#core-features">Core Features</a></li>
<li><a href="#api-reference">API Reference</a></li>
<li><a href="#basic-statistics">Basic Statistics</a></li>
<li><a href="#trend-analysis">Trend Analysis</a></li>
<li><a href="#correlation-analysis">Correlation Analysis</a></li>
<li><a href="#multivariate-analysis">Multivariate Analysis</a></li>
<li><a href="#cluster-analysis">Cluster Analysis</a></li>
<li><a href="#time-series-forecasting">Time Series Forecasting</a></li>
<li><a href="#anomaly-detection">Anomaly Detection</a></li>
<li><a href="#factor-impact-analysis">Factor Impact Analysis</a></li>
<li><a href="#date-pattern-analysis">Date Pattern Analysis</a></li>
<li><a href="#cycle-analysis">Cycle Analysis</a></li>
<li><a href="#medication-impact-analysis">Medication Impact Analysis</a></li>
<li><a href="#hormone-analysis">Hormone Analysis</a></li>
<li><a href="#comprehensive-analysis">Comprehensive Analysis</a></li>
<li><a href="#data-models">Data Models</a></li>
<li><a href="#example-usage">Example Usage</a></li>
<li><a href="#performance-considerations">Performance Considerations</a></li>
<li><a href="#troubleshooting">Troubleshooting</a></li>
</ul>
<h2 id="core-features">Core Features<a class="headerlink" href="#core-features" title="Permanent link">&para;</a></h2>
<p>The Health Analytics Service provides the following core functionalities:</p>
<ul>
<li><strong>Statistical Analysis</strong>: Calculate mean, median, variance, standard deviation, quartiles, skewness, and kurtosis for health metrics.</li>
<li><strong>Trend Detection</strong>: Identify increasing, decreasing, cyclic, or variable trends in time series data.</li>
<li><strong>Correlation Analysis</strong>: Find relationships between various health factors and determine their significance.</li>
<li><strong>Multivariate Analysis</strong>: Explore complex relationships between multiple health variables.</li>
<li><strong>Clustering</strong>: Group similar health patterns together to identify natural categories.</li>
<li><strong>Time Series Forecasting</strong>: Predict future values of health metrics based on historical data.</li>
<li><strong>Anomaly Detection</strong>: Identify unusual patterns or outliers in health data.</li>
<li><strong>Factor Impact Analysis</strong>: Determine which factors have the strongest influence on target health metrics.</li>
<li><strong>Temporal Pattern Analysis</strong>: Discover cyclical patterns and date-related trends (e.g., weekly patterns).</li>
<li><strong>Medication Impact Analysis</strong>: Assess how medications affect various health metrics.</li>
<li><strong>Hormone Analysis</strong>: Evaluate hormone levels and their impact on health factors.</li>
<li><strong>Comprehensive Analysis</strong>: Integrate multiple analysis techniques for holistic health insights.</li>
</ul>
<h2 id="api-reference">API Reference<a class="headerlink" href="#api-reference" title="Permanent link">&para;</a></h2>
<h3 id="basic-statistics">Basic Statistics<a class="headerlink" href="#basic-statistics" title="Permanent link">&para;</a></h3>
<p>Calculate fundamental statistics for a health metric:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">HealthStatistics</span><span class="w"> </span><span class="n">stats</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">calculateStatistics</span><span class="p">(</span><span class="n">values</span><span class="p">);</span>
</code></pre></div>
<p>The <code>HealthStatistics</code> object provides:</p>
<ul>
<li>mean</li>
<li>median </li>
<li>min/max values</li>
<li>standard deviation</li>
<li>variance</li>
<li>skewness</li>
<li>kurtosis</li>
<li>quartiles (Q1, Q3)</li>
<li>interquartile range (IQR)</li>
</ul>
<h3 id="trend-analysis">Trend Analysis<a class="headerlink" href="#trend-analysis" title="Permanent link">&para;</a></h3>
<p>Detect trends in time series data:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">TrendAnalysis</span><span class="w"> </span><span class="n">trend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">detectTrend</span><span class="p">(</span><span class="n">values</span><span class="p">);</span>
</code></pre></div>
<p>This returns a <code>TrendAnalysis</code> with:</p>
<ul>
<li>trend type (increasing, decreasing, cyclic, variable, or none)</li>
<li>strength (0-1 scale)</li>
<li>description of the detected trend</li>
</ul>
<h3 id="correlation-analysis">Correlation Analysis<a class="headerlink" href="#correlation-analysis" title="Permanent link">&para;</a></h3>
<p>Find correlations between a target variable and multiple factors:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">List</span><span class="o">&lt;</span><span class="n">FactorCorrelation</span><span class="o">&gt;</span><span class="w"> </span><span class="n">correlations</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">findCorrelations</span><span class="p">(</span>
<span class="w"> </span><span class="n">targetValues</span><span class="p">,</span>
<span class="w"> </span><span class="n">factorData</span><span class="p">,</span>
<span class="p">);</span>
</code></pre></div>
<p>Where:</p>
<ul>
<li><code>targetValues</code> is a list of double values for the target metric</li>
<li><code>factorData</code> is a map of factor names to lists of double values</li>
</ul>
<p>Returns a list of <code>FactorCorrelation</code> objects with:</p>
<ul>
<li>factor name</li>
<li>correlation coefficient (-1 to 1)</li>
<li>p-value</li>
<li>confidence level</li>
</ul>
<h3 id="multivariate-analysis">Multivariate Analysis<a class="headerlink" href="#multivariate-analysis" title="Permanent link">&para;</a></h3>
<p>Find complex relationships between multiple factors:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">List</span><span class="o">&lt;</span><span class="n">MultivariateRelationship</span><span class="o">&gt;</span><span class="w"> </span><span class="n">relationships</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">findMultivariateCorrelations</span><span class="p">(</span>
<span class="w"> </span><span class="n">factorData</span><span class="p">,</span>
<span class="p">);</span>
</code></pre></div>
<p>This identifies various relationship types (direct correlation, mediation, network effects) between three or more factors.</p>
<h3 id="cluster-analysis">Cluster Analysis<a class="headerlink" href="#cluster-analysis" title="Permanent link">&para;</a></h3>
<p>Group similar data points based on multiple factors:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">List</span><span class="o">&lt;</span><span class="n">ClusterPattern</span><span class="o">&gt;</span><span class="w"> </span><span class="n">clusters</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">performClusterAnalysis</span><span class="p">(</span>
<span class="w"> </span><span class="n">factorData</span><span class="p">,</span>
<span class="w"> </span><span class="n">maxClusters</span><span class="p">,</span>
<span class="p">);</span>
</code></pre></div>
<p>This identifies natural groupings in the data, returning:</p>
<ul>
<li>cluster ID and name</li>
<li>number of points in each cluster</li>
<li>significance score</li>
<li>key factors defining each cluster</li>
<li>detailed description</li>
</ul>
<h3 id="time-series-forecasting">Time Series Forecasting<a class="headerlink" href="#time-series-forecasting" title="Permanent link">&para;</a></h3>
<p>Predict future values of a health metric:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">TimeSeriesPrediction</span><span class="w"> </span><span class="n">forecast</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">predictTimeSeries</span><span class="p">(</span>
<span class="w"> </span><span class="n">factorName</span><span class="p">,</span>
<span class="w"> </span><span class="n">timeSeriesData</span><span class="p">,</span>
<span class="w"> </span><span class="n">stepsAhead</span><span class="p">,</span>
<span class="p">);</span>
</code></pre></div>
<p>Returns predictions with confidence intervals and seasonality information.</p>
<h3 id="anomaly-detection">Anomaly Detection<a class="headerlink" href="#anomaly-detection" title="Permanent link">&para;</a></h3>
<p>Identify unusual patterns or outliers in health data:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">List</span><span class="o">&lt;</span><span class="n">AnomalyResult</span><span class="o">&gt;</span><span class="w"> </span><span class="n">anomalies</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">detectAnomalies</span><span class="p">(</span>
<span class="w"> </span><span class="n">factorName</span><span class="p">,</span>
<span class="w"> </span><span class="n">timeSeriesData</span><span class="p">,</span>
<span class="w"> </span><span class="n">dates</span><span class="p">,</span>
<span class="w"> </span><span class="n">threshold</span><span class="p">,</span>
<span class="p">);</span>
</code></pre></div>
<p>Detects statistical outliers, contextual anomalies, and trend changes.</p>
<h3 id="factor-impact-analysis">Factor Impact Analysis<a class="headerlink" href="#factor-impact-analysis" title="Permanent link">&para;</a></h3>
<p>Determine which factors have the strongest influence on a target metric:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">List</span><span class="o">&lt;</span><span class="n">FactorImpact</span><span class="o">&gt;</span><span class="w"> </span><span class="n">impacts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">rankFactorImpacts</span><span class="p">(</span>
<span class="w"> </span><span class="n">factorData</span><span class="p">,</span>
<span class="w"> </span><span class="n">targetData</span><span class="p">,</span>
<span class="p">);</span>
</code></pre></div>
<p>This analyzes both direct and indirect effects of factors, returning:</p>
<ul>
<li>impact score</li>
<li>direct effect</li>
<li>indirect effect (through other factors)</li>
<li>confidence level</li>
<li>mechanism description</li>
</ul>
<h3 id="date-pattern-analysis">Date Pattern Analysis<a class="headerlink" href="#date-pattern-analysis" title="Permanent link">&para;</a></h3>
<p>Discover patterns related to specific times (day of week, month, etc.):</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">List</span><span class="o">&lt;</span><span class="n">DatePattern</span><span class="o">&gt;</span><span class="w"> </span><span class="n">patterns</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">analyzeDatePatterns</span><span class="p">(</span>
<span class="w"> </span><span class="n">factorName</span><span class="p">,</span>
<span class="w"> </span><span class="n">values</span><span class="p">,</span>
<span class="w"> </span><span class="n">dates</span><span class="p">,</span>
<span class="p">);</span>
</code></pre></div>
<p>Identifies weekly, monthly, or custom periodicity patterns.</p>
<h3 id="cycle-analysis">Cycle Analysis<a class="headerlink" href="#cycle-analysis" title="Permanent link">&para;</a></h3>
<p>Analyze cyclical patterns in health data:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">CycleAnalysis</span><span class="w"> </span><span class="n">cycles</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">analyzeCycles</span><span class="p">(</span>
<span class="w"> </span><span class="n">factorName</span><span class="p">,</span>
<span class="w"> </span><span class="n">values</span><span class="p">,</span>
<span class="w"> </span><span class="n">dates</span><span class="p">,</span>
<span class="p">);</span>
</code></pre></div>
<p>Returns information about:</p>
<ul>
<li>cycle length</li>
<li>amplitude</li>
<li>phase shift</li>
<li>confidence level</li>
<li>variance in cycle length</li>
</ul>
<h3 id="medication-impact-analysis">Medication Impact Analysis<a class="headerlink" href="#medication-impact-analysis" title="Permanent link">&para;</a></h3>
<p>Assess how medications affect health metrics:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">MedicationImpactResult</span><span class="w"> </span><span class="n">impact</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">analyzeMedicationImpact</span><span class="p">(</span>
<span class="w"> </span><span class="n">medicationName</span><span class="p">,</span>
<span class="w"> </span><span class="n">factorName</span><span class="p">,</span>
<span class="w"> </span><span class="n">beforeData</span><span class="p">,</span>
<span class="w"> </span><span class="n">afterData</span><span class="p">,</span>
<span class="p">);</span>
</code></pre></div>
<p>Compares health metrics before and after medication, providing:</p>
<ul>
<li>mean values before and after</li>
<li>magnitude and significance of changes</li>
<li>overall impact score</li>
<li>estimated days to effect</li>
</ul>
<h3 id="hormone-analysis">Hormone Analysis<a class="headerlink" href="#hormone-analysis" title="Permanent link">&para;</a></h3>
<p>Evaluate hormone levels and their impact on health factors:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">HormoneImpactResult</span><span class="w"> </span><span class="n">hormoneImpact</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">analyzeHormoneImpact</span><span class="p">(</span>
<span class="w"> </span><span class="n">hormoneName</span><span class="p">,</span>
<span class="w"> </span><span class="n">hormoneLevels</span><span class="p">,</span>
<span class="w"> </span><span class="n">factorData</span><span class="p">,</span>
<span class="w"> </span><span class="n">minOptimalLevel</span><span class="p">,</span>
<span class="w"> </span><span class="n">maxOptimalLevel</span><span class="p">,</span>
<span class="p">);</span>
</code></pre></div>
<p>Provides information about:</p>
<ul>
<li>current vs. optimal hormone levels</li>
<li>deviation from optimal range</li>
<li>impact on mood and energy</li>
<li>correlations with other health factors</li>
</ul>
<h3 id="comprehensive-analysis">Comprehensive Analysis<a class="headerlink" href="#comprehensive-analysis" title="Permanent link">&para;</a></h3>
<p>Generate a holistic analysis combining multiple techniques:</p>
<div class="language-dart highlight"><pre><span></span><code><span class="n">ComprehensiveHealthAnalysis</span><span class="w"> </span><span class="n">analysis</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">await</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">generateComprehensiveAnalysis</span><span class="p">(</span>
<span class="w"> </span><span class="nl">moodEntries:</span><span class="w"> </span><span class="n">moodEntries</span><span class="p">,</span>
<span class="w"> </span><span class="nl">medications:</span><span class="w"> </span><span class="n">medications</span><span class="p">,</span>
<span class="w"> </span><span class="nl">takenMedications:</span><span class="w"> </span><span class="n">takenMedications</span><span class="p">,</span>
<span class="w"> </span><span class="nl">bloodworkEntries:</span><span class="w"> </span><span class="n">bloodworkEntries</span><span class="p">,</span>
<span class="w"> </span><span class="nl">timeframe:</span><span class="w"> </span><span class="s2">&quot;3 months&quot;</span><span class="p">,</span>
<span class="p">);</span>
</code></pre></div>
<p>This integrates all analysis methods to provide a complete health overview.</p>
<h2 id="data-models">Data Models<a class="headerlink" href="#data-models" title="Permanent link">&para;</a></h2>
<p>The service uses the following core data models:</p>
<h3 id="health-statistics">Health Statistics<a class="headerlink" href="#health-statistics" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">HealthStatistics</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">mean</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">median</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">min</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">max</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">stdDev</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">variance</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">skewness</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">kurtosis</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">q1</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">q3</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">iqr</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="trend-analysis_1">Trend Analysis<a class="headerlink" href="#trend-analysis_1" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">TrendAnalysis</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">TrendType</span><span class="w"> </span><span class="n">type</span><span class="p">;</span><span class="w"> </span><span class="c1">// enum: none, increasing, decreasing, cyclic, variable</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">strength</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">description</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="factor-correlation">Factor Correlation<a class="headerlink" href="#factor-correlation" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">FactorCorrelation</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">factorName</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">correlation</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">pValue</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">confidence</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="multivariate-relationship">Multivariate Relationship<a class="headerlink" href="#multivariate-relationship" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">MultivariateRelationship</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="kt">String</span><span class="o">&gt;</span><span class="w"> </span><span class="n">factorNames</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">correlationStrength</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">description</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">confidence</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span><span class="w"> </span><span class="n">factorWeights</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">RelationshipType</span><span class="w"> </span><span class="n">relationshipType</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="cluster-pattern">Cluster Pattern<a class="headerlink" href="#cluster-pattern" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">ClusterPattern</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">name</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">description</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">pointCount</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">significance</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="kt">String</span><span class="o">&gt;</span><span class="w"> </span><span class="n">keyFactors</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span><span class="w"> </span><span class="n">factorImportance</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="time-series-prediction">Time Series Prediction<a class="headerlink" href="#time-series-prediction" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">TimeSeriesPrediction</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">factorName</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span><span class="w"> </span><span class="n">predictions</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">List</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;&gt;</span><span class="w"> </span><span class="n">confidenceIntervals</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">confidence</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">seasonalityPeriod</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">TimeUnit</span><span class="w"> </span><span class="n">timeUnit</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="anomaly-result">Anomaly Result<a class="headerlink" href="#anomaly-result" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">AnomalyResult</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">factorName</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">dataPointIndex</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">anomalyScore</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">description</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">originalValue</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">expectedValue</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">DateTime</span><span class="o">?</span><span class="w"> </span><span class="n">date</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">confidence</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">AnomalyType</span><span class="w"> </span><span class="n">anomalyType</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="factor-impact">Factor Impact<a class="headerlink" href="#factor-impact" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">FactorImpact</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">factorName</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">impactScore</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">directEffect</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">indirectEffect</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">confidence</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">mechanism</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="date-pattern">Date Pattern<a class="headerlink" href="#date-pattern" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">DatePattern</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">PatternType</span><span class="w"> </span><span class="n">type</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">periodicity</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">strength</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">description</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="kt">double</span><span class="o">&gt;</span><span class="w"> </span><span class="n">peakValues</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">peakDayOfWeek</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">peakDayOfMonth</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">peakMonth</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="cycle-analysis_1">Cycle Analysis<a class="headerlink" href="#cycle-analysis_1" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">CycleAnalysis</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">cycleLength</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">cycleLengthVariance</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">amplitude</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">phaseShift</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">confidence</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">description</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="medication-impact-result">Medication Impact Result<a class="headerlink" href="#medication-impact-result" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">MedicationImpactResult</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">medicationName</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">factorName</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">beforeMean</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">afterMean</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">changeMagnitude</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">changeSignificance</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">overallImpact</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">daysToEffect</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">description</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="hormone-impact-result">Hormone Impact Result<a class="headerlink" href="#hormone-impact-result" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">HormoneImpactResult</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">hormoneName</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">currentLevel</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">optimalLevel</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">optimalRangeLower</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">optimalRangeUpper</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">deviation</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">impactOnMood</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">impactOnEnergy</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">Map</span><span class="o">&lt;</span><span class="kt">String</span><span class="p">,</span><span class="w"> </span><span class="kt">double</span><span class="o">&gt;</span><span class="w"> </span><span class="n">factorImpacts</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">description</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h3 id="comprehensive-health-analysis">Comprehensive Health Analysis<a class="headerlink" href="#comprehensive-health-analysis" title="Permanent link">&para;</a></h3>
<div class="language-dart highlight"><pre><span></span><code><span class="kd">class</span><span class="w"> </span><span class="nc">ComprehensiveHealthAnalysis</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">TrendAnalysis</span><span class="w"> </span><span class="n">moodTrend</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">MultivariateRelationship</span><span class="o">&gt;</span><span class="w"> </span><span class="n">factorCorrelations</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">ClusterPattern</span><span class="o">&gt;</span><span class="w"> </span><span class="n">clusters</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">AnomalyResult</span><span class="o">&gt;</span><span class="w"> </span><span class="n">anomalies</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">FactorImpact</span><span class="o">&gt;</span><span class="w"> </span><span class="n">factorImpacts</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">TimeSeriesPrediction</span><span class="o">&gt;</span><span class="w"> </span><span class="n">predictions</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">DatePattern</span><span class="o">&gt;</span><span class="w"> </span><span class="n">datePatterns</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">CycleAnalysis</span><span class="o">&gt;</span><span class="w"> </span><span class="n">cycleAnalyses</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">HormoneImpactResult</span><span class="o">&gt;</span><span class="w"> </span><span class="n">hormoneImpacts</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">MedicationImpactResult</span><span class="o">&gt;</span><span class="w"> </span><span class="n">medicationImpacts</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">DateTime</span><span class="w"> </span><span class="n">analysisDate</span><span class="p">;</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="kt">String</span><span class="w"> </span><span class="n">timeframe</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<h2 id="example-usage">Example Usage<a class="headerlink" href="#example-usage" title="Permanent link">&para;</a></h2>
<div class="language-dart highlight"><pre><span></span><code><span class="k">import</span><span class="w"> </span><span class="s1">&#39;package:nokken/src/features/health_analytics/health_analytics_service.dart&#39;</span><span class="p">;</span>
<span class="k">import</span><span class="w"> </span><span class="s1">&#39;package:nokken/src/features/mood_tracker/models/mood_entry.dart&#39;</span><span class="p">;</span>
<span class="k">import</span><span class="w"> </span><span class="s1">&#39;package:nokken/src/features/medication_tracker/models/medication.dart&#39;</span><span class="p">;</span>
<span class="k">import</span><span class="w"> </span><span class="s1">&#39;package:nokken/src/features/bloodwork_tracker/models/bloodwork.dart&#39;</span><span class="p">;</span>
<span class="n">Future</span><span class="o">&lt;</span><span class="kt">void</span><span class="o">&gt;</span><span class="w"> </span><span class="n">generateHealthInsights</span><span class="p">(</span>
<span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">MoodEntry</span><span class="o">&gt;</span><span class="w"> </span><span class="n">moodEntries</span><span class="p">,</span>
<span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">Medication</span><span class="o">&gt;</span><span class="w"> </span><span class="n">medications</span><span class="p">,</span>
<span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="n">Bloodwork</span><span class="o">&gt;</span><span class="w"> </span><span class="n">bloodworkEntries</span><span class="p">,</span>
<span class="p">)</span><span class="w"> </span><span class="kd">async</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">analyticsService</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">HealthAnalyticsService</span><span class="p">();</span>
<span class="w"> </span><span class="kd">await</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">initialize</span><span class="p">();</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">analyticsService</span><span class="p">.</span><span class="n">isInitialized</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;Failed to initialize analytics service&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="k">return</span><span class="p">;</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">// Determine which medications the user is currently taking</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">takenMedications</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">medications</span>
<span class="w"> </span><span class="p">.</span><span class="n">where</span><span class="p">((</span><span class="n">med</span><span class="p">)</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="n">med</span><span class="p">.</span><span class="n">isActive</span><span class="p">)</span>
<span class="w"> </span><span class="p">.</span><span class="n">map</span><span class="p">((</span><span class="n">med</span><span class="p">)</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="n">med</span><span class="p">.</span><span class="n">id</span><span class="p">)</span>
<span class="w"> </span><span class="p">.</span><span class="n">toSet</span><span class="p">();</span>
<span class="w"> </span><span class="c1">// Generate comprehensive analysis</span>
<span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">analysis</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">await</span><span class="w"> </span><span class="n">analyticsService</span><span class="p">.</span><span class="n">generateComprehensiveAnalysis</span><span class="p">(</span>
<span class="w"> </span><span class="nl">moodEntries:</span><span class="w"> </span><span class="n">moodEntries</span><span class="p">,</span>
<span class="w"> </span><span class="nl">medications:</span><span class="w"> </span><span class="n">medications</span><span class="p">,</span>
<span class="w"> </span><span class="nl">takenMedications:</span><span class="w"> </span><span class="n">takenMedications</span><span class="p">,</span>
<span class="w"> </span><span class="nl">bloodworkEntries:</span><span class="w"> </span><span class="n">bloodworkEntries</span><span class="p">,</span>
<span class="w"> </span><span class="nl">timeframe:</span><span class="w"> </span><span class="s1">&#39;3 months&#39;</span><span class="p">,</span>
<span class="w"> </span><span class="p">);</span>
<span class="w"> </span><span class="c1">// Present key insights</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;=== HEALTH INSIGHTS ===&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;Analysis date: </span><span class="si">${</span><span class="n">analysis</span><span class="p">.</span><span class="n">analysisDate</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;Timeframe: </span><span class="si">${</span><span class="n">analysis</span><span class="p">.</span><span class="n">timeframe</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="c1">// Mood trend</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">== Mood Trend ==&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">analysis</span><span class="p">.</span><span class="n">moodTrend</span><span class="p">.</span><span class="n">description</span><span class="p">);</span>
<span class="w"> </span><span class="c1">// Key correlations</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">== Key Correlations ==&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">final</span><span class="w"> </span><span class="n">correlation</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">analysis</span><span class="p">.</span><span class="n">factorCorrelations</span><span class="p">.</span><span class="n">take</span><span class="p">(</span><span class="m">3</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="n">correlation</span><span class="p">.</span><span class="n">description</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">// Anomalies</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">== Anomalies Detected ==&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">final</span><span class="w"> </span><span class="n">anomaly</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">analysis</span><span class="p">.</span><span class="n">anomalies</span><span class="p">.</span><span class="n">take</span><span class="p">(</span><span class="m">5</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">${</span><span class="n">anomaly</span><span class="p">.</span><span class="n">factorName</span><span class="si">}</span><span class="s1">: </span><span class="si">${</span><span class="n">anomaly</span><span class="p">.</span><span class="n">description</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">anomaly</span><span class="p">.</span><span class="n">date</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;Date: </span><span class="si">${</span><span class="n">anomaly</span><span class="p">.</span><span class="n">date</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">// Medication impacts</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">== Medication Impacts ==&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">final</span><span class="w"> </span><span class="n">impact</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">analysis</span><span class="p">.</span><span class="n">medicationImpacts</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">${</span><span class="n">impact</span><span class="p">.</span><span class="n">medicationName</span><span class="si">}</span><span class="s1"></span><span class="si">${</span><span class="n">impact</span><span class="p">.</span><span class="n">factorName</span><span class="si">}</span><span class="s1">: </span><span class="si">${</span><span class="n">impact</span><span class="p">.</span><span class="n">description</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="c1">// Predictions</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">== Predictions ==&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">final</span><span class="w"> </span><span class="n">prediction</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">analysis</span><span class="p">.</span><span class="n">predictions</span><span class="p">.</span><span class="n">take</span><span class="p">(</span><span class="m">3</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">print</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">${</span><span class="n">prediction</span><span class="p">.</span><span class="n">factorName</span><span class="si">}</span><span class="s1"> next week: </span><span class="si">${</span><span class="n">prediction</span><span class="p">.</span><span class="n">predictions</span><span class="p">.</span><span class="n">first</span><span class="p">.</span><span class="n">toStringAsFixed</span><span class="p">(</span><span class="m">1</span><span class="p">)</span><span class="si">}</span><span class="s1"> (confidence: </span><span class="si">${</span><span class="p">(</span><span class="n">prediction</span><span class="p">.</span><span class="n">confidence</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="m">100</span><span class="p">).</span><span class="n">toStringAsFixed</span><span class="p">(</span><span class="m">1</span><span class="p">)</span><span class="si">}</span><span class="s1">%)&#39;</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</code></pre></div>
<h2 id="performance-considerations">Performance Considerations<a class="headerlink" href="#performance-considerations" title="Permanent link">&para;</a></h2>
<p>The Health Analytics Service uses a high-performance C++ implementation for computation-intensive operations, but there are still important considerations for optimal usage:</p>
<ol>
<li>
<p><strong>Data Volume</strong>: The service performs well with typical health tracking data volumes (hundreds to thousands of data points), but very large datasets may require batching or sampling.</p>
</li>
<li>
<p><strong>Memory Management</strong>: The service handles memory allocation and deallocation for native resources, but be mindful of large data structures in Dart code.</p>
</li>
<li>
<p><strong>Initialization Cost</strong>: The first call to <code>initialize()</code> has a one-time overhead for loading the native library.</p>
</li>
<li>
<p><strong>Operation Complexity</strong>: Operations like cluster analysis and multivariate correlation have higher computational complexity.</p>
</li>
<li>
<p><strong>Platform Differences</strong>: Performance may vary across platforms. iOS and Android have different native code optimization levels.</p>
</li>
</ol>
<h2 id="troubleshooting">Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permanent link">&para;</a></h2>
<h3 id="common-issues">Common Issues<a class="headerlink" href="#common-issues" title="Permanent link">&para;</a></h3>
<h4 id="native-library-loading-failures">Native Library Loading Failures<a class="headerlink" href="#native-library-loading-failures" title="Permanent link">&para;</a></h4>
<p>If you encounter issues loading the native library:</p>
<ol>
<li>Verify the native libraries are correctly placed in platform-specific directories</li>
<li>Check that library names match expected platform conventions:</li>
</ol>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Library</th>
</tr>
</thead>
<tbody>
<tr>
<td>Android</td>
<td><code>libhealth_analytics.so</code></td>
</tr>
<tr>
<td>iOS</td>
<td>Framework or dynamic library</td>
</tr>
<tr>
<td>Linux</td>
<td><code>libhealth_analytics.so</code></td>
</tr>
</tbody>
</table>
<ol>
<li>For Android, ensure the correct ABIs are supported in your <code>build.gradle</code>:</li>
</ol>
<div class="language-text highlight"><pre><span></span><code>android {
defaultConfig {
ndk {
abiFilters &#39;armeabi-v7a&#39;, &#39;arm64-v8a&#39;, &#39;x86&#39;, &#39;x86_64&#39;
}
}
}
</code></pre></div>
<h4 id="insufficient-data-errors">Insufficient Data Errors<a class="headerlink" href="#insufficient-data-errors" title="Permanent link">&para;</a></h4>
<p>Many analysis methods require minimum data points:</p>
<ul>
<li>Basic statistics: at least 1 data point</li>
<li>Trend analysis: at least 3 data points</li>
<li>Correlation analysis: at least 3 matched pairs</li>
<li>Cycle analysis: at least 20 data points</li>
<li>Cluster analysis: at least 5 data points</li>
</ul>
<p>Always check data volumes before calling analysis methods and provide appropriate fallbacks or messages when data is insufficient.</p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.sections", "navigation.expand", "navigation.indexes", "toc.integrate", "search.highlight", "search.share", "content.code.annotate", "content.code.copy"], "search": "../../assets/javascripts/workers/search.f8cc74c7.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.c8b220af.min.js"></script>
</body>
</html>