oddb2xml 2.7.6 → 2.7.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Elexis_Artikelstamm_v5.xsd +19 -4
- data/History.txt +6 -0
- data/lib/oddb2xml/builder.rb +32 -15
- data/lib/oddb2xml/extractor.rb +8 -0
- data/lib/oddb2xml/version.rb +1 -1
- data/oddb2xml.xsd +27 -3
- data/shell.nix +2 -0
- data/spec/artikelstamm_spec.rb +16 -15
- data/spec/builder_spec.rb +8 -7
- data/spec/extractor_spec.rb +2 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23dea260483ed3a99e62764331bf43924c5f095855e06c13b76d6d37e5f8d13a
|
4
|
+
data.tar.gz: ae24f986d8853676f62e41d2de071bece17540c5237d418ba14662708baf9057
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5b46f3ba07e2ee63e9021b0e7cef091f2c98daca82a724a15c3819ca9e91f6504a2ff0e61ba4bbd03621cd4fcffe95d4b1596af1354e841cb9c35de818ce8fd
|
7
|
+
data.tar.gz: b76c38273ec98bae15054df8b685025a569c947d16e487daf6d393efeca0592cc506b24618776db7ee7a5b09f4d3bccc47db3ef576da446470b02d996838fee8
|
data/Elexis_Artikelstamm_v5.xsd
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
Contributors: MEDEVIT <office@medevit.at> - initial API and implementation -->
|
10
10
|
<xs:schema targetNamespace="http://elexis.ch/Elexis_Artikelstamm_v5"
|
11
11
|
elementFormDefault="qualified" attributeFormDefault="unqualified"
|
12
|
-
version="
|
12
|
+
version="5" id="Elexis_Artikelstamm_v003" xmlns="http://elexis.ch/Elexis_Artikelstamm_v5" xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
13
13
|
<xs:element name="ARTIKELSTAMM">
|
14
14
|
<xs:annotation>
|
15
15
|
<xs:documentation xml:lang="EN">Information on
|
@@ -35,7 +35,10 @@
|
|
35
35
|
type="DSCRType" minOccurs="1" maxOccurs="1">
|
36
36
|
</xs:element>
|
37
37
|
<xs:element name="DSCRF"
|
38
|
-
type="DSCRType" minOccurs="
|
38
|
+
type="DSCRType" minOccurs="0" maxOccurs="1">
|
39
|
+
</xs:element>
|
40
|
+
<xs:element name="DSCRI"
|
41
|
+
type="DSCRType" minOccurs="0" maxOccurs="1">
|
39
42
|
</xs:element>
|
40
43
|
<xs:element name="ATC"
|
41
44
|
nillable="false" maxOccurs="1" minOccurs="0">
|
@@ -93,7 +96,10 @@
|
|
93
96
|
type="DSCRType" minOccurs="1" maxOccurs="1">
|
94
97
|
</xs:element>
|
95
98
|
<xs:element name="DSCRF"
|
96
|
-
type="DSCRType" minOccurs="
|
99
|
+
type="DSCRType" minOccurs="0" maxOccurs="1">
|
100
|
+
</xs:element>
|
101
|
+
<xs:element name="DSCRI"
|
102
|
+
type="DSCRType" minOccurs="0" maxOccurs="1">
|
97
103
|
</xs:element>
|
98
104
|
<xs:element
|
99
105
|
name="LIMITATION_PTS" type="xs:int" maxOccurs="1"
|
@@ -181,7 +187,10 @@
|
|
181
187
|
</xs:annotation>
|
182
188
|
</xs:element>
|
183
189
|
<xs:element name="DSCRF"
|
184
|
-
type="xs:string" minOccurs="
|
190
|
+
type="xs:string" minOccurs="0" maxOccurs="1">
|
191
|
+
</xs:element>
|
192
|
+
<xs:element name="DSCRI"
|
193
|
+
type="xs:string" minOccurs="0" maxOccurs="1">
|
185
194
|
</xs:element>
|
186
195
|
<xs:element name="COMP"
|
187
196
|
minOccurs="0">
|
@@ -280,6 +289,12 @@
|
|
280
289
|
</xs:documentation>
|
281
290
|
</xs:annotation>
|
282
291
|
</xs:element>
|
292
|
+
<xs:element name="DOSAGE_FORMI" type="xs:string" minOccurs="0" maxOccurs="1">
|
293
|
+
<xs:annotation>
|
294
|
+
<xs:documentation>Die Darreichungsform dieses Items. zB Tablette(n) oder Spritze(n) in italienischer Sprache
|
295
|
+
</xs:documentation>
|
296
|
+
</xs:annotation>
|
297
|
+
</xs:element>
|
283
298
|
<xs:element name="SL_ENTRY"
|
284
299
|
type="xs:boolean" minOccurs="0" maxOccurs="1">
|
285
300
|
<xs:annotation>
|
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
=== 2.7.8 / 14.09.22
|
2
|
+
* Add fields for french and italian in artikelstamm whenever possible
|
3
|
+
|
4
|
+
=== 2.7.7/ 12.08.2022
|
5
|
+
* Workaround for artikelstamm V3. Strip IKSCAT from A+ to A to be compatible with XSD
|
6
|
+
|
1
7
|
=== 2.7.6/ 9.03.2022
|
2
8
|
* Workaround for artikelstamm V5. Strip IKSCAT from A+ to A to be compatible with XSD
|
3
9
|
* Fix spec tests
|
data/lib/oddb2xml/builder.rb
CHANGED
@@ -378,6 +378,7 @@ 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]
|
381
382
|
xml.VDAT lim[:vdate]
|
382
383
|
nbr_records += 1
|
383
384
|
end
|
@@ -535,7 +536,9 @@ module Oddb2xml
|
|
535
536
|
if lang == :de
|
536
537
|
name = refdata && refdata[:desc_de] ? refdata[:desc_de] : obj[:sequence_name]
|
537
538
|
elsif lang == :fr
|
538
|
-
name =
|
539
|
+
name = refdata[:desc_fr] if refdata && refdata[:desc_fr]
|
540
|
+
elsif lang == :it
|
541
|
+
name = refdata[:desc_it] if refdata && refdata[:desc_it]
|
539
542
|
else
|
540
543
|
return false
|
541
544
|
end
|
@@ -557,7 +560,7 @@ module Oddb2xml
|
|
557
560
|
@missing.each do |obj|
|
558
561
|
ean = obj[:ean13]
|
559
562
|
next unless check_name(obj, :de)
|
560
|
-
next unless check_name(obj, :fr)
|
563
|
+
# next unless check_name(obj, :fr)
|
561
564
|
next if /^Q/i.match?(obj[:atc])
|
562
565
|
if obj[:prodno]
|
563
566
|
next if emitted.index(obj[:prodno])
|
@@ -568,7 +571,10 @@ module Oddb2xml
|
|
568
571
|
xml.GTIN ean
|
569
572
|
xml.PRODNO obj[:prodno] if obj[:prodno]
|
570
573
|
xml.DSCRD check_name(obj, :de)
|
571
|
-
xml.DSCRF check_name(obj, :fr)
|
574
|
+
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)
|
572
578
|
xml.ATC obj[:atc_code] unless obj[:atc_code].empty?
|
573
579
|
xml.IT obj[:ith_swissmedic] if obj[:ith_swissmedic]
|
574
580
|
xml.CPT
|
@@ -592,6 +598,7 @@ module Oddb2xml
|
|
592
598
|
xml.PRODNO ppac[:prodno] if ppac[:prodno] && !ppac[:prodno].empty?
|
593
599
|
xml.DSCRD check_name(obj, :de)
|
594
600
|
xml.DSCRF check_name(obj, :fr)
|
601
|
+
xml.DSCRI check_name(obj, :it)
|
595
602
|
# xml.BNAMD
|
596
603
|
# xml.BNAMF
|
597
604
|
# xml.ADNAMD
|
@@ -910,7 +917,7 @@ module Oddb2xml
|
|
910
917
|
# xml.CDS01
|
911
918
|
# xml.CDS02
|
912
919
|
if ppac
|
913
|
-
xml.SMCAT ppac[:swissmedic_category] unless ppac[:swissmedic_category].empty?
|
920
|
+
xml.SMCAT ppac[:swissmedic_category][0] unless ppac[:swissmedic_category].empty?
|
914
921
|
xml.GEN_PRODUCTION ppac[:gen_production] unless ppac[:gen_production].empty?
|
915
922
|
xml.INSULIN_CATEGORY ppac[:insulin_category] unless ppac[:insulin_category].empty?
|
916
923
|
xml.DRUG_INDEX ppac[:drug_index] unless ppac[:drug_index].empty?
|
@@ -945,10 +952,10 @@ module Oddb2xml
|
|
945
952
|
end
|
946
953
|
xml.DSCRD obj[:desc_de] if obj[:desc_de] && !obj[:desc_de].empty?
|
947
954
|
xml.DSCRF obj[:desc_fr] if obj[:desc_fr] && !obj[:desc_fr].empty?
|
948
|
-
xml.
|
955
|
+
xml.DSCRI obj[:desc_it] if obj[:desc_it] && !obj[:desc_it].empty?
|
949
956
|
xml.SORTD obj[:desc_de].upcase if obj[:desc_de] && !obj[:desc_de].empty?
|
950
957
|
xml.SORTF obj[:desc_fr].upcase if obj[:desc_fr] && !obj[:desc_fr].empty?
|
951
|
-
xml.
|
958
|
+
xml.SORTI obj[:desc_it].upcase if obj[:desc_it] && !obj[:desc_it].empty?
|
952
959
|
# xml.QTYUD
|
953
960
|
# xml.QTYUF
|
954
961
|
# xml.IMG
|
@@ -959,6 +966,7 @@ module Oddb2xml
|
|
959
966
|
if obj[:seq]
|
960
967
|
xml.SYN1D obj[:seq][:name_de] unless obj[:seq][:name_de].empty?
|
961
968
|
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?
|
962
970
|
end
|
963
971
|
if obj[:seq]
|
964
972
|
case obj[:seq][:deductible]
|
@@ -1512,15 +1520,21 @@ module Oddb2xml
|
|
1512
1520
|
xml.GTIN pkg_gtin.to_s.rjust(13, "0")
|
1513
1521
|
xml.SALECD("A")
|
1514
1522
|
# maxLength for DSCR is 50 for Artikelstamm v3
|
1515
|
-
xml.DSCR(name) # for
|
1523
|
+
xml.DSCR(name) # for g for zur_rose
|
1516
1524
|
name_fr = item[:name_fr] + " " + item[:desc_fr].strip + " " + package[:desc_fr] if package && package[:desc_fr]
|
1517
1525
|
name_fr ||= @refdata[pkg_gtin] ? @refdata[pkg_gtin][:desc_fr] : nil
|
1518
1526
|
# Zugelassenen Packungen has only german names
|
1519
1527
|
name_fr ||= (obj[:name_fr] + ", " + obj[:desc_fr]).strip if obj[:name_fr]
|
1520
1528
|
# ZuRorse has only german names
|
1521
1529
|
name_fr ||= (item[:name_fr] + ", " + item[:desc_fr]) if item
|
1522
|
-
name_fr
|
1523
|
-
|
1530
|
+
xml.DSCRF(name_fr) if name_fr
|
1531
|
+
name_it = item[:name_it] + " " + item[:desc_it].strip + " " + package[:desc_it] if package && package[:desc_it]
|
1532
|
+
name_it ||= @refdata[pkg_gtin] ? @refdata[pkg_gtin][:desc_it] : nil
|
1533
|
+
# Zugelassenen Packungen has only german names
|
1534
|
+
name_it ||= (obj[:name_it] + ", " + obj[:desc_it]).strip if obj[:name_it]
|
1535
|
+
# ZuRorse has only german names
|
1536
|
+
name_it ||= (item[:name_it] + ", " + item[:desc_it]) if item
|
1537
|
+
xml.DSCRI(name_it) if name_it
|
1524
1538
|
if obj[:company_name] || obj[:company_ean]
|
1525
1539
|
xml.COMP do # Manufacturer
|
1526
1540
|
xml.NAME obj[:company_name][0..99] # limit to 100 chars as in XSD
|
@@ -1562,10 +1576,10 @@ module Oddb2xml
|
|
1562
1576
|
measure = info.pkg_size
|
1563
1577
|
end
|
1564
1578
|
xml.MEASURE measure
|
1565
|
-
xml.MEASUREF measure
|
1566
1579
|
# Die Darreichungsform dieses Items. zB Tablette(n) oder Spritze(n)
|
1567
1580
|
xml.DOSAGE_FORM info.galenic_form.descriptions["de"] if info.galenic_form.descriptions["de"]
|
1568
1581
|
xml.DOSAGE_FORMF info.galenic_form.descriptions["fr"] if info.galenic_form.descriptions["fr"]
|
1582
|
+
xml.DOSAGE_FORMI info.galenic_form.descriptions["it"] if info.galenic_form.descriptions["it"]
|
1569
1583
|
end
|
1570
1584
|
xml.SL_ENTRY "true" if sl_gtins.index(pkg_gtin)
|
1571
1585
|
xml.IKSCAT package[:swissmedic_category][0] if package[:swissmedic_category] && package[:swissmedic_category].length > 0
|
@@ -1633,7 +1647,8 @@ module Oddb2xml
|
|
1633
1647
|
emit_salecd(xml, ean13, obj)
|
1634
1648
|
description = obj[:desc_de] || obj[:description] # for description for zur_rose
|
1635
1649
|
xml.DSCR(description)
|
1636
|
-
xml.DSCRF(obj[:desc_fr]
|
1650
|
+
xml.DSCRF(obj[:desc_fr]) if obj[:desc_fr] && !obj[:desc_fr].empty?
|
1651
|
+
xml.DSCRI(obj[:desc_it]) if obj[:desc_it] && !obj[:desc_it].empty?
|
1637
1652
|
if obj[:company_ean] && !obj[:company_ean].empty?
|
1638
1653
|
xml.COMP do
|
1639
1654
|
xml.GLN obj[:company_ean]
|
@@ -1737,6 +1752,7 @@ module Oddb2xml
|
|
1737
1752
|
nr_products += 1
|
1738
1753
|
xml.PRODUCT do
|
1739
1754
|
xml.PRODNO prodno
|
1755
|
+
|
1740
1756
|
if sequence
|
1741
1757
|
xml.SALECD("A") # these products are always active!
|
1742
1758
|
name_de = "#{sequence[:name_de]} #{sequence[:desc_de]}".strip if sequence[:name_de]
|
@@ -1746,9 +1762,10 @@ module Oddb2xml
|
|
1746
1762
|
sequence[:desc_de]
|
1747
1763
|
end
|
1748
1764
|
name_fr = "#{sequence[:name_fr]} #{sequence[:desc_fr]}".strip if sequence[:name_fr]
|
1749
|
-
|
1765
|
+
name_it = "#{sequence[:name_it]} #{sequence[:desc_it]}".strip if sequence[:name_it]
|
1750
1766
|
override(xml, prodno, :DSCR, name_de.strip)
|
1751
|
-
override(xml, prodno, :DSCRF, name_fr.strip)
|
1767
|
+
override(xml, prodno, :DSCRF, name_fr.strip) if name_fr && !name_fr.empty?
|
1768
|
+
override(xml, prodno, :DSCRI, name_it.strip) if name_it && !name_it.empty?
|
1752
1769
|
# use overriden ATC if possibel
|
1753
1770
|
atc = sequence[:atc] || sequence[:atc_code]
|
1754
1771
|
xml.ATC atc if atc && !atc.empty?
|
@@ -1762,7 +1779,6 @@ module Oddb2xml
|
|
1762
1779
|
xml.comment "Chapter70 hack prodno #{prodno} #{obj[:description].encode(xml: :text).gsub("--", "-")}"
|
1763
1780
|
xml.SALECD("A") # these products are always active!
|
1764
1781
|
xml.DSCR obj[:description]
|
1765
|
-
xml.DSCRF ""
|
1766
1782
|
if @limitations.index(obj[:code])
|
1767
1783
|
xml.LIMNAMEBAG obj[:code]
|
1768
1784
|
used_limitations << obj[:code]
|
@@ -1794,7 +1810,8 @@ module Oddb2xml
|
|
1794
1810
|
xml.comment "Chapter70 2 hack" if lim[:chap70]
|
1795
1811
|
xml.LIMNAMEBAG lim[:code] # original LIMCD
|
1796
1812
|
xml.DSCR Oddb2xml.html_decode(lim[:desc_de])
|
1797
|
-
xml.DSCRF Oddb2xml.html_decode(lim[:desc_fr])
|
1813
|
+
xml.DSCRF Oddb2xml.html_decode(lim[:desc_fr]) if lim[:desc_fr]
|
1814
|
+
xml.DSCRI Oddb2xml.html_decode(lim[:desc_it]) if lim[:desc_it]
|
1798
1815
|
xml.LIMITATION_PTS(lim[:value].to_s.length > 1 ? lim[:value] : 1)
|
1799
1816
|
end
|
1800
1817
|
end
|
data/lib/oddb2xml/extractor.rb
CHANGED
@@ -51,14 +51,17 @@ module Oddb2xml
|
|
51
51
|
item[:product_key] = seq.ProductCommercial
|
52
52
|
item[:desc_de] = (desc = seq.DescriptionDe) ? desc : ""
|
53
53
|
item[:desc_fr] = (desc = seq.DescriptionFr) ? desc : ""
|
54
|
+
item[:desc_it] = (desc = seq.DescriptionIt) ? desc : ""
|
54
55
|
item[:name_de] = (name = seq.NameDe) ? name : ""
|
55
56
|
item[:name_fr] = (name = seq.NameFr) ? name : ""
|
57
|
+
item[:name_it] = (name = seq.NameIt) ? name : ""
|
56
58
|
item[:swissmedic_number5] = (num5 = seq.SwissmedicNo5) ? num5.rjust(5, "0") : ""
|
57
59
|
item[:org_gen_code] = (orgc = seq.OrgGenCode) ? orgc : ""
|
58
60
|
item[:deductible] = (ddbl = seq.FlagSB20) ? ddbl : ""
|
59
61
|
item[:atc_code] = (atcc = seq.AtcCode) ? atcc : ""
|
60
62
|
item[:comment_de] = (info = seq.CommentDe) ? info : ""
|
61
63
|
item[:comment_fr] = (info = seq.CommentFr) ? info : ""
|
64
|
+
item[:comment_it] = (info = seq.CommentIt) ? info : ""
|
62
65
|
item[:it_code] = ""
|
63
66
|
seq.ItCodes.ItCode.each do |itc|
|
64
67
|
if item[:it_code].to_s.empty?
|
@@ -111,8 +114,10 @@ module Oddb2xml
|
|
111
114
|
ean13: ean13,
|
112
115
|
name_de: (desc = seq.NameDe) ? desc : "",
|
113
116
|
name_fr: (desc = seq.NameFr) ? desc : "",
|
117
|
+
name_it: (desc = seq.NameIt) ? desc : "",
|
114
118
|
desc_de: (desc = pac.DescriptionDe) ? desc : "",
|
115
119
|
desc_fr: (desc = pac.DescriptionFr) ? desc : "",
|
120
|
+
desc_it: (desc = pac.DescriptionIt) ? desc : "",
|
116
121
|
sl_entry: true,
|
117
122
|
swissmedic_category: (cat = pac.SwissmedicCategory) ? cat : "",
|
118
123
|
swissmedic_number8: (num = pac.SwissmedicNo8) ? num : "",
|
@@ -161,6 +166,7 @@ module Oddb2xml
|
|
161
166
|
niv: (niv = lim.LimitationNiveau) ? niv : "",
|
162
167
|
desc_de: (dsc = lim.DescriptionDe) ? dsc : "",
|
163
168
|
desc_fr: (dsc = lim.DescriptionFr) ? dsc : "",
|
169
|
+
desc_it: (dsc = lim.DescriptionIt) ? dsc : "",
|
164
170
|
vdate: (dat = lim.ValidFromDate) ? dat : ""
|
165
171
|
}
|
166
172
|
deleted = false
|
@@ -223,6 +229,7 @@ module Oddb2xml
|
|
223
229
|
item[:last_change] = (date = Time.parse(pac.DT).to_s) ? date : "" # Date and time of last data change
|
224
230
|
item[:desc_de] = (dscr = pac.NAME_DE) ? dscr : ""
|
225
231
|
item[:desc_fr] = (dscr = pac.NAME_FR) ? dscr : ""
|
232
|
+
item[:desc_it] = item[:desc_de] # refdata has no italian name
|
226
233
|
item[:atc_code] = (code = pac.ATC) ? code.to_s : ""
|
227
234
|
item[:company_name] = (nam = pac.AUTH_HOLDER_NAME) ? nam : ""
|
228
235
|
item[:company_ean] = (gln = pac.AUTH_HOLDER_GLN) ? gln : ""
|
@@ -368,6 +375,7 @@ module Oddb2xml
|
|
368
375
|
company_ean: row[7],
|
369
376
|
data_origin: "migel"
|
370
377
|
}
|
378
|
+
data
|
371
379
|
end
|
372
380
|
data
|
373
381
|
end
|
data/lib/oddb2xml/version.rb
CHANGED
data/oddb2xml.xsd
CHANGED
@@ -48,6 +48,7 @@
|
|
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)
|
51
52
|
* GTIN
|
52
53
|
GTIN may be 8, 12, 13 or 14 chars long (https://en.wikipedia.org/wiki/Global_Trade_Item_Number)
|
53
54
|
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
|
@@ -128,6 +129,15 @@
|
|
128
129
|
</xs:simpleType>
|
129
130
|
</xs:element>
|
130
131
|
|
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
|
+
|
131
141
|
<xs:element name="ART">
|
132
142
|
<xs:complexType>
|
133
143
|
<xs:sequence>
|
@@ -157,12 +167,15 @@
|
|
157
167
|
<xs:element ref="ns1:BG"/>
|
158
168
|
</xs:sequence>
|
159
169
|
<xs:element ref="ns1:DSCRD"/>
|
160
|
-
<xs:element ref="ns1:DSCRF"/>
|
170
|
+
<xs:element ref="ns1:DSCRF" minOccurs="0" />
|
171
|
+
<xs:element ref="ns1:DSCRI" minOccurs="0"/>
|
161
172
|
<xs:element ref="ns1:SORTD"/>
|
162
|
-
<xs:element ref="ns1:SORTF"/>
|
173
|
+
<xs:element ref="ns1:SORTF" minOccurs="0"/>
|
174
|
+
<xs:element ref="ns1:SORTI" minOccurs="0"/>
|
163
175
|
<xs:sequence minOccurs="0">
|
164
176
|
<xs:element ref="ns1:SYN1D"/>
|
165
177
|
<xs:element ref="ns1:SYN1F"/>
|
178
|
+
<xs:element ref="ns1:SYN1I"/>
|
166
179
|
<xs:element ref="ns1:SLOPLUS"/>
|
167
180
|
</xs:sequence>
|
168
181
|
<xs:element ref="ns1:ARTCOMP"/>
|
@@ -245,8 +258,10 @@
|
|
245
258
|
</xs:element>
|
246
259
|
<xs:element name="SORTD" type="xs:string"/>
|
247
260
|
<xs:element name="SORTF" type="xs:string"/>
|
261
|
+
<xs:element name="SORTI" type="xs:string"/>
|
248
262
|
<xs:element name="SYN1D" type="xs:string"/>
|
249
263
|
<xs:element name="SYN1F" type="xs:string"/>
|
264
|
+
<xs:element name="SYN1I" type="xs:string"/>
|
250
265
|
<xs:element name="SLOPLUS">
|
251
266
|
<xs:simpleType>
|
252
267
|
<xs:restriction base="xs:byte">
|
@@ -346,8 +361,10 @@
|
|
346
361
|
<xs:element ref="ns1:QTYMD"/>
|
347
362
|
<xs:element ref="ns1:DSCRDMD"/>
|
348
363
|
<xs:element ref="ns1:DSCRFMD"/>
|
364
|
+
<xs:element ref="ns1:DSCRIMD"/>
|
349
365
|
<xs:element ref="ns1:SORTDMD"/>
|
350
366
|
<xs:element ref="ns1:SORTFMD"/>
|
367
|
+
<xs:element ref="ns1:SORTIMD"/>
|
351
368
|
<xs:sequence minOccurs="0">
|
352
369
|
<xs:element ref="ns1:SYN1DMD"/>
|
353
370
|
<xs:element ref="ns1:SYN1FMD"/>
|
@@ -399,8 +416,10 @@
|
|
399
416
|
</xs:element>
|
400
417
|
<xs:element name="SORTDMD" type="xs:string"/>
|
401
418
|
<xs:element name="SORTFMD" type="xs:string"/>
|
419
|
+
<xs:element name="SORTIMD" type="xs:string"/>
|
402
420
|
<xs:element name="SYN1DMD" type="xs:string"/>
|
403
421
|
<xs:element name="SYN1FMD" type="xs:string"/>
|
422
|
+
<xs:element name="SYN1IMD" type="xs:string"/>
|
404
423
|
<xs:element name="SLOPLUSMD">
|
405
424
|
<xs:simpleType>
|
406
425
|
<xs:restriction base="xs:byte">
|
@@ -722,6 +741,7 @@
|
|
722
741
|
<xs:element ref="ns1:LIMNIV"/>
|
723
742
|
<xs:element name="DSCRD" type="xs:string"/>
|
724
743
|
<xs:element name="DSCRF" type="xs:string"/>
|
744
|
+
<xs:element name="DSCRI" type="xs:string"/>
|
725
745
|
<xs:element ref="ns1:VDAT"/>
|
726
746
|
</xs:sequence>
|
727
747
|
<xs:attribute name="DT" use="required"/>
|
@@ -780,6 +800,7 @@
|
|
780
800
|
<xs:element ref="ns1:LIMNIVMD"/>
|
781
801
|
<xs:element name="DSCRDMD" type="xs:string"/>
|
782
802
|
<xs:element name="DSCRFMD" type="xs:string"/>
|
803
|
+
<xs:element name="DSCRIMD" type="xs:string"/>
|
783
804
|
<xs:element ref="ns1:VDATMD"/>
|
784
805
|
</xs:sequence>
|
785
806
|
<xs:attribute name="DT" use="required"/>
|
@@ -844,7 +865,8 @@
|
|
844
865
|
<xs:element minOccurs="0" ref="ns1:PRODNO"/>
|
845
866
|
<xs:sequence minOccurs="0">
|
846
867
|
<xs:element ref="ns1:DSCRD"/>
|
847
|
-
<xs:element ref="ns1:DSCRF"/>
|
868
|
+
<xs:element ref="ns1:DSCRF" minOccurs="0"/>
|
869
|
+
<xs:element ref="ns1:DSCRI" minOccurs="0"/>
|
848
870
|
</xs:sequence>
|
849
871
|
<xs:element minOccurs="0" ref="ns1:ADINFD"/>
|
850
872
|
<xs:element minOccurs="0" ref="ns1:ADINFF"/>
|
@@ -920,6 +942,7 @@
|
|
920
942
|
<xs:sequence minOccurs="0">
|
921
943
|
<xs:element ref="ns1:DSCRDMD"/>
|
922
944
|
<xs:element ref="ns1:DSCRFMD"/>
|
945
|
+
<xs:element ref="ns1:DSCRIMD"/>
|
923
946
|
</xs:sequence>
|
924
947
|
<xs:element minOccurs="0" ref="ns1:ADINFDMD"/>
|
925
948
|
<xs:element minOccurs="0" ref="ns1:ADINFFMD"/>
|
@@ -1088,6 +1111,7 @@
|
|
1088
1111
|
<xs:element name="ITMD" type="xs:string"/>
|
1089
1112
|
<xs:element name="DSCRDMD" type="xs:string"/>
|
1090
1113
|
<xs:element name="DSCRFMD" type="xs:string"/>
|
1114
|
+
<xs:element name="DSCRIMD" type="xs:string"/>
|
1091
1115
|
<xs:element name="VDATMD" type="xs:NMTOKEN"/>
|
1092
1116
|
<xs:element name="RESULTMD">
|
1093
1117
|
<xs:complexType>
|
data/shell.nix
CHANGED
data/spec/artikelstamm_spec.rb
CHANGED
@@ -11,8 +11,8 @@ 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
15
|
end
|
15
|
-
# binding.irb unless @inhalt.index(expected_value)
|
16
16
|
expect(@inhalt.index(expected_value)).not_to be nil
|
17
17
|
end
|
18
18
|
|
@@ -67,6 +67,7 @@ describe Oddb2xml::Builder do
|
|
67
67
|
<SALECD>A</SALECD>
|
68
68
|
<DSCR>3M MEDIPORE+PAD Absorbtionsverb 10x15cm 8 x 25 Stk</DSCR>
|
69
69
|
<DSCRF>3M MEDIPORE+PAD compr absorb 10x15cm 8 x 25 pce</DSCRF>
|
70
|
+
<DSCRI>3M MEDIPORE+PAD Absorbtionsverb 10x15cm 8 x 25 Stk</DSCRI>
|
70
71
|
<COMP>
|
71
72
|
<GLN>7610182000007</GLN>
|
72
73
|
</COMP>
|
@@ -79,7 +80,6 @@ describe Oddb2xml::Builder do
|
|
79
80
|
<PRODNO>5815801</PRODNO>
|
80
81
|
<SALECD>A</SALECD>
|
81
82
|
<DSCR>PRIORIX TETRA Trockensub c Solv Fertspr</DSCR>
|
82
|
-
<DSCRF>Priorix-Tetra, Pulver und Lösungsmittel zur Herstellung einer Injektionslösung</DSCRF>
|
83
83
|
<ATC>J07BD54</ATC>
|
84
84
|
</PRODUCT>)
|
85
85
|
expect(@inhalt.index(expected)).not_to be nil
|
@@ -118,7 +118,6 @@ describe Oddb2xml::Builder do
|
|
118
118
|
<PRODNO>5559401</PRODNO>
|
119
119
|
<SALECD>A</SALECD>
|
120
120
|
<DSCR>Nutriflex Lipid plus, Infusionsemulsion, 1250ml</DSCR>
|
121
|
-
<DSCRF/>
|
122
121
|
<ATC>B05BA10</ATC>
|
123
122
|
</PRODUCT>)
|
124
123
|
expect(@inhalt.index(expected)).not_to be nil
|
@@ -200,6 +199,7 @@ describe Oddb2xml::Builder do
|
|
200
199
|
<SALECD>A</SALECD>
|
201
200
|
<DSCR>Dibase 10'000 Tropfen 10000 IE/ml Fl 10 ml</DSCR>
|
202
201
|
<DSCRF>Dibase 10'000 gouttes 10000 UI/ml fl 10 ml</DSCRF>
|
202
|
+
<DSCRI>Dibase 10'000 gouttes 10000 UI/ml fl 10 ml</DSCRI>
|
203
203
|
<COMP>
|
204
204
|
<NAME>Gebro Pharma AG</NAME>
|
205
205
|
<GLN>7612053000000</GLN>
|
@@ -208,7 +208,6 @@ describe Oddb2xml::Builder do
|
|
208
208
|
<PPUB>9.25</PPUB>
|
209
209
|
<PKG_SIZE>1</PKG_SIZE>
|
210
210
|
<MEASURE>Flasche(n)</MEASURE>
|
211
|
-
<MEASUREF>Flasche(n)</MEASUREF>
|
212
211
|
<DOSAGE_FORM>orale Tropflösung</DOSAGE_FORM>
|
213
212
|
<SL_ENTRY>true</SL_ENTRY>
|
214
213
|
<IKSCAT>D</IKSCAT>
|
@@ -232,6 +231,7 @@ describe Oddb2xml::Builder do
|
|
232
231
|
<SALECD>A</SALECD>
|
233
232
|
<DSCR>Carbaderm Creme Tb 300 ml</DSCR>
|
234
233
|
<DSCRF>Carbaderm crème tb 300 ml</DSCRF>
|
234
|
+
<DSCRI>Carbaderm crème tb 300 ml</DSCRI>
|
235
235
|
<PEXF>14.61</PEXF>
|
236
236
|
<PPUB>26.95</PPUB>
|
237
237
|
<SL_ENTRY>true</SL_ENTRY>
|
@@ -244,7 +244,6 @@ describe Oddb2xml::Builder do
|
|
244
244
|
<PHAR>0055805</PHAR>
|
245
245
|
<SALECD>A</SALECD>
|
246
246
|
<DSCR>TENSOPLAST Kompressionsbinde 5cmx4.5m</DSCR>
|
247
|
-
<DSCRF>--missing--</DSCRF>
|
248
247
|
<PEXF>0.00</PEXF>
|
249
248
|
<PPUB>22.95</PPUB>
|
250
249
|
</ITEM>),
|
@@ -253,6 +252,7 @@ describe Oddb2xml::Builder do
|
|
253
252
|
<SALECD>A</SALECD>
|
254
253
|
<DSCR>LANSOYL Gel 225 g</DSCR>
|
255
254
|
<DSCRF>LANSOYL gel 225 g</DSCRF>
|
255
|
+
<DSCRI>LANSOYL Gel 225 g</DSCRI>
|
256
256
|
<COMP>
|
257
257
|
<NAME>Actipharm SA</NAME>
|
258
258
|
<GLN>7601001002012</GLN>
|
@@ -261,7 +261,6 @@ describe Oddb2xml::Builder do
|
|
261
261
|
<PPUB>16.25</PPUB>
|
262
262
|
<PKG_SIZE>225</PKG_SIZE>
|
263
263
|
<MEASURE>g</MEASURE>
|
264
|
-
<MEASUREF>g</MEASUREF>
|
265
264
|
<DOSAGE_FORM>Gelée</DOSAGE_FORM>
|
266
265
|
<IKSCAT>D</IKSCAT>
|
267
266
|
<LPPV>true</LPPV>
|
@@ -273,6 +272,7 @@ describe Oddb2xml::Builder do
|
|
273
272
|
<SALECD>A</SALECD>
|
274
273
|
<DSCR>3TC Filmtabl 150 mg 60 Stk</DSCR>
|
275
274
|
<DSCRF>3TC cpr pell 150 mg 60 pce</DSCRF>
|
275
|
+
<DSCRI>3TC cpr pell 150 mg 60 pce</DSCRI>
|
276
276
|
<COMP>
|
277
277
|
<NAME>ViiV Healthcare GmbH</NAME>
|
278
278
|
<GLN>7601001392175</GLN>
|
@@ -281,7 +281,6 @@ describe Oddb2xml::Builder do
|
|
281
281
|
<PPUB>205.3</PPUB>
|
282
282
|
<PKG_SIZE>60</PKG_SIZE>
|
283
283
|
<MEASURE>Tablette(n)</MEASURE>
|
284
|
-
<MEASUREF>Tablette(n)</MEASUREF>
|
285
284
|
<DOSAGE_FORM>Filmtabletten</DOSAGE_FORM>
|
286
285
|
<DOSAGE_FORMF>Comprimés filmés</DOSAGE_FORMF>
|
287
286
|
<SL_ENTRY>true</SL_ENTRY>
|
@@ -296,6 +295,7 @@ describe Oddb2xml::Builder do
|
|
296
295
|
<SALECD>A</SALECD>
|
297
296
|
<DSCR>Hirudoid Creme 3 mg/g 40 g</DSCR>
|
298
297
|
<DSCRF>Hirudoid crème 3 mg/g 40 g</DSCRF>
|
298
|
+
<DSCRI>Hirudoid crema 3 mg/g 40 g</DSCRI>
|
299
299
|
<COMP>
|
300
300
|
<NAME>Medinova AG</NAME>
|
301
301
|
<GLN>7601001002258</GLN>
|
@@ -304,7 +304,6 @@ describe Oddb2xml::Builder do
|
|
304
304
|
<PPUB>8.8</PPUB>
|
305
305
|
<PKG_SIZE>40</PKG_SIZE>
|
306
306
|
<MEASURE>g</MEASURE>
|
307
|
-
<MEASUREF>g</MEASUREF>
|
308
307
|
<DOSAGE_FORM>Creme</DOSAGE_FORM>
|
309
308
|
<SL_ENTRY>true</SL_ENTRY>
|
310
309
|
<IKSCAT>D</IKSCAT>
|
@@ -317,6 +316,7 @@ describe Oddb2xml::Builder do
|
|
317
316
|
<SALECD>A</SALECD>
|
318
317
|
<DSCR>Hirudoid Creme 3 mg/g 100 g</DSCR>
|
319
318
|
<DSCRF>Hirudoid crème 3 mg/g 100 g</DSCRF>
|
319
|
+
<DSCRI>Hirudoid crema 3 mg/g 100 g</DSCRI>
|
320
320
|
<COMP>
|
321
321
|
<NAME>Medinova AG</NAME>
|
322
322
|
<GLN>7601001002258</GLN>
|
@@ -332,6 +332,7 @@ describe Oddb2xml::Builder do
|
|
332
332
|
<SALECD>A</SALECD>
|
333
333
|
<DSCR>ANCOPIR Inj Lös 5 Amp 2 ml</DSCR>
|
334
334
|
<DSCRF>Ancopir, sol inj</DSCRF>
|
335
|
+
<DSCRI>Ancopir, sol inj</DSCRI>
|
335
336
|
<COMP>
|
336
337
|
<NAME>Dr. Grossmann AG, Pharmaca</NAME>
|
337
338
|
<GLN/>
|
@@ -340,7 +341,6 @@ describe Oddb2xml::Builder do
|
|
340
341
|
<PPUB>8.55</PPUB>
|
341
342
|
<PKG_SIZE>5</PKG_SIZE>
|
342
343
|
<MEASURE>Ampulle(n)</MEASURE>
|
343
|
-
<MEASUREF>Ampulle(n)</MEASUREF>
|
344
344
|
<DOSAGE_FORM>Injektionslösung</DOSAGE_FORM>
|
345
345
|
<DOSAGE_FORMF>Solution injectable</DOSAGE_FORMF>
|
346
346
|
<SL_ENTRY>true</SL_ENTRY>
|
@@ -353,6 +353,7 @@ describe Oddb2xml::Builder do
|
|
353
353
|
<SALECD>A</SALECD>
|
354
354
|
<DSCR>FERRO-GRADUMET Depottabl 30 Stk</DSCR>
|
355
355
|
<DSCRF>FERRO-GRADUMET cpr dépôt 30 pce</DSCRF>
|
356
|
+
<DSCRI>FERRO-GRADUMET Depottabl 30 Stk</DSCRI>
|
356
357
|
<COMP>
|
357
358
|
<NAME>Farmaceutica Teofarma Suisse SA</NAME>
|
358
359
|
<GLN>7601001374539</GLN>
|
@@ -361,7 +362,6 @@ describe Oddb2xml::Builder do
|
|
361
362
|
<PPUB>13.80</PPUB>
|
362
363
|
<PKG_SIZE>30</PKG_SIZE>
|
363
364
|
<MEASURE>Tablette(n)</MEASURE>
|
364
|
-
<MEASUREF>Tablette(n)</MEASUREF>
|
365
365
|
<DOSAGE_FORM>Tupfer</DOSAGE_FORM>
|
366
366
|
<DOSAGE_FORMF>Compresse</DOSAGE_FORMF>
|
367
367
|
<IKSCAT>C</IKSCAT>
|
@@ -372,6 +372,7 @@ describe Oddb2xml::Builder do
|
|
372
372
|
<SALECD>A</SALECD>
|
373
373
|
<DSCR>3TC Filmtabl 150 mg</DSCR>
|
374
374
|
<DSCRF>3TC cpr pell 150 mg</DSCRF>
|
375
|
+
<DSCRI>3TC cpr pell 150 mg</DSCRI>
|
375
376
|
<ATC>J05AF05</ATC>
|
376
377
|
<SUBSTANCE>Lamivudinum</SUBSTANCE>
|
377
378
|
</PRODUCT>),
|
@@ -380,13 +381,13 @@ describe Oddb2xml::Builder do
|
|
380
381
|
<SALECD>A</SALECD>
|
381
382
|
<DSCR>SEROCYTOL Herz-Gefässe Supp 3 Stk</DSCR>
|
382
383
|
<DSCRF>SEROCYTOL Coeur-Vaisseaux supp 3 pce</DSCRF>
|
384
|
+
<DSCRI>SEROCYTOL Herz-Gefässe Supp 3 Stk</DSCRI>
|
383
385
|
<COMP>
|
384
386
|
<NAME>Serolab SA (succursale de Remaufens)</NAME>
|
385
387
|
<GLN>7640128710004</GLN>
|
386
388
|
</COMP>
|
387
389
|
<PKG_SIZE>3</PKG_SIZE>
|
388
390
|
<MEASURE>Suppositorien</MEASURE>
|
389
|
-
<MEASUREF>Suppositorien</MEASUREF>
|
390
391
|
<DOSAGE_FORM>suppositoire</DOSAGE_FORM>
|
391
392
|
<IKSCAT>B</IKSCAT>
|
392
393
|
<PRODNO>0027701</PRODNO>
|
@@ -396,6 +397,7 @@ describe Oddb2xml::Builder do
|
|
396
397
|
<SALECD>A</SALECD>
|
397
398
|
<DSCR>Humalog Inj Lös Durchstf 10 ml</DSCR>
|
398
399
|
<DSCRF>Humalog sol inj flac 10 ml</DSCRF>
|
400
|
+
<DSCRI>Humalog sol iniez fiala 10 ml</DSCRI>
|
399
401
|
<COMP>
|
400
402
|
<NAME>Eli Lilly (Suisse) SA</NAME>
|
401
403
|
<GLN>7601001261853</GLN>
|
@@ -404,7 +406,6 @@ describe Oddb2xml::Builder do
|
|
404
406
|
<PPUB>51.3</PPUB>
|
405
407
|
<PKG_SIZE>1</PKG_SIZE>
|
406
408
|
<MEASURE>Flasche(n)</MEASURE>
|
407
|
-
<MEASUREF>Flasche(n)</MEASUREF>
|
408
409
|
<DOSAGE_FORM>Injektionslösung</DOSAGE_FORM>
|
409
410
|
<DOSAGE_FORMF>Solution injectable</DOSAGE_FORMF>
|
410
411
|
<SL_ENTRY>true</SL_ENTRY>
|
@@ -418,6 +419,7 @@ describe Oddb2xml::Builder do
|
|
418
419
|
<SALECD>I</SALECD>
|
419
420
|
<DSCR>SEROCYTOL Kolon Supp 3 Stk</DSCR>
|
420
421
|
<DSCRF>SEROCYTOL Côlon supp 3 pce</DSCRF>
|
422
|
+
<DSCRI>SEROCYTOL Kolon Supp 3 Stk</DSCRI>
|
421
423
|
<COMP>
|
422
424
|
<GLN>7640128710004</GLN>
|
423
425
|
</COMP>
|
@@ -429,6 +431,7 @@ describe Oddb2xml::Builder do
|
|
429
431
|
<SALECD>A</SALECD>
|
430
432
|
<DSCR>Varilrix Trockensub c solv</DSCR>
|
431
433
|
<DSCRF>Varilrix subst sèche c solv</DSCRF>
|
434
|
+
<DSCRI>Varilrix sost secca c solv</DSCRI>
|
432
435
|
<ATC>J07BK01</ATC>
|
433
436
|
<LIMNAMEBAG>0808</LIMNAMEBAG>
|
434
437
|
<SUBSTANCE>Vaccinum virus varicellae vivus attenuat. (Stamm OKA)</SUBSTANCE>
|
@@ -438,6 +441,7 @@ describe Oddb2xml::Builder do
|
|
438
441
|
<SALECD>A</SALECD>
|
439
442
|
<DSCR>Varilrix Trockensub c solv Fertspr 0.500 ml</DSCR>
|
440
443
|
<DSCRF>Varilrix subst sèche c solv ser prê 0.500 ml</DSCRF>
|
444
|
+
<DSCRI>Varilrix sost secca c solv sir preriempita 0.500 ml</DSCRI>
|
441
445
|
<COMP>
|
442
446
|
<NAME>GlaxoSmithKline AG</NAME>
|
443
447
|
<GLN>7601001000674</GLN>
|
@@ -454,14 +458,12 @@ describe Oddb2xml::Builder do
|
|
454
458
|
<!--Chapter70 hack prodno 2069639 Ceres Urtinkturen gemäss L2 mit - im Kommentar-->
|
455
459
|
<SALECD>A</SALECD>
|
456
460
|
<DSCR>Ceres Urtinkturen gemäss L2 mit -- im Kommentar</DSCR>
|
457
|
-
<DSCRF/>
|
458
461
|
</PRODUCT>),
|
459
462
|
"Chapter 70 item" => %(<ITEM PHARMATYPE="P">
|
460
463
|
<GTIN>2500000588532</GTIN>
|
461
464
|
<PHAR>2069639</PHAR>
|
462
465
|
<SALECD>A</SALECD>
|
463
466
|
<DSCR>EINF ARZNEI Ceres Urtinktur spez 20ml</DSCR>
|
464
|
-
<DSCRF>--missing--</DSCRF>
|
465
467
|
<PEXF>23.44</PEXF>
|
466
468
|
<PPUB>31.30</PPUB>
|
467
469
|
<!--Chapter70 hack 2500000588532 EINF ARZNEI Ceres Urtinktur spez 20ml-->
|
@@ -480,7 +482,6 @@ Der behandelnde Arzt ist verpflichtet, die erforderlichen Daten laufend im vorge
|
|
480
482
|
<PRODNO>1336901</PRODNO>
|
481
483
|
<SALECD>A</SALECD>
|
482
484
|
<DSCR>Pethidin HCl Amino 100 mg/2 ml, Injektionslösung</DSCR>
|
483
|
-
<DSCRF/>
|
484
485
|
<ATC>N02AB02</ATC>
|
485
486
|
</PRODUCT>)}
|
486
487
|
|
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,8 +44,10 @@ 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>
|
47
48
|
<SORTD>NAROPIN INJ LÖS 0.2 % 10ML DUOFIT AMP 5 STK</SORTD>
|
48
49
|
<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>
|
49
51
|
<ARTCOMP>
|
50
52
|
<COMPNO>7601001402539</COMPNO>
|
51
53
|
</ARTCOMP>
|
@@ -54,7 +56,8 @@ ARTICLE_NAROPIN = %(<REF_DATA>1</REF_DATA>
|
|
54
56
|
<BC>7680540150118</BC>
|
55
57
|
<BCSTAT>A</BCSTAT>
|
56
58
|
</ARTBAR>
|
57
|
-
</ART>
|
59
|
+
</ART>
|
60
|
+
)
|
58
61
|
|
59
62
|
ARTICLE_COMMON_ELEMENTS = [
|
60
63
|
["ARTICLE/ART/REF_DATA", "1"],
|
@@ -568,11 +571,10 @@ describe Oddb2xml::Builder do
|
|
568
571
|
|
569
572
|
it "should generate ATC for 7680002770014" do
|
570
573
|
oddb_product_xml = IO.read(File.join(Oddb2xml::WORK_DIR, "oddb_product.xml"))
|
571
|
-
text = %(<GTIN>
|
574
|
+
text = %(<GTIN>7680002770021</GTIN>
|
572
575
|
<PRODNO>0027701</PRODNO>
|
573
|
-
<DSCRD>
|
574
|
-
<
|
575
|
-
<ATC>J06AA99</ATC>
|
576
|
+
<DSCRD>Coeur-Vaisseaux Sérocytol, suppositoire</DSCRD>
|
577
|
+
<ATC>J06AA</ATC>
|
576
578
|
<IT>08.07.</IT>
|
577
579
|
<CPT/>)
|
578
580
|
expect(oddb_product_xml.index(text)).to be >= 1
|
@@ -583,7 +585,6 @@ describe Oddb2xml::Builder do
|
|
583
585
|
text2 = %( <GTIN>7680002770021</GTIN>
|
584
586
|
<PRODNO>0027701</PRODNO>
|
585
587
|
<DSCRD>Coeur-Vaisseaux Sérocytol, suppositoire</DSCRD>
|
586
|
-
<DSCRF>Coeur-Vaisseaux Sérocytol, suppositoire</DSCRF>
|
587
588
|
<ATC>J06AA</ATC>
|
588
589
|
<IT>08.07.</IT>
|
589
590
|
<CPT/>)
|
data/spec/extractor_spec.rb
CHANGED
@@ -72,6 +72,7 @@ describe Oddb2xml::RefdataExtractor do
|
|
72
72
|
no8: "62069008",
|
73
73
|
desc_de: "LEVETIRACETAM DESITIN Mini Filmtab 250 mg 30 Stk",
|
74
74
|
desc_fr: "LEVETIRACETAM DESITIN mini cpr pel 250 mg 30 pce",
|
75
|
+
desc_it: "LEVETIRACETAM DESITIN Mini Filmtab 250 mg 30 Stk",
|
75
76
|
atc_code: "N03AX14",
|
76
77
|
last_change: "2017-12-08 00:00:00 +0000",
|
77
78
|
company_name: "Desitin Pharma GmbH",
|
@@ -98,6 +99,7 @@ describe Oddb2xml::RefdataExtractor do
|
|
98
99
|
data_origin: "refdata",
|
99
100
|
desc_de: "TUBEGAZE Verband weiss Nr 12 20m Finger gross",
|
100
101
|
desc_fr: "TUBEGAZE pans tubul blanc Nr 12 20m doigts grands",
|
102
|
+
desc_it: "TUBEGAZE Verband weiss Nr 12 20m Finger gross",
|
101
103
|
atc_code: "",
|
102
104
|
company_name: "IVF HARTMANN AG",
|
103
105
|
company_ean: "7601001000896"}
|
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.7.
|
4
|
+
version: 2.7.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:
|
11
|
+
date: 1980-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -544,7 +544,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
544
544
|
- !ruby/object:Gem::Version
|
545
545
|
version: '0'
|
546
546
|
requirements: []
|
547
|
-
rubygems_version: 3.2.
|
547
|
+
rubygems_version: 3.2.26
|
548
548
|
signing_key:
|
549
549
|
specification_version: 4
|
550
550
|
summary: oddb2xml creates xml files.
|