QueryLog BEGIN block looks for ENV var ROSEDB_DEVINIT = devinit_prod to load Dispatch::File::Rolling - previous method looked for devinit_devel & loaded Dispatch::File, otherwise Dispatch::File::Rolling. This failed in test suite if rolling sql.log already created for current date, with 644 permissions for Apache user. Now test suite and dev server both use same log files, and rolling log files only used by Apache user
moved request audit in screening function to optional & disabled it; moved set_querylog_args & set_errorhandler_args near top of cgiapp_prerun() so they take effect for login & session update handling
print report function calculates composite immunohistochemistry p21/p53 result; replaced M::Request::get_previous_diagnosis_count() with get_previous_diagnoses() to supply data instead of just count, replacing redundant previous_diagnosis_data from C::Report::load(); printed reports now display 'amended report' details and highlights changed diagnosis; QueryLog creates separate logfiles for dev server user, to avoid lack of write permissions if files opened by Apache user & also to avoid polluting production logs with dev data
patched L:Dispatch to avoid error on undefined dispatch_path; moved L::Local::QueryLog dispatcher construction from _warn_handler() to BEGIN block to avoid re-creation per request; changed sql.log to Log::Dispatch::File::Rolling object; amended log_rotate.pl to process the new sql.log filenames; added new method ensure_warn_handler_capture() to L::Local::QueryLog for use with non-external fastcgi, where FCGI re-defines the warn handler set in L::L::Q so that sql statements go to Apache error log
replaced several calls to L::Local::find_home() with call to config instance; removed call to L::Local::Debug from lims_config.pl, as debug() uses config instance, which uses lims_config.pl; model classes get config from config instance instead of constructor passing it in LIMS::model(); general tidy-up