Sha256: 77de661958919c55cbb8dbf701554546785ff828860dc2c150aebdcd0a09e61e

Contents?: true

Size: 1.95 KB

Versions: 12

Compression:

Stored size: 1.95 KB

Contents

module CarinForBlueButtonTestKit
    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

12 entries across 12 versions & 1 rubygems

Version Path
carin_for_blue_button_test_kit-0.13.3 lib/carin_for_blue_button_test_kit/validation_test.rb
carin_for_blue_button_test_kit-0.13.2 lib/carin_for_blue_button_test_kit/validation_test.rb
carin_for_blue_button_test_kit-0.13.1 lib/carin_for_blue_button_test_kit/validation_test.rb
carin_for_blue_button_test_kit-0.13.0 lib/carin_for_blue_button_test_kit/validation_test.rb
carin_for_blue_button_test_kit-0.12.1 lib/carin_for_blue_button_test_kit/validation_test.rb
carin_for_blue_button_test_kit-0.12.0 lib/carin_for_blue_button_test_kit/validation_test.rb
carin_for_blue_button_test_kit-0.11.2 lib/carin_for_blue_button_test_kit/validation_test.rb
carin_for_blue_button_test_kit-0.11.1 lib/carin_for_blue_button_test_kit/validation_test.rb
carin_for_blue_button_test_kit-0.11.0 lib/carin_for_blue_button_test_kit/validation_test.rb
carin_for_blue_button_test_kit-0.10.0 lib/carin_for_blue_button_test_kit/validation_test.rb
carin_for_blue_button_test_kit-0.9.1 lib/carin_for_blue_button_test_kit/validation_test.rb
carin_for_blue_button_test_kit-0.9.0 lib/carin_for_blue_button_test_kit/validation_test.rb