gtin2atc 0.1.0 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f3d1cd6f1453e7360e43480e469813b2869ebc7e
4
- data.tar.gz: 4f965256f218c76683b7d968d189191eb4b50c26
3
+ metadata.gz: 5fde24bd193bb317155d193187921c62d47b9694
4
+ data.tar.gz: eec181694b853f52ee99d275e276291655f72d24
5
5
  SHA512:
6
- metadata.gz: 902b0381e432bb1a95ce16071322925ca11d593400707a7307b34592a5d81c7075d34457a2a997cfb4a8a3a0b1ffccbb7ddc66fa0151ce78ceb3cb75acbff581
7
- data.tar.gz: f8392f123d3e388e7acb039e43e974bef28e80903c117e81b3f9a3a4001763724500faab8f7999d8610fede65c2a8c0b2f1dbf323958d8c5578d0c6499aa75ec
6
+ metadata.gz: adaabdf14c6ec0ea883e4969c9e94b0beb22e491843474323845911c81d2a7d796f418e8f99734f23d1a29618a4859be1e048dca01191941eceaaa56b1acf984
7
+ data.tar.gz: 106691a04f037e14f49725626a6a069830313922645c3ae09147995293f09512f857e2ad09eb917d2e64b63c9c4a37628d4424f7884b3013763086a3d57c701e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gtin2atc (0.1.0)
4
+ gtin2atc (0.1.1)
5
5
  mechanize (~> 2.5.1)
6
6
  nokogiri (~> 1.5.10)
7
7
  rubyXL
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.1.1 27.01.2015
2
+
3
+ * Create many reporfiles with --compare --full
4
+
1
5
  === 0.1.0 26.01.2015
2
6
 
3
7
  * Initial release
@@ -11,6 +11,7 @@ module Gtin2atc
11
11
  def initialize(opts)
12
12
  Util.set_logging(opts[:log])
13
13
  @do_compare = opts[:compare]
14
+ @gen_reports = opts[:compare] and opts[:full]
14
15
  Util.debug_msg "Builder: opts are #{opts} @do_compare is #{@do_compare}"
15
16
  @data_swissmedic = {}
16
17
  @data_bag = {}
@@ -55,7 +56,7 @@ module Gtin2atc
55
56
  data
56
57
  end
57
58
  def swissindex_xml_extractor
58
- @swissindex = SwissIndexDownloader.new
59
+ @swissindex = SwissindexDownloader.new
59
60
  xml = @swissindex.download
60
61
  Util.debug_msg "swissindex_xml_extractor xml is #{xml.size} bytes long"
61
62
  data = {}
@@ -76,7 +77,7 @@ module Gtin2atc
76
77
  end
77
78
  def bag_xml_extractor
78
79
  data = {}
79
- @bag = BagXmlDownloader.new
80
+ @bag = BagDownloader.new
80
81
  xml = @bag.download
81
82
  Util.debug_msg "bag_xml_extractor xml is #{xml.size} bytes long"
82
83
 
@@ -117,7 +118,7 @@ module Gtin2atc
117
118
  end
118
119
  end
119
120
  end
120
- msg = "SwissIndex: Extracted #{gtins_to_parse.size} of #{@data_swissindex.size} items into #{output_name} for #{gtins_to_parse}"
121
+ msg = "swissindex: Extracted #{gtins_to_parse.size} of #{@data_swissindex.size} items into #{output_name} for #{gtins_to_parse}"
121
122
  Util.debug_msg(msg)
122
123
  return unless @do_compare
123
124
  @data_bag = bag_xml_extractor
@@ -128,7 +129,7 @@ module Gtin2atc
128
129
  csvfile << [gtin, item[:atc_code], item[:description]]
129
130
  end
130
131
  end
