Class: DaVinciDTRTestKit::DTRFullEHRV220AdaptiveQuestionnairesCompletedTest

Inherits:
Inferno::Test
  • Object
show all
Includes:
MultiRequestMessageHelper, QuestionnaireHelper, ShortCircuitInteractionVerification, URLs
Defined in:
lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/adaptive_questionnaires_completed_test.rb

Constant Summary

Constants included from ShortCircuitInteractionVerification

ShortCircuitInteractionVerification::DEFAULT_SHORT_CIRCUIT_BAD_MESSAGE, ShortCircuitInteractionVerification::DEFAULT_SHORT_CIRCUIT_OK_MESSAGE, ShortCircuitInteractionVerification::SHORT_CIRCUIT_ADAPTIVE_MESSAGE

Instance Method Summary collapse

Methods included from QuestionnaireHelper

#adaptive_questionnaire?, #contained_questionnaire_from_questionnaire_response, #no_questionnaires_returned?, #questionnaire_canonical_url, #questionnaire_display, #questionnaire_from_next_question_output_parameters, #questionnaire_from_package_bundle, #questionnaire_package_bundles, #questionnaire_package_output_parameters_from_operation_responses, #questionnaire_response_from_next_question_request, #questionnaire_response_from_next_question_response, #questionnaires_from_operation_response_parameters, #questionnaires_from_operation_responses, #questionnaires_from_questionnaire_package_output_parameters

Methods included from ShortCircuitInteractionVerification

#check_for_adaptive_short_circuit, #check_for_short_circuit, #clear_adaptive_short_circuit_flag, #clear_short_circuit_flag, #short_circuit_adaptive_validation_tests, #short_circuit_fail, #short_circuit_omit, #short_circuit_pass, #short_circuit_skip, #short_circuit_validation_tests

Methods included from MultiRequestMessageHelper

#add_request_message, #parse_fhir_request_entity, #request_prefix, #requests_with_errors_prefix

Methods included from URLs

#base_url, #ehr_authorize_url, #ehr_token_url, #fhir_base_url, #next_url, #payer_token_url, #questionnaire_package_url, #questionnaire_response_url, #registration_url, #resume_fail_url, #resume_pass_url, #suite_id, #supported_payer_url, #token_url, #udap_discovery_url

Instance Method Details

#adaptive_questionnaire_canonicalsObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/adaptive_questionnaires_completed_test.rb', line 43

def adaptive_questionnaire_canonicals
  @adaptive_questionnaire_canonicals ||=
    qp_requests_to_analyze.each_with_object([]) do |request, adaptive_questionnaires|
      request_parameters = FHIR.from_contents(request.response_body)
      next unless request_parameters.is_a?(FHIR::Parameters)

      adaptive_questionnaires.concat(
        questionnaires_from_questionnaire_package_output_parameters(request_parameters, include_standard: false)
          .map { |questionnaire| questionnaire_canonical_url(questionnaire) }
      )
    rescue JSON::ParserError
      next
    end
end

#completed_contained_questionnaire(request) ⇒ Object

Returns the contained Questionnaire from a $next-question response's QuestionnaireResponse, but only when Inferno marked that QuestionnaireResponse completed -- an in-progress adaptive workflow hasn't finished yet.



73
74
75
76
77
78
79
80
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/adaptive_questionnaires_completed_test.rb', line 73

def completed_contained_questionnaire(request)
  response_body = FHIR.from_contents(request.response_body)
  response_questionnaire_response = questionnaire_response_from_next_question_response(response_body)
  return nil unless response_questionnaire_response.present?
  return nil unless response_questionnaire_response.status == 'completed'

  contained_questionnaire_from_questionnaire_response(response_questionnaire_response)
end

#completed_questionnaire_canonicalsObject



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/adaptive_questionnaires_completed_test.rb', line 58

def completed_questionnaire_canonicals
  @completed_questionnaire_canonicals ||=
    nq_requests_to_analyze.each_with_object([]) do |request, completed_questionnaires|
      contained_questionnaire = completed_contained_questionnaire(request)
      next unless contained_questionnaire.present?

      completed_questionnaires << questionnaire_canonical_url(contained_questionnaire)
    rescue JSON::ParserError
      next
    end
end

#nq_requests_to_analyzeObject



39
40
41
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/adaptive_questionnaires_completed_test.rb', line 39

def nq_requests_to_analyze
  @nq_requests_to_analyze ||= load_tagged_requests(*target_nq_tags)
end

#qp_requests_to_analyzeObject



35
36
37
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/adaptive_questionnaires_completed_test.rb', line 35

def qp_requests_to_analyze
  @qp_requests_to_analyze ||= load_tagged_requests(*target_qp_tags)
end

#target_nq_tagsObject



28
29
30
31
32
33
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/adaptive_questionnaires_completed_test.rb', line 28

def target_nq_tags
  tags = [CLIENT_NEXT_TAG]
  tags << config.options[:dtr_workflow_tag] if config.options[:dtr_workflow_tag].present?

  tags
end

#target_qp_tagsObject



21
22
23
24
25
26
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.2.0/interaction/adaptive_questionnaires_completed_test.rb', line 21

def target_qp_tags
  tags = [QUESTIONNAIRE_PACKAGE_TAG]
  tags << config.options[:dtr_workflow_tag] if config.options[:dtr_workflow_tag].present?

  tags
end