oddb2xml 1.1.4 → 1.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.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 1.1.5 / 11.01.2013
2
+
3
+ * Add BG tags into article.xml from ywesee BM.txt
4
+
1
5
  === 1.1.4 / 10.01.2013
2
6
 
3
7
  * Add TITD tag into interaction.xml
@@ -17,7 +17,7 @@ end
17
17
 
18
18
  module Oddb2xml
19
19
  class Builder
20
- attr_accessor :subject, :index, :items,
20
+ attr_accessor :subject, :index, :items, :flags,
21
21
  :actions,
22
22
  :orphans, :fridges,
23
23
  :infos,
@@ -26,6 +26,7 @@ module Oddb2xml
26
26
  @subject = nil
27
27
  @index = {}
28
28
  @items = {}
29
+ @flags = {}
29
30
  @infos = {}
30
31
  @actions = []
31
32
  @orphans = []
@@ -473,8 +474,12 @@ module Oddb2xml
473
474
  end
474
475
  end
475
476
  #xml.TEMP
476
- #xml.CDBG
477
- #xml.BG
477
+ unless de_pac[:ean].empty?
478
+ flag = @flags[de_pac[:ean]]
479
+ # as same flag
480
+ xml.CDBG (flag ? 'Y' : 'N')
481
+ xml.BG (flag ? 'Y' : 'N')
482
+ end
478
483
  #xml.EXP
479
484
  xml.QTY de_pac[:additional_desc] unless de_pac[:additional_desc].empty?
480
485
  xml.DSCRD de_pac[:desc] unless de_pac[:desc].empty?
data/lib/oddb2xml/cli.rb CHANGED
@@ -17,6 +17,7 @@ module Oddb2xml
17
17
  @mutex = Mutex.new
18
18
  @items = {} # Items from Preparations.xml in BAG
19
19
  @index = {} # Base index from swissINDEX
20
+ @flags = {} # narcotics flag from ywesee
20
21
  @infos = {} # [option] FI from SwissmedicInfo
21
22
  @actions = [] # [addition] interactions from epha
22
23
  @orphans = [] # [addition] Orphaned drugs from Swissmedic xls
@@ -51,7 +52,7 @@ module Oddb2xml
51
52
  downloader = EphaDownloader.new
52
53
  io = downloader.download
53
54
  @mutex.synchronize do
54
- @actions = EphaExtractor.new(io).to_hash
55
+ @actions = EphaExtractor.new(io).to_arry
55
56
  end
56
57
  end
57
58
  # bag
@@ -63,6 +64,14 @@ module Oddb2xml
63
64
  @items = hsh
64
65
  end
65
66
  end
67
+ # ywesee
68
+ threads << Thread.new do
69
+ downloader = YweseeBMDownloader.new
70
+ io = downloader.download
71
+ @mutex.synchronize do
72
+ @flags = YweseeBMExtractor.new(io).to_hash
73
+ end
74
+ end
66
75
  LANGUAGES.each do |lang|
67
76
  # swissindex
68
77
  types.each do |type|
@@ -96,13 +105,11 @@ module Oddb2xml
96
105
  builder.subject = sbj
97
106
  builder.index = index
98
107
  builder.items = @items
108
+ builder.flags = @flags
99
109
  # additions
100
110
  %w[actions orphans fridges].each do |addition|
101
111
  builder.send("#{addition}=".intern, self.instance_variable_get("@#{addition}"))
102
112
  end
103
- #builder.actions = @actions
104
- #builder.orphans = @orphans
105
- #builder.fridges = @fridges
106
113
  # optionals
107
114
  builder.infos = @infos
108
115
  builder.tag_suffix = @options[:tag_suffix]
@@ -201,4 +201,24 @@ XML
201
201
  end
202
202
  end
203
203
  end
204
+ class YweseeBMDownloader < Downloader
205
+ def init
206
+ super
207
+ @url ||= 'http://www.ywesee.com/uploads/Main/BM_Update.txt'
208
+ end
209
+ def download
210
+ file = 'ywesee_bm_update.txt'
211
+ begin
212
+ response = @agent.get(@url)
213
+ response.save_as file
214
+ return File.open(file, 'r')
215
+ rescue Timeout::Error
216
+ retrievable? ? retry : raise
217
+ ensure
218
+ if File.exists? file
219
+ File.unlink file
220
+ end
221
+ end
222
+ end
223
+ end
204
224
  end
@@ -204,7 +204,7 @@ module Oddb2xml
204
204
  def initialize(io)
205
205
  @io = io
206
206
  end
207
- def to_hash
207
+ def to_arry
208
208
  data = []
209
209
  ixno = 0
210
210
  while line = @io.gets
@@ -225,4 +225,18 @@ module Oddb2xml
225
225
  data
226
226
  end
227
227
  end
228
+ class YweseeBMExtractor < Extractor
229
+ def initialize(io)
230
+ @io = io
231
+ end
232
+ def to_hash
233
+ data = {}
234
+ while line = @io.gets
235
+ next if line =~ /\d{13}/
236
+ ean = line.chomp.gsub("\"", '')
237
+ data[ean] = true
238
+ end
239
+ data
240
+ end
241
+ end
228
242
  end
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "1.1.4"
2
+ VERSION = "1.1.5"
3
3
  end
