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 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
+