oddb2xml 2.8.0 → 2.8.2
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 +4 -4
- data/.github/workflows/ruby.yml +6 -9
- data/Gemfile.lock +52 -40
- data/lib/oddb2xml/builder.rb +64 -17
- data/lib/oddb2xml/calc.rb +2 -2
- data/lib/oddb2xml/options.rb +1 -0
- data/lib/oddb2xml/version.rb +1 -1
- data/spec/builder_spec.rb +1 -1
- data/spec/options_spec.rb +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d4ff8b8b33c1b2c3ea41660576b5f9d116e99640a56098d429e2525138d9c8a1
|
|
4
|
+
data.tar.gz: 7ed3e2d40e97d0631119bd1c1e87f4d1de599939b21a95313487d7664cbc4a05
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0c3ca2d08823ffb6909f86c2b08c72334ff671126a8dcead06ac5872cc2fd17d9f175d0f1b65a28647e13847027215a02365a2d3beecfa7aa1ae8b24a896fd00
|
|
7
|
+
data.tar.gz: 3880524ed3c9602c1f693b4b4d8d52f548c2c4e34561675b5954936de9fd746019fb5287cd46484c9797cf7f874a6ba053d03e4f43d43812c024b97a9f871443
|
data/.github/workflows/ruby.yml
CHANGED
|
@@ -9,7 +9,7 @@ name: Ruby
|
|
|
9
9
|
|
|
10
10
|
on:
|
|
11
11
|
push:
|
|
12
|
-
branches: [ master ]
|
|
12
|
+
branches: [ master, '*' ]
|
|
13
13
|
pull_request:
|
|
14
14
|
branches: [ master ]
|
|
15
15
|
|
|
@@ -21,19 +21,16 @@ jobs:
|
|
|
21
21
|
strategy:
|
|
22
22
|
fail-fast: false
|
|
23
23
|
matrix:
|
|
24
|
-
os: [
|
|
25
|
-
ruby: [
|
|
24
|
+
os: [ubuntu]
|
|
25
|
+
ruby: ["3.0", "3.1", "3.2"]
|
|
26
|
+
env:
|
|
27
|
+
BUNDLE_PATH: ".bundle/gems"
|
|
28
|
+
BUNDLE_WITHOUT: "debugger"
|
|
26
29
|
steps:
|
|
27
30
|
- uses: actions/checkout@v2
|
|
28
31
|
- uses: ruby/setup-ruby@v1
|
|
29
32
|
with:
|
|
30
33
|
ruby-version: ${{ matrix.ruby }}
|
|
31
34
|
bundler-cache: true
|
|
32
|
-
|
|
33
|
-
- name: Install dependencies
|
|
34
|
-
run: |
|
|
35
|
-
bundle config set path .bundle/gems --local
|
|
36
|
-
bundle config set without debugger --local
|
|
37
|
-
bundle install
|
|
38
35
|
- name: Test with RSpec
|
|
39
36
|
run: bundle exec rspec
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
oddb2xml (2.8.
|
|
4
|
+
oddb2xml (2.8.2)
|
|
5
5
|
htmlentities
|
|
6
6
|
httpi
|
|
7
7
|
mechanize
|
|
@@ -25,22 +25,23 @@ PATH
|
|
|
25
25
|
GEM
|
|
26
26
|
remote: https://rubygems.org/
|
|
27
27
|
specs:
|
|
28
|
-
addressable (2.8.
|
|
28
|
+
addressable (2.8.5)
|
|
29
29
|
public_suffix (>= 2.0.2, < 6.0)
|
|
30
30
|
akami (1.3.1)
|
|
31
31
|
gyoku (>= 0.4.0)
|
|
32
32
|
nokogiri
|
|
33
33
|
ast (2.4.2)
|
|
34
|
+
base64 (0.1.1)
|
|
34
35
|
builder (3.2.4)
|
|
35
36
|
byebug (11.1.3)
|
|
36
37
|
coderay (1.1.3)
|
|
37
|
-
connection_pool (2.
|
|
38
|
+
connection_pool (2.4.1)
|
|
38
39
|
crack (0.4.5)
|
|
39
40
|
rexml
|
|
40
41
|
diff-lcs (1.5.0)
|
|
41
42
|
domain_name (0.5.20190701)
|
|
42
43
|
unf (>= 0.0.5, < 1.0.0)
|
|
43
|
-
flexmock (2.3.
|
|
44
|
+
flexmock (2.3.8)
|
|
44
45
|
gyoku (1.4.0)
|
|
45
46
|
builder (>= 2.1.2)
|
|
46
47
|
rexml (~> 3.0)
|
|
@@ -53,6 +54,7 @@ GEM
|
|
|
53
54
|
socksify
|
|
54
55
|
json (2.6.3)
|
|
55
56
|
language_server-protocol (3.17.0.3)
|
|
57
|
+
lint_roller (1.1.0)
|
|
56
58
|
mechanize (2.7.7)
|
|
57
59
|
domain_name (~> 0.5, >= 0.5.1)
|
|
58
60
|
http-cookie (~> 1.0)
|
|
@@ -64,25 +66,26 @@ GEM
|
|
|
64
66
|
webrick (~> 1.7)
|
|
65
67
|
webrobots (>= 0.0.9, < 0.2)
|
|
66
68
|
method_source (1.0.0)
|
|
67
|
-
mime-types (3.
|
|
69
|
+
mime-types (3.5.1)
|
|
68
70
|
mime-types-data (~> 3.2015)
|
|
69
|
-
mime-types-data (3.
|
|
70
|
-
mini_portile2 (2.8.
|
|
71
|
+
mime-types-data (3.2023.0808)
|
|
72
|
+
mini_portile2 (2.8.4)
|
|
71
73
|
minitar (0.9)
|
|
72
74
|
multi_json (1.15.0)
|
|
73
75
|
net-http-digest_auth (1.4.1)
|
|
74
|
-
net-http-persistent (4.0.
|
|
76
|
+
net-http-persistent (4.0.2)
|
|
75
77
|
connection_pool (~> 2.2)
|
|
76
78
|
nokogiri (1.13.9)
|
|
77
79
|
mini_portile2 (~> 2.8.0)
|
|
78
80
|
racc (~> 1.4)
|
|
79
81
|
nori (2.6.0)
|
|
80
82
|
ntlm-http (0.1.1)
|
|
81
|
-
optimist (3.0
|
|
82
|
-
ox (2.14.
|
|
83
|
-
parallel (1.
|
|
84
|
-
parser (3.2.
|
|
83
|
+
optimist (3.1.0)
|
|
84
|
+
ox (2.14.17)
|
|
85
|
+
parallel (1.23.0)
|
|
86
|
+
parser (3.2.2.3)
|
|
85
87
|
ast (~> 2.4.1)
|
|
88
|
+
racc
|
|
86
89
|
parslet (2.0.0)
|
|
87
90
|
pry (0.14.2)
|
|
88
91
|
coderay (~> 1.1)
|
|
@@ -94,44 +97,46 @@ GEM
|
|
|
94
97
|
pry (~> 0.11)
|
|
95
98
|
yard (~> 0.9.11)
|
|
96
99
|
psych (3.3.4)
|
|
97
|
-
public_suffix (5.0.
|
|
98
|
-
racc (1.
|
|
100
|
+
public_suffix (5.0.3)
|
|
101
|
+
racc (1.7.1)
|
|
99
102
|
rack (3.0.8)
|
|
100
103
|
rainbow (3.1.1)
|
|
101
104
|
rake (13.0.6)
|
|
102
105
|
rdoc (6.3.3)
|
|
103
|
-
regexp_parser (2.
|
|
104
|
-
rexml (3.2.
|
|
106
|
+
regexp_parser (2.8.1)
|
|
107
|
+
rexml (3.2.6)
|
|
105
108
|
rspec (3.12.0)
|
|
106
109
|
rspec-core (~> 3.12.0)
|
|
107
110
|
rspec-expectations (~> 3.12.0)
|
|
108
111
|
rspec-mocks (~> 3.12.0)
|
|
109
|
-
rspec-core (3.12.
|
|
112
|
+
rspec-core (3.12.2)
|
|
110
113
|
rspec-support (~> 3.12.0)
|
|
111
|
-
rspec-expectations (3.12.
|
|
114
|
+
rspec-expectations (3.12.3)
|
|
112
115
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
113
116
|
rspec-support (~> 3.12.0)
|
|
114
|
-
rspec-mocks (3.12.
|
|
117
|
+
rspec-mocks (3.12.6)
|
|
115
118
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
116
119
|
rspec-support (~> 3.12.0)
|
|
117
|
-
rspec-support (3.12.
|
|
118
|
-
rubocop (1.
|
|
120
|
+
rspec-support (3.12.1)
|
|
121
|
+
rubocop (1.56.4)
|
|
122
|
+
base64 (~> 0.1.1)
|
|
119
123
|
json (~> 2.3)
|
|
124
|
+
language_server-protocol (>= 3.17.0)
|
|
120
125
|
parallel (~> 1.10)
|
|
121
|
-
parser (>= 3.
|
|
126
|
+
parser (>= 3.2.2.3)
|
|
122
127
|
rainbow (>= 2.2.2, < 4.0)
|
|
123
128
|
regexp_parser (>= 1.8, < 3.0)
|
|
124
129
|
rexml (>= 3.2.5, < 4.0)
|
|
125
|
-
rubocop-ast (>= 1.
|
|
130
|
+
rubocop-ast (>= 1.28.1, < 2.0)
|
|
126
131
|
ruby-progressbar (~> 1.7)
|
|
127
|
-
unicode-display_width (>=
|
|
128
|
-
rubocop-ast (1.
|
|
129
|
-
parser (>= 3.
|
|
130
|
-
rubocop-performance (1.
|
|
132
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
|
133
|
+
rubocop-ast (1.29.0)
|
|
134
|
+
parser (>= 3.2.1.0)
|
|
135
|
+
rubocop-performance (1.19.1)
|
|
131
136
|
rubocop (>= 1.7.0, < 2.0)
|
|
132
137
|
rubocop-ast (>= 0.4.0)
|
|
133
138
|
ruby-ole (1.2.12.2)
|
|
134
|
-
ruby-progressbar (1.
|
|
139
|
+
ruby-progressbar (1.13.0)
|
|
135
140
|
rubyXL (3.4.25)
|
|
136
141
|
nokogiri (>= 1.10.8)
|
|
137
142
|
rubyzip (>= 1.3.0)
|
|
@@ -149,35 +154,42 @@ GEM
|
|
|
149
154
|
socksify (1.7.1)
|
|
150
155
|
spreadsheet (1.3.0)
|
|
151
156
|
ruby-ole
|
|
152
|
-
standard (1.
|
|
157
|
+
standard (1.31.1)
|
|
153
158
|
language_server-protocol (~> 3.17.0.2)
|
|
154
|
-
|
|
155
|
-
rubocop
|
|
159
|
+
lint_roller (~> 1.0)
|
|
160
|
+
rubocop (~> 1.56.2)
|
|
161
|
+
standard-custom (~> 1.0.0)
|
|
162
|
+
standard-performance (~> 1.2)
|
|
163
|
+
standard-custom (1.0.2)
|
|
164
|
+
lint_roller (~> 1.0)
|
|
165
|
+
rubocop (~> 1.50)
|
|
166
|
+
standard-performance (1.2.0)
|
|
167
|
+
lint_roller (~> 1.1)
|
|
168
|
+
rubocop-performance (~> 1.19.0)
|
|
156
169
|
standardrb (1.0.1)
|
|
157
170
|
standard
|
|
158
|
-
timecop (0.9.
|
|
171
|
+
timecop (0.9.8)
|
|
159
172
|
unf (0.1.4)
|
|
160
173
|
unf_ext
|
|
161
174
|
unf_ext (0.0.8.2)
|
|
162
|
-
unicode-display_width (2.
|
|
163
|
-
vcr (6.
|
|
175
|
+
unicode-display_width (2.5.0)
|
|
176
|
+
vcr (6.2.0)
|
|
164
177
|
wasabi (3.7.0)
|
|
165
178
|
addressable
|
|
166
179
|
httpi (~> 2.0)
|
|
167
180
|
nokogiri (>= 1.4.2)
|
|
168
|
-
webmock (3.
|
|
181
|
+
webmock (3.19.1)
|
|
169
182
|
addressable (>= 2.8.0)
|
|
170
183
|
crack (>= 0.3.2)
|
|
171
184
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
172
|
-
webrick (1.
|
|
185
|
+
webrick (1.8.1)
|
|
173
186
|
webrobots (0.1.2)
|
|
174
187
|
xml-simple (1.1.9)
|
|
175
188
|
rexml
|
|
176
|
-
yard (0.9.
|
|
177
|
-
webrick (~> 1.7.0)
|
|
189
|
+
yard (0.9.34)
|
|
178
190
|
|
|
179
191
|
PLATFORMS
|
|
180
|
-
|
|
192
|
+
ruby
|
|
181
193
|
|
|
182
194
|
DEPENDENCIES
|
|
183
195
|
bundler
|
|
@@ -195,4 +207,4 @@ DEPENDENCIES
|
|
|
195
207
|
webmock
|
|
196
208
|
|
|
197
209
|
BUNDLED WITH
|
|
198
|
-
2.3.
|
|
210
|
+
2.3.24
|
data/lib/oddb2xml/builder.rb
CHANGED
|
@@ -172,15 +172,19 @@ module Oddb2xml
|
|
|
172
172
|
end
|
|
173
173
|
end
|
|
174
174
|
@firstbase.each do |ean13, obj|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
175
|
+
description = obj[:trade_item_description_de]
|
|
176
|
+
if description.empty?
|
|
177
|
+
description = obj[:trade_item_description_en]
|
|
178
|
+
end
|
|
179
|
+
if (!description.empty? || !obj[:trade_item_description_fr].empty?) && @refdata[obj[:gtin]].nil?
|
|
180
|
+
entry = {
|
|
181
|
+
ean13: obj[:gtin],
|
|
182
|
+
desc_de: description,
|
|
183
|
+
desc_fr: obj[:trade_item_description_fr],
|
|
184
|
+
atc_code: "",
|
|
185
|
+
company_ean: obj[:gln],
|
|
186
|
+
firstbase: true
|
|
187
|
+
}
|
|
184
188
|
@articles << entry
|
|
185
189
|
end
|
|
186
190
|
end
|
|
@@ -541,15 +545,50 @@ module Oddb2xml
|
|
|
541
545
|
Oddb2xml.log "build_product add_missing_products_from_swissmedic. Added #{corrected_size - size_old} corrected_size #{corrected_size} size_old #{size_old} ean13_to_product."
|
|
542
546
|
end
|
|
543
547
|
|
|
548
|
+
def add_products_from_bag_preparations(add_to_products = false)
|
|
549
|
+
Oddb2xml.log "build_product add_products_from_bag_preparations. Starting with #{@products.size} products and #{@items.size} @items"
|
|
550
|
+
ean13_to_product = {}
|
|
551
|
+
@products.each { |ean13, obj|
|
|
552
|
+
ean13_to_product[ean13] = obj
|
|
553
|
+
obj[:pharmacode] ||= @refdata[ean13][:pharmacode] if @refdata[ean13]
|
|
554
|
+
}
|
|
555
|
+
size_old = ean13_to_product.size
|
|
556
|
+
Oddb2xml.log "build_product add_products_from_bag_preparations. Imported #{size_old} ean13_to_product from @products. Checking #{@items.size} @items"
|
|
557
|
+
@items.each do |ean13, item|
|
|
558
|
+
next if @products[ean13]
|
|
559
|
+
if add_to_products
|
|
560
|
+
@products[ean13] = {
|
|
561
|
+
seq: item,
|
|
562
|
+
pac: nil,
|
|
563
|
+
sequence_name: "",
|
|
564
|
+
desc_de: "#{item[:name_de]}, #{item[:desc_de]}, #{item[:packages][ean13][:desc_de]}",
|
|
565
|
+
desc_fr: "#{item[:name_fr]}, #{item[:desc_fr]}, #{item[:packages][ean13][:desc_fr]}",
|
|
566
|
+
no8: "",
|
|
567
|
+
ean13: ean13,
|
|
568
|
+
atc: item[:atc_code],
|
|
569
|
+
ith: "",
|
|
570
|
+
siz: "",
|
|
571
|
+
eht: "",
|
|
572
|
+
sub: "",
|
|
573
|
+
comp: "",
|
|
574
|
+
drug_index: ""
|
|
575
|
+
}
|
|
576
|
+
end
|
|
577
|
+
ean13_to_product[ean13] = item
|
|
578
|
+
end
|
|
579
|
+
corrected_size = ean13_to_product.size
|
|
580
|
+
Oddb2xml.log "build_product add_products_from_bag_preparations. Added #{corrected_size - size_old} corrected_size #{corrected_size} size_old #{size_old} ean13_to_product."
|
|
581
|
+
end
|
|
582
|
+
|
|
544
583
|
def build_product
|
|
545
584
|
self.class.class_eval do
|
|
546
585
|
def check_name(obj, lang = :de)
|
|
547
586
|
ean = obj[:ean13]
|
|
548
587
|
refdata = @refdata[ean]
|
|
549
588
|
if lang == :de
|
|
550
|
-
name = refdata && refdata[:desc_de] ? refdata[:desc_de] : obj[:sequence_name]
|
|
589
|
+
name = refdata && refdata[:desc_de] ? refdata[:desc_de] : (obj[:desc_de] || obj[:sequence_name])
|
|
551
590
|
elsif lang == :fr
|
|
552
|
-
name = refdata && refdata[:desc_fr] ? refdata[:desc_fr] : obj[:sequence_name]
|
|
591
|
+
name = refdata && refdata[:desc_fr] ? refdata[:desc_fr] : (obj[:desc_fr] || obj[:sequence_name])
|
|
553
592
|
elsif lang == :it
|
|
554
593
|
name = refdata[:desc_it] if refdata && refdata[:desc_it]
|
|
555
594
|
else
|
|
@@ -564,6 +603,7 @@ module Oddb2xml
|
|
|
564
603
|
prepare_interactions
|
|
565
604
|
prepare_codes
|
|
566
605
|
add_missing_products_from_swissmedic
|
|
606
|
+
add_products_from_bag_preparations(true)
|
|
567
607
|
nbr_products = 0
|
|
568
608
|
Oddb2xml.log "build_product #{@products.size + @missing.size} products"
|
|
569
609
|
a_builder = Nokogiri::XML::Builder.new(encoding: "utf-8") do |xml|
|
|
@@ -595,12 +635,18 @@ module Oddb2xml
|
|
|
595
635
|
}
|
|
596
636
|
end
|
|
597
637
|
@firstbase.each do |ean13, obj|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
638
|
+
description = obj[:trade_item_description_de]
|
|
639
|
+
if description.empty?
|
|
640
|
+
description = obj[:trade_item_description_en]
|
|
641
|
+
end
|
|
642
|
+
if !description.empty? || !obj[:trade_item_description_fr].empty?
|
|
643
|
+
xml.PRD("DT" => "") {
|
|
644
|
+
xml.GTIN obj[:gtin]
|
|
645
|
+
xml.CPT
|
|
646
|
+
xml.DSCRD description
|
|
647
|
+
xml.DSCRF obj[:trade_item_description_fr]
|
|
648
|
+
}
|
|
649
|
+
end
|
|
604
650
|
end
|
|
605
651
|
@products.sort.to_h.each do |ean13, obj|
|
|
606
652
|
next if /^Q/i.match?(obj[:atc])
|
|
@@ -1712,6 +1758,7 @@ module Oddb2xml
|
|
|
1712
1758
|
prepare_articles
|
|
1713
1759
|
prepare_products
|
|
1714
1760
|
add_missing_products_from_swissmedic(true)
|
|
1761
|
+
add_products_from_bag_preparations(true)
|
|
1715
1762
|
prepare_calc_items(suppress_composition_parsing: true)
|
|
1716
1763
|
@prepared = true
|
|
1717
1764
|
@old_rose_size = @infos_zur_rose.size
|
data/lib/oddb2xml/calc.rb
CHANGED
|
@@ -95,8 +95,8 @@ module Oddb2xml
|
|
|
95
95
|
UNKNOWN_GALENIC_FORM = 140
|
|
96
96
|
UNKNOWN_GALENIC_GROUP = 1
|
|
97
97
|
DATA_DIR = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "data"))
|
|
98
|
-
@@galenic_groups = YAML.
|
|
99
|
-
@@galenic_forms = YAML.
|
|
98
|
+
@@galenic_groups = YAML.safe_load_file(File.join(DATA_DIR, "gal_groups.yaml"), permitted_classes: [ Oddb2xml::GalenicForm, Oddb2xml::GalenicGroup, Symbol])
|
|
99
|
+
@@galenic_forms = YAML.safe_load_file(File.join(DATA_DIR, "gal_forms.yaml"), permitted_classes: [ Oddb2xml::GalenicForm, Oddb2xml::GalenicGroup, Symbol])
|
|
100
100
|
@@new_galenic_forms = []
|
|
101
101
|
@@names_without_galenic_forms = []
|
|
102
102
|
@@rules_counter = {}
|
data/lib/oddb2xml/options.rb
CHANGED
data/lib/oddb2xml/version.rb
CHANGED
data/spec/builder_spec.rb
CHANGED
|
@@ -458,7 +458,7 @@ NR_LIMITATIONS = 15
|
|
|
458
458
|
NR_INTERACTIONS = 2
|
|
459
459
|
NR_CODES = 5
|
|
460
460
|
NR_PRODNO = 31
|
|
461
|
-
NR_PACKAGES =
|
|
461
|
+
NR_PACKAGES = 61
|
|
462
462
|
NR_PRODUCTS = 40
|
|
463
463
|
REG_EXP_DESITIN = /1120000000LEVETIRACETAM DESITIN Mini Filmtab 250 mg 30 Stk/
|
|
464
464
|
describe Oddb2xml::Builder do
|
data/spec/options_spec.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: oddb2xml
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.8.
|
|
4
|
+
version: 2.8.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yasuhiro Asaka, Zeno R.R. Davatz, Niklaus Giger
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-11-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rubyzip
|