了解 healthkit 中的全新 medications api。探索一个使用此全新 api 的示例 app,了解如何访问药品和剂量,并了解你的 app 如何管理此类新数据的授权。
此文章由AI生成,可能存在错误,如有问题,请联系djs66256@163.com
深度解析 HealthKit 药物 API:创新医疗数据管理方案
引言
苹果在 WWDC 上发布了 HealthKit 药物 API,为开发者提供了访问和管理药物数据的新工具。这一创新扩展了健康应用的开发边界,使开发者能够创建更全面、更个性化的健康管理体验。本文将详细解析药物 API 的技术实现、数据模型及其在实际应用中的表现。
药物数据存储机制
数据录入流程
药物数据通过 iOS 健康应用的”药物”功能录入系统。用户可在”搜索”标签页中找到”药物”选项,通过”添加药物”流程完成数据录入。该系统具有三个关键特性:
- 药物识别:支持相同名称不同规格药物的精确识别
- 定制化设置:允许设置服药提醒时间和个性化备注
- 服药记录:提供多种记录选项(已服用、跳过、延后)
所有录入的数据都将安全存储在 HealthKit 中,为第三方应用提供数据基础。
API 核心架构
数据模型设计
药物 API 引入了两种核心数据类型:
HKUserAnnotatedMedication:代表用户自定义的药物对象
- 包含四个关键属性
isArchived
表示药物停用状态hasSchedule
显示提醒设置状态nickname
提供用户友好别名- 关联具体药物引用
HKMedicationDoseEvent:新型 HKSample 子类
- 记录服药的实际剂量和时间
- 包含剂量状态(服用/跳过)
- 区分计划剂量与实际剂量
药物概念模型
HKMedicationConcept 提供标准化药物描述:
- 唯一标识符保证数据准确性
- 显示名称提供用户友好视图
- 剂型分类(胶囊/片剂等)
- 临床编码(如 RxNorm)确保系统互操作性
实际应用案例
数据查询示例
以下展示了阿莫西林抗生素的典型数据结构:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// 药物概念示例
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 的典型用法:
- 药物列表视图:显示已授权药物
- 剂量详情:展示最近服药记录
- 副作用追踪:通过表情符号记录症状严重度
授权流程采用对象级权限管理,确保数据访问的安全性。副作用数据通过 RxNorm 编码系统与药物关联,实现智能匹配。
高级查询技术
锚定对象查询实现
对于时间序列数据展示,推荐使用 HKAnchoredObjectQuery:1
2
3
4
5
6
7
8
9let query = HKAnchoredObjectQuery(
type: HKMedicationDoseEvent.sampleType,
predicate: predicate,
anchor: anchor,
limit: HKObjectQueryNoLimit
) { (query, samples, deletedObjects, newAnchor, error) in
// 处理新增和删除的样本
// 更新界面展示
}
关键实现要点:
- 精确设置查询谓词限定范围
- 正确处理删除的样本数据
- 保持与健康应用数据同步
- 充分利用 Swift 异步接口优势
权限管理系统
新增药物授权流程
健康应用提供简化的共享授权:
- 用户添加新药物时自动触发共享选项
- 开发者无需额外实现授权逻辑
- 系统自动管理权限边界
这种设计既保证了用户隐私控制权,又简化了开发者的权限管理负担。
开发建议与资源
实践指导
- 数据关联:利用药物概念与其他临床数据建立关联
- 编码系统:深入研究 RxNorm 等标准化系统
- 状态处理:全面理解不同记录状态的含义
学习资源
相关视频:
使用 iOS 和 iPadOS 上的 HealthKit 跟踪体能训练
HealthKit 入门讲座
文档资源:
健康数据访问授权
HKAnchoredObjectQuery
HKSampleQuery
requiresPerObjectAuthorization())
结语
HealthKit 药物 API 为健康应用开发开辟了新维度。通过标准化的数据模型和灵活的查询接口,开发者可以构建从服药提醒到长期疗效追踪的各类创新应用。随着医疗健康领域的数字化发展,这类 API 将成为连接专业医疗数据与日常健康管理的重要桥梁。