@@ -157,16 +157,34 @@ describe Oddb2xml::EphaDownloader do
157
157
  end
158
158
  it_behaves_like 'any downloader'
159
159
  context 'when download is called' do
160
- let(:xml) { @downloader.download }
160
+ let(:io) { @downloader.download }
161
161
  it 'should read csv to IO Object' do
162
- xml.should be_a IO
163
- xml.bytes.should_not nil
162
+ io.should be_a IO
163
+ io.bytes.should_not nil
164
164
  end
165
165
  it 'should clean up current directory' do
166
- xml.should_not raise_error(Timeout::Error)
166
+ io.should_not raise_error(Timeout::Error)
167
167
  File.exist?('epha_interactions.csv').should be(false)
168
168
  end
169
169
  end
170
170
  end
171
171
 
172
-
172
+ describe Oddb2xml::YweseeBMDownloader do
173
+ include ServerMockHelper
174
+ before(:each) do
175
+ setup_ywesee_server_mock
176
+ @downloader = Oddb2xml::YweseeBMDownloader.new
177
+ end
178
+ it_behaves_like 'any downloader'
179
+ context 'when download is called' do
180
+ let(:io) { @downloader.download }
181
+ it 'should read txt to IO Object' do
182
+ io.should be_a IO
183
+ io.bytes.should_not nil
184
+ end
185
+ it 'should clean up current directory' do
186
+ io.should_not raise_error(Timeout::Error)
187
+ File.exist?('ywesee_bm_update.txt').should be(false)
188
+ end
189
+ end
190
+ end
data/spec/spec_helper.rb CHANGED
@@ -22,6 +22,7 @@ module ServerMockHelper
22
22
  setup_swissmedic_server_mock
23
23
  setup_swissmedic_info_server_mock
24
24
  setup_epha_server_mock
25
+ setup_ywesee_server_mock
25
26
  end
26
27
  def setup_bag_xml_server_mock
27
28
  # zip
@@ -153,6 +154,20 @@ module ServerMockHelper
153
154
  :headers => {'Content-Type' => 'text/csv; charset=utf-8'},
154
155
  :body => stub_response)
155
156
  end
157
+ def setup_ywesee_server_mock
158
+ # txt
159
+ stub_txt_url = 'http://www.ywesee.com/uploads/Main/BM_Update.txt'
160
+ stub_response = File.read(File.expand_path('../data/ywesee_bm_update.txt', __FILE__))
161
+ stub_request(:get, stub_txt_url).
162
+ with(:headers => {
163
+ 'Accept' => '*/*',
164
+ 'Host' => 'www.ywesee.com',
165
+ }).
166
+ to_return(
167
+ :status => 200,
168
+ :headers => {'Content-Type' => 'text/plain; charset=utf-8'},
169
+ :body => stub_response)
170
+ end
156
171
  end
157
172
 
158
173
  RSpec.configure do |config|
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
4
+ version: 1.1.5
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-10 00:00:00.000000000 Z
12
+ date: 2013-01-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubyzip
16
- requirement: &19703040 !ruby/object:Gem::Requirement
16
+ requirement: &21104340 !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: *19703040
24
+ version_requirements: *21104340
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: archive-tar-minitar
27
- requirement: &19702540 !ruby/object:Gem::Requirement
27
+ requirement: &21103620 !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: *19702540
35
+ version_requirements: *21103620
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mechanize
38
- requirement: &19702040 !ruby/object:Gem::Requirement
38
+ requirement: &21103000 !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: *19702040
46
+ version_requirements: *21103000
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: nokogiri
49
- requirement: &19701580 !ruby/object:Gem::Requirement
49
+ requirement: &21102480 !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: *19701580
57
+ version_requirements: *21102480
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: savon
60
- requirement: &19700940 !ruby/object:Gem::Requirement
60
+ requirement: &21101700 !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: *19700940
68
+ version_requirements: *21101700
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: spreadsheet
71
- requirement: &19700500 !ruby/object:Gem::Requirement
71
+ requirement: &21101060 !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: *19700500
79
+ version_requirements: *21101060
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &19716280 !ruby/object:Gem::Requirement
82
+ requirement: &21100460 !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: *19716280
90
+ version_requirements: *21100460
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: webmock
93
- requirement: &19715780 !ruby/object:Gem::Requirement
93
+ requirement: &21099960 !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: *19715780
101
+ version_requirements: *21099960
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: ZenTest
104
- requirement: &19715200 !ruby/object:Gem::Requirement
104
+ requirement: &21099480 !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: *19715200
112
+ version_requirements: *21099480
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: hoe
115
- requirement: &19714660 !ruby/object:Gem::Requirement
115
+ requirement: &21098920 !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: *19714660
123
+ version_requirements: *21098920
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rdoc
126
- requirement: &19714100 !ruby/object:Gem::Requirement
126
+ requirement: &21098500 !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: *19714100
134
+ version_requirements: *21098500
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: rdoc
137
- requirement: &19713340 !ruby/object:Gem::Requirement
137
+ requirement: &21097920 !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: *19713340
145
+ version_requirements: *21097920
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: hoe
148
- requirement: &19711960 !ruby/object:Gem::Requirement
148
+ requirement: &21097400 !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: *19711960
156
+ version_requirements: *21097400
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: