Ejemplo n.º 1
0
        private static HKQuantitySample CreateInsulinHKSample(
            int measureId,
            DateTime date,
            int version,
            InsulinType type,
            int value
            )
        {
            var metadata = new NSDictionary(
                MetadataKey.DiabettoOrigin,
                NSObject.FromObject(true),
                HKMetadataKey.InsulinDeliveryReason,
                NSObject.FromObject(
                    type == InsulinType.Basal
                        ? HKInsulinDeliveryReason.Basal
                        : HKInsulinDeliveryReason.Bolus),
                HKMetadataKey.TimeZone,
                NSObject.FromObject("UTC"),
                HKMetadataKey.ExternalUuid,
                NSObject.FromObject(MetadataKey.GetExternalUUID(measureId)),
                HKMetadataKey.WasUserEntered,
                NSObject.FromObject(true),
                HKMetadataKey.SyncVersion,
                NSObject.FromObject(version),
                HKMetadataKey.SyncIdentifier,
                NSObject.FromObject(MetadataKey.GetInsulinIdentifier(measureId, type)));

            return(HKQuantitySample.FromType(
                       HKQuantityType.Create(HKQuantityTypeIdentifier.InsulinDelivery),
                       HKQuantity.FromQuantity(HKUnit.InternationalUnit, value),
                       (NSDate)date,
                       (NSDate)date,
                       metadata));
        }
Ejemplo n.º 2
0
        private static HKQuantitySample CreateBloodGlucoseHKSample(
            int measureId,
            DateTime date,
            int version,
            int level
            )
        {
            var metadata = new NSDictionary(
                MetadataKey.DiabettoOrigin,
                NSObject.FromObject(true),
                HKMetadataKey.TimeZone,
                NSObject.FromObject("UTC"),
                HKMetadataKey.SyncVersion,
                NSObject.FromObject(version),
                HKMetadataKey.WasUserEntered,
                NSObject.FromObject(true),
                HKMetadataKey.ExternalUuid,
                NSObject.FromObject(MetadataKey.GetExternalUUID(measureId)),
                HKMetadataKey.SyncIdentifier,
                NSObject.FromObject(MetadataKey.GetBloodGlucoseIdentifier(measureId)));

            return(HKQuantitySample.FromType(
                       HKQuantityType.Create(HKQuantityTypeIdentifier.BloodGlucose),
                       HKQuantity.FromQuantity(
                           HKUnit
                           .CreateMoleUnit(HKMetricPrefix.Milli, HKUnit.MolarMassBloodGlucose)
                           .UnitDividedBy(HKUnit.Liter),
                           level / 10.0),
                       (NSDate)date,
                       (NSDate)date,
                       metadata));
        }
Ejemplo n.º 3
0
        private async Task DeleteSamples(Measure measure)
        {
            if (_suppressed)
            {
                return;
            }

            var predicate = HKQuery.GetPredicateForMetadataKey(
                HKMetadataKey.ExternalUuid,
                new[] { NSObject.FromObject(MetadataKey.GetExternalUUID(measure.Id)) });

            var result = await _healthStore.DeleteObjectsAsync(
                HKQuantityType.Create(HKQuantityTypeIdentifier.BloodGlucose),
                predicate);

            if (!result.Item1)
            {
                _log.Warn($"Can't delete blood glucose data by reason: {result.Item2.LocalizedDescription}");
            }

            result = await _healthStore.DeleteObjectsAsync(
                HKQuantityType.Create(HKQuantityTypeIdentifier.InsulinDelivery),
                predicate);

            if (!result.Item1)
            {
                _log.Warn($"Can't delete insulin data by reason: {result.Item2.LocalizedDescription}");
            }
        }
Ejemplo n.º 4
0
        private async Task EditMeasure(Measure measure)
        {
            if (_suppressed)
            {
                return;
            }

            if (!measure.Level.HasValue)
            {
                var predicate = HKQuery.GetPredicateForMetadataKey(
                    HKMetadataKey.ExternalUuid,
                    new[] { NSObject.FromObject(MetadataKey.GetExternalUUID(measure.Id)) });

                await _healthStore.DeleteObjectsAsync(
                    HKQuantityType.Create(HKQuantityTypeIdentifier.BloodGlucose),
                    predicate);
            }

            var samples = GetQuantitySamples(measure);

            await AddSamples(samples);
        }