oddb2xml 2.1.4 → 2.1.5
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.
- checksums.yaml +4 -4
 - data/Gemfile.lock +1 -1
 - data/History.txt +6 -0
 - data/lib/oddb2xml/builder.rb +6 -4
 - data/lib/oddb2xml/compositions_syntax.rb +20 -3
 - data/lib/oddb2xml/parslet_compositions.rb +1 -0
 - data/lib/oddb2xml/version.rb +1 -1
 - data/spec/calc_spec.rb +11 -1
 - data/spec/composition_syntax_spec.rb +4 -4
 - data/spec/data/swissmedic_package-galenic.xlsx +0 -0
 - data/spec/parslet_spec.rb +0 -14
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: c23ad09144021304d4c843e68e223d7071fa6f45
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 28469d65080b256c22ddece82312e8a580144dfa
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 1741fd3f64f4b735062b4e456e4643b673cb5bf9a31ce4fad59737b95ac3102d35c13d804796947fbc2602f8940d2aa3fe5b46dcb6d886cfb349dc3279f5dc4f
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 6e75c9e2f02ef5811e2f6227bf5c82da6111b5d030aaa2bdbaeda1fd36220b4882d128075070670a7493cc444a60e8f2b39d72c285f11de51f7b69c7352898a5
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/History.txt
    CHANGED
    
    
    
        data/lib/oddb2xml/builder.rb
    CHANGED
    
    | 
         @@ -713,12 +713,14 @@ module Oddb2xml 
     | 
|
| 
       713 
713 
     | 
    
         
             
                            info.compositions.each { |composition|
         
     | 
| 
       714 
714 
     | 
    
         
             
                              xml.COMPOSITION {
         
     | 
| 
       715 
715 
     | 
    
         
             
                                xml.EXCIPIENS { emit_substance(xml, composition.excipiens) } if composition.excipiens
         
     | 
| 
       716 
     | 
    
         
            -
                                xml.CORRESP composition.corresp if composition.corresp
         
     | 
| 
       717 
716 
     | 
    
         
             
                                xml.LABEL composition.label if composition.label
         
     | 
| 
       718 
717 
     | 
    
         
             
                                xml.LABEL_DESCRIPTION composition.label_description if composition.label_description
         
     | 
| 
       719 
     | 
    
         
            -
                                xml. 
     | 
| 
       720 
     | 
    
         
            -
             
     | 
| 
       721 
     | 
    
         
            -
             
     | 
| 
      
 718 
     | 
    
         
            +
                                xml.CORRESP composition.corresp if composition.corresp
         
     | 
| 
      
 719 
     | 
    
         
            +
                                if composition.substances and composition.substances.size > 0
         
     | 
| 
      
 720 
     | 
    
         
            +
                                  xml.SUBSTANCES {
         
     | 
| 
      
 721 
     | 
    
         
            +
                                      composition.substances.each { |substance| xml.SUBSTANCE { emit_substance(xml, substance, true) }}
         
     | 
| 
      
 722 
     | 
    
         
            +
                                  }
         
     | 
| 
      
 723 
     | 
    
         
            +
                                end
         
     | 
| 
       722 
724 
     | 
    
         
             
                              }
         
     | 
| 
       723 
725 
     | 
    
         
             
                            }
         
     | 
| 
       724 
726 
     | 
    
         
             
                          }
         
     | 
| 
         @@ -399,9 +399,6 @@ class CompositionParser < Parslet::Parser 
     | 
|
| 
       399 
399 
     | 
    
         
             
                str('doses ') |
         
     | 
| 
       400 
400 
     | 
    
         
             
                str('Pulver: ') |
         
     | 
| 
       401 
401 
     | 
    
         
             
                str('Diluens: ') |
         
     | 
| 
       402 
     | 
    
         
            -
                str('Solvens (i.v.): ') |
         
     | 
| 
       403 
     | 
    
         
            -
                str('Solvens (i.m.): ') |
         
     | 
