Sha256: d4b47d1aa72c50d562af4d9a192dc1630f551aecd9d47ae4e77583e8c14a4561

Contents?: true

Size: 1.06 KB

Versions: 7

Compression:

Stored size: 1.06 KB

Contents

require_relative 'fhir_resource_navigation'

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

7 entries across 7 versions & 1 rubygems

Version Path
ipa_test_kit-0.4.1 lib/ipa_test_kit/provenance_validator.rb
ipa_test_kit-0.4.0 lib/ipa_test_kit/provenance_validator.rb
ipa_test_kit-0.3.4 lib/ipa_test_kit/provenance_validator.rb
ipa_test_kit-0.3.3 lib/ipa_test_kit/provenance_validator.rb
ipa_test_kit-0.3.2 lib/ipa_test_kit/provenance_validator.rb
ipa_test_kit-0.3.1 lib/ipa_test_kit/provenance_validator.rb
ipa_test_kit-0.3.0 lib/ipa_test_kit/provenance_validator.rb