oddb2xml 1.1.5 → 1.1.6
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/README.md +10 -0
- data/lib/oddb2xml/cli.rb +6 -6
- data/lib/oddb2xml/downloader.rb +37 -19
- data/lib/oddb2xml/extractor.rb +7 -5
- data/lib/oddb2xml/version.rb +1 -1
- metadata +28 -28
data/History.txt
CHANGED
data/README.md
CHANGED
@@ -2,6 +2,16 @@
|
|
2
2
|
|
3
3
|
oddb2xml, creates xml files using swissINDEX, BAG-XML and Swissmedic.
|
4
4
|
|
5
|
+
The following additional data is in the files:
|
6
|
+
|
7
|
+
* Wirkstoffe
|
8
|
+
* Kühlkette (gemäss Swissmedic)
|
9
|
+
* Orphan Drugs (gemäss Swissmedic)
|
10
|
+
* FI (de und fr)
|
11
|
+
* Limitation-Texte (gemäss BAG XML)
|
12
|
+
* Interaktionen (EPha.ch)
|
13
|
+
* Betäubungsmittel und psychotrope Stoffe (gemäss Swissmedic)
|
14
|
+
* Non-Pharma from Refdata and Suppliers
|
5
15
|
|
6
16
|
## usage
|
7
17
|
|
data/lib/oddb2xml/cli.rb
CHANGED
@@ -43,16 +43,16 @@ module Oddb2xml
|
|
43
43
|
[:orphans, :fridges].each do |type|
|
44
44
|
threads << Thread.new do
|
45
45
|
downloader = SwissmedicDownloader.new(type)
|
46
|
-
|
47
|
-
self.instance_variable_set("@#{type.to_s}", SwissmedicExtractor.new(
|
46
|
+
bin = downloader.download
|
47
|
+
self.instance_variable_set("@#{type.to_s}", SwissmedicExtractor.new(bin, type).to_arry)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
# epha
|
51
51
|
threads << Thread.new do
|
52
52
|
downloader = EphaDownloader.new
|
53
|
-
|
53
|
+
str = downloader.download
|
54
54
|
@mutex.synchronize do
|
55
|
-
@actions = EphaExtractor.new(
|
55
|
+
@actions = EphaExtractor.new(str).to_arry
|
56
56
|
end
|
57
57
|
end
|
58
58
|
# bag
|
@@ -67,9 +67,9 @@ module Oddb2xml
|
|
67
67
|
# ywesee
|
68
68
|
threads << Thread.new do
|
69
69
|
downloader = YweseeBMDownloader.new
|
70
|
-
|
70
|
+
str = downloader.download
|
71
71
|
@mutex.synchronize do
|
72
|
-
@flags = YweseeBMExtractor.new(
|
72
|
+
@flags = YweseeBMExtractor.new(str).to_hash
|
73
73
|
end
|
74
74
|
end
|
75
75
|
LANGUAGES.each do |lang|
|
data/lib/oddb2xml/downloader.rb
CHANGED
@@ -60,13 +60,14 @@ module Oddb2xml
|
|
60
60
|
file = 'XMLPublications.zip'
|
61
61
|
begin
|
62
62
|
response = @agent.get(@url)
|
63
|
-
response.save_as
|
63
|
+
response.save_as(file)
|
64
|
+
response = nil # mswin
|
64
65
|
return read_xml_form_zip(/^Preparation/iu, file)
|
65
66
|
rescue Timeout::Error
|
66
67
|
retrievable? ? retry : raise
|
67
68
|
ensure
|
68
|
-
if File.exists?
|
69
|
-
File.unlink
|
69
|
+
if File.exists?(file)
|
70
|
+
File.unlink(file)
|
70
71
|
end
|
71
72
|
end
|
72
73
|
end
|
@@ -83,7 +84,7 @@ module Oddb2xml
|
|
83
84
|
:log_level => :info,
|
84
85
|
:log => false, # $stdout
|
85
86
|
:raise_errors => true,
|
86
|
-
:
|
87
|
+
:ssl_version => :SSLv3,
|
87
88
|
:wsdl => @url
|
88
89
|
}
|
89
90
|
@client = Savon::Client.new(config)
|
@@ -101,6 +102,7 @@ XML
|
|
101
102
|
response = @client.call(:download_all, :xml => soap)
|
102
103
|
if response.success?
|
103
104
|
if xml = response.to_xml
|
105
|
+
response = nil # mswin
|
104
106
|
return xml
|
105
107
|
else
|
106
108
|
# received broken data or internal error
|
@@ -109,6 +111,12 @@ XML
|
|
109
111
|
else
|
110
112
|
raise Timeout::Error
|
111
113
|
end
|
114
|
+
rescue HTTPI::SSLError
|
115
|
+
puts
|
116
|
+
puts "Please install SSLv3 cert on your machine."
|
117
|
+
puts "You can check location of cert file with `ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'`."
|
118
|
+
puts "Or confirm SSL_CERT_FILE environment."
|
119
|
+
exit
|
112
120
|
rescue Timeout::Error
|
113
121
|
retrievable? ? retry : raise
|
114
122
|
end
|
@@ -135,14 +143,17 @@ XML
|
|
135
143
|
if link_node = page.search(@xpath).first
|
136
144
|
link = Mechanize::Page::Link.new(link_node, @agent, page)
|
137
145
|
response = link.click
|
138
|
-
response.save_as
|
146
|
+
response.save_as(file)
|
147
|
+
response = nil # mswin
|
139
148
|
end
|
140
|
-
|
149
|
+
io = File.open(file, 'rb')
|
150
|
+
return io.read
|
141
151
|
rescue Timeout::Error
|
142
152
|
retrievable? ? retry : raise
|
143
153
|
ensure
|
144
|
-
|
145
|
-
|
154
|
+
io.close unless io.closed?
|
155
|
+
if File.exists?(file)
|
156
|
+
File.unlink(file)
|
146
157
|
end
|
147
158
|
end
|
148
159
|
end
|
@@ -167,7 +178,8 @@ XML
|
|
167
178
|
end
|
168
179
|
end
|
169
180
|
if response
|
170
|
-
response.save_as
|
181
|
+
response.save_as(file)
|
182
|
+
response = nil # msmin
|
171
183
|
end
|
172
184
|
return read_xml_form_zip(/^AipsDownload_/iu, file)
|
173
185
|
rescue Timeout::Error
|
@@ -175,8 +187,8 @@ XML
|
|
175
187
|
rescue NoMethodError => e
|
176
188
|
# pass
|
177
189
|
ensure
|
178
|
-
if File.exists?
|
179
|
-
File.unlink
|
190
|
+
if File.exists?(file)
|
191
|
+
File.unlink(file)
|
180
192
|
end
|
181
193
|
end
|
182
194
|
end
|
@@ -190,13 +202,16 @@ XML
|
|
190
202
|
file = "epha_interactions.csv"
|
191
203
|
begin
|
192
204
|
response = @agent.get(@url)
|
193
|
-
response.save_as
|
194
|
-
|
205
|
+
response.save_as(file)
|
206
|
+
response = nil # mswin
|
207
|
+
io = File.open(file, 'r')
|
208
|
+
return io.read
|
195
209
|
rescue Timeout::Error
|
196
210
|
retrievable? ? retry : raise
|
197
211
|
ensure
|
198
|
-
|
199
|
-
|
212
|
+
io.close unless io.closed? # mswin
|
213
|
+
if File.exists?(file)
|
214
|
+
File.unlink(file)
|
200
215
|
end
|
201
216
|
end
|
202
217
|
end
|
@@ -210,13 +225,16 @@ XML
|
|
210
225
|
file = 'ywesee_bm_update.txt'
|
211
226
|
begin
|
212
227
|
response = @agent.get(@url)
|
213
|
-
response.save_as
|
214
|
-
|
228
|
+
response.save_as(file)
|
229
|
+
response = nil # mswin
|
230
|
+
io = File.open(file, 'r')
|
231
|
+
return io.read
|
215
232
|
rescue Timeout::Error
|
216
233
|
retrievable? ? retry : raise
|
217
234
|
ensure
|
218
|
-
|
219
|
-
|
235
|
+
io.close unless io.closed? # mswin
|
236
|
+
if File.exists?(file)
|
237
|
+
File.unlink(file)
|
220
238
|
end
|
221
239
|
end
|
222
240
|
end
|
data/lib/oddb2xml/extractor.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'nokogiri'
|
4
4
|
require 'spreadsheet'
|
5
|
+
require 'stringio'
|
5
6
|
|
6
7
|
module Oddb2xml
|
7
8
|
class Extractor
|
@@ -134,7 +135,8 @@ module Oddb2xml
|
|
134
135
|
end
|
135
136
|
end
|
136
137
|
class SwissmedicExtractor < Extractor
|
137
|
-
def initialize(
|
138
|
+
def initialize(bin, type)
|
139
|
+
io = StringIO.new(bin)
|
138
140
|
book = Spreadsheet.open(io)
|
139
141
|
@sheet = book.worksheet(0)
|
140
142
|
@type = type
|
@@ -201,8 +203,8 @@ module Oddb2xml
|
|
201
203
|
end
|
202
204
|
end
|
203
205
|
class EphaExtractor < Extractor
|
204
|
-
def initialize(
|
205
|
-
@io =
|
206
|
+
def initialize(str)
|
207
|
+
@io = StringIO.new(str)
|
206
208
|
end
|
207
209
|
def to_arry
|
208
210
|
data = []
|
@@ -226,8 +228,8 @@ module Oddb2xml
|
|
226
228
|
end
|
227
229
|
end
|
228
230
|
class YweseeBMExtractor < Extractor
|
229
|
-
def initialize(
|
230
|
-
@io =
|
231
|
+
def initialize(str)
|
232
|
+
@io = StringIO.new(str)
|
231
233
|
end
|
232
234
|
def to_hash
|
233
235
|
data = {}
|
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.1.
|
4
|
+
version: 1.1.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubyzip
|
16
|
-
requirement: &
|
16
|
+
requirement: &12310580 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *12310580
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: archive-tar-minitar
|
27
|
-
requirement: &
|
27
|
+
requirement: &12310080 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *12310080
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mechanize
|
38
|
-
requirement: &
|
38
|
+
requirement: &12309600 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *12309600
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: nokogiri
|
49
|
-
requirement: &
|
49
|
+
requirement: &12325460 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *12325460
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: savon
|
60
|
-
requirement: &
|
60
|
+
requirement: &12324940 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '2.0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *12324940
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: spreadsheet
|
71
|
-
requirement: &
|
71
|
+
requirement: &12324500 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *12324500
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &12323920 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *12323920
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: webmock
|
93
|
-
requirement: &
|
93
|
+
requirement: &12323500 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *12323500
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: ZenTest
|
104
|
-
requirement: &
|
104
|
+
requirement: &12323020 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *12323020
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: hoe
|
115
|
-
requirement: &
|
115
|
+
requirement: &12322500 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '3.4'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *12322500
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: rdoc
|
126
|
-
requirement: &
|
126
|
+
requirement: &12321900 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *12321900
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: rdoc
|
137
|
-
requirement: &
|
137
|
+
requirement: &12321240 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ~>
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: '3.10'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *12321240
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: hoe
|
148
|
-
requirement: &
|
148
|
+
requirement: &12320800 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ~>
|
@@ -153,7 +153,7 @@ dependencies:
|
|
153
153
|
version: '2.13'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *12320800
|
157
157
|
description: oddb2xml creates xml files using swissINDEX, BAG-XML and Swissmedic.
|
158
158
|
email: yasaka@ywesee.com, zdavatz@ywesee.com
|
159
159
|
executables:
|