oddb2xml 2.6.6 → 2.7.1

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.
data/lib/oddb2xml/util.rb CHANGED
@@ -7,6 +7,14 @@ module Oddb2xml
7
7
  def Oddb2xml.gen_prodno(iksnr, seqnr)
8
8
  sprintf('%05d',iksnr) + sprintf('%02d', seqnr)
9
9
  end
10
+ def Oddb2xml.uri_open(url)
11
+ version = RUBY_VERSION.split('.').map { |x| x.to_i }
12
+ if (version <=> [2,5,0]) >= 0
13
+ URI.open(url)
14
+ else
15
+ open(url)
16
+ end
17
+ end
10
18
  def Oddb2xml.calc_checksum(str)
11
19
  str = str.strip
12
20
  sum = 0
@@ -34,7 +42,7 @@ module Oddb2xml
34
42
  end
35
43
  Oddb2xml.patch_some_utf8(german).gsub('<br>',"\n")
36
44
  end
37
-
45
+
38
46
  def Oddb2xml.patch_some_utf8(line)
39
47
  begin
40
48
  line = line.encode('utf-8')
@@ -61,7 +69,7 @@ module Oddb2xml
61
69
  def Oddb2xml.add_epha_changes_for_ATC(iksnr, atc_code, force_run: false)
62
70
  @atc_csv_content = {} if force_run
63
71
  if @atc_csv_content.size == 0
