<< | Index | >>
Browser
Source data
Source code
src/util/updater.rb#export_oddb_csv
def export_oddb_csv(date = @@today) subj = 'oddb.csv' wrap_update(CsvExportPlugin, subj) { plug = CsvExportPlugin.new(@app) plug.export_drugs log = Log.new(date) log.update_values(log_info(plug)) log.notify(subj) } end def export_oddb2_csv(date = @@today) subj = 'oddb2.csv' wrap_update(CsvExportPlugin, subj) { plug = CsvExportPlugin.new(@app) plug.export_drugs_extended log = Log.new(date) log.update_values(log_info(plug)) log.notify(subj) } end
src/util/exporter.rb#export_csv
def export_csv plug = CsvExportPlugin.new(@app) safe_export 'oddb.csv' do plug.export_drugs end safe_export 'oddb.csv' do plug.export_drugs_extended end EXPORT_SERVER.clear sleep(30) end
Note
src/plugin/csv_export.rb#export_drugs
def export_drugs @options = { :iconv => 'ISO-8859-1//TRANSLIT//IGNORE' } recipients.concat self.class::ODDB_RECIPIENTS _export_drugs 'oddb', [ :rectype, :iksnr, :ikscd, :ikskey, :barcode, :bsv_dossier, :pharmacode, :name_base, :galenic_form, :most_precise_dose, :size, :numerical_size, :price_exfactory, :price_public, :company_name, :ikscat, :sl_entry, :introduction_date, :limitation, :limitation_points, :limitation_text, :lppv, :registration_date, :expiration_date, :inactive_date, :export_flag, :casrn, :generic_type, :has_generic, :deductible, :out_of_trade, :c_type, :index_therapeuticus, :ith_swissmedic, :narcotic, :vaccine ] end
And this above called _export_drugs method below
src/plugin/csv_export.rb#_export_drugs
def _export_drugs(export_name, keys) session = SessionStub.new(@app) session.language = 'de' session.lookandfeel = LookandfeelBase.new(session) model = @app.atc_classes.values.sort_by { |atc| atc.code } name = "#{export_name}.csv" @file_path = path = File.join(EXPORT_DIR, name) exporter = View::Drugs::CsvResult.new(model, session) exporter.to_csv_file(keys, path, :packages) dups = exporter.duplicates @counts = exporter.counts @counts['duplicates'] = dups.size unless(dups.empty?) log = Log.new(@@today) log.report = sprintf "CSV-Export includes %i duplicates:\n%s", dups.size, dups.join("\n") log.notify("CSV-Export includes %i duplicates" % dups.size) end EXPORT_SERVER.compress(EXPORT_DIR, name) backup = @app.log_group(:bsv_sl).newest_date.strftime("#{export_name}.%Y-%m-%d.csv") backup_dir = File.expand_path('../../data/csv', File.dirname(__FILE__)) backup_path = File.join(backup_dir, backup) unless(File.exist? backup_path) FileUtils.mkdir_p(backup_dir) FileUtils.cp(path, backup_path) end rescue puts $!.message puts $!.backtrace raise end
Note
src/plugin/swissmedic.rb#update_registration
def update_registration(row, opts = {}) opts = {:date => @@today, :create_only => false}.update(opts) opts[:date] ||= @@today group = cell(row, column(:production_science)) if(group != 'Tierarzneimittel') iksnr = cell(row, column(:iksnr)) return if (filter = opts[:iksnr]) && iksnr != filter return if (filter = opts[:iksnrs]) && !filter.include?(iksnr) science = cell(row, column(:production_science)) ptr = if(registration = @app.registration(iksnr)) return registration if opts[:create_only] registration.pointer else Persistence::Pointer.new([:registration, iksnr]).creator end expiration = date_cell(row, column(:expiry_date)) reg_date = date_cell(row, column(:registration_date)) args = { :ith_swissmedic => cell(row, column(:index_therapeuticus)), :production_science => science, :registration_date => reg_date, :expiration_date => expiration, :renewal_flag => false, :inactive_date => nil, :export_flag => nil, } if(expiration < opts[:date]) args.store :renewal_flag, true end case science when "Anthroposophika" args.store :complementary_type, 'anthroposophy' when "Homöopathika" args.store :complementary_type, 'homeopathy' when "Phytotherapeutika" args.store :complementary_type, 'phytotherapy' end if(company = update_company(row)) args.store :company, company.pointer end if(indication = update_indication(cell(row, column(:indication_registration)))) args.store :indication, indication.pointer end @app.update ptr, args, :swissmedic end
Question
Test output oddb.csv (default)
$ bin/admin ch.oddb> Updater.new(self).export_oddb_csv
Result
anthroposophy 294 bsv_dossiers 3312 complementary 282 deductible_g 8617 deductible_o 46 duplicates 0 expiration_date 21933 export_registrations 668 galenic_forms 324 generics 4625 has_generic 0 homeopathy 810 inactive_date 4332 limitation_both 142 limitation_points 142 limitation_texts 1315 limitations 1315 lppv 601 missing_size 28 originals 2110 out_of_trade 3447 phytotherapy 1342 price_exfactory 9833 price_public 12369 registration_date 23566 routes_of_administration 0 sl_entries 8663
Experiment
src/plugin/csv_export.rb#export_drugs
def export_drugs @options = { :iconv => 'ISO-8859-1//TRANSLIT//IGNORE' } recipients.concat self.class::ODDB_RECIPIENTS _export_drugs 'oddb', [ :rectype, :iksnr, :ikscd, :ikskey, :barcode, :bsv_dossier, :pharmacode, :name_base, :galenic_form, :most_precise_dose, :size, :numerical_size, :price_exfactory, :price_public, :company_name, :ikscat, :sl_entry, :introduction_date, :limitation, :limitation_points, :limitation_text, :lppv, :registration_date, :expiration_date, :inactive_date, :export_flag, :casrn, :generic_type, :has_generic, :deductible, :out_of_trade, #:c_type, :index_therapeuticus, :ith_swissmedic, :narcotic, :vaccine ] :c_type, :index_therapeuticus, :ith_swissmedic, :narcotic, :vaccine, :renewal_flag ] end
Rerun
$ bin/admin ch.oddb> Updater.new(self).export_oddb_csv
Result
Error
Plugin: ODDB::CsvExportPlugin Error: NoMethodError Message: undefined method `renewal_flag' for #<ODDB::Package:0x7f9ce33e7c68> Backtrace: (eval):2:in `send' (eval):2:in `send' /home/masa/ywesee/oddb.org/src/view/drugs/csv_result.rb:323:in `to_csv' /home/masa/ywesee/oddb.org/src/view/drugs/csv_result.rb:319:in `collect' /home/masa/ywesee/oddb.org/src/view/drugs/csv_result.rb:319:in `to_csv' /home/masa/ywesee/oddb.org/src/view/drugs/csv_result.rb:317:in `each' /home/masa/ywesee/oddb.org/src/view/drugs/csv_result.rb:317:in `to_csv' /home/masa/ywesee/oddb.org/src/view/drugs/csv_result.rb:315:in `each' /home/masa/ywesee/oddb.org/src/view/drugs/csv_result.rb:315:in `to_csv' /home/masa/ywesee/oddb.org/src/view/drugs/csv_result.rb:336:in `to_csv_file' /home/masa/ywesee/oddb.org/src/view/drugs/csv_result.rb:336:in `open' /home/masa/ywesee/oddb.org/src/view/drugs/csv_result.rb:336:in `to_csv_file' /home/masa/ywesee/oddb.org/src/plugin/csv_export.rb:55:in `_export_drugs' /home/masa/ywesee/oddb.org/src/plugin/csv_export.rb:24:in `export_drugs' /home/masa/ywesee/oddb.org/src/util/updater.rb:81:in `export_oddb_csv' /home/masa/ywesee/oddb.org/src/util/updater.rb:461:in `call' /home/masa/ywesee/oddb.org/src/util/updater.rb:461:in `wrap_update' /home/masa/ywesee/oddb.org/src/util/updater.rb:79:in `export_oddb_csv' (eval):1:in `_admin' /home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `call' /home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `failsafe' /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1399:in `_admin' /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1397:in `initialize' /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1397:in `new' /home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1397:in `_admin' /usr/lib64/ruby/1.8/drb/drb.rb:1555:in `__send__' /usr/lib64/ruby/1.8/drb/drb.rb:1555:in `perform_without_block' /usr/lib64/ruby/1.8/drb/drb.rb:1515:in `perform' /usr/lib64/ruby/1.8/drb/drb.rb:1589:in `main_loop' /usr/lib64/ruby/1.8/drb/drb.rb:1585:in `loop' /usr/lib64/ruby/1.8/drb/drb.rb:1585:in `main_loop' /usr/lib64/ruby/1.8/drb/drb.rb:1581:in `start' /usr/lib64/ruby/1.8/drb/drb.rb:1581:in `main_loop' /usr/lib64/ruby/1.8/drb/drb.rb:1430:in `run' /usr/lib64/ruby/1.8/drb/drb.rb:1427:in `start' /usr/lib64/ruby/1.8/drb/drb.rb:1427:in `run' /usr/lib64/ruby/1.8/drb/drb.rb:1347:in `initialize' /usr/lib64/ruby/1.8/drb/drb.rb:1627:in `new' /usr/lib64/ruby/1.8/drb/drb.rb:1627:in `start_service' bin/oddbd:38
Experiment
#:source, :index_therapeuticus, :ith_swissmedic, :has_fachinfo?, :production_science :source, :index_therapeuticus, :ith_swissmedic, :has_fachinfo?, :production_science, :renewal_flag
Rerun
$ bin/admin ch.oddb> Updater.new(self).export_oddb_csv
Result
Note
Problem
Example
Note
Resolved
Check all the test-cases
1) Failure: test_recent_items(ODDB::TestPatinfoInvoicer) [/home/masa/ywesee/oddb.org/test/test_plugin/patinfo_invoicer.rb:183]: <2> expected but was <1>. 2) Error: test_download_export_descr(TestDownloadExportComposite): NoMethodError: undefined method `user_input' for <FlexMock:session>:FlexMock /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:105:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:98:in `method_missing' /home/masa/ywesee/oddb.org/src/view/user/export.rb:84:in `once_or_year' /home/masa/ywesee/oddb.org/src/view/user/download_export.rb:420:in `radio_oddb_csv' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:66:in `send' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:66:in `create' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:280:in `compose_component' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:209:in `compose' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:203:in `each' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:203:in `compose' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:55:in `init' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/component.rb:138:in `initialize' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:59:in `new' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:59:in `create' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:280:in `compose_component' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:209:in `compose' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:203:in `each' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:203:in `compose' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:55:in `init' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/form.rb:82:in `init' /home/masa/ywesee/oddb.org/src/view/user/download_export.rb:535:in `init' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/component.rb:138:in `initialize' /home/masa/ywesee/oddb.org/test/test_view/user/download_export.rb:51:in `new' /home/masa/ywesee/oddb.org/test/test_view/user/download_export.rb:51:in `setup' 3) Error: test_compression_label(TestDownloadExportInnerComposite): NoMethodError: undefined method `user_input' for <FlexMock:session>:FlexMock /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:105:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:98:in `method_missing' /home/masa/ywesee/oddb.org/src/view/user/export.rb:84:in `once_or_year' /home/masa/ywesee/oddb.org/src/view/user/download_export.rb:420:in `radio_oddb_csv' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:66:in `send' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:66:in `create' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:280:in `compose_component' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:209:in `compose' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:203:in `each' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:203:in `compose' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/composite.rb:55:in `init' /usr/lib64/ruby/site_ruby/1.8/htmlgrid/component.rb:138:in `initialize' /home/masa/ywesee/oddb.org/test/test_view/user/download_export.rb:27:in `new' /home/masa/ywesee/oddb.org/test/test_view/user/download_export.rb:27:in `setup'
Note
Update
Git pull and Reboot on server
Commit
Commit