oddb2xml 1.8.4 → 1.8.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oddb2xml (1.8.4)
4
+ oddb2xml (1.8.5)
5
5
  archive-tar-minitar (~> 0.5.2)
6
6
  mechanize (~> 2.5.1)
7
7
  nokogiri (~> 1.5.10)
@@ -1,3 +1,7 @@
1
+ === 1.8.5 / 04.06.2014
2
+
3
+ * Added element REF_DATA when generating oddb_article.xml.
4
+
1
5
  === 1.8.4 / 21.05.2014
2
6
 
3
7
  * Don't emit "ad us vet" or marked in Packungen.xls as "Tierarzneimittel"
@@ -337,9 +337,6 @@ module Oddb2xml
337
337
  end
338
338
  _builder.to_xml
339
339
  end
340
- def xml_and_comment(xml, *args, &block)
341
- $stderr.puts "xml_and_comment #{args[0]}"
342
- end
343
340
  def build_interaction
344
341
  prepare_interactions
345
342
  prepare_codes
@@ -612,9 +609,10 @@ module Oddb2xml
612
609
  if !@prices.empty? && ean && @prices[ean]
613
610
  price = @prices[ean] # zurrose
614
611
  end
615
- xml.ART('DT' => '') {
616
- xml.PHAR de_idx[:pharmacode] unless de_idx[:pharmacode].empty?
617
- #xml.GRPCD
612
+ xml.ART('DT' => '') {
613
+ xml.REF_DATA (de_idx[:refdata] || @migel[pharma_code]) ? '1' : '0'
614
+ xml.PHAR de_idx[:pharmacode] unless de_idx[:pharmacode].empty?
615
+ #xml.GRPCD
618
616
  #xml.CDS01
619
617
  #xml.CDS02
620
618
  if ppac
@@ -49,6 +49,7 @@ module Oddb2xml
49
49
  result = PreparationsEntry.parse(@xml.sub(Strip_For_Sax_Machine, ''), :lazy => true)
50
50
  result.Preparations.Preparation.each do |seq|
51
51
  item = {}
52
+ item[:refdata] = true
52
53
  item[:product_key] = seq.ProductCommercial
53
54
  item[:desc_de] = (desc = seq.DescriptionDe) ? desc : ''
54
55
  item[:desc_fr] = (desc = seq.DescriptionFr) ? desc : ''
@@ -188,6 +189,7 @@ module Oddb2xml
188
189
  items = result.PHARMA.ITEM
189
190
  items.each do |pac|
190
191
  item = {}
192
+ item[:refdata] = true
191
193
  item[:_type] = @type.downcase.intern
192
194
  item[:ean] = (gtin = pac.GTIN) ? gtin: ''
193
195
  item[:pharmacode] = (phar = pac.PHAR) ? phar: ''
@@ -333,6 +335,7 @@ module Oddb2xml
333
335
  next if i.zero?
334
336
  phar = correct_code(row[1].to_s.gsub(/[^0-9]/, ''), 7)
335
337
  data[phar] = {
338
+ :refdata => true,
336
339
  :ean => row[0].to_i.to_s,
337
340
  :pharmacode => phar,
338
341
  :desc_de => row[3],
@@ -355,6 +358,7 @@ module Oddb2xml
355
358
  lang = pac.lang.to_s
356
359
  next unless lang =~ /de|fr/
357
360
  item = {}
361
+ item[:refdata] = true,
358
362
  item[:name] = (name = pac.title) ? name : ''
359
363
  item[:owner] = (ownr = pac.authHolder) ? ownr : ''
360
364
  if content = /cdata/.match(pac.content)
@@ -500,9 +504,6 @@ module Oddb2xml
500
504
  :pub_price => sprintf("%.2f", line[66,6].gsub(/(\d{2})$/, '.\1').to_f),
501
505
  :type => :nonpharma,
502
506
  }
503
- if /5366964/.match(ean13) then
504
- Oddb2xml.log "found 5366964 data is now #{data[ean13].inspect}"
505
- end
506
507
  @@zur_rose_items += 1
507
508
  end if @io
508
509
  data
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "1.8.4"
2
+ VERSION = "1.8.5"
3
3
  end
@@ -42,6 +42,7 @@
42
42
  PEXF Price Ex-Factory (exkl. VAT): Taken from the ZurRose.dat characters 60..65
43
43
  PPUB Public Price (inkl. VAT): Taken from the ZurRose.dat characters 66..71
44
44
  SLOPLUS Selbsbehalt/deductilbe, where 1 => 20%, 2 => 10%, '' => not known
45
+ REF_DATA 1 in oddb_article if coming from a refdata source (migel, bag, swissmedic), else 0
45
46
 
46
47
  FIRST import all data from swissINDEX
47
48
  * GTIN
@@ -94,6 +95,14 @@
94
95
  <xs:element name="ART">
95
96
  <xs:complexType>
96
97
  <xs:sequence>
98
+ <xs:element name="REF_DATA">
99
+ <xs:simpleType>
100
+ <xs:restriction base="xs:byte">
101
+ <xs:enumeration value="1" />
102
+ <xs:enumeration value="0" />
103
+ </xs:restriction>
104
+ </xs:simpleType>
105
+ </xs:element>
97
106
  <xs:element ref="ns1:PHAR"/>
98
107
  <xs:element minOccurs="0" ref="ns1:SMCAT"/>
99
108
  <xs:element minOccurs="0" ref="ns1:SMNO"/>
@@ -31,7 +31,7 @@ def check_validation_via_xsd
31
31
  end
32
32
 
33
33
  describe Oddb2xml::Builder do
34
- NrExtendedArticles = 71
34
+ NrExtendedArticles = 70
35
35
  NrPharmaAndNonPharmaArticles = 61
36
36
  NrPharmaArticles = 4
37
37
  include ServerMockHelper
@@ -45,7 +45,6 @@ describe Oddb2xml::Builder do
45
45
  after(:each) do
46
46
  Dir.chdir @savedDir if @savedDir and File.directory?(@savedDir)
47
47
  end
48
-
49
48
  context 'XSD-generation: ' do
50
49
  let(:cli) do
51
50
  opts = {}
@@ -140,7 +139,6 @@ describe Oddb2xml::Builder do
140
139
  end
141
140
  it "pending should match EAN of Desitin. returns 0 at the moment"
142
141
  end
143
-
144
142
  context 'when option -e is given' do
145
143
  let(:cli) do
146
144
  opts = {
@@ -153,6 +151,30 @@ describe Oddb2xml::Builder do
153
151
  Oddb2xml::Cli.new(opts)
154
152
  end
155
153
 
154
+ def checkItemForRefdata(doc, pharmacode, isRefdata)
155
+ article = XPath.match( doc, "//ART[PHAR=#{pharmacode.to_s}]").first
156
+ name = article.elements['DSCRD'].text
157
+ refdata = article.elements['REF_DATA'].text
158
+ smno = article.elements['SMNO'] ? article.elements['SMNO'].text : 'nil'
159
+ puts "checking doc for pharmacode #{pharmacode} isRefdata #{isRefdata} == #{refdata}. SMNO: #{smno} #{name}" if $VERBOSE
160
+ article.elements['REF_DATA'].text.should == isRefdata.to_s
161
+ end
162
+
163
+ it 'should generate the flag non-refdata' do
164
+ res = buildr_capture(:stdout){ cli.run }
165
+ @article_xml = File.expand_path(File.join(Oddb2xml::WorkDir, 'oddb_article.xml'))
166
+ puts @article_xml
167
+ File.exists?(@article_xml).should be_true
168
+ FileUtils.cp(@article_xml, '/opt/src/oddb2xml/tst.xml', :verbose => true)
169
+ article_xml = IO.read(@article_xml)
170
+ doc = REXML::Document.new File.new(@article_xml)
171
+ XPath.match( doc, "//REF_DATA" ).size.should > 0
172
+ checkItemForRefdata(doc, "1699947", 1) # 3TC Filmtabl 150 mg SMNO 53662013 IKSNR 53‘662, 53‘663
173
+ checkItemForRefdata(doc, "0028470", 0) # Complamin
174
+ checkItemForRefdata(doc, "3036984", 1) # NovoPen 4 Injektionsgerät blue In NonPharma (a MiGel product)
175
+ checkItemForRefdata(doc, "5366964", 1) # 1-DAY ACUVUE moist jour
176
+ end
177
+
156
178
  it 'should pass validating via oddb2xml.xsd' do
157
179
  check_validation_via_xsd
158
180
  end
@@ -1,7 +1,6 @@
1
1
  1122465312ZYVOXID Filmtabl 600 mg 10 Stk 096114108275100A080190076805555800542
2
2
  1120020209ERYTRHOCIN I.V. Trockensub Fl 1g 001518002010300B080160000000000000002
3
3
  1120020244FERRO-GRADUMET Depottabl 30 Stk 000895001090300C060710076803164401152
4
- 1120020273KENDURAL Depottabl 30 Stk 000492000840100C060710076803536601632
5
4
  1130020646SELSUN Shampoo Susp 60 ml 000911001650300D100400076801723304142
6
5
  1120020652SELSUN Shampoo Susp 120 ml 001576002520300D100400076801723306812
7
6
  1130021806EAU PRECIEUSE D?pensier L?s 375 ml 001220001870300D100600000000000000002
@@ -14,3 +13,5 @@
14
13
  1122871443CANIPHEDRIN Tabl 20 mg ad us vet. 500 Stk 004872006910400C000000000000000000002
15
14
  1122871466CANIPHEDRIN Tabl 50 mg ad us vet. 100 Stk 001424001750400C000000076804706604282
16
15
  1122871472CANIPHEDRIN Tabl 50 mg ad us vet. 500 Stk 005443007580400C000000000000000000002
16
+ 1132867163TOTALIN Plv ad us. vet. 5 kg 000535000900400C000000000000000000002
17
+ 1138110429Forthyron 400 mcg 50 Tabl (vet) 0081120015800000000000000000000000002
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oddb2xml
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.4
4
+ version: 1.8.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-05-21 00:00:00.000000000 Z
12
+ date: 2014-06-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubyzip