package LIMS::Model::Test;
use strict;
use base 'LIMS::Model::Base';
use Data::Dumper;
#-------------------------------------------------------------------------------
sub get_all_diagnoses {
my $self = shift;
my %args = (
sort_by => 'name',
require_objects => 'diagnostic_category',
limit => 5,
);
my $data = LIMS::DB::Diagnosis::Manager->get_diagnosiss(%args); # DEBUG $data;
return $data;
}
# experimental method using DBIx::Simple - too slow with CONCAT in sql
sub get_request_and_patient_data_from_labno {
my ($self, $labnos) = @_; # warn Dumper $labnos;
my $dbix = $self->lims_dbix;
my $sql = q!
select r.id, p.last_name from requests r join patient_case pc on
r.patient_case_id = pc.id join patients p on pc.patient_id = p.id
where concat('H', r.request_number, '/', r.year - 2000) in (??)!;
my $data = $dbix->query( $sql, @$labnos)->hashes; # warn Dumper $data;
return $data;
}
sub db_read_timer {
my $self = shift;
my $cycles = shift || ''; # optional
my $dbix = $self->lims_dbix;
my $query = $dbix->query('select * from referrers');
my $i = 0;
ROW: while ( my $row = $query->hash ) {
$i++; last ROW if $cycles && $i == $cycles;
}
return $i;
}
sub db_write_timer {
my ($self, $cycles) = @_;
my $dbix = $self->lims_dbix;
$dbix->dbh->do(q!create table if not exists lims_test.timer( count int )! );
my $i = 0;
for ( 1 .. $cycles ) {
$dbix->insert( 'lims_test.timer', { count => $i++} );
}
$dbix->dbh->do('drop table if exists lims_test.timer');
return $i;
}
sub db_read_write_timer {
my ($self, $cycles) = @_;
my $dbix = $self->lims_dbix;
$dbix->dbh->do(q!create table if not exists lims_test.timer like referrers! );
my $sql = 'select * from referrers';
$sql .= qq! limit $cycles! if $cycles;
my $query = $dbix->query($sql);
my $i = 0;
for my $ref ( $query->hashes ) { # warn Dumper $ref;
my %data = map {
$_ => $ref->{$_};
} grep $_ ne 'id', keys %$ref;
$dbix->insert( 'lims_test.timer', \%data );
$i++;
}
$dbix->dbh->do('drop table if exists lims_test.timer');
return $i;
}
1;