class Oddb2xml::RefdataExtractor
Public Class Methods
new(xml, type)
click to toggle source
Calls superclass method
Oddb2xml::Extractor::new
# File lib/oddb2xml/extractor.rb, line 204 def initialize(xml, type) @type = (type == :pharma ? "PHARMA" : "NONPHARMA") super(xml) end
Public Instance Methods
to_hash()
click to toggle source
# File lib/oddb2xml/extractor.rb, line 209 def to_hash data = {} result = SwissRegArticleEntry.parse(@xml.sub(STRIP_FOR_SAX_MACHINE, ""), lazy: true) items = result.ARTICLE.ITEM items.each do |pac| ean13 = (gtin = pac.GTIN.to_s) ? gtin : "0" if ean13.size < 13 puts "Refdata #{@type} use 13 chars not #{ean13.size} for #{ean13}" if $VERBOSE ean13 = ean13.rjust(13, "0") end if ean13.size == 14 && ean13[0] == "0" puts "Refdata #{@type} remove leading '0' for #{ean13}" if $VERBOSE ean13 = ean13[1..-1] end # but in refdata_nonPharma we have a about 700 GTINs which are 14 characters and longer item = {} item[:ean13] = ean13 item[:no8] = pac.SWMC_AUTHNR item[:data_origin] = "refdata" item[:refdata] = true item[:_type] = (typ = pac.ATYPE.downcase.to_sym) ? typ : "" item[:last_change] = (date = Time.parse(pac.DT).to_s) ? date : "" # Date and time of last data change item[:desc_de] = (dscr = pac.NAME_DE) ? dscr : "" item[:desc_fr] = (dscr = pac.NAME_FR) ? dscr : "" item[:desc_it] = item[:desc_de] # refdata has no italian name item[:atc_code] = (code = pac.ATC) ? code.to_s : "" item[:company_name] = (nam = pac.AUTH_HOLDER_NAME) ? nam : "" item[:company_ean] = (gln = pac.AUTH_HOLDER_GLN) ? gln : "" data[item[:ean13]] = item end data end