Where did we loose the GTIN? I must enable accessing the RefdataArticle from the SwissindexMigel. Working on downloading the XML files only once.
The method check_item in ext/swissindex/src/swissindex.rb must fetch the the RefData information (e.g. GTIN/EAN). Changing its name to get_refdata_info to reflect its useage.
Got following stacktrace in mail of who import of today
Plugin: ODDB::WhoPlugin Error: NotImplementedError Message: method `method_missing' called on terminated object (0x000000572619a0 flags=0x0 klass=0x0) Backtrace: (eval):2:in `block in proc_instance_origin' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/index.rb:202:in `call' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/index.rb:202:in `update_target' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/index.rb:161:in `update' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/stub.rb:112:in `method_missing' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/cache.rb:590:in `block in update_indices' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/cache.rb:589:in `each' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/cache.rb:589:in `update_indices' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/cache.rb:515:in `store' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/persistable.rb:274:in `odba_isolated_store' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/persistable.rb:395:in `block in odba_store_unsaved' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/persistable.rb:392:in `each' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/persistable.rb:392:in `odba_store_unsaved' /usr/local/lib/ruby/gems/1.9.1/gems/odba-1.1.0/lib/odba/persistable.rb:380:in `odba_store' /var/www/oddb.org/src/util/persistence.rb:280:in `issue_update' /var/www/oddb.org/src/util/oddbapp.rb:138:in `block in update' /var/www/oddb.org/src/util/failsafe.rb:10:in `call' /var/www/oddb.org/src/util/failsafe.rb:10:in `failsafe' /var/www/oddb.org/src/util/oddbapp.rb:136:in `update' /var/www/oddb.org/src/util/oddbapp.rb:1644:in `update' /var/www/oddb.org/src/plugin/who.rb:93:in `import_atc' /var/www/oddb.org/src/plugin/who.rb:128:in `block in import_code' /usr/local/lib/ruby/gems/1.9.1/gems/nokogiri-1.6.1/lib/nokogiri/xml/node_set.rb:237:in `block in each' /usr/local/lib/ruby/gems/1.9.1/gems/nokogiri-1.6.1/lib/nokogiri/xml/node_set.rb:236:in `upto' /usr/local/lib/ruby/gems/1.9.1/gems/nokogiri-1.6.1/lib/nokogiri/xml/node_set.rb:236:in `each' /var/www/oddb.org/src/plugin/who.rb:125:in `import_code' /var/www/oddb.org/src/plugin/who.rb:78:in `import' /var/www/oddb.org/src/util/updater.rb:573:in `block in update_notify_simple' /var/www/oddb.org/src/util/updater.rb:549:in `call' /var/www/oddb.org/src/util/updater.rb:549:in `wrap_update' /var/www/oddb.org/src/util/updater.rb:567:in `update_notify_simple' /var/www/oddb.org/src/util/updater.rb:481:in `update_whocc' /var/www/oddb.org/src/util/updater.rb:215:in `block in run' /var/www/oddb.org/src/util/schedule.rb:10:in `call' /var/www/oddb.org/src/util/schedule.rb:10:in `run_on_monthday' /var/www/oddb.org/src/util/updater.rb:214: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 `<main>'
Running locally jobs/import_whocc to see whether I can reproduce the error locally.
Tramal (IKSNR 43788) has different patinfos for "Tramal® Tropfen, Lösung zum Einnehmen" and "Tramal® Tropfen, Lösung zum Einnehmen mit Dosierpumpe)" in its packages 078 (50 ml) and 086 (30 ml).
Until now we always matched PI/FI only via it IKSNR. But here the AipsDownload.xml contains both PI. Must check how we can distinguish them. For this I must find (also for other reasons) a simple way to split the Aips.xml into files for each fi/pi/lang. Trying first ruby.
Reading the whole file with ruby takes about 9 seconds. Thats acceptable. Now must split and generate valid XML files. Splitting is easy, but when I use REXML to parse each chunk it takes up to 2 seconds to parse each chunk, which is not good. Therefore getting authnr, lang and type via regular expression matching, which should be a lot cheaper. It indeed it is. Now the whole reading and splitting takes only less than 10 seconds. And it found 342 entries, which were the tuple [iksnr,type,lang] was already taken. Now generating in case of problems files which contain the name (title) of the FI/PI. This works and produces Attach:aips_problems.txt. Improved script Attach:split_aips.rb a little to list in the problems the first title, too.
In the case of the Tramal all entries in the Packungen.xlsx have as name "Tramal, Tropfen". In the patinfo the title is either Tramal® Tropfen, Lösung zum Einnehmen
or Tramal® Tropfen, Lösung zum Einnehmen mit Dosierpump
. I think we shoud generate warnings if no matching name can be found in the Packungen.xlsx. But what do we do in the mean time?
Done with commits
Evidentia would like to have the following corrections:
Lodoz did not come at the end, becsuse Bilol (IKSNR 57382) is active? (defined as expired less than two years ago) as it expired in November 2015.
Banging my head, because the debug output of oddbd shows the correct order like this
Resultsort 73: tm "Topiramat" from /de/evidentia/search/zone/drugs/search_query/Topiramat/search_type/st_combined? <..> adjusted_name_and_prio evidentia? false Topiramat res false pack 58796/01 Topiramat Desitin 25 mg type expired? false out_of_trade false false prio 21 adjusted_name_and_prio evidentia? false Topiramat res false pack 58796/02 Topiramat Desitin 50 mg type expired? false out_of_trade false false prio 21 adjusted_name_and_prio evidentia? false Topiramat res false pack 58796/03 Topiramat Desitin 100 mg type expired? false out_of_trade false false prio 21 adjusted_name_and_prio evidentia? false Topiramat res false pack 58796/04 Topiramat Desitin 200 mg type expired? false out_of_trade false false prio 21 <..> result_sort 0: [-1, 5, ["Tabletten"], ["Filmtabletten"], 5, "topamax", Quanty(25,'mg'), Quanty(60,'')] result_sort 1: [-1, 5, ["Tabletten"], ["Filmtabletten"], 5, "topamax", Quanty(50,'mg'), Quanty(60,'')] result_sort 2: [-1, 5, ["Tabletten"], ["Filmtabletten"], 5, "topamax", Quanty(100,'mg'), Quanty(60,'')] result_sort 3: [-1, 5, ["Tabletten"], ["Filmtabletten"], 5, "topamax", Quanty(200,'mg'), Quanty(60,'')] result_sort 4: [-1, 5, ["Tabletten"], ["Kapseln"], 5, "topamax", Quanty(15,'mg'), Quanty(60,'')] result_sort 5: [-1, 23, ["Tabletten"], ["Kapseln"], 23, "topamax", Quanty(25,'mg'), Quanty(60,'')] result_sort 6: [-1, 5, ["Tabletten"], ["Kapseln"], 5, "topamax", Quanty(50,'mg'), Quanty(60,'')]
whereas in the HTML-Output of http://evidentia.oddb-ci2.dyndns.org/de/evidentia/search/zone/drugs/search_query/Topiramat/search_type/st_combined? I get
Topamax 25 mg Topiramatum Filmtabletten 25 mg 60 Tablette(n) 21.82 41.45 10% Janssen-Cilag AG B / SL / SO Topamax 50 mg Topiramatum Filmtabletten 50 mg 60 Tablette(n) 37.85 59.85 10% Janssen-Cilag AG B / SL / SO Topamax 100 mg Topiramatum Filmtabletten 100 mg 60 Tablette(n) 67.35 93.70 10% Janssen-Cilag AG B / SL / SO Topamax 200 mg Topiramatum Filmtabletten 200 mg 60 Tablette(n) 114.07 147.35 10% Janssen-Cilag AG B / SL / SO Topamax 15 mg Topiramatum Kapseln 15 mg 60 Kapsel(n) 13.30 27.55 10% Janssen-Cilag AG B / SL / SO Topamax 50 mg Topiramatum Kapseln 50 mg 60 Kapsel(n) 37.85 59.85 10% Janssen-Cilag AG B / SL / SO Topiramat Desitin 100 mg Topiramatum Filmtabletten 100 mg 60 Tablette(n) 53.88 78.25 k.A. Desitin Pharma GmbH B Topiramat Desitin 200 mg Topiramatum Filmtabletten 200 mg 60 Tablette(n) 92.72 122.85 k.A. Desitin Pharma GmbH B Topiramat Desitin 25 mg Topiramatum Filmtabletten 25 mg 60 Tablette(n) 16.40 35.25 k.A. Desitin Pharma GmbH B Topiramat Desitin 50 mg Topiramatum Filmtabletten 50 mg 60 Tablette(n) 29.17 49.90 k.A. Desitin Pharma GmbH B <..>
Looking at my debug code found an error. Now it display the sorted package likes
packages.sorted 0: 53537 01 014 Topamax 25 mg, Filmtabletten packages.sorted 1: 53537 02 022 Topamax 50 mg, Filmtabletten packages.sorted 2: 53537 03 030 Topamax 100 mg, Filmtabletten packages.sorted 3: 53537 04 049 Topamax 200 mg, Filmtabletten packages.sorted 4: 54751 01 028 Topamax 15 mg, Kapseln packages.sorted 5: 54751 03 044 Topamax 50 mg, Kapseln packages.sorted 6: 58796 03 003 Topiramat Desitin 100 mg, Filmtabletten packages.sorted 7: 58796 04 004 Topiramat Desitin 200 mg, Filmtabletten packages.sorted 8: 58796 01 001 Topiramat Desitin 25 mg, Filmtabletten packages.sorted 9: 58796 02 002 Topiramat Desitin 50 mg, Filmtabletten
Found the culprit. When the name contained desitin the trailing dose was not removed. Adding test cases. Done. Now it looks nice. Running all spec tests before pushing commit. Pushed commit