oddb2xml 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MWIzODZlNjVlYTgzMzIxNDUwNmQ1NjgwMjdhNGFkNWEwNmI2NjExYQ==
5
- data.tar.gz: !binary |-
6
- NDYwYWMxMmQ5YjVlNWM4NmNlOTU4NWY0NDU2YjRhZThlNTUzNjhmNw==
2
+ SHA1:
3
+ metadata.gz: ec7329a09ad1bb1583d274d1d482e453eef3c37f
4
+ data.tar.gz: 181017c8c0b5508cf2e8951ae9c90184d9cfcf4f
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NzQ1OWJlMmVlZDMzM2ZkMDM0M2Q0MzNlNGEyNzYxNGE0YjYxN2FjM2RkNjM0
10
- Y2Y0Yjk4YTkxZGY5YTBjODMzYWE2ZjQ3NGZlMzU5YTUxZmI0N2QxZGY5MDQ0
11
- YjRjMWIyNWNmZGI1YzYyOTBiODU2MjU1MDFkODU5MjIyOTczYjE=
12
- data.tar.gz: !binary |-
13
- MjIxZWJkY2JmNzhlOGNhNTljMDUwZmU3YThhODAwYTNiNTYxMTg0MDE3ZDcy
14
- MGMzNjA0MGY4ODFlZWJjM2MzYzIxOTU4MTVkOWVhMTUxMzBhOTE4MDQ5OTM3
15
- ODY4ZDY0ZWNjZDQ1YzY2NTQ0ZDQyNDI1MjgxYmYwNDkyNzcyMTY=
6
+ metadata.gz: 7d818fe51aedc2c48e90d081fe21c620e5c311446a0e6c7a9cd62654272f41a0d6ad9df27f13e9beb3bb3ea70569f0957080fb97f9670646e49b4abefad2f8c0
7
+ data.tar.gz: f1d1a4eccc9ee8c35e3f1d5f42b0d4ec3fd9f089e194ab2b0e7c7bc644b21898a71dd606d4fafb578ebd9125cd159002ab195375dc7804c9e81aff82e243aa79
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oddb2xml (2.1.0)
4
+ oddb2xml (2.1.1)
5
5
  archive-tar-minitar (~> 0.5.2)
6
6
  mechanize (~> 2.5.1)
7
7
  nokogiri (~> 1.5.10)
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 2.1.1 / 13.05.2015
2
+
3
+ * --calc classifies now all E-xxx nutritional additions
4
+
1
5
  === 2.1.0 / 12.05.2015
2
6
 
3
7
  * --calc uses now a parser to split Column-C into the preparationname and the galenic-form
data/lib/oddb2xml/calc.rb CHANGED
@@ -345,8 +345,8 @@ public
345
345
  if idx = search_exact_galform(gal_form)
346
346
  return idx
347
347
  end
348
- return nil
349
348
  end
349
+ return nil
350
350
  end
351
351
  end
352
352
  end
@@ -456,6 +456,7 @@ module Oddb2xml
456
456
  # see http://dev.ywesee.com/Bbmb/TransferDat
457
457
  def initialize(dat, extended = false)
458
458
  @@extended = extended
459
+ FileUtils.makedirs(WorkDir)
459
460
  @@error_file ||= File.open(File.join(WorkDir, "duplicate_ean13_from_zur_rose.txt"), 'wb+:ISO-8859-14')
460
461
  @@items_without_ean13s ||= 0
461
462
  @@duplicated_ean13s ||= 0
@@ -94,6 +94,7 @@ class QtyLit < Struct.new(:qty)
94
94
  end
95
95
 
96
96
  class CompositionTransformer < Parslet::Transform
97
+ @@more_info = nil
97
98
  def CompositionTransformer.get_ratio(parse_info)
98
99
  if parse_info[:ratio]
99
100
  if parse_info[:ratio].to_s.length > 0 and parse_info[:ratio].to_s != ', '
@@ -106,6 +107,30 @@ class CompositionTransformer < Parslet::Transform
106
107
  end
107
108
  end
108
109
 
