#!/usr/bin/perl -w
BEGIN {
use FindBin qw($RealBin); # warn $FindBin::RealBin;
use lib (
"$RealBin/../lib",
"$RealBin/../setup/hilis3_convert",
'/home/raj/perl5/lib/perl5',
);
use vars qw($SQL_FOR_TABLE $FOREIGN_KEYS);
require "$RealBin/../setup/lims.sql";
}
use strict;
use warnings;
use DateTime;
use Data::Dumper;
use Config::Tiny;
use DB;
use Main;
use User;
use YHHN;
use Consent;
use History;
use LabTest;
use Referrer;
use Outreach;
use PreScreen;
use RequestLog;
# use TestResult; # combined with LabTest now
use RequestAudit;
use PatientTrial;
use ReferralSource;
my $src = "$RealBin/../setup/hilis3_convert/.db";
my $cfg = Config::Tiny->read($src); # warn Dumper $cfg; exit;
my $DB = DB->new(config => $cfg);
# hashref of DBI & DBIx::Simple db handles for source(hilis3) & destination (hilis4) dbs:
my $db = $DB->connect;
open my $log, '>', "$RealBin/../setup/hilis3_convert/convert.log" or die $!;
my %args = (
db => $db,
sql => {
table => $SQL_FOR_TABLE,
},
path_to_app => "$RealBin/../", # /home/raj/www/apps/HMDS/trunk
log_file => $log,
);
my $start = DateTime->now(time_zone => 'local'); print $start->datetime, "\n";
do_yhhn(); exit;
# remove_fks(); # exit;
# methods to run:
#------------------------------------------------------------------------------#
#do_referral_sources();
#do_users();
#do_referrers();
#do_main_conversion();
do_lab_tests();
do_patient_trial();
do_request_audit();
do_consent();
do_request_logs();
do_prescreen();
do_history();
#do_yhhn(); # MUST BE DONE BEFORE OUTREACH - patient_demographics table
#do_outreach(); # requires hilis3 db *not older than* community_monitoring db
##do_test();
#------------------------------------------------------------------------------#
restore_fks();
$DB->disconnect($db);
my $finish = DateTime->now(time_zone => 'local');
my $duration = $finish->subtract_datetime($start);
printf "Process ran for %s hrs %s mins %s secs\n\n",
$duration->hours, $duration->minutes, $duration->seconds;
sub do_referral_sources {
my $o = ReferralSource->new(%args);
$o->convert;
}
sub do_referrers {
my $o = Referrer->new(%args);
$o->convert;
}
sub do_main_conversion {
$args{cfg} = $cfg; # for Patient to anonymise names
my $o = Main->new(%args);
$o->convert;
}
sub do_users {
my $o = User->new(%args);
$o->convert;
}
sub do_history {
my $o = History->new(%args);
$o->convert;
}
sub do_patient_trial {
my $o = PatientTrial->new(%args);
$o->convert;
}
sub do_consent {
my $o = Consent->new(%args);
$o->convert;
}
sub do_request_audit {
my $o = RequestAudit->new(%args);
$o->convert;
}
sub do_lab_tests {
my $o = LabTest->new(%args);
$o->convert;
}
sub do_test_results {
my $o = TestResult->new(%args);
$o->convert;
}
sub do_request_logs {
my $o = RequestLog->new(%args);
$o->convert;
}
sub do_prescreen {
my $o = PreScreen->new(%args);
$o->convert;
}
sub do_outreach {
my $o = Outreach->new(%args);
$o->convert;
}
sub do_yhhn {
my $o = YHHN->new(%args);
$o->convert;
}
sub do_test {
use Test;
Test->new(%args)->block_ref;
}
sub remove_fks {
my $dbh = $db->{dbh4};
print "Removing FK's .... ";
foreach my $fk ( sort keys %$FOREIGN_KEYS ) {
my ($tbl) = $fk =~ /fk_(.*)/; # print Dumper $tbl;
my (@fks) = $FOREIGN_KEYS->{$fk} =~ /(\w+_ibfk_\d)/g; # print Dumper \@fks;
map { # print qq!ALTER TABLE `$tbl` DROP FOREIGN KEY `$_`!;
$db->{dbh4}->do( qq!ALTER TABLE `$tbl` DROP FOREIGN KEY `$_`! ); #print " .. OK\n";
} @fks;
}
print "done\n";
}
sub restore_fks {
my $dbh = $db->{dbh4};
print "Restoring FK's .... ";
foreach my $fk ( sort keys %$FOREIGN_KEYS ) { #print $FOREIGN_KEYS->{$fk};
$dbh->do( $FOREIGN_KEYS->{$fk} ); #print " .. OK\n";
}
print "done\n";
}