131
- Util.debug_msg "BAG: Extracted #{gtins_to_parse.size} of #{@data_bag.size} items into #{output_name} for #{gtins_to_parse}"
132
+ Util.debug_msg "bag: Extracted #{gtins_to_parse.size} of #{@data_bag.size} items into #{output_name} for #{gtins_to_parse}"
132
133
  @data_swissmedic = swissmedic_xls_extractor
133
134
  output_name = File.join(Util.get_archive, 'gtin2atc_swissmedic.csv')
134
135
  CSV.open(output_name,'w+') do |csvfile|
@@ -137,26 +138,26 @@ module Gtin2atc
137
138
  csvfile << [gtin, item[:atc_code], item[:pharmacode], item[:description]]
138
139
  end
139
140
  end
140
- Util.debug_msg "SwissMedic: Extracted #{@data_swissmedic.size} items into #{output_name}"
141
+ Util.debug_msg "swissmedic: Extracted #{@data_swissmedic.size} items into #{output_name}"
141
142
  check_bag
142
143
  check_swissmedic
143
144
  compare
144
145
  end
145
146
  # require 'pry';
146
147
  def check_bag
147
- matching_atc_codes = 0
148
+ matching_atc_codes = []
148
149
 
149
- not_in_swissmedic = 0
150
- match_in_swissmedic = 0
151
- shorter_in_swissmedic = 0
152
- longer_in_swissmedic = 0
153
- different_atc_in_swissmedic = 0
150
+ not_in_swissmedic = []
151
+ match_in_swissmedic = []
152
+ shorter_in_swissmedic = []
153
+ longer_in_swissmedic = []
154
+ different_atc_in_swissmedic = []
154
155
 
155
- not_in_swissindex = 0
156
- match_in_swissindex = 0
157
- shorter_in_swissindex = 0
158
- longer_in_swissindex = 0
159
- different_atc_in_swissindex = 0
156
+ not_in_swissindex = []
157
+ match_in_swissindex = []
158
+ shorter_in_swissindex = []
159
+ longer_in_swissindex = []
160
+ different_atc_in_swissindex = []
160
161
  j = 0
