oddb2xml 2.4.3 → 2.4.4

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
  SHA1:
3
- metadata.gz: f3bb1935034ceac75c20a7a760647779e269cfbd
4
- data.tar.gz: c7a68dad6adbf982c83d6ef8b9794bc551f2233b
3
+ metadata.gz: d53eced411a8265a49354d1c7ffb1309c10a4545
4
+ data.tar.gz: d53b5e31652a7b16b3889a3bf6636f2a06ca5ba8
5
5
  SHA512:
6
- metadata.gz: 549c6c25a4e157b3dd463fbae8ab2fea31d26a6ef0eac7c6020acc8a0904ed6c638d4ee29f4bad6e594874686a1c24e3b6ec84fefb0bf6baf0e85381e453f546
7
- data.tar.gz: 0dce9a5cf5bb1afc960d524cf2208e27d79c516c0f00b42596783004de39f2b3d949c66874dba7576e2bfd41768bc21bf850c58e7dba91b873ffca1b0e5e9515
6
+ metadata.gz: 9f782573e7dca61022e7f44c2a34794673473def7c79d20676106387c779e6965a157a29f510f56a396afad5c3838558d59b0e876d2b0e54a38ec60cf2536faf
7
+ data.tar.gz: ddb93469191bbcb33f3ae744fbf463bad8480d863b45631fb43e543a7a1052a7a596baec4fd044396d8508270c5289c3944201ef6ff41d0d9ad0d072a05eb6dd
@@ -1,3 +1,8 @@
1
+ === 2.4.4 / 23.10.2017
2
+
3
+ * Add articles which are only found in the Preparation.xml (e.g. Mutagrid)
4
+ * Correct SwissmedicNo8 when less than 8 chars long
5
+
1
6
  === 2.4.3 / 11.09.2017
2
7
 
3
8
  * Never drop lines with UTF-8 problems while creating XML files
@@ -768,10 +768,28 @@ module Oddb2xml
768
768
  prepare_articles
769
769
  idx = 0
770
770
  nbr_records = 0
771
+ @preparations_only = []
771
772
  Oddb2xml.log "build_article #{idx} of #{@articles.size} articles"
772
773
  _builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |xml|
773
774
  xml.doc.tag_suffix = @tag_suffix
774
775
  datetime = Time.new.strftime('%FT%T%z')
776
+ eans_from_refdata = @articles.collect{|refdata| refdata[:ean] }
777
+ eans_from_preparations = @items.keys
778
+ missing_eans = []
779
+ eans_from_preparations.each do |ean|
780
+ next if ean.to_i == 0
781
+ unless eans_from_refdata.index(ean)
782
+ @preparations_only << ean
783
+ missing_eans << ean
784
+ item = @items[ean].clone
785
+ next if defined?(RSpec) && !item[:pharmacode]
786
+ item[:ean] = ean
787
+ item[:_type] = :preparations_xml
788
+ item[:desc_de] = item[:name_de] + ' ' + item[:desc_de]
789
+ item[:desc_fr] = item[:name_fr] + ' ' + item[:desc_fr]
790
+ @articles << item
791
+ end
792
+ end
775
793
  xml.ARTICLE(XML_OPTIONS) {
776
794
  @articles.sort! { |a,b| a[:ean] <=> b[:ean] }
777
795
  @articles.each do |obj|
@@ -844,9 +862,6 @@ module Oddb2xml
844
862
  xml.BG(flag ? 'Y' : 'N')
845
863
  end
846
864
  #xml.EXP
847
- if item and item[:substances] and substance = item[:substances].first
848
- xml.QTY "#{substance[:quantity]}#{substance[:unit] ? ' ' + substance[:unit] : ''}"
849
- end if false # TODO: get qty/unit from refdata name
850
865
  xml.DSCRD obj[:desc_de] if obj[:desc_de] and not obj[:desc_de].empty?
851
866
  xml.DSCRF obj[:desc_fr] if obj[:desc_fr] and not obj[:desc_fr].empty?
852
867
  xml.DSCRF obj[:desc_de] if !obj[:desc_fr] or obj[:desc_fr].empty?
@@ -953,7 +968,7 @@ module Oddb2xml
953
968
  }
