swissmedic-diff 0.2.9 → 0.3.0

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.
@@ -1,186 +1,66 @@
1
1
  #!/usr/bin/env ruby
2
- # -*- encoding: utf-8 -*-
2
+
3
3
  # SwissmedicPluginTest -- oddb.org -- 18.03.2008 -- hwyss@ywesee.com
4
4
 
5
5
  $: << File.expand_path("../lib", File.dirname(__FILE__))
6
6
 
7
- require 'minitest/autorun'
8
- require 'swissmedic-diff'
9
- require 'pp'
7
+ require "minitest/autorun"
8
+ require "swissmedic-diff"
9
+ require "pp"
10
10
 
11
11
  module ODDB
12
12
  class SwissmedicPluginTest < Minitest::Test
13
13
  def setup
14
14
  @diff = SwissmedicDiff.new
15
- @january_2014 = File.expand_path 'data/Packungen-2014.01.01.xlsx', File.dirname(__FILE__)
16
- @february_2014 = File.expand_path 'data/Packungen-2014.02.01.xlsx', File.dirname(__FILE__)
17
- end
18
-
19
- def test_diff_new_format_july_2015
20
- @diff = SwissmedicDiff.new
21
- last_month = File.expand_path 'data/Packungen-2015.06.04.xlsx', File.dirname(__FILE__)
22
- this_month = File.expand_path 'data/Packungen-2015.07.02.xlsx', File.dirname(__FILE__)
23
- result = @diff.diff this_month, last_month, [:atc_class, :sequence_date]
24
- assert(result.changes.flatten.index('Zulassungs-Nummer') == nil, "Should not find Zulassungs-Nummer in changes")
25
- assert_equal(2, result.news.size)
26
- assert_equal(4, result.changes.size)
27
- assert_equal(4, result.updates.size)
28
- assert_equal(['65838', nil], result.news.collect{|x| x[0] if x[0] == '65838'})
29
- assert_equal({"00277"=>[:name_base, :expiry_date], "00279"=>[:expiry_date], "65838"=>[:new], "15219"=>[:new]}, result.changes)
30
15
  end
31
16
 
32
- def test_diff_changes
33
- @diff = SwissmedicDiff.new
34
- last_month = File.expand_path 'data/Packungen-2015.06.04.xlsx', File.dirname(__FILE__)
35
- this_month = File.expand_path 'data/Packungen-2015.07.02.xlsx', File.dirname(__FILE__)
36
- expected = {
37
- "00277"=>[:name_base, :expiry_date],
38
- "00279"=>[:expiry_date],
39
- "65838"=>[:new],
40
- "15219"=>[:new]
41
- }
42
- result = @diff.diff this_month, last_month
43
- assert_equal(expected, result.changes)
44
- end
45
-
46
-
47
17
  def test_diff_changes_february_2019
48
18
  @diff = SwissmedicDiff.new
