oddb2xml 2.7.7 → 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/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"}
|