Module: DZero::Transmissions::Concerns::SegmentsMethods

Included in:
Base
Defined in:
lib/dzero/transmissions/concerns/segments_methods.rb

Constant Summary collapse

TRANSMISSION_LEVEL_SEGMENTS =
[
  :patient,
  :insurance,
  :response_message,
  :response_insurance,
  :response_patient,
]
TRANSACTION_LEVEL_SEGMENTS =
[
  :pharmacy_provider,
  :prescriber,
  :coord_of_benefits,
  :workers_comp,
  :claim,
  :dur_pps,
  :coupon,
  :compound,
  :pricing,
  :prior_auth,
  :clinical,
  :additional_documentation,
  :facility,
  :narrative,
  :response_status,
  :response_claim,
  :response_pricing,
  :response_dur_pps,
  :response_prior_auth,
  :response_additional_documentation,
  :response_coord_of_benefits
]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



35
36
37
38
39
40
41
42
# File 'lib/dzero/transmissions/concerns/segments_methods.rb', line 35

def self.included(base)
  ::DZero::Segments::Base.segment_id_to_symbol.each do |segment_identifier, segment_name_sym|
    segment_klass = ::DZero::Segments::Base.get_klass_by_identifier(segment_identifier)
    base.send(:define_method, "#{segment_name_sym}_segment") do
      get_segment(segment_klass)
    end
  end
end

Instance Method Details

#get_segment(segment_klass) ⇒ Object



44
45
46
47
48
49
50
51
52
# File 'lib/dzero/transmissions/concerns/segments_methods.rb', line 44

def get_segment(segment_klass)
  self.transmission_group.segments.detect { |s| s.is_a?(segment_klass) } || 
  self.transaction_groups.first.segments.detect { |s| s.is_a?(segment_klass) } ||
  begin
    segment = segment_klass.new({})
    self.segments << segment
    segment
  end
end

#segmentsObject



69
70
71
72
73
74
# File 'lib/dzero/transmissions/concerns/segments_methods.rb', line 69

def segments
  all = []
  all += transmission_group.segments
  all += transaction_groups.map(&:segments).flatten
  all.compact
end

#sort_segments(segments) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/dzero/transmissions/concerns/segments_methods.rb', line 54

def sort_segments(segments)
  segments.each do |segment|
    segment_sym = segment.class.symbol
    if TRANSMISSION_LEVEL_SEGMENTS.include?(segment_sym)
      transmission_group.segments << segment
    else
      if transaction_groups.empty?
        transaction_groups << ::DZero::Transmissions::Groups::TransactionGroup.new({ segments: [] })
      end

      transaction_groups.first.segments << segment
    end
  end
end