110
+ def CompositionTransformer.check_e_substance(substance)
111
+ return unless /^E \d\d\d/.match(substance.name)
112
+ unless substance.more_info
113
+ case substance.name[2]
114
+ when "1"
115
+ substance.more_info = 'color.'
116
+ when "2"
117
+ substance.more_info = 'conserv.'
118
+ else
119
+ end
120
+ substance.more_info ||= @@more_info
121
+ end
122
+ @@more_info = substance.more_info
123
+ end
124
+
125
+ def CompositionTransformer.add_excipiens(info)
126
+ @@more_info = nil
127
+ @@excipiens = ParseSubstance.new(info[:excipiens_description] ? info[:excipiens_description] : 'Excipiens')
128
+ @@excipiens.dose = info[:dose] if info[:dose]
129
+ @@excipiens.more_info = CompositionTransformer.get_ratio(info)
130
+ @@excipiens.cdose = info[:dose_corresp] if info[:dose_corresp]
131
+ @@excipiens.more_info = info[:more_info] if info[:more_info]
132
+ end
133
+
109
134
  rule(:corresp => simple(:corresp),
110
135
  ) {
111
136
  |dictionary|
@@ -138,6 +163,7 @@ class CompositionTransformer < Parslet::Transform
138
163
  dose = dictionary[:dose].is_a?(ParseDose) ? dictionary[:dose] : nil
139
164
  substance = ParseSubstance.new(dictionary[:substance_name].to_s, dose)
140
165
  substance.more_info = dictionary[:more_info].to_s.strip.sub(/:$/, '') if dictionary[:more_info] and dictionary[:more_info].to_s.length > 0
166
+ CompositionTransformer.check_e_substance(substance)
141
167
  @@substances << substance
142
168
  substance
143
169
  }
@@ -148,7 +174,8 @@ class CompositionTransformer < Parslet::Transform
148
174
  |dictionary|
149
175
  puts "#{File.basename(__FILE__)}:#{__LINE__}: dictionary #{dictionary}" if VERBOSE_MESSAGES
150
176
  substance = ParseSubstance.new("#{dictionary[:lebensmittel_zusatz]} #{dictionary[:digits]}")
151
- substance.more_info = dictionary[:more_info].to_s.sub(/:\s+$/, '').strip if dictionary[:more_info]
177
+ substance.more_info = dictionary[:more_info].to_s.strip.sub(/:$/, '') if dictionary[:more_info] and dictionary[:more_info].to_s.length > 0
178
+ CompositionTransformer.check_e_substance(substance)
152
179
  @@substances << substance
153
180
  substance
154
181
  }
@@ -162,29 +189,19 @@ class CompositionTransformer < Parslet::Transform
162
189
  info[:dose_corresp] or
163
190
  info[:more_info] or
164
191
  CompositionTransformer.get_ratio(dictionary)
165
- @@excipiens = ParseSubstance.new(info[:excipiens_description] ? info[:excipiens_description] : 'Excipiens')
166
- @@excipiens.dose = info[:dose] if info[:dose]
167
- @@excipiens.more_info = CompositionTransformer.get_ratio(dictionary)
168
- @@excipiens.cdose = info[:dose_corresp] if info[:dose_corresp]
169
- @@excipiens.more_info = info[:more_info] if info[:more_info]
192
+ CompositionTransformer.add_excipiens(info)
170
193
  end
171
194
  nil
172
195
  }
173
196
  rule(:composition => subtree(:composition),
174
197
  ) {
175
198
  |dictionary|
176
- puts "#{File.basename(__FILE__)}:#{__LINE__}: dictionary #{dictionary}" if VERBOSE_MESSAGES
177
- info = dictionary[:composition].is_a?(Hash) ? dictionary[:composition] : dictionary[:composition].first
178
- if info.is_a?(Hash)
179
- @@excipiens = ParseSubstance.new(info[:excipiens_description] ? info[:excipiens_description] : 'Excipiens')
180
- @@excipiens.dose = info[:dose] if info[:dose]
181
- @@excipiens.more_info = CompositionTransformer.get_ratio(dictionary)
182
- @@excipiens.cdose = info[:dose_corresp] if info[:dose_corresp]
183
- @@excipiens.more_info = info[:more_info] if info[:more_info]
184
- binding.pry if dictionary[:dose_2]
185
- @@excipiens
199
+ puts "#{File.basename(__FILE__)}:#{__LINE__}: dictionary #{dictionary}" if VERBOSE_MESSAGES
200
+ info = dictionary[:composition].is_a?(Hash) ? dictionary[:composition] : dictionary[:composition].first
201
+ if info.is_a?(Hash)
202
+ CompositionTransformer.add_excipiens(info)
186
203
  else
187
- info
204
+ info
188
205
  end
189
206
  }
