【问题标题】:Requiring consent before proceeding with survey in ResearchKit在 ResearchKit 中进行调查之前需要征得同意
【发布时间】:2020-05-15 19:14:59
【问题描述】:

我目前正在创建一个想要利用 ResearchKit 的程序。在进入调查问题之前,我需要征得同意。我正在使用 Ray Wenderlich (https://www.raywenderlich.com/1820-researchkit-tutorial-with-swift-getting-started) 教程并设置了此代码。我已经尝试继续我的程序的调查部分,甚至无需征得同意即可访问它。

import ResearchKit

public var ConsentTask: ORKOrderedTask {

    var ctr = 0

    let Document = ORKConsentDocument()
    Document.title = "Consent"

    //section types
    let sectionTypes: [ORKConsentSectionType] = [
        .overview,
        .dataGathering,
        .privacy
    ]

    let consentSections: [ORKConsentSection] = sectionTypes.map { contentSectionType in
        let consentSection = ORKConsentSection(type: contentSectionType)

        if ctr < sectionTypes.count {

            if ctr == 0 { 
                consentSection.summary = "Summary"
                consentSection.content = "Content"
            }

            else if ctr == 1 { //Data Gathering
                consentSection.summary = "Summary"
                consentSection.content = "Content"
            }

            else if ctr == 2 { //Privacy
                consentSection.summary = "Summary"
                consentSection.content = "Content"
            }

            ctr = ctr + 1
        }
        return consentSection
    }

    Document.sections = consentSections
    Document.addSignature(ORKConsentSignature(forPersonWithTitle: nil, dateFormatString: nil, identifier: "UserSignature"))

    var steps = [ORKStep]()

    let visualConsentStep = ORKVisualConsentStep(identifier: "VisualConsent", document: Document)
    steps += [visualConsentStep]

    let signature = Document.signatures!.first! as ORKConsentSignature
    let reviewConsentStep = ORKConsentReviewStep(identifier: "Review", signature: signature, in: Document)
    reviewConsentStep.text = "Review the consent"
    reviewConsentStep.reasonForConsent = "I agree"

    steps += [reviewConsentStep]

    //Completion
    let completionStep = ORKCompletionStep(identifier: "CompletionStep")
    completionStep.title = "Welcome"
    completionStep.text = "Thank you for helping!"
    steps += [completionStep]

    return ORKOrderedTask(identifier: "ConsentTask", steps: steps)
}

在我的视图控制器中,我有

    @IBAction func consentTask(_ sender: Any) {

    if consentDone == false {
        let taskViewController = ORKTaskViewController(task: ConsentTask, taskRun: nil)
        taskViewController.delegate = self
        present(taskViewController, animated: true, completion: nil)
    }
    else if consentDone == true {
        //would they like to leave the study

    }
}

我努力在此处设置了同意完成标志。

    func taskViewController(_ taskViewController: ORKTaskViewController, didFinishWith reason: ORKTaskViewControllerFinishReason, error: Error?) {

    taskViewController.dismiss(animated: true, completion: {() in self.consentDone = true})
    print(consentDone)

}

但是,如果用户按下右上角的取消或在同意的最后完成,则会触发此操作。有没有办法确保只有在一切都完成后才执行一段代码?理想情况下,在此之后,我想将此标记为用户已经完成同意的标志。之后我每次都会将用户重定向到不同的页面,直到用户离开研究。

【问题讨论】:

    标签: ios swift iphone xcode researchkit


    【解决方案1】:

    经过反复试验,我在这里找到了答案:https://github.com/ResearchKit/ResearchKit/issues/919

    通过知道用户的签名意味着用户已经完成了表单,我们可以这样做

      if result.identifier == "UserSignature"{
          print(result)
          let consentDoneAnswerResult = result as! ORKConsentSignatureResult
          let consentDone = consentDoneAnswerResult.consented
          print(consentDone)
      }
    

    当表单完成而不是取消时,这将给予许可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 2013-07-04
      • 2013-12-26
      • 2012-10-18
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多