Health & Fitness 进阶 20m
ResearchKit 新特性
What's new in ResearchKit
2020年6月23日
一句话判断
如果你在做医疗健康类研究应用,这场 Session 值得看——ResearchKit 终于支持了更多传感器数据采集方式,和 CareKit 的联动也更紧密了。
这场 Session 讲了什么
ResearchKit 是 Apple 推出的开源框架,帮助开发者构建医学研究类 App。这场 Session 回顾了 ResearchKit 的核心架构,并重点介绍了 2020 年的更新内容。主要改进集中在三个方面:新的传感器数据采集能力、调查问卷流程的增强,以及与 CareKit 的深度整合。
演讲者首先回顾了 ResearchKit 的基础组件——Consent(知情同意)、Survey(调查问卷)和 Active Task(主动任务)。然后详细展示了如何利用新的 Active Task 类型来采集更丰富的健康数据,包括对运动传感器的更细粒度访问。Session 还讨论了如何通过 CareKit 的 OCKStore 与 ResearchKit 的 ORKStore 进行数据同步,让研究数据和日常健康记录能统一管理。
最后,演讲者分享了一些最佳实践,包括如何在保护参与者隐私的前提下最大化研究数据质量,以及如何利用 Recruit Module 来简化参与者招募流程。
值得深挖的点
- CareKit 与 ResearchKit 的数据桥接:两个框架各有各的数据存储层,但通过 OCKHealthKitStoreBridge 和自定义同步逻辑,可以将研究采集的健康数据和 CareKit 管理的日常护理数据打通。这对于纵向研究(Longitudinal Study)非常有价值,研究者可以同时看到干预前后的变化。
- 隐私保护与数据质量平衡:ResearchKit 强调 On-Device Processing,敏感数据尽量在设备端完成处理后再上传。这不是什么新概念,但在健康数据领域,如何在 GDPR 和 HIPAA 框架下设计数据采集策略,是一个需要持续关注的议题。
代码片段
// 创建一个步态与平衡的 Active Task
let task = ORKOrderedTask(
identifier: "GaitBalanceTask",
steps: [
ORKInstructionStep(identifier: "Intro"), // 介绍页
ORKWalkingTaskStep(identifier: "Walking"), // 步行测试
ORKCompletionStep(identifier: "Complete") // 完成页
]
)
// 使用 ORKTaskViewController 展示任务
let taskVC = ORKTaskViewController(task: task, taskRun: nil)
taskVC.delegate = self
present(taskVC, animated: true)
// 处理任务完成结果
func taskViewController(
_ taskViewController: ORKTaskViewController,
didFinishWith reason: ORKTaskViewControllerFinishReason,
error: Error?
) {
switch reason {
case .completed:
// 提取步态数据
if let result = taskViewController.result.stepResult(forStepIdentifier: "Walking") {
let pedometerData = result.results?.first as? ORKFileResult
// 上传至研究服务器
uploadToServer(pedometerData)
}
case .discarded, .failed, .saved:
break
@unknown default:
break
}
taskViewController.dismiss(animated: true)
}
// 配置 Consent 文档
let consent = ORKConsentDocument()
consent.title = "研究知情同意书"
consent.signaturePageTitle = "签名确认"
let section = ORKConsentSection(type: .dataGathering)
section.summary = "我们将采集您的运动传感器数据"
section.content = "详细说明数据采集的范围和用途..."
consent.sections = [section]
最佳实践
- 调查问卷设计尽量使用预定义的 ORKAnswerFormat,避免自由文本输入导致数据不可分析
- Active Task 中合理设置采样频率,过高会消耗电量,过低会丢失关键数据点
- 始终在知情同意流程中明确说明数据用途和存储方式
- 将 ResearchKit 和 CareKit 结合使用时,优先用 CareKit 管理用户界面和日程,ResearchKit 负责数据采集
还有什么值得关注
- ResearchKit 的开源仓库在持续更新,关注 GitHub 上的 Release Notes 了解最新修复
- 如果你在做 COVID-19 相关研究,Apple 官方有一些针对疫情期间远程研究的指导意见
- 搭配 “What’s new in CareKit” 一起看,可以更全面地理解 Apple 健康研究生态的整体规划
WWDC 2020