oddb2xml 2.7.8 → 2.7.9

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
  SHA256:
3
- metadata.gz: 23dea260483ed3a99e62764331bf43924c5f095855e06c13b76d6d37e5f8d13a
4
- data.tar.gz: ae24f986d8853676f62e41d2de071bece17540c5237d418ba14662708baf9057
3
+ metadata.gz: 3f177caa4764f9d7a9a9b165e936a9d2474fcab1f2f165ec757f9acad0c331eb
4
+ data.tar.gz: ca338ae5867dde260218865926b38eb7529d0dac9675aeff230f576ec7023cc0
5
5
  SHA512:
6
- metadata.gz: c5b46f3ba07e2ee63e9021b0e7cef091f2c98daca82a724a15c3819ca9e91f6504a2ff0e61ba4bbd03621cd4fcffe95d4b1596af1354e841cb9c35de818ce8fd
7
- data.tar.gz: b76c38273ec98bae15054df8b685025a569c947d16e487daf6d393efeca0592cc506b24618776db7ee7a5b09f4d3bccc47db3ef576da446470b02d996838fee8
6
+ metadata.gz: 793bc30149238fdfb22dc990fee57dc6913d3fa825fa2647ebcd0aee82264287f006765d082256c02215d37337efd8218ebaf9fed8297d5beb0f94d7ffb7ff2d
7
+ data.tar.gz: 230acb26a3931afa47be553a740095d2b5d352143d3304985eb4b80f532bc254c225f535ca575be2219ffa15193cdb09cf7bb2ad3d5311d9957dbf056f20c7ae
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 2.7.9 / 19.09.22
2
+ * Remove newly generated DSCRI when not running --artikelstamm and
3
+ generate always (as before 2.7.8) a DSCRF fiele
4
+
1
5
  === 2.7.8 / 14.09.22
2
6
  * Add fields for french and italian in artikelstamm whenever possible
3
7
 
@@ -378,7 +378,6 @@ module Oddb2xml
378
378
  xml.LIMNIV lim[:niv]
379
379
  xml.DSCRD lim[:desc_de]
380
380
  xml.DSCRF lim[:desc_fr]
381
- xml.DSCRI lim[:desc_it]
382
381
  xml.VDAT lim[:vdate]
383
382
  nbr_records += 1
384
383
  end
@@ -536,7 +535,7 @@ module Oddb2xml
536
535
  if lang == :de
537
536
  name = refdata && refdata[:desc_de] ? refdata[:desc_de] : obj[:sequence_name]
538
537
  elsif lang == :fr
539
- name = refdata[:desc_fr] if refdata && refdata[:desc_fr]
538
+ name = refdata && refdata[:desc_fr] ? refdata[:desc_fr] : obj[:sequence_name]
540
539
  elsif lang == :it
541
540
  name = refdata[:desc_it] if refdata && refdata[:desc_it]
542
541
  else
@@ -560,7 +559,7 @@ module Oddb2xml
560
559
  @missing.each do |obj|
561
560
  ean = obj[:ean13]
562
561
  next unless check_name(obj, :de)
563
- # next unless check_name(obj, :fr)
562
+ next unless check_name(obj, :fr)
564
563
  next if /^Q/i.match?(obj[:atc])
565
564
  if obj[:prodno]
566
565
  next if emitted.index(obj[:prodno])
@@ -572,9 +571,6 @@ module Oddb2xml
572
571
  xml.PRODNO obj[:prodno] if obj[:prodno]
573
572
  xml.DSCRD check_name(obj, :de)
574
573
  xml.DSCRF check_name(obj, :fr) if check_name(obj, :fr)
575
- binding.pry if check_name(obj, :de) && check_name(obj, :de).eql?('Varilrix Trockensub c solv')
576
-
577
- xml.DSCRI check_name(obj, :it) if check_name(obj, :it)
578
574
  xml.ATC obj[:atc_code] unless obj[:atc_code].empty?
579
575
  xml.IT obj[:ith_swissmedic] if obj[:ith_swissmedic]
580
576
  xml.CPT
@@ -598,7 +594,6 @@ module Oddb2xml
598
594
  xml.PRODNO ppac[:prodno] if ppac[:prodno] && !ppac[:prodno].empty?
599
595
  xml.DSCRD check_name(obj, :de)
600
596
  xml.DSCRF check_name(obj, :fr)
601
- xml.DSCRI check_name(obj, :it)
602
597
  # xml.BNAMD
603
598
  # xml.BNAMF
604
599
  # xml.ADNAMD
@@ -952,10 +947,10 @@ module Oddb2xml
952
947
  end
953
948
  xml.DSCRD obj[:desc_de] if obj[:desc_de] && !obj[:desc_de].empty?
