HealthDataPoint

data class HealthDataPoint(val id: String = UUID.randomUUID().toString(), val timestamp: Long = System.currentTimeMillis(), val heartRate: Int? = null, val heartRateQuality: Int? = null, val skinTemperature: Float? = null, val ambientTemperature: Float? = null, val temperatureDelta: Float? = null, val humidity: Float? = null, val stepCount: Long = 0, val stepRate: Float? = null, val activityLevel: ActivityLevel = ActivityLevel.UNKNOWN, val accelerometerMagnitude: Float? = null, val activityIntensity: Int = 0, val accumulatedActivity: Float = 0.0f, val isOnBody: Boolean = true, val batteryLevel: Int? = null, val heatIndex: Float? = null, val physiologicalStrainIndex: Float? = null, val workLoad: Float = 0.0f, val riskLevel: HeatStressRiskLevel = HeatStressRiskLevel.UNKNOWN)

Representa un punto de datos de salud en el tiempo. Optimizado para alimentar modelos de ML para la detección de estrés térmico con actividad física.

Constructors

Link copied to clipboard
constructor(id: String = UUID.randomUUID().toString(), timestamp: Long = System.currentTimeMillis(), heartRate: Int? = null, heartRateQuality: Int? = null, skinTemperature: Float? = null, ambientTemperature: Float? = null, temperatureDelta: Float? = null, humidity: Float? = null, stepCount: Long = 0, stepRate: Float? = null, activityLevel: ActivityLevel = ActivityLevel.UNKNOWN, accelerometerMagnitude: Float? = null, activityIntensity: Int = 0, accumulatedActivity: Float = 0.0f, isOnBody: Boolean = true, batteryLevel: Int? = null, heatIndex: Float? = null, physiologicalStrainIndex: Float? = null, workLoad: Float = 0.0f, riskLevel: HeatStressRiskLevel = HeatStressRiskLevel.UNKNOWN)

Properties

Link copied to clipboard

Magnitud del vector del acelerómetro.

Link copied to clipboard

Actividad acumulada con decaimiento.

Link copied to clipboard

Intensidad de la actividad basada en el acelerómetro (0-4).

Link copied to clipboard

Nivel categorizado de actividad física.

Link copied to clipboard

Temperatura ambiente en Celsius.

Link copied to clipboard
val batteryLevel: Int? = null

Nivel de batería del dispositivo sensor (porcentaje).

Link copied to clipboard
val heartRate: Int? = null

Frecuencia cardíaca en latidos por minuto.

Link copied to clipboard
val heartRateQuality: Int? = null

Calidad de la señal de frecuencia cardíaca (específica del dispositivo).

Link copied to clipboard
val heatIndex: Float? = null

Índice de calor calculado.

Link copied to clipboard
val humidity: Float? = null

Humedad relativa, utilizada en los cálculos del índice de calor.

Link copied to clipboard
val id: String

Identificador único para el punto de datos.

Link copied to clipboard
val isOnBody: Boolean = true

Indica si el sensor está actualmente usado en el cuerpo.

Link copied to clipboard

Índice de Estrés Fisiológico, mejorado con actividad.

Link copied to clipboard

Nivel de riesgo de estrés térmico evaluado.

Link copied to clipboard
val skinTemperature: Float? = null

Temperatura de la piel en Celsius.

Link copied to clipboard
val stepCount: Long = 0

Conteo total de pasos en este punto.

Link copied to clipboard
val stepRate: Float? = null

Pasos por minuto.

Link copied to clipboard
val temperatureDelta: Float? = null

Diferencia entre la temperatura de la piel y la ambiente.

Link copied to clipboard

Momento de la lectura en milisegundos desde la época.

Link copied to clipboard
val workLoad: Float = 0.0f

Carga de trabajo calculada basada en la actividad acumulada.

Functions

Link copied to clipboard
private fun applyHeatIndexAdjustments(tempF: Float, humidity: Float, baseHI: Double): Double

Aplica ajustes al Heat Index para condiciones extremas según las especificaciones de NOAA.

Link copied to clipboard
private fun assessRiskLevel(psi: Float?, workLoad: Float): HeatStressRiskLevel

Evalúa el nivel de riesgo de estrés térmico basándose en el Índice de Tensión Fisiológica (PSI) y la carga de trabajo actual.

Link copied to clipboard

Calcula características derivadas importantes para el modelo de Machine Learning y la evaluación de riesgos. Esta función calcula:

Link copied to clipboard
private fun calculateHeatIndex(): Float?

Calcula el índice de calor (Heat Index) si la temperatura ambiente es igual o superior a 27°C. Este umbral se basa en el punto donde el índice de calor comienza a ser significativo.

Link copied to clipboard
private fun calculatePSI(workLoad: Float): Float?

Calcula el Índice de Tensión Fisiológica (PSI) mejorado con carga de trabajo. La fórmula es: PSI = 5 * (HRt - HR0) / (HR180 - HR0) + 5 * (Tct - Tc0) / (39.5 - Tc0) + WorkLoad * 2

Link copied to clipboard
private fun calculateRothfuszHeatIndex(tempF: Float, humidity: Float): Double

Calcula el Índice de Calor utilizando la ecuación de regresión de Rothfusz.

Link copied to clipboard
private fun calculateWorkLoad(): Float

Calcula la carga de trabajo basada en una combinación ponderada de:

Link copied to clipboard

Valida si el punto de datos tiene suficiente información para análisis

Link copied to clipboard

Convierte a un vector de características para el modelo de ML. Orden: heartRate, skinTemp, ambientTemp, tempDelta, stepRate, activityIntensity, accumulatedActivity, workLoad, heatIndex, psi, humidity Si un valor es nulo, se establece por defecto a 0f.