Class: DaVinciDTRTestKit::MockPayer::FullEHRNextQuestionEndpoint

Inherits:
Inferno::DSL::SuiteEndpoint
  • Object
show all
Includes:
DaVinciDTRTestKit::MockPayer
Defined in:
lib/davinci_dtr_test_kit/full_ehr/v2.0.1/full_ehr_next_question_endpoint.rb

Direct Known Subclasses

SMARTAppNextQuestionEndpoint

Instance Method Summary collapse

Methods included from DaVinciDTRTestKit::MockPayer

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

Instance Method Details

#complete_questionnaire?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.0.1/full_ehr_next_question_endpoint.rb', line 50

def complete_questionnaire?
  custom_questionnaires && next_custom_questionnaire.blank?
end

#custom_next_question_requestsObject



31
32
33
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.0.1/full_ehr_next_question_endpoint.rb', line 31

def custom_next_question_requests
  requests_repo.tagged_requests(test_run.test_session_id, ["custom_#{DaVinciDTRTestKit::CLIENT_NEXT_TAG}"])
end

#custom_questionnairesObject



35
36
37
38
39
40
41
42
43
44
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.0.1/full_ehr_next_question_endpoint.rb', line 35

def custom_questionnaires
  return @custom_questionnaires unless @custom_questionnaires.nil?

  questionnaires = JSON.parse(result.input_json)
    .find { |input| input['name'].include?('custom_next_question_questionnaires') }
    &.dig('value')
  return unless questionnaires

  @custom_questionnaires = [JSON.parse(questionnaires)].flatten.compact
end

#make_responseObject



22
23
24
25
26
27
28
29
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.0.1/full_ehr_next_question_endpoint.rb', line 22

def make_response
  return if response.status == 401 # set in update_result (expired token handling there)

  response.status = 200
  response.format = 'application/fhir+json'
  response.headers['Access-Control-Allow-Origin'] = '*'
  response.body = build_questionnaire_next_response.to_json
end

#next_custom_questionnaireObject



46
47
48
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.0.1/full_ehr_next_question_endpoint.rb', line 46

def next_custom_questionnaire
  custom_questionnaires[custom_next_question_requests.length]
end

#tagsObject



18
19
20
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.0.1/full_ehr_next_question_endpoint.rb', line 18

def tags
  [test.config.options[:next_tag]]
end

#test_run_identifierObject



10
11
12
13
14
15
16
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.0.1/full_ehr_next_question_endpoint.rb', line 10

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



54
55
56
57
58
59
60
61
# File 'lib/davinci_dtr_test_kit/full_ehr/v2.0.1/full_ehr_next_question_endpoint.rb', line 54

def update_result
  if UDAPSecurityTestKit::MockUDAPServer.request_has_expired_token?(request)
    UDAPSecurityTestKit::MockUDAPServer.update_response_for_expired_token(response, 'Bearer token')
    return
  end

  results_repo.update_result(result.id, 'pass') unless test.config.options[:accepts_multiple_requests]
end