---
Investigation why searching pharmacies does not work. Bin/admin shows that search_pharmacies('Basel')
is returning [Zollweiden-Apotheke]
which is only one of many pharmacies in Basel. More test via bin/admin
companies.keys.max -> 32672126 ch.oddb> company(32672126) -> Pharmacie Coop Vitality ch.oddb> company(32672126).business_area -> ba_public_pharmacy company(32672126).search_terms -> ["Pharmacie", "Coop", "Vitality", "Pharmacie Coop Vitality", "7610840000059", "Rue de Saugy 1", "1023 Crissier", "Crissier", "1023"] search_pharmacies('Crissier') -> [] search_pharmacies('Vitality') -> []
But running jobs/rebuild_indices company_index
fails with
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:126:in `require': iconv will be deprecated in the future, use String#encode instead. could not find htmlgrid.so, falling back to pure-ruby class Attention: monkey-patching CSV::Cell /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:126:in `require': cannot load such file -- racc/info (LoadError) from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:126:in `require' from racc/parser.rb:14:in `<top (required)>' from /var/www/oddb.org/src/util/quanty/parse.rb:11:in `module_eval' from /var/www/oddb.org/src/util/quanty/parse.rb:11:in `<top (required)>' from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:126:in `require' from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:126:in `require' from /var/www/oddb.org/src/util/quanty.rb:2:in `<top (required)>' <..>
Installing missing gem as root via /usr/local/bin/gem install racc --version=1.4.11
. Now the rebuild_index is running.
Now searching the pharmacies works as expected, e.g. http://ch.oddb.org/de/gcc/search/zone/pharmacies/search_query/Glarus returns 3 pharmacies.
Got the following error
@40000000547d68dd2894929c /var/www/oddb.org/src/model/ba_type.rb:24:in `<module:ODDB>': uninitialized constant ODDB::Set (NameError)
Fixed with commit Add require 'set' for exporter
Got the following error on thinpower
Plugin: ODDB::BsvXmlPlugin Error: NoMethodError Message: undefined method `pointer' for "":String @report: {:name_base=>"EpiPen", :name_descr=>"Inj Lös 0.300 mg Auto", :swissmedic_no5_bag=>"53836", :deductible=>:deductible_g, :generic_type=>:unknown, :atc_class=>"C01CA24", :pharmacode_bag=>"1891722", :swissmedic_no5_oddb=>"53836", :swissmedic_no8_bag=>"53836011", :pharmacode_oddb=>"1891722"} Backtrace: /var/www/oddb.org/src/plugin/bsv_xml.rb:337:in `tag_end' /usr/local/lib/ruby/1.9.1/rexml/parsers/streamparser.rb:26:in `parse' /usr/local/lib/ruby/1.9.1/rexml/document.rb:205:in `parse_stream' /var/www/oddb.org/src/plugin/bsv_xml.rb:1008:in `update_preparations' /var/www/oddb.org/src/plugin/bsv_xml.rb:663:in `block (2 levels) in _update' /usr/local/lib/ruby/gems/1.9.1/gems/rubyzip-1.1.6/lib/zip/entry.rb:500:in `get_input_stream' /var/www/oddb.org/src/plugin/bsv_xml.rb:663:in `block in _update' /usr/local/lib/ruby/gems/1.9.1/gems/rubyzip-1.1.6/lib/zip/entry_set.rb:42:in `call' /usr/local/lib/ruby/gems/1.9.1/gems/rubyzip-1.1.6/lib/zip/entry_set.rb:42:in `block in each' /usr/local/lib/ruby/gems/1.9.1/gems/rubyzip-1.1.6/lib/zip/entry_set.rb:41:in `each' /usr/local/lib/ruby/gems/1.9.1/gems/rubyzip-1.1.6/lib/zip/entry_set.rb:41:in `each' /usr/local/lib/ruby/gems/1.9.1/gems/rubyzip-1.1.6/lib/zip/central_directory.rb:182:in `each' /usr/local/lib/ruby/gems/1.9.1/gems/rubyzip-1.1.6/lib/zip/file.rb:139:in `block in foreach' /usr/local/lib/ruby/gems/1.9.1/gems/rubyzip-1.1.6/lib/zip/file.rb:99:in `open' /usr/local/lib/ruby/gems/1.9.1/gems/rubyzip-1.1.6/lib/zip/file.rb:138:in `foreach' /var/www/oddb.org/src/plugin/bsv_xml.rb:658:in `_update' /var/www/oddb.org/src/plugin/bsv_xml.rb:653:in `update' /var/www/oddb.org/src/util/updater.rb:276:in `block in update_bsv' /var/www/oddb.org/src/util/updater.rb:526:in `call' /var/www/oddb.org/src/util/updater.rb:526:in `wrap_update' /var/www/oddb.org/src/util/updater.rb:274:in `update_bsv' /var/www/oddb.org/src/util/updater.rb:200:in `run' jobs/import_daily:13:in `block in <module:Util>' /var/www/oddb.org/src/util/job.rb:40:in `call' /var/www/oddb.org/src/util/job.rb:40:in `run' jobs/import_daily:12:in `<module:Util>' jobs/import_daily:11:in `<module:ODDB>' jobs/import_daily:10:in `
Bag 53836011 has two sequences 53836 01 011
Epipen and 53836 02 038
Epipen Junior. NameBase seems to have changed form Epipen to EpiPen. Code is inside a rarely used path to resolve a conflict, where it should point to a correct package, which it evidently is not.
Pushed a fix to make travis-ci running our tests Added quanty to avoid problem with US-ASCII and allowing running test on travis-ci
Good news is that running test/test_plugin/bsv_xml.rb hits the failing source code. Bad news is that it is using a mock instead of real instance. There are just way to many mocks used in our unit tests where we should work with real objects to expose their real failures. Sometimes I think getting a good coverage was a higher goal than stress testing the real code!
Comparing EpiPen from 2014.11.01 with 2014.12.01
MEDA Pharma GmbH 1891722 16897 53836011 B 15.03.1998 EpiPen, Inj Lös 0.300 mg Auto, Injektor 1 Stk 52.15 76.25 02.05.20. Adrenalinum 3711 N MEDA Pharma GmbH 1891722 16897 53836011 B 15.03.1998 EpiPen, Inj Lös 0.300 mg Auto, Injektor 1 Stk 52.15 76.25 02.05.20. Adrenalinum 3711 N 7680538360116
Okay. We found that now we have a new column Q named GTIN in the publications.xls file. Comparing the productkey 8681 between the extracted Preparations.xml I did not find any difference. Also the code in question should only be executed if the AtcCode has changed.
Created a work around and start jobs/import_bsv on oddb-ci2. The work-around shows that the ATC-Code is updated for every package. Trying to avoid this useless update. Restarted import again. My new code did not catch when seq.atc_class was nil. Refined the code and restarted the import again.
Import completed. But there are still (at least in my opinion) way to many warnings like
Could not create: :!registration,51164!sequence,01!016!sl_entry., reason: :!registration,51164!sequence,01!016!sl_entry. -> ODDB::Sequence::package(016) returned nil Could not create: :!registration,51164!sequence,01!024!sl_entry., reason: :!registration,51164!sequence,01!024!sl_entry. -> ODDB::Sequence::package(024) returned nil ODBA::Stub was unable to replace ODDB::SlEntry#705477 from ODDB::Package:#226260 <..> ODBA::Stub was unable to replace ODDB::SlEntry#4299192 from ODDB::Package:#3035094 failsafe rescued TypeError < StandardError 0 is not a symbol /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/stub.rb:122:in `respond_to?' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/stub.rb:122:in `respond_to?' /var/www/oddb.org/src/util/persistence.rb:302:in `block in resolve' <..>
in the standard output of the importer.
But does updating the ATC-Code really work? Found in the log entries like
2014-12-02 12:09:34 CET bsv_xml: update_conflict 4672340 001 seq is Agnus castus-Mepha, Lactab atc Andere Gynaekologika code G02CX99 pointer? true @seq_data is {:atc_class=>"G02CX03"} <..> 2014-12-02 15:47:38 CET bsv_xml: update_conflict 5249709 022 seq is #<ODBA::Stub:352542780#28705408 @odba_class=ODDB::Sequence @odba_container=302238560#28705420> pointer? true @seq_data is {:atc_class=>"B01AF01"}
But even after restarting oddbd http://oddb-ci2.dyndns.org/de/gcc/search/zone/drugs/search_query/5249709/search_type/st_pharmacode?#best_result shows as ATC-Klassierung B01AX06. (In the FI one finds the correct ATC-Code B01AF01). But in this case I cannot find a valid atc_class for B01AF01.
ch.oddb> atc_class('B01AF01').class -> NilClass ch.oddb> atc_class('C01CA24') -> Epinephrin ch.oddb> atc_class('C01CA24').code -> C01CA24
We should probably be re-import an actual dump of the ATC-classes. Pushed the following commits
Started sudo -u apache jobs/import_bsv
on thinpower.
In the XML for companies (from https://index.ws.e-mediat.net/Swissindex/Company/ws_Company_V101.asmx?WSDL) you find 13922 entries which belong to 25 different "TYPE" attributes, listed here (with number of occurrences {"ONursOrg"=>1603, "Indus"=>1031, "SpecPra"=>457, "Pharm"=>2553, "HeaTec"=>508, "SWFirm"=>59, "VetGrpPra"=>7, "Whole"=>273, "NursHom"=>2105, "NonHealthCare"=>21, "GrpPra"=>1243, "Hosp"=>1503, "SerFirm"=>268, "DruSto"=>975, "HeaIns"=>263, "Lab"=>586, "DentGrpPra"=>40, "PubHea"=>73, "AccIns"=>161, "IntOrg"=>14, "SocSec"=>30, "HeaProd"=>62, "Assoc"=>41, "PrivPra"=>58, "HeaEmpl"=>2}
Medreg also lists over 107'000 persons (including nurses) classified as