oddb2xml 2.7.0 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f09c85343784bea903af64ee40b29749dfdfc2af55000673244129510276c88a
4
- data.tar.gz: 7a8cbd05765da37ec1d582c13bb71758c05a0ddd73773aea5084fa211ebf98d2
3
+ metadata.gz: c31777bcd85038bd65d38d67d6ebdf2197f174389403b76ff146b18d3ef4557e
4
+ data.tar.gz: 8d8930ed04518838084ae4aeb69181418b2eddb36cfa83ece2cbc84ccd06e1f4
5
5
  SHA512:
6
- metadata.gz: 5be02fa2ec4dff0aa6f8c4a4dbfba9cc0f272831fd0b10b6a1af1a18fd3cff3956ad0884de9e81c19c31d60984cc5d234586372aa7a0d34acdab9015cf7252d8
7
- data.tar.gz: ea9317a80ad372959d59f0a13614a9a5a8a1f5da3befa9202f5dadbcb23a41523580184c9a769fb512ba7256f5d36b97dffc214424d4d70df499cb35b6c9371e
6
+ metadata.gz: abe9685cc40ba1fbf9525c3cbeb9f332a98725e76621074c9f1df179c91e53cb50a4f15e78a800a28224351d3a47ec8aef0e3b9ee17787a8dccd519db65bc6d8
7
+ data.tar.gz: 415b9049a316af98279f7af0b602ecd85b0bd2e86493133af512d37b494d43155822ef754ad6dcaa39b1aa474fddba57081860588b7e896da13bf891e9b522d6
@@ -0,0 +1,40 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ master ]
13
+ pull_request:
14
+ branches: [ master ]
15
+
16
+ jobs:
17
+ test:
18
+ runs-on: ubuntu-latest
19
+ # Using a matrix fails, because /setup-ruby always invokes bundle install without any additional args
20
+ # Fixed by adding not defining the debugger group in the Gemfile
21
+ strategy:
22
+ fail-fast: false
23
+ matrix:
24
+ os: [ ubuntu]
25
+ ruby: [2.4, 2.5, 2.6, 2.7, 3.0, head]
26
+ continue-on-error: ${{ endsWith(matrix.ruby, 'head') }}
27
+ steps:
28
+ - uses: actions/checkout@v2
29
+ - uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: ${{ matrix.ruby }}
32
+ bundler-cache: true
33
+
34
+ - name: Install dependencies
35
+ run: |
36
+ bundle config set path .bundle/gems --local
37
+ bundle config set without debugger --local
38
+ bundle install
39
+ - name: Test with RSpec
40
+ run: bundle exec rspec
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ === 2.7.1 / 03.02.2021
2
+ * travis-ci -> Github Actions
3
+ * limit DSCRD/DSCRF to 120 chars as specified in the XSD
4
+ * Use huge option for nokogiri as suggested by https://github.com/sparklemotion/nokogiri/issues/2187
5
+ * Adapt artikelstamm to refdata without pharmacode
6
+ * oddb_article get pharmacode where possible from transfer.dat
7
+
1
8
  === 2.7.0 / 05.11.2020
2
9
  * Chapter70 hack nur als Kommentar
3
10
  * Avoid double hyphen in comment
@@ -520,7 +520,7 @@ module Oddb2xml
520
520
  return false
521
521
  end
522
522
  return false if !name || name.empty? || name.length < 3
523
- name
523
+ name[0..119] # limit to maximal 120 chars as specified in the XSD
524
524
  end
525
525
  prepare_substances
526
526
  prepare_products
@@ -886,8 +886,12 @@ module Oddb2xml
886
886
  xml.ART('DT' => obj[:last_change] ? obj[:last_change] : '') do
887
887
  nbr_records += 1
888
888
  xml.REF_DATA (obj[:refdata] || @migel[pharma_code]) ? '1' : '0'
