oddb2xml 2.3.7 → 2.3.8

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: f372d02cc0e7829efac3ae2dfda2f85f031d78f6
4
- data.tar.gz: a5ef791e8e1e3afc811c823b2d407bdcbf3a8e26
3
+ metadata.gz: c0df0b68570a06023f0f84f78759eba514f5a4b2
4
+ data.tar.gz: 484b181df37c6813c3c62ea6feeb429dee57aa55
5
5
  SHA512:
6
- metadata.gz: a443f4fce853675f60aeddad4044a862e341597be1d3d1554f5f7dccb73ada07ed15aff04261e0adda1f86ab6154c580efd270e816d852dc1bb4173331b96678
7
- data.tar.gz: bb8c5bebdb782b2f62aa976e57bc6880f1fbda0c58cea16b274fb5b634c100e25facc3a88169e2ef3138abbd383956d1073b3ca215964623c53318b432af5995
6
+ metadata.gz: c79037072f934cba4a8910756dacf0984dd62d4f059572b50346ab3d0475377452e9c5cafb14f8961b9a88706c9a66d42ff44ef720af16d5d2ce8c7d1f7cb844
7
+ data.tar.gz: 6f444c348ee935c90d54331ebcdd8736354e00ca9e7aebc5adea2e81f8733c39db1e275001539139d8f03442c57ad75d49009e649903040a00f70275589faeea
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oddb2xml (2.3.7)
4
+ oddb2xml (2.3.8)
5
5
  archive-tar-minitar
6
6
  httpi (>= 2.4.1)
7
7
  mechanize
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 2.3.8 /19.04.2016
2
+
3
+ * DSCRD/DSCRD for article/product must be between 3 and 120 chars long
4
+
1
5
  === 2.3.7 /4.04.2016
2
6
 
3
7
  * Emit version of oddb2xml which generated the XML-file
data/README.md CHANGED
@@ -43,6 +43,8 @@ Consumers of the data file may use it to check whether they have to replace the
43
43
 
44
44
  ## usage
45
45
 
