mogox/ruby-hl7

View on GitHub
lib/segment_generator.rb

Summary

Maintainability
A
0 mins
Test Coverage
# Class for grouping the messages delimiter
class HL7::Message::Delimiter
  attr_accessor :item, :element, :segment

  def initialize(element_delim, item_delim, segment_delim)
    @element = element_delim
    @item = item_delim
    @segment = segment_delim
  end
end

# Methods for creating segments in Message
class HL7::Message::SegmentGenerator

  attr_reader :element, :last_seg
  attr_reader :delimiter

  attr_accessor :seg_parts, :seg_name

  def initialize(element, last_seg, delimiter)
    @element = element
    @last_seg = last_seg
    @delimiter = delimiter

    @seg_parts = HL7::MessageParser.split_by_delimiter( element,
                                                        delimiter.element )
  end

  def valid_segments_parts?
    return true if @seg_parts && @seg_parts.length > 0

    if HL7.ParserConfig[:empty_segment_is_error]
      raise HL7::EmptySegmentNotAllowed
    else
      return false
    end
  end

  def build
    klass = get_segment_class
    new_seg = klass.new( @element, [@delimiter.element, @delimiter.item] )
    new_seg
  end

  def get_segment_class
    segment_to_search = @seg_name.to_sym
    segment_to_search = @seg_name if RUBY_VERSION < "1.9"

    if HL7::Message::Segment.constants.index(segment_to_search)
      eval("HL7::Message::Segment::%s" % @seg_name)
    else
      HL7::Message::Segment::Default
    end
  end
end