package Consent;
use Moose;
with qw(
Role::RebuildTables
);
use namespace::clean -except => 'meta';
has db => (is => 'ro', isa => 'HashRef', required => 1);
has sql => (is => 'ro', isa => 'HashRef', required => 1);
has consent_map => ( is => 'ro', isa => 'HashRef', lazy_build => 1 );
__PACKAGE__->meta->make_immutable;
use Data::Dumper;
my @tables = qw(
request_consent
);
$|++;
sub convert {
my $self = shift; # warn Dumper $self;
my $dbix3 = $self->db->{dbix3};
my $dbix4 = $self->db->{dbix4};
$self->rebuild_tables(\@tables);
my $consents = $self->consent_map;
my $sql = q!select HMDS, year(Date) as 'year', Store, Research, Treatment,
Monitor from Main,Consent where DBID = Con_ID!;
my $src = $dbix3->query( $sql );
while ( my $vals = $src->hash ) {
my $request_id = $dbix4->query( q!select id from requests where request_number
= ? and year = ?!, $vals->{hmds}, $vals->{year})->list;
foreach my $c( keys %$consents ) {
next unless $vals->{$c};
my %data = (
request_id => $request_id,
consent_id => $consents->{$c},
status => $vals->{$c},
);
$dbix4->insert('request_consent', \%data);
}
}
$self->convert_to_InnoDB($_) for @tables;
}
sub _build_consent_map {
my $self = shift;
my $dbh4 = $self->db->{dbix4};
my $consents = $dbh4->query( 'select consent_name, id from consent_options')->map;
return $consents;
}
1;