@@ -21,20 +21,34 @@ class HealthDataConverter {
2121 * @return List<Map<String, Any?>> List of converted records (some records may split into multiple entries)
2222 * @throws IllegalArgumentException If the record type is not supported
2323 */
24- fun convertRecord (record : Any , dataType : String ): List <Map <String , Any ?>> {
24+ fun convertRecord (record : Any , dataType : String , dataUnit : String? = null ): List <Map <String , Any ?>> {
2525 val metadata = (record as Record ).metadata
2626
2727 return when (record) {
2828 // Single-value instant records
29- is WeightRecord -> listOf (createInstantRecord(metadata, record.time, record.weight.inKilograms))
30- is HeightRecord -> listOf (createInstantRecord(metadata, record.time, record.height.inMeters))
29+ is WeightRecord -> listOf (createInstantRecord(metadata, record.time, when (dataUnit) {
30+ " POUND" -> record.weight.inPounds
31+ else -> record.weight.inKilograms
32+ }))
33+ is HeightRecord -> listOf (createInstantRecord(metadata, record.time, when (dataUnit) {
34+ " CENTIMETER" -> (record.height.inMeters * 100 )
35+ " INCH" -> record.height.inInches
36+ else -> record.height.inMeters
37+ }))
3138 is BodyFatRecord -> listOf (createInstantRecord(metadata, record.time, record.percentage.value))
3239 is LeanBodyMassRecord -> listOf (createInstantRecord(metadata, record.time, record.mass.inKilograms))
3340 is HeartRateVariabilityRmssdRecord -> listOf (createInstantRecord(metadata, record.time, record.heartRateVariabilityMillis))
34- is BodyTemperatureRecord -> listOf (createInstantRecord(metadata, record.time, record.temperature.inCelsius))
41+ is BodyTemperatureRecord -> listOf (createInstantRecord(metadata, record.time, when (dataUnit) {
42+ " DEGREE_FAHRENHEIT" -> record.temperature.inFahrenheit
43+ " KELVIN" -> record.temperature.inCelsius + 273.15
44+ else -> record.temperature.inCelsius
45+ }))
3546 is BodyWaterMassRecord -> listOf (createInstantRecord(metadata, record.time, record.mass.inKilograms))
3647 is OxygenSaturationRecord -> listOf (createInstantRecord(metadata, record.time, record.percentage.value))
37- is BloodGlucoseRecord -> listOf (createInstantRecord(metadata, record.time, record.level.inMilligramsPerDeciliter))
48+ is BloodGlucoseRecord -> listOf (createInstantRecord(metadata, record.time, when (dataUnit) {
49+ " MILLIMOLES_PER_LITER" -> record.level.inMillimolesPerLiter
50+ else -> record.level.inMilligramsPerDeciliter
51+ }))
3852 is BasalMetabolicRateRecord -> listOf (createInstantRecord(metadata, record.time, record.basalMetabolicRate.inKilocaloriesPerDay))
3953 is RestingHeartRateRecord -> listOf (createInstantRecord(metadata, record.time, record.beatsPerMinute))
4054 is RespiratoryRateRecord -> listOf (createInstantRecord(metadata, record.time, record.rate))
@@ -236,7 +250,7 @@ class HealthDataConverter {
236250 )
237251 )
238252 }
239-
253+
240254 companion object {
241255 private const val BLOOD_PRESSURE_DIASTOLIC = " BLOOD_PRESSURE_DIASTOLIC"
242256 private const val MEAL_UNKNOWN = " UNKNOWN"
0 commit comments