class HQMF1::Precondition

Attributes

expression[R]
id[R]
preconditions[R]
restrictions[R]
subset[R]

Public Class Methods

new(entry, parent, doc) click to toggle source
# File lib/hqmf-parser/1.0/precondition.rb, line 9
def initialize(entry, parent, doc)
  @doc = doc
  @entry = entry
  @id = attr_val('./*/cda:id/@root')
  @restrictions = []
  
  local_subset = attr_val('./cda:subsetCode/@code')
  if local_subset
    @subset = local_subset
  end
  #@subset = attr_val('./cda:subsetCode/@code')
  
  local_restrictions = @entry.xpath('./*/cda:sourceOf[@typeCode!="PRCN" and @typeCode!="COMP"]').collect do |entry|
    Restriction.new(entry, self, @doc)
  end
  @restrictions.concat(local_restrictions)

  @expression = Expression.new(@entry) if @entry.at_xpath('./*/cda:derivationExpr')

  @preconditions = @entry.xpath('./*/cda:sourceOf[@typeCode="PRCN"]').collect do |entry|
    Precondition.new(entry, self, @doc)
  end
  check_nil_conjunction_on_child
end

Public Instance Methods

comparison() click to toggle source
# File lib/hqmf-parser/1.0/precondition.rb, line 54
def comparison
  comparison_def = @entry.at_xpath('./*/cda:sourceOf[@typeCode="COMP"]')
  if comparison_def
    data_criteria_id = attr_val('./*/cda:id/@root')
    @comparison = Comparison.new(data_criteria_id, comparison_def, self, @doc)
  end
end
conjunction() click to toggle source

Get the conjunction code, e.g. AND, OR @return [String] conjunction code

# File lib/hqmf-parser/1.0/precondition.rb, line 36
def conjunction
  attr_val('./cda:conjunctionCode/@code')
end
first_comparison() click to toggle source
# File lib/hqmf-parser/1.0/precondition.rb, line 62
def first_comparison
  if comparison
    return comparison
  elsif @preconditions
    @preconditions.each do |precondition|
      first = precondition.first_comparison
      if first
        return first
      end
    end
  end
  return nil
end
negation() click to toggle source

Return whether the precondition is negated (true) or not (false)

# File lib/hqmf-parser/1.0/precondition.rb, line 41
def negation
  if @entry.at_xpath('./cda:act[@actionNegationInd="true"]')
    is_negation_rationale = (comparison.restrictions.map {|restriction| restriction.type }).include? 'RSON' if comparison
    if is_negation_rationale
      false
    else
      true
    end
  else
    false
  end
end
to_json() click to toggle source
# File lib/hqmf-parser/1.0/precondition.rb, line 76
def to_json
  
  json = build_hash(self, [:id,:conjunction,:negation,:subset])
  json[:comparison] = self.comparison.to_json if self.comparison
  json[:expression] = self.expression.to_json if self.expression
  json[:preconditions] = json_array(self.preconditions)
  json[:restrictions] = json_array(self.restrictions)
  json
  
end