oddb2xml 2.7.7 → 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/Elexis_Artikelstamm_v5.xsd +19 -4
- data/History.txt +7 -0
- data/lib/oddb2xml/builder.rb +21 -10
- data/lib/oddb2xml/extractor.rb +8 -0
- data/lib/oddb2xml/parslet_compositions.rb +2 -0
- data/lib/oddb2xml/version.rb +1 -1
- data/shell.nix +3 -1
- data/spec/artikelstamm_spec.rb +16 -15
- data/spec/extractor_spec.rb +2 -0
- 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/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,10 @@
|
|
|
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
|
+
|
|
5
|
+
=== 2.7.8 / 14.09.22
|
|
6
|
+
* Add fields for french and italian in artikelstamm whenever possible
|
|
7
|
+
|
|
1
8
|
=== 2.7.7/ 12.08.2022
|
|
2
9
|
* Workaround for artikelstamm V3. Strip IKSCAT from A+ to A to be compatible with XSD
|
|
3
10
|
|
data/lib/oddb2xml/builder.rb
CHANGED
|
@@ -536,6 +536,8 @@ module Oddb2xml
|
|
|
536
536
|
name = refdata && refdata[:desc_de] ? refdata[:desc_de] : obj[:sequence_name]
|
|
537
537
|
elsif lang == :fr
|
|
538
538
|
name = refdata && refdata[:desc_fr] ? refdata[:desc_fr] : obj[:sequence_name]
|
|
539
|
+
elsif lang == :it
|
|
540
|
+
name = refdata[:desc_it] if refdata && refdata[:desc_it]
|
|
539
541
|
else
|
|
540
542
|
return false
|
|
541
543
|
end
|
|
@@ -568,7 +570,7 @@ module Oddb2xml
|
|
|
568
570
|
xml.GTIN ean
|
|
569
571
|
xml.PRODNO obj[:prodno] if obj[:prodno]
|
|
570
572
|
xml.DSCRD check_name(obj, :de)
|
|
571
|
-
xml.DSCRF check_name(obj, :fr)
|
|
573
|
+
xml.DSCRF check_name(obj, :fr) if check_name(obj, :fr)
|
|
572
574
|
xml.ATC obj[:atc_code] unless obj[:atc_code].empty?
|
|
573
575
|
xml.IT obj[:ith_swissmedic] if obj[:ith_swissmedic]
|
|
574
576
|
xml.CPT
|
|
@@ -1512,15 +1514,21 @@ module Oddb2xml
|
|
|
1512
1514
|
xml.GTIN pkg_gtin.to_s.rjust(13, "0")
|
|
1513
1515
|
xml.SALECD("A")
|
|
1514
1516
|
# maxLength for DSCR is 50 for Artikelstamm v3
|
|
1515
|
-
xml.DSCR(name) # for
|
|
1517
|
+
xml.DSCR(name) # for g for zur_rose
|
|
1516
1518
|
name_fr = item[:name_fr] + " " + item[:desc_fr].strip + " " + package[:desc_fr] if package && package[:desc_fr]
|
|
1517
1519
|
name_fr ||= @refdata[pkg_gtin] ? @refdata[pkg_gtin][:desc_fr] : nil
|
|
1518
1520
|
# Zugelassenen Packungen has only german names
|
|
1519
1521
|
name_fr ||= (obj[:name_fr] + ", " + obj[:desc_fr]).strip if obj[:name_fr]
|
|
1520
1522
|
# ZuRorse has only german names
|
|
1521
1523
|
name_fr ||= (item[:name_fr] + ", " + item[:desc_fr]) if item
|
|
1522
|
-
name_fr
|
|
1523
|
-
|
|
1524
|
+
xml.DSCRF(name_fr) if name_fr
|
|
1525
|
+
name_it = item[:name_it] + " " + item[:desc_it].strip + " " + package[:desc_it] if package && package[:desc_it]
|
|
1526
|
+
name_it ||= @refdata[pkg_gtin] ? @refdata[pkg_gtin][:desc_it] : nil
|
|
1527
|
+
# Zugelassenen Packungen has only german names
|
|
1528
|
+
name_it ||= (obj[:name_it] + ", " + obj[:desc_it]).strip if obj[:name_it]
|
|
1529
|
+
# ZuRorse has only german names
|
|
1530
|
+
name_it ||= (item[:name_it] + ", " + item[:desc_it]) if item
|
|
1531
|
+
xml.DSCRI(name_it) if name_it
|
|
1524
1532
|
if obj[:company_name] || obj[:company_ean]
|
|
1525
1533
|
xml.COMP do # Manufacturer
|
|
1526
1534
|
xml.NAME obj[:company_name][0..99] # limit to 100 chars as in XSD
|
|
@@ -1562,10 +1570,10 @@ module Oddb2xml
|
|
|
1562
1570
|
measure = info.pkg_size
|
|
1563
1571
|
end
|
|
1564
1572
|
xml.MEASURE measure
|
|
1565
|
-
xml.MEASUREF measure
|
|
1566
1573
|
# Die Darreichungsform dieses Items. zB Tablette(n) oder Spritze(n)
|
|
1567
1574
|
xml.DOSAGE_FORM info.galenic_form.descriptions["de"] if info.galenic_form.descriptions["de"]
|
|
1568
1575
|
xml.DOSAGE_FORMF info.galenic_form.descriptions["fr"] if info.galenic_form.descriptions["fr"]
|
|
1576
|
+
xml.DOSAGE_FORMI info.galenic_form.descriptions["it"] if info.galenic_form.descriptions["it"]
|
|
1569
1577
|
end
|
|
1570
1578
|
xml.SL_ENTRY "true" if sl_gtins.index(pkg_gtin)
|
|
1571
1579
|
xml.IKSCAT package[:swissmedic_category][0] if package[:swissmedic_category] && package[:swissmedic_category].length > 0
|
|
@@ -1633,7 +1641,8 @@ module Oddb2xml
|
|
|
1633
1641
|
emit_salecd(xml, ean13, obj)
|
|
1634
1642
|
description = obj[:desc_de] || obj[:description] # for description for zur_rose
|
|
1635
1643
|
xml.DSCR(description)
|
|
1636
|
-
xml.DSCRF(obj[:desc_fr]
|
|
1644
|
+
xml.DSCRF(obj[:desc_fr]) if obj[:desc_fr] && !obj[:desc_fr].empty?
|
|
1645
|
+
xml.DSCRI(obj[:desc_it]) if obj[:desc_it] && !obj[:desc_it].empty?
|
|
1637
1646
|
if obj[:company_ean] && !obj[:company_ean].empty?
|
|
1638
1647
|
xml.COMP do
|
|
1639
1648
|
xml.GLN obj[:company_ean]
|
|
@@ -1737,6 +1746,7 @@ module Oddb2xml
|
|
|
1737
1746
|
nr_products += 1
|
|
1738
1747
|
xml.PRODUCT do
|
|
1739
1748
|
xml.PRODNO prodno
|
|
1749
|
+
|
|
1740
1750
|
if sequence
|
|
1741
1751
|
xml.SALECD("A") # these products are always active!
|
|
1742
1752
|
name_de = "#{sequence[:name_de]} #{sequence[:desc_de]}".strip if sequence[:name_de]
|
|
@@ -1746,9 +1756,10 @@ module Oddb2xml
|
|
|
1746
1756
|
sequence[:desc_de]
|
|
1747
1757
|
end
|
|
1748
1758
|
name_fr = "#{sequence[:name_fr]} #{sequence[:desc_fr]}".strip if sequence[:name_fr]
|
|
1749
|
-
|
|
1759
|
+
name_it = "#{sequence[:name_it]} #{sequence[:desc_it]}".strip if sequence[:name_it]
|
|
1750
1760
|
override(xml, prodno, :DSCR, name_de.strip)
|
|
1751
|
-
override(xml, prodno, :DSCRF, name_fr.strip)
|
|
1761
|
+
override(xml, prodno, :DSCRF, name_fr.strip) if name_fr && !name_fr.empty?
|
|
1762
|
+
override(xml, prodno, :DSCRI, name_it.strip) if name_it && !name_it.empty?
|
|
1752
1763
|
# use overriden ATC if possibel
|
|
1753
1764
|
atc = sequence[:atc] || sequence[:atc_code]
|
|
1754
1765
|
xml.ATC atc if atc && !atc.empty?
|
|
@@ -1762,7 +1773,6 @@ module Oddb2xml
|
|
|
1762
1773
|
xml.comment "Chapter70 hack prodno #{prodno} #{obj[:description].encode(xml: :text).gsub("--", "-")}"
|
|
1763
1774
|
xml.SALECD("A") # these products are always active!
|
|
1764
1775
|
xml.DSCR obj[:description]
|
|
1765
|
-
xml.DSCRF ""
|
|
1766
1776
|
if @limitations.index(obj[:code])
|
|
1767
1777
|
xml.LIMNAMEBAG obj[:code]
|
|
1768
1778
|
used_limitations << obj[:code]
|
|
@@ -1794,7 +1804,8 @@ module Oddb2xml
|
|
|
1794
1804
|
xml.comment "Chapter70 2 hack" if lim[:chap70]
|
|
1795
1805
|
xml.LIMNAMEBAG lim[:code] # original LIMCD
|
|
1796
1806
|
xml.DSCR Oddb2xml.html_decode(lim[:desc_de])
|
|
1797
|
-
xml.DSCRF Oddb2xml.html_decode(lim[:desc_fr])
|
|
1807
|
+
xml.DSCRF Oddb2xml.html_decode(lim[:desc_fr]) if lim[:desc_fr]
|
|
1808
|
+
xml.DSCRI Oddb2xml.html_decode(lim[:desc_it]) if lim[:desc_it]
|
|
1798
1809
|
xml.LIMITATION_PTS(lim[:value].to_s.length > 1 ? lim[:value] : 1)
|
|
1799
1810
|
end
|
|
1800
1811
|
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
|
|
@@ -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/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/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"}
|