health_seven 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/health_seven.gemspec +1 -4
- data/lib/health_seven/message.rb +36 -5
- data/spec/admit_message_spec.rb +7 -1
- data/spec/diagnoses_message_spec.rb +0 -1
- data/spec/messages/disordered_admit.hl7 +12 -0
- data/spec/oru_message_spec.rb +0 -1
- metadata +3 -2
    
        data/health_seven.gemspec
    CHANGED
    
    | @@ -1,9 +1,6 @@ | |
| 1 | 
            -
            # Version numbering: http://wiki.github.com/sandal/prawn/development-roadmap
         | 
| 2 | 
            -
            HEALTH_SEVEN_VERSION = "0.0.2"
         | 
| 3 | 
            -
             | 
| 4 1 | 
             
            Gem::Specification.new do |spec|
         | 
| 5 2 | 
             
              spec.name = "health_seven"
         | 
| 6 | 
            -
              spec.version =  | 
| 3 | 
            +
              spec.version = "0.0.3"
         | 
| 7 4 | 
             
              spec.platform = Gem::Platform::RUBY
         | 
| 8 5 | 
             
              spec.summary = "Ruby library for hl7 2.x"
         | 
| 9 6 | 
             
              spec.files =  Dir.glob("{lib,spec}/**/**/*") +
         | 
    
        data/lib/health_seven/message.rb
    CHANGED
    
    | @@ -48,7 +48,7 @@ module HealthSeven | |
| 48 48 | 
             
                    gramar.push <<-RULE
         | 
| 49 49 |  | 
| 50 50 | 
             
                   rule #{self.rule_name}
         | 
| 51 | 
            -
             | 
| 51 | 
            +
                     #{seg_name} payload delim #{_children_enum.join(" ")} <HealthSeven::SegmentLiteral>
         | 
| 52 52 | 
             
                   end
         | 
| 53 53 | 
             
                   RULE
         | 
| 54 54 |  | 
| @@ -75,24 +75,52 @@ module HealthSeven | |
| 75 75 | 
             
                    end
         | 
| 76 76 | 
             
                  end
         | 
| 77 77 | 
             
                end
         | 
| 78 | 
            +
             | 
| 78 79 | 
             
                class MessageDef < SegmentDef
         | 
| 80 | 
            +
                  def _children_enum
         | 
| 81 | 
            +
                    @segments.map do |s|
         | 
| 82 | 
            +
                      s.dsl_off!
         | 
| 83 | 
            +
                      s.rule_name
         | 
| 84 | 
            +
                    end
         | 
| 85 | 
            +
                  end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                  def optional
         | 
| 88 | 
            +
                    @optional ||= @segments.map do |s|
         | 
| 89 | 
            +
                      s.rule_name if s.optional?
         | 
| 90 | 
            +
                    end.compact
         | 
| 91 | 
            +
                  end
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                  def required
         | 
| 94 | 
            +
                    @reqired ||= @segments.map do |s|
         | 
| 95 | 
            +
                      s.rule_name unless s.optional?
         | 
| 96 | 
            +
                    end.compact
         | 
| 97 | 
            +
                  end
         | 
| 98 | 
            +
             | 
| 79 99 | 
             
                  def to_gramar(gramar)
         | 
| 80 100 | 
             
                    gramar.push <<-RULE
         | 
| 81 101 |  | 
| 82 102 | 
             
                   rule message
         | 
| 83 | 
            -
             | 
| 103 | 
            +
                     msh segment* "\\n" <HealthSeven::SegmentLiteral>
         | 
| 104 | 
            +
                   end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                   rule segment
         | 
| 107 | 
            +
                     #{_children_enum.join(" / ")}
         | 
| 84 108 | 
             
                   end
         | 
| 85 109 |  | 
| 86 110 | 
             
                   rule delim
         | 
| 87 | 
            -
                     "#{13.chr}" | 
| 111 | 
            +
                     "#{13.chr}"
         | 
| 88 112 | 
             
                   end
         | 
| 89 113 |  | 
| 90 114 | 
             
                   rule not_delim
         | 
| 91 | 
            -
             | 