161
162
  @data_bag.each{
162
163
  |gtin, item|
@@ -166,43 +167,32 @@ module Gtin2atc
166
167
  if @data_swissmedic[gtin] and @data_swissindex[gtin] and
167
168
  atc_code == @data_swissmedic[gtin][:atc_code] and
168
169
  atc_code == @data_swissindex[gtin][:atc_code]
169
- Util.debug_msg "#{gtin}: matching_atc_codes SwissIndex #{item} #{@data_swissmedic[gtin][:atc_code]} and #{@data_swissindex[gtin][:atc_code]}"
170
- matching_atc_codes += 1
170
+ matching_atc_codes << "#{gtin}: matching_atc_codes swissindex #{item} #{@data_swissmedic[gtin][:atc_code]} and #{@data_swissindex[gtin][:atc_code]}"
171
171
  next
172
172
  end
173
173
 
174
174
  if not @data_swissindex[gtin]
175
- Util.debug_msg "#{gtin}: Not in SwissIndex #{item}"
176
- not_in_swissindex += 1
175
+ not_in_swissindex << "#{gtin}: Not in swissindex #{item}"
177
176
  elsif atc_code == @data_swissindex[gtin][:atc_code]
178
- Util.debug_msg "SwissIndex #{gtin}: ATC code #{atc_code} matches swissindex #{@data_swissindex[gtin][:atc_code]}"
179
- match_in_swissindex += 1
177
+ match_in_swissindex << "swissindex #{gtin}: ATC code #{atc_code} matches swissindex #{@data_swissindex[gtin][:atc_code]}"
180
178
  elsif atc_code.length < @data_swissindex[gtin][:atc_code].length
181
- longer_in_swissindex += 1
182
- Util.debug_msg "SwissIndex #{gtin}: ATC code #{atc_code} longer in swissindex #{@data_swissindex[gtin][:atc_code]}"
179
+ longer_in_swissindex << "swissindex #{gtin}: ATC code #{atc_code} longer in swissindex #{@data_swissindex[gtin][:atc_code]}"
183
180
  elsif atc_code.length > @data_swissindex[gtin][:atc_code].length
184
- shorter_in_swissindex += 1
185
- Util.debug_msg "SwissIndex #{gtin}: ATC code #{atc_code} shorter in swissindex #{@data_swissindex[gtin][:atc_code]}"
181
+ shorter_in_swissindex << "swissindex #{gtin}: ATC code #{atc_code} shorter in swissindex #{@data_swissindex[gtin][:atc_code]}"
186
182
  else
187
- different_atc_in_swissindex += 1
188
- Util.debug_msg "SwissIndex #{gtin}: ATC code #{atc_code} differs from swissindex #{@data_swissindex[gtin][:atc_code]}"
183
+ matching_atc_codes << "swissindex #{gtin}: ATC code #{atc_code} differs from swissindex #{@data_swissindex[gtin][:atc_code]}"
189
184
  end
190
185
 
191
- if not @data_swissmedic[gtin]
192
- Util.debug_msg "#{gtin}: Not in SwissMedic #{item}"
193
- not_in_swissmedic += 1
186
+ if not @data_swissmedic[gtin]
187
+ not_in_swissmedic << "#{gtin}: Not in swissmedic #{item}"
194
188
  elsif atc_code == @data_swissmedic[gtin][:atc_code]
195
- Util.debug_msg "SwissMedic #{gtin}: ATC code #{atc_code} matches swissmedic #{@data_swissmedic[gtin][:atc_code]}"
196
- match_in_swissmedic += 1
189
+ match_in_swissmedic << "swissmedic #{gtin}: ATC code #{atc_code} matches swissmedic #{@data_swissmedic[gtin][:atc_code]}"
197
190
  elsif atc_code.length < @data_swissmedic[gtin][:atc_code].length
198
- longer_in_swissmedic += 1
199
- Util.debug_msg "SwissMedic #{gtin}: ATC code #{atc_code} longer in swissmedic #{@data_swissmedic[gtin][:atc_code]}"
191
+ longer_in_swissmedic << "swissmedic #{gtin}: ATC code #{atc_code} longer in swissmedic #{@data_swissmedic[gtin][:atc_code]}"
200
192
  elsif atc_code.length > @data_swissmedic[gtin][:atc_code].length
201
- shorter_in_swissmedic += 1
202
- Util.debug_msg "SwissMedic #{gtin}: ATC code #{atc_code} shorter in swissmedic #{@data_swissmedic[gtin][:atc_code]}"
193
+ shorter_in_swissmedic << "swissmedic #{gtin}: ATC code #{atc_code} shorter in swissmedic #{@data_swissmedic[gtin][:atc_code]}"
203
194
  else
204
- different_atc_in_swissmedic += 1
205
- Util.debug_msg "SwissMedic #{gtin}: ATC code #{atc_code} differs from swissmedic #{@data_swissmedic[gtin][:atc_code]}"
195
+ different_atc_in_swissmedic << "swissmedic #{gtin}: ATC code #{atc_code} differs from swissmedic #{@data_swissmedic[gtin][:atc_code]}"
206
196
  end
207
197
  total1 = not_in_swissindex + match_in_swissindex + longer_in_swissindex + shorter_in_swissindex + different_atc_in_swissindex
208
198
  total2 = not_in_swissmedic + match_in_swissmedic + longer_in_swissmedic + shorter_in_swissmedic + different_atc_in_swissmedic
@@ -210,132 +200,138 @@ module Gtin2atc
210
200
  # binding.pry if j != (total2 + matching_atc_codes)
211
201
  # Util.debug_msg "#{gtin}: j #{j} finished #{total1} #{total2} #{atc_code} matching_atc_codes #{matching_atc_codes}"
212
202
  }