954
949
  xml.DSCRF obj[:desc_fr] if obj[:desc_fr] && !obj[:desc_fr].empty?
955
- xml.DSCRI obj[:desc_it] if obj[:desc_it] && !obj[:desc_it].empty?
950
+ xml.DSCRF obj[:desc_de] if !obj[:desc_fr] || obj[:desc_fr].empty?
956
951
  xml.SORTD obj[:desc_de].upcase if obj[:desc_de] && !obj[:desc_de].empty?
957
952
  xml.SORTF obj[:desc_fr].upcase if obj[:desc_fr] && !obj[:desc_fr].empty?
958
- xml.SORTI obj[:desc_it].upcase if obj[:desc_it] && !obj[:desc_it].empty?
953
+ xml.SORTF obj[:desc_de].upcase if !obj[:desc_fr] || obj[:desc_fr].empty?
959
954
  # xml.QTYUD
960
955
  # xml.QTYUF
961
956
  # xml.IMG
@@ -966,7 +961,6 @@ module Oddb2xml
966
961
  if obj[:seq]
967
962
  xml.SYN1D obj[:seq][:name_de] unless obj[:seq][:name_de].empty?
968
963
  xml.SYN1F obj[:seq][:name_fr] unless obj[:seq][:name_fr].empty?
969
- xml.SYN1I obj[:seq][:name_it] unless obj[:seq][:name_it].empty?
970
964
  end
971
965
  if obj[:seq]
972
966
  case obj[:seq][:deductible]
@@ -430,6 +430,7 @@ class ParseComposition
430
430
  ast = transf.apply(parser.parse(cleaned))
431
431
  end
432
432
  rescue Parslet::ParseFailed => error
433
+ @@error_handler.nrParsingErrors ||= 0
433
434
  @@error_handler.nrParsingErrors += 1
434
435
  puts "#{File.basename(__FILE__)}:#{__LINE__}: failed parsing ==> #{cleaned} #{error}"
435
436
  return nil
@@ -495,6 +496,7 @@ class ParseGalenicForm
495
496
  ast = transf.apply(parser.parse(string))
496
497
  end
497
498
  rescue Parslet::ParseFailed => error
499
+ @@error_handler.nrParsingErrors ||= 0
498
500
  @@error_handler.nrParsingErrors += 1
499
501
  puts "#{File.basename(__FILE__)}:#{__LINE__}: failed parsing ==> #{string} #{error}"
500
502
  return nil
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "2.7.8"
2
+ VERSION = "2.7.9"
3
3
  end
data/oddb2xml.xsd CHANGED
@@ -48,7 +48,6 @@
48
48
  FIRST import all data from swissINDEX
49
49
  * DSCRD German name
50
50
  * DSCRF French name (Products/article only from ZurRose do not have a french name)
51
- * DSCRI Italian name (Products/article only from ZurRose do not have a french name)
52
51
  * GTIN
