diff --git a/src/plugin/oddbdat_export.rb b/src/plugin/oddbdat_export.rb index 0055a7f..09fccc4 100644 --- a/src/plugin/oddbdat_export.rb +++ b/src/plugin/oddbdat_export.rb @@ -1,6 +1,7 @@ #/usr/bin/env ruby # encoding: utf-8 -# OddbDatExport -- oddb -- 23.06.2003 -- aschrafl@ywesee.com +# ODDB::OddbDatExport -- oddb.org -- 19.01.2012 -- mhatakeyama@ywesee.com +# ODDB::OddbDatExport -- oddb.org -- 23.06.2003 -- aschrafl@ywesee.com require 'plugin/plugin' require 'drb' @@ -80,6 +81,50 @@ class OddbDatExport < ODDB::Plugin # warning return dose_missing_list end + def export_by_company_name(company_name) + files = [] + + # package tables + package_tables = [ + AcTable, AccompTable, AcLimTable, AcmedTable, AcnamTable, + AcOddbTable, AcpricealgTable, AcscTable, LimitationTable, + LimTxtTable, EanTable + ] + ids = [] + dose_missing_list = [] + @app.each_package { |pac| + if pac.company_name and pac.company_name.downcase =~ /#{company_name.downcase}/ + ids.push(pac.odba_id) + if pac.parts.empty? + dose_missing_list.push([pac.basename, pac.iksnr, pac.sequence.seqnr, pac.ikscd]) + end + end + } + + files += EXPORT_SERVER.export_oddbdat(ids, EXPORT_DIR, package_tables) + + # codes table + ids = @app.atc_classes.values.select{|at| at.sequences.find{|seq| seq.company_name.downcase =~ /#{company_name}/ if seq.company_name}}.collect { |atc| atc.odba_id } + @app.each_galenic_form { |galform| ids.push(galform.odba_id) } + files += EXPORT_SERVER.export_oddbdat(ids, EXPORT_DIR, [CodesTable]) + + # substances table + ids = @app.substances.values.select{|at| at.sequences.find{|seq| seq.company_name.downcase =~ /#{company_name}/ if seq.company_name}}.collect { |subs| subs.odba_id } + files += EXPORT_SERVER.export_oddbdat(ids, EXPORT_DIR, [ScTable]) + + # companies table + ids = @app.companies.values.select{|com| com.name.downcase =~ /#{company_name}/}.collect { |comp| comp.odba_id } + files += EXPORT_SERVER.export_oddbdat(ids, EXPORT_DIR, [CompTable]) + + # readme + files += EXPORT_SERVER.export_oddbdat(nil, EXPORT_DIR, [Readme]) + + # compress + EXPORT_SERVER.compress_many(EXPORT_DIR, "oddbdat_#{company_name}", files) + + # warning + return dose_missing_list + end def export_fachinfos # fachinfo table ids = @app.fachinfos.collect { |oid, fachinfo| fachinfo.odba_id } diff --git a/src/util/exporter.rb b/src/util/exporter.rb index fd8a6f3..a6cda3c 100644 --- a/src/util/exporter.rb +++ b/src/util/exporter.rb @@ -173,6 +173,32 @@ module ODDB end end end + def export_oddbdat_by_company_name(company_name) + dose_missing_list = [] + safe_export 'oddbdat' do + exporter = OdbaExporter::OddbDatExport.new(@app) + dose_missing_list = exporter.export_by_company_name(company_name) + EXPORT_SERVER.clear + sleep(30) + + # here to raise warning if package.parts is empty + if !dose_missing_list.empty? + log = Log.new(@@today) + log.report = [ + "Warning: Dose data (ODDB::Package.parts, Array of ODDB::Dose instances) is empty.", + "Message: export_oddbdat succeeded but the following package(s) do not have Dose data.", + "Package(s):", + dose_missing_list.collect do |list| + list[0].to_s + ", " + \ + "http://#{SERVER_NAME}/de/gcc/show/reg/" + list[1].to_s + \ + "/seq/" + list[2].to_s + "/pack/" + list[3].to_s + ".\n" + end + ].join("\n") + log.notify("Warning Export: oddbdat") + end + end + end + def export_pdf FiPDFExporter.new(@app).run end