| 
       404 
     | 
    
         
            -
                str('Solvens: ') |
         
     | 
| 
       405 
402 
     | 
    
         
             
                str('Solutio reconstituta:') |
         
     | 
| 
       406 
403 
     | 
    
         
             
                str('Corresp., ') |
         
     | 
| 
       407 
404 
     | 
    
         
             
                str('Corresp. ') |
         
     | 
| 
         @@ -412,6 +409,13 @@ class CompositionParser < Parslet::Parser 
     | 
|
| 
       412 
409 
     | 
    
         
             
                                  }
         
     | 
| 
       413 
410 
     | 
    
         
             
              rule(:corresp_line_neu) { corresp_label >> any.repeat(1).as(:corresp) }
         
     | 
| 
       414 
411 
     | 
    
         | 
| 
      
 412 
     | 
    
         
            +
              rule(:solvens_label) {
         
     | 
| 
      
 413 
     | 
    
         
            +
                str('Solvens (i.v.)') |
         
     | 
| 
      
 414 
     | 
    
         
            +
                str('Solvens (i.m.)') |
         
     | 
| 
      
 415 
     | 
    
         
            +
                str('Solvens')
         
     | 
| 
      
 416 
     | 
    
         
            +
              }
         
     | 
| 
      
 417 
     | 
    
         
            +
              rule(:solvens_line) { solvens_label.as(:label) >> (str(': ') >> composition.repeat(1).as(:composition) | any.repeat(1).as(:corresp))}
         
     | 
| 
      
 418 
     | 
    
         
            +
             
     | 
| 
       415 
419 
     | 
    
         
             
              rule(:multiple_et_line) {
         
     | 
| 
       416 
420 
     | 
    
         
             
                                    ((label_id >> label_separator >> space? >> (str('pro usu') |str('et '))).repeat(1) >> any.repeat(1)).as(:corresp)
         
     | 
| 
       417 
421 
     | 
    
         
             
              }
         
     | 
| 
         @@ -425,6 +429,7 @@ class CompositionParser < Parslet::Parser 
     | 
|
| 
       425 
429 
     | 
    
         
             
                                            composition.as(:composition)  }
         
     | 
| 
       426 
430 
     | 
    
         | 
| 
       427 
431 
     | 
    
         
             
              rule(:expression_comp) {
         
     | 
| 
      
 432 
     | 
    
         
            +
                solvens_line |
         
     | 
| 
       428 
433 
     | 
    
         
             
                multiple_et_line |
         
     | 
| 
       429 
434 
     | 
    
         
             
                label_id_composition |
         
     | 
| 
       430 
435 
     | 
    
         
             
                corresp_line_neu |
         
     | 
| 
         @@ -435,6 +440,18 @@ class CompositionParser < Parslet::Parser 
     | 
|
| 
       435 
440 
     | 
    
         
             
                space.repeat(3)
         
     | 
| 
       436 
441 
     | 
    
         
             
              }
         
     | 
| 
       437 
442 
     | 
    
         | 
| 
      
 443 
     | 
    
         
            +
              rule(:expression_compD) {
         
     | 
| 
      
 444 
     | 
    
         
            +
                solvens_line |
         
     | 
| 
      
 445 
     | 
    
         
            +
                multiple_et_line.as('multiple_et_line') |
         
     | 
| 
      
 446 
     | 
    
         
            +
                label_id_composition.as('label_id_composition') |
         
     | 
| 
      
 447 
     | 
    
         
            +
                corresp_line_neu.as('corresp_line_neu') |
         
     | 
| 
      
 448 
     | 
    
         
            +
                leading_label.maybe >> space? >> composition.as(:composition) >> space? >> str('.').maybe >> space? |
         
     | 
| 
      
 449 
     | 
    
         
            +
                polvac.as('polvac') |
         
     | 
| 
      
 450 
     | 
    
         
            +
                label_comment_excipiens.as('label_comment_excipiens') |
         
     | 
| 
      
 451 
     | 
    
         
            +
                excipiens.as(:composition) |
         
     | 
| 
      
 452 
     | 
    
         
            +
                space.repeat(3)
         
     | 
| 
      
 453 
     | 
    
         
            +
              }
         
     | 
