class CqmValidators::DataValidator
Constants
- HL7_QRDA_OIDS
Public Class Methods
new(measure_ids)
click to toggle source
# File lib/data_validator.rb, line 52 def initialize(measure_ids) measures = CQM::Measure.find(measure_ids) @value_set_ids = measures.collect { |m| m.value_sets.map(&:_id) }.flatten.uniq end
Public Instance Methods
validate(file, options = {})
click to toggle source
# File lib/data_validator.rb, line 57 def validate(file, options = {}) doc = get_document(file) doc.xpath('//*[@sdtc:valueSet]').each_with_object([]) do |node, errors| oid = node.at_xpath('@sdtc:valueSet') vs = CQM::ValueSet.where('oid' => oid, '_id' => { '$in' => @value_set_ids }).first next unless vs code = node.at_xpath('@code') code_system_oid = node.at_xpath('@codeSystem') null_flavor = node.at_xpath('@nullFlavor') next unless vs.concepts.where(code: code, code_system_oid: code_system_oid).count.zero? unless null_flavor errors << build_error("The code #{code} in codeSystem #{code_system_oid} cannot be found in the declared valueset #{oid}", node.path, options[:file_name]) end end end