package LIMS::Local::Role::DiagnosisAlert; # parses $vars from diagnosis_status_alerts, returns processed template: use Moose::Role; use Data::Dumper; use DateTime::Format::MySQL; requires qw( get_sql_lib get_settings get_dbix ); has $_ => ( is => 'ro', isa => 'Str', lazy_build => 1) for qw(reporter specimens); sub get_diagnosis_alert_data { my $self = shift; my $vars = shift; my $reporter_sql = $self->reporter; my $specimens_sql = $self->specimens; my $created_at = DateTime::Format::MySQL->parse_datetime($vars->{created_at}); my %data = ( id => $vars->{request_id}, created_at => $created_at, request_number => $vars->{request_number}, year => $vars->{year}, request_report => { status => $vars->{status}, diagnosis => { name => $vars->{diagnosis} }, }, referrer_department => { referrer => { name => $vars->{referrer}, }, }, patient_case => { unit_number => $vars->{unit_number}, referral_source => { display_name => $vars->{location}, }, patient => { map { $_ => $vars->{$_} } qw(last_name first_name middle_name nhs_number) }, }, ); # warn Dumper \%data; next; $data{patient_case}{patient}{dob} = $vars->{dob} ? DateTime::Format::MySQL->parse_datetime($vars->{dob} . ' 00:00:00') : ''; # get specimens -> specimen_map: my @specimens = $self->dbix->query($specimens_sql, $vars->{request_id})->flat; my %specimen_map = ( $vars->{request_id} => { sample_code => \@specimens }, ); # get history: my %history = (); my @reporter = $self->dbix->query($reporter_sql, $vars->{request_id})->list; @{ $history{reported}{user} }{ qw(last_name first_name) } = @reporter; my %params = ( specimen_map => \%specimen_map, history => \%history, config => $self->get_settings, data => \%data, ); # warn Dumper \%params; return \%params; } sub _build_reporter { shift->sql_lib->retr( 'get_reporter_from_request_id' ) } sub _build_specimens { shift->sql_lib->retr( 'request_specimens' ) } 1;