53
52
  GTIN may be 8, 12, 13 or 14 chars long (https://en.wikipedia.org/wiki/Global_Trade_Item_Number)
54
53
  The EAN-8 code is an eight-digit barcode used usually for very small articles, such as a battery for hearing aid, where fitting a larger code onto the item would be difficult
@@ -129,15 +128,6 @@
129
128
  </xs:simpleType>
130
129
  </xs:element>
131
130
 
132
- <xs:element name="DSCRI">
133
- <xs:simpleType>
134
- <xs:restriction base="xs:string">
135
- <xs:minLength value="3" />
136
- <xs:maxLength value="120" />
137
- </xs:restriction>
138
- </xs:simpleType>
139
- </xs:element>
140
-
141
131
  <xs:element name="ART">
142
132
  <xs:complexType>
143
133
  <xs:sequence>
@@ -167,15 +157,12 @@
167
157
  <xs:element ref="ns1:BG"/>
168
158
  </xs:sequence>
169
159
  <xs:element ref="ns1:DSCRD"/>
170
- <xs:element ref="ns1:DSCRF" minOccurs="0" />
171
- <xs:element ref="ns1:DSCRI" minOccurs="0"/>
160
+ <xs:element ref="ns1:DSCRF"/>
172
161
  <xs:element ref="ns1:SORTD"/>
173
- <xs:element ref="ns1:SORTF" minOccurs="0"/>
174
- <xs:element ref="ns1:SORTI" minOccurs="0"/>
162
+ <xs:element ref="ns1:SORTF"/>
175
163
  <xs:sequence minOccurs="0">
176
164
  <xs:element ref="ns1:SYN1D"/>
177
165
  <xs:element ref="ns1:SYN1F"/>
178
- <xs:element ref="ns1:SYN1I"/>
179
166
  <xs:element ref="ns1:SLOPLUS"/>
180
167
  </xs:sequence>
181
168
  <xs:element ref="ns1:ARTCOMP"/>
@@ -258,10 +245,8 @@
258
245
  </xs:element>
259
246
  <xs:element name="SORTD" type="xs:string"/>
260
247
  <xs:element name="SORTF" type="xs:string"/>
261
- <xs:element name="SORTI" type="xs:string"/>
262
248
  <xs:element name="SYN1D" type="xs:string"/>
263
249
  <xs:element name="SYN1F" type="xs:string"/>
264
- <xs:element name="SYN1I" type="xs:string"/>
265
250
  <xs:element name="SLOPLUS">
266
251
  <xs:simpleType>
267
252
  <xs:restriction base="xs:byte">
@@ -361,10 +346,8 @@
361
346
  <xs:element ref="ns1:QTYMD"/>
362
347
  <xs:element ref="ns1:DSCRDMD"/>
363
348
  <xs:element ref="ns1:DSCRFMD"/>
364
- <xs:element ref="ns1:DSCRIMD"/>
365
349
  <xs:element ref="ns1:SORTDMD"/>
366
350
  <xs:element ref="ns1:SORTFMD"/>
367
- <xs:element ref="ns1:SORTIMD"/>
368
351
  <xs:sequence minOccurs="0">
369
352
  <xs:element ref="ns1:SYN1DMD"/>
370
353
  <xs:element ref="ns1:SYN1FMD"/>
@@ -416,10 +399,8 @@
416
399
  </xs:element>
417
400
  <xs:element name="SORTDMD" type="xs:string"/>
418
401
  <xs:element name="SORTFMD" type="xs:string"/>
419
- <xs:element name="SORTIMD" type="xs:string"/>
420
402
  <xs:element name="SYN1DMD" type="xs:string"/>
421
403
  <xs:element name="SYN1FMD" type="xs:string"/>
422
- <xs:element name="SYN1IMD" type="xs:string"/>
423
404
  <xs:element name="SLOPLUSMD">
424
405
  <xs:simpleType>
425
406
  <xs:restriction base="xs:byte">
@@ -741,7 +722,6 @@
741
722
  <xs:element ref="ns1:LIMNIV"/>
742
723
  <xs:element name="DSCRD" type="xs:string"/>
743
724
  <xs:element name="DSCRF" type="xs:string"/>
744
- <xs:element name="DSCRI" type="xs:string"/>
745
725
  <xs:element ref="ns1:VDAT"/>
746
726
  </xs:sequence>
747
727
  <xs:attribute name="DT" use="required"/>
@@ -800,7 +780,6 @@
800
780
  <xs:element ref="ns1:LIMNIVMD"/>
801
781
  <xs:element name="DSCRDMD" type="xs:string"/>
802
782
  <xs:element name="DSCRFMD" type="xs:string"/>
803
- <xs:element name="DSCRIMD" type="xs:string"/>
804
783
  <xs:element ref="ns1:VDATMD"/>
805
784
  </xs:sequence>
806
785
  <xs:attribute name="DT" use="required"/>
@@ -865,8 +844,7 @@
865
844
  <xs:element minOccurs="0" ref="ns1:PRODNO"/>
866
845
  <xs:sequence minOccurs="0">
867
846
  <xs:element ref="ns1:DSCRD"/>
868
- <xs:element ref="ns1:DSCRF" minOccurs="0"/>
869
- <xs:element ref="ns1:DSCRI" minOccurs="0"/>
847
+ <xs:element ref="ns1:DSCRF"/>
870
848
  </xs:sequence>
871
849
  <xs:element minOccurs="0" ref="ns1:ADINFD"/>
872
850
  <xs:element minOccurs="0" ref="ns1:ADINFF"/>
@@ -942,7 +920,6 @@
942
920
  <xs:sequence minOccurs="0">
943
921
  <xs:element ref="ns1:DSCRDMD"/>
944
922
  <xs:element ref="ns1:DSCRFMD"/>
945
- <xs:element ref="ns1:DSCRIMD"/>
946
923
  </xs:sequence>
947
924
  <xs:element minOccurs="0" ref="ns1:ADINFDMD"/>
948
925
  <xs:element minOccurs="0" ref="ns1:ADINFFMD"/>
@@ -1111,7 +1088,6 @@
1111
1088
  <xs:element name="ITMD" type="xs:string"/>
1112
1089
  <xs:element name="DSCRDMD" type="xs:string"/>
1113
1090
  <xs:element name="DSCRFMD" type="xs:string"/>
1114
- <xs:element name="DSCRIMD" type="xs:string"/>
1115
1091
  <xs:element name="VDATMD" type="xs:NMTOKEN"/>
1116
1092
  <xs:element name="RESULTMD">
1117
1093
  <xs:complexType>
data/shell.nix CHANGED
@@ -4,9 +4,9 @@ with import <nixpkgs> {};
4
4
  stdenv.mkDerivation {
5
5
  name = "env";
6
6
  buildInputs = [
7
- ruby_3_0
7
+ ruby_3_1
8
8
  rubyPackages_3_0.safe_yaml
9
- ruby_3_0.devEnv
9
+ ruby_3_1.devEnv
10
10
  git
11
11
  python
12
12
  libpcap
@@ -11,7 +11,7 @@ describe Oddb2xml::Builder do
11
11
  expect(@inhalt).not_to be nil
12
12
  unless @inhalt.index(expected_value)
13
13
  puts expected_value
14
- binding.pry # TODO: Must not be active in production!!
14
+ # binding.pry # TODO: Must not be active in production!!
15
15
  end
16
16
  expect(@inhalt.index(expected_value)).not_to be nil
17
17
  end
data/spec/builder_spec.rb CHANGED
@@ -35,7 +35,7 @@ ARTICLE_ZURROSE_ELEMENTS = [
35
35
  ["ARTICLE/ART/ARTINS/NINCD", "20"]
36
36
  ]
37
37
 
38
- ARTICLE_NAROPIN = %( <REF_DATA>1</REF_DATA>
38
+ ARTICLE_NAROPIN = %(<REF_DATA>1</REF_DATA>
39
39
  <SMCAT>B</SMCAT>
40
40
  <SMNO>54015011</SMNO>
41
41
  <PRODNO>5401501</PRODNO>
@@ -44,10 +44,8 @@ ARTICLE_NAROPIN = %( <REF_DATA>1</REF_DATA>
44
44
  <BG>N</BG>
45
45
  <DSCRD>NAROPIN Inj Lös 0.2 % 10ml Duofit Amp 5 Stk</DSCRD>
46
46
  <DSCRF>NAROPIN sol inj 0.2 % 10ml amp duofit 5 pce</DSCRF>
47
- <DSCRI>NAROPIN Inj Lös 0.2 % 10ml Duofit Amp 5 Stk</DSCRI>
48
47
  <SORTD>NAROPIN INJ LÖS 0.2 % 10ML DUOFIT AMP 5 STK</SORTD>
49
48
  <SORTF>NAROPIN SOL INJ 0.2 % 10ML AMP DUOFIT 5 PCE</SORTF>
50
- <SORTI>NAROPIN INJ LÖS 0.2 % 10ML DUOFIT AMP 5 STK</SORTI>
51
49
  <ARTCOMP>
52
50
  <COMPNO>7601001402539</COMPNO>
53
51
  </ARTCOMP>
@@ -56,8 +54,7 @@ ARTICLE_NAROPIN = %( <REF_DATA>1</REF_DATA>
56
54
  <BC>7680540150118</BC>
57
55
  <BCSTAT>A</BCSTAT>
58
56
  </ARTBAR>
59
- </ART>
60
- )
57
+ </ART>)
61
58
 
62
59
  ARTICLE_COMMON_ELEMENTS = [
63
60
  ["ARTICLE/ART/REF_DATA", "1"],
@@ -571,10 +568,11 @@ describe Oddb2xml::Builder do
571
568
 
572
569
  it "should generate ATC for 7680002770014" do
573
570
  oddb_product_xml = IO.read(File.join(Oddb2xml::WORK_DIR, "oddb_product.xml"))
574
- text = %(<GTIN>7680002770021</GTIN>
571
+ text = %(<GTIN>7680002770014</GTIN>
575
572
  <PRODNO>0027701</PRODNO>
576
- <DSCRD>Coeur-Vaisseaux Sérocytol, suppositoire</DSCRD>
577
- <ATC>J06AA</ATC>
573
+ <DSCRD>SEROCYTOL Herz-Gefässe Supp 3 Stk</DSCRD>
574
+ <DSCRF>SEROCYTOL Coeur-Vaisseaux supp 3 pce</DSCRF>
575
+ <ATC>J06AA99</ATC>
578
576
  <IT>08.07.</IT>
579
577
  <CPT/>)
580
578
  expect(oddb_product_xml.index(text)).to be >= 1
@@ -585,6 +583,7 @@ describe Oddb2xml::Builder do
585
583
  text2 = %( <GTIN>7680002770021</GTIN>
586
584
  <PRODNO>0027701</PRODNO>
587
585
  <DSCRD>Coeur-Vaisseaux Sérocytol, suppositoire</DSCRD>
586
+ <DSCRF>Coeur-Vaisseaux Sérocytol, suppositoire</DSCRF>
588
587
  <ATC>J06AA</ATC>
589
588
  <IT>08.07.</IT>
590
589
  <CPT/>)
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: 2.7.8
4
+ version: 2.7.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yasuhiro Asaka, Zeno R.R. Davatz, Niklaus Giger