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 +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/>)
|