213
- Util.info "Result of verifing data from BAG (SL):
214
- BAG-data fetched from #{@bag.origin}.
215
- BAG had #{@data_bag.size} entries
203
+ Util.info "Result of verifing data from bag (SL):
204
+ bag-data fetched from #{@bag.origin}.
205
+ bag had #{@data_bag.size} entries
216
206
  #{@bag_entries_without_gtin.size} entries had no GTIN field
217
- Not in SwissMedic #{not_in_swissmedic}
218
- Not in SwissIndex #{not_in_swissindex}
219
- Comparing ATC-Codes between BAG and Swissmedic
220
- #{sprintf("%6d", matching_atc_codes)} items had the same ATC code in BAG, SwissIndex and SwissMedic
221
- #{sprintf("%6d", match_in_swissindex)} are the same in SwissMedic and BAG
222
- #{sprintf("%6d", different_atc_in_swissmedic)} are different in SwissMedic and BAG
223
- #{sprintf("%6d", shorter_in_swissmedic)} are shorter in SwissMedic than in BAG
224
- #{sprintf("%6d", longer_in_swissindex)} are longer in SwissMedic than in BAG
225
- Comparing ATC-Codes between BAG and Swissindex
226
- #{sprintf("%6d", matching_atc_codes)} items had the same ATC code in BAG, SwissIndex and SwissMedic
227
- #{sprintf("%6d", match_in_swissindex)} are the same in SwissIndex and BAG
228
- #{sprintf("%6d", different_atc_in_swissindex)} are different in SwissMedic and BAG
229
- #{sprintf("%6d", shorter_in_swissindex)} are shorter in SwissIndex than in BAG
230
- #{sprintf("%6d", longer_in_swissindex)} are longer in SwissIndex than in BAG
207
+ Not in swissmedic #{not_in_swissmedic.size}
208
+ Not in swissindex #{not_in_swissindex.size}
231
209
  "
210
+ Util.info "Comparing ATC-Codes between bag and swissmedic"
211
+ report('compare_bag_to_swissmedic', 'items had the same ATC code in bag, swissindex and swissmedic', matching_atc_codes)
212
+ report('compare_bag_to_swissmedic', 'are the same in swissmedic and bag', match_in_swissmedic)
213
+ report('compare_bag_to_swissmedic', 'are different in swissmedic and bag', different_atc_in_swissmedic)
214
+ report('compare_bag_to_swissmedic', 'are shorter in swissmedic than in bag', shorter_in_swissmedic)
215
+ report('compare_bag_to_swissmedic', 'are longer in swissmedic than in bag', longer_in_swissmedic)
216
+
217
+ Util.info "Comparing ATC-Codes between bag and swissindex"
218
+ report('compare_bag_to_swissindex', 'items had the same ATC code in bag, swissindex and swissmedic', matching_atc_codes)
219
+ report('compare_bag_to_swissindex', 'are the same in swissindex and bag', match_in_swissindex)
220
+ report('compare_bag_to_swissindex', 'are different in swissmedic and bag', different_atc_in_swissindex)
221
+ report('compare_bag_to_swissindex', 'are shorter in swissindex than in bag', shorter_in_swissindex)
222
+ report('compare_bag_to_swissindex', 'are longer in swissindex than in bag', longer_in_swissindex)
232
223
  end
233
224
 
225
+ def report(topic, msg, details)
226
+ full_msg = "#{topic}: #{details.size} #{msg}"
227
+ Util.info " #{full_msg}"
228
+ return unless @gen_reports
229
+ File.open((full_msg+'.txt').gsub(/[: ,]+/, '_'), 'w+') {
230
+ |file|
231
+ file.puts full_msg
232
+ details.each{|detail| file.puts detail }
233
+ }
234
+ end
234
235
  def check_swissmedic
