Sha256: 81795b4b2508761e18203af449bee6d0d07aad165ca5669c8ae31d4681d15b16

Contents?: true

Size: 1.83 KB

Versions: 30

Compression:

Stored size: 1.83 KB

Contents

module USCoreTestKit
  module ValidationTest
    DAR_CODE_SYSTEM_URL = 'http://terminology.hl7.org/CodeSystem/data-absent-reason'.freeze
    DAR_EXTENSION_URL = 'http://hl7.org/fhir/StructureDefinition/data-absent-reason'.freeze

    def perform_validation_test(resources,
                                profile_url,
                                profile_version,
                                skip_if_empty: true)

      skip_if skip_if_empty && resources.blank?,
              "No #{resource_type} resources conforming to the #{profile_url} profile were returned"

      omit_if resources.blank?,
              "No #{resource_type} resources provided so the #{profile_url} profile does not apply"

      profile_with_version = "#{profile_url}|#{profile_version}"
      resources.each do |resource|
        resource_is_valid?(resource: resource, profile_url: profile_with_version)
        check_for_dar(resource)
      end

      errors_found = messages.any? { |message| message[:type] == 'error' }

      assert !errors_found, "Resource does not conform to the profile #{profile_with_version}"
    end

    def check_for_dar(resource)
      unless scratch[:dar_code_found]
        resource.each_element do |element, meta, _path|
          next unless element.is_a?(FHIR::Coding)

          check_for_dar_code(element)
        end
      end

      unless scratch[:dar_extension_found]
        check_for_dar_extension(resource)
      end
    end

    def check_for_dar_code(coding)
      return unless coding.code == 'unknown' && coding.system == DAR_CODE_SYSTEM_URL

      scratch[:dar_code_found] = true
      output dar_code_found: 'true'
    end

    def check_for_dar_extension(resource)
      return unless resource.source_contents&.include? DAR_EXTENSION_URL

      scratch[:dar_extension_found] = true
      output dar_extension_found: 'true'
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
us_core_test_kit-0.10.0 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.9.3 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.9.2 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.9.1 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.9.0 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.8.2 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.8.1 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.8.0 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.7.2 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.7.1 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.7.0 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.6.5 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.6.4 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.6.3 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.6.2 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.6.1 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.6.0 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.5.0 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.4.7 lib/us_core_test_kit/validation_test.rb
us_core_test_kit-0.4.6 lib/us_core_test_kit/validation_test.rb