oddb2xml 2.6.6 → 2.7.1

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