49
- last_month = File.expand_path 'data/Packungen-2015.07.02.xlsx', File.dirname(__FILE__)
50
- this_month = File.expand_path 'data/Packungen-2019.03.06.xlsx', File.dirname(__FILE__)
51
- expected = {"00277"=>[:name_base, :expiry_date, :production_science],
52
- "15219"=>[:expiry_date, :indication_registration, :indication_sequence, :sequence],
53
- "16105"=>[:new],
54
- "16598"=>[:new],
55
- "28486"=>[:new],
56
- "30015"=>[:new],
57
- "31644"=>[:new],
58
- "32475"=>[:new],
59
- "35366"=>[:new],
60
- "43454"=>[:new],
61
- "44625"=>[:new],
62
- "45882"=>[:new],
63
- "53290"=>[:new],
64
- "53662"=>[:new],
65
- "54015"=>[:new],
66
- "54534"=>[:new],
67
- "55558"=>[:new],
68
- "66297"=>[:new],
69
- "55594"=>[:new],
70
- "55674"=>[:new],
71
- "56352"=>[:new],
72
- "58943"=>[:new],
73
- "59267"=>[:new],
74
- "61186"=>[:new],
75
- "62069"=>[:new],
76
- "62132"=>[:new],
77
- "65856"=>[:new],
78
- "65857"=>[:new],
79
- "58734"=>[:new],
80
- "55561"=>[:new],
81
- "65160"=>[:new],
82
- "58158"=>[:new],
83
- "44447"=>[:new],
84
- "39252"=>[:new],
85
- "00278"=>[:delete],
86
- "00279"=>[:delete],
87
- "65837"=>[:delete],
88
- "65838"=>[:delete]
89
- }
90
- result = @diff.diff this_month, last_month
91
- assert_equal(expected, result.changes)
92
- end
19
+ last_month = File.expand_path "data/Packungen-2019.03.06.xlsx", File.dirname(__FILE__)
20
+ this_month = File.expand_path "data/Packungen-2025.07.01.xlsx", File.dirname(__FILE__)
21
+ expected = {"00450" => [:new],
22
+ "00278" => [:new],
23
+ "00279" => [:new],
24
+ "44447" => [:name_base, :production_science, :expiry_date, :substances, :composition],
25
+ "65837" => [:new],
26
+ "65838" => [:new],
27
+ "15219" => [:expiry_date],
28
+ "00000" => [:new],
29
+ "00277" => [:delete],
30
+ "16105" => [:delete],
31
+ "16598" => [:delete],
32
+ "28486" => [:delete],
33
+ "30015" => [:delete],
34
+ "31644" => [:delete],
35
+ "32475" => [:delete],
36
+ "35366" => [:delete],
37
+ "43454" => [:delete],
38
+ "44625" => [:delete],
39
+ "45882" => [:delete],
40
+ "53290" => [:delete],
41
+ "53662" => [:delete],
42
+ "54015" => [:delete],
43
+ "54534" => [:delete],
44
+ "55558" => [:delete],
45
+ "66297" => [:delete],
46
+ "55594" => [:delete],
47
+ "55674" => [:delete],
48
+ "56352" => [:delete],
49
+ "58943" => [:delete],
50
+ "59267" => [:delete],
51
+ "61186" => [:delete],
52
+ "62069" => [:delete],
53
+ "62132" => [:delete],
54
+ "65856" => [:delete],
55
+ "65857" => [:delete],
56
+ "58734" => [:delete],
57
+ "55561" => [:delete],
58
+ "65160" => [:delete],
59
+ "58158" => [:delete],
60
+ "39252" => [:delete]}
93
61
 
94
- def test_diff_wrong_header
95
- @diff = SwissmedicDiff.new
96
- last_month = File.expand_path 'data/Packungen-2015.06.04.xlsx', File.dirname(__FILE__)
97
- this_month = File.expand_path 'data/Packungen-wrong-header.xlsx', File.dirname(__FILE__)
98
- assert_raises(RuntimeError) { @diff.diff this_month, last_month, [:atc_class, :sequence_date]}
99
- end
100
-
101
-
102
- def test_diff_xlsx_and_xlsx
103
- result = @diff.diff @february_2014, @january_2014, [:atc_class, :sequence_date]
104
- assert_equal 4, result.news.size
105
- expected = {
106
- "00277"=>[:name_base, :expiry_date],
107
- "65040"=>[:sequence, :replaced_package],
108
- "60125"=>[:new],
109
- "61367"=>[:new],
110
- "00274"=>[:delete]
111
- }
112
- assert_equal(expected, result.changes)
113
- assert_equal 1, result.updates.size
114
- assert_equal 5, result.changes.size
115
- assert_equal 3, result.package_deletions.size
116
- assert_equal 4, result.package_deletions.first.size
117
- iksnrs = result.package_deletions.collect { |row| row.at(0) }.sort
118
- ikscds = result.package_deletions.collect { |row| row.at(2) }.sort
119
- assert_equal ["00274", "00274", "65040"], iksnrs
120
- assert_equal ["001", "001", "002"], ikscds
121
- assert_equal 1, result.sequence_deletions.size
122
- assert_equal ["00274", "01"], result.sequence_deletions.at(0)
123
- assert_equal 1, result.registration_deletions.size
124
- assert_equal ["00274"], result.registration_deletions.at(0)
125
- assert_equal 1, result.replacements.size
126
- assert_equal '001', result.replacements.values.first
127
-
128
- assert_equal 'Panthoben, Salbe', result.news.first[2].value
129
- assert_equal 'Coeur-Vaisseaux Sérocytol, Namensänderung', result.updates.first[2].value
130
- end
131
-
132
- def test_diff_error_column
133
- res = @diff.diff(@february_2014, @january_2014)
134
- assert_equal(OpenStruct, res.class)
135
- end
136
-
137
- def test_diff__ignore
138
- ignore = [:company, :name_base, :expiry_date, :indication_sequence]
139
- result = @diff.diff(@february_2014, @january_2014, ignore)
140
- expected = {
141
- "00278"=>[:atc_class],
142
- "00279"=>[:atc_class],
143
- "65040"=>[:sequence, :replaced_package],
144
- "60125"=>[:new],
145
- "61367"=>[:new],
146
- "00274"=>[:delete]
147
- }
62
+ result = @diff.diff this_month, last_month
148
63
  assert_equal(expected, result.changes)
149
- assert_equal 4, result.news.size
150
- assert_equal 3, result.updates.size
151
- assert_equal 6, result.changes.size
152
- assert_equal 3, result.package_deletions.size
153
- end
154
- def test_to_s
155
- @diff.to_s
156
- @diff.diff(@february_2014, @january_2014)
157
- assert_equal <<-EOS.strip, @diff.to_s
158
- + 60125: Otriduo Schnupfen, Dosierspray
159
- + 61367: Hypericum-Mepha 250, Lactab
160
- - 00274: Cardio-Pulmo-Rénal Sérocytol, suppositoire
161
- > 00277: Coeur-Vaisseaux Sérocytol, Namensänderung; Namensänderung (Coeur-Vaisseaux Sérocytol, Namensänderung), Ablaufdatum der Zulassung (25.04.2020)
162
- > 00278: Colon Sérocytol, suppositoire; ATC-Code (J06AA)
163
- > 00279: Conjonctif Sérocytol, suppositoire; ATC-Code (D03AX04)
164
- > 65040: Panthoben, Salbe; Packungs-Nummer (001 -> 003)
165
- EOS
166
- assert_equal <<-EOS.strip, @diff.to_s(:name)
167
- - 00274: Cardio-Pulmo-Rénal Sérocytol, suppositoire
168
- > 00277: Coeur-Vaisseaux Sérocytol, Namensänderung; Namensänderung (Coeur-Vaisseaux Sérocytol, Namensänderung), Ablaufdatum der Zulassung (25.04.2020)
169
- > 00278: Colon Sérocytol, suppositoire; ATC-Code (J06AA)
170
- > 00279: Conjonctif Sérocytol, suppositoire; ATC-Code (D03AX04)
171
- + 61367: Hypericum-Mepha 250, Lactab
172
- + 60125: Otriduo Schnupfen, Dosierspray
173
- > 65040: Panthoben, Salbe; Packungs-Nummer (001 -> 003)
174
- EOS
175
- assert_equal <<-EOS.strip, @diff.to_s(:registration)
176
- - 00274: Cardio-Pulmo-Rénal Sérocytol, suppositoire
177
- > 00277: Coeur-Vaisseaux Sérocytol, Namensänderung; Namensänderung (Coeur-Vaisseaux Sérocytol, Namensänderung), Ablaufdatum der Zulassung (25.04.2020)
178
- > 00278: Colon Sérocytol, suppositoire; ATC-Code (J06AA)
179
- > 00279: Conjonctif Sérocytol, suppositoire; ATC-Code (D03AX04)
180
- + 60125: Otriduo Schnupfen, Dosierspray
181
- + 61367: Hypericum-Mepha 250, Lactab
182
- > 65040: Panthoben, Salbe; Packungs-Nummer (001 -> 003)
183
- EOS
184
64
  end
185
65
  end
186
66
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swissmedic-diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hannes Wyss, Masaomi Hatakeyama
@@ -10,19 +10,19 @@ cert_chain: []
10
10
  date: 1980-01-01 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: rubyXL
13
+ name: simple_xlsx_reader
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 3.3.1
18
+ version: '0'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: 3.3.1
25
+ version: '0'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: nokogiri
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -52,7 +52,7 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  - !ruby/object:Gem::Dependency
55
- name: spreadsheet
55
+ name: logger
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - ">="
@@ -66,7 +66,7 @@ dependencies:
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
68
  - !ruby/object:Gem::Dependency
69
- name: logger
69
+ name: ostruct
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - ">="
@@ -80,13 +80,13 @@ dependencies:
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  - !ruby/object:Gem::Dependency
83
- name: ostruct
83
+ name: rake
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
- type: :runtime
89
+ type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
@@ -94,7 +94,21 @@ dependencies:
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  - !ruby/object:Gem::Dependency
97
- name: rake
97
+ name: standard
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: debug
98
112
  requirement: !ruby/object:Gem::Requirement
99
113
  requirements:
100
114
  - - ">="
@@ -145,20 +159,20 @@ extra_rdoc_files: []
145
159
  files:
146
160
  - Gemfile
147
161
  - Gemfile.lock
148
- - History.txt
162
+ - History.md
149
163
  - LICENSE
150
164
  - Manifest.txt
151
165
  - Packungen-2023.08.08.xlsx
152
166
  - Packungen-2023.09.08.xlsx
153
- - README.txt
167
+ - README.md
154
168
  - Rakefile
155
169
  - bin/swissmedic-diff
156
- - lib/compatibility.rb
157
170
  - lib/swissmedic-diff.rb
158
171
  - lib/version.rb
159
172
  - test/test_swissmedic-diff.rb
160
173
  homepage: https://github.com/zdavatz/swissmedic-diff
161
- licenses: []
174
+ licenses:
175
+ - GNU GPL version 2
162
176
  metadata:
163
177
  changelog_uri: https://github.com/zdavatz/swissmedic-diff/blob/master/History.md
164
178
  rdoc_options: []
@@ -168,7 +182,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
168
182
  requirements:
169
183
  - - ">="
170
184
  - !ruby/object:Gem::Version
171
- version: '0'
185
+ version: '2.0'
172
186
  required_rubygems_version: !ruby/object:Gem::Requirement
173
187
  requirements:
174
188
  - - ">="
data/lib/compatibility.rb DELETED
@@ -1,57 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
- require 'spreadsheet'
4
- require 'rubyXL'
5
-
6
- module Spreadsheet
7
- class << self
8
- def open io_or_path, mode="rb+"
9
- if File.extname(io_or_path).downcase == '.xlsx'
10
- RubyXL::Parser.parse(io_or_path)
11
- else
12
- if io_or_path.respond_to? :seek
13
- Excel::Workbook.open(io_or_path)
14
- elsif block_given?
15
- File.open(io_or_path, mode) do |fh|
16
- yield open(fh)
17
- end
18
- else
19
- open File.open(io_or_path, mode)
20
- end
21
- end
22
- end
23
- end
24
- end
25
-
26
- module RubyXL
27
- class Worksheet
28
- def row(row_index)
29
- x = @sheet_data[row_index]
30
- def x.date(column_index)
31
- data = self[column_index]
32
- return data.value.respond_to?(:to_i) ? data.value.to_i : data.value
33
- # return Date.new(1899,12,30)+data.value.to_i if data.is_a?(RubyXL::Cell)
34
- end unless defined?(x.date)
35
- x
36
- end
37
- end
38
- class Workbook
39
- def worksheet(idx)
40
- self[idx]
41
- end
42
- end
43
- class Row < OOXMLObject
44
- def []=(ind, value)
45
- cells[ind] = value
46
- end
47
- end
48
- class Cell
49
- def to_i
50
- self.value.respond_to?(:to_i) ? self.value.to_i : self.value
51
- end
52
- def to_s
53
- self.value.to_s
54
- end
55
- end
56
- end
57
-