swissmedic-diff 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZjYzOTlmOTY3NjE1MTVkOGZhN2I5YzViMWQyYzYxMjU4NmZhZDg5MQ==
4
+ NGZmZDYzOTBkNGI4MWQ5OTdlMTU4YmYyNzExNzI0YmU1MmZjOWIyMg==
5
5
  data.tar.gz: !binary |-
6
- YWUxY2U2MTRjOWFiNjEwNTNhMWQ1ZGI0ZDVjNGQ3NzRkNzA0MjViNQ==
6
+ NTA2M2YwNTU3M2RjNTIxNzJmZTUxZjM5MTg2NWZhZjg1NGM3ZGZlNA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MTJiY2QwMThmMDU1ZGJlZGI4YzljYTA3YjIwNjU1OThhZGJiYTBhN2RhMGQ3
10
- ZWM0MTdhMjNiYTM2M2ZjOGM2MzQ5YzYwMjExMTcxN2I4YjhmMDZmZDMyMTk4
11
- NDg2NjRhNWY0NTZlMDM0MDdiYzZlYzMwMTQ1MTQ1ZTFmYmIzMTQ=
9
+ YzU4YjQ4ODRkMzc4OTZmMWM3MWM2MjUxNTBlNDFmY2Q5ZmM0ZmVhMTJhZDZj
10
+ MmQ2MTg2NWY2NzY1MzEzZTRkZTBlY2FkMTA3MGY0OGRkOWE4M2YxOTIxM2M2
11
+ YTZkZWQyODMzZDRjMDE2OGVjNGVhNGM5NTFhNjc2ZjYyYTQ0ZmI=
12
12
  data.tar.gz: !binary |-
13
- NTdjNWQ4ZDFkZWNiYTI4NTllYWRhOGVjYTk1MThmZDY2YTc5NWM5MjQ5MTg4
14
- OWYxZDFlNGM3NmZjY2Q4OGZjNWQyODFmYTIzYWI4ZGYwMmU0ZDAyMTI4NDhh
15
- NTYzYjk0OGUzM2MwYTk3ZjdiOGVlYzFiNTRkMDY5ZDhjNDk5OWE=
13
+ MjUwYjRmZThhMGUxMTZkMDUxNzdjZTRkNWQyYWFlMzZmMzdmNjI2YmMwZjFk
14
+ MWFjMmEwOWMwYTNjNTM3YTkyODNjOGE1MGMxNTFhMDIyZjRjOWQ0OWM4M2Qz
15
+ YTM1ZTgyY2MwZTIwNTM0NzcyNjkwNDFhMjExM2MyZDMzNTgzZjI=
data/.travis.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  language: ruby
2
- before_install:
3
- - gem install bundler
2
+ cache: bundler
3
+ bundler_args: --without debugger
4
4
 
5
5
  notifications:
6
6
  email:
data/Gemfile CHANGED
@@ -7,5 +7,10 @@ group :development do
7
7
  end
8
8
 
9
9
  group :debugger do
10
- gem 'pry-debugger'
10
+ if RUBY_VERSION.match(/^1/)
11
+ gem 'pry-debugger'
12
+ else
13
+ gem 'pry-byebug'
14
+ end
11
15
  end unless RUBY_VERSION =~ /^1\.8/
16
+
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- swissmedic-diff (0.1.8)
4
+ swissmedic-diff (0.1.9)
5
5
  nokogiri
6
6
  rubyXL
7
7
  rubyzip
@@ -10,44 +10,44 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- ansi (1.4.3)
13
+ ansi (1.5.0)
14
14
  builder (3.2.2)
15
15
  coderay (1.1.0)
16
- columnize (0.8.9)
16
+ columnize (0.9.0)
17
17
  debugger (1.6.8)
18
18
  columnize (>= 0.3.1)
19
19
  debugger-linecache (~> 1.2.0)
20
20
  debugger-ruby_core_source (~> 1.3.5)
21
21
  debugger-linecache (1.2.0)
22
- debugger-ruby_core_source (1.3.5)
23
- hoe (3.12.0)
22
+ debugger-ruby_core_source (1.3.8)
23
+ hoe (3.13.1)
24
24
  rake (>= 0.8, < 11.0)
25
25
  method_source (0.8.2)
