# converts additional_tests.yml 'diagnosis' section to hili4.diagnosis_lab_tests
use Path::Tiny;
use Data::Printer;
use FindBin qw($RealBin); # warn $RealBin;
use lib (
'/home/raj/perl-lib',
"$RealBin/../lib",
);
use Local::DB;
use LIMS::Local::Utils;
my $dbix = Local::DB->dbix({ dbname => 'hilis4' });
my $diagnoses = $dbix->select('diagnoses', [ qw(name id) ])->map; # p $diagnoses;
my $result_summaries = $dbix->select('result_summary_options', [ qw(description id) ])->map; # p $result_summaries;
my %args = (
app_root => path($RealBin, '..')->realpath,
filename => '_additional_tests',
yaml_dir => '.leeds',
); # p %args;
my $yaml = LIMS::Local::Utils::get_yaml(\%args); # p $yaml; exit;
{ # diagnoses:
my $data = $yaml->{diagnosis}; # p $data;
while ( my($diagnosis, $t) = each %$data ) { # p $diagnosis;
next unless $t;
my $diagnosis_id = $diagnoses->{$diagnosis} or die "no id for $diagnosis";
my @test_ids = keys %$t; # p @test_ids;
my %h = ( diagnosis_id => $diagnosis_id );
$dbix->delete('diagnosis_lab_test', \%h);
for my $id(@test_ids) {
$h{lab_test_id} = $id; # p %h;
$dbix->insert('diagnosis_lab_test', \%h);
}
}
}
{ # result_summaries:
my $data = $yaml->{results_summary}; # p $data;
while ( my($summary, $t) = each %$data ) { # p $summary;
my $summary_id = $result_summaries->{$summary} or die "no id for $summary";
my @test_ids = keys %$t; # p @test_ids;
my %h = ( result_summary_id => $summary_id );
$dbix->delete('result_summary_lab_test', \%h);
for my $id(@test_ids) {
$h{lab_test_id} = $id; # p %h;
$dbix->insert('result_summary_lab_test', \%h);
}
}
}