HRVCalculator

Calculadora de Variabilidad de la Frecuencia Cardíaca (HRV) para análisis en tiempo real.

Esta clase implementa algoritmos estándar para el cálculo de métricas de HRV basadas en intervalos RR (IBI - Inter-Beat Intervals) obtenidos de dispositivos de monitoreo cardíaco. La HRV es un indicador clave del estado del sistema nervioso autónomo y se utiliza para evaluar estrés, recuperación y estado de salud general.

Fundamentos Científicos

La Variabilidad de la Frecuencia Cardíaca (HRV) mide las variaciones en tiempo entre latidos cardíacos consecutivos. Un corazón sano no late como un metrónomo, sino que presenta variaciones naturales controladas por el sistema nervioso autónomo (SNA).

Métricas Implementadas

  • RMSSD: Raíz cuadrada de la media de diferencias cuadradas entre intervalos NN consecutivos

  • SDNN: Desviación estándar de todos los intervalos NN

  • pNN50: Porcentaje de intervalos NN que difieren más de 50ms del anterior

  • HRV Score: Puntuación normalizada (0-100) basada en edad y condición física

Interpretación Clínica

  • Alta HRV: Indica buena adaptabilidad del SNA, mejor estado de salud

  • Baja HRV: Puede indicar estrés, fatiga, sobreentrenamiento o problemas de salud

  • Tendencias: Más importante que valores absolutos para monitoreo personal

Uso Típico

val calculator = HRVCalculator()
val ibiList = listOf(800, 820, 790, 810, 805) // ms
val analysis = calculator.processIBIData(ibiList)

analysis?.let { hrv ->
println("RMSSD: ${hrv.rmssd}ms")
println("Nivel de estrés: ${hrv.stressLevel}")
println("Recomendaciones: ${calculator.getHRVRecommendations(hrv)}")
}

See also

Constructors

Link copied to clipboard
constructor()

Types

Link copied to clipboard
object Companion
Link copied to clipboard

Enumera los niveles de calidad de datos para análisis de HRV.

Link copied to clipboard
data class HRVAnalysis(val timestamp: Long = System.currentTimeMillis(), val rmssd: Double, val sdnn: Double, val pnn50: Double, val meanRR: Double, val meanHR: Double, val hrvScore: Int, val stressLevel: HRVCalculator.StressLevel, val recoveryState: HRVCalculator.RecoveryState, val trend: HRVCalculator.HRVTrend, val dataQuality: HRVCalculator.DataQuality, val sampleCount: Int, val measurementDuration: Long)

Clase de datos que encapsula el resultado completo del análisis de HRV.

Link copied to clipboard

Enumera las posibles tendencias de HRV basadas en análisis histórico.

Link copied to clipboard

Enumera los posibles estados de recuperación basados en HRV.

Link copied to clipboard

Enumera los posibles niveles de estrés basados en análisis de HRV.

Properties

Link copied to clipboard
private val ibiBuffer: ArrayDeque<Int>

Buffer circular para almacenar intervalos RR (IBI) en tiempo real.

Link copied to clipboard

Timestamp del último cálculo de HRV para optimización de rendimiento.

Functions

Link copied to clipboard
private fun assessDataQuality(ibiArray: IntArray, nnIntervals: DoubleArray): HRVCalculator.DataQuality

Evalúa la calidad de los datos utilizados para el análisis de HRV.

Link copied to clipboard

Evalúa el estado de recuperación basado en métricas de HRV.

Link copied to clipboard

Evalúa el nivel de estrés basado en métricas de HRV.

Link copied to clipboard

Calcula todas las métricas de HRV basadas en el buffer actual de intervalos RR.

Link copied to clipboard
private fun calculateHRVScore(rmssd: Double, meanHR: Double): Int

Calcula una puntuación de HRV normalizada (0-100).

Link copied to clipboard
private fun calculateNNIntervals(ibiArray: IntArray): DoubleArray

Calcula las diferencias consecutivas entre intervalos RR.

Link copied to clipboard
private fun calculatePNN50(ibiArray: DoubleArray): Double

Calcula pNN50 (percentage of NN intervals that differ by more than 50ms).

Link copied to clipboard
private fun calculateRMSSD(ibiArray: DoubleArray): Double

Calcula RMSSD (Root Mean Square of Successive Differences).

Link copied to clipboard
private fun calculateSDNN(ibiArray: IntArray): Double

Calcula SDNN (Standard Deviation of NN intervals).

Link copied to clipboard

Calcula la tendencia de HRV basada en datos históricos.

Link copied to clipboard

Limpia el buffer de intervalos RR almacenados.

Link copied to clipboard
private fun filterOutliers(ibiList: List<Int>): List<Int>

Filtra valores atípicos (outliers) de la lista de intervalos RR.

Link copied to clipboard

Obtiene estadísticas del buffer actual de intervalos RR.

Link copied to clipboard

Genera recomendaciones personalizadas basadas en el análisis de HRV.

Link copied to clipboard

Verifica si hay suficientes datos en el buffer para calcular HRV.

Link copied to clipboard

Procesa una lista de intervalos RR (IBI) y calcula métricas de HRV.