oddb2xml 2.4.3 → 2.4.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.txt +5 -0
- data/lib/oddb2xml/builder.rb +20 -4
- data/lib/oddb2xml/extractor.rb +13 -3
- data/lib/oddb2xml/version.rb +1 -1
- data/spec/extractor_spec.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d53eced411a8265a49354d1c7ffb1309c10a4545
|
4
|
+
data.tar.gz: d53b5e31652a7b16b3889a3bf6636f2a06ca5ba8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f782573e7dca61022e7f44c2a34794673473def7c79d20676106387c779e6965a157a29f510f56a396afad5c3838558d59b0e876d2b0e54a38ec60cf2536faf
|
7
|
+
data.tar.gz: ddb93469191bbcb33f3ae744fbf463bad8480d863b45631fb43e543a7a1052a7a596baec4fd044396d8508270c5289c3944201ef6ff41d0d9ad0d072a05eb6dd
|
data/History.txt
CHANGED
data/lib/oddb2xml/builder.rb
CHANGED
@@ -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
|
data/lib/oddb2xml/extractor.rb
CHANGED
@@ -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
|
-
|
73
|
-
|
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
|
102
|
+
:swissmedic_number8 => (num = pac.SwissmedicNo8) ? num : '',
|
93
103
|
:prices => { :exf_price => exf, :pub_price => pub },
|
94
104
|
}
|
95
105
|
# related all limitations
|
data/lib/oddb2xml/version.rb
CHANGED
data/spec/extractor_spec.rb
CHANGED
@@ -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(
|
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.
|
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-
|
11
|
+
date: 2017-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|