Class: DaVinciDTRTestKit::DTRPayerServerV220::SmallValueSetExpansionTest

Inherits:
Inferno::Test
  • Object
show all
Includes:
ValueSetExpansionValidation, MultiRequestMessageHelper, QuestionnaireOperationValidation
Defined in:
lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/small_value_set_expansion_test.rb

Constant Summary

Constants included from QuestionnaireOperationValidation

QuestionnaireOperationValidation::QUESTIONNAIRE_PACKAGE_BUNDLE_PROFILE, QuestionnaireOperationValidation::QUESTIONNAIRE_PACKAGE_PARAMETER_PROFILE

Instance Method Summary collapse

Methods included from MultiRequestMessageHelper

#add_request_message, #parse_fhir_request_entity, #request_prefix, #requests_with_errors_prefix

Methods included from ValueSetExpansionValidation

#expansion_code_identifier, #expansion_timestamp_error, #inactive_code_error, #inactive_codes_in, #inactive_expansion_codes, #value_set_expansion_current?, #value_set_expansion_errors

Methods included from QuestionnaireOperationValidation

#check_libraries, #check_referenced_libraries, #depends_on_library_canonicals, #evaluate_library, #extension_presence, #extract_bundles_from_parameter, #extract_libraries_from_bundles, #extract_questionnaire_bundles, #extract_questionnaires_from_bundles, #library_canonical, #library_canonicals, #library_contains_cql?, #library_contains_elm?, #library_names, #perform_questionnaire_package_response_validation, #referenced_library_canonicals, #reset_library_tracking

Instance Method Details

#expansion_entry_count(contains) ⇒ Object



101
102
103
104
105
106
107
# File 'lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/small_value_set_expansion_test.rb', line 101

def expansion_entry_count(contains)
  return 0 if contains.blank?

  contains.sum do |entry|
    1 + expansion_entry_count(entry.contains)
  end
end

#expansion_sizes_by_urlObject



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/small_value_set_expansion_test.rb', line 64

def expansion_sizes_by_url
  load_tagged_requests(VALUE_SET_EXPAND_TAG).filter_map do |request|
    url = value_set_url_from_expand_request(request)
    next if url.blank?

    expanded_value_set = FHIR.from_contents(request.response_body)

    next unless expanded_value_set.is_a?(FHIR::ValueSet) &&
                expanded_value_set.expansion.present?

    [url, expansion_entry_count(expanded_value_set.expansion.contains)]
  rescue JSON::ParserError, FHIR::ClientException
    nil
  end.to_h
end

#value_set_compose_contains_only_codes?(value_set) ⇒ Boolean

Returns:



89
90
91
92
93
94
95
96
97
98
99
# File 'lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/small_value_set_expansion_test.rb', line 89

def value_set_compose_contains_only_codes?(value_set)
  compose = value_set.compose
  return false if compose.blank? || compose.exclude.present?

  compose.include.present? &&
    compose.include.all? do |include|
      include.concept.present? &&
        include.filter.blank? &&
        include.valueSet.blank?
    end
end

#value_set_expanded?(value_set) ⇒ Boolean

Returns:



80
81
82
83
# File 'lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/small_value_set_expansion_test.rb', line 80

def value_set_expanded?(value_set)
  value_set_expansion_contains_codes?(value_set) ||
    value_set_compose_contains_only_codes?(value_set)
end

#value_set_expansion_contains_codes?(value_set) ⇒ Boolean

Returns:



85
86
87
# File 'lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/small_value_set_expansion_test.rb', line 85

def value_set_expansion_contains_codes?(value_set)
  value_set.expansion&.contains.present?
end

#value_set_url_from_expand_request(request) ⇒ Object



109
110
111
112
113
114
115
116
117
# File 'lib/davinci_dtr_test_kit/server/v2.2.0/value_set_expand_support/small_value_set_expansion_test.rb', line 109

def value_set_url_from_expand_request(request)
  parameters = FHIR.from_contents(request.request_body)

  url = parameters.parameter
    .find { |parameter| parameter.name == 'url' }
    &.valueUri

  url&.split('|', 2)&.first
end