react-native-health-connect
Version:
React native library for health connect (Android only)
382 lines (340 loc) • 11.5 kB
text/typescript
import type {
Energy,
InstantaneousRecord,
IntervalRecord,
BloodGlucose,
Power,
Pressure,
Temperature,
TimeRangeFilter,
Mass,
Length,
CyclingPedalingCadenceSample,
HeartRateSample,
Volume,
SpeedSample,
StepsCadenceSample,
PowerSample,
ExerciseSegment,
ExerciseLap,
SleepStage,
ExerciseRoute,
ZoneOffset,
} from './base.types';
export interface ActiveCaloriesBurnedRecord extends IntervalRecord {
recordType: 'ActiveCaloriesBurned';
energy: Energy;
}
export interface BasalBodyTemperatureRecord extends InstantaneousRecord {
recordType: 'BasalBodyTemperature';
temperature: Temperature;
// Use TemperatureMeasurementLocation constant
measurementLocation?: number;
}
export interface BasalMetabolicRateRecord extends InstantaneousRecord {
recordType: 'BasalMetabolicRate';
basalMetabolicRate: Power;
}
export interface BloodGlucoseRecord extends InstantaneousRecord {
recordType: 'BloodGlucose';
level: BloodGlucose;
// Use SpecimenSource constant
specimenSource: number;
// Use MealType constant
mealType: number;
// Use RelationToMeal constant
relationToMeal: number;
}
export interface BloodPressureRecord extends InstantaneousRecord {
recordType: 'BloodPressure';
systolic: Pressure;
diastolic: Pressure;
// Use BloodPressureBodyPosition constant
bodyPosition: number;
// Use BloodPressureMeasurementLocation constant
measurementLocation: number;
}
export interface BodyFatRecord extends InstantaneousRecord {
recordType: 'BodyFat';
percentage: number;
}
export interface BodyTemperatureRecord extends InstantaneousRecord {
recordType: 'BodyTemperature';
temperature: Temperature;
// Use TemperatureMeasurementLocation constant
measurementLocation?: number;
}
export interface BodyWaterMassRecord extends InstantaneousRecord {
recordType: 'BodyWaterMass';
mass: Mass;
}
export interface BoneMassRecord extends InstantaneousRecord {
recordType: 'BoneMass';
mass: Mass;
}
export interface CervicalMucusRecord extends InstantaneousRecord {
recordType: 'CervicalMucus';
// Use CervicalMucusAppearance constant
appearance?: number;
// Use CervicalMucusSensation constant
sensation?: number;
}
export interface CyclingPedalingCadenceRecord extends IntervalRecord {
recordType: 'CyclingPedalingCadence';
samples: CyclingPedalingCadenceSample[];
}
export interface ElevationGainedRecord extends IntervalRecord {
recordType: 'ElevationGained';
elevation: Length;
}
export interface ExerciseSessionRecord extends IntervalRecord {
startZoneOffset?: ZoneOffset;
endZoneOffset?: ZoneOffset;
recordType: 'ExerciseSession';
// Use ExerciseType constant
exerciseType: number;
title?: string;
notes?: string;
laps?: ExerciseLap[];
segments?: ExerciseSegment[];
exerciseRoute?: ExerciseRoute;
}
export interface FloorsClimbedRecord extends IntervalRecord {
recordType: 'FloorsClimbed';
floors: number;
}
export interface HeartRateRecord extends IntervalRecord {
recordType: 'HeartRate';
samples: HeartRateSample[];
}
export interface RestingHeartRateRecord extends InstantaneousRecord {
recordType: 'RestingHeartRate';
beatsPerMinute: number;
}
export interface StepsRecord extends IntervalRecord {
recordType: 'Steps';
count: number;
}
export interface StepsCadenceRecord extends IntervalRecord {
recordType: 'StepsCadence';
samples: StepsCadenceSample[];
}
export interface DistanceRecord extends IntervalRecord {
recordType: 'Distance';
distance: Length;
}
export interface HeightRecord extends InstantaneousRecord {
recordType: 'Height';
height: Length;
}
export interface HydrationRecord extends IntervalRecord {
recordType: 'Hydration';
volume: Volume;
}
export interface HeartRateVariabilityRmssdRecord extends InstantaneousRecord {
recordType: 'HeartRateVariabilityRmssd';
heartRateVariabilityMillis: number;
}
export interface SexualActivityRecord extends InstantaneousRecord {
recordType: 'SexualActivity';
// Use ProtectionUsed constant
protectionUsed: number;
}
export interface WeightRecord extends InstantaneousRecord {
recordType: 'Weight';
weight: Mass;
}
export interface NutritionRecord extends IntervalRecord {
recordType: 'Nutrition';
/** Biotin in [Mass] unit. Optional field. Valid range: 0-100 grams. */
biotin?: Mass;
/** Caffeine in [Mass] unit. Optional field. Valid range: 0-100 grams. */
caffeine?: Mass;
/** Calcium in [Mass] unit. Optional field. Valid range: 0-100 grams. */
calcium?: Mass;
/** Energy in [Energy] unit. Optional field. Valid range: 0-100000 kcal. */
energy?: Energy;
/** Energy from fat in [Energy] unit. Optional field. Valid range: 0-100000 kcal. */
energyFromFat?: Energy;
/** Chloride in [Mass] unit. Optional field. Valid range: 0-100 grams. */
chloride?: Mass;
/** Cholesterol in [Mass] unit. Optional field. Valid range: 0-100 grams. */
cholesterol?: Mass;
/** Chromium in [Mass] unit. Optional field. Valid range: 0-100 grams. */
chromium?: Mass;
/** Copper in [Mass] unit. Optional field. Valid range: 0-100 grams. */
copper?: Mass;
/** Dietary fiber in [Mass] unit. Optional field. Valid range: 0-100000 grams. */
dietaryFiber?: Mass;
/** Folate in [Mass] unit. Optional field. Valid range: 0-100 grams. */
folate?: Mass;
/** Folic acid in [Mass] unit. Optional field. Valid range: 0-100 grams. */
folicAcid?: Mass;
/** Iodine in [Mass] unit. Optional field. Valid range: 0-100 grams. */
iodine?: Mass;
/** Iron in [Mass] unit. Optional field. Valid range: 0-100 grams. */
iron?: Mass;
/** Magnesium in [Mass] unit. Optional field. Valid range: 0-100 grams. */
magnesium?: Mass;
/** Manganese in [Mass] unit. Optional field. Valid range: 0-100 grams. */
manganese?: Mass;
/** Molybdenum in [Mass] unit. Optional field. Valid range: 0-100 grams. */
molybdenum?: Mass;
/** Monounsaturated fat in [Mass] unit. Optional field. Valid range: 0-100000 grams. */
monounsaturatedFat?: Mass;
/** Niacin in [Mass] unit. Optional field. Valid range: 0-100 grams. */
niacin?: Mass;
/** Pantothenic acid in [Mass] unit. Optional field. Valid range: 0-100 grams. */
pantothenicAcid?: Mass;
/** Phosphorus in [Mass] unit. Optional field. Valid range: 0-100 grams. */
phosphorus?: Mass;
/** Polyunsaturated fat in [Mass] unit. Optional field. Valid range: 0-100000 grams. */
polyunsaturatedFat?: Mass;
/** Potassium in [Mass] unit. Optional field. Valid range: 0-100 grams. */
potassium?: Mass;
/** Protein in [Mass] unit. Optional field. Valid range: 0-100000 grams. */
protein?: Mass;
/** Riboflavin in [Mass] unit. Optional field. Valid range: 0-100 grams. */
riboflavin?: Mass;
/** Saturated fat in [Mass] unit. Optional field. Valid range: 0-100000 grams. */
saturatedFat?: Mass;
/** Selenium in [Mass] unit. Optional field. Valid range: 0-100 grams. */
selenium?: Mass;
/** Sodium in [Mass] unit. Optional field. Valid range: 0-100 grams. */
sodium?: Mass;
/** Sugar in [Mass] unit. Optional field. Valid range: 0-100000 grams. */
sugar?: Mass;
/** Thiamin in [Mass] unit. Optional field. Valid range: 0-100 grams. */
thiamin?: Mass;
/** Total carbohydrate in [Mass] unit. Optional field. Valid range: 0-100000 grams. */
totalCarbohydrate?: Mass;
/** Total fat in [Mass] unit. Optional field. Valid range: 0-100000 grams. */
totalFat?: Mass;
/** Trans fat in [Mass] unit. Optional field. Valid range: 0-100000 grams. */
transFat?: Mass;
/** Unsaturated fat in [Mass] unit. Optional field. Valid range: 0-100000 grams. */
unsaturatedFat?: Mass;
/** Vitamin A in [Mass] unit. Optional field. Valid range: 0-100 grams. */
vitaminA?: Mass;
/** Vitamin B12 in [Mass] unit. Optional field. Valid range: 0-100 grams. */
vitaminB12?: Mass;
/** Vitamin B6 in [Mass] unit. Optional field. Valid range: 0-100 grams. */
vitaminB6?: Mass;
/** Vitamin C in [Mass] unit. Optional field. Valid range: 0-100 grams. */
vitaminC?: Mass;
/** Vitamin D in [Mass] unit. Optional field. Valid range: 0-100 grams. */
vitaminD?: Mass;
/** Vitamin E in [Mass] unit. Optional field. Valid range: 0-100 grams. */
vitaminE?: Mass;
/** Vitamin K in [Mass] unit. Optional field. Valid range: 0-100 grams. */
vitaminK?: Mass;
/** Zinc in [Mass] unit. Optional field. Valid range: 0-100 grams. */
zinc?: Mass;
/** Name for food or drink, provided by the user. Optional field. */
name?: string;
/** Check MealType constant */
mealType: number;
}
export interface LeanBodyMassRecord extends InstantaneousRecord {
recordType: 'LeanBodyMass';
mass: Mass;
}
export interface IntermenstrualBleedingRecord extends InstantaneousRecord {
recordType: 'IntermenstrualBleeding';
}
export interface SpeedRecord extends IntervalRecord {
recordType: 'Speed';
samples: SpeedSample[];
}
export interface MenstruationFlowRecord extends InstantaneousRecord {
recordType: 'MenstruationFlow';
// Use MenstruationFlow constant
flow?: number;
}
export interface MenstruationPeriodRecord extends InstantaneousRecord {
recordType: 'MenstruationPeriod';
}
export interface SleepSessionRecord extends IntervalRecord {
recordType: 'SleepSession';
stages?: SleepStage[];
title?: string;
notes?: string;
}
export interface RespiratoryRateRecord extends InstantaneousRecord {
recordType: 'RespiratoryRate';
rate: number;
}
export interface WheelchairPushesRecord extends IntervalRecord {
recordType: 'WheelchairPushes';
count: number;
}
export interface Vo2MaxRecord extends InstantaneousRecord {
recordType: 'Vo2Max';
vo2MillilitersPerMinuteKilogram: number;
// Use Vo2MaxMeasurementMethod constant
measurementMethod: number;
}
export interface OvulationTestRecord extends InstantaneousRecord {
recordType: 'OvulationTest';
// Use OvulationTestResult constant
result: number;
}
export interface TotalCaloriesBurnedRecord extends IntervalRecord {
recordType: 'TotalCaloriesBurned';
energy: Energy;
}
export interface OxygenSaturationRecord extends InstantaneousRecord {
recordType: 'OxygenSaturation';
percentage: number;
}
export interface PowerRecord extends IntervalRecord {
recordType: 'Power';
samples: PowerSample[];
}
export type HealthConnectRecord =
| ActiveCaloriesBurnedRecord
| BasalBodyTemperatureRecord
| BasalMetabolicRateRecord
| BloodGlucoseRecord
| BloodPressureRecord
| BodyFatRecord
| BodyTemperatureRecord
| BodyWaterMassRecord
| BoneMassRecord
| CervicalMucusRecord
| CyclingPedalingCadenceRecord
| ElevationGainedRecord
| ExerciseSessionRecord
| FloorsClimbedRecord
| HeartRateRecord
| RestingHeartRateRecord
| StepsRecord
| StepsCadenceRecord
| DistanceRecord
| HeightRecord
| HydrationRecord
| HeartRateVariabilityRmssdRecord
| SexualActivityRecord
| WeightRecord
| NutritionRecord
| LeanBodyMassRecord
| IntermenstrualBleedingRecord
| SpeedRecord
| MenstruationFlowRecord
| MenstruationPeriodRecord
| SleepSessionRecord
| RespiratoryRateRecord
| WheelchairPushesRecord
| Vo2MaxRecord
| OvulationTestRecord
| TotalCaloriesBurnedRecord
| OxygenSaturationRecord
| PowerRecord;
export type RecordType = HealthConnectRecord['recordType'];
export interface ReadRecordsOptions {
timeRangeFilter: TimeRangeFilter;
dataOriginFilter?: string[];
ascendingOrder?: boolean;
pageSize?: number;
pageToken?: string;
}