190
207
  rule(:substance => simple(:substance),
@@ -247,9 +264,10 @@ class CompositionTransformer < Parslet::Transform
247
264
  dose
248
265
  }
249
266
 
250
- @@substances ||= []
267
+ @@substances ||= []
251
268
  @@excipiens = nil
252
269
  def CompositionTransformer.clear_substances
270
+ @@more_info = nil
253
271
  @@substances = []
254
272
  @@excipiens = nil
255
273
  @@corresp = nil
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "2.1.0"
2
+ VERSION = "2.1.1"
3
3
  end
data/spec/calc_spec.rb CHANGED
@@ -141,6 +141,28 @@ Corresp. 5300 kJ.",
141
141
  }
142
142
  )
143
143
 
144
+ context 'handle E substances correctly' do
145
+ e_200_examples =
146
+ {
147
+ 'Comprimé pelliculé: ondansetronum 4 mg ut ondansetroni hydrochloridum dihydricum, E 200, arom.: vanillinum, color.: E 104, excipiens pro compresso obducto.' =>
148
+ 'conserv.',
149
+ 'ginkgonis extractum siccum raffinatum et quantificatum 120 mg corresp. flavonglycosida ginkgo 26.4-32.4 mg et terpenlactona ginkgo 6.48-7.92 mg, DER: 35-67:1, antiox.: E 200, excipiens pro compresso obducto.' =>
150
+ 'antiox.',
151
+ 'lamotriginum 100 mg, aromatica, antiox.: E 310, E 320, E 321, conserv.: E 200, excipiens pro compresso.' =>
152
+ 'conserv.',
153
+ }
154
+ e_200_examples.each{
155
+ | txt, e_200_expected_attribut|
156
+ context txt.split(' ').first do
157
+ info = ParseUtil.parse_compositions(txt)
158
+ e_200 = info.first.substances.find{ |x| x.name.match(/E 200/i) }
159
+ specify { expect(info.first.excipiens.more_info).to eq nil }
160
+ specify { expect(e_200.class).to eq ParseSubstance }
161
+ specify { expect(e_200.more_info).to eq e_200_expected_attribut}
162
+ end
163
+ }
164
+ end
165
+
144
166
  if RunAllTests
145
167
  context 'should return correct value for liquid' do
146
168
  pkg_size_L = '1 x 5 x 200'
@@ -421,7 +443,7 @@ if RunAllTests
421
443
  specify { expect(e_127.unit).to eq nil}
422
444
  end
423
445
  end
424
- end
446
+
425
447
  context 'find correct result for 274 Cardio-Pulmo-Rénal Sérocytol, suppositoire' do
426
448
  info = Calc.new(tst_cardio_pumal.name_C, tst_cardio_pumal.package_size_L, tst_cardio_pumal.einheit_M, tst_cardio_pumal.active_substance_0, tst_cardio_pumal.composition_P)
427
449
  specify { expect(info.galenic_form.description).to eq 'suppositoire' }
@@ -443,13 +465,14 @@ end
443
465
  if e_216
444
466
  specify { expect(e_216.name).to eq 'E 216' }
445
467
  specify { expect(e_216.unit).to eq nil}
468
+ specify { expect(e_216.more_info).to eq 'conserv.'}
446
469
  end
447
470
  e_218 = info.compositions.first.substances.find{ |x| x.name.match(/E 218/i) }
448
471
  specify { expect(e_218).not_to eq nil}
