swissmedic-diff 0.1.8 → 0.1.9

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