<< | Index | >>
I got an error email from import_gkv with the updated rpdf2txt yesterday
Tue May 17 16:48:52 2011: de.oddb.org ODDB::Import::Gkv#import NoMethodError undefined method `value' for nil:NilClass ./lib/oddb/import/gkv.rb:361:in `postprocess' ./lib/oddb/import/gkv.rb:358:in `each' ./lib/oddb/import/gkv.rb:358:in `postprocess' ./lib/oddb/import/gkv.rb:101:in `import' /usr/lib64/ruby/site_ruby/1.8/oddb/util/updater.rb:96:in `reported_import' /usr/lib64/ruby/site_ruby/1.8/oddb/util/updater.rb:103:in `call' /usr/lib64/ruby/site_ruby/1.8/oddb/util/updater.rb:103:in `_reported_import' /usr/lib64/ruby/site_ruby/1.8/oddb/util/updater.rb:96:in `reported_import' /usr/lib64/ruby/site_ruby/1.8/oddb/util/updater.rb:58:in `import_gkv' /usr/lib64/ruby/1.8/open-uri.rb:32:in `open_uri_original_open' /usr/lib64/ruby/1.8/open-uri.rb:32:in `open' ./lib/oddb/import/gkv.rb:77:in `download_latest' /usr/lib64/ruby/site_ruby/1.8/oddb/util/updater.rb:57:in `import_gkv' jobs/import_gkv:16 ./lib/oddb/util/job.rb:16:in `call' ./lib/oddb/util/job.rb:16:in `run' jobs/import_gkv:15 Imported 6510 Zubef-Entries on 17.05.2011: Visited 6217 existing Zubef-Entries Visited 6501 existing Companies Visited 1136 existing Substances Created 293 new Zubef-Entries Created 0 new Products Created 8 new Sequences Created 9 new Companies Created 1 new Substances Assigned 0 Chemical Equivalences Assigned 0 Companies Created 5 Incomplete Packages: http://de.oddb.org/de/drugs/package/pzn/9075301 http://de.oddb.org/de/drugs/package/pzn/9075347 http://de.oddb.org/de/drugs/package/pzn/9075330 http://de.oddb.org/de/drugs/package/pzn/9075324 http://de.oddb.org/de/drugs/package/pzn/7755606 Created 0 Product(s) without a name (missing product name):
Note
Sequence 1 ActiveAgent *--1 Composition *-------+-------* Package
Experiment
masa@masa ~/ywesee/de.oddb.org $ bin/admin de.oddb> ODDB::Drugs::Package.all[0].active_agents[0].to_s -> Omeprazol 20 mg
Experiment (check 'Zuzahlungsbefreit', which means if it is true the package data is on Zubef PDF file)
de.oddb> ODDB::Drugs::Package.find_by_name('Jodid 500 Tabletten').code(:zuzahlungsbefreit) -> de.oddb> ODDB::Drugs::Package.find_by_name('Ticlopidin- Ct 250 mg Filmtabletten').code(:zuzahlungsbefreit) -> true
Note
Experiment (check all the 'Zuzahlungsbefreit')
de.oddb> open('/home/masa/work/zuzahl_all.dat','w'){|f| i=0; ODDB::Drugs::Package.all.each{|x| f.print i+=1,"\t", x.code(:cid), "\t", x.code(:zuzahlungsbefreit), "\t", x.cascading_name('de'), "\n"}}
Result
1 3799162 nil Jodid 500 Tabletten 2 3799156 nil Jodid 500 Tabletten 3 4169664 false Amisulprid dura 200 mg Tabletten 4 7356935 nil Omnic Ocas Mg 5 5116078 nil Formatris Ug Inhedp 6 1607715 true Akineton retard Tabletten 7 3816601 nil Antagonil 20 Kapseln 8 6308325 nil Omnic Ocas 0,4 mg Retardtabletten 9 3816624 nil Antagonil 20 Kapseln ... 42886 nil nil Verasal 240 mg retard Tabletten 42887 nil nil Zanipress 10mg/10mg 42888 nil nil Zurcal S Mg 42889 nil nil Zurcal S Mg 42890 nil nil Zurcal S Mg 42891 nil nil Zurcal S Mg 42892 nil nil Zurcal S Mg 42893 nil nil Zurcal S Mg
Check on browser
Plan
Refer to lib/oddb/html/state/drugs/admin/sequence.rb#ajax_delete_active_agent
def ajax_delete_active_agent check_model keys = [:uid, :active_agent, :composition] input = user_input(keys, keys) agents = [] if(!error? \ && (composition = @model.compositions.at(input[:composition].to_i))) if(agent = composition.active_agents.at(input[:active_agent].to_i)) agent.delete composition.remove_active_agent(agent) composition.save end agents = composition.active_agents end AjaxActiveAgents.new(@session, agents) end
Test (delete an active agent on bin/admin)
de.oddb> ODDB::Drugs::Package.find_by_name('Ticlopidin- Ct 250 mg Filmtabletten').active_agents.length -> 8 de.oddb> ODDB::Drugs::Package.find_by_name('Ticlopidin- Ct 250 mg Filmtabletten').code(:cid) -> 459810 de.oddb> ODDB::Drugs::Package.find_by_name('Ticlopidin- Ct 250 mg Filmtabletten').active_agents[2].delete -> hpidinolydrochloridiTc 250 mg de.oddb> ODDB::Drugs::Package.find_by_name('Ticlopidin- Ct 250 mg Filmtabletten').active_agents[2].delete -> Ticidrohlcorlyhpidinod 250 mg de.oddb> ODDB::Drugs::Package.find_by_name('Ticlopidin- Ct 250 mg Filmtabletten').active_agents[2].delete -> clopidindiTidryohlcorh 250 mg de.oddb> ODDB::Drugs::Package.find_by_name('Ticlopidin- Ct 250 mg Filmtabletten').active_agents[2].delete -> riTclidohlcoroyhpidind 250 mg de.oddb> ODDB::Drugs::Package.find_by_name('Ticlopidin- Ct 250 mg Filmtabletten').active_agents[2].delete -> cTidrohlordyhpidinilco 250 mg de.oddb> ODDB::Drugs::Package.find_by_name('Ticlopidin- Ct 250 mg Filmtabletten').active_agents[2].delete -> chlordidrTiclopidinhyo 250 mg de.oddb> ODDB::Drugs::Package.find_by_name('Ticlopidin- Ct 250 mg Filmtabletten').active_agents[1].delete -> dTiidrohlcocyhpidinolr 250 mg de.oddb> ODDB::Drugs::Package.find_by_name('Ticlopidin- Ct 250 mg Filmtabletten').active_agents.length -> 1
Note
Just in case (backup database)
masa@masa ~/ywesee/de.oddb.org $ sudo pg_dump -U postgres oddb > oddb_bak_after_import_gkv.sql
Experiment (lib/oddb/util/server.rb#delete_all_active_agent_but_first)
def delete_all_active_agent_but_first ODDB::Drugs::Package.all.each do |pack| if pack.code(:zuzahlungsbefreit) while pack.active_agents[1] pack.active_agents[1].delete end end end end
Run
masa@masa ~/ywesee/de.oddb.org $ bin/admin de.oddb> delete_all_active_agent_but_first -> Array
Note
Example
Commit
Refer to
lib/oddb/import/gkv.rb#postprocess
def postprocess Drugs::Package.search_by_code(:type => 'zuzahlungsbefreit', :value => 'true', :country => 'DE').each { |package| pzn = package.code(:cid).value unless(@confirmed_pzns.include?(pzn)) @deleted += 1 package.code(:zuzahlungsbefreit).value = false save package end ...
lib/oddb/import/gkv.rb#import_row
def import_row(row) if row == :doubtful @doubtful_pzns.push @created_pzn if @created_pzn @created_pzn = nil return end @count += 1 package = import_package(row) return if package.nil? @confirmed_pzns.store(package.code(:cid).value, true) if(code = package.code(:zuzahlungsbefreit)) if(code.value) @existing += 1 else @created += 1 end code.value = true else @created += 1 code = Util::Code.new(:zuzahlungsbefreit, true, 'DE') package.add_code(code) end ...
Note
Experiment (lib/oddb/import/gkv.rb#import_row)
def import_row(row) if row == :doubtful @doubtful_pzns.push @created_pzn if @created_pzn @created_pzn = nil return end @count += 1 package = import_package(row) return if package.nil? @confirmed_pzns.store(package.code(:cid).value, true) if row.to_s =~ /3867225/ p "import_row" p package.code(:zuzahlungsbefreit) end if(code = package.code(:zuzahlungsbefreit)) if(code.value) @existing += 1 else @created += 1 end code.value = true else @created += 1 code = Util::Code.new(:zuzahlungsbefreit, true, 'DE') package.add_code(code) end if row.to_s =~ /3867225/ p "import_row" p package.code(:zuzahlungsbefreit) end
Result
"import_row" #<ODDB::Util::Code:0x7f24096f1358 @country="DE", @values={Thu, 13 Dec 2007=>false, Thu, 20 Dec 2007=>true, Tue, 03 Jul 2007=>true}, @type="zuzahlungsbefreit"> "import_row" #<ODDB::Util::Code:0x7f24096f1358 @country="DE", @values={Thu, 13 Dec 2007=>false, Thu, 20 Dec 2007=>true, Tue, 03 Jul 2007=>true}, @type="zuzahlungsbefreit">
Note