oddb2xml 2.0.4 → 2.0.5
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 +5 -13
- data/Gemfile.lock +1 -1
- data/History.txt +6 -0
- data/lib/oddb2xml/builder.rb +7 -0
- data/lib/oddb2xml/calc.rb +2 -2
- data/lib/oddb2xml/cli.rb +1 -1
- data/lib/oddb2xml/downloader.rb +1 -1
- data/lib/oddb2xml/parse_compositions.rb +53 -28
- data/lib/oddb2xml/version.rb +1 -1
- data/spec/builder_spec.rb +15 -3
- data/spec/calc_spec.rb +154 -34
- metadata +34 -34
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OWVlNWVkNzJiYmNkNDk5NWNlOTAyNGRjODBiM2Y1ZjEwZWM1MTIyNg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4e7b29934682850002244797289099295579fb51
|
4
|
+
data.tar.gz: a3d02cc3c125315dc26938cb6ce77ec033f98561
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
N2IyZmMyNTZlMWU5NDkxOTQ4YmVkNGRjMmYwNjQ3OTZhY2I5NDM3ZTQ2OWYw
|
11
|
-
NTFhMmIzZTg3YWYwZTIwNmZlM2VlOTc2YzIzMDg3YjNiZjg3OTg=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YzQ4NjJjOTU1ZTMzZjRjZmY4OTc3NzM4ZGNlZTdjNDA1NGU0YmU2MDRjMjc4
|
14
|
-
NjQ2MjVkNjk1Mzk1MmY2ZjBhNTNmMGVmMjhiNjMyMGRlMWQxMTAxOWE0MGVl
|
15
|
-
ZGYwMzhiMzk1Y2U0MWZlZmE3MmZmZmQ0ZDZiZDY4MTJkMWE0NjU=
|
6
|
+
metadata.gz: 035cfd64bf3ffffa1a1e0b99c41331326dbb4cf181033c73491c89d81a785f48033e269cd004a262ba646996374c2807229960a140b9b839dca9c2adca528995
|
7
|
+
data.tar.gz: 2f50567e9e4d2e84e1bbf1ca34ae185d1b7b91f323772bde33e29059e56d7d99a2d552d8e40dc1f2d15a0eb7143d60db64d8ace9caf6b42641f1340437c70391
|
data/Gemfile.lock
CHANGED
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
=== 2.0.5 / 31.03.2015
|
2
|
+
|
3
|
+
* --calc adds boolean flag is_active_agent
|
4
|
+
* --calc fixes recognition of some substances
|
5
|
+
* --calc fixes recognition of dose/unit/qty
|
6
|
+
|
1
7
|
=== 2.0.4 / 30.03.2015
|
2
8
|
|
3
9
|
* --calc now recognizes correct labels, like 'A):' and stops when seeing first ':' in label-description
|
data/lib/oddb2xml/builder.rb
CHANGED
@@ -634,6 +634,7 @@ module Oddb2xml
|
|
634
634
|
def build_calc
|
635
635
|
packungen_xlsx = File.join(Oddb2xml::WorkDir, "swissmedic_package.xlsx")
|
636
636
|
idx = 0
|
637
|
+
return unless File.exists?(packungen_xlsx)
|
637
638
|
workbook = RubyXL::Parser.parse(packungen_xlsx)
|
638
639
|
items = {}
|
639
640
|
row_nr = 0
|
@@ -686,10 +687,16 @@ module Oddb2xml
|
|
686
687
|
composition.substances.each { |substance|
|
687
688
|
xml.SUBSTANCE {
|
688
689
|
xml.SUBSTANCE_NAME substance.name
|
690
|
+
xml.IS_ACTIVE_AGENT substance.is_active_agent
|
689
691
|
if substance.unit
|
690
692
|
xml.QTY substance.qty
|
691
693
|
xml.UNIT substance.unit
|
692
694
|
end
|
695
|
+
if substance.chemical_substance
|
696
|
+
xml.CHEMICAL_SUBSTANCE substance.chemical_substance
|
697
|
+
xml.CHEMICAL_QTY substance.chemical_qty
|
698
|
+
xml.CHEMICAL_UNIT substance.chemical_unit
|
699
|
+
end
|
693
700
|
}
|
694
701
|
}
|
695
702
|
} if composition.substances
|
data/lib/oddb2xml/calc.rb
CHANGED
@@ -170,7 +170,7 @@ public
|
|
170
170
|
unless composition
|
171
171
|
@compositions = []
|
172
172
|
else
|
173
|
-
@compositions = ParseUtil.parse_compositions(composition)
|
173
|
+
@compositions = ParseUtil.parse_compositions(composition, active_substance)
|
174
174
|
end
|
175
175
|
end
|
176
176
|
|
@@ -245,7 +245,7 @@ public
|
|
245
245
|
puts "liquid_form in einheit_M #{einheit_M} matched: #{x}" if $VERBOSE
|
246
246
|
update_rule('liquid_form einheit_M')
|
247
247
|
@measure = x
|
248
|
-
return pkg_size_to_int(pkg_size_L,
|
248
|
+
return pkg_size_to_int(pkg_size_L, false)
|
249
249
|
end
|
250
250
|
}
|
251
251
|
Measurements.each{ |x|
|
data/lib/oddb2xml/cli.rb
CHANGED
@@ -152,7 +152,7 @@ module Oddb2xml
|
|
152
152
|
end
|
153
153
|
File.open(File.join(WorkDir, file), 'w:utf-8'){ |fh| fh << output }
|
154
154
|
if @options[:calc]
|
155
|
-
FileUtils.cp(File.join(WorkDir, file), File.join(WorkDir, file.sub('.xml', '_'+Time.now.strftime("%d.%m.%Y_%H.%M")+'.xml')), :verbose =>
|
155
|
+
FileUtils.cp(File.join(WorkDir, file), File.join(WorkDir, file.sub('.xml', '_'+Time.now.strftime("%d.%m.%Y_%H.%M")+'.xml')), :verbose => false)
|
156
156
|
end
|
157
157
|
end
|
158
158
|
rescue Interrupt
|
data/lib/oddb2xml/downloader.rb
CHANGED
@@ -280,7 +280,7 @@ XML
|
|
280
280
|
return File.expand_path(file)
|
281
281
|
end
|
282
282
|
begin
|
283
|
-
FileUtils.rm(File.expand_path(file), :verbose =>
|
283
|
+
FileUtils.rm(File.expand_path(file), :verbose => !defined?(RSpec)) if File.exists?(File.expand_path(file))
|
284
284
|
page = @agent.get(@url)
|
285
285
|
if link_node = page.search(@xpath).first
|
286
286
|
link = Mechanize::Page::Link.new(link_node, @agent, page)
|
@@ -9,16 +9,34 @@
|
|
9
9
|
module ParseUtil
|
10
10
|
SCALE_P = %r{pro\s+(?<scale>(?<qty>[\d.,]+)\s*(?<unit>[kcmuµn]?[glh]))}u
|
11
11
|
ParseComposition = Struct.new("ParseComposition", :source, :label, :label_description, :substances, :galenic_form, :route_of_administration)
|
12
|
-
ParseSubstance = Struct.new("ParseSubstance", :name, :qty, :unit, :chemical_substance, :
|
12
|
+
ParseSubstance = Struct.new("ParseSubstance", :name, :qty, :unit, :chemical_substance, :chemical_qty, :chemical_unit, :is_active_agent, :dose, :cdose)
|
13
13
|
def ParseUtil.capitalize(string)
|
14
14
|
string.split(/\s+/u).collect { |word| word.capitalize }.join(' ')
|
15
15
|
end
|
16
16
|
|
17
|
-
def ParseUtil.
|
17
|
+
def ParseUtil.dose_to_qty_unit(string, filler=nil)
|
18
|
+
return nil unless string
|
19
|
+
dose = string.split(/\b\s*(?![.,\d\-]|Mio\.?)/u, 2)
|
20
|
+
if dose && (scale = SCALE_P.match(filler)) && dose[1] && !dose[1].include?('/')
|
21
|
+
unit = dose[1] << '/'
|
22
|
+
num = scale[:qty].to_f
|
23
|
+
if num <= 1
|
24
|
+
unit << scale[:unit]
|
25
|
+
else
|
26
|
+
unit << scale[:scale]
|
27
|
+
end
|
28
|
+
dose[1] = unit
|
29
|
+
elsif dose and dose.size == 2
|
30
|
+
unit = dose[1]
|
31
|
+
end
|
32
|
+
dose
|
33
|
+
end
|
34
|
+
|
35
|
+
def ParseUtil.parse_compositions(composition, active_agents_string = '')
|
18
36
|
rep_1 = '----'; to_1 = '('
|
19
37
|
rep_2 = '-----'; to_2 = ')'
|
20
38
|
rep_3 = '------'; to_3 = ','
|
21
|
-
|
39
|
+
active_agents = active_agents_string ? active_agents_string.downcase.split(/,\s+/) : []
|
22
40
|
comps = []
|
23
41
|
label_pattern = /^(?<label>A|I|B|II|C|III|D|IV|E|V|F|VI)(\):|\))\s*(?<description>[^:]+)/
|
24
42
|
composition_text = composition.gsub(/\r\n?/u, "\n")
|
@@ -39,39 +57,46 @@ module ParseUtil
|
|
39
57
|
substances = []
|
40
58
|
filler = line.split(',')[-1].sub(/\.$/, '')
|
41
59
|
filler_match = /^(?<name>[^,\d]+)\s*(?<dose>[\d\-.]+(\s*(?:(Mio\.?\s*)?(U\.\s*Ph\.\s*Eur\.|[^\s,]+))))/.match(filler)
|
42
|
-
components = line.split(/([^\(]+\([^)]+\)[^,]+|),/).each {
|
60
|
+
components = line.gsub(/(\d),(\d+)/, "\\1.\\2").split(/([^\(]+\([^)]+\)[^,]+|),/).each {
|
43
61
|
|component|
|
44
62
|
next unless component.size > 0
|
63
|
+
next if /^ratio:/i.match(component.strip)
|
45
64
|
to_consider = component.strip.split(':')[-1].gsub(to_1, rep_1).gsub(to_2, rep_2).gsub(to_3, rep_3) # remove label
|
46
65
|
# very ugly hack to ignore ,()
|
47
|
-
ptrn1 = /^(?<name>.+)\s
|
48
|
-
m =
|
66
|
+
ptrn1 = /^(?<name>.+)(\s+|$)(?<dose>[\d\-.]+(\s*(?:(Mio\.?\s*)?(U\.\s*Ph\.\s*Eur\.|[^\s,]+))))/
|
67
|
+
m = /^(?<name>.+)(\s+|$)/.match(to_consider)
|
68
|
+
m_with_dose = ptrn1.match(to_consider)
|
69
|
+
m = m_with_dose if m_with_dose
|
49
70
|
if m2 = /^(|[^:]+:\s)(E\s+\d+)$/.match(component.strip)
|
50
|
-
to_add = ParseSubstance.new(m2[2], '',
|
71
|
+
to_add = ParseSubstance.new(m2[2], '', nil, nil, nil, nil, active_agents.index(m2[2].downcase) ? true : false)
|
51
72
|
substances << to_add
|
52
73
|
elsif m
|
53
|
-
ptrn = /(\s*(?:ut|corresp\.?)\s+(?<chemical>[^\d,]+)\s*(?<cdose>[\d\-.]+(\s*(?:(Mio\.?\s*)?(U\.\s*Ph\.\s*Eur\.|[^\s,]+))(\s*[mv]\/[mv])?))?)/
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
unit = dose[1]
|
74
|
+
ptrn = /(?<name>.+)\s+(?<dose>[\d\-.]+(\s*(?:(Mio\.?\s*)?(U\.\s*Ph\.\s*Eur\.|[^\s,]+))))(\s*(?:ut|corresp\.?)\s+(?<chemical>[^\d,]+)\s*(?<cdose>[\d\-.]+(\s*(?:(Mio\.?\s*)?(U\.\s*Ph\.\s*Eur\.|[^\s,]+))(\s*[mv]\/[mv])?))?)/
|
75
|
+
m_with_chemical = ptrn.match(to_consider)
|
76
|
+
m = m_with_chemical if m_with_chemical
|
77
|
+
name = m[:name].strip
|
78
|
+
chemical = m_with_chemical ? m[:chemical] : nil
|
79
|
+
cdose = m_with_chemical ? m[:cdose] : nil
|
80
|
+
dose = m_with_dose ? m[:dose] : nil
|
81
|
+
if m_with_chemical and active_agents.index(m_with_chemical[:chemical].strip)
|
82
|
+
is_active_agent = true
|
83
|
+
name = m[:chemical].strip
|
84
|
+
dose = m[:cdose]
|
85
|
+
chemical = m[:name].strip
|
86
|
+
cdose = m[:dose]
|
87
|
+
else
|
88
|
+
is_active_agent = active_agents.index(m[:name].strip) != nil
|
69
89
|
end
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
90
|
+
unit = nil
|
91
|
+
name = name.gsub(rep_3, to_3).gsub(rep_2, to_2).gsub(rep_1, to_1)
|
92
|
+
emulsion_pattern = /\s+pro($|\s+)|emulsion|solution/i
|
93
|
+
next if emulsion_pattern.match(name)
|
94
|
+
name = name.split(/\s/).collect{ |x| x.capitalize }.join(' ').strip
|
95
|
+
chemical = chemical.split(/\s/).collect{ |x| x.capitalize }.join(' ').strip if chemical
|
96
|
+
qty, unit = ParseUtil.dose_to_qty_unit(dose, filler)
|
97
|
+
cqty, cunit = ParseUtil.dose_to_qty_unit(cdose, filler)
|
98
|
+
dose = "#{qty} #{unit}" if unit and unit.match(/\//)
|
99
|
+
substances << ParseSubstance.new(name, qty, unit, chemical, cqty, cunit, is_active_agent, dose, cdose)
|
75
100
|
end
|
76
101
|
}
|
77
102
|
comps << ParseComposition.new(line, label, label_description, substances) if substances.size > 0
|
data/lib/oddb2xml/version.rb
CHANGED
data/spec/builder_spec.rb
CHANGED
@@ -18,6 +18,16 @@ module Kernel
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
def setup_package_xlsx_for_calc
|
22
|
+
src = File.expand_path(File.join(File.dirname(__FILE__), 'data', 'swissmedic_package-galenic.xlsx'))
|
23
|
+
dest = File.join(Oddb2xml::WorkDir, 'swissmedic_package.xlsx')
|
24
|
+
FileUtils.makedirs(Oddb2xml::WorkDir)
|
25
|
+
FileUtils.cp(src, dest, { :verbose => false, :preserve => true})
|
26
|
+
FileUtils.cp(File.expand_path(File.join(File.dirname(__FILE__), 'data', 'XMLPublications.zip')),
|
27
|
+
File.join(Oddb2xml::WorkDir, 'downloads'),
|
28
|
+
{ :verbose => false, :preserve => true})
|
29
|
+
end
|
30
|
+
|
21
31
|
def check_validation_via_xsd
|
22
32
|
@oddb2xml_xsd = File.expand_path(File.join(File.dirname(__FILE__), '..', 'oddb2xml.xsd'))
|
23
33
|
File.exists?(@oddb2xml_xsd).should eq true
|
@@ -181,6 +191,7 @@ describe Oddb2xml::Builder do
|
|
181
191
|
let(:cli) do
|
182
192
|
options = Oddb2xml::Options.new
|
183
193
|
options.parser.parse!('--append -I 80 -e'.split(' '))
|
194
|
+
setup_package_xlsx_for_calc
|
184
195
|
Oddb2xml::Cli.new(options.opts)
|
185
196
|
end
|
186
197
|
|
@@ -208,11 +219,12 @@ describe Oddb2xml::Builder do
|
|
208
219
|
let(:cli) do
|
209
220
|
options = Oddb2xml::Options.new
|
210
221
|
options.parser.parse!('-e'.split(' '))
|
222
|
+
cleanup_directories_before_run
|
223
|
+
setup_package_xlsx_for_calc
|
211
224
|
Oddb2xml::Cli.new(options.opts)
|
212
225
|
end
|
213
226
|
|
214
227
|
it 'should contain the correct prices' do
|
215
|
-
cleanup_directories_before_run
|
216
228
|
res = buildr_capture(:stdout){ cli.run }
|
217
229
|
@article_xml = File.expand_path(File.join(Oddb2xml::WorkDir, 'oddb_article.xml'))
|
218
230
|
File.exists?(@article_xml).should eq true
|
@@ -230,7 +242,6 @@ describe Oddb2xml::Builder do
|
|
230
242
|
end
|
231
243
|
end
|
232
244
|
|
233
|
-
|
234
245
|
def checkItemForRefdata(doc, pharmacode, isRefdata)
|
235
246
|
article = XPath.match( doc, "//ART[PHAR=#{pharmacode.to_s}]").first
|
236
247
|
name = article.elements['DSCRD'].text
|
@@ -434,12 +445,14 @@ describe Oddb2xml::Builder do
|
|
434
445
|
let(:cli) do
|
435
446
|
options = Oddb2xml::Options.new
|
436
447
|
options.parser.parse!('-e --skip-download'.split(' '))
|
448
|
+
setup_package_xlsx_for_calc
|
437
449
|
Oddb2xml::Cli.new(options.opts)
|
438
450
|
end
|
439
451
|
|
440
452
|
let(:cli_I80) do
|
441
453
|
options = Oddb2xml::Options.new
|
442
454
|
options.parser.parse!('-e -I 80 --skip-download'.split(' '))
|
455
|
+
setup_package_xlsx_for_calc
|
443
456
|
Oddb2xml::Cli.new(options.opts)
|
444
457
|
end
|
445
458
|
search_path_reseller = "//ART[PHAR=0023722]/ARTPRI[PTYP='RESELLERPUB']/PRICE"
|
@@ -567,5 +580,4 @@ describe Oddb2xml::Builder do
|
|
567
580
|
IO.readlines(dat_filename).each{ |line| check_article(line, true, true) }
|
568
581
|
end
|
569
582
|
end
|
570
|
-
|
571
583
|
end
|
data/spec/calc_spec.rb
CHANGED
@@ -12,6 +12,7 @@ require "#{Dir.pwd}/lib/oddb2xml/calc"
|
|
12
12
|
include Oddb2xml
|
13
13
|
|
14
14
|
describe Oddb2xml::Calc do
|
15
|
+
RunAllTests = true
|
15
16
|
|
16
17
|
after(:each) do
|
17
18
|
FileUtils.rm(Dir.glob(File.join(Oddb2xml::WorkDir, '*.*')))
|
@@ -138,6 +139,8 @@ Corresp. 5300 kJ.",
|
|
138
139
|
#:count => 5, :multi => 1
|
139
140
|
}
|
140
141
|
)
|
142
|
+
|
143
|
+
if RunAllTests
|
141
144
|
context 'should return correct value for liquid' do
|
142
145
|
pkg_size_L = '1 x 5 x 200'
|
143
146
|
einheit_M = 'ml'
|
@@ -317,6 +320,13 @@ Corresp. 5300 kJ.",
|
|
317
320
|
XPath.match( doc, "//ARTICLE[GTIN='7680555940018']/COMPOSITIONS/COMPOSITION/LABEL_DESCRIPTION").first.text.should eq 'Glucoselösung'
|
318
321
|
XPath.match( doc, "//ARTICLE[GTIN='7680555940018']/COMPOSITIONS/COMPOSITION/LABEL").each{ |x| puts x.text }
|
319
322
|
XPath.match( doc, "//ARTICLE[GTIN='7680555940018']/COMPOSITIONS/COMPOSITION/LABEL").last.text.should eq 'III'
|
323
|
+
XPath.match( doc, "//ARTICLE[GTIN='7680555940018']/COMPOSITIONS/COMPOSITION/LABEL").last.text.should eq 'III'
|
324
|
+
XPath.match( doc, "//ARTICLE[GTIN='7680434541015']/COMPOSITIONS/COMPOSITION/SUBSTANCES/SUBSTANCE/SUBSTANCE_NAME").last.text.should eq 'Matricariae Extractum Isopropanolicum Liquidum'
|
325
|
+
XPath.match( doc, "//ARTICLE[GTIN='7680434541015']/COMPOSITIONS/COMPOSITION/SUBSTANCES/SUBSTANCE/CHEMICAL_SUBSTANCE").last.text.should eq 'Levomenolum'
|
326
|
+
XPath.match( doc, "//ARTICLE[GTIN='7680434541015']/COMPOSITIONS/COMPOSITION/SUBSTANCES/SUBSTANCE/QTY").last.text.should eq '98.9'
|
327
|
+
XPath.match( doc, "//ARTICLE[GTIN='7680434541015']/COMPOSITIONS/COMPOSITION/SUBSTANCES/SUBSTANCE/UNIT").last.text.should eq 'g/100 g'
|
328
|
+
XPath.match( doc, "//ARTICLE[GTIN='7680434541015']/COMPOSITIONS/COMPOSITION/SUBSTANCES/SUBSTANCE/CHEMICAL_QTY").last.text.should eq '10-50'
|
329
|
+
XPath.match( doc, "//ARTICLE[GTIN='7680434541015']/COMPOSITIONS/COMPOSITION/SUBSTANCES/SUBSTANCE/CHEMICAL_UNIT").last.text.should eq 'mg/100 g'
|
320
330
|
end
|
321
331
|
end
|
322
332
|
|
@@ -358,10 +368,10 @@ Corresp. 5300 kJ.",
|
|
358
368
|
context 'find correct result compositions' do
|
359
369
|
result = Calc.new(nil, nil, nil, 'rutosidum trihydricum, aescinum', 'rutosidum trihydricum 20 mg, aescinum 25 mg, aromatica, excipiens pro compresso.')
|
360
370
|
specify { expect(result.compositions.first.substances.first.name).to eq 'Rutosidum Trihydricum' }
|
361
|
-
specify { expect(result.compositions.first.substances.first.qty).to eq 20}
|
371
|
+
specify { expect(result.compositions.first.substances.first.qty.to_f).to eq 20}
|
362
372
|
specify { expect(result.compositions.first.substances.first.unit).to eq 'mg'}
|
363
373
|
specify { expect(result.compositions.first.substances[1].name).to eq 'Aescinum' }
|
364
|
-
specify { expect(result.compositions.first.substances[1].qty).to eq 25}
|
374
|
+
specify { expect(result.compositions.first.substances[1].qty.to_f).to eq 25}
|
365
375
|
specify { expect(result.compositions.first.substances[1].unit).to eq 'mg'}
|
366
376
|
end
|
367
377
|
|
@@ -377,14 +387,14 @@ Corresp. 5300 kJ.",
|
|
377
387
|
specify { expect(bifidobacterium).not_to eq nil}
|
378
388
|
if bifidobacterium
|
379
389
|
specify { expect(bifidobacterium.name).to eq 'Bifidobacterium Infantis Min.' }
|
380
|
-
skip { expect(bifidobacterium.qty).to eq '10^9'}
|
390
|
+
skip { expect(bifidobacterium.qty.to_f).to eq '10^9'}
|
381
391
|
skip { expect(bifidobacterium.unit).to eq 'CFU'}
|
382
392
|
end
|
383
393
|
e_127 = info.compositions.first.substances.find{ |x| x.name.match(/E 127/i) }
|
384
394
|
skip { expect(e_127).not_to eq nil}
|
385
395
|
if e_127
|
386
396
|
specify { expect(e_127.name).to eq 'E 127' }
|
387
|
-
specify { expect(e_127.unit).to eq
|
397
|
+
specify { expect(e_127.unit).to eq nil}
|
388
398
|
end
|
389
399
|
end
|
390
400
|
|
@@ -400,14 +410,14 @@ Corresp. 5300 kJ.",
|
|
400
410
|
specify { expect(globulina).not_to eq nil}
|
401
411
|
if globulina
|
402
412
|
specify { expect(globulina.name).to eq 'Globulina Equina (immunisé Avec Coeur, Tissu Pulmonaire, Reins De Porcins)' }
|
403
|
-
specify { expect(globulina.qty).to eq 8.0}
|
413
|
+
specify { expect(globulina.qty.to_f).to eq 8.0}
|
404
414
|
specify { expect(globulina.unit).to eq 'mg'}
|
405
415
|
end
|
406
416
|
e_216 = info.compositions.first.substances.find{ |x| x.name.match(/E 216/i) }
|
407
417
|
specify { expect(e_216).not_to eq nil}
|
408
418
|
if e_216
|
409
419
|
specify { expect(e_216.name).to eq 'E 216' }
|
410
|
-
specify { expect(e_216.unit).to eq
|
420
|
+
specify { expect(e_216.unit).to eq nil}
|
411
421
|
end
|
412
422
|
e_218 = info.compositions.first.substances.find{ |x| x.name.match(/E 218/i) }
|
413
423
|
specify { expect(e_218).not_to eq nil}
|
@@ -419,9 +429,11 @@ Corresp. 5300 kJ.",
|
|
419
429
|
'glucosum anhydricum, zinci acetas dihydricus, isoleucinum, leucinum',
|
420
430
|
text
|
421
431
|
)
|
432
|
+
# Line_1 = 'I) Glucoselösung: glucosum anhydricum 150 g ut glucosum monohydricum, natrii dihydrogenophosphas dihydricus 2.34 g, zinci acetas dihydricus 6.58 mg, aqua ad iniectabilia q.s. ad solutionem pro 500 ml.'
|
422
433
|
specify { expect(result.compositions.first.substances.first.name).to eq 'Glucosum Anhydricum'}
|
423
434
|
specify { expect(result.compositions.first.substances.first.chemical_substance).to eq 'Glucosum Monohydricum'}
|
424
|
-
specify { expect(result.compositions.first.substances.first.
|
435
|
+
specify { expect(result.compositions.first.substances.first.qty.to_f).to eq 150.0}
|
436
|
+
specify { expect(result.compositions.first.substances.first.unit).to eq 'g/500 ml'}
|
425
437
|
|
426
438
|
specify { expect(result.compositions[0].source).to eq Line_1}
|
427
439
|
specify { expect(result.compositions[0].label).to eq 'I'}
|
@@ -430,11 +442,11 @@ Corresp. 5300 kJ.",
|
|
430
442
|
specify { expect(result.compositions[2].label).to eq 'III' }
|
431
443
|
glucosum = result.compositions.first.substances.first
|
432
444
|
specify { expect(glucosum.name).to eq 'Glucosum Anhydricum' }
|
433
|
-
specify { expect(glucosum.qty).to eq 150.0}
|
445
|
+
specify { expect(glucosum.qty.to_f).to eq 150.0}
|
434
446
|
specify { expect(glucosum.unit).to eq 'g/500 ml'}
|
435
447
|
specify { expect(result.compositions.size).to eq 3}
|
436
448
|
specify { expect(result.compositions[0].substances.size).to eq 3}
|
437
|
-
specify { expect(result.compositions[1].substances.size).to eq
|
449
|
+
specify { expect(result.compositions[1].substances.size).to eq 5} # should have glycerolum, natrii oleas, aqua
|
438
450
|
specify { expect(result.compositions[2].substances.size).to eq 4}
|
439
451
|
specify { expect(result.compositions[1].source).to eq Line_2}
|
440
452
|
specify { expect(result.compositions[2].source).to eq Line_3}
|
@@ -444,7 +456,7 @@ Corresp. 5300 kJ.",
|
|
444
456
|
specify { expect(lecithinum).not_to eq nil}
|
445
457
|
if lecithinum
|
446
458
|
specify { expect(lecithinum.name).to eq 'Lecithinum Ex Ovo' }
|
447
|
-
specify { expect(lecithinum.qty).to eq 3.0}
|
459
|
+
specify { expect(lecithinum.qty.to_f).to eq 3.0}
|
448
460
|
specify { expect(lecithinum.unit).to eq 'g/250 ml'}
|
449
461
|
end
|
450
462
|
|
@@ -453,7 +465,7 @@ Corresp. 5300 kJ.",
|
|
453
465
|
specify { expect(leucinum).not_to eq nil}
|
454
466
|
if leucinum
|
455
467
|
specify { expect(leucinum.name).to eq 'Leucinum' }
|
456
|
-
specify { expect(leucinum.qty).to eq 3.13}
|
468
|
+
specify { expect(leucinum.qty.to_f).to eq 3.13}
|
457
469
|
specify { expect(leucinum.unit).to eq 'g/400 ml'}
|
458
470
|
end
|
459
471
|
leucinum_I = result.compositions[0].substances.find{ |x| x.name.eql?('Leucinum') }
|
@@ -463,19 +475,9 @@ Corresp. 5300 kJ.",
|
|
463
475
|
aqua = result.compositions[2].substances.find{ |x| /aqua ad/i.match(x.name) }
|
464
476
|
specify { expect(aqua).to eq nil}
|
465
477
|
end
|
478
|
+
end
|
466
479
|
|
467
|
-
|
468
|
-
info = Calc.new(tst_grains_de_valse.name_C, tst_grains_de_valse.package_size_L, tst_grains_de_valse.einheit_M, tst_grains_de_valse.active_substance_0, tst_grains_de_valse.composition_P)
|
469
|
-
sennosidum = info.compositions.first.substances.find{ |x| x.name.match(/Sennae/i) }
|
470
|
-
specify { expect(sennosidum).not_to eq nil}
|
471
|
-
if sennosidum
|
472
|
-
specify { expect(sennosidum.name).to eq 'Sennae Folii Extractum Methanolicum Siccum 78-104 Mg Corresp. Sennosidum B' }
|
473
|
-
specify { expect(sennosidum.chemical_substance).to eq 'Sennosidum B' }
|
474
|
-
specify { expect(sennosidum.chemical_dose).to eq '12.5 mg' }
|
475
|
-
specify { expect(sennosidum.qty).to eq 12.5}
|
476
|
-
specify { expect(sennosidum.unit).to eq 'mg'}
|
477
|
-
end
|
478
|
-
end
|
480
|
+
if RunAllTests
|
479
481
|
|
480
482
|
context 'find correct result compositions for fluticasoni with chemical_dose' do
|
481
483
|
info = ParseUtil.parse_compositions('fluticasoni-17 propionas 100 µg, lactosum monohydricum q.s. ad pulverem pro 25 mg.')
|
@@ -483,8 +485,9 @@ Corresp. 5300 kJ.",
|
|
483
485
|
specify { expect(info.first.substances.size).to eq 1 }
|
484
486
|
fluticasoni = info.first.substances.find{ |x| x.name.match(/Fluticasoni/i) }
|
485
487
|
specify { expect(fluticasoni.name).to eq 'Fluticasoni-17 Propionas' }
|
486
|
-
specify { expect(fluticasoni.qty).to eq 100.0 }
|
488
|
+
specify { expect(fluticasoni.qty.to_f).to eq 100.0 }
|
487
489
|
specify { expect(fluticasoni.unit).to eq 'µg/25 mg' }
|
490
|
+
specify { expect(fluticasoni.dose).to eq "100 µg/25 mg" }
|
488
491
|
lactosum = info.first.substances.find{ |x| x.name.match(/Lactosum/i) }
|
489
492
|
specify { expect(lactosum).to eq nil }
|
490
493
|
end
|
@@ -493,10 +496,10 @@ Corresp. 5300 kJ.",
|
|
493
496
|
txt = 'calcium carbonicum hahnemanni C7 5 %, chamomilla recutita D5 22.5 %, magnesii hydrogenophosphas trihydricus C5 50 %, passiflora incarnata D5 22.5 %, xylitolum, excipiens ad globulos.'
|
494
497
|
info = ParseUtil.parse_compositions(txt)
|
495
498
|
specify { expect(info.size).to eq 1 }
|
496
|
-
specify { expect(info.first.substances.size).to eq
|
499
|
+
specify { expect(info.first.substances.size).to eq 6 }
|
497
500
|
recutita = info.first.substances.find{ |x| x.name.match(/recutita/i) }
|
498
501
|
specify { expect(recutita.name).to eq 'Chamomilla Recutita D5' }
|
499
|
-
specify { expect(recutita.qty).to eq 22.5 }
|
502
|
+
specify { expect(recutita.qty.to_f).to eq 22.5 }
|
500
503
|
specify { expect(recutita.unit).to eq '%' }
|
501
504
|
end
|
502
505
|
|
@@ -505,9 +508,9 @@ Corresp. 5300 kJ.",
|
|
505
508
|
info = ParseUtil.parse_compositions(txt)
|
506
509
|
specify { expect(info.size).to eq 1 }
|
507
510
|
specify { expect(info.first.substances.size).to eq 3 }
|
508
|
-
procainum = info.first.substances.find{ |x| x.name.match(/
|
511
|
+
procainum = info.first.substances.find{ |x| x.name.match(/procain/i) }
|
509
512
|
specify { expect(procainum.name).to eq 'Procainum' }
|
510
|
-
specify { expect(procainum.qty).to eq 10.0 }
|
513
|
+
specify { expect(procainum.qty.to_f).to eq 10.0 }
|
511
514
|
specify { expect(procainum.unit).to eq 'mg/g' }
|
512
515
|
end
|
513
516
|
|
@@ -518,10 +521,10 @@ Corresp. 5300 kJ.",
|
|
518
521
|
info = ParseUtil.parse_compositions(txt)
|
519
522
|
specify { expect(info.first.label).to eq 'I' }
|
520
523
|
specify { expect(info.size).to eq 2 }
|
521
|
-
specify { expect(info.first.substances.size).to eq
|
524
|
+
specify { expect(info.first.substances.size).to eq 11 }
|
522
525
|
toxoidum = info.first.substances.find{ |x| x.name.match(/Toxoidum Diphtheriae/i) }
|
523
526
|
specify { expect(toxoidum.name).to eq 'Toxoidum Diphtheriae' }
|
524
|
-
specify { expect(toxoidum.qty).to eq 30.0 }
|
527
|
+
specify { expect(toxoidum.qty.to_f).to eq 30.0 }
|
525
528
|
specify { expect(toxoidum.unit).to eq 'U.I./ml' }
|
526
529
|
end
|
527
530
|
|
@@ -533,12 +536,11 @@ Corresp. 5300 kJ.",
|
|
533
536
|
'albuminum humanum colloidale, stanni(II) chloridum dihydricum',
|
534
537
|
text
|
535
538
|
)
|
536
|
-
# pp info; binding.pry
|
537
539
|
specify { expect(info.compositions.size).to eq 2 }
|
538
|
-
specify { expect(info.compositions.first.substances.size).to eq
|
540
|
+
specify { expect(info.compositions.first.substances.size).to eq 5 }
|
539
541
|
poloxamerum = info.compositions.first.substances.find{ |x| x.name.match(/poloxamerum/i) }
|
540
542
|
skip { expect(poloxamerum.name).to eq 'Poloxamerum 238' }
|
541
|
-
skip { expect(poloxamerum.qty).to eq "" }
|
543
|
+
skip { expect(poloxamerum.qty.to_f).to eq "" }
|
542
544
|
specify { expect(poloxamerum.unit).to eq "" }
|
543
545
|
end
|
544
546
|
|
@@ -548,9 +550,127 @@ Corresp. 5300 kJ.",
|
|
548
550
|
'pollinis allergeni extractum',
|
549
551
|
text
|
550
552
|
)
|
551
|
-
# pp info; binding.pry
|
552
553
|
specify { expect(info.compositions.size).to eq 1 }
|
553
554
|
specify { expect(info.compositions.first.label).to eq 'A' }
|
554
555
|
end
|
555
556
|
|
557
|
+
context 'find correct result for 47837 Ecodurex' do
|
558
|
+
text = "amiloridi hydrochloridum dihydricum 5.67 mg corresp. amiloridi hydrochloridum anhydricum 5 mg, hydrochlorothiazidum 50 mg, excipiens pro compresso."
|
559
|
+
info = Calc.new('Ecodurex', nil, nil,
|
560
|
+
'amiloridi hydrochloridum anhydricum, hydrochlorothiazidum',
|
561
|
+
text
|
562
|
+
)
|
563
|
+
specify { expect(info.compositions.size).to eq 1 }
|
564
|
+
specify { expect(info.compositions.first.label).to eq nil }
|
565
|
+
substance1 = info.compositions.first.substances.find{ |x| x.name.match(/hydrochlorothiazidum/i) }
|
566
|
+
specify { expect(substance1.name).to eq 'Hydrochlorothiazidum' }
|
567
|
+
substance3 = info.compositions.first.substances.find{ |x| x.name.match(/amiloridi hydrochloridum/i) }
|
568
|
+
specify { expect(substance3.class).to eq Struct::ParseSubstance }
|
569
|
+
if substance3
|
570
|
+
specify { expect(substance3.name).to eq 'Amiloridi Hydrochloridum Anhydricum' }
|
571
|
+
specify { expect(substance3.chemical_substance).to eq 'Amiloridi Hydrochloridum Dihydricum' }
|
572
|
+
specify { expect(substance3.qty.to_f).to eq 5 }
|
573
|
+
specify { expect(substance3.unit).to eq 'mg' }
|
574
|
+
specify { expect(substance3.chemical_qty.to_f).to eq 5.67 }
|
575
|
+
specify { expect(substance3.chemical_unit).to eq 'mg' }
|
576
|
+
specify { expect(substance3.is_active_agent).to eq true }
|
577
|
+
end
|
578
|
+
|
579
|
+
end
|
580
|
+
|
581
|
+
context 'find correct result for 45079 Dr. Reckeweg R 51 Thyreosan, gouttes homéopathiques' do
|
582
|
+
text = "atropa belladonna D30, iodum D30, lapis albus D12, lycopus virginicus D12, natrii chloridum D30 ana partes 0.1 ml, excipiens ad solutionem pro 1 ml, corresp. ethanolum 35 % V/V."
|
583
|
+
info = Calc.new('Dr. Reckeweg R 51 Thyreosan, gouttes homéopathiques', nil, nil,
|
584
|
+
'atropa belladonna D30, iodum D30, lapis albus D12, lycopus virginicus D12, natrii chloridum D30',
|
585
|
+
text
|
586
|
+
)
|
587
|
+
specify { expect(info.compositions.size).to eq 1 }
|
588
|
+
specify { expect(info.compositions.first.label).to eq nil }
|
589
|
+
substance1 = info.compositions.first.substances.find{ |x| x.name.match(/atropa belladonna/i) }
|
590
|
+
specify { expect(substance1.name).to eq 'Atropa Belladonna D30' }
|
591
|
+
substance2 = info.compositions.first.substances.find{ |x| x.name.match(/lycopus virginicus/i) }
|
592
|
+
specify { expect(substance2.class).to eq Struct::ParseSubstance }
|
593
|
+
substance3 = info.compositions.first.substances.find{ |x| x.name.match(/lapis albus/i) }
|
594
|
+
specify { expect(substance3.class).to eq Struct::ParseSubstance }
|
595
|
+
if substance3
|
596
|
+
specify { expect(substance3.name).to eq 'Lapis Albus D12' }
|
597
|
+
end
|
598
|
+
end
|
599
|
+
|
600
|
+
context 'find correct result for 00417 Tollwut Impfstoff Mérieu' do
|
601
|
+
text = "Praeparatio cryodesiccata: virus rabiei inactivatum (Stamm: Wistar Rabies PM/WI 38-1503-3M) min. 2.5 U.I., albuminum humanum, neomycini sulfas, residui: phenolsulfonphthaleinum.
|
602
|
+
Solvens: aqua ad iniectabilia q.s. ad suspensionem pro 1 ml."
|
603
|
+
info = Calc.new('Tollwut Impfstoff Mérieu', nil, nil,
|
604
|
+
'virus rabiei inactivatum (Stamm: Wistar Rabies PM/WI 38-1503-3M) ',
|
605
|
+
text
|
606
|
+
)
|
607
|
+
specify { expect(info.compositions.size).to eq 1 }
|
608
|
+
specify { expect(info.compositions.first.label).to eq nil }
|
609
|
+
substance1 = info.compositions.first.substances.find{ |x| x.name.match(/virus rabiei inactivatu/i) }
|
610
|
+
specify { expect(substance1).should_not be nil }
|
611
|
+
if substance1
|
612
|
+
specify { expect(substance1.name).to eq 'Virus Rabiei Inactivatum (Stamm: Wistar Rabies Pm/wi 38-1503-3M)' }
|
613
|
+
end
|
614
|
+
substance2 = info.compositions.first.substances.find{ |x| x.name.match(/albuminum humanu/i) }
|
615
|
+
if substance2
|
616
|
+
specify { expect(substance2.name).to eq 'Albuminum Humanum' }
|
617
|
+
end
|
618
|
+
specify { expect(substance2.class).to eq Struct::ParseSubstance }
|
619
|
+
substance3 = info.compositions.first.substances.find{ |x| x.name.match(/neomycini sulfas/i) }
|
620
|
+
specify { expect(substance3.class).to eq Struct::ParseSubstance }
|
621
|
+
if substance3
|
622
|
+
specify { expect(substance3.name).to eq 'Neomycini Sulfas' }
|
623
|
+
end
|
624
|
+
end
|
625
|
+
|
626
|
+
context 'find correct result compositions for tst_grains_de_valse with chemical_dose' do
|
627
|
+
info = Calc.new(tst_grains_de_valse.name_C, tst_grains_de_valse.package_size_L, tst_grains_de_valse.einheit_M, tst_grains_de_valse.active_substance_0, tst_grains_de_valse.composition_P)
|
628
|
+
sennosidum = info.compositions.first.substances.find{ |x| x.name.match(/Senn/i) }
|
629
|
+
specify { expect(sennosidum).not_to eq nil}
|
630
|
+
if sennosidum
|
631
|
+
specify { expect(sennosidum.name).to eq 'Sennae Folii Extractum Methanolicum Siccum' }
|
632
|
+
specify { expect(sennosidum.dose).to eq '78-104 mg' }
|
633
|
+
specify { expect(sennosidum.qty.to_f).to eq 78.0}
|
634
|
+
specify { expect(sennosidum.unit).to eq 'mg'}
|
635
|
+
specify { expect(sennosidum.chemical_substance).to eq 'Sennosidum B' }
|
636
|
+
specify { expect(sennosidum.chemical_qty.to_f).to eq 12.5 }
|
637
|
+
specify { expect(sennosidum.chemical_unit).to eq 'mg' }
|
638
|
+
end
|
639
|
+
end
|
640
|
+
|
641
|
+
end
|
642
|
+
context 'find correct result compositions for 56829 Iscador Ag 0,01 mg' do
|
643
|
+
text = 'extractum aquosum liquidum fermentatum 0.05 mg ex viscum album (mali) recens 0.01 mg, natrii chloridum, argenti carbonas (0,01 ug pro 100 mg herba recente), aqua q.s. ad solutionem pro 1 ml.'
|
644
|
+
info = Calc.new("Iscador M c. Arg. 0,01 mg, Injektionslösung, anthroposophisches Arzneimittel", '2 x 7', 'Ampulle(n)',
|
645
|
+
'viscum album (mali) recens, argenti carbonas (0,01 ug pro 100 mg herba recente)',
|
646
|
+
text)
|
647
|
+
specify { expect(info.pkg_size).to eq '2 x 7' }
|
648
|
+
specify { expect(info.selling_units).to eq 14 }
|
649
|
+
specify { expect(info.compositions.first.substances.size).to eq 2 }
|
650
|
+
viscum = info.compositions.first.substances.find{ |x| x.name.match(/viscum/i) }
|
651
|
+
specify { expect(viscum).not_to eq nil}
|
652
|
+
if viscum
|
653
|
+
specify { expect(viscum.name).to eq 'Extractum Aquosum Liquidum Fermentatum 0.05 Mg Ex Viscum Album (mali) Recens' }
|
654
|
+
specify { expect(viscum.dose).to eq '0.01 mg/ml' }
|
655
|
+
specify { expect(viscum.qty.to_f).to eq 0.01}
|
656
|
+
specify { expect(viscum.unit).to eq 'mg/ml'}
|
657
|
+
specify { expect(viscum.chemical_substance).to eq nil }
|
658
|
+
specify { expect(viscum.chemical_qty).to eq nil }
|
659
|
+
specify { expect(viscum.chemical_unit).to eq nil }
|
660
|
+
end
|
661
|
+
# we don't handle argenti at the moment, because it skipped as it contain pro in its name
|
662
|
+
if false
|
663
|
+
argenti = info.compositions.first.substances.find{ |x| x.name.match(/Argenti/i) }
|
664
|
+
specify { expect(argenti).not_to eq nil}
|
665
|
+
if argenti
|
666
|
+
specify { expect(argenti.name).to eq 'Argenti Carbonas' }
|
667
|
+
skip { expect(argenti.dose).to eq '0.01 mg/ml' } # 100 mg/ml
|
668
|
+
skip { expect(argenti.qty.to_f).to eq 0.01}
|
669
|
+
skip { expect(argenti.unit).to eq 'mg/ml'}
|
670
|
+
specify { expect(argenti.chemical_substance).to eq nil }
|
671
|
+
specify { expect(argenti.chemical_qty).to eq nil }
|
672
|
+
specify { expect(argenti.chemical_unit).to eq nil }
|
673
|
+
end
|
674
|
+
end
|
675
|
+
end
|
556
676
|
end
|
metadata
CHANGED
@@ -1,195 +1,195 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oddb2xml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yasuhiro Asaka, Zeno R.R. Davatz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.1.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.1.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: archive-tar-minitar
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.5.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.5.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mechanize
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 2.5.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.5.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: nokogiri
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 1.5.10
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 1.5.10
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: savon
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 2.4.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 2.4.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: spreadsheet
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 1.0.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 1.0.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rubyXL
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - ~>
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: 3.3.1
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - ~>
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 3.3.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: sax-machine
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - ~>
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: 0.1.0
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - ~>
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 0.1.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: bundler
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: rake
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '0'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: rspec
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- -
|
157
|
+
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: '0'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- -
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: webmock
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- -
|
171
|
+
- - ">="
|
172
172
|
- !ruby/object:Gem::Version
|
173
173
|
version: '0'
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- -
|
178
|
+
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: rdoc
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- -
|
185
|
+
- - ">="
|
186
186
|
- !ruby/object:Gem::Version
|
187
187
|
version: '0'
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- -
|
192
|
+
- - ">="
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0'
|
195
195
|
description: oddb2xml creates xml files using swissINDEX, BAG-XML and Swissmedic.
|
@@ -199,9 +199,9 @@ executables:
|
|
199
199
|
extensions: []
|
200
200
|
extra_rdoc_files: []
|
201
201
|
files:
|
202
|
-
- .gitignore
|
203
|
-
- .rspec
|
204
|
-
- .travis.yml
|
202
|
+
- ".gitignore"
|
203
|
+
- ".rspec"
|
204
|
+
- ".travis.yml"
|
205
205
|
- Gemfile
|
206
206
|
- Gemfile.lock
|
207
207
|
- History.txt
|
@@ -291,17 +291,17 @@ require_paths:
|
|
291
291
|
- lib
|
292
292
|
required_ruby_version: !ruby/object:Gem::Requirement
|
293
293
|
requirements:
|
294
|
-
- -
|
294
|
+
- - ">="
|
295
295
|
- !ruby/object:Gem::Version
|
296
296
|
version: '0'
|
297
297
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
298
298
|
requirements:
|
299
|
-
- -
|
299
|
+
- - ">="
|
300
300
|
- !ruby/object:Gem::Version
|
301
301
|
version: '0'
|
302
302
|
requirements: []
|
303
303
|
rubyforge_project:
|
304
|
-
rubygems_version: 2.
|
304
|
+
rubygems_version: 2.4.5
|
305
305
|
signing_key:
|
306
306
|
specification_version: 4
|
307
307
|
summary: oddb2xml creates xml files.
|