swissmedic-diff 0.2.4 → 0.2.6
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 +5 -5
- data/Gemfile.lock +8 -8
- data/History.txt +4 -0
- data/lib/swissmedic-diff.rb +55 -2
- data/lib/version.rb +1 -1
- data/test/test_swissmedic-diff.rb +49 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b3e653dc43ed5f34c4a8c0d074de92e12153963ea047acea5b0c7e1f9948d8e7
|
4
|
+
data.tar.gz: 429bdb424bc0b3df7d5b47da74d68a5815aab4aab5f7ba1f5590d8cb4bdf83b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38184c2634cc1328941bd850442ee2ac4fbe74ae383c20ac8f1261c72c27d0795f6b3955ad400d5eb8e5af105faa1c929b1a0ce37f86cc74ccdde3352e21060b
|
7
|
+
data.tar.gz: 7b7004e06ac569a7a5722821c0169e0addd52a1e7284ceefeb306290c8402dc7bd41c462d9f34521fe64550fc746fdc021b27ad8e1d9cc4bb17833e43514d971
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
swissmedic-diff (0.2.
|
4
|
+
swissmedic-diff (0.2.6)
|
5
5
|
nokogiri
|
6
6
|
rubyXL (>= 3.3.1)
|
7
7
|
rubyzip
|
@@ -15,15 +15,15 @@ GEM
|
|
15
15
|
byebug (9.1.0)
|
16
16
|
coderay (1.1.2)
|
17
17
|
method_source (0.8.2)
|
18
|
-
mini_portile2 (2.
|
18
|
+
mini_portile2 (2.4.0)
|
19
19
|
minitest (5.10.3)
|
20
20
|
minitest-reporters (1.1.18)
|
21
21
|
ansi
|
22
22
|
builder
|
23
23
|
minitest (>= 5.0)
|
24
24
|
ruby-progressbar
|
25
|
-
nokogiri (1.
|
26
|
-
mini_portile2 (~> 2.
|
25
|
+
nokogiri (1.10.1)
|
26
|
+
mini_portile2 (~> 2.4.0)
|
27
27
|
pry (0.11.0)
|
28
28
|
coderay (~> 1.1.0)
|
29
29
|
method_source (~> 0.8.1)
|
@@ -36,11 +36,11 @@ GEM
|
|
36
36
|
rake (12.3.0)
|
37
37
|
ruby-ole (1.2.12.1)
|
38
38
|
ruby-progressbar (1.8.3)
|
39
|
-
rubyXL (3.3.
|
39
|
+
rubyXL (3.3.33)
|
40
40
|
nokogiri (>= 1.4.4)
|
41
41
|
rubyzip (>= 1.1.6)
|
42
|
-
rubyzip (1.2.
|
43
|
-
spreadsheet (1.1.
|
42
|
+
rubyzip (1.2.2)
|
43
|
+
spreadsheet (1.1.9)
|
44
44
|
ruby-ole (>= 1.0)
|
45
45
|
yard (0.9.9)
|
46
46
|
|
@@ -56,4 +56,4 @@ DEPENDENCIES
|
|
56
56
|
swissmedic-diff!
|
57
57
|
|
58
58
|
BUNDLED WITH
|
59
|
-
1.
|
59
|
+
1.17.2
|
data/History.txt
CHANGED
data/lib/swissmedic-diff.rb
CHANGED
@@ -53,7 +53,7 @@ class SwissmedicDiff
|
|
53
53
|
|
54
54
|
COLUMNS_JULY_2015 = {
|
55
55
|
:iksnr => /Zulassungs-Nummer/i, # column-nr: 0
|
56
|
-
:seqnr => /
|
56
|
+
:seqnr => /Dosis+tärke-nummer/i,
|
57
57
|
:name_base => /Präparatebezeichnung/i,
|
58
58
|
:company => /Zulassungsinhaberin/i,
|
59
59
|
:production_science => /Heilmittelcode/i,
|
@@ -78,6 +78,33 @@ class SwissmedicDiff
|
|
78
78
|
:drug_index => /Verz. bei betäubun.*smittel-haltigen Präparaten/i,
|
79
79
|
}
|
80
80
|
|
81
|
+
COLUMNS_FEBRUARY_2019= {
|
82
|
+
:iksnr => /Zulassungs-Nummer/i, # column-nr: 0
|
83
|
+
:seqnr => /Dosisstärke-nummer/i,
|
84
|
+
:name_base => /Bezeichnung des Arzneimittels/i,
|
85
|
+
:company => /Zulassungsinhaberin/i,
|
86
|
+
:production_science => /Heilmittelcode/i,
|
87
|
+
:index_therapeuticus => /IT-Nummer/i, # column-nr: 5
|
88
|
+
:atc_class => /ATC-Code/i,
|
89
|
+
:registration_date => /Erstzul.datum Arzneimittel/i,
|
90
|
+
:sequence_date => /Zul.datum Dosisstärke/i,
|
91
|
+
:expiry_date => /Gültigkeitsdauer der Zulassung/i,
|
92
|
+
:ikscd => /Packungscode/i, # column-nr: 10
|
93
|
+
:size => /Packungsgrösse/i,
|
94
|
+
:unit => /Einheit/i,
|
95
|
+
:ikscat => /Abgabekategorie Packung/i,
|
96
|
+
:ikscat_seq => /Abgabekategorie Dosisstärke/i,
|
97
|
+
:ikscat_preparation => /Abgabekategorie Arzneimittel/i, # column-nr: 15
|
98
|
+
:substances => /Wirkstoff/i,
|
99
|
+
:composition => /Zusammensetzung/i,
|
100
|
+
:composition_AMZV => /Volldeklaration rev. AMZV umgesetzt/i,
|
101
|
+
:indication_registration => /Anwendungsgebiet Arzneimittel/i,
|
102
|
+
:indication_sequence => /Anwendungsgebiet Dosisstärke/i, # column-nr 20
|
103
|
+
:gen_production => /Gentechnisch hergestellte Wirkstoffe/i,
|
104
|
+
:insulin_category => /Kategorie bei Insulinen/i,
|
105
|
+
# swissmedi corrected in february 2018 the typo betäubunsmittel to betäubungsmittel-
|
106
|
+
:drug_index => /Verz. bei betäubungsmittel-haltigen Arzneimittel/i,
|
107
|
+
}
|
81
108
|
FLAGS = {
|
82
109
|
:new => 'Neues Produkt',
|
83
110
|
:name_base => 'Namensänderung',
|
@@ -366,7 +393,33 @@ class SwissmedicDiff
|
|
366
393
|
end
|
367
394
|
return COLUMNS_JULY_2015
|
368
395
|
end
|
369
|
-
|
396
|
+
row = spreadsheet.worksheet(0)[5] # Headers are found at row 5 since February 5
|
397
|
+
error_2019 = nil
|
398
|
+
if spreadsheet.worksheet(0)[5].size != COLUMNS_FEBRUARY_2019.size
|
399
|
+
raise "#{error_2015}\n#{error_2014}"
|
400
|
+
else
|
401
|
+
0.upto((COLUMNS_FEBRUARY_2019.size) -1).each{ |idx| puts "#{idx}: #{row[idx].value}" } if $VERBOSE
|
402
|
+
COLUMNS_FEBRUARY_2019.each{
|
403
|
+
|key, value|
|
404
|
+
header_name = row[COLUMNS_FEBRUARY_2019.keys.index(key)].value.to_s
|
405
|
+
unless value.match(header_name)
|
406
|
+
puts "#{__LINE__}: #{key} -> #{COLUMNS_FEBRUARY_2019.keys.index(key)} #{value}\nbut was #{header_name}" if $VERBOSE
|
407
|
+
error_2019 = "Packungen.xlslx_has_unexpected_column_#{COLUMNS_FEBRUARY_2019.keys.index(key)}_#{key}_#{value.to_s}_but_was_#{header_name}"
|
408
|
+
require 'pry'; binding.pry
|
409
|
+
break
|
410
|
+
end
|
411
|
+
}
|
412
|
+
unless error_2015
|
413
|
+
idx14 = COLUMNS_2014.keys.index(:name_base)
|
414
|
+
idx15 = COLUMNS_2014.keys.index(:name_base)
|
415
|
+
if (idx14 != idx15)
|
416
|
+
raise ":name_base must be same index in COLUMNS_JULY_2015 and COLUMNS_2014. Is #{idx14} and #{idx15}"
|
417
|
+
end
|
418
|
+
return COLUMNS_FEBRUARY_2019
|
419
|
+
end
|
420
|
+
raise "#{error_2019}" if error_2019
|
421
|
+
end
|
422
|
+
COLUMNS_FEBRUARY_2019
|
370
423
|
end
|
371
424
|
#=== iterate over all valid rows of a swissmedic Packungen.xls
|
372
425
|
#
|
data/lib/version.rb
CHANGED
@@ -42,6 +42,55 @@ module ODDB
|
|
42
42
|
assert_equal(expected, result.changes)
|
43
43
|
end
|
44
44
|
|
45
|
+
|
46
|
+
def test_diff_changes_february_2019
|
47
|
+
@diff = SwissmedicDiff.new
|
48
|
+
last_month = File.expand_path 'data/Packungen-2015.07.02.xlsx', File.dirname(__FILE__)
|
49
|
+
this_month = File.expand_path 'data/Packungen-2019.01.31.xlsx', File.dirname(__FILE__)
|
50
|
+
expected = {"00277"=>[:name_base, :expiry_date, :production_science],
|
51
|
+
"15219"=>[:new],
|
52
|
+
"16105"=>[:new],
|
53
|
+
"16598"=>[:new],
|
54
|
+
"28486"=>[:new],
|
55
|
+
"30015"=>[:new],
|
56
|
+
"31644"=>[:new],
|
57
|
+
"32475"=>[:new],
|
58
|
+
"35366"=>[:new],
|
59
|
+
"43454"=>[:new],
|
60
|
+
"44625"=>[:new],
|
61
|
+
"45882"=>[:new],
|
62
|
+
"53290"=>[:new],
|
63
|
+
"53662"=>[:new],
|
64
|
+
"54015"=>[:new],
|
65
|
+
"54534"=>[:new],
|
66
|
+
"55558"=>[:new],
|
67
|
+
"66297"=>[:new],
|
68
|
+
"55594"=>[:new],
|
69
|
+
"55674"=>[:new],
|
70
|
+
"56352"=>[:new],
|
71
|
+
"58943"=>[:new],
|
72
|
+
"59267"=>[:new],
|
73
|
+
"61186"=>[:new],
|
74
|
+
"62069"=>[:new],
|
75
|
+
"62132"=>[:new],
|
76
|
+
"65856"=>[:new],
|
77
|
+
"65857"=>[:new],
|
78
|
+
"58734"=>[:new],
|
79
|
+
"55561"=>[:new],
|
80
|
+
"65160"=>[:new],
|
81
|
+
"58158"=>[:new],
|
82
|
+
"44447"=>[:new],
|
83
|
+
"39252"=>[:new],
|
84
|
+
"00278"=>[:delete],
|
85
|
+
"00279"=>[:delete],
|
86
|
+
"65837"=>[:delete],
|
87
|
+
"65838"=>[:delete]
|
88
|
+
}
|
89
|
+
|
90
|
+
result = @diff.diff this_month, last_month
|
91
|
+
assert_equal(expected, result.changes)
|
92
|
+
end
|
93
|
+
|
45
94
|
def test_diff_wrong_header
|
46
95
|
@diff = SwissmedicDiff.new
|
47
96
|
last_month = File.expand_path 'data/Packungen-2015.06.04.xlsx', File.dirname(__FILE__)
|
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.2.
|
4
|
+
version: 0.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hannes Wyss, Masaomi Hatakeyama
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyXL
|
@@ -149,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
149
|
version: '0'
|
150
150
|
requirements: []
|
151
151
|
rubyforge_project:
|
152
|
-
rubygems_version: 2.
|
152
|
+
rubygems_version: 2.7.6
|
153
153
|
signing_key:
|
154
154
|
specification_version: 4
|
155
155
|
summary: Find out what Products have changed on the swiss healthcare market
|