oddb2xml 2.6.8 → 2.7.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +40 -0
- data/.standard.yml +2 -0
- data/Elexis_Artikelstamm_v5.xsd +0 -3
- data/Gemfile +3 -3
- data/History.txt +29 -0
- data/README.md +3 -3
- data/Rakefile +24 -23
- data/bin/check_artikelstamm +11 -11
- data/bin/compare_v5 +23 -23
- data/bin/oddb2xml +14 -13
- data/lib/oddb2xml.rb +1 -1
- data/lib/oddb2xml/builder.rb +1075 -1048
- data/lib/oddb2xml/calc.rb +232 -233
- data/lib/oddb2xml/chapter_70_hack.rb +38 -32
- data/lib/oddb2xml/cli.rb +252 -233
- data/lib/oddb2xml/compare.rb +70 -59
- data/lib/oddb2xml/compositions_syntax.rb +448 -430
- data/lib/oddb2xml/compressor.rb +20 -20
- data/lib/oddb2xml/downloader.rb +154 -128
- data/lib/oddb2xml/extractor.rb +295 -302
- data/lib/oddb2xml/options.rb +34 -35
- data/lib/oddb2xml/parslet_compositions.rb +263 -265
- data/lib/oddb2xml/semantic_check.rb +39 -33
- data/lib/oddb2xml/util.rb +166 -164
- data/lib/oddb2xml/version.rb +1 -1
- data/lib/oddb2xml/xml_definitions.rb +32 -33
- data/oddb2xml.gemspec +31 -30
- data/spec/artikelstamm_spec.rb +116 -135
- data/spec/builder_spec.rb +495 -524
- data/spec/calc_spec.rb +552 -593
- data/spec/check_artikelstamm_spec.rb +26 -26
- data/spec/cli_spec.rb +182 -157
- data/spec/compare_spec.rb +9 -11
- data/spec/composition_syntax_spec.rb +390 -409
- data/spec/compressor_spec.rb +48 -48
- data/spec/data/refdata_NonPharma.xml +0 -3
- data/spec/data/refdata_Pharma.xml +0 -26
- data/spec/data/transfer.dat +1 -0
- data/spec/data/varia_De.htm +2 -2
- data/spec/data_helper.rb +47 -49
- data/spec/downloader_spec.rb +247 -260
- data/spec/extractor_spec.rb +172 -164
- data/spec/galenic_spec.rb +233 -256
- data/spec/options_spec.rb +116 -119
- data/spec/parslet_spec.rb +833 -861
- data/spec/spec_helper.rb +154 -153
- data/test_options.rb +39 -42
- data/tools/win_fetch_cacerts.rb +2 -3
- metadata +48 -4
- data/.travis.yml +0 -29
data/spec/compressor_spec.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
|
-
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
@compressor.contents << File.join(Oddb2xml::SpecCompressor,
|
8
|
-
@compressor.contents << File.join(Oddb2xml::SpecCompressor,
|
9
|
-
@compressor.contents << File.join(Oddb2xml::SpecCompressor,
|
10
|
-
@compressor.contents << File.join(Oddb2xml::SpecCompressor,
|
11
|
-
|
12
|
-
@compressor.
|
13
|
-
expect(@compressor.finalize!).not_to be nil
|
3
|
+
shared_examples_for "any compressor" do
|
4
|
+
it "should create compress file" do
|
5
|
+
@compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_article.xml")
|
6
|
+
@compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_product.xml")
|
7
|
+
@compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_substance.xml")
|
8
|
+
@compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_limitation.xml")
|
9
|
+
@compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_fi.xml")
|
10
|
+
@compressor.contents << File.join(Oddb2xml::SpecCompressor, "oddb_fi_product.xml")
|
11
|
+
%(
|
12
|
+
expect{@compressor.finalize!}.not_to be nil
|
14
13
|
compress_file = @compressor.instance_variable_get(:@compress_file)
|
15
|
-
expect(File.
|
14
|
+
expect(File.exist?(compress_file)).to eq(true)
|
16
15
|
@compressor = nil
|
16
|
+
)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -22,96 +22,96 @@ describe Oddb2xml::Compressor do
|
|
22
22
|
cleanup_compressor
|
23
23
|
if @compress_file
|
24
24
|
compress_file = @compressor.instance_variable_get(:@compress_file)
|
25
|
-
FileUtils.rm_f(compress_file, :
|
25
|
+
FileUtils.rm_f(compress_file, verbose: true)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
after(:all) do
|
29
29
|
cleanup_compressor
|
30
30
|
end
|
31
|
-
context
|
32
|
-
context
|
31
|
+
context "at initialize" do
|
32
|
+
context " argment is given" do
|
33
33
|
before(:each) do
|
34
34
|
cleanup_directories_before_run
|
35
35
|
@compressor = Oddb2xml::Compressor.new
|
36
36
|
end
|
37
|
-
it
|
37
|
+
it "should have empty contents as array" do
|
38
38
|
expect(@compressor.contents).to be_a Array
|
39
39
|
expect(@compressor.contents).to be_empty
|
40
40
|
end
|
41
|
-
it
|
42
|
-
expect(@compressor.instance_variable_get(:@compress_file))
|
43
|
-
to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
|
41
|
+
it "should have formated filename with datetime" do
|
42
|
+
expect(@compressor.instance_variable_get(:@compress_file))
|
43
|
+
.to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
context "when swiss prefix is given" do
|
47
47
|
before(:each) do
|
48
48
|
cleanup_directories_before_run
|
49
|
-
@compressor = Oddb2xml::Compressor.new(
|
49
|
+
@compressor = Oddb2xml::Compressor.new("swiss", {compress_ext: "tar.gz"})
|
50
50
|
end
|
51
|
-
it
|
52
|
-
expect(@compressor.instance_variable_get(:@compress_file))
|
53
|
-
to match(/swiss_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
|
51
|
+
it "should have formated filename with datetime" do
|
52
|
+
expect(@compressor.instance_variable_get(:@compress_file))
|
53
|
+
.to match(/swiss_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
|
54
54
|
end
|
55
55
|
end
|
56
56
|
context "when tar.gz ext is given" do
|
57
57
|
before(:each) do
|
58
58
|
cleanup_directories_before_run
|
59
|
-
@compressor = Oddb2xml::Compressor.new(
|
59
|
+
@compressor = Oddb2xml::Compressor.new("oddb", {compress_ext: "tar.gz"})
|
60
60
|
end
|
61
|
-
it
|
62
|
-
expect(@compressor.instance_variable_get(:@compress_file))
|
63
|
-
to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
|
61
|
+
it "should have formated filename with datetime" do
|
62
|
+
expect(@compressor.instance_variable_get(:@compress_file))
|
63
|
+
.to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.tar\.gz/)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
context "when zip ext is given" do
|
67
67
|
before(:each) do
|
68
68
|
cleanup_directories_before_run
|
69
|
-
@compressor = Oddb2xml::Compressor.new(
|
69
|
+
@compressor = Oddb2xml::Compressor.new("oddb", {compress_ext: "zip"})
|
70
70
|
end
|
71
|
-
it
|
72
|
-
expect(@compressor.instance_variable_get(:@compress_file))
|
73
|
-
to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.zip/)
|
71
|
+
it "should have formated filename with datetime" do
|
72
|
+
expect(@compressor.instance_variable_get(:@compress_file))
|
73
|
+
.to match(/oddb_xml_\d{2}.\d{2}.\d{4}_\d{2}.\d{2}.zip/)
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
77
|
-
context
|
78
|
-
context
|
77
|
+
context "when finalize! is called" do
|
78
|
+
context "unexpectedly" do
|
79
79
|
before(:each) do
|
80
80
|
cleanup_directories_before_run
|
81
|
-
@
|
81
|
+
@saved_dir = Dir.pwd
|
82
82
|
Dir.chdir Oddb2xml::SpecCompressor
|
83
83
|
@compressor = Oddb2xml::Compressor.new
|
84
84
|
end
|
85
85
|
after(:each) do
|
86
|
-
Dir.chdir @
|
86
|
+
Dir.chdir @saved_dir if @saved_dir && File.directory?(@saved_dir)
|
87
87
|
end
|
88
|
-
it
|
88
|
+
it "should fail with no contents" do
|
89
89
|
expect(@compressor.finalize!).to eq(false)
|
90
90
|
end
|
91
|
-
it
|
92
|
-
@compressor.contents <<
|
93
|
-
expect
|
91
|
+
it "should fail with invalid file" do
|
92
|
+
@compressor.contents << "../invalid_file"
|
93
|
+
expect { @compressor.finalize! }.to raise_error(RuntimeError)
|
94
94
|
end
|
95
95
|
end
|
96
|
-
context
|
97
|
-
context
|
96
|
+
context "successfully" do
|
97
|
+
context "with tar.gz" do
|
98
98
|
before(:each) do
|
99
99
|
cleanup_directories_before_run
|
100
100
|
@compressor = Oddb2xml::Compressor.new
|
101
101
|
end
|
102
|
-
it_behaves_like
|
102
|
+
it_behaves_like "any compressor"
|
103
103
|
end
|
104
|
-
context
|
104
|
+
context "with zip" do
|
105
105
|
before(:each) do
|
106
106
|
cleanup_directories_before_run
|
107
|
-
@
|
107
|
+
@saved_dir = Dir.pwd
|
108
108
|
Dir.chdir Oddb2xml::SpecCompressor
|
109
|
-
@compressor = Oddb2xml::Compressor.new(
|
109
|
+
@compressor = Oddb2xml::Compressor.new("oddb", {compress_ext: "zip"})
|
110
110
|
end
|
111
111
|
after(:each) do
|
112
|
-
Dir.chdir @
|
112
|
+
Dir.chdir @saved_dir if @saved_dir && File.directory?(@saved_dir)
|
113
113
|
end
|
114
|
-
it_behaves_like
|
114
|
+
it_behaves_like "any compressor"
|
115
115
|
end
|
116
116
|
end
|
117
117
|
end
|
@@ -5,7 +5,6 @@
|
|
5
5
|
<ITEM DT="2015-11-24 00:00:00 +000">
|
6
6
|
<ATYPE>NONPHARMA</ATYPE>
|
7
7
|
<GTIN>7611600441020</GTIN>
|
8
|
-
<PHAR>0058519</PHAR>
|
9
8
|
<NAME_DE>TUBEGAZE Verband weiss Nr 12 20m Finger gross</NAME_DE>
|
10
9
|
<NAME_FR>TUBEGAZE pans tubul blanc Nr 12 20m doigts grands</NAME_FR>
|
11
10
|
<AUTH_HOLDER_NAME>IVF HARTMANN AG</AUTH_HOLDER_NAME>
|
@@ -14,7 +13,6 @@
|
|
14
13
|
<ITEM DT="2015-11-24 00:00:00 +000">
|
15
14
|
<ATYPE>NONPHARMA</ATYPE>
|
16
15
|
<GTIN>00040565124308</GTIN>
|
17
|
-
<PHAR>4236863</PHAR>
|
18
16
|
<NAME_DE>ACTICOAT Flex 7 Wundverband 10x12.5cm 5 Stk</NAME_DE>
|
19
17
|
<NAME_FR>ACTICOAT Flex 7 pansement vulné 10x12.5cm 5 pce</NAME_FR>
|
20
18
|
<AUTH_HOLDER_NAME>Smith & Nephew Schweiz AG</AUTH_HOLDER_NAME>
|
@@ -32,7 +30,6 @@
|
|
32
30
|
<ITEM DT="2018-03-16T00:00:00">
|
33
31
|
<ATYPE>NONPHARMA</ATYPE>
|
34
32
|
<GTIN>68711428066649</GTIN>
|
35
|
-
<PHAR>5863450</PHAR>
|
36
33
|
<NAME_DE>3M MEDIPORE+PAD Absorbtionsverb 10x15cm 8 x 25 Stk</NAME_DE>
|
37
34
|
<NAME_FR>3M MEDIPORE+PAD compr absorb 10x15cm 8 x 25 pce</NAME_FR>
|
38
35
|
<AUTH_HOLDER_NAME>3M (Schweiz) GmbH (Professional Health Care)</AUTH_HOLDER_NAME>
|
@@ -5,7 +5,6 @@
|
|
5
5
|
<ITEM DT="2018-12-05T00:00:00">
|
6
6
|
<ATYPE>PHARMA</ATYPE>
|
7
7
|
<GTIN>7680005850010</GTIN>
|
8
|
-
<PHAR>1770177</PHAR>
|
9
8
|
<SWMC_AUTHNR>00585001</SWMC_AUTHNR>
|
10
9
|
<NAME_DE>VARILRIX Trockensub c Solv Fertspr 0.5 ml</NAME_DE>
|
11
10
|
<NAME_FR>VARILRIX subst sèche c solv ser pré 0.5 ml</NAME_FR>
|
@@ -16,7 +15,6 @@
|
|
16
15
|
<ITEM DT="2017-12-14T00:00:00">
|
17
16
|
<ATYPE>PHARMA</ATYPE>
|
18
17
|
<GTIN>7680545340019</GTIN>
|
19
|
-
<PHAR>6749124</PHAR>
|
20
18
|
<SWMC_AUTHNR>54534001</SWMC_AUTHNR>
|
21
19
|
<NAME_DE>TEBOKAN Filmtabl 240 mg 30 Stk</NAME_DE>
|
22
20
|
<NAME_FR>TEBOKAN cpr pell 240 mg 30 pce</NAME_FR>
|
@@ -27,7 +25,6 @@
|
|
27
25
|
<ITEM DT="2017-12-14T00:00:00">
|
28
26
|
<ATYPE>PHARMA</ATYPE>
|
29
27
|
<GTIN>7680540150118</GTIN>
|
30
|
-
<PHAR>1882189</PHAR>
|
31
28
|
<SWMC_AUTHNR>54015011</SWMC_AUTHNR>
|
32
29
|
<NAME_DE>NAROPIN Inj Lös 0.2 % 10ml Duofit Amp 5 Stk</NAME_DE>
|
33
30
|
<NAME_FR>NAROPIN sol inj 0.2 % 10ml amp duofit 5 pce</NAME_FR>
|
@@ -38,7 +35,6 @@
|
|
38
35
|
<ITEM DT="2017-12-08T00:00:00">
|
39
36
|
<ATYPE>PHARMA</ATYPE>
|
40
37
|
<GTIN>7680563520172</GTIN>
|
41
|
-
<PHAR>6477223</PHAR>
|
42
38
|
<SWMC_AUTHNR>56352017</SWMC_AUTHNR>
|
43
39
|
<NAME_DE>ADVATE Trockensub 250 IE c Solv 2 ml Durchstf</NAME_DE>
|
44
40
|
<NAME_FR>ADVATE subst sèche 250 UI c solv 2 ml flac</NAME_FR>
|
@@ -49,7 +45,6 @@
|
|
49
45
|
<ITEM DT="2018-09-20T00:00:00">
|
50
46
|
<ATYPE>PHARMA</ATYPE>
|
51
47
|
<GTIN>7680658560014</GTIN>
|
52
|
-
<PHAR>7199565</PHAR>
|
53
48
|
<SWMC_AUTHNR>65856001</SWMC_AUTHNR>
|
54
49
|
<NAME_DE>DIBASE Tropfen 10000 IE/ml Fl 10 ml</NAME_DE>
|
55
50
|
<NAME_FR>DIBASE gouttes 10000 UI/ml fl 10 ml</NAME_FR>
|
@@ -60,7 +55,6 @@
|
|
60
55
|
<ITEM DT="2017-12-08T00:00:00">
|
61
56
|
<ATYPE>PHARMA</ATYPE>
|
62
57
|
<GTIN>7680555580054</GTIN>
|
63
|
-
<PHAR>2465312</PHAR>
|
64
58
|
<SWMC_AUTHNR>55558005</SWMC_AUTHNR>
|
65
59
|
<NAME_DE>ZYVOXID Filmtabl 600 mg 10 Stk</NAME_DE>
|
66
60
|
<NAME_FR>ZYVOXID cpr pell 600 mg 10 pce</NAME_FR>
|
@@ -71,7 +65,6 @@
|
|
71
65
|
<ITEM DT="2017-12-08T00:00:00">
|
72
66
|
<ATYPE>PHARMA</ATYPE>
|
73
67
|
<GTIN>7680620690084</GTIN>
|
74
|
-
<PHAR>5819012</PHAR>
|
75
68
|
<SWMC_AUTHNR>62069008</SWMC_AUTHNR>
|
76
69
|
<NAME_DE>LEVETIRACETAM DESITIN Mini Filmtab 250 mg 30 Stk</NAME_DE>
|
77
70
|
<NAME_FR>LEVETIRACETAM DESITIN mini cpr pel 250 mg 30 pce</NAME_FR>
|
@@ -82,7 +75,6 @@
|
|
82
75
|
<ITEM DT="2017-12-08T00:00:00">
|
83
76
|
<ATYPE>PHARMA</ATYPE>
|
84
77
|
<GTIN>7680353660163</GTIN>
|
85
|
-
<PHAR>0020273</PHAR>
|
86
78
|
<SWMC_AUTHNR>35366016</SWMC_AUTHNR>
|
87
79
|
<NAME_DE>KENDURAL Depottabl 30 Stk</NAME_DE>
|
88
80
|
<NAME_FR>KENDURAL cpr dépôt 30 pce</NAME_FR>
|
@@ -93,7 +85,6 @@
|
|
93
85
|
<ITEM DT="2017-12-08T00:00:00">
|
94
86
|
<ATYPE>PHARMA</ATYPE>
|
95
87
|
<GTIN>7680536620137</GTIN>
|
96
|
-
<PHAR>1699947</PHAR>
|
97
88
|
<SWMC_AUTHNR>53662013</SWMC_AUTHNR>
|
98
89
|
<NAME_DE>3TC Filmtabl 150 mg 60 Stk</NAME_DE>
|
99
90
|
<NAME_FR>3TC cpr pell 150 mg 60 pce</NAME_FR>
|
@@ -104,7 +95,6 @@
|
|
104
95
|
<ITEM DT="2017-12-08T00:00:00">
|
105
96
|
<ATYPE>PHARMA</ATYPE>
|
106
97
|
<GTIN>7680161050583</GTIN>
|
107
|
-
<PHAR>2731179</PHAR>
|
108
98
|
<SWMC_AUTHNR>16105058</SWMC_AUTHNR>
|
109
99
|
<NAME_DE>HIRUDOID Creme 3 mg/g 40 g</NAME_DE>
|
110
100
|
<NAME_FR>HIRUDOID crème 3 mg/g 40 g</NAME_FR>
|
@@ -115,7 +105,6 @@
|
|
115
105
|
<ITEM DT="2017-12-08T00:00:00">
|
116
106
|
<ATYPE>PHARMA</ATYPE>
|
117
107
|
<GTIN>7680324750190</GTIN>
|
118
|
-
<PHAR>0023722</PHAR>
|
119
108
|
<SWMC_AUTHNR>32475019</SWMC_AUTHNR>
|
120
109
|
<NAME_DE>LANSOYL Gel 225 g</NAME_DE>
|
121
110
|
<NAME_FR>LANSOYL gel 225 g</NAME_FR>
|
@@ -126,7 +115,6 @@
|
|
126
115
|
<ITEM DT="2017-12-08T00:00:00">
|
127
116
|
<ATYPE>PHARMA</ATYPE>
|
128
117
|
<GTIN>7680573230016</GTIN>
|
129
|
-
<PHAR>6824802</PHAR>
|
130
118
|
<SWMC_AUTHNR>57323001</SWMC_AUTHNR>
|
131
119
|
<NAME_DE>LANSOPRAZOL Mepha Kaps 15 mg Fl 60 Stk</NAME_DE>
|
132
120
|
<NAME_FR>LANSOPRAZOL Mepha caps 15 mg fl 60 pce</NAME_FR>
|
@@ -137,7 +125,6 @@
|
|
137
125
|
<ITEM DT="2017-12-08T00:00:00">
|
138
126
|
<ATYPE>PHARMA</ATYPE>
|
139
127
|
<GTIN>7680532900196</GTIN>
|
140
|
-
<PHAR>1699999</PHAR>
|
141
128
|
<SWMC_AUTHNR>53290019</SWMC_AUTHNR>
|
142
129
|
<NAME_DE>HUMALOG Inj Lös 100 IE/ml Durchstf 10 ml</NAME_DE>
|
143
130
|
<NAME_FR>HUMALOG sol inj 100 UI/ml flac 10 ml</NAME_FR>
|
@@ -148,7 +135,6 @@
|
|
148
135
|
<ITEM DT="2017-12-01T00:00:00">
|
149
136
|
<ATYPE>PHARMA</ATYPE>
|
150
137
|
<GTIN>7680002770014</GTIN>
|
151
|
-
<PHAR>0361815</PHAR>
|
152
138
|
<SWMC_AUTHNR>00277001</SWMC_AUTHNR>
|
153
139
|
<NAME_DE>SEROCYTOL Herz-Gefässe Supp 3 Stk</NAME_DE>
|
154
140
|
<NAME_FR>SEROCYTOL Coeur-Vaisseaux supp 3 pce</NAME_FR>
|
@@ -159,7 +145,6 @@
|
|
159
145
|
<ITEM DT="2017-12-01T00:00:00">
|
160
146
|
<ATYPE>PHARMA</ATYPE>
|
161
147
|
<GTIN>7680002780013</GTIN>
|
162
|
-
<PHAR>0361821</PHAR>
|
163
148
|
<SWMC_AUTHNR>00278001</SWMC_AUTHNR>
|
164
149
|
<NAME_DE>SEROCYTOL Kolon Supp 3 Stk</NAME_DE>
|
165
150
|
<NAME_FR>SEROCYTOL Côlon supp 3 pce</NAME_FR>
|
@@ -170,7 +155,6 @@
|
|
170
155
|
<ITEM DT="2017-12-01T00:00:00">
|
171
156
|
<ATYPE>PHARMA</ATYPE>
|
172
157
|
<GTIN>7680406620144</GTIN>
|
173
|
-
<PHAR>0769841</PHAR>
|
174
158
|
<SWMC_AUTHNR>40662014</SWMC_AUTHNR>
|
175
159
|
<NAME_DE>PEVISONE Creme 15 g</NAME_DE>
|
176
160
|
<NAME_FR>PEVISONE crème 15 g</NAME_FR>
|
@@ -181,7 +165,6 @@
|
|
181
165
|
<ITEM DT="2017-12-01T00:00:00">
|
182
166
|
<ATYPE>PHARMA</ATYPE>
|
183
167
|
<GTIN>7680406620229</GTIN>
|
184
|
-
<PHAR>0863244</PHAR>
|
185
168
|
<SWMC_AUTHNR>40662022</SWMC_AUTHNR>
|
186
169
|
<NAME_DE>PEVISONE Creme 30 g</NAME_DE>
|
187
170
|
<NAME_FR>PEVISONE crème 30 g</NAME_FR>
|
@@ -192,7 +175,6 @@
|
|
192
175
|
<ITEM DT="2017-11-03T00:00:00">
|
193
176
|
<ATYPE>PHARMA</ATYPE>
|
194
177
|
<GTIN>7680587340015</GTIN>
|
195
|
-
<PHAR>4153628</PHAR>
|
196
178
|
<SWMC_AUTHNR>58734001</SWMC_AUTHNR>
|
197
179
|
<NAME_DE>YONDELIS Trockensub 0.25 mg Durchstf</NAME_DE>
|
198
180
|
<NAME_FR>YONDELIS subst sèche 0.25 mg flac</NAME_FR>
|
@@ -203,7 +185,6 @@
|
|
203
185
|
<ITEM DT="2017-11-03T00:00:00">
|
204
186
|
<ATYPE>PHARMA</ATYPE>
|
205
187
|
<GTIN>7680627160016</GTIN>
|
206
|
-
<PHAR>5301924</PHAR>
|
207
188
|
<SWMC_AUTHNR>62716001</SWMC_AUTHNR>
|
208
189
|
<NAME_DE>COOP VITALITY Bronchialpastillen 40 Stk</NAME_DE>
|
209
190
|
<NAME_FR>COOP VITALITY pastilles bronchiques 40 pce</NAME_FR>
|
@@ -214,7 +195,6 @@
|
|
214
195
|
<ITEM DT="2018-01-30T00:00:00">
|
215
196
|
<ATYPE>PHARMA</ATYPE>
|
216
197
|
<GTIN>7680651600014</GTIN>
|
217
|
-
<PHAR>6571270</PHAR>
|
218
198
|
<SWMC_AUTHNR>65160001</SWMC_AUTHNR>
|
219
199
|
<NAME_DE>LYNPARZA Kaps 50 mg 448 Stk</NAME_DE>
|
220
200
|
<NAME_FR>LYNPARZA caps 50 mg 448 pce</NAME_FR>
|
@@ -225,7 +205,6 @@
|
|
225
205
|
<ITEM DT="2018-02-09T00:00:00">
|
226
206
|
<ATYPE>PHARMA</ATYPE>
|
227
207
|
<GTIN>7680316440115</GTIN>
|
228
|
-
<PHAR>0020244</PHAR>
|
229
208
|
<SWMC_AUTHNR>31644011</SWMC_AUTHNR>
|
230
209
|
<NAME_DE>FERRO-GRADUMET Depottabl 30 Stk</NAME_DE>
|
231
210
|
<NAME_FR>FERRO-GRADUMET cpr dépôt 30 pce</NAME_FR>
|
@@ -236,7 +215,6 @@
|
|
236
215
|
<ITEM DT="2018-03-16T00:00:00">
|
237
216
|
<ATYPE>PHARMA</ATYPE>
|
238
217
|
<GTIN>7680581580011</GTIN>
|
239
|
-
<PHAR>3656617</PHAR>
|
240
218
|
<SWMC_AUTHNR>58158001</SWMC_AUTHNR>
|
241
219
|
<NAME_DE>PRIORIX TETRA Trockensub c Solv Fertspr</NAME_DE>
|
242
220
|
<NAME_FR>PRIORIX TETRA subst sèche c solv ser pré</NAME_FR>
|
@@ -247,7 +225,6 @@
|
|
247
225
|
<ITEM DT="2018-03-23T00:00:00">
|
248
226
|
<ATYPE>PHARMA</ATYPE>
|
249
227
|
<GTIN>7680444470107</GTIN>
|
250
|
-
<PHAR>0919766</PHAR>
|
251
228
|
<SWMC_AUTHNR>44447010</SWMC_AUTHNR>
|
252
229
|
<NAME_DE>LOPRESOR Retard Divitabs 200 mg 14 Stk</NAME_DE>
|
253
230
|
<NAME_FR>LOPRESOR Retard Divitabs 200 mg 14 pce</NAME_FR>
|
@@ -258,7 +235,6 @@
|
|
258
235
|
<ITEM DT="2018-03-23T00:00:00">
|
259
236
|
<ATYPE>PHARMA</ATYPE>
|
260
237
|
<GTIN>7680444470299</GTIN>
|
261
|
-
<PHAR>0919772</PHAR>
|
262
238
|
<SWMC_AUTHNR>44447029</SWMC_AUTHNR>
|
263
239
|
<NAME_DE>LOPRESOR Retard Divitabs 200 mg 56 Stk</NAME_DE>
|
264
240
|
<NAME_FR>LOPRESOR Retard Divitabs 200 mg 56 pce</NAME_FR>
|
@@ -269,7 +245,6 @@
|
|
269
245
|
<ITEM DT="2018-03-23T00:00:00">
|
270
246
|
<ATYPE>PHARMA</ATYPE>
|
271
247
|
<GTIN>7680152190687</GTIN>
|
272
|
-
<PHAR>0544042</PHAR>
|
273
248
|
<SWMC_AUTHNR>15219068</SWMC_AUTHNR>
|
274
249
|
<NAME_DE>ZYMAFLUOR Tabl 0.25 mg Ds 400 Stk</NAME_DE>
|
275
250
|
<NAME_FR>ZYMAFLUOR cpr 0.25 mg bte 400 pce</NAME_FR>
|
@@ -280,7 +255,6 @@
|
|
280
255
|
<ITEM DT="2018-03-23T00:00:00">
|
281
256
|
<ATYPE>PHARMA</ATYPE>
|
282
257
|
<GTIN>7680434540995</GTIN>
|
283
|
-
<PHAR>2381532</PHAR>
|
284
258
|
<SWMC_AUTHNR>43454099</SWMC_AUTHNR>
|
285
259
|
<NAME_DE>KAMILLIN Medipharm Bad liq 10 Btl 40 ml</NAME_DE>
|
286
260
|
<NAME_FR>KAMILLIN Medipharm bain liq 10 sach 40 ml</NAME_FR>
|
data/spec/data/transfer.dat
CHANGED
@@ -69,5 +69,6 @@
|
|
69
69
|
1122069562EINF ARZNEI Urtinktur 1-10g/ml 0010040013401000000000025000005884712
|
70
70
|
1122069639EINF ARZNEI Ceres Urtinktur spez 20ml 0023440031301000000000025000005885322
|
71
71
|
1122069622EINF ARZNEI Ceres Urtinktur 20ml 0018870025201000000000025000005885252
|
72
|
+
1130361821SEROCYTOL Kolon Supp 3 Stk 002275003960401B080700076800027800132
|
72
73
|
1131770177VARILRIX Trockensub c Solv (alt) Fertspr 0.5 ml 004768006650101B080800076800058500102
|
73
74
|
1127766692VARILRIX Trockensub c Solv Fertspr 0.5 ml 004767006650101B080800076800058500342
|
data/spec/data/varia_De.htm
CHANGED
@@ -197,7 +197,7 @@
|
|
197
197
|
<p>70.01.10</p>
|
198
198
|
</td>
|
199
199
|
<td width="52%">
|
200
|
-
<p>Ceres Urtinkturen gemäss L2</p>
|
200
|
+
<p>Ceres Urtinkturen gemäss L2 mit -- im Kommentar</p>
|
201
201
|
</td>
|
202
202
|
<td align="right" width="10%">
|
203
203
|
<p>20ml</p>
|
@@ -2438,4 +2438,4 @@ die Abrechnung zu erleichtern.<br>
|
|
2438
2438
|
|
2439
2439
|
</body>
|
2440
2440
|
|
2441
|
-
</html>
|
2441
|
+
</html>
|
data/spec/data_helper.rb
CHANGED
@@ -1,47 +1,47 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
$:.unshift File.join(File.dirname(__FILE__))
|
3
|
-
require
|
3
|
+
require "spec_helper"
|
4
4
|
module Oddb2xml
|
5
|
-
# Small helper script to see, whether all files are correctly filled
|
6
|
-
def
|
5
|
+
# Small helper script to see, whether all files are correctly filled
|
6
|
+
def self.fill
|
7
7
|
start_keys = [
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
]
|
36
|
-
|
37
|
-
gtins = GTINS_DRUGS + [ FERRO_GRADUMET_GTIN,
|
38
|
-
HIRUDOID_GTIN,LANSOYL_GTIN, LEVETIRACETAM_GTIN,
|
39
|
-
SOFRADEX_GTIN, THREE_TC_GTIN, ZYVOXID_GTIN]
|
40
|
-
gtins.each{|gtin| Oddb2xml.check_gtin(gtin)}
|
8
|
+
1125822801,
|
9
|
+
1125830700,
|
10
|
+
1122465312,
|
11
|
+
1120020209,
|
12
|
+
1120020244,
|
13
|
+
1130020646,
|
14
|
+
1120020652,
|
15
|
+
1130021806,
|
16
|
+
1130021976,
|
17
|
+
1130023722,
|
18
|
+
1130027447,
|
19
|
+
1130028470,
|
20
|
+
1135366964,
|
21
|
+
1122871437,
|
22
|
+
1122871443,
|
23
|
+
1122871466,
|
24
|
+
1122871472,
|
25
|
+
1132867163,
|
26
|
+
1138110429,
|
27
|
+
1130598003,
|
28
|
+
1125565072,
|
29
|
+
1126000923,
|
30
|
+
1128111222,
|
31
|
+
1128111718,
|
32
|
+
1128807890,
|
33
|
+
1117199565,
|
34
|
+
1128111611
|
35
|
+
]
|
41
36
|
|
42
|
-
|
43
|
-
|
44
|
-
|
37
|
+
gtins = GTINS_DRUGS + [FERRO_GRADUMET_GTIN,
|
38
|
+
HIRUDOID_GTIN, LANSOYL_GTIN, LEVETIRACETAM_GTIN,
|
39
|
+
SOFRADEX_GTIN, THREE_TC_GTIN, ZYVOXID_GTIN]
|
40
|
+
gtins.each { |gtin| Oddb2xml.check_gtin(gtin) }
|
41
|
+
|
42
|
+
ENV["LANG"] = "de_CH.ISO-8859"
|
43
|
+
outfile = "spec/data/transfer.dat"
|
44
|
+
FileUtils.rm_f(outfile, verbose: true)
|
45
45
|
start_keys.each do |key|
|
46
46
|
cmd = "egrep '^#{key}' downloads/transfer.dat >> #{outfile}"
|
47
47
|
system(cmd)
|
@@ -50,23 +50,21 @@ module Oddb2xml
|
|
50
50
|
gtins.each do |key|
|
51
51
|
cmd = "grep #{key} downloads/transfer.dat >> #{outfile}"
|
52
52
|
system(cmd)
|
53
|
-
iksnrs << key.to_s[4..8] if /^7680/i.match(key.to_s)
|
53
|
+
iksnrs << key.to_s[4..8] if /^7680/i.match?(key.to_s)
|
54
54
|
end
|
55
55
|
puts "Created #{outfile} #{File.size(outfile)} bytes"
|
56
|
-
puts "Used IKSNRS are #{iksnrs.sort.uniq.join(
|
56
|
+
puts "Used IKSNRS are #{iksnrs.sort.uniq.join(" ")}"
|
57
57
|
end
|
58
|
-
|
59
|
-
def
|
58
|
+
|
59
|
+
def self.check_gtin(gtin)
|
60
60
|
files = `grep -l #{gtin} downloads/*.xml`.split("\n")
|
61
61
|
files.each do |file|
|
62
|
-
short = File.join(SpecData,File.basename(file))
|
63
|
-
|
64
|
-
|
65
|
-
puts "Could not find #{gtin} in #{short}" unless
|
62
|
+
short = File.join(SpecData, File.basename(file))
|
63
|
+
nr_matches = 0
|
64
|
+
nr_matches = `grep -c #{gtin} #{short}`.to_i if File.exist?(short)
|
65
|
+
puts "Could not find #{gtin} in #{short}" unless nr_matches > 0
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
70
|
Oddb2xml.fill
|
71
|
-
|
72
|
-
|