Sha256: 6e78390fb1647cf4b6d65b4eb554a081bc6d682cd6d5bd8dba4422abf8beddae

Contents?: true

Size: 1.02 KB

Versions: 10

Compression:

Stored size: 1.02 KB

Contents

module USCoreTestKit
  class ProvenanceValidator
    include FHIRResourceNavigation

    def self.validate(...)
      new(...).validate
    end

    attr_reader :resource, :validation_messages

    def initialize(resource)
      @resource = resource
      @validation_messages = []
    end

    def validate
      # Invariant provenance-1 in US Core 5 causes validation error. See FHIR-39518
      return validation_messages unless resource.instance_of?(FHIR::Provenance)

      failed_provenance =
        find_a_value_at(resource, 'agent') do |agent|
          ['Practitioner', 'Device'].any? { |resource_type| agent.who&.reference&.include?(resource_type) } &&
            agent.onBehalfOf.nil?
        end

      if failed_provenance.present?
        validation_messages << {
          type: 'error',
          message: "#{resource.resourceType}/#{resource.id}: Rule provenance-1: 'onBehalfOf SHALL be present when Provenance.agent.who is a Practitioner or Device' Failed"
        }
      end

      validation_messages
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
us_core_test_kit-0.10.0 lib/us_core_test_kit/provenance_validator.rb
us_core_test_kit-0.9.3 lib/us_core_test_kit/provenance_validator.rb
us_core_test_kit-0.9.2 lib/us_core_test_kit/provenance_validator.rb
us_core_test_kit-0.9.1 lib/us_core_test_kit/provenance_validator.rb
us_core_test_kit-0.9.0 lib/us_core_test_kit/provenance_validator.rb
us_core_test_kit-0.8.2 lib/us_core_test_kit/provenance_validator.rb
us_core_test_kit-0.8.1 lib/us_core_test_kit/provenance_validator.rb
us_core_test_kit-0.8.0 lib/us_core_test_kit/provenance_validator.rb
us_core_test_kit-0.7.2 lib/us_core_test_kit/provenance_validator.rb
us_core_test_kit-0.7.1 lib/us_core_test_kit/provenance_validator.rb