package RequestAudit;
use Moose;
with 'Role::RebuildTables';
use namespace::clean -except => 'meta';
use Data::Dumper;
has $_ => (is => 'ro', isa => 'HashRef', required => 1)
foreach qw( db sql );
has log_file => ( is => 'ro', required => 1 );
__PACKAGE__->meta->make_immutable;
my @tables = qw(
request_audit
);
$|++;
sub convert {
my $self = shift;
my $dbix3 = $self->db->{dbix3};
my $dbix4 = $self->db->{dbix4};
my $log_file = $self->log_file;
$self->rebuild_tables(\@tables);
my $hilis3 = $dbix3->query(q!select main_id, indication, HMDS, year(Date) as 'year'
from BoneMarrowAudit left join Main on main_id = DBID!);
my $audit_options_map
= $dbix4->query('select description, id from audit_request_options')->map;
# incorrect/missing entries:
$audit_options_map->{'Anaemia - unspecified'} = $audit_options_map->{Anaemia};
$audit_options_map->{'Transplant follow-up'} = $audit_options_map->{'Transplant follow up'};
$audit_options_map->{'Non-Hodgkin\'s Lymphoma staging'}
= $audit_options_map->{"Non-Hodgkin Lymphoma staging"};
$audit_options_map->{"Non-Hodgkin\\'s Lymphoma staging"}
= $audit_options_map->{"Non-Hodgkin Lymphoma staging"};
ROW:
while ( my $vals = $hilis3->hash ) {
my $request_id = $dbix4->query( q!select id from requests where request_number
= ? and year = ?!, $vals->{hmds}, $vals->{year} )->list;
if (! $request_id ) {
# warn "no request_id for $vals->{main_id}";
next ROW;
}
my $audit_option = $vals->{indication};
my $audit_option_id = $audit_options_map->{$audit_option}
|| die "no audit_option_id for '$audit_option'";
my %data = (
request_id => $request_id,
audit_request_option_id => $audit_option_id,
);
$dbix4->insert('request_audit', \%data);
}
$self->convert_to_InnoDB($_) for @tables;
}
1;