26
- mini_portile (0.6.0)
27
- minitest (5.3.5)
28
- minitest-reporters (1.0.5)
26
+ mini_portile (0.6.2)
27
+ minitest (5.7.0)
28
+ minitest-reporters (1.0.16)
29
29
  ansi
30
30
  builder
31
31
  minitest (>= 5.0)
32
32
  ruby-progressbar
33
- nokogiri (1.6.2.1)
34
- mini_portile (= 0.6.0)
35
- pry (0.10.0)
33
+ nokogiri (1.6.6.2)
34
+ mini_portile (~> 0.6.0)
35
+ pry (0.10.1)
36
36
  coderay (~> 1.1.0)
37
37
  method_source (~> 0.8.1)
38
38
  slop (~> 3.4)
39
39
  pry-debugger (0.2.3)
40
40
  debugger (~> 1.3)
41
41
  pry (>= 0.9.10, < 0.11.0)
42
- rake (10.3.2)
43
- ruby-ole (1.2.11.7)
44
- ruby-progressbar (1.5.1)
45
- rubyXL (3.1.2)
42
+ rake (10.4.2)
43
+ ruby-ole (1.2.11.8)
44
+ ruby-progressbar (1.7.5)
45
+ rubyXL (3.3.8)
46
46
  nokogiri (>= 1.4.4)
47
47
  rubyzip (>= 1.1.6)
48
- rubyzip (1.1.6)
49
- slop (3.5.0)
50
- spreadsheet (0.9.7)
48
+ rubyzip (1.1.7)
49
+ slop (3.6.0)
50
+ spreadsheet (1.0.3)
51
51
  ruby-ole (>= 1.0)
52
52
 
53
53
  PLATFORMS
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.1.9 / 08.06.2015
2
+
3
+ * Swissmedic has different header lines
4
+
1
5
  === 0.1.8 / 07.07.2014
2
6
 
3
7
  * Support parsing xlsx of Swissmedic July
@@ -19,11 +19,11 @@ require File.join(File.dirname(__FILE__), 'compatibility.rb')
19
19
  #Authors:: Hannes Wyss (hwyss@ywesee.com), Masaomi Hatakeyama (mhatakeyama@ywesee.com)
20
20
  #Version:: 0.1.4 2013-10-16 commit c30af5c15f6b8101f8f84cb482dfd09ab20729d6
21
21
  #Copyright:: Copyright (C) ywesee GmbH, 2010. All rights reserved.
22
- #License:: GPLv2.0 Compliance
22
+ #License:: GPLv2.0 Compliance
23
23
  #Source:: http://scm.ywesee.com/?p=swissmedic-diff/.git;a=summary
24
24
  class SwissmedicDiff
25
25
  module Diff
