Sha256: 9eb3c9ab24344f11003dec18a7e8dbaa04137815bd0aec05fd3bdcced5a73db2
Contents?: true
Size: 1.79 KB
Versions: 16
Compression:
Stored size: 1.79 KB
Contents
require_relative 'terminology_configuration' module Inferno module Terminology class Validator attr_reader :url, :concept_count, :type, :code_systems, :file_name, :bloom_filter def initialize(**params) @url = params[:url] @concept_count = params[:count] @type = params[:type] @code_systems = params[:code_systems] @file_name = params[:file] @bloom_filter = params[:bloom_filter] end def validate(code:, system: nil) if system raise ProhibitedSystemException, system if TerminologyConfiguration.system_prohibited?(system) coding_in_filter?(code: code, system: system) elsif contains_prohibited_systems? raise ProhibitedSystemException, prohibited_systems.join(', ') unless code_in_allowed_system?(code) true else code_in_any_system?(code) end end def contains_prohibited_systems? prohibited_systems.present? end def prohibited_systems @prohibited_systems ||= code_systems.select { |system| TerminologyConfiguration.system_prohibited?(system) } end def allowed_systems @allowed_systems ||= code_systems.select { |system| TerminologyConfiguration.system_allowed?(system) } end def code_in_allowed_system?(code) code_in_systems?(code, allowed_systems) end def code_in_any_system?(code) code_in_systems?(code, code_systems) end def code_in_systems?(code, possible_systems) possible_systems.any? do |possible_system| coding_in_filter?(code: code, system: possible_system) end end def coding_in_filter?(code:, system:) bloom_filter.include? "#{system}|#{code}" end end end end
Version data entries
16 entries across 16 versions & 1 rubygems