MAJOR CHANGE: combined send_message and send_attachment into a single method dispatch() in L::Local::Mail - consistently returns a Return::Value object so no longer handling returns from simple mail and attachments differerntly - affects app and crons; fix for resources meter chart for swap mem on Deb6 VM; patched M::Outreach::update_followup() to prevent unnecessary db lookups for non-duration followup (eg other), and prevented crash when attempting to update non-existant table entry; moved loading of local-lib above FindBin in hilis4.fcgi to avoid fastcgi error in Deb6 VM
moved outreach pathology request forms and questionnaire decision tree to model; added ::Tiny::errstr to lims_config.pl after settings.txt corruption caused errors
patched M::Outreach::do_letter_dispatch() to use insert_or_update_on_duplicate_key() instead of insert_or_update(); added array size display to outreach_notification_dispatch.tt
outreach notification mods - callback for template to extract GP surname, set_notifications() in M::Outreach::get_overdue_packs() throws error if %maps undef; reworded cron/outreach_clinic_return.tt
completed outreach overdue pack notification function; moved logic to skip if notification already sent from template to model; separated outreach worklists from other worklists; switched off PDS lookup for test scripts; patched validation_profiles/admin.t consistent with change to username validation
MAJOR CHANGE: moved sql_lib() from M::Base to new M::Role::Query; moved all M::R::QueryFormatter methods into M::R::Query; removed sql_lib() from ScriptHelpers - using new M::Roles::Query method; removed lims_dbix() from M::Base - now loaded via M::Role::DBIxSimple on demand; moved get_sql_with_constraint() from M::R::DBIxSimple to M::R::Query; method gets dbh from lims_db not lims_dbix in M::LabSection::update_lab_sections() & M::Specimen::update_specimens(); added elements() to Local::QueryLibrary