235
- matching = 0
236
- not_in_bag = 0
237
- not_in_swissindex = 0
238
- matching_atc_codes = 0
239
- shorter_in_swissmedic = 0
240
- longer_in_swissindex = 0
241
- different_atc = 0
236
+ matching = []
237
+ not_in_bag = []
238
+ not_in_swissindex = []
239
+ matching_atc_codes = []
240
+ shorter_in_swissmedic = []
241
+ longer_in_swissindex = []
242
+ different_atc = []
242
243
  @data_swissmedic.each{
243
244
  |gtin, item|
244
- if @data_bag[gtin] and @data_swissindex[gtin] and @data_bag[gtin][1] == @data_swissindex[gtin][1]
245
- matching += 1
245
+ atc_code = item[:atc_code]
246
+ if @data_bag[gtin] and
247
+ @data_swissmedic[gtin] and
248
+ @data_bag[gtin] and
249
+ atc_code.eql?(@data_bag[gtin][1]) and
250
+ atc_code.eql?(@data_swissindex[gtin][1])
251
+ matching << "#{gtin} #{atc_code} #{@data_swissmedic[gtin][1]} match in bag, swissmedic and swissindex"
246
252
  next
247
253
  end
248
254
  unless @data_swissindex[gtin]
249
- Util.debug_msg "#{gtin}: Not in SwissIndex #{item}"
250
- not_in_swissindex += 1
255
+ not_in_swissindex << "Swissmedic #{gtin}: Not in swissindex #{item}"
251
256
  next
252
257
  end
253
258
  if item[:atc_code] == @data_swissindex[gtin][:atc_code]
254
- Util.debug_msg "SwissIndex #{gtin}: ATC code #{item[:atc_code]} matches swissindex #{@data_swissindex[gtin][:atc_code]}"
255
- matching_atc_codes += 1
259
+ matching_atc_codes << "swissindex #{gtin}: ATC code #{item[:atc_code]} matches swissindex #{@data_swissindex[gtin][:atc_code]}"
256
260
  elsif item[:atc_code].length < @data_swissindex[gtin][:atc_code].length
257
- longer_in_swissindex += 1
258
- Util.debug_msg "SwissIndex #{gtin}: ATC code #{item[:atc_code]} longer in swissindex #{@data_swissindex[gtin][:atc_code]}"
261
+ longer_in_swissindex << "swissindex #{gtin}: ATC code #{item[:atc_code]} longer in swissindex #{@data_swissindex[gtin][:atc_code]}"
259
262
  elsif item[:atc_code].length > @data_swissindex[gtin][:atc_code].length
260
- shorter_in_swissmedic += 1
261
- Util.debug_msg "SwissIndex #{gtin}: ATC code #{item[:atc_code]} shorter in swissindex #{@data_swissindex[gtin][:atc_code]}"
263
+ shorter_in_swissmedic << "swissindex #{gtin}: ATC code #{item[:atc_code]} shorter in swissindex #{@data_swissindex[gtin][:atc_code]}"
262
264
  else
263
- different_atc += 1
264
- Util.debug_msg "SwissIndex #{gtin}: ATC code #{item[:atc_code]} differs from swissindex #{@data_swissindex[gtin][:atc_code]}"
265
+ different_atc << "swissindex #{gtin}: ATC code #{item[:atc_code]} differs from swissindex #{@data_swissindex[gtin][:atc_code]}"
265
266
  end
266
267
  unless @data_bag[gtin]
267
- Util.debug_msg "#{gtin}: Not in BAG #{item}"
268
- not_in_bag += 1
268
+ not_in_bag << "#{gtin}: Not in bag #{item}"
269
269
  next
270
270
  end
271
271
  }
272
272
  Util.info "Result of verifing data from swissmedic:
