oddb2xml 2.7.9 → 2.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.envrc +1 -0
- data/.github/workflows/codeql.yml +41 -0
- data/.github/workflows/ruby.yml +1 -1
- data/.gitignore +0 -0
- data/.rspec +0 -0
- data/.ruby-version +1 -0
- data/.standard.yml +0 -0
- data/Elexis_Artikelstamm_v003.xsd +0 -0
- data/Elexis_Artikelstamm_v5.xsd +4 -4
- data/Gemfile +2 -0
- data/Gemfile.lock +198 -0
- data/LICENSE +0 -0
- data/Manifest.txt +0 -0
- data/QA.md +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/artikelstamm.md +0 -0
- data/data/article_overrides.yaml +0 -0
- data/data/gal_forms.yaml +0 -0
- data/data/gal_groups.yaml +0 -0
- data/data/gtin2ignore.yaml +0 -0
- data/data/product_overrides.yaml +0 -0
- data/dokumentation_calc.textile +0 -0
- data/flake.lock +80 -0
- data/flake.nix +36 -0
- data/gemset.nix +814 -0
- data/lib/oddb2xml/builder.rb +40 -7
- data/lib/oddb2xml/calc.rb +2 -2
- data/lib/oddb2xml/chapter_70_hack.rb +0 -0
- data/lib/oddb2xml/cli.rb +15 -1
- data/lib/oddb2xml/compare.rb +0 -0
- data/lib/oddb2xml/compositions_syntax.rb +0 -0
- data/lib/oddb2xml/compressor.rb +0 -0
- data/lib/oddb2xml/downloader.rb +22 -0
- data/lib/oddb2xml/extractor.rb +30 -0
- data/lib/oddb2xml/options.rb +4 -0
- data/lib/oddb2xml/parslet_compositions.rb +0 -0
- data/lib/oddb2xml/util.rb +0 -0
- data/lib/oddb2xml/version.rb +1 -1
- data/lib/oddb2xml/xml_definitions.rb +0 -0
- data/lib/oddb2xml.rb +0 -0
- data/oddb_calc.xsd +0 -0
- data/spec/artikelstamm_spec.rb +7 -1
- data/spec/calc_spec.rb +0 -0
- data/spec/check_artikelstamm_spec.rb +0 -0
- data/spec/cli_spec.rb +0 -0
- data/spec/compare_spec.rb +0 -0
- data/spec/composition_syntax_spec.rb +0 -0
- data/spec/compressor_spec.rb +0 -0
- data/spec/data/AipsDownload.zip +0 -0
- data/spec/data/Elexis_Artikelstamm_v5.xsd +0 -0
- data/spec/data/GL_Diff_SB.xml +0 -0
- data/spec/data/ItCodes.xml +0 -0
- data/spec/data/PR121001.txt +0 -0
- data/spec/data/PR121002.txt +0 -0
- data/spec/data/Preparations.xml +0 -0
- data/spec/data/Publications.xls +0 -0
- data/spec/data/artikelstamm_N_010917.xml +0 -0
- data/spec/data/artikelstamm_N_011217.xml +0 -0
- data/spec/data/artikelstamm_P_010917.xml +0 -0
- data/spec/data/artikelstamm_P_011217.xml +0 -0
- data/spec/data/atc.csv +0 -0
- data/spec/data/check_artikelstamm/artikelstamm_v5_gtin_non_numeric.xml +0 -0
- data/spec/data/check_artikelstamm/artikelstamm_v5_gtin_not_uniq.xml +0 -0
- data/spec/data/check_artikelstamm/artikelstamm_v5_limitation_exists.xml +0 -0
- data/spec/data/check_artikelstamm/artikelstamm_v5_okay.xml +0 -0
- data/spec/data/check_artikelstamm/artikelstamm_v5_pharma_has_product.xml +0 -0
- data/spec/data/check_artikelstamm/artikelstamm_v5_prodno_not_uniq.xml +0 -0
- data/spec/data/check_artikelstamm/artikelstamm_v5_product_needs_article.xml +0 -0
- data/spec/data/column_c.txt +0 -0
- data/spec/data/compositions.txt +0 -0
- data/spec/data/compressor/oddb2xml_files_bm_update.txt +0 -0
- data/spec/data/compressor/oddb2xml_files_lppv.txt +0 -0
- data/spec/data/compressor/oddb2xml_files_nonpharma.xls +0 -0
- data/spec/data/epha_interactions.csv +0 -0
- data/spec/data/listen_neu.html +0 -0
- data/spec/data/medregbm_betrieb.txt +0 -0
- data/spec/data/medregbm_person.txt +0 -0
- data/spec/data/oddb2xml_files_bm_update.txt +0 -0
- data/spec/data/oddb2xml_files_lppv.txt +0 -0
- data/spec/data/oddb2xml_files_nonpharma.xls +0 -0
- data/spec/data/problems.txt +0 -0
- data/spec/data/refdata_NonPharma.xml +0 -0
- data/spec/data/refdata_Pharma.xml +0 -0
- data/spec/data/swissmedic_fridges.html +0 -0
- data/spec/data/swissmedic_info.html +0 -0
- data/spec/data/swissmedic_info_2.html +0 -0
- data/spec/data/swissmedic_orphan.xlsx +0 -0
- data/spec/data/swissmedic_orphans.html +0 -0
- data/spec/data/swissmedic_package.xlsx +0 -0
- data/spec/data/swissmedic_packages.html +0 -0
- data/spec/data/transfer.dat +0 -0
- data/spec/data/v5_first.xml +0 -0
- data/spec/data/v5_second.xml +0 -0
- data/spec/data/varia_De.htm +0 -0
- data/spec/data/vcr/transfer.dat +0 -0
- data/spec/data/vcr/transfer.zip +0 -0
- data/spec/data/wsdl_nonpharma.xml +0 -0
- data/spec/data/wsdl_pharma.xml +0 -0
- data/spec/fixtures/vcr_cassettes/artikelstamm.json +0 -0
- data/spec/galenic_spec.rb +0 -0
- data/spec/parslet_spec.rb +1 -1
- data/tools/cacert.pem +0 -0
- data/tools/set.bat +0 -0
- data/tools/win_fetch_cacerts.rb +0 -0
- metadata +13 -7
- data/shell.nix +0 -19
data/lib/oddb2xml/builder.rb
CHANGED
@@ -42,7 +42,7 @@ module Oddb2xml
|
|
42
42
|
@@gtin2ignore ||= []
|
43
43
|
attr_accessor :subject, :refdata, :items, :flags, :lppvs,
|
44
44
|
:actions, :migel, :orphan,
|
45
|
-
:infos, :packs, :infos_zur_rose,
|
45
|
+
:infos, :packs, :infos_zur_rose, :firstbase,
|
46
46
|
:ean14, :tag_suffix,
|
47
47
|
:companies, :people,
|
48
48
|
:xsd
|
@@ -57,6 +57,7 @@ module Oddb2xml
|
|
57
57
|
@packs = {}
|
58
58
|
@migel = {}
|
59
59
|
@infos_zur_rose ||= {}
|
60
|
+
@firstbase ||= {}
|
60
61
|
@actions = []
|
61
62
|
@orphan = []
|
62
63
|
@ean14 = false
|
@@ -170,6 +171,23 @@ module Oddb2xml
|
|
170
171
|
end
|
171
172
|
end
|
172
173
|
end
|
174
|
+
@firstbase.each do |ean13, obj|
|
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
|
+
}
|
188
|
+
@articles << entry
|
189
|
+
end
|
190
|
+
end
|
173
191
|
end
|
174
192
|
Oddb2xml.log("prepare_articles done. Added #{nr_added} prices. Total #{@articles.size}")
|
175
193
|
end
|
@@ -580,6 +598,20 @@ module Oddb2xml
|
|
580
598
|
xml.CompositionSwissmedic obj[:composition_swissmedic] if obj[:composition_swissmedic]
|
581
599
|
}
|
582
600
|
end
|
601
|
+
@firstbase.each do |ean13, obj|
|
602
|
+
description = obj[:trade_item_description_de]
|
603
|
+
if description.empty?
|
604
|
+
description = obj[:trade_item_description_en]
|
605
|
+
end
|
606
|
+
if !description.empty? || !obj[:trade_item_description_fr].empty?
|
607
|
+
xml.PRD("DT" => "") {
|
608
|
+
xml.GTIN obj[:gtin]
|
609
|
+
xml.CPT
|
610
|
+
xml.DSCRD description
|
611
|
+
xml.DSCRF obj[:trade_item_description_fr]
|
612
|
+
}
|
613
|
+
end
|
614
|
+
end
|
583
615
|
@products.sort.to_h.each do |ean13, obj|
|
584
616
|
next if /^Q/i.match?(obj[:atc])
|
585
617
|
seq = obj[:seq]
|
@@ -1514,21 +1546,21 @@ module Oddb2xml
|
|
1514
1546
|
xml.GTIN pkg_gtin.to_s.rjust(13, "0")
|
1515
1547
|
xml.SALECD("A")
|
1516
1548
|
# maxLength for DSCR is 50 for Artikelstamm v3
|
1517
|
-
xml.DSCR(name) # for
|
1549
|
+
xml.DSCR(name) # for description for zur_rose
|
1518
1550
|
name_fr = item[:name_fr] + " " + item[:desc_fr].strip + " " + package[:desc_fr] if package && package[:desc_fr]
|
1519
1551
|
name_fr ||= @refdata[pkg_gtin] ? @refdata[pkg_gtin][:desc_fr] : nil
|
1520
1552
|
# Zugelassenen Packungen has only german names
|
1521
1553
|
name_fr ||= (obj[:name_fr] + ", " + obj[:desc_fr]).strip if obj[:name_fr]
|
1522
1554
|
# ZuRorse has only german names
|
1523
1555
|
name_fr ||= (item[:name_fr] + ", " + item[:desc_fr]) if item
|
1524
|
-
xml.DSCRF(name_fr)
|
1556
|
+
xml.DSCRF(name_fr)
|
1525
1557
|
name_it = item[:name_it] + " " + item[:desc_it].strip + " " + package[:desc_it] if package && package[:desc_it]
|
1526
1558
|
name_it ||= @refdata[pkg_gtin] ? @refdata[pkg_gtin][:desc_it] : nil
|
1527
1559
|
# Zugelassenen Packungen has only german names
|
1528
1560
|
name_it ||= (obj[:name_it] + ", " + obj[:desc_it]).strip if obj[:name_it]
|
1529
1561
|
# ZuRorse has only german names
|
1530
1562
|
name_it ||= (item[:name_it] + ", " + item[:desc_it]) if item
|
1531
|
-
xml.DSCRI(name_it)
|
1563
|
+
xml.DSCRI(name_it)
|
1532
1564
|
if obj[:company_name] || obj[:company_ean]
|
1533
1565
|
xml.COMP do # Manufacturer
|
1534
1566
|
xml.NAME obj[:company_name][0..99] # limit to 100 chars as in XSD
|
@@ -1641,7 +1673,7 @@ module Oddb2xml
|
|
1641
1673
|
emit_salecd(xml, ean13, obj)
|
1642
1674
|
description = obj[:desc_de] || obj[:description] # for description for zur_rose
|
1643
1675
|
xml.DSCR(description)
|
1644
|
-
xml.DSCRF(obj[:desc_fr])
|
1676
|
+
xml.DSCRF(obj[:desc_fr])
|
1645
1677
|
xml.DSCRI(obj[:desc_it]) if obj[:desc_it] && !obj[:desc_it].empty?
|
1646
1678
|
if obj[:company_ean] && !obj[:company_ean].empty?
|
1647
1679
|
xml.COMP do
|
@@ -1746,7 +1778,6 @@ module Oddb2xml
|
|
1746
1778
|
nr_products += 1
|
1747
1779
|
xml.PRODUCT do
|
1748
1780
|
xml.PRODNO prodno
|
1749
|
-
|
1750
1781
|
if sequence
|
1751
1782
|
xml.SALECD("A") # these products are always active!
|
1752
1783
|
name_de = "#{sequence[:name_de]} #{sequence[:desc_de]}".strip if sequence[:name_de]
|
@@ -1755,10 +1786,11 @@ module Oddb2xml
|
|
1755
1786
|
else
|
1756
1787
|
sequence[:desc_de]
|
1757
1788
|
end
|
1789
|
+
name_fr ||= (ppac && ppac[:sequence_name])
|
1758
1790
|
name_fr = "#{sequence[:name_fr]} #{sequence[:desc_fr]}".strip if sequence[:name_fr]
|
1759
1791
|
name_it = "#{sequence[:name_it]} #{sequence[:desc_it]}".strip if sequence[:name_it]
|
1760
1792
|
override(xml, prodno, :DSCR, name_de.strip)
|
1761
|
-
override(xml, prodno, :DSCRF, name_fr.strip)
|
1793
|
+
override(xml, prodno, :DSCRF, name_fr.strip)
|
1762
1794
|
override(xml, prodno, :DSCRI, name_it.strip) if name_it && !name_it.empty?
|
1763
1795
|
# use overriden ATC if possibel
|
1764
1796
|
atc = sequence[:atc] || sequence[:atc_code]
|
@@ -1773,6 +1805,7 @@ module Oddb2xml
|
|
1773
1805
|
xml.comment "Chapter70 hack prodno #{prodno} #{obj[:description].encode(xml: :text).gsub("--", "-")}"
|
1774
1806
|
xml.SALECD("A") # these products are always active!
|
1775
1807
|
xml.DSCR obj[:description]
|
1808
|
+
xml.DSCRF ""
|
1776
1809
|
if @limitations.index(obj[:code])
|
1777
1810
|
xml.LIMNAMEBAG obj[:code]
|
1778
1811
|
used_limitations << obj[:code]
|
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.load_file(File.join(DATA_DIR, "gal_groups.yaml"))
|
99
|
-
@@galenic_forms = YAML.load_file(File.join(DATA_DIR, "gal_forms.yaml"))
|
98
|
+
@@galenic_groups = YAML.load_file(File.join(DATA_DIR, "gal_groups.yaml"), permitted_classes: [ Oddb2xml::GalenicForm, Oddb2xml::GalenicGroup, Symbol])
|
99
|
+
@@galenic_forms = YAML.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 = {}
|
File without changes
|
data/lib/oddb2xml/cli.rb
CHANGED
@@ -26,6 +26,7 @@ module Oddb2xml
|
|
26
26
|
@packs = {} # [option] Packungen from Swissmedic for dat
|
27
27
|
@infos_zur_rose = {} # [addition] infos_zur_rose and other infos from zurrose transfer.txt
|
28
28
|
@migel = {} # [addition] additional Non Pharma products from files repo
|
29
|
+
@firstbase = {}
|
29
30
|
@actions = [] # [addition] interactions from epha
|
30
31
|
@orphan = [] # [addition] Orphaned drugs from Swissmedic xls
|
31
32
|
# addresses
|
@@ -60,6 +61,9 @@ module Oddb2xml
|
|
60
61
|
threads << download(:package) # swissmedic
|
61
62
|
threads << download(:lppv) # oddb2xml_files
|
62
63
|
threads << download(:bag) # bag.e-mediat
|
64
|
+
if @options[:firstbase]
|
65
|
+
threads << download(:firstbase) # https://github.com/zdavatz/oddb2xml/issues/63
|
66
|
+
end
|
63
67
|
types.each do |type|
|
64
68
|
threads << download(:refdata, type) # refdata
|
65
69
|
end
|
@@ -85,6 +89,7 @@ module Oddb2xml
|
|
85
89
|
puts "Validatied #{@the_files[:artikelstamm]}"
|
86
90
|
else
|
87
91
|
puts "Validating failed using #{cmd}"
|
92
|
+
require'pry'; binding.pry
|
88
93
|
raise "Validating failed using #{cmd}"
|
89
94
|
end
|
90
95
|
end
|
@@ -124,7 +129,7 @@ module Oddb2xml
|
|
124
129
|
builder.infos = @infos
|
125
130
|
builder.packs = @packs
|
126
131
|
# additional sources
|
127
|
-
%w[actions orphan migel infos_zur_rose].each do |addition|
|
132
|
+
%w[actions orphan migel infos_zur_rose firstbase].each do |addition|
|
128
133
|
builder.send("#{addition}=".intern, instance_variable_get("@#{addition}"))
|
129
134
|
end
|
130
135
|
end
|
@@ -312,6 +317,15 @@ module Oddb2xml
|
|
312
317
|
@refdata_types[type]
|
313
318
|
end
|
314
319
|
|
320
|
+
when :firstbase
|
321
|
+
downloader = FirstbaseDownloader.new(@options)
|
322
|
+
bin = downloader.download
|
323
|
+
Oddb2xml.log("FirstbaseDownloader bin #{File.size(bin)} bytes")
|
324
|
+
@mutex.synchronize do
|
325
|
+
@firstbase = FirstbaseExtractor.new(bin).to_hash
|
326
|
+
Oddb2xml.log("FirstbaseExtractor added #{@firstbase.size} firstbase items")
|
327
|
+
@firstbase
|
328
|
+
end
|
315
329
|
end
|
316
330
|
end
|
317
331
|
|
data/lib/oddb2xml/compare.rb
CHANGED
File without changes
|
File without changes
|
data/lib/oddb2xml/compressor.rb
CHANGED
File without changes
|
data/lib/oddb2xml/downloader.rb
CHANGED
@@ -381,4 +381,26 @@ module Oddb2xml
|
|
381
381
|
read_xml_from_zip(/^AipsDownload_/iu, file)
|
382
382
|
end
|
383
383
|
end
|
384
|
+
|
385
|
+
class FirstbaseDownloader < Downloader
|
386
|
+
BASE_URL = "https://www.firstbase.ch"
|
387
|
+
include DownloadMethod
|
388
|
+
def initialize(type = :orphan, options = {})
|
389
|
+
@url = BASE_URL + "/sites/default/files/2023-09/firstbase_healthcare_public_data-dump%2C%2020230920.xlsx"
|
390
|
+
end
|
391
|
+
|
392
|
+
def download
|
393
|
+
@file2save = File.join(DOWNLOADS, "firstbase.xlsx")
|
394
|
+
report_download(@url, @file2save)
|
395
|
+
begin
|
396
|
+
download_as(@file2save, "w+")
|
397
|
+
return File.expand_path(@file2save)
|
398
|
+
rescue Timeout::Error, Errno::ETIMEDOUT
|
399
|
+
retrievable? ? retry : raise
|
400
|
+
ensure
|
401
|
+
Oddb2xml.download_finished(@file2save, false)
|
402
|
+
end
|
403
|
+
File.expand_path(@file2save)
|
404
|
+
end
|
405
|
+
end
|
384
406
|
end
|
data/lib/oddb2xml/extractor.rb
CHANGED
@@ -591,4 +591,34 @@ module Oddb2xml
|
|
591
591
|
nil
|
592
592
|
end
|
593
593
|
end
|
594
|
+
|
595
|
+
class FirstbaseExtractor < Extractor
|
596
|
+
def initialize(file)
|
597
|
+
@sheet = RubyXL::Parser.parse(file).worksheets[0]
|
598
|
+
end
|
599
|
+
|
600
|
+
def to_hash
|
601
|
+
data = {}
|
602
|
+
return data unless @sheet
|
603
|
+
@sheet.each_with_index do |row, i|
|
604
|
+
next if i <= 1
|
605
|
+
gtin = row[0].value.to_s.gsub(/^0+/, '')
|
606
|
+
data[gtin] = {
|
607
|
+
gtin: gtin,
|
608
|
+
gln: row[1].value.to_s,
|
609
|
+
target_market: row[2] ? row[2].value.to_s: "",
|
610
|
+
gpc: row[3] ? row[3].value.to_s: "",
|
611
|
+
trade_item_description_de: row[4] ? row[4].value.to_s: "",
|
612
|
+
trade_item_description_en: row[5] ? row[5].value.to_s: "",
|
613
|
+
trade_item_description_fr: row[6] ? row[6].value.to_s: "",
|
614
|
+
trade_item_description_it: row[7] ? row[7].value.to_s: "",
|
615
|
+
manufacturer_name: row[8] ? row[8].value.to_s: "",
|
616
|
+
start_availability_date: row[9] ? row[9].value.to_s: "",
|
617
|
+
gross_weight: row[10] ? row[10].value.to_s: "",
|
618
|
+
net_weight: row[11] ? row[11].value.to_s: "",
|
619
|
+
}
|
620
|
+
end
|
621
|
+
data
|
622
|
+
end
|
623
|
+
end
|
594
624
|
end
|
data/lib/oddb2xml/options.rb
CHANGED
@@ -43,6 +43,7 @@ module Oddb2xml
|
|
43
43
|
opt :log, "log important actions", short: :none
|
44
44
|
opt :use_ra11zip, "Use the ra11.zip (a zipped transfer.dat from Galexis)",
|
45
45
|
default: File.exist?("ra11.zip") ? "ra11.zip" : nil, type: :string
|
46
|
+
opt :firstbase, "Build all NONPHARMA articles on firstbase", short: "b", default: false
|
46
47
|
end
|
47
48
|
|
48
49
|
@opts[:percent] = @opts[:increment]
|
@@ -63,6 +64,9 @@ module Oddb2xml
|
|
63
64
|
@opts[:extended] = true
|
64
65
|
@opts[:price] = :zurrose
|
65
66
|
end
|
67
|
+
if @opts[:firstbase]
|
68
|
+
@opts[:nonpharma] = true
|
69
|
+
end
|
66
70
|
@opts[:price] = :zurrose if @opts[:price].is_a?(TrueClass)
|
67
71
|
@opts[:price] = @opts[:price].to_sym if @opts[:price]
|
68
72
|
@opts[:ean14] = @opts[:include]
|
File without changes
|
data/lib/oddb2xml/util.rb
CHANGED
File without changes
|
data/lib/oddb2xml/version.rb
CHANGED
File without changes
|
data/lib/oddb2xml.rb
CHANGED
File without changes
|
data/oddb_calc.xsd
CHANGED
File without changes
|
data/spec/artikelstamm_spec.rb
CHANGED
@@ -75,11 +75,12 @@ describe Oddb2xml::Builder do
|
|
75
75
|
expect(@inhalt.index(expected)).not_to be nil
|
76
76
|
end
|
77
77
|
|
78
|
-
it "should have a ATC for product PRIORIX TETRA" do
|
78
|
+
it "should have a DSCRF and ATC for product PRIORIX TETRA" do
|
79
79
|
expected = %(<PRODUCT>
|
80
80
|
<PRODNO>5815801</PRODNO>
|
81
81
|
<SALECD>A</SALECD>
|
82
82
|
<DSCR>PRIORIX TETRA Trockensub c Solv Fertspr</DSCR>
|
83
|
+
<DSCRF>Priorix-Tetra, Pulver und Lösungsmittel zur Herstellung einer Injektionslösung</DSCRF>
|
83
84
|
<ATC>J07BD54</ATC>
|
84
85
|
</PRODUCT>)
|
85
86
|
expect(@inhalt.index(expected)).not_to be nil
|
@@ -118,6 +119,7 @@ describe Oddb2xml::Builder do
|
|
118
119
|
<PRODNO>5559401</PRODNO>
|
119
120
|
<SALECD>A</SALECD>
|
120
121
|
<DSCR>Nutriflex Lipid plus, Infusionsemulsion, 1250ml</DSCR>
|
122
|
+
<DSCRF/>
|
121
123
|
<ATC>B05BA10</ATC>
|
122
124
|
</PRODUCT>)
|
123
125
|
expect(@inhalt.index(expected)).not_to be nil
|
@@ -244,6 +246,7 @@ describe Oddb2xml::Builder do
|
|
244
246
|
<PHAR>0055805</PHAR>
|
245
247
|
<SALECD>A</SALECD>
|
246
248
|
<DSCR>TENSOPLAST Kompressionsbinde 5cmx4.5m</DSCR>
|
249
|
+
<DSCRF/>
|
247
250
|
<PEXF>0.00</PEXF>
|
248
251
|
<PPUB>22.95</PPUB>
|
249
252
|
</ITEM>),
|
@@ -458,12 +461,14 @@ describe Oddb2xml::Builder do
|
|
458
461
|
<!--Chapter70 hack prodno 2069639 Ceres Urtinkturen gemäss L2 mit - im Kommentar-->
|
459
462
|
<SALECD>A</SALECD>
|
460
463
|
<DSCR>Ceres Urtinkturen gemäss L2 mit -- im Kommentar</DSCR>
|
464
|
+
<DSCRF/>
|
461
465
|
</PRODUCT>),
|
462
466
|
"Chapter 70 item" => %(<ITEM PHARMATYPE="P">
|
463
467
|
<GTIN>2500000588532</GTIN>
|
464
468
|
<PHAR>2069639</PHAR>
|
465
469
|
<SALECD>A</SALECD>
|
466
470
|
<DSCR>EINF ARZNEI Ceres Urtinktur spez 20ml</DSCR>
|
471
|
+
<DSCRF/>
|
467
472
|
<PEXF>23.44</PEXF>
|
468
473
|
<PPUB>31.30</PPUB>
|
469
474
|
<!--Chapter70 hack 2500000588532 EINF ARZNEI Ceres Urtinktur spez 20ml-->
|
@@ -482,6 +487,7 @@ Der behandelnde Arzt ist verpflichtet, die erforderlichen Daten laufend im vorge
|
|
482
487
|
<PRODNO>1336901</PRODNO>
|
483
488
|
<SALECD>A</SALECD>
|
484
489
|
<DSCR>Pethidin HCl Amino 100 mg/2 ml, Injektionslösung</DSCR>
|
490
|
+
<DSCRF/>
|
485
491
|
<ATC>N02AB02</ATC>
|
486
492
|
</PRODUCT>)}
|
487
493
|
|
data/spec/calc_spec.rb
CHANGED
File without changes
|
File without changes
|
data/spec/cli_spec.rb
CHANGED
File without changes
|
data/spec/compare_spec.rb
CHANGED
File without changes
|
File without changes
|
data/spec/compressor_spec.rb
CHANGED
File without changes
|
data/spec/data/AipsDownload.zip
CHANGED
File without changes
|
File without changes
|
data/spec/data/GL_Diff_SB.xml
CHANGED
File without changes
|
data/spec/data/ItCodes.xml
CHANGED
File without changes
|
data/spec/data/PR121001.txt
CHANGED
File without changes
|
data/spec/data/PR121002.txt
CHANGED
File without changes
|
data/spec/data/Preparations.xml
CHANGED
File without changes
|
data/spec/data/Publications.xls
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/data/atc.csv
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/data/column_c.txt
CHANGED
File without changes
|
data/spec/data/compositions.txt
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/data/listen_neu.html
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/data/problems.txt
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/spec/data/transfer.dat
CHANGED
File without changes
|
data/spec/data/v5_first.xml
CHANGED
File without changes
|
data/spec/data/v5_second.xml
CHANGED
File without changes
|
data/spec/data/varia_De.htm
CHANGED
File without changes
|
data/spec/data/vcr/transfer.dat
CHANGED
File without changes
|
data/spec/data/vcr/transfer.zip
CHANGED
File without changes
|
File without changes
|
data/spec/data/wsdl_pharma.xml
CHANGED
File without changes
|
File without changes
|
data/spec/galenic_spec.rb
CHANGED
File without changes
|
data/spec/parslet_spec.rb
CHANGED
data/tools/cacert.pem
CHANGED
File without changes
|
data/tools/set.bat
CHANGED
File without changes
|
data/tools/win_fetch_cacerts.rb
CHANGED
File without changes
|
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.
|
4
|
+
version: 2.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yasuhiro Asaka, Zeno R.R. Davatz, Niklaus Giger
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -411,13 +411,17 @@ executables:
|
|
411
411
|
extensions: []
|
412
412
|
extra_rdoc_files: []
|
413
413
|
files:
|
414
|
+
- ".envrc"
|
415
|
+
- ".github/workflows/codeql.yml"
|
414
416
|
- ".github/workflows/ruby.yml"
|
415
417
|
- ".gitignore"
|
416
418
|
- ".rspec"
|
419
|
+
- ".ruby-version"
|
417
420
|
- ".standard.yml"
|
418
421
|
- Elexis_Artikelstamm_v003.xsd
|
419
422
|
- Elexis_Artikelstamm_v5.xsd
|
420
423
|
- Gemfile
|
424
|
+
- Gemfile.lock
|
421
425
|
- History.txt
|
422
426
|
- LICENSE
|
423
427
|
- Manifest.txt
|
@@ -434,6 +438,9 @@ files:
|
|
434
438
|
- data/gtin2ignore.yaml
|
435
439
|
- data/product_overrides.yaml
|
436
440
|
- dokumentation_calc.textile
|
441
|
+
- flake.lock
|
442
|
+
- flake.nix
|
443
|
+
- gemset.nix
|
437
444
|
- lib/oddb2xml.rb
|
438
445
|
- lib/oddb2xml/builder.rb
|
439
446
|
- lib/oddb2xml/calc.rb
|
@@ -453,7 +460,6 @@ files:
|
|
453
460
|
- oddb2xml.gemspec
|
454
461
|
- oddb2xml.xsd
|
455
462
|
- oddb_calc.xsd
|
456
|
-
- shell.nix
|
457
463
|
- spec/artikelstamm_spec.rb
|
458
464
|
- spec/builder_spec.rb
|
459
465
|
- spec/calc_spec.rb
|
@@ -529,7 +535,7 @@ homepage: https://github.com/zdavatz/oddb2xml
|
|
529
535
|
licenses:
|
530
536
|
- GPL-3.0
|
531
537
|
metadata: {}
|
532
|
-
post_install_message:
|
538
|
+
post_install_message:
|
533
539
|
rdoc_options: []
|
534
540
|
require_paths:
|
535
541
|
- lib
|
@@ -544,8 +550,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
544
550
|
- !ruby/object:Gem::Version
|
545
551
|
version: '0'
|
546
552
|
requirements: []
|
547
|
-
rubygems_version: 3.
|
548
|
-
signing_key:
|
553
|
+
rubygems_version: 3.4.5
|
554
|
+
signing_key:
|
549
555
|
specification_version: 4
|
550
556
|
summary: oddb2xml creates xml files.
|
551
557
|
test_files:
|
data/shell.nix
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
# See https://nixos.wiki/wiki/Packaging/Ruby
|
2
|
-
# A small helper script to get a development version for oddb2xml under NixOS
|
3
|
-
with import <nixpkgs> {};
|
4
|
-
stdenv.mkDerivation {
|
5
|
-
name = "env";
|
6
|
-
buildInputs = [
|
7
|
-
ruby_3_1
|
8
|
-
rubyPackages_3_0.safe_yaml
|
9
|
-
ruby_3_1.devEnv
|
10
|
-
git
|
11
|
-
python
|
12
|
-
libpcap
|
13
|
-
libxml2
|
14
|
-
libxslt
|
15
|
-
pkg-config
|
16
|
-
bundix
|
17
|
-
gnumake
|
18
|
-
];
|
19
|
-
}
|