#!/usr/bin/perl
=begin -------------------------------------------------------------------------
alerts trial contact of newly registered trial cases
=cut ---------------------------------------------------------------------------
use Getopt::Std;
getopts('d:'); # days
our($opt_d); # warn $opt_d; exit;
use strict;
use warnings;
my $JUST_TESTING = 0; # email to ra.jones only
############ recipients from contacts.lib ######################################
my %trials = (
'SCTU MaPLe' => ['uhs.maple.secure'], # expects arrayref of recipients
'SCTU REMoDl-B' => [
qw(lth.remodlb.secure sharon.barrans.secure southampton.ctu.secure) ],
);
my $duration = $opt_d || 1; # days ago
################################################################################
use lib '/home/raj/perl5/lib/perl5';
use Data::Printer;
use FindBin qw($Bin); # warn $Bin;
use lib "$Bin/../../../lib";
use LIMS::Local::ScriptHelpers;
my $tools = LIMS::Local::ScriptHelpers->new();
$tools->test_only($JUST_TESTING);
# get tools from LIMS::Local::ScriptHelpers:
my $sql_lib = $tools->sql_lib();
my $config = $tools->config();
my $dbix = $tools->dbix();
# get date yesterday - handles BST:
my $yesterday = $tools->date_subtract(days => $duration)->dmy('/'); # warn $yesterday; exit;
# get sql statment:
my $requests = $sql_lib->retr('new_trial_cases_alert'); # p $requests;
# email message body row format:
my $row_format = "%-8s %-12s %-12s %-12s %-11s %-10s %-7s %s\n";
while ( my($trial_name, $recipients) = each %trials ) { # p $trial_name;
my $cases = $dbix->query($requests, $duration, $trial_name)->arrays; # AoA
if (@$cases) { # p $cases;
no warnings 'uninitialized'; # ie missing fields
# email subject line:
my $subject = "$trial_name cases registered at HMDS on $yesterday";
my $message_body = sprintf $row_format,
qw( LabNo LastName FirstName DoB UnitNumber NHSNumber Sample Source );
$message_body .= sprintf $row_format, @$_ for @$cases; # p $message_body;
$recipients = [ 'raj.secure' ] if $JUST_TESTING;
my %mail = (
config => $config,
message => $message_body,
subject => $subject,
); # p %mail; exit;
$tools->send_mail(\%mail, $recipients);
}
}