package NGIS; # common data file shared by HILIS4/t/ngis_requests.t and # Fileuploader-D2/t/ngis_requests.t use Moo; use Data::Printer; use Types::Standard 'InstanceOf'; has dbix => ( is => 'ro', required => 1, isa => InstanceOf['DBIx::Simple'] ); sub run { # new db entries: my $self = shift; my @ngis_ids = @_; my $ngis_id_1 = $ngis_ids[0]; my $ngis_id_2 = $ngis_ids[1]; my $dbix = $self->dbix; # check using correct db: die 'wrong db' unless $dbix->query('SELECT DATABASE()')->list eq 'lims_test'; # GeNEQ location (check it exist or create new): unless ( $dbix->select( 'referral_sources', 1, { organisation_code => 'GENEQN' } )->list ) { $dbix->insert('parent_organisations', { parent_code => 'GENEQN', description => 'YNEGLH NEWCASTLE', referral_type_id => 3 }); my $parent_id = $self->last_insert_id('parent_organisations'); my %h = ( display_name => 'YNEGLH Newcastle', organisation_code => 'GENEQN', parent_organisation_id => $parent_id, referral_type_id => 3 ); $dbix->insert('referral_sources', \%h); } unless ( $dbix->select( 'referral_sources', 1, { organisation_code => 'GENEQS' } )->list ) { $dbix->insert('parent_organisations', { parent_code => 'GENEQS', description => 'YNEGLH SHEFFIELD', referral_type_id => 3 }); my $parent_id = $self->last_insert_id('parent_organisations'); my %h = ( display_name => 'YNEGLH Sheffield', organisation_code => 'GENEQS', parent_organisation_id => $parent_id, referral_type_id => 3 ); $dbix->insert('referral_sources', \%h); } # referrer & referrer_department for GeNEQ location (check exist or create new): unless ( $dbix->select( 'referrers', 1, { national_code => 'C2345678' })->list ) { $dbix->insert('referrers', { name => 'White A', national_code => 'C2345678', referral_type_id => 1 }); my $ref_id = $self->last_insert_id('referrers'); $dbix->select('parent_organisations', 'id', { parent_code => 'GENEQN' }) ->into(my $parent_id); $dbix->insert('referrer_department', { parent_organisation_id => $parent_id, referrer_id => $ref_id, hospital_department_code => 823 }); # haem OK for this } # referrer & referrer_department for GeNEQ location (check exist or create new): unless ( $dbix->select( 'referrers', 1, { national_code => 'C3456789' })->list ) { $dbix->insert('referrers', { name => 'Silver A', national_code => 'C3456789', referral_type_id => 1 }); my $ref_id = $self->last_insert_id('referrers'); $dbix->select('parent_organisations', 'id', { parent_code => 'GENEQS' }) ->into(my $parent_id); $dbix->insert('referrer_department', { parent_organisation_id => $parent_id, referrer_id => $ref_id, hospital_department_code => 823 }); # haem OK for this } # register 2 new request_form rows (if not already): unless ( $dbix->select('request_form', 1, {id => $ngis_id_2} )->list ) { my $ref_src_id = $dbix->select('referral_sources', 'id', { organisation_code => 'GENEQN' })->list; my %h = ( # patient already registered in patients: id => $ngis_id_2, last_name => 'brown', first_name => 'stan', dob => '1960-04-10', gender => 'M', nhs_number => 2222222222, location_name => 'YNEGLH Newcastle', location_id => $ref_src_id, user_id => 1, referrer => 'White A [Molecular Genetics]', requested_by => 'Black T' ); # p %h; $dbix->insert('request_form', \%h) or die $dbix->error; } unless ( $dbix->select('request_form', 1, {id => $ngis_id_1} )->list ) { my $ref_src_id = $dbix->select('referral_sources', 'id', { organisation_code => 'GENEQS' })->list; my %h = ( # patient doesn't already exist: id => $ngis_id_1, last_name => 'gray', first_name => 'olive', dob => '1966-07-11', gender => 'F', nhs_number => 3333333333, location_name => 'YNEGLH Sheffield', location_id => $ref_src_id, user_id => 1, referrer => 'Silver E [Molecular Genetics]', requested_by => 'Brown S' ); # p %h; $dbix->insert('request_form', \%h) or die $dbix->error; } } sub last_insert_id { $_[0]->dbix->query('select max(id) from '.$_[1])->list } 1;