954
969
  }
955
970
  end
956
- Oddb2xml.log "build_article. Done #{idx} of #{@articles.size} articles"
971
+ Oddb2xml.log "build_article. Done #{idx} of #{@articles.size} articles " + ( @preparations_only.size > 0 ? ('. Only in preparations.xml '+ @preparations_only.join(' ')) : '')
957
972
  Oddb2xml.add_hash(_builder.to_xml)
958
973
  end
959
974
  def build_fi
@@ -1108,6 +1123,7 @@ module Oddb2xml
1108
1123
  elsif @items[de_idx[:pharmacode]] # BAG-XML (SL/LS)
1109
1124
  10
1110
1125
  elsif (de_idx[:migel] or # MiGel (xls)
1126
+ de_idx[:_type] == :preparations_xml or
1111
1127
  de_idx[:_type] == :nonpharma) # MiGel (swissindex)
1112
1128
  13
1113
1129
  else
@@ -68,11 +68,21 @@ module Oddb2xml
68
68
  item[:pharmacodes] = []
69
69
  item[:packages] = {} # pharmacode => package
70
70
  seq.Packs.Pack.each do |pac|
71
+ if pac.SwissmedicNo8 && pac.SwissmedicNo8.length < 8
72
+ puts "BagXmlExtractor: Adding leading zeros for SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId} #{item[:name_de]}"
73
+ pac.SwissmedicNo8 = pac.SwissmedicNo8.rjust(8, '0')
74
+ end
71
75
  unless pac.GTIN
72
- puts "BagXmlExtractor: Skipping as missing GTIN in SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId}. Skipping"
73
- next
76
+ unless pac.SwissmedicNo8
77
+ puts "BagXmlExtractor: Skipping as missing GTIN in SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId} #{item[:name_de]}. Skipping"
78
+ else
79
+ ean12 = '7680' + pac.SwissmedicNo8
80
+ pac.GTIN = (ean12 + Oddb2xml.calc_checksum(ean12))
81
+ puts "BagXmlExtractor: Setting missing GTIN #{pac.GTIN} in SwissmedicNo8 #{pac.SwissmedicNo8} BagDossierNo #{pac.BagDossierNo} PackId #{pac.PackId} #{item[:name_de]}."
82
+ end
74
83
  end
75
84
  ean = pac.GTIN.to_i
85
+
76
86
  # packages
77
87
  exf = {:price => '', :valid_date => '', :price_code => ''}
78
88
  if pac.Prices and pac.Prices.ExFactoryPrice
@@ -89,7 +99,7 @@ module Oddb2xml
89
99
  item[:packages][ean] = {
90
100
  :ean => ean,
91
101
  :swissmedic_category => (cat = pac.SwissmedicCategory) ? cat : '',
92
- :swissmedic_number8 => (num = pac.SwissmedicNo8) ? num.rjust(8, '0') : '',
102
+ :swissmedic_number8 => (num = pac.SwissmedicNo8) ? num : '',
93
103
  :prices => { :exf_price => exf, :pub_price => pub },
94
104
  }
95
105
  # related all limitations
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "2.4.3"
2
+ VERSION = "2.4.4"
3
3
  end
@@ -125,7 +125,7 @@ describe Oddb2xml::BagXmlExtractor do
125
125
  expect(with_pharma[:packages].size).to eq(1)
126
126
  expect(with_pharma[:packages].first[0]).to eq(Oddb2xml::THREE_TC_GTIN)
127
127
  expect(with_pharma[:packages].first[1][:prices][:pub_price][:price]).to eq('205.3')
128
- expect(@items.size).to eq(4)
128
+ expect(@items.size).to eq(5)
129
129
  end
130
130
  it "should handle pub_price for 7680620690084 correctly" do
131
131
  @items = subject.to_hash
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.3
4
+ version: 2.4.4
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-09-11 00:00:00.000000000 Z
11
+ date: 2017-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip