#!/usr/bin/perl -w
use strict;
use warnings;
use lib '.';
use DBI;
use DBIx::Simple;
use Anonymise::HILIS3;
use FindBin qw($RealBin); # warn $RealBin; exit;
my $dbname = $ARGV[0] || die 'require new db name';
my @login = qw( raj adm1n );
my $dbh = DBI->connect(
"DBI:mysql:database=$dbname;host=localhost", @login, { RaiseError => 1 }
);
my $dbix = DBIx::Simple->new($dbh);
$dbix->lc_columns = 0;
# Anonymise::HILIS3::anonymise_patient() needs hashref of PID rows:
my $patient = $dbix->query("select * from $dbname.PID");
# get all existing nhs_numbers so we don't attempt to duplicate one still unprocessed:
my $sql = "select NHSNo from $dbname.PID where NHSNo is not null";
my $all_nhs_numbers = $dbix->query( $sql )->flat;
my $anonymiser = Anonymise::HILIS3->new(
path_to_app => "$RealBin/../..",
existing_nhs_numbers => $all_nhs_numbers,
);
while ( my $vals = $patient->hash ) {
$anonymiser->anonymise_patient($vals);
my $p_id = $vals->{P_ID}; # warn $p_id;
delete $vals->{P_ID};
$dbix->update("$dbname.PID", $vals, { P_ID => $p_id } );
}