273
- SwissMedic had #{@data_swissmedic.size} entries. Fetched from #{@swissmedic.origin}
274
- SwissIndex #{@data_swissindex.size} entries. Fetched from #{@swissindex.origin}
275
- BAG #{@data_bag.size} entries. #{@bag_entries_without_gtin.size} entries had no GTIN field. Fetched from #{@bag.origin}
276
- Matching #{matching} items.
277
- Not in BAG #{not_in_bag}
278
- Not in SwissIndex #{not_in_swissindex}
279
- Comparing ATC-Codes between Swissmedic and Swissindex
280
- #{sprintf("%6d", matching_atc_codes)} match
281
- #{sprintf("%6d", different_atc)} are different
282
- #{sprintf("%6d", matching_atc_codes)} are the same in SwissIndex and SwissMedic
283
- #{sprintf("%6d", shorter_in_swissmedic)} are shorter in SwissIndex
284
- #{sprintf("%6d", longer_in_swissindex)} are longer in SwissIndex
273
+ swissmedic had #{@data_swissmedic.size} entries. Fetched from #{@swissmedic.origin}
274
+ swissindex #{@data_swissindex.size} entries. Fetched from #{@swissindex.origin}
275
+ bag #{@data_bag.size} entries. #{@bag_entries_without_gtin.size} entries had no GTIN field. Fetched from #{@bag.origin}
276
+ Matching #{matching.size} items.
277
+ Not in bag #{not_in_bag.size}
278
+ Not in swissindex #{not_in_swissindex.size}
279
+ Comparing ATC-Codes between swissmedic and swissindex
285
280
  "
281
+ report('swissmedic', 'match in swissindex and swissmedic', matching_atc_codes)
282
+ report('swissmedic', 'are different in swissindex and swissmedic', different_atc)
283
+ report('swissmedic', 'are the same in swissindex and swissmedic', matching_atc_codes)
284
+ report('swissmedic', 'are shorter in swissindex', shorter_in_swissmedic)
285
+ report('swissmedic', 'are longer in swissindex', longer_in_swissindex)
286
286
  end
287
287
 
288
288
  def compare
289
289
  all_gtin = @data_bag.merge(@data_swissindex).merge(@data_swissmedic).sort
290
- matching_atc_codes = 0
291
- not_in_bag = 0
292
- not_in_swissmedic = 0
293
- not_in_swissindex = 0
294
- different_atc = 0
290
+ matching_atc_codes = []
291
+ not_in_bag = []
292
+ not_in_swissmedic = []
293
+ not_in_swissindex = []
294
+ different_atc = []
295
295
  all_gtin.each{
296
296
  |gtin, item|
297
297
  if @data_bag[gtin] and @data_swissindex[gtin] and @data_swissmedic[gtin] and
298
298
  @data_bag[gtin][:atc_code] == @data_swissindex[gtin][:atc_code] and
299
299
  @data_bag[gtin][:atc_code] == @data_swissindex[gtin][:atc_code]
300
- matching_atc_codes += 1
300
+ matching_atc_codes << "#{gtin}: ATC-Code #{@data_bag[gtin][:atc_code]} matches in bag, swissmedic and swissindex"
301
301
  next
302
302
  end
303
303
  unless @data_swissmedic[gtin]
304
- Util.debug_msg "#{gtin}: Not in SwissMedic #{item}"
305
- not_in_swissmedic += 1
304
+ not_in_swissmedic << "#{gtin}: Not in swissmedic #{item}"
306
305
  next
307
306
  end
308
307
  unless @data_swissindex[gtin]
309
- Util.debug_msg "#{gtin}: Not in SwissIndex #{item}"
310
- not_in_swissindex += 1
308
+ not_in_swissindex << "#{gtin}: Not in swissindex #{item}"
311
309
  next
312
310
  end
313
311
  unless @data_bag[gtin]
314
- Util.debug_msg "#{gtin}: Not in BAG #{item}"
315
- not_in_bag += 1
312
+ not_in_bag << "#{gtin}: Not in bag #{item}"
316
313
  next
317
314
  end
318
- different_atc += 1
319
- Util.debug_msg "#{gtin}: ATC code differs BAG #{@data_bag[gtin][:atc_code]} swissindex #{@data_swissindex[gtin][:atc_code]}"
315
+ different_atc << "#{gtin}: ATC code differs bag #{@data_bag[gtin][:atc_code]} swissindex #{@data_swissindex[gtin][:atc_code]}"
320
316
  }
