package LIMS::Controller::Outreach; use Moose; BEGIN { extends 'LIMS::Base' } with ( 'LIMS::Controller::Roles::Misc', # redirect_after_edit_success() 'LIMS::Controller::Roles::RecordHandler', ); use namespace::clean -except => 'meta'; __PACKAGE__->meta->make_immutable(inline_constructor => 0); # use LIMS::Local::Drollness; use Data::Dumper; use Lingua::EN::Words2Nums; # ------------------------------------------------------------------------------ # default() should never be called direct - redirect to start page: sub default : StartRunmode { my $self = shift; $self->_debug_path($self->get_current_runmode); return $self->redirect( $self->query->url ); } # ------------------------------------------------------------------------------ sub load : Runmode { my $self = shift; $self->_debug_path($self->get_current_runmode); return $self->forbidden() unless $self->user_can('report'); #my @follow_up_opts = qw(zero_month one_month three_month six_month other); #for (@follow_up_opts) { # if ( /(\w+)_month/ ) { # my $num = words2nums($1); warn Dumper $num; # } #} return 1; # set flag & redirect to Report controller: my $url = $self->query->url . '/report/=/' . $self->param('id'); return $self->redirect($url . '?is_outreach=1'); } # ------------------------------------------------------------------------------ sub haematology : Runmode { my $self = shift; $self->_debug_path($self->get_current_runmode); my $errs = shift; $self->stash( errs => $errs ); # for debugging in tmpl return $self->forbidden() unless $self->user_can('edit_outreach_data'); my $request_id = $self->param('id') || return $self->error('no id passed to '.$self->get_current_runmode); } # ------------------------------------------------------------------------------ sub patient_notes : Runmode { my $self = shift; $self->_debug_path($self->get_current_runmode); return $self->forbidden() unless $self->user_can('edit_outreach_data'); my $request_id = $self->param('id') || return $self->error('no request_id passed to '.$self->get_current_runmode); my $patient_id = $self->param('Id') || return $self->error('no patient_id passed to '.$self->get_current_runmode); # only one param passed: my $str = $self->query->param('patient_notes'); my %args = ( patient_id => $patient_id, details => $str, ); my $rtn = $self->model('Outreach')->update_patient_notes(\%args); return $rtn ? $self->error($rtn) : $self->redirect_after_edit_success('/outreach/=/' . $request_id); } # ------------------------------------------------------------------------------ sub edit_followup : Runmode { my $self = shift; $self->_debug_path($self->get_current_runmode); my $errs = shift; return $self->forbidden() unless $self->user_can('edit_outreach_data'); my $request_id = $self->param('id') || return $self->error('no request_id passed to '.$self->get_current_runmode); { # follow-up data: my $data = $self->model('Outreach')->get_followup_data($request_id); $self->tt_params( followup_data => $data ); } { # request_data: my $data = $self->model('Request')->get_patient_and_request_data($request_id); $self->tt_params( request_data => $data ); } { # follow-up options: my $options = $self->model('Outreach')->get_followup_options; $self->tt_params( followup_options => $options ); } $self->js_validation_profile('outreach_followup'); return $self->tt_process(); } # ------------------------------------------------------------------------------ sub do_edit_followup : Runmode { my $self = shift; $self->_debug_path($self->get_current_runmode); return $self->forbidden() unless $self->user_can('edit_outreach_data'); my $request_id = $self->param('id') || return $self->error('no request_id passed to '.$self->get_current_runmode); my $dfv = $self->check_rm('edit_followup', $self->validate('outreach_followup') ) || return $self->dfv_error_page; my $data = $dfv->valid; # warn Dumper $data; $data->{_request_id} = $request_id; my $rtn = $self->model('Outreach')->update_followup($data); return $rtn ? $self->error($rtn) : $self->redirect_after_edit_success('/outreach/=/' . $request_id); } # ------------------------------------------------------------------------------ =begin # for now, just redirect: sub _load : StartRunmode { my $self = shift; return LIMS::Local::Drollness::silly_werder(2,10); my $request_id = $self->param('id') || return $self->error('no id passed to ' . $self->get_current_runmode); my $url = 'http://163.160.171.164/outreach?id=' . $request_id; return $self->redirect( $url ); } =cut 1;