64
- open(@atc_csv_origin).readlines.each{
72
+ Oddb2xml.uri_open(@atc_csv_origin).readlines.each{
65
73
  |line|
66
74
  items = line.split(',')
67
75
  @atc_csv_content[[items[0], items[1]]] = items[2]
@@ -86,7 +94,7 @@ module Oddb2xml
86
94
  def Oddb2xml.skip_download?
87
95
  @options[:skip_download]
88
96
  end
89
-
97
+
90
98
  def Oddb2xml.skip_download(file)
91
99
  return false if defined?(VCR)
92
100
  dest = "#{Downloads}/#{File.basename(file)}"
@@ -96,7 +104,7 @@ module Oddb2xml
96
104
  end
97
105
  false
98
106
  end
99
-
107
+
100
108
  def Oddb2xml.download_finished(file, remove_file = true)
101
109
  src = "#{WorkDir}/#{File.basename(file)}"
102
110
  dest = "#{Downloads}/#{File.basename(file)}"
@@ -183,7 +191,9 @@ COLUMNS_FEBRUARY_2019= {
183
191
  :drug_index => /Verz. bei betäubun.*smittel-haltigen Präparaten/i,
184
192
  }
185
193
  def Oddb2xml.add_hash(string)
186
- doc = Nokogiri::XML.parse(string)
194
+ doc = Nokogiri::XML.parse(string) do |config|
195
+ config.huge
196
+ end
187
197
  nr = 0
188
198
  doc.root.elements.each do |node|
189
199
  nr += 1
@@ -232,7 +242,7 @@ COLUMNS_FEBRUARY_2019= {
232
242
  @@ean13_to_no8 = {}
233
243
  def Oddb2xml.setEan13forProdno(prodno, ean13)
234
244
  if ean13.to_i == 7680006660045 || ean13.to_i == 7680006660014
235
- puts "setEan13forProdno #{prodno} ean13 #{ean13}"
245
+ Oddb2xml.log "setEan13forProdno #{prodno} ean13 #{ean13}"
236
246
  end
237
247
  @@prodno_to_ean13[prodno] ||= []
238
248
  @@prodno_to_ean13[prodno] << ean13
@@ -240,13 +250,13 @@ COLUMNS_FEBRUARY_2019= {
240
250
  end
241
251
  def Oddb2xml.setEan13forNo8(no8, ean13)
242
252
  if ean13.to_i == 7680006660045 || ean13.to_i == 7680006660014
243
- puts "setEan13forNo8 #{no8} ean13 #{ean13}"
253
+ Oddb2xml.log "setEan13forNo8 #{no8} ean13 #{ean13}"
244
254
  end
245
255
  if @@no8_to_ean13[no8].nil?
246
256
  @@no8_to_ean13[no8] = ean13
247
257
  @@ean13_to_no8[ean13] = no8
248
258
  elsif !@@no8_to_ean13[no8].eql?(ean13)
249
- puts "@@no8_to_ean13[no8] #{@@no8_to_ean13[no8]} not overridden by #{ean13}"
259
+ Oddb2xml.log "@@no8_to_ean13[no8] #{@@no8_to_ean13[no8]} not overridden by #{ean13}"
250
260
  end
251
261
  end
252
262
  def Oddb2xml.getEan13forProdno(prodno)
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "2.6.6"
2
+ VERSION = "2.7.1"
3
3
  end
data/oddb2xml.gemspec CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |spec|
16
16
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
+ spec.required_ruby_version = ">= 2.2.0"
19
20
 
20
21
  # We fix the version of the spec to newer versions only in the third position
21
22
  # hoping that these version fix only security/severe bugs
@@ -36,6 +37,8 @@ Gem::Specification.new do |spec|
36
37
  spec.add_dependency 'xml-simple'
37
38
  spec.add_dependency 'ox'
38
39
  spec.add_dependency 'htmlentities'
40
+ spec.add_dependency 'webrick'
41
+ spec.add_dependency 'rexml'
39
42
 
40
43
  spec.add_development_dependency "bundler"
41
44
  spec.add_development_dependency "rake"
@@ -24,7 +24,7 @@ describe Oddb2xml::Builder do
24
24
  unless @inhalt.index(expected_value)
25
25
  puts expected_value
26
26
  end
27
- # binding.pry unless @inhalt.index(expected_value)
27
+ binding.pry if defined?(Pry) && !@inhalt.index(expected_value)
28
28
  expect(@inhalt.index(expected_value)).not_to be nil
29
29
  end
30
30
  def common_run_init(options = {})
@@ -71,17 +71,16 @@ describe Oddb2xml::Builder do
71
71
  end
72
72
 
73
73
  it 'should have a GTIN and a public price with 14 chars (ean14)' do
74
+ # Till January 2021 it was possible to find a price via transfer.dat
75
+ # as the pharmacode was given in the refdata_NonPharma.xml
74
76
  expected = %(<ITEM PHARMATYPE="N">
75
77
  <GTIN>68711428066649</GTIN>
76
- <PHAR>5863450</PHAR>
77
78
  <SALECD>A</SALECD>
78
79
  <DSCR>3M MEDIPORE+PAD Absorbtionsverb 10x15cm 8 x 25 Stk</DSCR>
79
80
  <DSCRF>3M MEDIPORE+PAD compr absorb 10x15cm 8 x 25 pce</DSCRF>
80
81
  <COMP>
81
82
  <GLN>7610182000007</GLN>
82
83
  </COMP>
83
- <PEXF>108.01</PEXF>
84
- <PPUB>178.20</PPUB>
85
84
  </ITEM>)
86
85
  expect(@inhalt.index(expected)).not_to be nil
87
86
  end
@@ -160,12 +159,6 @@ describe Oddb2xml::Builder do
160
159
  expect(@inhalt.index('GTIN>0')).to be > 0
161
160
  end
162
161
 
163
- it 'should contain a PHAR 4236857 from refdata_NonPharma.xml' do
164
- expect(@inhalt.index('<PHAR>4236863</PHAR>')).to be > 0
165
- # Marco leaves the 14 GTIN digit in previous importes. As of January 2018 force it to the 13 digits
166
- expect(@inhalt.index('<GTIN>0040565124346</GTIN>')).to be > 0
167
- end
168
-
169
162
  it 'should a DSCRF for 4042809018288 TENSOPLAST Kompressionsbinde 5cmx4.5m' do
170
163
  skip("Where does the DSCR for 4042809018288 come from. It should be TENSOPLAST bande compression 5cmx4.5m")
171
164
  end
@@ -184,7 +177,7 @@ describe Oddb2xml::Builder do
184
177
  @inhalt = IO.read(@artikelstamm_name)
185
178
  expect(@inhalt.index('BIOMARIS Voll Meersalz 500 g')).not_to be nil
186
179
  end
187
-
180
+
188
181
  it 'Should not contain PHAR 8809544 Sildenavil with pexf and ppub 0.0' do
189
182
  #1128809544Sildenafil Suspension 7mg/ml 100ml 0030850045801000000000000000000000002
190
183
  @inhalt = IO.read(@artikelstamm_name)
@@ -211,12 +204,10 @@ describe Oddb2xml::Builder do
211
204
  it 'shoud contain GENERIC_TYPE' do
212
205
  expect(@inhalt.index('<GENERIC_TYPE')).not_to be nil
213
206
  end
214
-
207
+
215
208
  it 'should contain DIBASE with phar' do
216
209
  expected = %(<ITEM PHARMATYPE="P">
217
210
  <GTIN>7680658560014</GTIN>
218
- <!--obsolete override-->
219
- <PHAR>7199565</PHAR>
220
211
  <SALECD>A</SALECD>
221
212
  <DSCR>Dibase 10'000 Tropfen 10000 IE/ml Fl 10 ml</DSCR>
222
213
  <DSCRF>Dibase 10'000 gouttes 10000 UI/ml fl 10 ml</DSCRF>
@@ -237,7 +228,7 @@ describe Oddb2xml::Builder do
237
228
  </ITEM)
238
229
  expect(@inhalt.index(expected)).not_to be nil
239
230
  end
240
-
231
+
241
232
  it 'should contain PEVISONE Creme 30 g' do
242
233
  expect(@inhalt.index('Pevisone Creme 15 g')).not_to be nil # 7680406620144
243
234
  expect(@inhalt.index('Pevisone Creme 30 g')).not_to be nil # 7680406620229
@@ -249,7 +240,6 @@ describe Oddb2xml::Builder do
249
240
  tests = { 'item 7680403330459 CARBADERM only in Preparations(SL) with public price' =>
250
241
  %(<ITEM PHARMATYPE="P">
251
242
  <GTIN>7680403330459</GTIN>
252
- <PHAR>3603779</PHAR>
253
243
  <SALECD>A</SALECD>
254
244
  <DSCR>Carbaderm Creme Tb 300 ml</DSCR>
255
245
  <DSCRF>Carbaderm crème tb 300 ml</DSCRF>
@@ -271,7 +261,6 @@ describe Oddb2xml::Builder do
271
261
  </ITEM>),
272
262
  'product 3247501 LANSOYL' => '<ITEM PHARMATYPE="P">
273
263
  <GTIN>7680324750190</GTIN>
274
- <PHAR>0023722</PHAR>
275
264
  <SALECD>A</SALECD>
276
265
  <DSCR>LANSOYL Gel 225 g</DSCR>
277
266
  <DSCRF>LANSOYL gel 225 g</DSCRF>
@@ -290,7 +279,6 @@ describe Oddb2xml::Builder do
290
279
  'product 5366201 3TC' =>
291
280
  %(<ITEM PHARMATYPE="P">
292
281
  <GTIN>7680536620137</GTIN>
293
- <PHAR>1699947</PHAR>
294
282
  <SALECD>A</SALECD>
295
283
  <DSCR>3TC Filmtabl 150 mg 60 Stk</DSCR>
296
284
  <DSCRF>3TC cpr pell 150 mg 60 pce</DSCRF>
@@ -314,7 +302,6 @@ describe Oddb2xml::Builder do
314
302
  'item 7680161050583 HIRUDOID 40g' =>
315
303
  %(<ITEM PHARMATYPE="P">
316
304
  <GTIN>7680161050583</GTIN>
317
- <PHAR>2731179</PHAR>
318
305
  <SALECD>A</SALECD>
319
306
  <DSCR>Hirudoid Creme 3 mg/g 40 g</DSCR>
320
307
  <DSCRF>Hirudoid crème 3 mg/g 40 g</DSCRF>
@@ -336,7 +323,6 @@ describe Oddb2xml::Builder do
336
323
  'item 7680161050743 Hirudoid Creme 3 mg/g 100 g' =>
337
324
  %( <ITEM PHARMATYPE="P">
338
325
  <GTIN>7680161050743</GTIN>
339
- <PHAR>2731179</PHAR>
340
326
  <SALECD>A</SALECD>
341
327
  <DSCR>Hirudoid Creme 3 mg/g 100 g</DSCR>
342
328
  <DSCRF>Hirudoid crème 3 mg/g 100 g</DSCRF>
@@ -349,10 +335,9 @@ describe Oddb2xml::Builder do
349
335
  <SL_ENTRY>true</SL_ENTRY>
350
336
  <IKSCAT>D</IKSCAT>
351
337
  <DEDUCTIBLE>10</DEDUCTIBLE>
352
- </ITEM>),
338
+ </ITEM>),
353
339
  'item 7680284860144 ANCOPIR' =>'<ITEM PHARMATYPE="P">
354
340
  <GTIN>7680284860144</GTIN>
355
- <PHAR>0177804</PHAR>
356
341
  <SALECD>A</SALECD>
357
342
  <DSCR>ANCOPIR Inj Lös 5 Amp 2 ml</DSCR>
358
343
  <DSCRF>Ancopir, sol inj</DSCRF>
@@ -374,7 +359,6 @@ describe Oddb2xml::Builder do
374
359
  </ITEM>',
375
360
  'FERRO-GRADUMET price from ZurRose ' => %(<ITEM PHARMATYPE="P">
376
361
  <GTIN>7680316440115</GTIN>
377
- <PHAR>0020244</PHAR>
378
362
  <SALECD>A</SALECD>
379
363
  <DSCR>FERRO-GRADUMET Depottabl 30 Stk</DSCR>
380
364
  <DSCRF>FERRO-GRADUMET cpr dépôt 30 pce</DSCRF>
@@ -391,7 +375,7 @@ describe Oddb2xml::Builder do
391
375
  <DOSAGE_FORMF>Compresse</DOSAGE_FORMF>
392
376
  <IKSCAT>C</IKSCAT>
393
377
  <PRODNO>3164402</PRODNO>
394
- </ITEM>),
378
+ </ITEM>),
395
379
  'product 3TC Filmtabl' => %(<PRODUCT>
396
380
  <PRODNO>5366201</PRODNO>
397
381
  <SALECD>A</SALECD>
@@ -402,7 +386,6 @@ describe Oddb2xml::Builder do
402
386
  </PRODUCT>),
403
387
  'nur aus Packungen Coeur-Vaisseaux Sérocytol,' => %(<ITEM PHARMATYPE="P">
404
388
  <GTIN>7680002770014</GTIN>
405
- <PHAR>0361815</PHAR>
406
389
  <SALECD>A</SALECD>
407
390
  <DSCR>SEROCYTOL Herz-Gefässe Supp 3 Stk</DSCR>
408
391
  <DSCRF>SEROCYTOL Coeur-Vaisseaux supp 3 pce</DSCRF>
@@ -419,7 +402,6 @@ describe Oddb2xml::Builder do
419
402
  </ITEM>),
420
403
  'HUMALOG (Richter)' => %(<ITEM PHARMATYPE="P">
421
404
  <GTIN>7680532900196</GTIN>
422
- <PHAR>1699999</PHAR>
423
405
  <SALECD>A</SALECD>
424
406
  <DSCR>Humalog Inj Lös Durchstf 10 ml</DSCR>
425
407
  <DSCRF>Humalog sol inj flac 10 ml</DSCRF>
@@ -439,20 +421,37 @@ describe Oddb2xml::Builder do
439
421
  <DEDUCTIBLE>20</DEDUCTIBLE>
440
422
  <PRODNO>5329001</PRODNO>
441
423
  </ITEM>),
442
- 'Chapter 70 limitation' => %(<LIMITATION>
443
- <!--Chapter70 hack-->
444
- <LIMNAMEBAG>L1, L2</LIMNAMEBAG>
445
- <DSCR>Eine Flasche zu 20 ml Urtinktur einer bestimmten Pflanze pro Monat. Für Aesculus, Carduus Marianus, Ginkgo, Hedera helix, Hypericum perforatum, Lavandula, Rosmarinus officinalis, Taraxacum officinale.</DSCR>
446
- <DSCRF/>
447
- <LIMITATION_PTS>1</LIMITATION_PTS>
448
- </LIMITATION>),
424
+ 'Varilrix product' => %(<PRODUCT>
425
+ <PRODNO>0058501</PRODNO>
426
+ <SALECD>A</SALECD>
427
+ <DSCR>Varilrix Trockensub c solv</DSCR>
428
+ <DSCRF>Varilrix subst sèche c solv</DSCRF>
429
+ <ATC>J07BK01</ATC>
430
+ <LIMNAMEBAG>0808</LIMNAMEBAG>
431
+ <SUBSTANCE>Vaccinum virus varicellae vivus attenuat. (Stamm OKA)</SUBSTANCE>
432
+ </PRODUCT>),
433
+ 'Varilrix item' => %(<ITEM PHARMATYPE="P">
434
+ <GTIN>7680005850010</GTIN>
435
+ <SALECD>A</SALECD>
436
+ <DSCR>Varilrix Trockensub c solv Fertspr 0.500 ml</DSCR>
437
+ <DSCRF>Varilrix subst sèche c solv ser prê 0.500 ml</DSCRF>
438
+ <COMP>
439
+ <NAME>GlaxoSmithKline AG</NAME>
440
+ <GLN>7601001000674</GLN>
441
+ </COMP>
442
+ <PEXF>43.64</PEXF>
443
+ <PPUB>66.5</PPUB>
444
+ <SL_ENTRY>true</SL_ENTRY>
445
+ <IKSCAT>B</IKSCAT>
446
+ <DEDUCTIBLE>10</DEDUCTIBLE>
447
+ <PRODNO>0058501</PRODNO>
448
+ </ITEM),
449
449
  'Chapter 70 product' => %(<PRODUCT>
450
450
  <PRODNO>2069639</PRODNO>
451
- <!--Chapter70 hack-->
451
+ <!--Chapter70 hack prodno 2069639 Ceres Urtinkturen gemäss L2 mit - im Kommentar-->
452
452
  <SALECD>A</SALECD>
453
- <DSCR>Ceres Urtinkturen gemäss L2</DSCR>
453
+ <DSCR>Ceres Urtinkturen gemäss L2 mit -- im Kommentar</DSCR>
454
454
  <DSCRF/>
455
- <LIMNAMEBAG>L1, L2</LIMNAMEBAG>
456
455
  </PRODUCT>),
457
456
  'Chapter 70 item' => %(<ITEM PHARMATYPE="P">
458
457
  <GTIN>2500000588532</GTIN>
@@ -462,7 +461,7 @@ describe Oddb2xml::Builder do
462
461
  <DSCRF>--missing--</DSCRF>
463
462
  <PEXF>23.44</PEXF>
464
463
  <PPUB>31.30</PPUB>
465
- <!--Chapter70 hack-->
464
+ <!--Chapter70 hack 2500000588532 EINF ARZNEI Ceres Urtinktur spez 20ml-->
466
465
  <SL_ENTRY>true</SL_ENTRY>
467
466
  <PRODNO>2069639</PRODNO>
468
467
  </ITEM>),
data/spec/builder_spec.rb CHANGED
@@ -39,7 +39,6 @@ ARTICLE_ZURROSE_ELEMENTS = [
39
39
  ]
40
40
 
41
41
  ARTICLE_NAROPIN = %(<REF_DATA>1</REF_DATA>
42
- <PHAR>1882189</PHAR>
43
42
  <SMCAT>B</SMCAT>
44
43
  <SMNO>54015011</SMNO>
45
44
  <PRODNO>5401501</PRODNO>
@@ -59,7 +58,7 @@ ARTICLE_NAROPIN = %(<REF_DATA>1</REF_DATA>
59
58
  <BCSTAT>A</BCSTAT>
60
59
  </ARTBAR>
61
60
  </ART>)
62
-
61
+
63
62
  ARTICLE_COMMON_ELEMENTS = [
64
63
  ['ARTICLE/ART/REF_DATA', '1'],
65
64
  ['ARTICLE/ART/SMCAT', 'A'],
@@ -256,17 +255,7 @@ def check_result(inhalt, nbr_record)
256
255
  expect(inhalt.index('<ERROR_CODE/>')).to be > 0
257
256
  m = /<NBR_RECORD>(\d+)<\/NBR_RECORD>/.match(inhalt)
258
257
  expect(m).not_to be nil
259
- expect(m[1].to_i).to eq nbr_record
260
- end
261
-
262
- def checkItemForRefdata(doc, pharmacode, isRefdata)
263
- article = XPath.match( doc, "//ART[PHAR=#{pharmacode.to_s}]").first
264
- name = article.elements['DSCRD'].text
265
- refdata = article.elements['REF_DATA'].text
266
- smno = article.elements['SMNO'] ? article.elements['SMNO'].text : 'nil'
267
- puts "checking doc for gtin #{gtin} isRefdata #{isRefdata} == #{refdata}. SMNO: #{smno} #{name}" if $VERBOSE
268
- expect(article.elements['REF_DATA'].text).to eq(isRefdata.to_s)
269
- article
258
+ expect(m[1].to_i).to eq nbr_record
270
259
  end
271
260
 
272
261
  ['article', 'betrieb', 'code', 'interaction', 'limitation', 'medizinalperson', 'product', 'substance'].each do |cat|
@@ -408,7 +397,7 @@ def checkArticleXml(checkERYTHROCIN = true)
408
397
  expect(desitin.elements['DSCRD'].text).to eq("LEVETIRACETAM DESITIN Mini Filmtab 250 mg 30 Stk")
409
398
  expect(desitin.elements['DSCRF'].text).to eq('LEVETIRACETAM DESITIN mini cpr pel 250 mg 30 pce')
410
399
  expect(desitin.elements['REF_DATA'].text).to eq('1')
411
- expect(desitin.elements['PHAR'].text).to eq('5819012')
400
+ expect(desitin.elements['PHAR'].text).to eq('5819012')
412
401
  expect(desitin.elements['SMCAT'].text).to eq('B')
413
402
  expect(desitin.elements['SMNO'].text).to eq('62069008')
414
403
  expect(desitin.elements['VAT'].text).to eq('2')
@@ -473,16 +462,16 @@ def checkProductXml(nbr_record = -1)
473
462
  end
474
463
 
475
464
  describe Oddb2xml::Builder do
476
- NrExtendedArticles = 76
477
- NrSubstances = 27
478
- NrLimitations = 14
479
-
465
+ NrExtendedArticles = 80
466
+ NrSubstances = 28
467
+ NrLimitations = 15
468
+
480
469
  NrInteractions = 2
481
470
  NrCodes = 5
482
471
  NrProdno = 31
483
- NrPackages = 44
484
- NrProducts = 39
485
- RegExpDesitin = /1125819012LEVETIRACETAM DESITIN Mini Filmtab 250 mg 30 Stk/
472
+ NrPackages = 46
473
+ NrProducts = 40
474
+ RegExpDesitin = /1120000000LEVETIRACETAM DESITIN Mini Filmtab 250 mg 30 Stk/
486
475
  include ServerMockHelper
487
476
  def common_run_init(options = {})
488
477
  @savedDir = Dir.pwd
@@ -516,6 +505,11 @@ describe Oddb2xml::Builder do
516
505
  check_result(@inhalt, NrProducts)
517
506
  end
518
507
 
508
+ it 'should have a correct NBR_RECORD in oddb_products.xml' do
509
+ oddb_product_xml = oddb_article_xml.sub('oddb_article.xml', 'oddb_product.xml')
510
+ check_result(File.read(oddb_product_xml), 46)
511
+ end
512
+
519
513
  it 'oddb_article.xml should contain a SHA256' do
520
514
  expect(XPath.match(@rexml, "//ART" ).first.attributes['SHA256'].size).to eq 64
521
515
  expect(XPath.match(@rexml, "//ART" ).size).to eq XPath.match(@rexml, "//ART" ).size
@@ -532,7 +526,7 @@ describe Oddb2xml::Builder do
532
526
 
533
527
  check_attributes(oddb_article_xml, ARTICLE_ATTRIBUTE_TESTS)
534
528
  check_elements(oddb_article_xml, ARTICLE_COMMON_ELEMENTS)
535
-
529
+
536
530
  it 'should validate XSD article' do
537
531
  @inhalt = File.read(oddb_article_xml)
538
532
  # This fails on Ruby < 2.4 as NAROPIN INJ LÖS 0.2 % 10 is wrongly encoded
@@ -552,7 +546,7 @@ describe Oddb2xml::Builder do
552
546
  end
553
547
 
554
548
  it 'should have a correct insulin (gentechnik) for 7680532900196' do
555
- expect(XPath.match( @rexml, "//ART/[BC='7680532900196']").size).to eq 1
549
+ expect(@inhalt.match(/.*<BC>7680532900196<\/BC>.*/).class).to be MatchData
556
550
  expect(XPath.match( @rexml, "//ART//GEN_PRODUCTION").size).to be >= 1
557
551
  expect(XPath.match( @rexml, "//ART//GEN_PRODUCTION").first.text).to eq 'X'
558
552
  expect(XPath.match( @rexml, "//ART//INSULIN_CATEGORY").size).to eq 1
@@ -568,7 +562,7 @@ describe Oddb2xml::Builder do
568
562
  ean_with_drug_index = 7680555610041
569
563
  it "should have a correct drug information for #{ean_with_drug_index}" do
570
564
  doc = REXML::Document.new IO.read(checkAndGetArticleXmlName)
571
- expect(XPath.match( @rexml, "//ART/[BC='#{ean_with_drug_index}']").size).to eq 1
565
+ expect(@inhalt.match(/.*<BC>#{ean_with_drug_index}<\/BC>.*/).class).to be MatchData
572
566
  expect(XPath.match( @rexml, "//ART//DRUG_INDEX").size).to eq 1
573
567
  expect(XPath.match( @rexml, "//ART//DRUG_INDEX").first.text).to eq 'd'
574
568
  found = false
@@ -605,11 +599,11 @@ describe Oddb2xml::Builder do
605
599
  <CPT/>)
606
600
  expect(oddb_product_xml.index(text2)).to be >= 1
607
601
  end
608
-
602
+
609
603
  it 'should generate SALECD A for swissmedic packages' do
610
604
  expect(IO.read(oddb_article_xml).index('<SALECD>A<!--Overriding status I nincd 10 for 7680658560014 as in refdata_pharma--></SALECD>')).to be >= 1
611
605
  end
612
-
606
+
613
607
  end
614
608
 
615
609
  context 'when -o for fachinfo is given' do
@@ -821,19 +815,12 @@ describe Oddb2xml::Builder do
821
815
 
822
816
  it 'should generate the flag non-refdata' do
823
817
  doc = REXML::Document.new File.new(checkAndGetArticleXmlName('non-refdata'))
824
- expect(XPath.match( doc, "//REF_DATA" ).size).to be > 0
825
- checkItemForRefdata(doc, "1699947", 1) # 3TC Filmtabl 150 mg SMNO 53662013 IKSNR 53‘662, 53‘663
826
- checkItemForRefdata(doc, "0598003", 0) # SOFRADEX Gtt Auric 8 ml
827
- checkItemForRefdata(doc, "5366964", 0) # 1-DAY ACUVUE moist jour
828
- unless SkipMigelDownloader
829
- novopen = checkItemForRefdata(doc, "3036984", 1) # NovoPen 4 Injektionsgerät blue In NonPharma (a MiGel product)
830
- expect(novopen.elements['ARTBAR/BC'].text).to eq '0'
831
- end
818
+ expect(XPath.match( doc, "//REF_DATA" ).size).to eq NrExtendedArticles
832
819
  end
833
820
 
834
821
  it 'should generate SALECD A for migel (NINCD 13)' do
835
822
  doc = REXML::Document.new File.new(checkAndGetArticleXmlName)
836
- article = XPath.match( doc, "//ART[PHAR=4236863]").first
823
+ article = XPath.match( doc, "//ART[DSCRD='ACTICOAT Flex 7 Wundverband 10x12.5cm 5 Stk']").first
837
824
  expect(article.elements['SALECD'].text).to eq('A')
838
825
  expect(article.elements['ARTINS/NINCD'].text).to eq('13')
839
826
  end
@@ -860,12 +847,12 @@ describe Oddb2xml::Builder do
860
847
  end
861
848
 
862
849
  it 'should load correct number of nonpharma' do
850
+ puts checkAndGetArticleXmlName
863
851
  doc = REXML::Document.new File.new(checkAndGetArticleXmlName)
864
852
  dscrds = XPath.match( doc, "//ART" )
865
853
  expect(dscrds.size).to eq(NrExtendedArticles)
866
- expect(XPath.match( doc, "//PHAR" ).find_all{|x| x.text.match('1699947') }.size).to eq(1) # swissmedic_packages Cardio-Pulmo-Rénal Sérocytol, suppositoire
867
- expect(XPath.match( doc, "//PHAR" ).find_all{|x| x.text.match('2465312') }.size).to eq(1) # from refdata_pharma.xml"
868
854
  expect(XPath.match( doc, "//PHAR" ).find_all{|x| x.text.match('0000000') }.size).to eq(0) # 0 is not a valid pharmacode
855
+ expect(XPath.match( doc, "//PHAR" ).find_all{|x| x.text.match(/\d+/)}.size).to eq 65
869
856
  end
870
857
 
871
858
  it 'should have a correct NBR_RECORD in oddb_limitation.xml' do