oddb2xml 2.7.8 → 2.7.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.txt +4 -0
- data/lib/oddb2xml/builder.rb +4 -10
- data/lib/oddb2xml/parslet_compositions.rb +2 -0
- data/lib/oddb2xml/version.rb +1 -1
- data/oddb2xml.xsd +3 -27
- data/shell.nix +2 -2
- data/spec/artikelstamm_spec.rb +1 -1
- data/spec/builder_spec.rb +7 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f177caa4764f9d7a9a9b165e936a9d2474fcab1f2f165ec757f9acad0c331eb
|
4
|
+
data.tar.gz: ca338ae5867dde260218865926b38eb7529d0dac9675aeff230f576ec7023cc0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 793bc30149238fdfb22dc990fee57dc6913d3fa825fa2647ebcd0aee82264287f006765d082256c02215d37337efd8218ebaf9fed8297d5beb0f94d7ffb7ff2d
|
7
|
+
data.tar.gz: 230acb26a3931afa47be553a740095d2b5d352143d3304985eb4b80f532bc254c225f535ca575be2219ffa15193cdb09cf7bb2ad3d5311d9957dbf056f20c7ae
|
data/History.txt
CHANGED
data/lib/oddb2xml/builder.rb
CHANGED
@@ -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 =
|
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
|
-
|
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.
|
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.
|
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
|
data/lib/oddb2xml/version.rb
CHANGED
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"
|
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"
|
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"
|
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
data/spec/artikelstamm_spec.rb
CHANGED
@@ -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 = %(
|
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>
|
571
|
+
text = %(<GTIN>7680002770014</GTIN>
|
575
572
|
<PRODNO>0027701</PRODNO>
|
576
|
-
<DSCRD>
|
577
|
-
<
|
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/>)
|