ResearchKitOnFHIR 是一个框架,允许您使用 FHIR 问卷 和 ResearchKit,在 iOS 上基于 HL7 结构化数据捕获实施指南 创建医疗保健调查。
更多信息,请参考 API 文档。
enableWhen
条件转换为 ResearchKit 导航规则,支持调查跳过逻辑FHIR R4 QuestionnaireItemType | ResearchKit 类型 | FHIR 回复类型 |
---|---|---|
attachment (附件) | ORKImageCaptureStep (ORK图像捕获步骤) | valueAttachment (附件值) |
boolean (布尔值) | ORKBooleanAnswerFormat (ORK布尔值答案格式) | valueBoolean (布尔值) |
choice (选择) | ORKTextChoice (ORK文本选项) | valueCoding (编码值) |
date (日期) | ORKDateAnswerFormat(style: ORKDateAnswerStyle.date) | valueDate (日期值) |
dateTime (日期时间) | ORKDateAnswerFormat(style: ORKDateAnswerStyle.dateAndTime) | valueDateTime (日期时间值) |
decimal (小数) | ORKNumericAnswerFormat.decimalAnswerFormat | valueDecimal (小数值) |
display (显示) | ORKInstructionStep (ORK指导步骤) | none (无) |
group (组) | ORKFormStep (ORK表单步骤) | none (无) |
integer (整数) | ORKNumericAnswerFormat.integerAnswerFormat | valueInteger (整数值) |
quantity (数量) | ORKNumericAnswerFormat.decimalAnswerFormat(withUnit: quantityUnit) | valueQuantity (数量值) |
string (字符串) | ORKTextAnswerFormat (ORK文本答案格式) | valueString (字符串值) |
text (文本) | ORKTextAnswerFormat (ORK文本答案格式) | valueString (字符串值) |
time (时间) | ORKTimeOfDayAnswerFormat (ORK一天中的时间答案格式) | valueTime (时间值) |
下表描述了对于每种支持的类型和运算符,FHIR enableWhen 如何转换为 ResearchKit ORKSkipStepNavigationRule。(通过从 enableWhen 表达式构造 ORKResultPredicate 并对其取反来执行转换。)
支持多个 enableWhen 表达式,使用 enableBehavior 元素来确定是否应应用任何或所有表达式。 如果未定义 enableBehavior,则将应用所有表达式。
FHIR R4 QuestionnaireItemType | 支持的 QuestionnaireItemOperators | ResearchKit ORKResultPredicate |
---|---|---|
boolean (布尔值) | =, != | .predicateForBooleanQuestionResult |
integer (整数) | =, !=, <=, >= | .predicateForNumericQuestionResult |
decimal (小数) | =, !=, <=, >= | .predicateForNumericQuestionResult |
date (日期) | >, < | .predicateForDateQuestionResult |
coding (编码) | =, != | .predicateForChoiceQuestionResult |
可以使用 Swift Package Manager 将 ResearchKitOnFHIR 安装到您的 Xcode 项目中。
ResearchKitOnFhir
包进行安装。Example
目录包含一个 Xcode 项目,演示了如何从 FHIR 问卷创建 ResearchKit 任务,并以 FHIR QuestionnaireResponse 的形式提取结果。
let data = <FHIR JSON data>
var questionnaire: Questionnaire?
do {
questionnaire = try JSONDecoder().decode(Questionnaire.self, from: data)
} catch {
print("Could not decode the FHIR questionnaire": \(error)")
}
var task: ORKNavigableOrderedTask?
do {
task = try ORKNavigableOrderedTask(questionnaire: questionnaire)
} catch {
print("Error creating task: \(error)")
}
现在,您可以按照 ResearchKit 文档 中所述的方式呈现任务。
在您的实现 ORKTaskViewControllerDelegateProtocol
的类中,您可以从任务的结果中提取一个 FHIR QuestionnaireResponse,如下所示。
func taskViewController(
_ taskViewController: ORKTaskViewController,
didFinishWith reason: ORKTaskViewControllerFinishReason,
error: Error?
) {
switch reason {
case .completed:
let fhirResponse = taskViewController.result.fhirResponse
// ...
}
}
本项目采用 MIT 许可证。 有关更多信息,请参见 Licenses (许可证)。
本项目是斯坦福大学在斯坦福大学的项目的一部分。 有关所有 ResearchKitOnFHIR 贡献者的完整列表,请参见 CONTRIBUTORS.md。
ResearchKit 是 Apple, Inc. 的注册商标。 FHIR 是 Health Level Seven International 的注册商标。