26
- COLUMNS = [ :iksnr, :seqnr, :name_base, :company,
26
+ COLUMNS = [ :iksnr, :seqnr, :name_base, :company,
27
27
  :index_therapeuticus, :atc_class, :production_science,
28
28
  :registration_date, :sequence_date, :expiry_date, :ikscd,
29
29
  :size, :unit, :ikscat, :substances, :composition,
@@ -102,9 +102,6 @@ class SwissmedicDiff
102
102
  Spreadsheet.client_encoding = 'UTF-8'
103
103
  tbook = Spreadsheet.open(target)
104
104
  sheet = tbook.worksheet(0)
105
- if new_column = cell(sheet.row(2), COLUMNS.size)
106
- raise "New column #{COLUMNS.size} (#{new_column})"
107
- end
108
105
  idx, prr, prp = nil
109
106
  multiples = {}
110
107
  each_valid_row(tbook) { |row|
@@ -137,7 +134,7 @@ class SwissmedicDiff
137
134
  (changes[iksnr].concat flags).uniq!
138
135
  updates.push row unless flags.empty?
139
136
  else
140
- replacements.store [ iksnr, seqnr, cell(row, column(:size)),
137
+ replacements.store [ iksnr, seqnr, cell(row, column(:size)),
141
138
  cell(row, column(:unit)) ], row
142
139
  flags = changes[iksnr]
143
140
  flags.push(:sequence).uniq! unless(flags.include? :new)
@@ -146,7 +143,7 @@ class SwissmedicDiff
146
143
  }
147
144
  @diff.replacements = reps = {}
148
145
  known_pacs.each { |(iksnr, pacnr), row|
149
- key = [iksnr, '%02i' % cell(row, column(:seqnr)).to_i,
146
+ key = [iksnr, '%02i' % cell(row, column(:seqnr)).to_i,
150
147
  cell(row, column(:size)), cell(row, column(:unit))]
151
148
  if(rep = replacements[key])
152
149
  changes[iksnr].push :replaced_package
@@ -157,7 +154,7 @@ class SwissmedicDiff
157
154
  changes.delete_if { |iksnr, flags| flags.empty? }
158
155
  @diff.package_deletions = known_pacs.collect { |key, row|
159
156
  ## the keys in known_pacs don't include the sequence number (which
160
- # would prevent us from properly recognizing multi-sequence-Packages),
157
+ # would prevent us from properly recognizing multi-sequence-Packages),
161
158
  # so we need complete the path to the package now
162
159
  key[1,0] = '%02i' % cell(row, column(:seqnr)).to_i
163
160
  key
@@ -205,7 +202,7 @@ class SwissmedicDiff
205
202
  known_regs.store [iksnr], row
206
203
  known_seqs.store [iksnr, seqnr], row
207
204
  known_pacs.store [iksnr, pacnr, idx], row
208
- (newest_rows[iksnr] ||= {})[pacnr] = row
205
+ (newest_rows[iksnr] ||= {})[pacnr] = row
209
206
  }
210
207
  end
211
208
  def name(diff, iksnr)
@@ -236,7 +233,7 @@ class SwissmedicDiff
236
233
  def to_s(sort=:group)
237
234
  @diff ||= nil
238
235
  return '' unless @diff
239
- @diff.changes.sort_by { |iksnr, flags|
236
+ @diff.changes.sort_by { |iksnr, flags|
240
237
  _sort_by(sort, iksnr, flags)
241
238
  }.collect { |iksnr, flags|
242
239
  if(flags.include? :new)
@@ -245,7 +242,7 @@ class SwissmedicDiff
245
242
  "- " << describe(@diff, iksnr)
246
243
  else
247
244
  "> " << describe(@diff, iksnr) << "; " \
248
- << flags.collect { |flag| describe_flag(@diff, iksnr, flag)
245
+ << flags.collect { |flag| describe_flag(@diff, iksnr, flag)
249
246
  }.compact.join(", ")
250
247
  end
251
248
  }.join("\n")
@@ -279,7 +276,7 @@ class SwissmedicDiff
279
276
  end
280
277
  end
281
278
  end
282
-
279
+
283
280
  #=== iterate over all valid rows of a swissmedic Packungen.xls
284
281
  #
285
282
  # Iterates over all rows, ignoring Tierarzneimittel and
@@ -312,7 +309,7 @@ class SwissmedicDiff
312
309
  yield row
313
310
  }
314
311
  end
315
-
312
+
316
313
  def rows_to_skip(spreadsheet)
317
314
  # Packungen.xls of swissmedic before October 2013 had 3 leading rows
318
315
  # Packungen.xls of swissmedic after October 2013 have 4 leading rows
@@ -325,7 +322,7 @@ class SwissmedicDiff
325
322
  end
326
323
  j
327
324
  end
328
-
325
+
329
326
  end
330
327
  include Diff
331
328
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class SwissmedicDiff
2
- VERSION = '0.1.8'
2
+ VERSION = '0.1.9'
3
3
  end
Binary file
@@ -35,8 +35,8 @@ module ODDB
35
35
  assert(result.changes.flatten.index('Zulassungs-Nummer') == nil, "Should not find Zulassungs-Nummer in changes")
36
36
  # puts "Got #{result.news.size} news, #{result.changes.size} changes, #{result.updates.size} updates."
37
37
  assert_equal(8, result.news.size)
38
- assert_equal(3, result.changes.size)
39
- assert_equal(1, result.updates.size)
38
+ assert_equal(4, result.changes.size)
39
+ assert_equal(2, result.updates.size)
40
40
  assert(result.news.first.index('00280'), "Should find 00280 in news")
41
41
  assert(result.news.flatten.index('65034'), "Should find 65034 in news")
42
42
  assert(result.news.flatten.index('00277') == nil, "Should not find 00277 in news")
@@ -67,7 +67,7 @@ module ODDB
67
67
 
68
68
  def test_diff_xlsx_and_xls
69
69
  @diff = SwissmedicDiff.new
70
- last_month = File.expand_path 'data/Packungen_2014_small.xlsx', File.dirname(__FILE__)
70
+ last_month = File.expand_path 'data/Packungen_2014_01.xlsx', File.dirname(__FILE__)
71
71
  this_month = File.expand_path 'data/Packungen.xls', File.dirname(__FILE__)
72
72
  result = @diff.diff last_month, this_month, [:atc_class, :sequence_date]
73
73
  assert_equal(7, result.news.size)
@@ -79,26 +79,14 @@ module ODDB
79
79
  end
80
80
  def test_diff_xlsx_and_xlsx
81
81
  @diff = SwissmedicDiff.new
82
- last_month = File.expand_path 'data/Packungen_2014_small.xlsx', File.dirname(__FILE__)
82
+ last_month = File.expand_path 'data/Packungen_2014_01.xlsx', File.dirname(__FILE__)
83
83
  this_month = File.expand_path 'data/Packungen_2014_small.xlsx', File.dirname(__FILE__)
84
84
  result = @diff.diff last_month, this_month, [:atc_class, :sequence_date]
85
- assert_equal({}, result.changes)
85
+ assert_equal({"00277"=>[:expiry_date, :indication_sequence]}, result.changes)
86
+ assert_equal(1, result.updates.size)
86
87
  assert_equal([], result.news)
87
- assert_equal([], result.updates)
88
88
  end
89
89
 
90
- # This is not a unit test as it takes way too long (> 1 minute)
91
- # Instead it might just tell you how to test with real data
92
- def test_real_diff
93
- @diff = SwissmedicDiff.new
94
- last_month = File.expand_path 'data/Packungen-2013.08.16.xls', File.dirname(__FILE__)
95
- this_month = File.expand_path 'data/Packungen-2013.11.04.xls', File.dirname(__FILE__)
96
- result = @diff.diff last_month, this_month, [:atc_class, :sequence_date]
97
- assert(result.changes.flatten.index('Zulassungs-Nummer') == nil, "Should not find Zulassungs-Nummer in changes")
98
- assert(result.news.flatten.index('Zulassungs-Nummer') == nil, "Should not find Zulassungs-Nummer in changes")
99
- assert(result.news.flatten.index('00277') == nil, "Should not find 00277 in news")
100
- end if false
101
-
102
90
  def test_iterate
103
91
  diff = SwissmedicDiff.new
104
92
  strings = []
@@ -187,9 +175,8 @@ module ODDB
187
175
  assert_equal '005', result.replacements.values.first
188
176
  end
189
177
  def test_diff_error_column
190
- assert_raises(RuntimeError) {
191
- @diff.diff(@data_error_column, @older)
192
- }
178
+ res = @diff.diff(@data_error_column, @older)
179
+ assert_equal(OpenStruct, res.class)
193
180
  end
194
181
 
195
182
  # if row.size < COLUMNS.size/2
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swissmedic-diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masaomi Hatakeyama, Zeno R.R. Davatz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-07 00:00:00.000000000 Z
11
+ date: 2015-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdoc
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '3.6'
33
+ version: '3.7'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '3.6'
40
+ version: '3.7'
41
41
  description: ! '* Compares two Excel Documents provided by Swissmedic and displays
42
42
  the
43
43
 
@@ -86,7 +86,8 @@ files:
86
86
  - test/data/Packungen_error_missing2.xls
87
87
  - test/test_swissmedic-diff.rb
88
88
  homepage: https://github.com/zdavatz/swissmedic-diff
89
- licenses: []
89
+ licenses:
90
+ - MIT
90
91
  metadata: {}
91
92
  post_install_message:
92
93
  rdoc_options:
@@ -106,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
107
  version: '0'
107
108
  requirements: []
108
109
  rubyforge_project: swissmedic-diff
109
- rubygems_version: 2.2.1
110
+ rubygems_version: 2.3.0
110
111
  signing_key:
111
112
  specification_version: 4
112
113
  summary: ! '* Compares two Excel Documents provided by Swissmedic and displays the