oddb2xml 2.2.6 → 2.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1338186e814bba29ae165b55961634b87ceab658
4
- data.tar.gz: 8f736fba9dd08fa2f44a4577bc97ca43cfb98d0b
3
+ metadata.gz: 5231618926015f8fe6730a4bb96e5c1b02bcd7a6
4
+ data.tar.gz: 46d8563881526d72bfafa74d328b599e59f5ead8
5
5
  SHA512:
6
- metadata.gz: 8f81d0c6c7ab027561bad9d42c0b21c3450727166669e58c7c06671c73d2a27e71bdd5a1cb594b0a53daaeda1ea554dfc66f36f3cc2ead081b59aadcbcb0c442
7
- data.tar.gz: cf3ad5e44a0be9b48488403adca881244ef083bf77b6d96e3c36ea7ad53710189348c5ac0c6869ceecd3b4b1b49272dad1172ae33e84c6ad9745e3a541e1ab6f
6
+ metadata.gz: bcaad4b40f4e4a353c8d81a0628a766f71072926365ab4227b28c495448ef504f7a3870b13cbbe1ce6bc32f47f18ad844d6bade36f5ac4118275352361eaf044
7
+ data.tar.gz: c34d48f22e6f16b235695f1fe911d0249884287d0f787ec891b3cd4db7d145a3c60b011b91c0228c7af33db0d5d61fdbb5c521ff197ca682d82a111506524abd
data/.gitignore CHANGED
@@ -15,3 +15,21 @@ test/tmp
15
15
  test/version_tmp
16
16
  tmp
17
17
  .ruby-version
