#!/usr/bin/env perl =begin ------------------------------------------------------------------------- emails list of FLAIR trial cases =cut --------------------------------------------------------------------------- #------------------------------------------------------------------------------ my @recipients = qw( detute bagguley andy.rawstron.secure raj ); #------------------------------------------------------------------------------ BEGIN { use lib '/home/raj/perl5/lib/perl5'; # *must* come before FindBin($Bin) use FindBin qw($Bin); # warn $Bin; exit; use lib ("$Bin/../../../lib", '/home/raj/perl-lib'); # override default db test: $ENV{ROSEDB_DEVINIT} = "$Bin/../../../config/rosedb_devinit_prod.pl"; } use Getopt::Std; getopts('m:t'); # months, testing our($opt_m,$opt_t); # warn $opt_m; exit; my $months = $opt_m || 1; # months # emails only 'service_email' addr in config my $JUST_TESTING = $opt_t || 0; use strict; use warnings; use Data::Printer; use SQL::Abstract::More; use LIMS::Local::ScriptHelpers; my $cfg_file = "$Bin/../lib/settings.cfg"; my $settings = Config::Auto::parse($cfg_file); # p $settings; # get tools from LIMS::Local::ScriptHelpers: my $tools = LIMS::Local::ScriptHelpers->new(); $tools->test_only($JUST_TESTING); my $config = $tools->config(); my $dbix = $tools->dbix; my $sqla = SQL::Abstract::More->new; my $last_month = $tools->date_subtract( months => $months ); my $subject = sprintf 'FLAIR trial cases registered %s %s', $last_month->month_name, $last_month->year; # warn $subject; exit; my $requests = get_requests(); my @rows; for my $req (@$requests) { # p $req; # next; push @rows, sprintf '%s/%s :: %s :: %s :: %s :: %s', $req->{request_number}, $req->{year} - 2000, $req->{registered}, $req->{source}, $req->{specimen}, $req->{presentation}; } if (@rows) { my %mail = ( config => $config, subject => $subject, message => join "\n", @rows, ); # p %mail; $tools->send_mail(\%mail, \@recipients); } sub get_requests { my @cols = qw( r.request_number r.year date(r.created_at)|registered s2.description|presentation rs1.display_name|source group_concat(s1.sample_code)|specimen ); my @rels = ( 'requests|r' => 'r.patient_case_id=pc.id' , 'patient_case|pc' => 'pc.referral_source_id=rs1.id' , 'referral_sources|rs1' => 'ris.request_id=r.id' , 'request_initial_screen|ris' => 'ris.screen_id=s2.id' , 'screens|s2' => 'rs2.request_id=r.id' , 'request_specimen|rs2' => 'rs2.specimen_id=s1.id' , 'specimens|s1' ); my %where = ( 'YEAR(r.created_at)' => $last_month->year, 'MONTH(r.created_at)' => $last_month->month, 's2.description' => { rlike => 'flair' }, ); my @args = ( -columns => \@cols, -from => [ -join => @rels ], -where => \%where, -group_by => 'r.id', -order_by => ['rs1.display_name','r.id'], ); my ($sql, @bind) = $sqla->select(@args); # p $sql; # p \@bind; # $dbix->dump_query($sql, @bind); exit; my $ref = $dbix->query($sql, @bind)->hashes; # AoH return $ref; }