package RequestForm::DB;
use Moo;
use FindBin qw($Bin);
use Data::Dumper::Concise;
use lib '/home/raj/perl-lib';
use Local::DB;
has dbix => ( is => 'lazy' ); # returns DBIx::Simple object
sub _build_dbix { Local::DB->dbix('hilis4') }
sub save_params {
my $self = shift;
my $vars = shift; # warn Dumper $vars;
# get field names from request_form table:
my $cols = $self->get_cols('request_form'); # warn Dumper $cols;
my %h = map +($_ => $vars->{$_}), @$cols; # warn Dumper \%h;
my $db = $self->dbix();
$db->insert('request_form', \%h);
}
sub search_patient {
my ($self, $nhs_number) = @_;
my $db = $self->dbix();
my $data = $db->select('patients', '*', { nhs_number => $nhs_number })->hash;
return $data;
}
sub get_referral_sources {
my $self = shift;
my $str = shift; # part of referral_location (string)
my $db = $self->dbix();
# get id of referral_types for hospital:
$db->select('referral_types', 'id', { description => 'hospital' })
->into(my $ref_type_id);
my @cols = qw(id display_name organisation_code);
my %args = (
referral_type_id => $ref_type_id,
display_name => { rlike => $str },
is_active => 'yes',
);
my $vars = $db->select('referral_sources', \@cols, \%args )->hashes; # warn Dumper $vars;
return $vars;
}
sub get_cols {
my ($self, $table) = @_;
my $meta = $self->get_meta($table); # warn Dumper $meta;
return [ keys %$meta ];
}
sub get_meta {
my ($self, $table) = @_;
my $dbh = $self->dbix;
my $t = $dbh->query("show columns from $table")->hashes; # warn Dumper $t;
my %meta = map { $_->{field} => $_ } @$t; # warn Dumper \%meta;
return \%meta;
}
1;