18
+ *#
19
+ # Ignore downloaded files
20
+ .project
21
+ .buildpath
22
+ /*.xlsx
23
+ /oddb_*.xml
24
+ /oddb_*.txt
25
+ /oddb2xml*.txt
26
+ /spec/run
27
+ /*tar.gz
28
+ /*.patch
29
+ /ausgabe
30
+ /downloads
31
+ /duplicate_ean13_from_zur_rose.txt
32
+ /epha_interactions.csv
33
+ /missing_in_refdata.txt
34
+ /oddb2xml_files_nonpharma.xls
35
+ /oddb_calc.csv
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oddb2xml (2.2.6)
4
+ oddb2xml (2.2.7)
5
5
  archive-tar-minitar
6
6
  httpi (>= 2.4.1)
7
7
  mechanize
@@ -25,17 +25,16 @@ GEM
25
25
  archive-tar-minitar (0.5.2)
26
26
  blankslate (3.1.3)
27
27
  builder (3.2.2)
28
- byebug (4.0.5)
29
- columnize (= 0.9.0)
28
+ byebug (8.2.0)
30
29
  coderay (1.1.0)
31
- columnize (0.9.0)
32
30
  crack (0.4.2)
33
31
  safe_yaml (~> 1.0.0)
34
32
  diff-lcs (1.2.5)
35
- domain_name (0.5.24)
33
+ domain_name (0.5.25)
36
34
  unf (>= 0.0.5, < 1.0.0)
37
35
  gyoku (1.3.1)
38
36
  builder (>= 2.1.2)
37
+ hashdiff (0.2.3)
39
38
  http-cookie (1.0.2)
40
39
  domain_name (~> 0.5)
41
40
  httpi (2.4.1)
@@ -51,23 +50,23 @@ GEM
51
50
  ntlm-http (~> 0.1, >= 0.1.1)
52
51
  webrobots (>= 0.0.9, < 0.2)
53
52
  method_source (0.8.2)
54
- mime-types (2.6.2)
53
+ mime-types (2.99)
55
54
  mini_portile (0.6.2)
56
- multi_json (1.11.1)
55
+ multi_json (1.11.2)
57
56
  net-http-digest_auth (1.4)
58
57
  net-http-persistent (2.9.4)
59
- nokogiri (1.6.6.2)
58
+ nokogiri (1.6.6.4)
60
59
  mini_portile (~> 0.6.0)
61
60
  nori (2.6.0)
62
61
  ntlm-http (0.1.1)
63
- parslet (1.7.0)
62
+ parslet (1.7.1)
64
63
  blankslate (>= 2.0, <= 4.0)
65
- pry (0.10.1)
64
+ pry (0.10.3)
66
65
  coderay (~> 1.1.0)
67
66
  method_source (~> 0.8.1)
68
67
  slop (~> 3.4)
69
- pry-byebug (3.1.0)
70
- byebug (~> 4.0)
68
+ pry-byebug (3.3.0)
69
+ byebug (~> 8.0)
71
70
  pry (~> 0.10)
72
71
  pry-doc (0.8.0)
73
72
  pry (~> 0.9)
@@ -76,21 +75,21 @@ GEM
76
75
  rake (10.4.2)
77
76
  rdoc (4.2.0)
78
77
  json (~> 1.4)
79
- rspec (3.3.0)
80
- rspec-core (~> 3.3.0)
81
- rspec-expectations (~> 3.3.0)
82
- rspec-mocks (~> 3.3.0)
83
- rspec-core (3.3.1)
84
- rspec-support (~> 3.3.0)
85
- rspec-expectations (3.3.0)
78
+ rspec (3.4.0)
79
+ rspec-core (~> 3.4.0)
80
+ rspec-expectations (~> 3.4.0)
81
+ rspec-mocks (~> 3.4.0)
82
+ rspec-core (3.4.1)
83
+ rspec-support (~> 3.4.0)
84
+ rspec-expectations (3.4.0)
86
85
  diff-lcs (>= 1.2.0, < 2.0)
87
- rspec-support (~> 3.3.0)
88
- rspec-mocks (3.3.1)
86
+ rspec-support (~> 3.4.0)
87
+ rspec-mocks (3.4.0)
89
88
  diff-lcs (>= 1.2.0, < 2.0)
90
- rspec-support (~> 3.3.0)
91
- rspec-support (3.3.0)
89
+ rspec-support (~> 3.4.0)
90
+ rspec-support (3.4.1)
92
91
  ruby-ole (1.2.11.8)
93
- rubyXL (3.3.10)
92
+ rubyXL (3.3.15)
94
93
  nokogiri (>= 1.4.4)
95
94
  rubyzip (>= 1.1.6)
96
95
  rubyntlm (0.5.1)
@@ -106,19 +105,20 @@ GEM
106
105
  wasabi (~> 3.4)
107
106
  sax-machine (1.3.2)
108
107
  slop (3.6.0)
109
- spreadsheet (1.0.3)
108
+ spreadsheet (1.0.9)
110
109
  ruby-ole (>= 1.0)
111
- timecop (0.7.4)
110
+ timecop (0.8.0)
112
111
  unf (0.1.4)
113
112
  unf_ext
114
113
  unf_ext (0.0.7.1)
115
- vcr (2.9.3)
114
+ vcr (3.0.0)
116
115
  wasabi (3.5.0)
117
116
  httpi (~> 2.0)
118
117
  nokogiri (>= 1.4.2)
119
- webmock (1.21.0)
118
+ webmock (1.22.3)
120
119
  addressable (>= 2.3.6)
121
120
  crack (>= 0.3.2)
121
+ hashdiff
122
122
  webrobots (0.1.1)
123
123
  yard (0.8.7.6)
124
124
 
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ === 2.2.7 / 24.11.2015
2
+
3
+ * Removed no more emitted QTY from definition of ART in oddb2xml.xsd
4
+ * Fixed generating COOL in oddb_article.xml
5
+ * Fixed generating ORPH in oddb_product.xml
6
+
1
7
  === 2.2.6 / 09.11.2015
2
8
 
3
9
  * Fixed an error when generating oddb_calc.xml and we have no information for a given EAN, eg. 7680653150012
@@ -35,7 +35,7 @@ module Oddb2xml
35
35
  }
36
36
  class Builder
37
37
  attr_accessor :subject, :refdata, :items, :flags, :lppvs,
38
- :actions, :migel, :orphans, :fridges,
38
+ :actions, :migel, :orphan, :fridge,
39
39
  :infos, :packs, :infos_zur_rose,
40
40
  :ean14, :tag_suffix,
41
41
  :companies, :people,
@@ -52,8 +52,8 @@ module Oddb2xml
52
52
  @migel = {}
53
53
  @infos_zur_rose = {} # zurrose
54
54
  @actions = []
55
- @orphans = []
56
- @fridges = []
55
+ @orphan = []
56
+ @fridge = []
57
57
  @ean14 = false
58
58
  @companies = []
59
59
  @people = []
@@ -533,7 +533,7 @@ module Oddb2xml
533
533
  #xml.DRGFD
534
534
  #xml.DRGFF
535
535
  obj[:no8] =~ /(\d{5})(\d{3})/
536
- if @orphans.include?($1.to_s)
536
+ if @orphan.include?($1.to_s)
537
537
  xml.ORPH true
538
538
  end
539
539
  #xml.BIOPHA
@@ -820,7 +820,7 @@ module Oddb2xml
820
820
  #xml.GRDFR
821
821
  if no8 and !no8.empty? and
822
822
  no8.to_s =~ /(\d{5})(\d{3})/
823
- xml.COOL 1 if @fridges.include?($1.to_s)
823
+ xml.COOL 1 if @fridge.include?($1.to_s)
824
824
  end
825
825
  #xml.TEMP
826
826
  if ean
@@ -1025,8 +1025,8 @@ module Oddb2xml
1025
1025
  xml.KP('DT' => '') {
1026
1026
  xml.MONID @infos[lang][idx][:monid]
1027
1027
  xml.PRDNO seq[:product_key] unless seq[:product_key].empty?
1028
- # as orphans ?
1029
- xml.DEL @orphans.include?(number) ? true : false
1028
+ # as orphan ?
1029
+ xml.DEL @orphan.include?(number) ? true : false
1030
1030
  }
1031
1031
  }
1032
1032
  end
@@ -1240,7 +1240,7 @@ module Oddb2xml
1240
1240
  '3'
1241
1241
  end
1242
1242
  row << "%#{DAT_LEN[:CLAG]}s" % if ((no8 && no8.to_s =~ /(\d{5})(\d{3})/) and
1243
- @fridges.include?($1.to_s))
1243
+ @fridge.include?($1.to_s))
1244
1244
  '1'
1245
1245
  else
1246
1246
  '0'
data/lib/oddb2xml/cli.rb CHANGED
@@ -30,8 +30,8 @@ module Oddb2xml
30
30
  @infos_zur_rose = {} # [addition] infos_zur_rose and other infos from zurrose transfer.txt
31
31
  @migel = {} # [addition] additional Non Pharma products from files repo
32
32
  @actions = [] # [addition] interactions from epha
33
- @orphans = [] # [addition] Orphaned drugs from Swissmedic xls
34
- @fridges = [] # [addition] ReFridge drugs from Swissmedic xls
33
+ @orphan = [] # [addition] Orphaned drugs from Swissmedic xls
34
+ @fridge = [] # [addition] ReFridge drugs from Swissmedic xls
35
35
  # addres
36
36
  @companies = [] # betrieb
37
37
  @people = [] # medizinalperson
@@ -89,7 +89,6 @@ module Oddb2xml
89
89
  def build
90
90
  Oddb2xml.log("Start build")
91
91
  begin
92
- # require 'pry'; binding.pry
93
92
  @_files = {"calc"=>"oddb_calc.xml"} if @options[:calc] and not @options[:extended]
94
93
  files.each_pair do |sbj, file|
95
94
  builder = Builder.new(@options) do |builder|
@@ -117,7 +116,7 @@ module Oddb2xml
117
116
  builder.infos = @infos
118
117
  builder.packs = @packs
119
118
  # additional sources
120
- %w[actions orphans fridges migel infos_zur_rose].each do |addition|
119
+ %w[actions orphan fridge migel infos_zur_rose].each do |addition|
121
120
  builder.send("#{addition}=".intern, self.instance_variable_get("@#{addition}"))
122
121
  end
123
122
  end
@@ -181,13 +180,13 @@ module Oddb2xml
181
180
  end
182
181
  end
183
182
  when :orphan, :fridge
184
- var = what.to_s + 's'
183
+ var = what.to_s
185
184
  begin # instead of Thread.new do
186
185
  downloader = SwissmedicDownloader.new(what)
187
186
  bin = downloader.download
188
187
  Oddb2xml.log("SwissmedicDownloader #{var} #{bin} #{File.size(bin)} bytes")
189
188
  self.instance_variable_set(
190
- "@#{var}".intern,
189
+ "@#{var}",
191
190
  items = SwissmedicExtractor.new(bin, what).to_arry
192
191
  )
193
192
  Oddb2xml.log("SwissmedicExtractor added #{items.size} #{var}. File #{bin} was #{File.size(bin)} bytes")
@@ -212,17 +212,24 @@ module Oddb2xml
212
212
  case @type
213
213
  when :orphan
214
214
  i = 1
215
+ col_zulassung = 5
216
+ raise "Could not find Zulassungsnummer in column #{col_zulassung} of #{@filename}" unless /Zulassungs.*nummer/.match(@sheet[3][col_zulassung].value)
215
217
  @sheet.each do |row|
216
- next unless row[1]
217
- number = row[1].value.to_i
218
+ next unless row[col_zulassung]
219
+ number = row[col_zulassung].value.to_i
218
220
  if number != 0
219
221
  data << sprintf("%05d", number)
220
222
  end
221
223
  end
222
224
  when :fridge
223
- i,c = 1,7
225
+ row_explanation = 9
226
+ col_zulassung = 0
227
+ col_cool = 12
228
+ explanation = @sheet[row_explanation]
229
+ raise "Could not find Zulassungsnummer in column #{col_zulassung} of #{@filename}" unless /Zul.*Nr/.match(explanation[col_zulassung].value)
230
+ raise "Could not find Kühlkette in column #{col_cool}" unless /Kühlkette/.match(explanation[col_cool].value)
224
231
  @sheet.each do |row|
225
- if row[i] and number = row[i].value and row[c] and row[c].value.to_s.downcase == 'x'
232
+ if row[col_zulassung] and number = row[col_zulassung].value and row[col_cool] and row[col_cool].value.to_s.downcase == 'x'
226
233
  data << sprintf("%05d", number)
227
234
  end
228
235
  end
@@ -272,6 +279,7 @@ module Oddb2xml
272
279
 
273
280
  next if (i <= 1)
274
281
  next unless row and row[i_5] and row[i_3]
282
+ next unless row[i_5].value.to_i > 0 and row[i_3].value.to_i > 0
275
283
  no8 = sprintf('%05d',row[i_5].value.to_i) + sprintf('%03d',row[i_3].value.to_i)
276
284
  prodno = sprintf('%05d',row[i_5].value.to_i) + row[p_1_2].value.to_i.to_s
277
285
  unless no8.empty?
@@ -1,3 +1,3 @@
1
1
  module Oddb2xml
2
- VERSION = "2.2.6"
2
+ VERSION = "2.2.7"
3
3
  end
data/oddb2xml.xsd CHANGED
@@ -54,6 +54,8 @@
54
54
  * Bezeichnung (DE / FR)
55
55
  * QTY Quantity, e.g. 3 Flaschen 5 ml. The EAN13 specified that this package contains 3 bottles. Think of it as
56
56
  as description of volume/size of the content.
57
+ The QTY is present in the oddb_product.xml, but not in the oddb_article.xml
58
+ In oddb_calc.xml you find QTY/UNIT, where QTY is a float and unit something like ml, mg, etc.
57
59
  * ATC
58
60
  * company_name (only for migel)
59
61
  * GLN company_ean, field COMPNO in oddb_article
@@ -124,7 +126,6 @@
124
126
  <xs:element ref="ns1:CDBG"/>
125
127
  <xs:element ref="ns1:BG"/>
126
128
  </xs:sequence>
127
- <xs:element minOccurs="0" ref="ns1:QTY"/>
128
129
  <xs:element ref="ns1:DSCRD"/>
129
130
  <xs:element ref="ns1:DSCRF"/>
130
131
  <xs:element ref="ns1:SORTD"/>