Class: QDM::DataElement

Inherits:
Object
  • Object
show all
Defined in:
lib/ext/data_element.rb

Instance Method Summary collapse

Instance Method Details

#merge!(other) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/ext/data_element.rb', line 3

def merge!(other)
  # ensure they're the same category (e.g. 'encounter')
  return unless qdmCategory == other.qdmCategory

  # ensure they're the same status (e.g. 'performed'), and that they both have a status set (or that they both don't)
  return if respond_to?(:qdmStatus) && !other.respond_to?(:qdmStatus)
  return if !respond_to?(:qdmStatus) && other.respond_to?(:qdmStatus)
  return if respond_to?(:qdmStatus) && other.respond_to?(:qdmStatus) && qdmStatus != other.qdmStatus
  
  # iterate over non-code fields
  fields.each_key do |field|
    next if field[0] == '_' || %w[dataElementCodes category qdmVersion qdmStatus].include?(field)
    
    if send(field).nil?
      send(field + '=', other.send(field))
    end
  end

  self.dataElementCodes = dataElementCodes.concat(other.dataElementCodes).uniq
end