889
- # xml.PHAR sprintf('%07d', obj[:pharmacode]) if obj[:pharmacode]
890
- xml.PHAR obj[:pharmacode] if obj[:pharmacode]
889
+ if obj[:pharmacode] && obj[:pharmacode].length > 0
890
+ xml.PHAR obj[:pharmacode]
891
+ elsif zur_rose
892
+ puts "Adding #{zur_rose[:pharmacode]} to article GTIN #{ean}"
893
+ xml.PHAR zur_rose[:pharmacode]
894
+ end
891
895
  #xml.GRPCD
892
896
  #xml.CDS01
893
897
  #xml.CDS02
@@ -988,14 +992,7 @@ module Oddb2xml
988
992
  xml.CDTYP 'E13'
989
993
  xml.BC ean # /^9999|^0000|^0$/.match(ean.to_s) ? 0 : sprintf('%013d', ean)
990
994
  xml.BCSTAT 'A' # P is alternative
991
- #xml.PHAR2
992
995
  } if ean
993
- #xml.ARTCH {
994
- #xml.PHAR2
995
- #xml.CHTYPE
996
- #xml.LINENO
997
- #xml.NOUNITS
998
- #}
999
996
  if pac and pac[:prices]
1000
997
  pac[:prices].each_pair do |key, price|
1001
998
  xml.ARTPRI {
@@ -1413,7 +1410,7 @@ module Oddb2xml
1413
1410
  return '--missing--'
1414
1411
  end
1415
1412
  return '--missing--' if !name || name.empty? || name.length < 3
1416
- name
1413
+ name[0..119] # limit to maximal 120 chars as specified in the XSD
1417
1414
  end
1418
1415
  def override(xml, id, field, default_value)
1419
1416
  has_overrides = /\d{13}/.match(id.to_s) ? @@article_overrides[id.to_i] : @@product_overrides[id.to_i]
@@ -1499,7 +1496,6 @@ module Oddb2xml
1499
1496
  name ||= (item[:desc_de] + item[:name_de]) if item
1500
1497
  name ||= obj[:sequence_name]
1501
1498
  xml.GTIN pkg_gtin.to_s.rjust(13, '0')
1502
- override(xml, pkg_gtin, :PHAR, pharma_code)
1503
1499
  xml.SALECD('A')
1504
1500
  # maxLength for DSCR is 50 for Artikelstamm v3
1505
1501
  xml.DSCR(name) # for description for zur_rose
@@ -1598,7 +1594,7 @@ module Oddb2xml
1598
1594
  next if /^#{Oddb2xml::FAKE_GTIN_START}/.match(ean13.to_s)
1599
1595
  xml.ITEM({'PHARMATYPE' => patched_pharma_type }) do
1600
1596
  xml.GTIN ean13.to_s.rjust(13, '0')
1601
- xml.PHAR obj[:pharmacode]
1597
+ xml.PHAR obj[:pharmacode] if obj[:pharmacode] && obj[:pharmacode].length > 0
1602
1598
  emit_salecd(xml, ean13, obj)
1603
1599
  description = obj[:desc_de] || obj[:description] # for description for zur_rose
1604
1600
  xml.DSCR(description)
@@ -218,7 +218,6 @@ module Oddb2xml
218
218
  item = {}
219
219
  item[:ean13] = ean13
220
220
  item[:no8] = pac.SWMC_AUTHNR
221
- item[:pharmacode] = (phar = pac.PHAR.to_s) ? phar: '0'
222
221
  item[:data_origin] = 'refdata'
223
222
  item[:refdata] = true
224
223
  item[:_type] = (typ = pac.ATYPE.downcase.to_sym) ? typ: ''
@@ -228,12 +227,6 @@ module Oddb2xml
228
227
  item[:atc_code] = (code = pac.ATC) ? code.to_s : ''
229
228
  item[:company_name] = (nam = pac.AUTH_HOLDER_NAME) ? nam: ''
230
229
  item[:company_ean] = (gln = pac.AUTH_HOLDER_GLN) ? gln: ''
231
- unless item[:pharmacode]
232
- item[:pharmacode] = phar
233
- unless data[item[:pharmacode]] # pharmacode => GTINs
234
- data[item[:ean13]] = []
235
- end
236
- end
237
230
  data[item[:ean13]] = item
238
231
  end
239
232
  data
data/lib/oddb2xml/util.rb CHANGED
@@ -191,7 +191,9 @@ COLUMNS_FEBRUARY_2019= {
191
191
  :drug_index => /Verz. bei betäubun.*smittel-haltigen Präparaten/i,
192
192
  }
193
193
  def Oddb2xml.add_hash(string)
194
- doc = Nokogiri::XML.parse(string)
194
+ doc = Nokogiri::XML.parse(string) do |config|
195
+ config.huge
196
+ end
195
197
  nr = 0
196
198
  doc.root.elements.each do |node|
197
199
  nr += 1
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "2.7.0"
2
+ VERSION = "2.7.1"
3
3
  end
data/oddb2xml.gemspec CHANGED
@@ -37,6 +37,8 @@ Gem::Specification.new do |spec|
37
37
  spec.add_dependency 'xml-simple'
38
38
  spec.add_dependency 'ox'
39
39
  spec.add_dependency 'htmlentities'
40
+ spec.add_dependency 'webrick'
41
+ spec.add_dependency 'rexml'
40
42
 
41
43
  spec.add_development_dependency "bundler"
42
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
@@ -215,8 +208,6 @@ describe Oddb2xml::Builder do
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>
@@ -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>
@@ -352,7 +338,6 @@ describe Oddb2xml::Builder do
352
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>
@@ -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>
@@ -450,7 +432,6 @@ describe Oddb2xml::Builder do
450
432
  </PRODUCT>),
451
433
  'Varilrix item' => %(<ITEM PHARMATYPE="P">
452
434
  <GTIN>7680005850010</GTIN>
453
- <PHAR>1770177</PHAR>
454
435
  <SALECD>A</SALECD>
455
436
  <DSCR>Varilrix Trockensub c solv Fertspr 0.500 ml</DSCR>
456
437
  <DSCRF>Varilrix subst sèche c solv ser prê 0.500 ml</DSCRF>
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>
@@ -259,16 +258,6 @@ def check_result(inhalt, nbr_record)
259
258
  expect(m[1].to_i).to eq nbr_record
260
259
  end
261
260
 
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
270
- end
271
-
272
261
  ['article', 'betrieb', 'code', 'interaction', 'limitation', 'medizinalperson', 'product', 'substance'].each do |cat|
273
262
  eval "
274
263
  def oddb_#{cat}_xml
@@ -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,7 +462,7 @@ def checkProductXml(nbr_record = -1)
473
462
  end
474
463
 
475
464
  describe Oddb2xml::Builder do
476
- NrExtendedArticles = 78
465
+ NrExtendedArticles = 80
477
466
  NrSubstances = 28
478
467
  NrLimitations = 15
479
468
 
@@ -482,7 +471,7 @@ describe Oddb2xml::Builder do
482
471
  NrProdno = 31
483
472
  NrPackages = 46
484
473
  NrProducts = 40
485
- RegExpDesitin = /1125819012LEVETIRACETAM DESITIN Mini Filmtab 250 mg 30 Stk/
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
@@ -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
@@ -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 &amp; 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>
@@ -51,7 +51,7 @@ end unless SkipMigelDownloader
51
51
  describe Oddb2xml::RefdataExtractor do
52
52
  before(:all) { common_before }
53
53
  after(:all) { common_after }
54
- @@last_change = '2015-11-24 00:00:00 +0000'
54
+ Last_change = '2015-11-24 00:00:00 +0000'
55
55
 
56
56
  context 'should handle pharma articles' do
57
57
  subject do
@@ -60,17 +60,15 @@ describe Oddb2xml::RefdataExtractor do
60
60
  @pharma_items = Oddb2xml::RefdataExtractor.new(xml, 'PHARMA').to_hash
61
61
  end
62
62
 
63
- it "should have correct info for pharmacode 1699947 correctly" do
63
+ it "should have correct info for no8 62069008 correctly" do
64
64
  @pharma_items = subject.to_hash
65
- pharma_code_LEVETIRACETAM = '5819012'
66
- item_found = @pharma_items.values.find{ |x| x[:pharmacode].eql?(pharma_code_LEVETIRACETAM)}
65
+ item_found = @pharma_items.values.find{ |x| x[:ean13].eql?(Oddb2xml::LEVETIRACETAM_GTIN)}
67
66
  expect(item_found).not_to be nil
68
67
  expected = {:data_origin=>"refdata",
69
68
  :refdata=>true,
70
69
  :_type=>:pharma,
71
70
  :ean13=> Oddb2xml::LEVETIRACETAM_GTIN.to_s,
72
71
  :no8 => "62069008",
73
- :pharmacode=> pharma_code_LEVETIRACETAM,
74
72
  :data_origin => "refdata",
75
73
  :desc_de=>"LEVETIRACETAM DESITIN Mini Filmtab 250 mg 30 Stk",
76
74
  :desc_fr=>"LEVETIRACETAM DESITIN mini cpr pel 250 mg 30 pce",
@@ -90,15 +88,13 @@ describe Oddb2xml::RefdataExtractor do
90
88
 
91
89
  it "should have correct info for nonpharma with pharmacode 0058502 correctly" do
92
90
  @non_pharma_items = subject.to_hash
93
- pharma_code_TUBEGAZE = '0058519'
94
- item_found = @non_pharma_items.values.find{ |x| x[:pharmacode].eql?(pharma_code_TUBEGAZE)}
91
+ item_found = @non_pharma_items.values.find{ |x| x[:ean13].eql?('7611600441020')}
95
92
  expect(item_found).not_to be nil
96
93
  expected = {:refdata=>true,
97
94
  :_type=>:nonpharma,
98
95
  :ean13=>'7611600441020',
99
96
  :no8 => nil,
100
- :pharmacode=>pharma_code_TUBEGAZE,
101
- :last_change => @@last_change,
97
+ :last_change => Last_change,
102
98
  :data_origin => "refdata",
103
99
  :desc_de=>"TUBEGAZE Verband weiss Nr 12 20m Finger gross",
104
100
  :desc_fr=>"TUBEGAZE pans tubul blanc Nr 12 20m doigts grands",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oddb2xml
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.0
4
+ version: 2.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yasuhiro Asaka, Zeno R.R. Davatz, Niklaus Giger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-05 00:00:00.000000000 Z
11
+ date: 2021-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -234,6 +234,34 @@ dependencies:
234
234
  - - ">="
235
235
  - !ruby/object:Gem::Version
236
236
  version: '0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: webrick
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: rexml
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: '0'
258
+ type: :runtime
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
237
265
  - !ruby/object:Gem::Dependency
238
266
  name: bundler
239
267
  requirement: !ruby/object:Gem::Requirement
@@ -355,9 +383,9 @@ executables:
355
383
  extensions: []
356
384
  extra_rdoc_files: []
357
385
  files:
386
+ - ".github/workflows/ruby.yml"
358
387
  - ".gitignore"
359
388
  - ".rspec"
360
- - ".travis.yml"
361
389
  - Elexis_Artikelstamm_v003.xsd
362
390
  - Elexis_Artikelstamm_v5.xsd
363
391
  - Gemfile
@@ -486,7 +514,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
486
514
  - !ruby/object:Gem::Version
487
515
  version: '0'
488
516
  requirements: []
489
- rubygems_version: 3.1.2
517
+ rubygems_version: 3.2.4
490
518
  signing_key:
491
519
  specification_version: 4
492
520
  summary: oddb2xml creates xml files.
data/.travis.yml DELETED
@@ -1,29 +0,0 @@
1
- language: ruby
2
-
3
- bundler_args: --without debugger
4
-
5
- cache: bundler
6
- sudo: false
7
-
8
- before_install:
9
- - gem --version
10
-
11
- script: bundle exec rspec
12
-
13
- rvm:
14
- - 2.4
15
- - 2.5
16
- - 2.6
17
- - 2.7
18
- - ruby-head
19
-
20
- matrix:
21
- allow_failures:
22
- - rvm: ruby-head
23
-
24
- notifications:
25
- email:
26
- recipients:
27
- - ngiger@ywesee.com
28
- - yasaka@ywesee.com
29
- - zdavatz@ywesee.com