46
+ HIN (http://hin.ch) creates daily the actual file. They can be downloaded from `https://download.hin.ch/download/oddb2xml`, e.g. using `wget https://download.hin.ch/download/oddb2xml/oddb_article.xml`
47
+
46
48
  see `--help`.
47
49
 
48
50
  ```
@@ -454,6 +454,19 @@ module Oddb2xml
454
454
  end
455
455
 
456
456
  def build_product
457
+ def check_name(obj, lang = :de)
458
+ ean = obj[:ean].to_i
459
+ refdata = @refdata[ean]
460
+ if lang == :de
461
+ name = (refdata && refdata[:desc_de]) ? refdata[:desc_de] : obj[:sequence_name]
462
+ elsif lang == :fr
463
+ name = (refdata && refdata[:desc_fr]) ? refdata[:desc_fr] : obj[:sequence_name]
464
+ else
465
+ return false
466
+ end
467
+ return false if !name || name.empty? || name.length < 3
468
+ name
469
+ end
457
470
  prepare_substances
458
471
  prepare_products
459
472
  prepare_interactions
@@ -468,6 +481,9 @@ module Oddb2xml
468
481
  xml.PRODUCT(XML_OPTIONS) {
469
482
  list = []
470
483
  @missing.each do |obj|
484
+ ean = obj[:ean].to_i
485
+ next unless check_name(obj, :de)
486
+ next unless check_name(obj, :fr)
471
487
  next if /^Q/i.match(obj[:atc])
472
488
  if obj[:prodno]
473
489
  next if emitted.index(obj[:prodno])
@@ -475,16 +491,10 @@ module Oddb2xml
475
491
  end
476
492
  xml.PRD('DT' => obj[:last_change]) {
477
493
  nbr_products += 1
478
- ean = obj[:ean].to_i
479
494
  xml.GTIN ean
480
495
  xml.PRODNO obj[:prodno] if obj[:prodno]
481
- if refdata = @refdata[ean]
482
- xml.DSCRD refdata[:desc_de]
483
- xml.DSCRF refdata[:desc_fr]
484
- else
485
- xml.DSCRD obj[:sequence_name] if obj[:sequence_name]
486
- xml.DSCRF obj[:sequence_name] if obj[:sequence_name]
487
- end
496
+ xml.DSCRD check_name(obj, :de)
497
+ xml.DSCRF check_name(obj, :fr)
488
498
  xml.ATC obj[:atc_code] if obj[:atc_code] and !obj[:atc_code].empty?
489
499
  xml.IT obj[:ith_swissmedic] if obj[:ith_swissmedic]
490
500
  xml.CPT
@@ -498,22 +508,19 @@ module Oddb2xml
498
508
  @products.each do |ean13, obj|
499
509
  next if /^Q/i.match(obj[:atc])
500
510
  seq = obj[:seq]
511
+ ean = obj[:ean]
512
+ next unless check_name(obj, :de)
513
+ next unless check_name(obj, :fr)
501
514
  xml.PRD('DT' => obj[:last_change]) do
502
515
  nbr_products += 1
503
- ean = obj[:ean]
504
516
  xml.GTIN ean
505
517
  ppac = ((_ppac = @packs[ean.to_s[4..11].intern] and !_ppac[:is_tier]) ? _ppac : {})
506
518
  unless ppac
507
519
  ppac = @packs.find{|pac| pac.ean == ean }.first
508
520
  end
509
521
  xml.PRODNO ppac[:prodno] if ppac[:prodno] and !ppac[:prodno].empty?
510
- if refdata = @refdata[ean]
511
- xml.DSCRD refdata[:desc_de]
512
- xml.DSCRF refdata[:desc_fr]
513
- else
514
- xml.DSCRD obj[:sequence_name] if obj[:sequence_name]
515
- xml.DSCRF obj[:sequence_name] if obj[:sequence_name]
516
- end
522
+ xml.DSCRD check_name(obj, :de)
523
+ xml.DSCRF check_name(obj, :fr)
517
524
  #xml.BNAMD
518
525
  #xml.BNAMF
519
526
  #xml.ADNAMD
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "2.3.7"
2
+ VERSION = "2.3.8"
3
3
  end
data/oddb2xml.xsd CHANGED
@@ -105,6 +105,25 @@
105
105
  <xs:attribute name="GENERATED_BY" use="required"/>
106
106
  </xs:complexType>
107
107
  </xs:element>
108
+
109
+ <xs:element name="DSCRD">
110
+ <xs:simpleType>
111
+ <xs:restriction base="xs:string">
112
+ <xs:minLength value="3" />
113
+ <xs:maxLength value="120" />
114
+ </xs:restriction>
115
+ </xs:simpleType>
116
+ </xs:element>
117
+
118
+ <xs:element name="DSCRF">
119
+ <xs:simpleType>
120
+ <xs:restriction base="xs:string">
121
+ <xs:minLength value="3" />
122
+ <xs:maxLength value="120" />
123
+ </xs:restriction>
124
+ </xs:simpleType>
125
+ </xs:element>
126
+
108
127
  <xs:element name="ART">
109
128
  <xs:complexType>
110
129
  <xs:sequence>
@@ -696,8 +715,8 @@
696
715
  <xs:element ref="ns1:LIMVAL"/>
697
716
  <xs:element ref="ns1:LIMNAMEBAG"/>
698
717
  <xs:element ref="ns1:LIMNIV"/>
699
- <xs:element ref="ns1:DSCRD"/>
700
- <xs:element ref="ns1:DSCRF"/>
718
+ <xs:element name="DSCRD" type="xs:string"/>
719
+ <xs:element name="DSCRF" type="xs:string"/>
701
720
  <xs:element ref="ns1:VDAT"/>
702
721
  </xs:sequence>
703
722
  <xs:attribute name="DT" use="required"/>
@@ -754,8 +773,8 @@
754
773
  <xs:element ref="ns1:LIMVALMD"/>
755
774
  <xs:element ref="ns1:LIMNAMEBAGMD"/>
756
775
  <xs:element ref="ns1:LIMNIVMD"/>
757
- <xs:element ref="ns1:DSCRDMD"/>
758
- <xs:element ref="ns1:DSCRFMD"/>
776
+ <xs:element name="DSCRDMD" type="xs:string"/>
777
+ <xs:element name="DSCRFMD" type="xs:string"/>
759
778
  <xs:element ref="ns1:VDATMD"/>
760
779
  </xs:sequence>
761
780
  <xs:attribute name="DT" use="required"/>
@@ -1040,8 +1059,6 @@
1040
1059
  </xs:restriction>
1041
1060
  </xs:simpleType>
1042
1061
  </xs:element>
1043
- <xs:element name="DSCRD" type="xs:string"/>
1044
- <xs:element name="DSCRF" type="xs:string"/>
1045
1062
  <xs:element name="IT" type="xs:string"/>
1046
1063
  <xs:element name="SUBNO" type="xs:integer"/>
1047
1064
  <xs:element name="QTY" type="xs:string"/>
data/spec/builder_spec.rb CHANGED
@@ -310,7 +310,7 @@ def check_validation_via_xsd
310
310
  if error.message
311
311
  puts "Failed validating #{file} with #{File.size(file)} bytes using XSD from #{@oddb2xml_xsd}"
312
312
  end
313
- expect(error.message).to be_nil
313
+ expect(error.message).to be_nil, "expected #{error.message} to be nil\nfor #{file} content \n#{File.read(file)}"
314
314
  end
315
315
  }
316
316
  end
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.3.7
4
+ version: 2.3.8
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: 2016-04-04 00:00:00.000000000 Z
11
+ date: 2016-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip