oddb2xml 2.4.4 → 2.4.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d53eced411a8265a49354d1c7ffb1309c10a4545
4
- data.tar.gz: d53b5e31652a7b16b3889a3bf6636f2a06ca5ba8
3
+ metadata.gz: 952fe0868841bf075f3db7cd128326004b2ab2bf
4
+ data.tar.gz: c026575530d35d1ef75ff9b3ac4688f647d07427
5
5
  SHA512:
6
- metadata.gz: 9f782573e7dca61022e7f44c2a34794673473def7c79d20676106387c779e6965a157a29f510f56a396afad5c3838558d59b0e876d2b0e54a38ec60cf2536faf
7
- data.tar.gz: ddb93469191bbcb33f3ae744fbf463bad8480d863b45631fb43e543a7a1052a7a596baec4fd044396d8508270c5289c3944201ef6ff41d0d9ad0d072a05eb6dd
6
+ metadata.gz: e4baa838d2b817cfd994882092585e768a4375f82e3bb4843d083ade252666f939628129fa4bfecd709c36f63e81168dd2f996c5dd1f2cae6fbacb05e578a37e
7
+ data.tar.gz: c839a38f2739a18c515d5b90b7c64c9dd7f8dff06c17ea0a549a106dbc95faded479ae986bed4575c3780d0492f420b18c99ff568057e99e273454da70bcbf85
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ === 2.4.5 / 25.10.2017
2
+
3
+ * Fix parsing shire products
4
+ * Don't emit barcode if 0.
5
+ * Do not get price for barcode 0
6
+ * Fix some failing spec tests
7
+
1
8
  === 2.4.4 / 23.10.2017
2
9
 
3
10
  * Add articles which are only found in the Preparation.xml (e.g. Mutagrid)
@@ -220,6 +220,7 @@ module Oddb2xml
220
220
  @refdata.each_pair do |ean13, item|
221
221
  next if item and item.is_a?(Hash) and item[:atc_code] and /^Q/i.match(item[:atc_code])
222
222
  next if item[:prodno] and @products[item[:prodno]]
223
+ next unless ean13.to_s.length == 13
223
224
  obj = {
224
225
  :seq => @items[ean13] ? @items[ean13] : @items[item[:ean]],
225
226
  :pac => nil,
@@ -808,7 +809,7 @@ module Oddb2xml
808
809
  if obj[:seq]
809
810
  pac = obj[:seq][:packages][obj[:pharmacode]]
810
811
  pac = obj[:seq][:packages][ean] unless pac
811
- else
812
+ elsif ean > 0
812
813
  pac = @items[ean][:packages][ean] if @items and ean and @items[ean] and @items[ean][:packages]
813
814
  end
814
815
  if no8
@@ -922,7 +923,7 @@ module Oddb2xml
922
923
  xml.BC /^9999|^0000|^0$/.match(ean.to_s) ? 0 : sprintf('%013d', ean)
923
924
  xml.BCSTAT 'A' # P is alternative
924
925
  #xml.PHAR2
925
- } if ean
926
+ } if ean && ean > 0
926
927
  #xml.ARTCH {
927
928
  #xml.PHAR2
928
929
  #xml.CHTYPE
@@ -485,14 +485,14 @@ module Oddb2xml
485
485
  ean13 = $1.to_i
486
486
  end
487
487
  if data[ean13]
488
- @@error_file.puts "Duplicate ean13 #{ean13} in line \nact: #{line.chomp}\norg: #{data[ean13][:line]}"
488
+ @@error_file.puts "Duplicate ean13 #{ean13} in line \nact: #{line}\norg: #{data[ean13][:line]}"
489
489
  @@items_without_ean13s -= 1
490
490
  @@duplicated_ean13s += 1
491
491
  next
492
492
  end
493
493
 
494
494
  data[ean13] = {
495
- :line => line.chomp,
495
+ :line => line,
496
496
  :ean => ean13,
497
497
  :clag => line[73],
498
498
  :vat => line[96],
@@ -74,11 +74,9 @@ module ParseUtil
74
74
  if composition.is_a?(ParseComposition)
75
75
  composition.substances.each do
76
76
  |substance_item|
77
- substance_item.is_active_agent = (active_agents.find {|x| x.downcase.eql?(substance_item.name.downcase) } != nil)
77
+ active_substance_name = substance_item.name.downcase.sub(/^cum\s/, '')
78
+ substance_item.is_active_agent = (active_agents.find {|x| /#{x.downcase.gsub('(', '\(').gsub(')', '\)')}($|\s)/.match(active_substance_name) } != nil)
78
79
  substance_item.is_active_agent = true if substance_item.chemical_substance and active_agents.find {|x| x.downcase.eql?(substance_item.chemical_substance.name.downcase) }
79
- # next line is an ugly hack for 24 entries with names containing commas between brackets, eg.
80
- # globulina equina (immunisé avec coeur, tissu pulmonaire, reins de porcins)
81
- substance_item.is_active_agent = true if /globulina equina/.match(substance_item.name.downcase)
82
80
  end
83
81
  comps << composition
84
82
  end
@@ -489,4 +487,4 @@ class ParseGalenicForm
489
487
  name = ast[:prepation_name] ? ast[:prepation_name].to_s.strip : nil
490
488
  return [name, form]
491
489
  end
492
- end
490
+ end
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "2.4.4"
2
+ VERSION = "2.4.5"
3
3
  end
data/spec/builder_spec.rb CHANGED
@@ -309,6 +309,7 @@ def check_validation_via_xsd
309
309
  |error|
310
310
  if error.message
311
311
  puts "Failed validating #{file} with #{File.size(file)} bytes using XSD from #{@oddb2xml_xsd}"
312
+ puts "cmd would be: xsdvalidate #{@oddb2xml_xsd} #{file}"
312
313
  end
313
314
  expect(error.message).to be_nil, "expected #{error.message} to be nil\nfor #{file} content \n#{File.read(file)}"
314
315
  end
@@ -377,7 +378,6 @@ def checkArticleXml(checkERYTHROCIN = true)
377
378
 
378
379
  desitin = checkAndGetArticleWithGTIN(doc, Oddb2xml::LEVETIRACETAM_GTIN)
379
380
  expect(desitin).not_to eq nil
380
- # TODO: why is this now nil? desitin.elements['ATC'].text.should == 'N03AX14'
381
381
  expect(desitin.elements['DSCRD'].text).to eq("LEVETIRACETAM DESITIN Mini Filmtab 250 mg 30 Stk")
382
382
  expect(desitin.elements['DSCRF'].text).to eq('LEVETIRACETAM DESITIN mini cpr pel 250 mg 30 pce')
383
383
  expect(desitin.elements['REF_DATA'].text).to eq('1')
@@ -405,7 +405,6 @@ def checkArticleXml(checkERYTHROCIN = true)
405
405
  expect(zyvoxid.elements['DSCRD'].text).to eq 'ZYVOXID Filmtabl 600 mg 10 Stk'
406
406
 
407
407
  expect(XPath.match( doc, "//LIMPTS" ).size).to be >= 1
408
- # TODO: desitin.elements['QTY'].text.should eq '250 mg'
409
408
  end
410
409
 
411
410
  def checkProductXml(nbr_record = -1)
@@ -581,7 +580,7 @@ describe Oddb2xml::Builder do
581
580
  m = /<paragraph><!\[CDATA\[(.+)\n(.*)/.match(inhalt.to_s)
582
581
  expect(m[1]).to eq '<?xml version="1.0" encoding="utf-8"?><div xmlns="http://www.w3.org/1999/xhtml">'
583
582
  expected = '<p class="s2"> </p>'
584
- skip { m[2].should eq '<p class="s4" id="section1"><span class="s2"><span>Zyvoxid</span></span><sup class="s3"><span>®</span></sup></p>' }
583
+ skip { expect(m[2]).to eq '<p class="s4" id="section1"><span class="s2"><span>Zyvoxid</span></span><sup class="s3"><span>®</span></sup></p>' }
585
584
  expect(File.exists?(@oddb_fi_product_xml)).to eq true
586
585
  inhalt = IO.read(@oddb_fi_product_xml)
587
586
  end
@@ -881,7 +880,7 @@ if RUN_ALL
881
880
  expect(File.exists?(oddb_article_xml)).to eq true
882
881
  doc = REXML::Document.new IO.read(oddb_article_xml)
883
882
  article = XPath.match( doc, "//ART[PHAR=5822801]").first
884
- article.elements['DSCRD'].text.should match /EPIMINERAL/i
883
+ expect(article.elements['DSCRD'].text).to match(/EPIMINERAL/)
885
884
  end
886
885
 
887
886
  it 'should generate a correct oddb_product.xml' do
@@ -891,7 +890,7 @@ if RUN_ALL
891
890
  it 'should generate an article with the COOL (fridge) attribute' do
892
891
  doc = REXML::Document.new File.new(oddb_article_xml)
893
892
  fridge_product = checkAndGetArticleWithGTIN(doc, Oddb2xml::FRIDGE_GTIN)
894
- fridge_product.elements['COOL'].text.should == '1'
893
+ expect(fridge_product.elements['COOL'].text).to eq '1'
895
894
  end
896
895
 
897
896
  it 'should generate a correct oddb_article.xml' do
@@ -919,7 +918,6 @@ if RUN_ALL
919
918
  expect(oddb_dat).to match(/^..3/), "should have a record with '3' in CMUT field"
920
919
  expect(oddb_dat).to match(RegExpDesitin), "should have Desitin"
921
920
  IO.readlines(dat_filename).each{ |line| check_article_IGM_format(line, 0) }
922
- # oddb_dat.should match(/^..1/), "should have a record with '1' in CMUT field" # we have no
923
921
  end
924
922
  end
925
923
 
data/spec/calc_spec.rb CHANGED
@@ -608,6 +608,17 @@ Die HILFSSTOFFE sind Aqua ad iniectabilia und Natrii chloridum.
608
608
  specify { expect(argenti.chemical_substance).to eq nil }
609
609
  end
610
610
  end
611
+ context 'shire Subcuvia' do
612
+ # def initialize(column_c = nil, size = nil, unit = nil, active_substance = nil, composition= nil)
613
+ substance = 'immunoglobulinum humanum normale'
614
+ composition = 'proteina 160 mg cum immunoglobulinum humanum normale min. 95 %, glycinum, natrii chloridum, aqua ad iniectabilia, q.s. ad solutionem pro 1 ml.'
615
+ info = Calc.new('Subcuvia, Injektionslösung', '5', 'ml', substance, composition)
616
+ specify { expect(info.compositions.first.substances.first.name).to eq 'Proteina' }
617
+ specify { expect(info.compositions.first.substances[1].name).to eq 'Cum Immunoglobulinum Humanum Normale' }
618
+ specify { expect(info.compositions.first.substances[1].is_active_agent).to eq true }
619
+ specify { expect(info.pkg_size).to eq '5' }
620
+ end
621
+
611
622
  end
612
623
 
613
624
  describe Oddb2xml::Calc do
data/spec/parslet_spec.rb CHANGED
@@ -35,6 +35,32 @@ describe ParseComposition do
35
35
  specify { expect( composition.substances.first.name).to eq "E 216" }
36
36
  end
37
37
 
38
+ context 'Shire Subcuvia' do
39
+ # def initialize(column_c = nil, size = nil, unit = nil, active_substance = nil, composition= nil)
40
+ active_substance = 'immunoglobulinum humanum normale'
41
+ composition_text = 'proteina 160 mg cum immunoglobulinum humanum normale min. 95 %, glycinum, natrii chloridum, aqua ad iniectabilia, q.s. ad solutionem pro 1 ml.'
42
+ composition = ParseUtil.parse_compositions(composition_text, active_substance).first
43
+ specify { expect(composition.substances.size).to eq 4 }
44
+ specify { expect(composition.label).to eq nil }
45
+ specify { expect(composition.label_description).to eq nil }
46
+ specify { expect(composition.substances[0].name).to eq 'Proteina' }
47
+ specify { expect(composition.substances[1].name).to eq 'Cum Immunoglobulinum Humanum Normale' }
48
+ specify { expect(composition.substances[0].is_active_agent).to eq false }
49
+ specify { expect(composition.substances[1].is_active_agent).to eq true }
50
+ end
51
+
52
+ context 'Shire Fosrenol' do
53
+ # def initialize(column_c = nil, size = nil, unit = nil, active_substance = nil, composition= nil)
54
+ active_substance = 'lanthanum'
55
+ composition_text = 'lanthanum 500 mg ut lanthani (III) carbonas hydricum, excipiens pro compresso.'
56
+ composition = ParseUtil.parse_compositions(composition_text, active_substance).first
57
+ specify { expect(composition.substances.size).to eq 1 }
58
+ specify { expect(composition.label).to eq nil }
59
+ specify { expect(composition.label_description).to eq nil }
60
+ specify { expect(composition.substances[0].is_active_agent).to eq true }
61
+ specify { expect(composition.substances[0].name).to eq 'Lanthanum 500 Mg Ut Lanthani (iii) Carbonas Hydricum' }
62
+ end
63
+
38
64
  context "should return label with description" do
39
65
  string = "I) Glucoselösung: glucosum anhydricum 240 g ut glucosum monohydricum, calcii chloridum dihydricum 600 mg, acidum citricum monohydricum, aqua ad iniectabilia q.s. ad solutionem pro 500 ml."
40
66
  composition = ParseComposition.from_string(string)
@@ -708,8 +734,9 @@ describe ParseComposition do
708
734
  end
709
735
 
710
736
  context "should parse a complex composition" do
711
- string = 'globulina equina (immunisé avec coeur) 8 mg'
712
- composition = ParseUtil.parse_compositions(string).first
737
+ composition = ParseUtil.parse_compositions(
738
+ 'globulina equina (immunisé avec coeur) 8 mg',
739
+ 'globulina equina (immunisé avec coeur)').first
713
740
  specify { expect(composition.substances.size).to eq 1 }
714
741
  globulina = composition.substances.find{ |x| /globulina/i.match(x.name) }
715
742
  specify { expect(globulina.name).to eq 'Globulina Equina (immunisé Avec Coeur)' }
@@ -719,8 +746,9 @@ describe ParseComposition do
719
746
  end
720
747
 
721
748
  context "should parse globulina equina (immunise" do
722
- string = 'globulina equina (immunisé avec coeur, tissu pulmonaire, reins de porcins) 8 mg'
723
- composition = ParseUtil.parse_compositions(string).first
749
+ composition = ParseUtil.parse_compositions(
750
+ 'globulina equina (immunisé avec coeur, Tissu Pulmonaire, Reins De Porcins) 8 mg',
751
+ 'globulina equina (immunisé avec coeur, Tissu Pulmonaire, Reins De Porcins)').first
724
752
  specify { expect(composition.substances.size).to eq 1 }
725
753
  globulina = composition.substances.find{ |x| /globulina/i.match(x.name) }
726
754
  specify { expect(globulina.name).to eq 'Globulina Equina (immunisé Avec Coeur, Tissu Pulmonaire, Reins De Porcins)' }
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.4.4
4
+ version: 2.4.5
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: 2017-10-23 00:00:00.000000000 Z
11
+ date: 2017-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip