Как хранить данные ЭКГ на аптечке Apple?
Я новичок в разработке приложений для IOS. Я пытался научиться работать с Apple HealthKit API. До сих пор в качестве эксперимента мне удалось создать простое приложение, которое могло бы хранить и извлекать данные из HealthKit, такие как группа крови, частота сердечных сокращений и т. Д. (Я могу предоставить код, если он кому-нибудь понадобится - он уже доступен в Интернете), Я могу сделать эту функциональность, потому что healthkitStore предоставляет эти typeIdentifiers для разработчиков приложений. Тем не менее, я немного растерялся, когда я хочу создать новый typeIdentifier, например, для хранения ЭКГ / ЭКГ на HealthKit? Я хочу подать сигналы ЭКГ / ЭКГ в свое приложение и использовать HealthKitStore для сохранения этой информации. Я что-то упустил? Я знаю, что я медлительный, но я много искал в Интернете, но я не мог найти какие-либо конкретные решения. Это не возможно? Но весь смысл открытия API для разработчиков заключается в создании новых приложений с различными функциями. У меня нет особых требований в отношении хранения и извлечения данных ЭКГ, так как я просто хочу создать PoC без каких-либо ограничений, но сосредоточив внимание на функциональности.
Буду ли я неправ, если я хочу создать вышеуказанное с помощью
struct HKClinicalTypeIdentifier
а затем использовать идентификатор типа клинической записи
static let labResultRecord: HKClinicalTypeIdentifier
Это правильное направление? Любое направление, мотивация или критика приветствуется.
1 ответ
Я нашел альтернативное решение вышеуказанной проблемы. Я пишу это так, чтобы, если у кого-то была похожая проблема, можно было бы применить аналогичный подход, если это необходимо По сути, на момент написания этой темы разработчики ECG typeIdentifier не могли использовать их. Тем не менее, существует способ создать объект HKQauntiySample и передать значения ЭКГ в качестве метаданных. Но единственная проблема, с которой я сталкиваюсь при таком подходе, связана со скоростью, с которой живая / историческая ЭКГ может быть сохранена в аптечке.
Частота дискретизации для ЭКГ, например, составляет 200 Гц. Я не могу хранить данные с отметкой времени в секунду. Это может обеспечить только до нескольких секунд отметки времени. Также кажется, что максимальная скорость, с которой данные могут быть сохранены с использованием вышеуказанного объекта, составляет всего 160 Гц. Может быть, это ограничение интерфейса, healtkitstore и т. Д. Я не знаю. Надеюсь, что это закрывает проблему.
В iOS 14 вы можете читать данные ЭКГ с помощью нового API
HK Электрокардиограмма Запросить документацию Apple
вот пример кода, который я использовал для получения данных ЭКГ:
if #available(iOS 14.0, *) {
let predicate = HKQuery.predicateForSamples(withStart: Date.distantPast,end: Date.distantFuture,options: .strictEndDate)
let sortDescriptor = NSSortDescriptor(key: HKSampleSortIdentifierStartDate, ascending: false)
let ecgQuery = HKSampleQuery(sampleType: HKObjectType.electrocardiogramType(), predicate: predicate, limit: 0, sortDescriptors: [sortDescriptor]){ (query, samples, error) in
guard let samples = samples,
let mostRecentSample = samples.first as? HKElectrocardiogram else {
return
}
print(mostRecentSample)
var ecgSamples = [(Double,Double)] ()
let query = HKElectrocardiogramQuery(mostRecentSample) { (query, result) in
switch result {
case .error(let error):
print("error: ", error)
case .measurement(let value):
print("value: ", value)
let sample = (value.quantity(for: .appleWatchSimilarToLeadI)!.doubleValue(for: HKUnit.volt()) , value.timeSinceSampleStart)
ecgSamples.append(sample)
case .done:
print("done")
}
}
self.healthMonitor.healthStore.execute(query)
}
healthMonitor.healthStore.execute(ecgQuery)
} else {
// Fallback on earlier versions
}