oddb2xml 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,9 @@
1
+ === 1.3.3 / 05.02.2013
2
+
3
+ * Add spec example for downloading of Packungen.xls
4
+ * Chaneg ID tag of limitation.xml
5
+ * update to group GTINs of fi_product.xml by MONID
6
+
1
7
  === 1.3.2 / 04.02.2013
2
8
 
3
9
  * Fix Swissmedic-Number extract from swissmedicinfo
@@ -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
@@ -115,7 +115,9 @@ module Oddb2xml
115
115
  @limitations += pac[:limitations]
116
116
  end
117
117
  end
118
- @limitations.uniq! {|lim| lim[:code] + lim[:type] }
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
- xml.LIMCD lim[:key] # swissmedic_number8, swissmedic_number5 or pharmacode
226
- xml.IT lim[:it]
227
- xml.LIMTYP lim[:type]
228
- xml.LIMVAL lim[:value]
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 lim[:niv]
231
- xml.DSCRD lim[:desc_de]
232
- xml.DSCRF lim[:desc_fr]
233
- xml.VDAT lim[:vdate]
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].each_with_index do |info, i|
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
- # prod
720
- @products.each do |seq|
721
- seq[:packages].values.each do |pac|
722
- if pac[:swissmedic_number8] =~ /(\d{5})(\d{3})/
723
- number = $1.to_s
724
- if ((i = info_index[number]) and
725
- (pac[:ean] and pac[:ean][0..3] == '7680'))
726
- length += 1
727
- xml.KP('DT' => '') {
728
- xml.MONID @infos[lang][i][:monid]
729
- xml.GTIN pac[:ean]
730
- xml.LANG lang
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
- end
742
+ # as orphans ?
743
+ xml.DEL @orphans.include?(monid) ? true : false
744
+ }
737
745
  end
738
746
  end
739
747
  xml.RESULT {
@@ -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 |key, lims|
83
- key = case key
84
- when :pac
85
- item[:packages][phar][:swissmedic_number8]
86
- when :seq
87
- item[:swissmedic_number5]
88
- when :itc
89
- phar
90
- end
91
- key = phar if (key.empty? or key == '0')
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 : '',
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "1.3.2"
2
+ VERSION = "1.3.3"
3
3
  end
@@ -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>
@@ -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
@@ -70,8 +70,9 @@ module ServerMockHelper
70
70
  def setup_swissmedic_server_mock
71
71
  host = 'www.swissmedic.ch'
72
72
  {
73
- :orphans => {:html => '/daten/00081/index.html?lang=de', :xls => '/download'},
74
- :fridges => {:html => '/daten/00080/00254/index.html?lang=de', :xls => '/download'}
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.2
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-04 00:00:00.000000000 Z
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: &20030020 !ruby/object:Gem::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: *20030020
24
+ version_requirements: *7463900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: archive-tar-minitar
27
- requirement: &20028900 !ruby/object:Gem::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: *20028900
35
+ version_requirements: *7463260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mechanize
38
- requirement: &20028240 !ruby/object:Gem::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: *20028240
46
+ version_requirements: *7462720
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: nokogiri
49
- requirement: &20027320 !ruby/object:Gem::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: *20027320
57
+ version_requirements: *7461920
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: savon
60
- requirement: &20026360 !ruby/object:Gem::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: *20026360
68
+ version_requirements: *7461240
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: spreadsheet
71
- requirement: &20025440 !ruby/object:Gem::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: *20025440
79
+ version_requirements: *7460680
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &20024560 !ruby/object:Gem::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: *20024560
90
+ version_requirements: *7459980
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: webmock
93
- requirement: &20024020 !ruby/object:Gem::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: *20024020
101
+ version_requirements: *7459340
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: ZenTest
104
- requirement: &20023360 !ruby/object:Gem::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: *20023360
112
+ version_requirements: *7458660
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: hoe
115
- requirement: &20022720 !ruby/object:Gem::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: *20022720
123
+ version_requirements: *7457740
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rdoc
126
- requirement: &20022140 !ruby/object:Gem::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: *20022140
134
+ version_requirements: *7456780
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: rdoc
137
- requirement: &20021360 !ruby/object:Gem::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: *20021360
145
+ version_requirements: *7456080
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: hoe
148
- requirement: &20020720 !ruby/object:Gem::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: *20020720
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