oddb2xml 1.5.1 → 1.5.2
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/History.txt +6 -0
- data/lib/oddb2xml/builder.rb +21 -12
- data/lib/oddb2xml/downloader.rb +5 -5
- data/lib/oddb2xml/extractor.rb +11 -5
- data/lib/oddb2xml/version.rb +1 -1
- metadata +2 -2
data/History.txt
CHANGED
data/lib/oddb2xml/builder.rb
CHANGED
|
@@ -667,18 +667,7 @@ module Oddb2xml
|
|
|
667
667
|
#xml.ARTLIM {
|
|
668
668
|
# xml.LIMCD
|
|
669
669
|
#}
|
|
670
|
-
|
|
671
|
-
nincd = if @lppvs[de_idx[:ean]] # LPPV
|
|
672
|
-
20
|
|
673
|
-
elsif seq # BAG-XML (SL/LS)
|
|
674
|
-
10
|
|
675
|
-
elsif (de_idx[:migel] or # MiGel (xls)
|
|
676
|
-
de_idx[:_type] == :nonpharma) # MiGel (swissindex)
|
|
677
|
-
13
|
|
678
|
-
else
|
|
679
|
-
nil
|
|
680
|
-
end
|
|
681
|
-
if nincd
|
|
670
|
+
if nincd = detect_nincd(de_idx)
|
|
682
671
|
xml.ARTINS {
|
|
683
672
|
#xml.VDAT
|
|
684
673
|
#xml.INCD
|
|
@@ -855,6 +844,26 @@ module Oddb2xml
|
|
|
855
844
|
end
|
|
856
845
|
_builder.to_xml
|
|
857
846
|
end
|
|
847
|
+
def detect_nincd(de_idx)
|
|
848
|
+
if @lppvs[de_idx[:ean]] # LPPV
|
|
849
|
+
20
|
|
850
|
+
elsif @items[de_idx[:pharmacode]] # BAG-XML (SL/LS)
|
|
851
|
+
10
|
|
852
|
+
elsif (de_idx[:migel] or # MiGel (xls)
|
|
853
|
+
de_idx[:_type] == :nonpharma) # MiGel (swissindex)
|
|
854
|
+
13
|
|
855
|
+
else
|
|
856
|
+
# fallback via EAN
|
|
857
|
+
bag_entry_via_ean = @items.values.select do |i|
|
|
858
|
+
i[:packages].values.select {|_pac| _pac[:ean] == de_idx[:ean] }.length != 0
|
|
859
|
+
end.length
|
|
860
|
+
if bag_entry_via_ean > 0
|
|
861
|
+
10
|
|
862
|
+
else
|
|
863
|
+
nil
|
|
864
|
+
end
|
|
865
|
+
end
|
|
866
|
+
end
|
|
858
867
|
|
|
859
868
|
### --- see oddb2tdat
|
|
860
869
|
DAT_LEN = {
|
data/lib/oddb2xml/downloader.rb
CHANGED
|
@@ -14,7 +14,7 @@ module Oddb2xml
|
|
|
14
14
|
response = nil # win
|
|
15
15
|
io = File.open(file, option)
|
|
16
16
|
return io.read
|
|
17
|
-
rescue Timeout::Error
|
|
17
|
+
rescue Timeout::Error, Errno::ETIMEDOUT
|
|
18
18
|
retrievable? ? retry : raise
|
|
19
19
|
ensure
|
|
20
20
|
io.close if io and !io.closed? # win
|
|
@@ -144,7 +144,7 @@ module Oddb2xml
|
|
|
144
144
|
response = nil # win
|
|
145
145
|
end
|
|
146
146
|
return read_xml_form_zip(/^Preparation/iu, file)
|
|
147
|
-
rescue Timeout::Error
|
|
147
|
+
rescue Timeout::Error, Errno::ETIMEDOUT
|
|
148
148
|
retrievable? ? retry : raise
|
|
149
149
|
ensure
|
|
150
150
|
if File.exists?(file)
|
|
@@ -197,7 +197,7 @@ XML
|
|
|
197
197
|
end
|
|
198
198
|
rescue HTTPI::SSLError
|
|
199
199
|
exit # catch me in Cli class
|
|
200
|
-
rescue Timeout::Error
|
|
200
|
+
rescue Timeout::Error, Errno::ETIMEDOUT
|
|
201
201
|
retrievable? ? retry : raise
|
|
202
202
|
end
|
|
203
203
|
end
|
|
@@ -231,7 +231,7 @@ XML
|
|
|
231
231
|
end
|
|
232
232
|
io = File.open(file, 'rb')
|
|
233
233
|
return io.read
|
|
234
|
-
rescue Timeout::Error
|
|
234
|
+
rescue Timeout::Error, Errno::ETIMEDOUT
|
|
235
235
|
retrievable? ? retry : raise
|
|
236
236
|
ensure
|
|
237
237
|
io.close if io and !io.closed?
|
|
@@ -265,7 +265,7 @@ XML
|
|
|
265
265
|
response = nil # win
|
|
266
266
|
end
|
|
267
267
|
return read_xml_form_zip(/^AipsDownload_/iu, file)
|
|
268
|
-
rescue Timeout::Error
|
|
268
|
+
rescue Timeout::Error, Errno::ETIMEDOUT
|
|
269
269
|
retrievable? ? retry : raise
|
|
270
270
|
rescue NoMethodError
|
|
271
271
|
# pass
|
data/lib/oddb2xml/extractor.rb
CHANGED
|
@@ -24,6 +24,13 @@ module Oddb2xml
|
|
|
24
24
|
def initialize(xml)
|
|
25
25
|
@xml = xml
|
|
26
26
|
end
|
|
27
|
+
def correct_code(pharmacode, length=7)
|
|
28
|
+
if pharmacode.length != length # restore zero at the beginnig
|
|
29
|
+
("%0#{length}i" % pharmacode.to_i)
|
|
30
|
+
else
|
|
31
|
+
pharmacode
|
|
32
|
+
end
|
|
33
|
+
end
|
|
27
34
|
end
|
|
28
35
|
class BMUpdateExtractor < Extractor
|
|
29
36
|
include TxtExtractorMethods
|
|
@@ -68,12 +75,13 @@ module Oddb2xml
|
|
|
68
75
|
item[:packages] = {} # pharmacode => package
|
|
69
76
|
seq.xpath('.//Pack').each do |pac|
|
|
70
77
|
if phar = pac.attr('Pharmacode')
|
|
71
|
-
phar = phar.to_s
|
|
78
|
+
phar = correct_code(phar.to_s, 7)
|
|
72
79
|
# as common key with swissINDEX
|
|
73
80
|
item[:pharmacodes] << phar
|
|
74
81
|
# packages
|
|
75
82
|
item[:packages][phar] = {
|
|
76
83
|
:pharmacode => phar,
|
|
84
|
+
:ean => (ean = pac.at_xpath('.//GTIN')) ? ean.text : '',
|
|
77
85
|
:swissmedic_category => (cat = pac.at_xpath('.//SwissmedicCategory')) ? cat.text : '',
|
|
78
86
|
:swissmedic_number8 => (num = pac.at_xpath('.//SwissmedicNo8')) ? num.text.rjust(8, '0') : '',
|
|
79
87
|
:narcosis_flag => (flg = pac.at_xpath('.//FlagNarcosis')) ? flg.text : '',
|
|
@@ -176,9 +184,7 @@ module Oddb2xml
|
|
|
176
184
|
item[:company_ean] = (gln = comp.at_xpath('.//GLN')) ? gln.text : ''
|
|
177
185
|
end
|
|
178
186
|
unless item[:pharmacode].empty?
|
|
179
|
-
|
|
180
|
-
item[:pharmacode] = ("%07i" % item[:pharmacode])
|
|
181
|
-
end
|
|
187
|
+
item[:pharmacode] = correct_code(item[:pharmacode].to_s, 7)
|
|
182
188
|
unless data[item[:pharmacode]] # pharmacode => GTINs
|
|
183
189
|
data[item[:pharmacode]] = []
|
|
184
190
|
end
|
|
@@ -286,7 +292,7 @@ module Oddb2xml
|
|
|
286
292
|
data = {}
|
|
287
293
|
@sheet.each_with_index do |row, i|
|
|
288
294
|
next if i.zero?
|
|
289
|
-
phar = row[1].to_s
|
|
295
|
+
phar = correct_code(row[1].to_s.gsub(/[^0-9]/, ''), 7)
|
|
290
296
|
data[phar] = {
|
|
291
297
|
:ean => row[0].to_i.to_s,
|
|
292
298
|
:pharmacode => phar,
|
data/lib/oddb2xml/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: oddb2xml
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.5.
|
|
4
|
+
version: 1.5.2
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-06-
|
|
12
|
+
date: 2013-06-12 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rubyzip
|