| 115 | 
            +
                     [^#{13.chr}]
         | 
| 92 116 | 
             
                   end
         | 
| 93 117 |  | 
| 94 118 | 
             
                   rule payload
         | 
| 95 | 
            -
             | 
| 119 | 
            +
                     not_delim+ <HealthSeven::FieldsLiteral>
         | 
| 120 | 
            +
                   end
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                   rule msh
         | 
| 123 | 
            +
                     'MSH' payload delim  <HealthSeven::SegmentLiteral>
         | 
| 96 124 | 
             
                   end
         | 
| 97 125 | 
             
                    RULE
         | 
| 98 126 |  | 
| @@ -181,7 +209,9 @@ module HealthSeven | |
| 181 209 | 
             
                    raise HealthSeven::BadGrammarException, message
         | 
| 182 210 | 
             
                  end
         | 
| 183 211 | 
             
                  msg = Message.new
         | 
| 212 | 
            +
                  @required_segments = Object.const_get("#{self.name}").message_def.required
         | 
| 184 213 | 
             
                  self.clean_tree(ast_tree, msg)
         | 
| 214 | 
            +
                  raise "No required segment(s) found: #{@required_segments.join(', ')}" unless @required_segments.empty?
         | 
| 185 215 |  | 
| 186 216 | 
             
                  msg
         | 
| 187 217 | 
             
                end
         | 
| @@ -193,6 +223,7 @@ module HealthSeven | |
| 193 223 |  | 
| 194 224 | 
             
                  segment.name = node.name
         | 
| 195 225 | 
             
                  segment.fields = node.fields
         | 
| 226 | 
            +
                  @required_segments.delete(node.name.downcase)
         | 
| 196 227 |  | 
| 197 228 | 
             
                  return true unless node.elements
         | 
| 198 229 | 
             
                  node.elements.each do |e|
         | 
    
        data/spec/admit_message_spec.rb
    CHANGED
    
    | @@ -3,7 +3,6 @@ require 'spec_helper' | |
| 3 3 | 
             
            describe HealthSeven::Message do
         | 
| 4 4 | 
             
              class AdmitMessage < HealthSeven::Message
         | 
| 5 5 | 
             
                define_message do
         | 
| 6 | 
            -
                  msh
         | 
| 7 6 | 
             
                  evn
         | 
| 8 7 | 
             
                  pid
         | 
| 9 8 | 
             
                  nk1
         | 
| @@ -38,4 +37,11 @@ describe HealthSeven::Message do | |
| 38 37 | 
             
                  error.message.should =~ 'IN2'
         | 
| 39 38 | 
             
                end
         | 
| 40 39 | 
             
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              it 'should not raise an exception in case of incorrect order of top level segments' do
         | 
| 42 | 
            +
                -> {
         | 
| 43 | 
            +
                  msg = AdmitMessage.parse(load_message('disordered_admit'))
         | 
| 44 | 
            +
                }.should_not raise_error
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              end
         | 
| 41 47 | 
             
            end
         | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            MSH|^~\&|MS4ADT|001|UST|001|20090123204848||ADT^A04|00000000008186657|P|2.3
         | 
| 2 | 
            +
            PID|1|111111122^^^MS4^PN^|11-22-33^^^MS4^MR^001|11-22-33^^^MS4^MR^001|SMITH^LIDA^^^||19670101|F||P|9166 NEW-YORK CANYON^(OAKVIEW CONV)^NEW-YORK^CA^91042^^^||(111)111-2222|| 31|W|OTH|00016604787^^^MS4001^AN^001|000-00-0000
         | 
| 3 | 
            +
            EVN|A04|20090123204846|||NURSE
         | 
| 4 | 
            +
            NK1|1|IVANOV^JOHN^^^|J|7903 HELLSTREET^^NEW-YORK^CA^91040^^|(222)222-3333||S||||||UNKNOWN|S|F||||||||||NON||||||||202244189^^^MS4^PN^||C||          1
         | 
| 5 | 
            +
            PV1||I|ICU5^T589^ A^001^OCCPD|1|||20131^PARTAMIAN^LEON^N^^^MD^^^^^^^|||MED||||7||||I||0401|3||||||||||||||||||001|OCCPD||||200901192300||46141.20|46141.20
         | 
| 6 | 
            +
            AL1|1|FA|NONE^NONE^^^^|||
         | 
| 7 | 
            +
            GT1|1|111111122^^^MS4^PN^|SMITH^LIDA^^^|IVANOV^JOHN^^^|9166 NEW-YORK CANYON^(OAKVIEW CONV)^NEW-YORK^CA^91042^^|(111)111-2222||19670101|F||A|000-00-0000||||RETIRED|^^^^00000||||||||||||07496|W||||||||Y|||OTH||||||||RETIRED||||||P
         | 
| 8 | 
            +
            IN1|1||0401|MEDICARE I/P|^^^^     |||||||19990201|||MCR|SMITH^LIDA^^^|A|19670101|9166 NEW-YORK CANYON^(OAKVIEW CONV)^NEW-YORK^CA^91042^^^^|||1||||||||||||||000000008M|||||||F|^^^^00000|Y||||111111122
         | 
| 9 | 
            +
            IN2||000000008|07496^RETIRED|||000000008M||||||||||||||||||||||||||||||Y|||OTH||||W|||RETIRED|||||||||||||||||(111)111-2222||||||||P
         | 
| 10 | 
            +
            IN1|2||0304|MEDI-CAL SECONDARY|P.O. BOX 15600^^NEW-YORK^CA^95891-1600|||||||19940501|||MCD|SMITH^LIDA^^^|A|19670101|9166 NEW-YORK CANYON^(OAKVIEW CONV)^NEW-YORK^CA^91042^^^^|||2||||||||||||||00000000000000|||||||F|^^^^00000|N||||111111122
         | 
| 11 | 
            +
            IN2||000000000|07496^RETIRED|||||00000000000000||||||||||||||||||||||||||||Y|||OTH||||W|||RETIRED|||||||||||||||||(111)111-2222||||||||P
         | 
| 12 | 
            +
            ZBC|16000087|TELPC01   |TELLABEL
         | 
    
        data/spec/oru_message_spec.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            name: health_seven
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 4 | 
             
              prerelease: 
         | 
| 5 | 
            -
              version: 0.0. | 
| 5 | 
            +
              version: 0.0.3
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| 8 8 | 
             
            - Nikolay Ryzhikov
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2013-01- | 
| 13 | 
            +
            date: 2013-01-21 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              type: :runtime
         | 
| @@ -40,6 +40,7 @@ files: | |
| 40 40 | 
             
            - lib/health_seven.rb
         | 
| 41 41 | 
             
            - spec/messages/corrupt_admit.hl7
         | 
| 42 42 | 
             
            - spec/messages/admit.hl7
         | 
| 43 | 
            +
            - spec/messages/disordered_admit.hl7
         | 
| 43 44 | 
             
            - spec/messages/diagnoses.hl7
         | 
| 44 45 | 
             
            - spec/messages/oru_r01.hl7
         | 
| 45 46 | 
             
            - spec/diagnoses_message_spec.rb
         |