diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Vitals.h b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Vitals.h new file mode 100644 index 0000000000000000000000000000000000000000..985d3a451a91f3aa308b8dacb55b9e89cf06b683 --- /dev/null +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Vitals.h @@ -0,0 +1,15 @@ +#import "RCTAppleHealthKit.h" + +@interface RCTAppleHealthKit (Methods_Vitals) + +- (void)vitals_getHeartRateSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + +- (void)vitals_getBodyTemperatureSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + +- (void)vitals_getBloodPressureSystolicSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + +- (void)vitals_getBloodPressureDiastolicSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + +- (void)vitals_getRespiratoryRateSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback; + +@end diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Vitals.m b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Vitals.m new file mode 100644 index 0000000000000000000000000000000000000000..dc815f4960c58f57324863a2b0da882a3fe53b93 --- /dev/null +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Methods_Vitals.m @@ -0,0 +1,40 @@ +#import "RCTAppleHealthKit+Methods_Vitals.h" +#import "RCTAppleHealthKit+Queries.h" +#import "RCTAppleHealthKit+Utils.h" + +@implementation RCTAppleHealthKit (Methods_Vitals) + + +- (void)vitals_getHeartRateSamples:(NSDictionary *)input callback:(RCTResponseSenderBlock)callback +{ + HKQuantityType *heartRateType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]; + + HKUnit *unit = [RCTAppleHealthKit hkUnitFromOptions:input key:@"unit" withDefault:[HKUnit countUnit]]; + NSUInteger limit = [RCTAppleHealthKit uintFromOptions:input key:@"limit" withDefault:HKObjectQueryNoLimit]; + BOOL ascending = [RCTAppleHealthKit boolFromOptions:input key:@"ascending" withDefault:false]; + NSDate *startDate = [RCTAppleHealthKit dateFromOptions:input key:@"startDate" withDefault:nil]; + NSDate *endDate = [RCTAppleHealthKit dateFromOptions:input key:@"endDate" withDefault:[NSDate date]]; + if(startDate == nil){ + callback(@[RCTMakeError(@"startDate is required in options", nil, nil)]); + return; + } + NSPredicate * predicate = [RCTAppleHealthKit predicateForSamplesBetweenDates:startDate endDate:endDate]; + + [self fetchQuantitySamplesOfType:heartRateType + unit:unit + predicate:predicate + ascending:ascending + limit:limit + completion:^(NSArray *results, NSError *error) { + if(results){ + callback(@[[NSNull null], results]); + return; + } else { + NSLog(@"error getting heart rate samples: %@", error); + callback(@[RCTMakeError(@"error getting heart rate samples", nil, nil)]); + return; + } + }]; +} + +@end