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
separated admin settings config page into sections; patched permissions.t to work with recent nav links display change; patched hilis3 convert lab_tests function to deal with HUGO name changes to FISH probes
changed result_summary_opts from AoA to HoA in C::Roles::ResultHandler::process_raw_lab_test_data() to make hadnling optgroup in template easier; result/default.tt handles optgroup and numerical order in construction of select menus; re-authentication sets flash message if user email address empty; fixed some html syntax errors in templates
changed C::Roles::Misc::get_blood_tube_type() method of reading yaml file; added outreach practice warning to flash messages after registering new GP practice
HMRN treatment validation checks end_date not before start_date; protected Utils::to_datetime_using_datecalc() DT object creation with eval in case Decode_Date_EU fails eg if using validation FV_and()
moved file upload handing from L::Local::Utils::unzip_file() to C::Roles::DataFile::process_file_upload(); C::DataImport::bcr_abl() can process zip or xls file; completed data parsing by C::DataImport::bcr_abl()
new C::DataImport to handle file upload & data extraction; removed cgi/bcr_abl.cgi, transferred function to C::DataImport::bcr_abl(); added unzip() method to Local::Utils; added parse_xl_file() method to Local::Spreadsheet; updated jquery js file to 1.4.2; temp (non-functional) changes to hmrn/data/treatment.tt; bugfix C::User::_email_password()