package LIMS::Controller::Local::Worklist::FishWorksheet; use base 'LIMS::Base'; use Moose; with ( 'LIMS::Controller::Roles::Misc', 'LIMS::Controller::Roles::User', 'LIMS::Controller::Roles::DataMap', ); __PACKAGE__->meta->make_immutable(inline_constructor => 0); use Data::Dumper; # ------------------------------------------------------------------------------ sub default : StartRunmode { my $self = shift; my @request_ids = $self->query->param('request_id'); { # warn Dumper \@request_ids; # check at least 1 submitted: my $url = $self->query->url() . '/local_worklist?function_name=fish_worksheets'; return $self->redirect($url) unless @request_ids } # get request & report data for request_ids: my %args = ( # to use existing method used by Search function search_constraints => { id => \@request_ids }, ); # warn Dumper \%args; my $requests = $self->model('Request')->find_requests(\%args); $self->tt_params( requests => $requests ); # warn Dumper $requests; { # specimen map: my $specimen_map = $self->specimen_map(\@request_ids); $self->tt_params( specimen_map => $specimen_map ); } { # request_options: my $map = $self->request_options_map(\@request_ids); $self->tt_params( request_options_map => $map ); } { # get flow section result summary: my @args = (\@request_ids, 'Flow cytometry'); # method accepts list mode args my $o = $self->model('LabSection')->get_section_result_summaries(@args); # convert to hashref map for tt: my %map = map { $_->request_id => $_->results_summary } @$o; $self->tt_params( result_summaries => \%map ); # warn Dumper \%map; } { # get lab-test data from FISH section: my %args = ( section_name => 'FISH', request_id => \@request_ids, ); my $o = $self->model('LabTest')->get_request_lab_tests_for_section(\%args); # convert to hashref map for tt: my %map = (); # need hash of arrays of objects - 1 request to many tests: push @{ $map{$_->request_id} }, $_->as_tree for @$o; $self->tt_params( fish_data => \%map ); # warn Dumper $fish_tests; } { # get section notes for fish cytometry section: my $lab_section = $self->model('LabSection')->get_lab_section_by_name('Fish'); # stash section object for request_section_notes_map(): $self->stash( lab_section => $lab_section ); my $map = $self->request_section_notes_map( \@request_ids ); $self->tt_params( request_section_notes_map => $map ); } { # get probesets for fish panels: my $probes = $self->_get_fish_panel_probes(); # warn Dumper $probes; $self->tt_params( panel_probes => $probes ); } return $self->render_view('worklist/local/fish/worksheets_wrapper.tt'); } # ------------------------------------------------------------------------------ sub _get_fish_panel_probes { my $self = shift; $self->_debug_path(); my $o = $self->model('LabTest')->get_panel_lab_tests('fish'); # need HoA: my %probes = (); for (@$o) { my $panel_name = $_->panel_test->test_name; my $probe_name = $_->lab_test->field_label; push @{ $probes{$panel_name} }, $probe_name; } # warn Dumper \%probes; return \%probes; } 1;