| 
      
 454 
     | 
    
         
            +
             
     | 
| 
       438 
455 
     | 
    
         
             
              root :expression_comp
         
     | 
| 
       439 
456 
     | 
    
         
             
            end
         
     | 
| 
       440 
457 
     | 
    
         | 
| 
         @@ -441,6 +441,7 @@ class ParseComposition 
     | 
|
| 
       441 
441 
     | 
    
         
             
                  end
         
     | 
| 
       442 
442 
     | 
    
         
             
                  result.label_description = label_description.gsub(/:+$/, '').strip if label_description
         
     | 
| 
       443 
443 
     | 
    
         
             
                end
         
     | 
| 
      
 444 
     | 
    
         
            +
                result.corresp = ast[:corresp].to_s.sub(/:\s+/, '') if not result.corresp and ast.is_a?(Hash) and ast[:corresp]
         
     | 
| 
       444 
445 
     | 
    
         
             
                return result
         
     | 
| 
       445 
446 
     | 
    
         
             
              end
         
     | 
| 
       446 
447 
     | 
    
         
             
            end
         
     | 
    
        data/lib/oddb2xml/version.rb
    CHANGED
    
    
    
        data/spec/calc_spec.rb
    CHANGED
    
    | 
         @@ -142,6 +142,16 @@ Corresp. 5300 kJ.", 
     | 
|
| 
       142 
142 
     | 
    
         
             
                                        )
         
     | 
| 
       143 
143 
     | 
    
         | 
| 
       144 
144 
     | 
    
         
             
            if RunAllTests
         
     | 
| 
      
 145 
     | 
    
         
            +
              context 'should parse Solvens:' do
         
     | 
| 
      
 146 
     | 
    
         
            +
                text = 'Solvens: conserv.: alcohol benzylicus 18 mg, aqua ad iniectabilia q.s. ad solutionem pro 2 ml.'
         
     | 
| 
      
 147 
     | 
    
         
            +
                info = Calc.new('Solu-Cortef 100 mg, Injektions-/Infusionspräparat', nil, nil,
         
     | 
| 
      
 148 
     | 
    
         
            +
                                  'hydrocortisonum',
         
     | 
| 
      
 149 
     | 
    
         
            +
                                  text
         
     | 
| 
      
 150 
     | 
    
         
            +
                                  )
         
     | 
| 
      
 151 
     | 
    
         
            +
                specify { expect(info.compositions.first.substances.first.name).to eq   "Alcohol Benzylicus" }
         
     | 
| 
      
 152 
     | 
    
         
            +
                specify { expect(info.compositions.first.substances.size).to eq  1 }
         
     | 
| 
      
 153 
     | 
    
         
            +
              end
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
       145 
155 
     | 
    
         
             
              context "adapt ATC for epha 16105 C05BA" do
         
     | 
| 
       146 
156 
     | 
    
         
             
                specify { expect(Oddb2xml.add_epha_changes_for_ATC(16105, 'C05BA')).to eq 'C05BA01' }
         
     | 
| 
       147 
157 
     | 
    
         
             
              end
         
     | 
| 
         @@ -311,9 +321,9 @@ if RunAllTests 
     | 
|
| 
       311 
321 
     | 
    
         
             
                  File.exists?(oddb_calc_xsd).should eq true
         
     | 
| 
       312 
322 
     | 
    
         
             
                  xsd = Nokogiri::XML::Schema(File.read(oddb_calc_xsd))
         
     | 
| 
       313 
323 
     | 
    
         
             
                  doc = Nokogiri::XML(File.read(xml_file_name))
         
     | 
| 
      
 324 
     | 
    
         
            +
                  # puts xml; binding.pry
         
     | 
| 
       314 
