oddb2xml 1.2.0 → 1.2.1
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 +8 -3
- data/lib/oddb2xml/cli.rb +20 -9
- data/lib/oddb2xml/downloader.rb +3 -0
- data/lib/oddb2xml/extractor.rb +17 -2
- data/lib/oddb2xml/version.rb +1 -1
- metadata +182 -123
data/History.txt
CHANGED
data/lib/oddb2xml/builder.rb
CHANGED
@@ -20,7 +20,7 @@ module Oddb2xml
|
|
20
20
|
attr_accessor :subject, :index, :items, :flags,
|
21
21
|
:actions,
|
22
22
|
:orphans, :fridges,
|
23
|
-
:infos,
|
23
|
+
:infos, :packs,
|
24
24
|
:tag_suffix
|
25
25
|
def initialize
|
26
26
|
@subject = nil
|
@@ -28,6 +28,7 @@ module Oddb2xml
|
|
28
28
|
@items = {}
|
29
29
|
@flags = {}
|
30
30
|
@infos = {}
|
31
|
+
@packs = {}
|
31
32
|
@actions = []
|
32
33
|
@orphans = []
|
33
34
|
@fridges = []
|
@@ -745,7 +746,11 @@ module Oddb2xml
|
|
745
746
|
'3'
|
746
747
|
end
|
747
748
|
row << "%0#{DAT_LEN[:PHAR]}d" % pac[:pharmacode].to_i
|
748
|
-
row << "%-#{DAT_LEN[:ABEZ]}s" % (
|
749
|
+
row << "%-#{DAT_LEN[:ABEZ]}s" % (
|
750
|
+
de_pac[:desc].to_s.gsub(/"/, '') + " " +
|
751
|
+
pac[:name_de].to_s +
|
752
|
+
de_pac[:additional_desc]
|
753
|
+
).to_s[0, DAT_LEN[:ABEZ]].gsub(/"/, '')
|
749
754
|
row << "%#{DAT_LEN[:PRMO]}s" % format_price(pac[:prices][:exf_price][:price].to_s)
|
750
755
|
row << "%#{DAT_LEN[:PRPU]}s" % format_price(pac[:prices][:pub_price][:price].to_s)
|
751
756
|
row << "%#{DAT_LEN[:CKZL]}s" % '3' # sl_entry and lppv
|
@@ -756,7 +761,7 @@ module Oddb2xml
|
|
756
761
|
else
|
757
762
|
'0'
|
758
763
|
end
|
759
|
-
row << "%#{DAT_LEN[:ITHE]}s" %
|
764
|
+
row << "%#{DAT_LEN[:ITHE]}s" % format_date(@packs[pac[:swissmedic_number].intern].to_s)
|
760
765
|
row << "%#{DAT_LEN[:CEAN]}s" % de_pac[:ean].to_s
|
761
766
|
row << "%#{DAT_LEN[:CMWS]}s" % '2'
|
762
767
|
rows << row
|
data/lib/oddb2xml/cli.rb
CHANGED
@@ -19,6 +19,7 @@ module Oddb2xml
|
|
19
19
|
@index = {} # Base index from swissINDEX
|
20
20
|
@flags = {} # narcotics flag from ywesee
|
21
21
|
@infos = {} # [option] FI from SwissmedicInfo
|
22
|
+
@packs = {} # [option] Packungen from Swissmedic for dat
|
22
23
|
@actions = [] # [addition] interactions from epha
|
23
24
|
@orphans = [] # [addition] Orphaned drugs from Swissmedic xls
|
24
25
|
@fridges = [] # [addition] ReFridge drugs from Swissmedic xls
|
@@ -40,7 +41,7 @@ module Oddb2xml
|
|
40
41
|
end
|
41
42
|
end
|
42
43
|
end
|
43
|
-
# swissmedic
|
44
|
+
# swissmedic - orphan, fridge
|
44
45
|
[:orphans, :fridges].each do |type|
|
45
46
|
threads << Thread.new do
|
46
47
|
downloader = SwissmedicDownloader.new(type)
|
@@ -56,6 +57,23 @@ module Oddb2xml
|
|
56
57
|
@actions = EphaExtractor.new(str).to_arry
|
57
58
|
end
|
58
59
|
end
|
60
|
+
# ywesee
|
61
|
+
threads << Thread.new do
|
62
|
+
downloader = YweseeBMDownloader.new
|
63
|
+
str = downloader.download
|
64
|
+
@mutex.synchronize do
|
65
|
+
@flags = YweseeBMExtractor.new(str).to_hash
|
66
|
+
end
|
67
|
+
end
|
68
|
+
else # dat
|
69
|
+
# swissmedic - package
|
70
|
+
threads << Thread.new do
|
71
|
+
downloader = SwissmedicDownloader.new(:packages)
|
72
|
+
bin = downloader.download
|
73
|
+
@mutex.synchronize do
|
74
|
+
@packs = SwissmedicExtractor.new(bin, :packages).to_hash
|
75
|
+
end
|
76
|
+
end
|
59
77
|
end
|
60
78
|
# bag
|
61
79
|
threads << Thread.new do
|
@@ -66,14 +84,6 @@ module Oddb2xml
|
|
66
84
|
@items = hsh
|
67
85
|
end
|
68
86
|
end
|
69
|
-
# ywesee
|
70
|
-
threads << Thread.new do
|
71
|
-
downloader = YweseeBMDownloader.new
|
72
|
-
str = downloader.download
|
73
|
-
@mutex.synchronize do
|
74
|
-
@flags = YweseeBMExtractor.new(str).to_hash
|
75
|
-
end
|
76
|
-
end
|
77
87
|
@_message = false
|
78
88
|
LANGUAGES.each do |lang|
|
79
89
|
# swissindex
|
@@ -143,6 +153,7 @@ module Oddb2xml
|
|
143
153
|
end
|
144
154
|
# optionals
|
145
155
|
builder.infos = @infos
|
156
|
+
builder.packs = @packs
|
146
157
|
builder.tag_suffix = @options[:tag_suffix]
|
147
158
|
end
|
148
159
|
output = ''
|
data/lib/oddb2xml/downloader.rb
CHANGED
@@ -141,6 +141,9 @@ XML
|
|
141
141
|
when :fridges
|
142
142
|
action = "daten/00080/00254/index.html?lang=de"
|
143
143
|
@xpath = "//table[@class='swmTableFlex']//a[@title='B3.1.35-d.xls']"
|
144
|
+
when :packages
|
145
|
+
action = "daten/00080/00251/index.html?lang=de"
|
146
|
+
@xpath = "//div[@id='sprungmarke0_7']//a[@title='Excel-Version Zugelassene Verpackungen*']"
|
144
147
|
end
|
145
148
|
url = "http://www.swissmedic.ch/#{action}"
|
146
149
|
super({}, url)
|
data/lib/oddb2xml/extractor.rb
CHANGED
@@ -161,10 +161,25 @@ module Oddb2xml
|
|
161
161
|
end
|
162
162
|
data.uniq
|
163
163
|
end
|
164
|
+
def to_hash
|
165
|
+
data = {}
|
166
|
+
case @type
|
167
|
+
when :packages
|
168
|
+
i_5,i_3 = 0,10 # :swissmedic_number
|
169
|
+
ith = 4 # :ith_swissmedic (swissmedic-diff)
|
170
|
+
@sheet.each do |row|
|
171
|
+
no8 = extract_number(row, i_5).to_s + extract_number(row, i_3, /^\d{3}$/).to_s
|
172
|
+
unless no8.empty?
|
173
|
+
data[no8.intern] = row[ith].to_s
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
data
|
178
|
+
end
|
164
179
|
private
|
165
|
-
def extract_number(row, i)
|
180
|
+
def extract_number(row, i, ptrn=/^\d{5}$/)
|
166
181
|
begin
|
167
|
-
if (row[i] and number = row[i].
|
182
|
+
if (row[i] and number = row[i].to_s.gsub(/[^0-9]/,'') and number =~ ptrn)
|
168
183
|
return number
|
169
184
|
else
|
170
185
|
nil
|
data/lib/oddb2xml/version.rb
CHANGED
metadata
CHANGED
@@ -1,168 +1,218 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: oddb2xml
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 2
|
9
|
+
- 1
|
10
|
+
version: 1.2.1
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Yasuhiro Asaka, Zeno R.R. Davatz
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2013-01-23 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: rubyzip
|
16
|
-
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
24
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
22
32
|
type: :runtime
|
23
|
-
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
26
35
|
name: archive-tar-minitar
|
27
|
-
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
38
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
33
46
|
type: :runtime
|
34
|
-
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
37
49
|
name: mechanize
|
38
|
-
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
52
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
44
60
|
type: :runtime
|
45
|
-
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
61
|
+
version_requirements: *id003
|
62
|
+
- !ruby/object:Gem::Dependency
|
48
63
|
name: nokogiri
|
49
|
-
|
64
|
+
prerelease: false
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
66
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
55
74
|
type: :runtime
|
56
|
-
|
57
|
-
|
58
|
-
- !ruby/object:Gem::Dependency
|
75
|
+
version_requirements: *id004
|
76
|
+
- !ruby/object:Gem::Dependency
|
59
77
|
name: savon
|
60
|
-
|
78
|
+
prerelease: false
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
61
80
|
none: false
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 3
|
85
|
+
segments:
|
86
|
+
- 2
|
87
|
+
- 0
|
88
|
+
version: "2.0"
|
66
89
|
type: :runtime
|
67
|
-
|
68
|
-
|
69
|
-
- !ruby/object:Gem::Dependency
|
90
|
+
version_requirements: *id005
|
91
|
+
- !ruby/object:Gem::Dependency
|
70
92
|
name: spreadsheet
|
71
|
-
|
93
|
+
prerelease: false
|
94
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
72
95
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 3
|
100
|
+
segments:
|
101
|
+
- 0
|
102
|
+
version: "0"
|
77
103
|
type: :runtime
|
78
|
-
|
79
|
-
|
80
|
-
- !ruby/object:Gem::Dependency
|
104
|
+
version_requirements: *id006
|
105
|
+
- !ruby/object:Gem::Dependency
|
81
106
|
name: rspec
|
82
|
-
|
107
|
+
prerelease: false
|
108
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
83
109
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
hash: 3
|
114
|
+
segments:
|
115
|
+
- 0
|
116
|
+
version: "0"
|
88
117
|
type: :development
|
89
|
-
|
90
|
-
|
91
|
-
- !ruby/object:Gem::Dependency
|
118
|
+
version_requirements: *id007
|
119
|
+
- !ruby/object:Gem::Dependency
|
92
120
|
name: webmock
|
93
|
-
|
121
|
+
prerelease: false
|
122
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
94
123
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
hash: 3
|
128
|
+
segments:
|
129
|
+
- 0
|
130
|
+
version: "0"
|
99
131
|
type: :development
|
100
|
-
|
101
|
-
|
102
|
-
- !ruby/object:Gem::Dependency
|
132
|
+
version_requirements: *id008
|
133
|
+
- !ruby/object:Gem::Dependency
|
103
134
|
name: ZenTest
|
104
|
-
|
135
|
+
prerelease: false
|
136
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
105
137
|
none: false
|
106
|
-
requirements:
|
107
|
-
- -
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
hash: 3
|
142
|
+
segments:
|
143
|
+
- 0
|
144
|
+
version: "0"
|
110
145
|
type: :development
|
111
|
-
|
112
|
-
|
113
|
-
- !ruby/object:Gem::Dependency
|
146
|
+
version_requirements: *id009
|
147
|
+
- !ruby/object:Gem::Dependency
|
114
148
|
name: hoe
|
115
|
-
|
149
|
+
prerelease: false
|
150
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
116
151
|
none: false
|
117
|
-
requirements:
|
118
|
-
- -
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
hash: 15
|
156
|
+
segments:
|
157
|
+
- 3
|
158
|
+
- 4
|
159
|
+
version: "3.4"
|
121
160
|
type: :development
|
122
|
-
|
123
|
-
|
124
|
-
- !ruby/object:Gem::Dependency
|
161
|
+
version_requirements: *id010
|
162
|
+
- !ruby/object:Gem::Dependency
|
125
163
|
name: rdoc
|
126
|
-
|
164
|
+
prerelease: false
|
165
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
127
166
|
none: false
|
128
|
-
requirements:
|
129
|
-
- -
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
hash: 3
|
171
|
+
segments:
|
172
|
+
- 0
|
173
|
+
version: "0"
|
132
174
|
type: :development
|
133
|
-
|
134
|
-
|
135
|
-
- !ruby/object:Gem::Dependency
|
175
|
+
version_requirements: *id011
|
176
|
+
- !ruby/object:Gem::Dependency
|
136
177
|
name: rdoc
|
137
|
-
|
178
|
+
prerelease: false
|
179
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
138
180
|
none: false
|
139
|
-
requirements:
|
181
|
+
requirements:
|
140
182
|
- - ~>
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
hash: 19
|
185
|
+
segments:
|
186
|
+
- 3
|
187
|
+
- 10
|
188
|
+
version: "3.10"
|
143
189
|
type: :development
|
144
|
-
|
145
|
-
|
146
|
-
- !ruby/object:Gem::Dependency
|
190
|
+
version_requirements: *id012
|
191
|
+
- !ruby/object:Gem::Dependency
|
147
192
|
name: hoe
|
148
|
-
|
193
|
+
prerelease: false
|
194
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
149
195
|
none: false
|
150
|
-
requirements:
|
196
|
+
requirements:
|
151
197
|
- - ~>
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
hash: 25
|
200
|
+
segments:
|
201
|
+
- 2
|
202
|
+
- 13
|
203
|
+
version: "2.13"
|
154
204
|
type: :development
|
155
|
-
|
156
|
-
version_requirements: *5838200
|
205
|
+
version_requirements: *id013
|
157
206
|
description: oddb2xml creates xml files using swissINDEX, BAG-XML and Swissmedic.
|
158
207
|
email: yasaka@ywesee.com, zdavatz@ywesee.com
|
159
|
-
executables:
|
208
|
+
executables:
|
160
209
|
- oddb2xml
|
161
210
|
extensions: []
|
162
|
-
|
211
|
+
|
212
|
+
extra_rdoc_files:
|
163
213
|
- History.txt
|
164
214
|
- Manifest.txt
|
165
|
-
files:
|
215
|
+
files:
|
166
216
|
- .gitignore
|
167
217
|
- .rspec
|
168
218
|
- Gemfile
|
@@ -213,28 +263,37 @@ files:
|
|
213
263
|
- .gemtest
|
214
264
|
homepage:
|
215
265
|
licenses: []
|
266
|
+
|
216
267
|
post_install_message:
|
217
|
-
rdoc_options:
|
268
|
+
rdoc_options:
|
218
269
|
- --main
|
219
270
|
- README.txt
|
220
|
-
require_paths:
|
271
|
+
require_paths:
|
221
272
|
- lib
|
222
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
273
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
223
274
|
none: false
|
224
|
-
requirements:
|
225
|
-
- -
|
226
|
-
- !ruby/object:Gem::Version
|
227
|
-
|
228
|
-
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
hash: 3
|
279
|
+
segments:
|
280
|
+
- 0
|
281
|
+
version: "0"
|
282
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
229
283
|
none: false
|
230
|
-
requirements:
|
231
|
-
- -
|
232
|
-
- !ruby/object:Gem::Version
|
233
|
-
|
284
|
+
requirements:
|
285
|
+
- - ">="
|
286
|
+
- !ruby/object:Gem::Version
|
287
|
+
hash: 3
|
288
|
+
segments:
|
289
|
+
- 0
|
290
|
+
version: "0"
|
234
291
|
requirements: []
|
292
|
+
|
235
293
|
rubyforge_project: oddb2xml
|
236
294
|
rubygems_version: 1.8.15
|
237
295
|
signing_key:
|
238
296
|
specification_version: 3
|
239
297
|
summary: oddb2xml creates xml files.
|
240
298
|
test_files: []
|
299
|
+
|