321
317
  Util.info "Comparing all GTIN-codes:
322
318
  Found infos about #{all_gtin.size} entries
323
- BAG #{@data_bag.size} entries. #{@bag_entries_without_gtin.size} entries had no GTIN field. Fetched from #{@bag.origin}
324
- SwissIndex #{@data_swissindex.size} entries. Fetched from #{@swissindex.origin}
325
- SwissMedic #{@data_swissmedic.size} entries. Fetched from #{@swissmedic.origin}
326
- #{sprintf("%6d", matching_atc_codes)} items had the same ATC code in BAG, SwissIndex and SwissMedic
327
- #{sprintf("%6d", not_in_bag)} not in BAG
328
- #{sprintf("%6d", not_in_swissindex)} not in SwissIndex
329
- #{sprintf("%6d", not_in_swissmedic)} not in SwissMedic
330
- #{sprintf("%6d", different_atc)} ATC-Codes differed
319
+ bag #{@data_bag.size} entries. #{@bag_entries_without_gtin.size} entries had no GTIN field. Fetched from #{@bag.origin}
320
+ swissindex #{@data_swissindex.size} entries. Fetched from #{@swissindex.origin}
321
+ swissmedic #{@data_swissmedic.size} entries. Fetched from #{@swissmedic.origin}
331
322
  "
323
+ report('compare_all_gtins', 'items had the same ATC code in bag, swissindex and swissmedic', matching_atc_codes)
324
+ report('compare_all_gtins', 'not in bag', not_in_bag)
325
+ report('compare_all_gtins', 'not in swissindex', not_in_swissindex)
326
+ report('compare_all_gtins', 'not in swissmedic', not_in_swissmedic)
327
+ report('compare_all_gtins', 'ATC-Codes differed', different_atc)
332
328
  end
333
329
  end
334
330
  class Swissmedic
335
331
  def Swissmedic.get_latest
336
332
  Util.debug_msg 'test'
337
333
  @index_url = 'https://www.swissmedic.ch/arzneimittel/00156/00221/00222/00230/index.html?lang=de'
338
- Util.debug_msg("SwissmedicPlugin @index_url #{@index_url}")
334
+ Util.debug_msg("swissmedicPlugin @index_url #{@index_url}")
339
335
  latest_name, target = Util.get_latest_and_dated_name('Packungen', '.xlsx')
340
336
  if File.exist?(target)
341
337
  Util.debug_msg "#{__FILE__}: #{__LINE__} skip writing #{target} as it already exists and is #{File.size(target)} bytes."
@@ -115,7 +115,7 @@ module Gtin2atc
115
115
  xml
116
116
  end
117
117
  end
118
- class BagXmlDownloader < Downloader
118
+ class BagDownloader < Downloader
119
119
  def init
120
120
  super
121
121
  @url ||= 'http://bag.e-mediat.net/SL2007.Web.External/File.axd?file=XMLPublications.zip'
@@ -125,7 +125,7 @@ module Gtin2atc
125
125
  end
126
126
  def download
127
127
  file = File.join(WorkDir, 'XMLPublications.zip')
128
- Gtin2atc.log "BagXmlDownloader #{__LINE__}: #{file} from #{@url}"
128
+ Gtin2atc.log "BagDownloader #{__LINE__}: #{file} from #{@url}"
129
129
  if File.exists?(file) and diff_hours = ((Time.now-File.ctime(file)).to_i/3600) and diff_hours < 24