325 
     | 
    
         
             
                  xsd.validate(doc).each do |error|  expect(error).to be_nil end
         
     | 
| 
       315 
326 
     | 
    
         
             
                  doc = REXML::Document.new xml
         
     | 
| 
       316 
     | 
    
         
            -
                  # puts xml; binding.pry
         
     | 
| 
       317 
327 
     | 
    
         
             
                  gtin = '7680540151009'
         
     | 
| 
       318 
328 
     | 
    
         
             
                  ean12 = '7680' + sprintf('%05d',tst_naropin.iksnr_A) + sprintf('%03d',tst_naropin.pack_K)
         
     | 
| 
       319 
329 
     | 
    
         
             
                  ean13 = (ean12 + Oddb2xml.calc_checksum(ean12))
         
     | 
| 
         @@ -23,12 +23,12 @@ let(:parser) { CompositionParser.new } 
     | 
|
| 
       23 
23 
     | 
    
         
             
                let(:substance_name_parser) { parser.substance_name }
         
     | 
| 
       24 
24 
     | 
    
         
             
                let(:number_parser) { parser.number }
         
     | 
| 
       25 
25 
     | 
    
         
             
                let(:excipiens_parser) { parser.excipiens }
         
     | 
| 
       26 
     | 
    
         
            -
                let(:composition_parser) { parser 
     | 
| 
      
 26 
     | 
    
         
            +
                let(:composition_parser) { parser }
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
                it "parses identifier" do
         
     | 
| 
       29 
     | 
    
         
            -
                   
     | 
| 
       30 
     | 
    
         
            -
                   
     | 
| 
       31 
     | 
    
         
            -
                   
     | 
| 
      
 29 
     | 
    
         
            +
                  text = 'Solvens: conserv.: alcohol benzylicus 18 mg, aqua ad iniectabilia q.s. ad solutionem pro 2 ml.'
         
     | 
| 
      
 30 
     | 
    
         
            +
                  res1 = composition_parser.parse_with_debug(text)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  pp res1; binding.pry
         
     | 
| 
       32 
32 
     | 
    
         
             
                end
         
     | 
| 
       33 
33 
     | 
    
         
             
              end
         
     | 
| 
       34 
34 
     | 
    
         
             
            end
         
     | 
| 
         Binary file 
     | 
    
        data/spec/parslet_spec.rb
    CHANGED
    
    | 
         @@ -24,23 +24,9 @@ to_add = %( 
     | 
|
| 
       24 
24 
     | 
    
         
             
                  pp composition; binding.pry
         
     | 
| 
       25 
25 
     | 
    
         
             
            )
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
              context "should handle failed" do
         
     | 
| 
       28 
     | 
    
         
            -
              strings = [
         
     | 
| 
       29 
     | 
    
         
            -
                ]
         
     | 
| 
       30 
     | 
    
         
            -
                strings.each{ |string|
         
     | 
| 
       31 
     | 
    
         
            -
                  composition = ParseComposition.from_string(string)
         
     | 
| 
       32 
     | 
    
         
            -
                  binding.pry if composition.substances.size == 0
         
     | 
| 
       33 
     | 
    
         
            -
                  specify { expect( composition.substances.size).not_to eq 0 }
         
     | 
| 
       34 
     | 
    
         
            -
                }
         
     | 
| 
       35 
     | 
    
         
            -
              end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
27 
     | 
    
         
             
            end
         
     | 
| 
       38 
28 
     | 
    
         | 
| 
       39 
29 
     | 
    
         
             
            if RunFailingSpec
         
     | 
| 
       40 
     | 
    
         
            -
            describe ParseComposition do
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
            end
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
30 
     | 
    
         
             
            end
         
     | 
| 
       45 
31 
     | 
    
         | 
| 
       46 
32 
     | 
    
         
             
            describe ParseComposition do
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: oddb2xml
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.1.5
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Yasuhiro Asaka, Zeno R.R. Davatz
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2015-06- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-06-03 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rubyzip
         
     |