Class: DaVinciDTRTestKit::MockPayer::FullEHRV220NextQuestionEndpoint

Inherits:
Inferno::DSL::SuiteEndpoint
  • Object
show all
Includes:
FhirpathUtils, DaVinciDTRTestKit::MockPayer, NextQuestionTemplateQuestionnaires, QuestionnaireHelper, ResponseSelectionUtils
Defined in:
lib/davinci_dtr_test_kit/full_ehr/v2.2.0/full_ehr_next_question_endpoint.rb

Constant Summary

Constants included from ResponseSelectionUtils

ResponseSelectionUtils::INFERNO_CONTROL_EXTENSION_URLS

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 NextQuestionTemplateQuestionnaires

#parse_template_questionnaire, #questionnaires_from_template_value

Methods included from ResponseSelectionUtils

#count_previous_successful_requests, #entity_has_inclusion_criteria?, #entity_has_request_range_criteria?, #include_entity?, #ranges_cover_value?, #request_meets_inclusion_criteria?, #request_meets_request_range_criteria?, #strip_inferno_extensions

Methods included from FhirpathUtils

#calculate_expression_string_value, #execute_fhirpath, #fhirpath_evaluator, #interpret_fhirpath_result_as_boolean, #replace_tokens_in_string

Methods included from DaVinciDTRTestKit::MockPayer

#build_outcome_param, #find_questionnaire_response, #operation_outcome, #outcome_issue, #parse_fhir_object

Instance Method Details

#make_responseObject



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.2.0/full_ehr_next_question_endpoint.rb', line 37

def make_response
  response.headers['Access-Control-Allow-Origin'] = '*'
  return if response.status == 401 # response set in update_result (expired token handling there)

  response.format = 'application/fhir+json'
  response.body = response_body.to_json
  response.status = if response_body.is_a?(FHIR::OperationOutcome)
                      400
                    else
                      200
                    end
rescue StandardError => e
  Inferno::Application['logger'].error("Error responding to $next-question:\n#{e.full_message}")
  response.body =
    operation_outcome(
      'fatal',
      'processing',
      e.message
    ).to_json
  response.status = 500
end

#tagsObject



27
28
29
30
31
32
33
34
35
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.2.0/full_ehr_next_question_endpoint.rb', line 27

def tags
  tags = [CLIENT_NEXT_TAG]
  tags << test.config.options[:dtr_workflow_tag] if test.config.options[:dtr_workflow_tag].present?
  unless test.config.options[:dtr_exclude_from_questionnaire_must_support]
    tags << CLIENT_QUESTIONNAIRE_MUST_SUPPORT
  end

  tags
end

#test_run_identifierObject



19
20
21
22
23
24
25
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.2.0/full_ehr_next_question_endpoint.rb', line 19

def test_run_identifier
  return request.params[:session_path] if request.params[:session_path].present?

  UDAPSecurityTestKit::MockUDAPServer.issued_token_to_client_id(
    request.headers['authorization']&.delete_prefix('Bearer ')
  )
end

#update_resultObject



59
60
61
62
63
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.2.0/full_ehr_next_question_endpoint.rb', line 59

def update_result
  return unless UDAPSecurityTestKit::MockUDAPServer.request_has_expired_token?(request)

  UDAPSecurityTestKit::MockUDAPServer.update_response_for_expired_token(response, 'Bearer token')
end