Class: CqmValidators::MeasureValidator

Inherits:
Object
  • Object
show all
Includes:
BaseValidator
Defined in:
lib/measure_validator.rb

Direct Known Subclasses

Cat1Measure, Cat3Measure

Instance Method Summary collapse

Methods included from BaseValidator

#build_error, #get_document

Constructor Details

#initialize(template_oid) ⇒ MeasureValidator

Returns a new instance of MeasureValidator.



7
8
9
# File 'lib/measure_validator.rb', line 7

def initialize(template_oid)
  @template_oid = template_oid
end

Instance Method Details

#validate(file, data = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/measure_validator.rb', line 11

def validate(file, data = {})
  @errors = []
  @doc = get_document(file)
  @doc.root.add_namespace_definition('cda', 'urn:hl7-org:v3')
  measure_ids = CQM::Measure.all.map(&:hqmf_id)
  doc_measure_ids = @doc.xpath(measure_selector).map(&:value).map(&:upcase)
  # list of all of the set ids in the QRDA
  doc_neutral_ids = @doc.xpath(neutral_measure_selector).map(&:value).map(&:upcase).sort
  # list of all of the setids in the QRDA that are also in the bundle, includes duplicates if code appears twice in document
  bundle_neutral_ids = CQM::Measure.distinct(:hqmf_set_id)
  doc_bundle_neutral_ids = doc_neutral_ids - (doc_neutral_ids - bundle_neutral_ids)
  validate_measure_ids(doc_measure_ids, measure_ids, data)
  validate_set_ids(doc_neutral_ids, doc_bundle_neutral_ids, data)
  validate_measure_ids_set_ids_usage(doc_bundle_neutral_ids, doc_measure_ids, data) if validate_no_repeating_measure_population_ids(data)

  @errors
end