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()
applied same server-side validation to storage vialId as already done by ajax, factored out common regex to LLU; moved M::Ajax::check_storage_vialId() to M::Validation::has_storage_vialId(); applied check that patient entry exists to C::Patient::_check_nhs_number_usage() for PID change, but not implemented as creation of new patient works OK; alphabetically sorted lims_messages.pl dfv section
patched datafile upload check_image_file() function to remove reserved characters from filename; diagnosis substitution in gallium_data.pl; rs-highlight class for report result-summary section