bugfix to L::Model::User do_transaction, testing for db_error instead of transaction success; request_links.tt loads PhoneLog link if user_can(phone_log) instead of modify_results
modified M::Audit::turnaround_times() and more chart functions to accept arrayref of screening terms; modified C::R::SessionStore::session_store() request_options data format (was incorrect format); bugfixes to M::Roles::RequestUpdate::do_trial_number_update(), MRRU::do_request_options_update(), MRRU::do_request_consent_update() and M::Patient::merge_patients()
added _parse_data_val() function to C::Roles::Chart to return ::NoValue for null vals, so setGapColor() works as intended; moved make_chart logic from report/default.tt and record/body.tt to separate site/make_chart.tt; some tweaks to cron scripts
new screen_category table; moved screens 'type' col to category_id; modified all screening terms & screening tests admin functions to accomodate new screen_category table; removed ajax validation from screen description & lab test field_label as these use 2 & 3-col unique keys so can't be validated by AJAX; email reports function uses users secure email address as sender; modifed portal_access function to supply SHA1 hash of current date - so failed login not sent back to portal page without explanation; modified mail_reports.pl to use item names instead of table id accessors