|
| 1 | +import HealthKit |
| 2 | + |
| 3 | +/// Constants used across the Health plugin |
| 4 | +enum HealthConstants { |
| 5 | + // Recording methods |
| 6 | + enum RecordingMethod: Int { |
| 7 | + case unknown = 0 // RECORDING_METHOD_UNKNOWN (not supported on iOS) |
| 8 | + case active = 1 // RECORDING_METHOD_ACTIVELY_RECORDED (not supported on iOS) |
| 9 | + case automatic = 2 // RECORDING_METHOD_AUTOMATICALLY_RECORDED |
| 10 | + case manual = 3 // RECORDING_METHOD_MANUAL_ENTRY |
| 11 | + } |
| 12 | + |
| 13 | + // Health Data Type Keys |
| 14 | + static let ACTIVE_ENERGY_BURNED = "ACTIVE_ENERGY_BURNED" |
| 15 | + static let ATRIAL_FIBRILLATION_BURDEN = "ATRIAL_FIBRILLATION_BURDEN" |
| 16 | + static let AUDIOGRAM = "AUDIOGRAM" |
| 17 | + static let BASAL_ENERGY_BURNED = "BASAL_ENERGY_BURNED" |
| 18 | + static let BLOOD_GLUCOSE = "BLOOD_GLUCOSE" |
| 19 | + static let BLOOD_OXYGEN = "BLOOD_OXYGEN" |
| 20 | + static let BLOOD_PRESSURE_DIASTOLIC = "BLOOD_PRESSURE_DIASTOLIC" |
| 21 | + static let BLOOD_PRESSURE_SYSTOLIC = "BLOOD_PRESSURE_SYSTOLIC" |
| 22 | + static let BODY_FAT_PERCENTAGE = "BODY_FAT_PERCENTAGE" |
| 23 | + static let LEAN_BODY_MASS = "LEAN_BODY_MASS" |
| 24 | + static let BODY_MASS_INDEX = "BODY_MASS_INDEX" |
| 25 | + static let BODY_TEMPERATURE = "BODY_TEMPERATURE" |
| 26 | + |
| 27 | + // Nutrition |
| 28 | + static let DIETARY_CARBS_CONSUMED = "DIETARY_CARBS_CONSUMED" |
| 29 | + static let DIETARY_ENERGY_CONSUMED = "DIETARY_ENERGY_CONSUMED" |
| 30 | + static let DIETARY_FATS_CONSUMED = "DIETARY_FATS_CONSUMED" |
| 31 | + static let DIETARY_PROTEIN_CONSUMED = "DIETARY_PROTEIN_CONSUMED" |
| 32 | + static let DIETARY_CAFFEINE = "DIETARY_CAFFEINE" |
| 33 | + static let DIETARY_FIBER = "DIETARY_FIBER" |
| 34 | + static let DIETARY_SUGAR = "DIETARY_SUGAR" |
| 35 | + static let DIETARY_FAT_MONOUNSATURATED = "DIETARY_FAT_MONOUNSATURATED" |
| 36 | + static let DIETARY_FAT_POLYUNSATURATED = "DIETARY_FAT_POLYUNSATURATED" |
| 37 | + static let DIETARY_FAT_SATURATED = "DIETARY_FAT_SATURATED" |
| 38 | + static let DIETARY_CHOLESTEROL = "DIETARY_CHOLESTEROL" |
| 39 | + static let DIETARY_VITAMIN_A = "DIETARY_VITAMIN_A" |
| 40 | + static let DIETARY_THIAMIN = "DIETARY_THIAMIN" |
| 41 | + static let DIETARY_RIBOFLAVIN = "DIETARY_RIBOFLAVIN" |
| 42 | + static let DIETARY_NIACIN = "DIETARY_NIACIN" |
| 43 | + static let DIETARY_PANTOTHENIC_ACID = "DIETARY_PANTOTHENIC_ACID" |
| 44 | + static let DIETARY_VITAMIN_B6 = "DIETARY_VITAMIN_B6" |
| 45 | + static let DIETARY_BIOTIN = "DIETARY_BIOTIN" |
| 46 | + static let DIETARY_VITAMIN_B12 = "DIETARY_VITAMIN_B12" |
| 47 | + static let DIETARY_VITAMIN_C = "DIETARY_VITAMIN_C" |
| 48 | + static let DIETARY_VITAMIN_D = "DIETARY_VITAMIN_D" |
| 49 | + static let DIETARY_VITAMIN_E = "DIETARY_VITAMIN_E" |
| 50 | + static let DIETARY_VITAMIN_K = "DIETARY_VITAMIN_K" |
| 51 | + static let DIETARY_FOLATE = "DIETARY_FOLATE" |
| 52 | + static let DIETARY_CALCIUM = "DIETARY_CALCIUM" |
| 53 | + static let DIETARY_CHLORIDE = "DIETARY_CHLORIDE" |
| 54 | + static let DIETARY_IRON = "DIETARY_IRON" |
| 55 | + static let DIETARY_MAGNESIUM = "DIETARY_MAGNESIUM" |
| 56 | + static let DIETARY_PHOSPHORUS = "DIETARY_PHOSPHORUS" |
| 57 | + static let DIETARY_POTASSIUM = "DIETARY_POTASSIUM" |
| 58 | + static let DIETARY_SODIUM = "DIETARY_SODIUM" |
| 59 | + static let DIETARY_ZINC = "DIETARY_ZINC" |
| 60 | + static let DIETARY_WATER = "WATER" |
| 61 | + static let DIETARY_CHROMIUM = "DIETARY_CHROMIUM" |
| 62 | + static let DIETARY_COPPER = "DIETARY_COPPER" |
| 63 | + static let DIETARY_IODINE = "DIETARY_IODINE" |
| 64 | + static let DIETARY_MANGANESE = "DIETARY_MANGANESE" |
| 65 | + static let DIETARY_MOLYBDENUM = "DIETARY_MOLYBDENUM" |
| 66 | + static let DIETARY_SELENIUM = "DIETARY_SELENIUM" |
| 67 | + |
| 68 | + static let NUTRITION_KEYS: [String: HKQuantityTypeIdentifier] = [ |
| 69 | + "calories": .dietaryEnergyConsumed, |
| 70 | + "protein": .dietaryProtein, |
| 71 | + "carbs": .dietaryCarbohydrates, |
| 72 | + "fat": .dietaryFatTotal, |
| 73 | + "caffeine": .dietaryCaffeine, |
| 74 | + "vitamin_a": .dietaryVitaminA, |
| 75 | + "b1_thiamine": .dietaryThiamin, |
| 76 | + "b2_riboflavin": .dietaryRiboflavin, |
| 77 | + "b3_niacin" : .dietaryNiacin, |
| 78 | + "b5_pantothenic_acid" : .dietaryPantothenicAcid, |
| 79 | + "b6_pyridoxine" : .dietaryVitaminB6, |
| 80 | + "b7_biotin" : .dietaryBiotin, |
| 81 | + "b9_folate" : .dietaryFolate, |
| 82 | + "b12_cobalamin": .dietaryVitaminB12, |
| 83 | + "vitamin_c": .dietaryVitaminC, |
| 84 | + "vitamin_d": .dietaryVitaminD, |
| 85 | + "vitamin_e": .dietaryVitaminE, |
| 86 | + "vitamin_k": .dietaryVitaminK, |
| 87 | + "calcium": .dietaryCalcium, |
| 88 | + "chloride": .dietaryChloride, |
| 89 | + "cholesterol": .dietaryCholesterol, |
| 90 | + "chromium": .dietaryChromium, |
| 91 | + "copper": .dietaryCopper, |
| 92 | + "fat_unsaturated": .dietaryFatMonounsaturated, |
| 93 | + "fat_monounsaturated": .dietaryFatMonounsaturated, |
| 94 | + "fat_polyunsaturated": .dietaryFatPolyunsaturated, |
| 95 | + "fat_saturated": .dietaryFatSaturated, |
| 96 | + // "fat_trans_monoenoic": .dietaryFatTransMonoenoic, |
| 97 | + "fiber": .dietaryFiber, |
| 98 | + "iodine": .dietaryIodine, |
| 99 | + "iron": .dietaryIron, |
| 100 | + "magnesium": .dietaryMagnesium, |
| 101 | + "manganese": .dietaryManganese, |
| 102 | + "molybdenum": .dietaryMolybdenum, |
| 103 | + "phosphorus": .dietaryPhosphorus, |
| 104 | + "potassium": .dietaryPotassium, |
| 105 | + "selenium": .dietarySelenium, |
| 106 | + "sodium": .dietarySodium, |
| 107 | + "sugar": .dietarySugar, |
| 108 | + "water": .dietaryWater, |
| 109 | + "zinc": .dietaryZinc, |
| 110 | + ] |
| 111 | + |
| 112 | + static let ELECTRODERMAL_ACTIVITY = "ELECTRODERMAL_ACTIVITY" |
| 113 | + static let FORCED_EXPIRATORY_VOLUME = "FORCED_EXPIRATORY_VOLUME" |
| 114 | + static let HEART_RATE = "HEART_RATE" |
| 115 | + static let HEART_RATE_VARIABILITY_SDNN = "HEART_RATE_VARIABILITY_SDNN" |
| 116 | + static let HEIGHT = "HEIGHT" |
| 117 | + static let INSULIN_DELIVERY = "INSULIN_DELIVERY" |
| 118 | + static let HIGH_HEART_RATE_EVENT = "HIGH_HEART_RATE_EVENT" |
| 119 | + static let IRREGULAR_HEART_RATE_EVENT = "IRREGULAR_HEART_RATE_EVENT" |
| 120 | + static let LOW_HEART_RATE_EVENT = "LOW_HEART_RATE_EVENT" |
| 121 | + static let RESTING_HEART_RATE = "RESTING_HEART_RATE" |
| 122 | + static let RESPIRATORY_RATE = "RESPIRATORY_RATE" |
| 123 | + static let PERIPHERAL_PERFUSION_INDEX = "PERIPHERAL_PERFUSION_INDEX" |
| 124 | + static let STEPS = "STEPS" |
| 125 | + static let WAIST_CIRCUMFERENCE = "WAIST_CIRCUMFERENCE" |
| 126 | + static let WALKING_HEART_RATE = "WALKING_HEART_RATE" |
| 127 | + static let WEIGHT = "WEIGHT" |
| 128 | + static let DISTANCE_WALKING_RUNNING = "DISTANCE_WALKING_RUNNING" |
| 129 | + static let DISTANCE_SWIMMING = "DISTANCE_SWIMMING" |
| 130 | + static let DISTANCE_CYCLING = "DISTANCE_CYCLING" |
| 131 | + static let FLIGHTS_CLIMBED = "FLIGHTS_CLIMBED" |
| 132 | + static let MINDFULNESS = "MINDFULNESS" |
| 133 | + static let SLEEP_ASLEEP = "SLEEP_ASLEEP" |
| 134 | + static let SLEEP_AWAKE = "SLEEP_AWAKE" |
| 135 | + static let SLEEP_DEEP = "SLEEP_DEEP" |
| 136 | + static let SLEEP_IN_BED = "SLEEP_IN_BED" |
| 137 | + static let SLEEP_LIGHT = "SLEEP_LIGHT" |
| 138 | + static let SLEEP_REM = "SLEEP_REM" |
| 139 | + |
| 140 | + static let EXERCISE_TIME = "EXERCISE_TIME" |
| 141 | + static let WORKOUT = "WORKOUT" |
| 142 | + static let HEADACHE_UNSPECIFIED = "HEADACHE_UNSPECIFIED" |
| 143 | + static let HEADACHE_NOT_PRESENT = "HEADACHE_NOT_PRESENT" |
| 144 | + static let HEADACHE_MILD = "HEADACHE_MILD" |
| 145 | + static let HEADACHE_MODERATE = "HEADACHE_MODERATE" |
| 146 | + static let HEADACHE_SEVERE = "HEADACHE_SEVERE" |
| 147 | + static let ELECTROCARDIOGRAM = "ELECTROCARDIOGRAM" |
| 148 | + static let NUTRITION = "NUTRITION" |
| 149 | + static let BIRTH_DATE = "BIRTH_DATE" |
| 150 | + static let GENDER = "GENDER" |
| 151 | + static let BLOOD_TYPE = "BLOOD_TYPE" |
| 152 | + static let MENSTRUATION_FLOW = "MENSTRUATION_FLOW" |
| 153 | + static let WATER_TEMPERATURE = "WATER_TEMPERATURE" |
| 154 | + static let UNDERWATER_DEPTH = "UNDERWATER_DEPTH" |
| 155 | + static let UV_INDEX = "UV_INDEX" |
| 156 | + |
| 157 | + // Health Unit types |
| 158 | + static let GRAM = "GRAM" |
| 159 | + static let KILOGRAM = "KILOGRAM" |
| 160 | + static let OUNCE = "OUNCE" |
| 161 | + static let POUND = "POUND" |
| 162 | + static let STONE = "STONE" |
| 163 | + static let METER = "METER" |
| 164 | + static let INCH = "INCH" |
| 165 | + static let FOOT = "FOOT" |
| 166 | + static let YARD = "YARD" |
| 167 | + static let MILE = "MILE" |
| 168 | + static let LITER = "LITER" |
| 169 | + static let MILLILITER = "MILLILITER" |
| 170 | + static let FLUID_OUNCE_US = "FLUID_OUNCE_US" |
| 171 | + static let FLUID_OUNCE_IMPERIAL = "FLUID_OUNCE_IMPERIAL" |
| 172 | + static let CUP_US = "CUP_US" |
| 173 | + static let CUP_IMPERIAL = "CUP_IMPERIAL" |
| 174 | + static let PINT_US = "PINT_US" |
| 175 | + static let PINT_IMPERIAL = "PINT_IMPERIAL" |
| 176 | + static let PASCAL = "PASCAL" |
| 177 | + static let MILLIMETER_OF_MERCURY = "MILLIMETER_OF_MERCURY" |
| 178 | + static let INCHES_OF_MERCURY = "INCHES_OF_MERCURY" |
| 179 | + static let CENTIMETER_OF_WATER = "CENTIMETER_OF_WATER" |
| 180 | + static let ATMOSPHERE = "ATMOSPHERE" |
| 181 | + static let DECIBEL_A_WEIGHTED_SOUND_PRESSURE_LEVEL = "DECIBEL_A_WEIGHTED_SOUND_PRESSURE_LEVEL" |
| 182 | + static let SECOND = "SECOND" |
| 183 | + static let MILLISECOND = "MILLISECOND" |
| 184 | + static let MINUTE = "MINUTE" |
| 185 | + static let HOUR = "HOUR" |
| 186 | + static let DAY = "DAY" |
| 187 | + static let JOULE = "JOULE" |
| 188 | + static let KILOCALORIE = "KILOCALORIE" |
| 189 | + static let LARGE_CALORIE = "LARGE_CALORIE" |
| 190 | + static let SMALL_CALORIE = "SMALL_CALORIE" |
| 191 | + static let DEGREE_CELSIUS = "DEGREE_CELSIUS" |
| 192 | + static let DEGREE_FAHRENHEIT = "DEGREE_FAHRENHEIT" |
| 193 | + static let KELVIN = "KELVIN" |
| 194 | + static let DECIBEL_HEARING_LEVEL = "DECIBEL_HEARING_LEVEL" |
| 195 | + static let HERTZ = "HERTZ" |
| 196 | + static let SIEMEN = "SIEMEN" |
| 197 | + static let VOLT = "VOLT" |
| 198 | + static let INTERNATIONAL_UNIT = "INTERNATIONAL_UNIT" |
| 199 | + static let COUNT = "COUNT" |
| 200 | + static let PERCENT = "PERCENT" |
| 201 | + static let BEATS_PER_MINUTE = "BEATS_PER_MINUTE" |
| 202 | + static let RESPIRATIONS_PER_MINUTE = "RESPIRATIONS_PER_MINUTE" |
| 203 | + static let MILLIGRAM_PER_DECILITER = "MILLIGRAM_PER_DECILITER" |
| 204 | + static let UNKNOWN_UNIT = "UNKNOWN_UNIT" |
| 205 | + static let NO_UNIT = "NO_UNIT" |
| 206 | +} |
| 207 | + |
| 208 | +/// Error structure used throughout the plugin |
| 209 | +struct PluginError: Error { |
| 210 | + let message: String |
| 211 | +} |
0 commit comments