replaced lab-test sections of auto_screen.yml with db table lookups for consistency with manual screen - changed auto_screen.yml file from href to array to preserve order of rules
added url_base to cgiapp_prerun(), refactored multiple calls to ->query to ; added part_number to storage module; restored 10-digit storage vialId + validation; bugfix to update_storage_vial(), failed validation due to duplicate vialId and old update method didn't do changes_only; added online request form link to guest user hello page; moved token generation from Resources menu() to Role::Resources::create_form_tokens() for sharing between menu() & hello()
new setting 'is_test_platform' to exempt test server from portal login requirement; new outreach worklists unreported and unauthorised; added user-configurable duration option on unreported worklist, shared with outreach unreported; adapted Resources token generation function to provide encrypted username for online request forms; bugfix to _xna_extraction() - lc on query param extraction_type gave error if param undef
new lab-test audit script; moved common M::Audit::turnaround_times_lab_tests() functions into M::Audit::_lab_test_data() for share with new lab_test_turnaround_export() function; lab test turnaround times sets correct start time of tests auto-requested at registration (eg histology stains), previously assumed to be at screening; M::Roles::Query::_set_search_constraints() accepts DateTime objects for date_from & date_to params
moved Spreadsheet::WriteExcel::Simple function in Audit M & C classes to Local::Excelhander::generate_spreadsheet(); mail_reports.pl includes filename in stdout to identify potential report failures in cron.log
spell-check changes: add-new-word function now puts terms in temp file for assessment by admin before importing into site-specific personal dictionary; rebuilt en-medical.rws (extra-dict) from edited contents of old personal dict (.aspell.en.pws) - moved all acronyms/abbreviations into new personal dict (.aspell.leeds.pws); LIMS::_create_user_profile() adds users 'centre' param to session user_profile; adapted spellchecker.pl to work with new dictionary format
function to retrieve previous requests combined with get_single_request_data() so available to all views (search, results, report, etc); extended outstanding lab-tests display to unreported & unauthorised worklists