了解 healthkit 中的全新 medications api。探索一个使用此全新 api 的示例 app,了解如何访问药品和剂量,并了解你的 app 如何管理此类新数据的授权。

视频封面
视频地址

此文章由AI生成,可能存在错误,如有问题,请联系djs66256@163.com

深度解析 HealthKit 药物 API:创新医疗数据管理方案

引言

苹果在 WWDC 上发布了 HealthKit 药物 API,为开发者提供了访问和管理药物数据的新工具。这一创新扩展了健康应用的开发边界,使开发者能够创建更全面、更个性化的健康管理体验。本文将详细解析药物 API 的技术实现、数据模型及其在实际应用中的表现。

药物数据存储机制

数据录入流程

药物数据通过 iOS 健康应用的”药物”功能录入系统。用户可在”搜索”标签页中找到”药物”选项,通过”添加药物”流程完成数据录入。该系统具有三个关键特性:

  1. 药物识别:支持相同名称不同规格药物的精确识别
  2. 定制化设置:允许设置服药提醒时间和个性化备注
  3. 服药记录:提供多种记录选项(已服用、跳过、延后)

所有录入的数据都将安全存储在 HealthKit 中,为第三方应用提供数据基础。

API 核心架构

数据模型设计

药物 API 引入了两种核心数据类型:

  1. HKUserAnnotatedMedication:代表用户自定义的药物对象

    • 包含四个关键属性
    • isArchived 表示药物停用状态
    • hasSchedule 显示提醒设置状态
    • nickname 提供用户友好别名
    • 关联具体药物引用
  2. HKMedicationDoseEvent:新型 HKSample 子类

    • 记录服药的实际剂量和时间
    • 包含剂量状态(服用/跳过)
    • 区分计划剂量与实际剂量

药物概念模型

HKMedicationConcept 提供标准化药物描述:

  • 唯一标识符保证数据准确性
  • 显示名称提供用户友好视图
  • 剂型分类(胶囊/片剂等)
  • 临床编码(如 RxNorm)确保系统互操作性

实际应用案例

数据查询示例

以下展示了阿莫西林抗生素的典型数据结构:

// 药物概念示例
concept = HKMedicationConcept(
    identifier: "308192",
    displayName: "阿莫西林三水合物 500mg 口服片剂",
    dosageForm: .tablet,
    codingSystem: .rxNorm
)

// 剂量事件示例
doseEvent = HKMedicationDoseEvent(
    medicationConcept: concept,
    status: .skipped,
    dose: HKQuantity(unit: .count(), doubleValue: 0),
    scheduledDose: HKQuantity(unit: .count(), doubleValue: 1),
    scheduledTime: Date()
)

示例应用实现

Srishti 开发的示范应用展示了 API 的典型用法:

  1. 药物列表视图:显示已授权药物
  2. 剂量详情:展示最近服药记录
  3. 副作用追踪:通过表情符号记录症状严重度

授权流程采用对象级权限管理,确保数据访问的安全性。副作用数据通过 RxNorm 编码系统与药物关联,实现智能匹配。

高级查询技术

锚定对象查询实现

对于时间序列数据展示,推荐使用 HKAnchoredObjectQuery:

let query = HKAnchoredObjectQuery(
    type: HKMedicationDoseEvent.sampleType,
    predicate: predicate,
    anchor: anchor,
    limit: HKObjectQueryNoLimit
) { (query, samples, deletedObjects, newAnchor, error) in
    // 处理新增和删除的样本
    // 更新界面展示
}

关键实现要点:

  • 精确设置查询谓词限定范围
  • 正确处理删除的样本数据
  • 保持与健康应用数据同步
  • 充分利用 Swift 异步接口优势

权限管理系统

新增药物授权流程

健康应用提供简化的共享授权:

  1. 用户添加新药物时自动触发共享选项
  2. 开发者无需额外实现授权逻辑
  3. 系统自动管理权限边界

这种设计既保证了用户隐私控制权,又简化了开发者的权限管理负担。

开发建议与资源

实践指导

  1. 数据关联:利用药物概念与其他临床数据建立关联
  2. 编码系统:深入研究 RxNorm 等标准化系统
  3. 状态处理:全面理解不同记录状态的含义

学习资源

相关视频:
使用 iOS 和 iPadOS 上的 HealthKit 跟踪体能训练
HealthKit 入门讲座

文档资源:
健康数据访问授权
HKAnchoredObjectQuery
HKSampleQuery
requiresPerObjectAuthorization()

结语

HealthKit 药物 API 为健康应用开发开辟了新维度。通过标准化的数据模型和灵活的查询接口,开发者可以构建从服药提醒到长期疗效追踪的各类创新应用。随着医疗健康领域的数字化发展,这类 API 将成为连接专业医疗数据与日常健康管理的重要桥梁。