472
+ specify { expect(e_218).not_to eq nil}
473
+ specify { expect(e_218.more_info).to eq 'conserv.'}
449
474
  end
450
475
 
451
- if RunAllTests
452
-
453
476
  context 'find correct result compositions for 00613 Pentavac' do
454
477
  line_1 = "I) DTPa-IPV-Komponente (Suspension): toxoidum diphtheriae 30 U.I., toxoidum tetani 40 U.I., toxoidum pertussis 25 µg et haemagglutininum filamentosum 25 µg, virus poliomyelitis typus 1 inactivatum (D-Antigen) 40 U., virus poliomyelitis typus 2 inactivatum (D-Antigen) 8 U., virus poliomyelitis typus 3 inactivatum (D-Antigen) 32 U., aluminium ut aluminii hydroxidum hydricum ad adsorptionem, formaldehydum 10 µg, conserv.: phenoxyethanolum 2.5 µl, residui: neomycinum, streptomycinum, polymyxini B sulfas, medium199, aqua q.s. ad suspensionem pro 0.5 ml."
455
478
  line_2 = "II) Hib-Komponente (Lyophilisat): haemophilus influenzae Typ B polysaccharida T-conjugatum 10 µg, trometamolum, saccharum, pro praeparatione."
@@ -204,7 +204,6 @@ end
204
204
  context 'when parsing examples' do
205
205
  subject do
206
206
  filename = File.expand_path(File.join(__FILE__, '..', 'data', 'zurrose_transfer.dat'))
207
- puts "filename #{filename} #{File.exists?(filename)}"
208
207
  Oddb2xml::ZurroseExtractor.new(filename, true)
209
208
  end
210
209
  it "should set the correct Ethacridin description" do
metadata CHANGED
@@ -1,209 +1,209 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oddb2xml
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
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-05-12 00:00:00.000000000 Z
11
+ date: 2015-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.1.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.1.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: archive-tar-minitar
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.5.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.5.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mechanize
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 2.5.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 2.5.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: nokogiri
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 1.5.10
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.5.10
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: savon
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 2.4.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 2.4.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: spreadsheet
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: 1.0.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.0.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rubyXL
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: 3.3.1
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: 3.3.1
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: sax-machine
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: 0.1.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: 0.1.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: parslet
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ~>
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
131
  version: 1.7.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ~>
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 1.7.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: bundler
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ! '>='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ! '>='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rake
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ! '>='
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ! '>='
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rspec
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ! '>='
171
+ - - ">="
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ! '>='
178
+ - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: webmock
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - ! '>='
185
+ - - ">="
186
186
  - !ruby/object:Gem::Version
187
187
  version: '0'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - ! '>='
192
+ - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: rdoc
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - ! '>='
199
+ - - ">="
200
200
  - !ruby/object:Gem::Version
201
201
  version: '0'
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
- - - ! '>='
206
+ - - ">="
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  description: oddb2xml creates xml files using swissINDEX, BAG-XML and Swissmedic.
@@ -213,9 +213,9 @@ executables:
213
213
  extensions: []
214
214
  extra_rdoc_files: []
215
215
  files:
216
- - .gitignore
217
- - .rspec
218
- - .travis.yml
216
+ - ".gitignore"
217
+ - ".rspec"
218
+ - ".travis.yml"
219
219
  - Gemfile
220
220
  - Gemfile.lock
221
221
  - History.txt
@@ -313,17 +313,17 @@ require_paths:
313
313
  - lib
314
314
  required_ruby_version: !ruby/object:Gem::Requirement
315
315
  requirements:
316
- - - ! '>='
316
+ - - ">="
317
317
  - !ruby/object:Gem::Version
318
318
  version: '0'
319
319
  required_rubygems_version: !ruby/object:Gem::Requirement
320
320
  requirements:
321
- - - ! '>='
321
+ - - ">="
322
322
  - !ruby/object:Gem::Version
323
323
  version: '0'
324
324
  requirements: []
325
325
  rubyforge_project:
326
- rubygems_version: 2.3.0
326
+ rubygems_version: 2.4.5
327
327
  signing_key:
328
328
  specification_version: 4
329
329
  summary: oddb2xml creates xml files.