Module: HL7::Message::SegmentFields
- Included in:
- Segment
- Defined in:
- lib/segment_fields.rb
Overview
SegmentFields
class HL7::Message::Segment::NK1 < HL7::Message::Segment
weight 100 # segments are sorted ascendingly
add_field :something_you_want # assumes :idx=>1
add_field :something_else, :idx=>6 # :idx=>6 and field count=6
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#field_info(name) ⇒ Object
:nodoc:.
-
#read_field(name) ⇒ Object
:nodoc:.
-
#write_field(name, value) ⇒ Object
:nodoc:.
Class Method Details
.included(base) ⇒ Object
7 8 9 |
# File 'lib/segment_fields.rb', line 7 def self.included(base) base.extend(ClassMethods) end |
Instance Method Details
#field_info(name) ⇒ Object
:nodoc:
79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/segment_fields.rb', line 79 def field_info( name ) #:nodoc: field_blk = nil idx = name # assume we've gotten a fixnum unless name.kind_of?( Fixnum ) fld_info = self.class.fields[ name ] idx = fld_info[:idx].to_i field_blk = fld_info[:blk] end [ idx, field_blk ] end |
#read_field(name) ⇒ Object
:nodoc:
91 92 93 94 95 96 97 98 99 100 |
# File 'lib/segment_fields.rb', line 91 def read_field( name ) #:nodoc: idx, field_blk = field_info( name ) return nil unless idx return nil if (idx >= @elements.length) ret = @elements[ idx ] ret = ret.first if (ret.kind_of?(Array) && ret.length == 1) ret = field_blk.call( ret ) if field_blk ret end |
#write_field(name, value) ⇒ Object
:nodoc:
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/segment_fields.rb', line 102 def write_field( name, value ) #:nodoc: idx, field_blk = field_info( name ) return nil unless idx if (idx >= @elements.length) # make some space for the incoming field, missing items are assumed to # be empty, so this is valid per the spec -mg missing = ("," * (idx-@elements.length)).split(',',-1) @elements += missing end value = value.first if (value && value.kind_of?(Array) && value.length == 1) value = field_blk.call( value ) if field_blk @elements[ idx ] = value.to_s end |