【问题标题】:Get and Set info in Medical ID using Healthkit?使用 Healthkit 在医疗 ID 中获取和设置信息?
【发布时间】:2019-10-06 17:50:45
【问题描述】:

我正在尝试从医疗 ID 中获取信息,例如状况、医疗记录、过敏和反应等所有此类信息。

我正在使用 Swift 和 Health Kit。目前我能得到的唯一信息是 dateOfBirth、biologicalSex 和 bloodType。

import UIKit
import HealthKit

class ViewController: UIViewController {

let healthKitStore: HKHealthStore = HKHealthStore()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let healthStore: HKHealthStore? = {
        if HKHealthStore.isHealthDataAvailable() {
            return HKHealthStore()
        } else {
            return nil
        }
    }()


    //MARK: Data to write
    let bodyMass = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMassIndex)
    let run = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceWalkingRunning)

    let dataTypesToWrite = NSSet(objects:bodyMass!, run!)

    //MARK: Data to read
    let dateOfBirthCharacteristic = HKCharacteristicType.characteristicTypeForIdentifier(
        HKCharacteristicTypeIdentifierDateOfBirth)
    let biologicalSexCharacteristic = HKCharacteristicType.characteristicTypeForIdentifier(
        HKCharacteristicTypeIdentifierBiologicalSex)
    let bloodTypeCharacteristic = HKCharacteristicType.characteristicTypeForIdentifier(
        HKCharacteristicTypeIdentifierBloodType)

    let dataTypesToRead = NSSet(objects:dateOfBirthCharacteristic!,biologicalSexCharacteristic!,bloodTypeCharacteristic!)


    healthStore?.requestAuthorizationToShareTypes(dataTypesToWrite as? Set<HKSampleType>, readTypes: dataTypesToRead as? Set<HKObjectType>) { (success, error) -> Void in
        if success {
            print("success")
        }else{
            print(error?.description)
        }
    }

    var dateOfBirth: String?{
        if let dateOfBirth = try? healthStore?.dateOfBirth(){
            let dateFormater = NSDateFormatter()
            dateFormater.dateStyle = .ShortStyle
            return dateFormater.stringFromDate(dateOfBirth!)
        }
        return nil
    }

    var biologicalSex: String? {
        if let biologicalSex =  try? healthStore?.biologicalSex(){
            switch biologicalSex!.biologicalSex {
            case .Female:
                return "Female"
            case .Male:
                return "Male"
            case .NotSet:
                return nil
            default:
                return nil
            }
        }
        return nil
    }


    var bloodType: String? {
        if let bloodType = try? healthStore?.bloodType(){
            switch bloodType!.bloodType {
            case .APositive:
                return "A+"
            case .ANegative:
                return "A-"
            case .BPositive:
                return "B+"
            case .BNegative:
                return "B-"
            case .ABPositive:
                return "AB+"
            case .ABNegative:
                return "AB-"
            case .OPositive:
                return "O+"
            case .ONegative:
                return "O-"
            case .NotSet:
                return nil
            }
        }
        return nil
    }

    print(dateOfBirth)
    print(biologicalSex)
    print (bloodType)
    saveDistance(20, date: NSDate())
}

func saveDistance(distanceRecorded: Double, date: NSDate ) {

    // Set the quantity type to the running/walking distance.
    let distanceType = HKQuantityType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceWalkingRunning)

    // Set the unit of measurement to miles.
    let distanceQuantity = HKQuantity(unit: HKUnit.mileUnit(), doubleValue: distanceRecorded)

    // Set the official Quantity Sample.
    let distance = HKQuantitySample(type: distanceType!, quantity: distanceQuantity, startDate: date, endDate: date)

    // Save the distance quantity sample to the HealthKit Store.
    healthKitStore.saveObject(distance, withCompletion: { (success, error) -> Void in
        if( error != nil ) {
            print(error)
        } else {
            print("The distance has been recorded! Better go check!")
        }
    })
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

【问题讨论】:

  • 请贴一些代码!
  • 我发布了我的代码#Skoua,但我不知道如何访问医疗 ID,这是问题所在,这段代码让我可以在步行 + 跑步中编写并获取以下信息dateOfBirthCharacteristic、biologicalSexCharacteristic、bloodTypeCharacteristic,但该信息来自健康数据。我希望这个解释有所帮助。

标签: ios swift healthkit


【解决方案1】:

iOS 上没有用于检索或修改用户医疗 ID 的 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-30
    • 2017-03-16
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多