package LIMS::Controller::HMRN; use Moose; BEGIN { extends 'LIMS::Base'; } with ( 'LIMS::Controller::Roles::FormData', ); __PACKAGE__->meta->make_immutable(inline_constructor => 0); use Data::Dumper; __PACKAGE__->authz->authz_runmodes( ':all' => 'hmrn_admin' ); # ------------------------------------------------------------------------------ sub default : StartRunmode { my $self = shift; $self->_debug_path($self->get_current_runmode); return $self->tt_process(); } # ------------------------------------------------------------------------------ sub new_diagnoses : Runmode { my $self = shift; $self->_debug_path($self->get_current_runmode); # don't need to validate, just get form params: my $profile = $self->validate('hmrn_new_diagnoses'); my $params = $self->get_data_from_dfv($profile); my $cases = $self->model('HMRN')->get_new_diagnoses($params); { # sort cases by location then name: my @data = sort do_sort @$cases; # warn Dumper \@data; $self->tt_params( cases => \@data ); } { # format date for template display: my $from = DateTime->today->subtract( days => $params->{duration} || 7 ); $self->tt_params( date_from => $from ); } return $self->tt_process; } # ------------------------------------------------------------------------------ sub params_config : Runmode { my $self = shift; my $categories = $self->model('HMRN')->get_categories; $self->tt_params( categories => $categories ); my $category = $self->query->param('category'); # if param_id submitted, update: if ( my @ids = $self->query->param('param_id') ) { # warn Dumper \@ids; my %args = ( category => $category, param_ids => \@ids, ); my $rtn = $self->model('HMRN')->update_category_parameter(\%args); if ($rtn) { return $self->error($rtn) } else { $self->flash(info => $self->messages('action')->{edit_success}) } } # get active params for category: if ($category) { my $params = $self->model('HMRN')->get_active_params_for_category($category); $self->tt_params( params => $params ); } return $self->tt_process; } # ------------------------------------------------------------------------------ sub do_sort { my $patient_a = $a->patient_case->patient; my $patient_b = $b->patient_case->patient; my $location_a = $a->patient_case->referral_source->display_name; my $location_b = $b->patient_case->referral_source->display_name; return $location_a cmp $location_b || $patient_a->last_name cmp $patient_b->last_name || $patient_a->first_name cmp $patient_b->first_name } 1;