130
130
  Util.debug_msg "Skip download of #{file} as only #{diff_hours} hours old"
131
131
  else
@@ -190,7 +190,7 @@ module Gtin2atc
190
190
  end
191
191
  end
192
192
 
193
- class SwissIndexDownloader < Downloader
193
+ class SwissindexDownloader < Downloader
194
194
  def initialize(options={}, type=:pharma, lang='DE')
195
195
  @type = (type == :pharma ? 'Pharma' : 'NonPharma')
196
196
  @lang = lang
@@ -9,6 +9,7 @@ module Gtin2atc
9
9
  {
10
10
  :log => false,
11
11
  :compare => false,
12
+ :full => false,
12
13
  }
13
14
  end
14
15
  def Options.help
@@ -25,6 +26,7 @@ Usage:
25
26
  * BAG http://bag.e-mediat.net/SL2007.Web.External/File.axd?file=XMLPublications.zip
26
27
  * SwissIndex e-mediat: http://swissindex.e-mediat.net/SwissindexPharma_out_V101
27
28
  * or if the ATC_Code does not not match
29
+ -- full if --compare and --full given produce 15 detailed report files
28
30
  -h, --help Show this help message.
29
31
  EOS
30
32
  end
@@ -33,6 +35,7 @@ EOS
33
35
  @opts = Options.default_opts
34
36
  @parser.on('--log') {|v| @opts[:log] = true }
35
37
  @parser.on('--compare') {|v| @opts[:compare] = true }
38
+ @parser.on('--full') {|v| @opts[:full] = true }
36
39
  @parser.on_tail('-h', '--help') { puts Options.help; exit }
37
40
  end
38
41
  end
@@ -1,3 +1,3 @@
1
1
  module Gtin2atc
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/spec/builder_spec.rb CHANGED
@@ -60,7 +60,7 @@ describe Gtin2atc::Builder do
60
60
  it 'should produce more log output' do
61
61
  @res = buildr_capture(:stdout){ cli.run }
62
62
  @res.match(/swissindex_xml_extractor/).should_not == nil
63
- @res.match(/SwissIndex: Extracted/).should_not == nil
63
+ @res.match(/swissindex: Extracted/).should_not == nil
64
64
  end
65
65
  end
66
66
 
@@ -129,9 +129,9 @@ describe Gtin2atc::Builder do
129
129
  [ /Found infos/,
130
130
  /Fetched from/,
131
131
  /Matching/,
132
- /not in BAG/,
133
- /not in SwissMedic/,
134
- /not in SwissIndex/,
132
+ /not in bag/,
133
+ /not in swissmedic/,
134
+ /not in swissindex/,
135
135
  /ATC-Codes diff/,
136
136
  ].each {
137
137
  |pattern|
@@ -144,4 +144,21 @@ describe Gtin2atc::Builder do
144
144
 
145
145
  end
146
146
 
147
+ context 'when --compare --full is given' do
148
+ let(:cli) do
149
+ options = Gtin2atc::Options.new
150
+ options.parser.parse!('--compare --full'.split(' '))
151
+ Gtin2atc::Builder.new(options.opts)
152
+ end
153
+
154
+ it 'should produce a many report files' do
155
+ @res = buildr_capture(:stdout){ cli.run }
156
+ Dir.glob(Gtin2atc::WorkDir + '/compare_all_gtins*.txt').size.should == 5
157
+ Dir.glob(Gtin2atc::WorkDir + '/swissmedic_*.txt').size.should == 5
158
+ Dir.glob(Gtin2atc::WorkDir + '/compare_bag_to_swissindex_*.txt').size.should == 5
159
+ Dir.glob(Gtin2atc::WorkDir + '/compare_bag_to_swissmedic_*.txt').size.should == 5
160
+ end
161
+
162
+ end
163
+
147
164
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtin2atc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Niklaus Giger, Zeno R.R. Davatz