oddb2xml 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ === 1.2.1 / 23.01.2013
2
+
3
+ * Update ith column for dat
4
+ * Add Packungen.xls for ith_swissmedic
5
+ * Add ADDSCR from swissINDEX into name as quantity
6
+
1
7
  === 1.2.0 / 22.01.2013
2
8
 
3
9
  * Add dat format output
@@ -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" % (de_pac[:desc].to_s.gsub(/"/, '') + " " + pac[:name_de].to_s).to_s[0, DAT_LEN[:ABEZ]].gsub(/"/, '')
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" % ' ' # ith_swissmedic
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 = ''
@@ -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)
@@ -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].to_i.to_s and number =~ /^\d{5}$/)
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
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.1"
3
3
  end
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
- version: 1.2.0
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
- date: 2013-01-22 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2013-01-23 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: rubyzip
16
- requirement: &5831820 !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
17
24
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
22
32
  type: :runtime
23
- prerelease: false
24
- version_requirements: *5831820
25
- - !ruby/object:Gem::Dependency
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
26
35
  name: archive-tar-minitar
27
- requirement: &5829360 !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
28
38
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ hash: 3
43
+ segments:
44
+ - 0
45
+ version: "0"
33
46
  type: :runtime
34
- prerelease: false
35
- version_requirements: *5829360
36
- - !ruby/object:Gem::Dependency
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
37
49
  name: mechanize
38
- requirement: &5828680 !ruby/object:Gem::Requirement
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
39
52
  none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ hash: 3
57
+ segments:
58
+ - 0
59
+ version: "0"
44
60
  type: :runtime
45
- prerelease: false
46
- version_requirements: *5828680
47
- - !ruby/object:Gem::Dependency
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
48
63
  name: nokogiri
49
- requirement: &5826640 !ruby/object:Gem::Requirement
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
50
66
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
55
74
  type: :runtime
56
- prerelease: false
57
- version_requirements: *5826640
58
- - !ruby/object:Gem::Dependency
75
+ version_requirements: *id004
76
+ - !ruby/object:Gem::Dependency
59
77
  name: savon
60
- requirement: &5826160 !ruby/object:Gem::Requirement
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
61
80
  none: false
62
- requirements:
63
- - - ! '>='
64
- - !ruby/object:Gem::Version
65
- version: '2.0'
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
- prerelease: false
68
- version_requirements: *5826160
69
- - !ruby/object:Gem::Dependency
90
+ version_requirements: *id005
91
+ - !ruby/object:Gem::Dependency
70
92
  name: spreadsheet
71
- requirement: &5825740 !ruby/object:Gem::Requirement
93
+ prerelease: false
94
+ requirement: &id006 !ruby/object:Gem::Requirement
72
95
  none: false
73
- requirements:
74
- - - ! '>='
75
- - !ruby/object:Gem::Version
76
- version: '0'
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
102
+ version: "0"
77
103
  type: :runtime
78
- prerelease: false
79
- version_requirements: *5825740
80
- - !ruby/object:Gem::Dependency
104
+ version_requirements: *id006
105
+ - !ruby/object:Gem::Dependency
81
106
  name: rspec
82
- requirement: &5825200 !ruby/object:Gem::Requirement
107
+ prerelease: false
108
+ requirement: &id007 !ruby/object:Gem::Requirement
83
109
  none: false
84
- requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
87
- version: '0'
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ hash: 3
114
+ segments:
115
+ - 0
116
+ version: "0"
88
117
  type: :development
89
- prerelease: false
90
- version_requirements: *5825200
91
- - !ruby/object:Gem::Dependency
118
+ version_requirements: *id007
119
+ - !ruby/object:Gem::Dependency
92
120
  name: webmock
93
- requirement: &5841140 !ruby/object:Gem::Requirement
121
+ prerelease: false
122
+ requirement: &id008 !ruby/object:Gem::Requirement
94
123
  none: false
95
- requirements:
96
- - - ! '>='
97
- - !ruby/object:Gem::Version
98
- version: '0'
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ hash: 3
128
+ segments:
129
+ - 0
130
+ version: "0"
99
131
  type: :development
100
- prerelease: false
101
- version_requirements: *5841140
102
- - !ruby/object:Gem::Dependency
132
+ version_requirements: *id008
133
+ - !ruby/object:Gem::Dependency
103
134
  name: ZenTest
104
- requirement: &5840660 !ruby/object:Gem::Requirement
135
+ prerelease: false
136
+ requirement: &id009 !ruby/object:Gem::Requirement
105
137
  none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ hash: 3
142
+ segments:
143
+ - 0
144
+ version: "0"
110
145
  type: :development
111
- prerelease: false
112
- version_requirements: *5840660
113
- - !ruby/object:Gem::Dependency
146
+ version_requirements: *id009
147
+ - !ruby/object:Gem::Dependency
114
148
  name: hoe
115
- requirement: &5840080 !ruby/object:Gem::Requirement
149
+ prerelease: false
150
+ requirement: &id010 !ruby/object:Gem::Requirement
116
151
  none: false
117
- requirements:
118
- - - ! '>='
119
- - !ruby/object:Gem::Version
120
- version: '3.4'
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
- prerelease: false
123
- version_requirements: *5840080
124
- - !ruby/object:Gem::Dependency
161
+ version_requirements: *id010
162
+ - !ruby/object:Gem::Dependency
125
163
  name: rdoc
126
- requirement: &5839480 !ruby/object:Gem::Requirement
164
+ prerelease: false
165
+ requirement: &id011 !ruby/object:Gem::Requirement
127
166
  none: false
128
- requirements:
129
- - - ! '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ hash: 3
171
+ segments:
172
+ - 0
173
+ version: "0"
132
174
  type: :development
133
- prerelease: false
134
- version_requirements: *5839480
135
- - !ruby/object:Gem::Dependency
175
+ version_requirements: *id011
176
+ - !ruby/object:Gem::Dependency
136
177
  name: rdoc
137
- requirement: &5838700 !ruby/object:Gem::Requirement
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
- version: '3.10'
183
+ - !ruby/object:Gem::Version
184
+ hash: 19
185
+ segments:
186
+ - 3
187
+ - 10
188
+ version: "3.10"
143
189
  type: :development
144
- prerelease: false
145
- version_requirements: *5838700
146
- - !ruby/object:Gem::Dependency
190
+ version_requirements: *id012
191
+ - !ruby/object:Gem::Dependency
147
192
  name: hoe
148
- requirement: &5838200 !ruby/object:Gem::Requirement
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
- version: '2.13'
198
+ - !ruby/object:Gem::Version
199
+ hash: 25
200
+ segments:
201
+ - 2
202
+ - 13
203
+ version: "2.13"
154
204
  type: :development
155
- prerelease: false
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
- extra_rdoc_files:
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
- version: '0'
228
- required_rubygems_version: !ruby/object:Gem::Requirement
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
- version: '0'
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
+