swissmedic-diff 0.2.4 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|