class SimpleXml::PopulationCriteria

Represents an HQMF population criteria, also supports all the same methods as SimpleXml::Precondition

Constants

DENEX
DENEXCEP
DENOM
IPP
MSRPOPL
MSRPOPLEX
NUMER
NUMEX
OBSERV
STRAT
TITLES

Attributes

aggregator[RW]
entry[R]
hqmf_id[RW]
id[RW]
preconditions[R]
title[R]
type[R]

Public Class Methods

new(entry, doc, index) click to toggle source

Create a new population criteria from the supplied HQMF entry @param [Nokogiri::XML::Element] the HQMF entry

# File lib/model/population_criteria.rb, line 37
def initialize(entry, doc, index)
  @doc = doc
  @entry = entry

  @hqmf_id = attr_val('@uuid')
  @type = translate_type(attr_val('@type'))
  @title = TITLES[@type]

  @id = @type
  @id += "_#{index}" if (index > 0)

  @preconditions = @entry.xpath("#{Precondition::LOGICAL_OP}|#{Precondition::SUB_TREE}").collect do |precondition_def|
    Precondition.new(precondition_def, @doc)
  end
  @preconditions.select! {|p| !p.preconditions.empty? || p.reference}

  handle_negations

end

Public Instance Methods

get_logic_leaves(children=nil) click to toggle source
# File lib/model/population_criteria.rb, line 95
def get_logic_leaves(children=nil)
  children ||= @preconditions
  leaves = []
  children.each do |precondition|
    unless (precondition.preconditions.empty?)
      leaves.concat get_logic_leaves(precondition.preconditions)
    else
      leaves << precondition
    end
  end
  leaves
end
handle_negations() click to toggle source
# File lib/model/population_criteria.rb, line 89
def handle_negations
  @preconditions.each do |p|
    p.handle_negations(self)
  end
end
set_index(index) click to toggle source
# File lib/model/population_criteria.rb, line 57
def set_index(index)
  @id = @type
  @id += "_#{index}" if (index > 0)
end
to_model() click to toggle source
# File lib/model/population_criteria.rb, line 108
def to_model
  mps = preconditions.collect {|p| p.to_model}
  HQMF::PopulationCriteria.new(id, hqmf_id, type, mps, title, aggregator)
end
translate_type(type) click to toggle source
# File lib/model/population_criteria.rb, line 62
def translate_type(type)
  case type
  when IPP, 'initialPopulation'
    HQMF::PopulationCriteria::IPP
  when DENOM
    HQMF::PopulationCriteria::DENOM
  when DENEX
    HQMF::PopulationCriteria::DENEX
  when DENEXCEP
    HQMF::PopulationCriteria::DENEXCEP
  when NUMER
    HQMF::PopulationCriteria::NUMER
  when MSRPOPL
    HQMF::PopulationCriteria::MSRPOPL
  when OBSERV
    HQMF::PopulationCriteria::OBSERV
  when STRAT
    HQMF::PopulationCriteria::STRAT
  when NUMEX
    HQMF::PopulationCriteria::NUMEX
  when MSRPOPLEX
    HQMF::PopulationCriteria::MSRPOPLEX
  else
    raise "Unknown population criteria type #{type}"
  end
end