oddb2xml 1.3.2 → 1.3.3
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.
- data/History.txt +6 -0
- data/Manifest.txt +2 -0
- data/lib/oddb2xml/builder.rb +35 -27
- data/lib/oddb2xml/extractor.rb +19 -10
- data/lib/oddb2xml/version.rb +1 -1
- data/spec/data/swissmedic_packages.html +12 -0
- data/spec/data/swissmedic_packages.xls +0 -0
- data/spec/downloader_spec.rb +17 -0
- data/spec/spec_helper.rb +3 -2
- metadata +30 -28
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -40,6 +40,8 @@ spec/data/swissmedic_info.zip
|
|
40
40
|
spec/data/swissmedic_info_2.html
|
41
41
|
spec/data/swissmedic_orphans.html
|
42
42
|
spec/data/swissmedic_orphans.xls
|
43
|
+
spec/data/swissmedic_packages.html
|
44
|
+
spec/data/swissmedic_packages.xls
|
43
45
|
spec/data/wsdl.xml
|
44
46
|
spec/data/wsdl_nonpharma.xml
|
45
47
|
spec/data/wsdl_pharma.xml
|
data/lib/oddb2xml/builder.rb
CHANGED
@@ -115,7 +115,9 @@ module Oddb2xml
|
|
115
115
|
@limitations += pac[:limitations]
|
116
116
|
end
|
117
117
|
end
|
118
|
-
|
118
|
+
# ID is no longer fixed TAG (swissmedicNo8, swissmedicNo5, pharmacode)
|
119
|
+
# limitation.xml needs all duplicate entries for this keys.
|
120
|
+
#@limitations.uniq! {|lim| lim[:] lim[:code] + lim[:type] }
|
119
121
|
@limitations.sort_by!{|lim| lim[:code] }
|
120
122
|
end
|
121
123
|
end
|
@@ -222,15 +224,22 @@ module Oddb2xml
|
|
222
224
|
) {
|
223
225
|
@limitations.each do |lim|
|
224
226
|
xml.LIM('DT' => '') {
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
227
|
+
case lim[:key]
|
228
|
+
when :swissmedic_number8
|
229
|
+
xml.SwissmedicNo8 lim[:id]
|
230
|
+
when :swissmedic_number5
|
231
|
+
xml.SwissmedicNo5 lim[:id]
|
232
|
+
when :pharmacode
|
233
|
+
xml.Pharmacode lim[:id]
|
234
|
+
end
|
235
|
+
xml.IT lim[:it]
|
236
|
+
xml.LIMTYP lim[:type]
|
237
|
+
xml.LIMVAL lim[:value]
|
229
238
|
xml.LIMNAMEBAG lim[:code] # original LIMCD
|
230
|
-
xml.LIMNIV
|
231
|
-
xml.DSCRD
|
232
|
-
xml.DSCRF
|
233
|
-
xml.VDAT
|
239
|
+
xml.LIMNIV lim[:niv]
|
240
|
+
xml.DSCRD lim[:desc_de]
|
241
|
+
xml.DSCRF lim[:desc_fr]
|
242
|
+
xml.VDAT lim[:vdate]
|
234
243
|
if lim[:del]
|
235
244
|
xml.DEL 3
|
236
245
|
end
|
@@ -670,7 +679,7 @@ module Oddb2xml
|
|
670
679
|
length = 0
|
671
680
|
%w[de fr].each do |lang|
|
672
681
|
length += @infos[lang].length
|
673
|
-
@infos[lang].
|
682
|
+
@infos[lang].each do |info|
|
674
683
|
xml.KMP(
|
675
684
|
'MONTYPE' => 'fi', # only
|
676
685
|
'LANG' => lang.upcase,
|
@@ -711,29 +720,28 @@ module Oddb2xml
|
|
711
720
|
'VALID_DATE' => datetime,
|
712
721
|
) {
|
713
722
|
length = 0
|
723
|
+
info_index = {}
|
714
724
|
%w[de fr].each do |lang|
|
715
|
-
info_index = {}
|
716
725
|
@infos[lang].each_with_index do |info, i|
|
717
726
|
info_index[info[:monid]] = i
|
718
727
|
end
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
xml.GTIN
|
730
|
-
|
731
|
-
# as orphans ?
|
732
|
-
xml.DEL @orphans.include?(number) ? true : false
|
733
|
-
}
|
728
|
+
end
|
729
|
+
@products.group_by{|seq| seq[:swissmedic_number5] }.
|
730
|
+
each_pair do |monid, products|
|
731
|
+
if info_index[monid]
|
732
|
+
xml.KP('DT' => '') {
|
733
|
+
xml.MONID monid
|
734
|
+
products.each do |seq|
|
735
|
+
seq[:packages].values.each do |pac|
|
736
|
+
if (pac[:ean] and pac[:ean][0..3] == '7680')
|
737
|
+
length += 1
|
738
|
+
xml.GTIN pac[:ean]
|
739
|
+
end
|
734
740
|
end
|
735
741
|
end
|
736
|
-
|
742
|
+
# as orphans ?
|
743
|
+
xml.DEL @orphans.include?(monid) ? true : false
|
744
|
+
}
|
737
745
|
end
|
738
746
|
end
|
739
747
|
xml.RESULT {
|
data/lib/oddb2xml/extractor.rb
CHANGED
@@ -79,20 +79,29 @@ module Oddb2xml
|
|
79
79
|
limitations[:itc] = (lims = seq.xpath('.//ItCodes/ItCode/Limitations/Limitation')) ? lims.to_a : nil
|
80
80
|
# in pac
|
81
81
|
limitations[:pac] = (lims = pac.xpath('.//Limitations/Limitation')) ? lims.to_a : nil
|
82
|
-
limitations.each_pair do |
|
83
|
-
key =
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
82
|
+
limitations.each_pair do |lim_key, lims|
|
83
|
+
key = ''
|
84
|
+
id = ''
|
85
|
+
case lim_key
|
86
|
+
when :pac
|
87
|
+
key = :swissmedic_number8
|
88
|
+
id = item[:packages][phar][key].to_s
|
89
|
+
when :seq
|
90
|
+
key = :swissmedic_number5
|
91
|
+
id = item[key].to_s
|
92
|
+
when :itc
|
93
|
+
key = :pharmacode
|
94
|
+
id = phar
|
95
|
+
end
|
96
|
+
if id.empty? or id == '0'
|
97
|
+
key = :pharmacode
|
98
|
+
id = phar .to_s
|
99
|
+
end
|
92
100
|
lims.each do |lim|
|
93
101
|
limitation = {
|
94
102
|
:it => item[:it_code],
|
95
103
|
:key => key,
|
104
|
+
:id => id,
|
96
105
|
:code => (lic = lim.at_xpath('.//LimitationCode')) ? lic.text : '',
|
97
106
|
:type => (lit = lim.at_xpath('.//LimitationType')) ? lit.text : '',
|
98
107
|
:value => (liv = lim.at_xpath('.//LimitationValue')) ? liv.text : '',
|
data/lib/oddb2xml/version.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
<!DOCTYPE HTML>
|
2
|
+
<html lang="utf-8">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<title></title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<div id="sprungmarke0_7">
|
9
|
+
<a title="Excel-Version Zugelassene Verpackungen*" href="/download/swissmedic_packages.xls"></a>
|
10
|
+
</div>
|
11
|
+
</body>
|
12
|
+
</html>
|
Binary file
|
data/spec/downloader_spec.rb
CHANGED
@@ -122,6 +122,23 @@ describe Oddb2xml::SwissmedicDownloader do
|
|
122
122
|
end
|
123
123
|
end
|
124
124
|
end
|
125
|
+
context 'packages' do
|
126
|
+
before(:each) do
|
127
|
+
setup_swissmedic_server_mock
|
128
|
+
@downloader = Oddb2xml::SwissmedicDownloader.new(:packages)
|
129
|
+
end
|
130
|
+
context 'download_by for packages xls' do
|
131
|
+
let(:bin) { @downloader.download }
|
132
|
+
it 'should return valid Binary-String' do
|
133
|
+
bin.should be_a String
|
134
|
+
bin.bytes.should_not nil
|
135
|
+
end
|
136
|
+
it 'should clean up current directory' do
|
137
|
+
bin.should_not raise_error(Timeout::Error)
|
138
|
+
File.exist?('oddb_packages.xls').should be(false)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
125
142
|
end
|
126
143
|
|
127
144
|
describe Oddb2xml::SwissmedicInfoDownloader do
|
data/spec/spec_helper.rb
CHANGED
@@ -70,8 +70,9 @@ module ServerMockHelper
|
|
70
70
|
def setup_swissmedic_server_mock
|
71
71
|
host = 'www.swissmedic.ch'
|
72
72
|
{
|
73
|
-
:orphans
|
74
|
-
:fridges
|
73
|
+
:orphans => {:html => '/daten/00081/index.html?lang=de', :xls => '/download'},
|
74
|
+
:fridges => {:html => '/daten/00080/00254/index.html?lang=de', :xls => '/download'},
|
75
|
+
:packages => {:html => '/daten/00080/00251/index.html?lang=de', :xls => '/download'},
|
75
76
|
}.each_pair do |type, urls|
|
76
77
|
# html (dummy)
|
77
78
|
stub_html_url = "http://#{host}" + urls[:html]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oddb2xml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubyzip
|
16
|
-
requirement: &
|
16
|
+
requirement: &7463900 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *7463900
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: archive-tar-minitar
|
27
|
-
requirement: &
|
27
|
+
requirement: &7463260 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *7463260
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mechanize
|
38
|
-
requirement: &
|
38
|
+
requirement: &7462720 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *7462720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: nokogiri
|
49
|
-
requirement: &
|
49
|
+
requirement: &7461920 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *7461920
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: savon
|
60
|
-
requirement: &
|
60
|
+
requirement: &7461240 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '2.0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *7461240
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: spreadsheet
|
71
|
-
requirement: &
|
71
|
+
requirement: &7460680 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *7460680
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &7459980 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *7459980
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: webmock
|
93
|
-
requirement: &
|
93
|
+
requirement: &7459340 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *7459340
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: ZenTest
|
104
|
-
requirement: &
|
104
|
+
requirement: &7458660 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *7458660
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: hoe
|
115
|
-
requirement: &
|
115
|
+
requirement: &7457740 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '3.4'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *7457740
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: rdoc
|
126
|
-
requirement: &
|
126
|
+
requirement: &7456780 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *7456780
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: rdoc
|
137
|
-
requirement: &
|
137
|
+
requirement: &7456080 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ~>
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: '3.10'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *7456080
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: hoe
|
148
|
-
requirement: &
|
148
|
+
requirement: &7455140 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ~>
|
@@ -153,7 +153,7 @@ dependencies:
|
|
153
153
|
version: '2.13'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *7455140
|
157
157
|
description: oddb2xml creates xml files using swissINDEX, BAG-XML and Swissmedic.
|
158
158
|
email: yasaka@ywesee.com, zdavatz@ywesee.com
|
159
159
|
executables:
|
@@ -203,6 +203,8 @@ files:
|
|
203
203
|
- spec/data/swissmedic_info_2.html
|
204
204
|
- spec/data/swissmedic_orphans.html
|
205
205
|
- spec/data/swissmedic_orphans.xls
|
206
|
+
- spec/data/swissmedic_packages.html
|
207
|
+
- spec/data/swissmedic_packages.xls
|
206
208
|
- spec/data/wsdl.xml
|
207
209
|
- spec/data/wsdl_nonpharma.xml
|
208
210
|
- spec/data/wsdl_pharma.xml
|