#!/usr/bin/perl

# EMPI Testing Script, PACS
# Ron Sweeney, '04

# Loop over a file of control patients with data comma delimited
#    Last,First,Gender,DOB,SSN
#    LastName,FirstName,[U/M/F],yyyy-mm-dd,999999999

# Grab the Iteration type from the switch flag on argument zero
# All iterations are from an opposing facility.
#    1 - Utilizes all elements

# The following iterations OMIT the listed element
#    2 - First
#    3 - Last
#    4 - Gender
#    5 - DOB
#    6 - SSN

# The following iterations CHANGE the listed element
#    7 - First    # Changes to Fauntleroy
#    8 - Last    # Changes to Lord
#    9 - Gender    # Changes to F if M, M if F, M if U
#       10 - DOB    # Changes to 1971-01-01
#    11 - SSN    # Changes to 999999999

# The following iteration is run with an A34 exclusively
#    12 - Utilizes all elements

# Originating Facility
# The Origination Facility is the facility code in PACS you would want the iteration
# to be owned by (In this example, its HK,RR, and SH.  It is pulled from the argument switch
# flag number 1

#    HK - Hospital One
#    RR - Hospital Two
#    SH - Hospital Three

################################################
# LETS PARSE SOME ARGUMENTS FOR FUN AND PROFIT #
################################################

$iteration = "$ARGV[0]";
$facility = $ARGV[1];

################################################
#             MAIN DRIVER                      #
################################################

use Net::HL7::Message;
use Net::HL7::Connection;

@parray = `type sh-empitest.conf`;

foreach $line (@parray) {

chop($line);
@patient = split ( /,/, $line );

$lastname = $patient[0];
$firstname = $patient[1];
$gender = $patient[2];
$dob = $patient[3];
$ssn = $patient[4];

@messages = `dir c:\\control-msg /b /s /d`;

foreach $file (@messages) {

my $conn = new Net::HL7::Connection("localhost", 3000);

$gar = `type $file`;

################################################
#          ITERATION TYPE                      #
################################################

if ( $iteration == 1 ) {

$gar =~s/FACILITY/$facility/g;
$gar =~s/LASTNAME/$lastname/g;
$gar =~s/FIRSTNAME/$firstname/g;
$gar =~s/GENDER/$gender/g;
$gar =~s/DOB/$dob/g;
$gar =~s/SSN/$ssn/g;

}

elsif ( $iteration == 2 ) {

$gar =~s/FACILITY/$facility/g;
$gar =~s/LASTNAME/$lastname/g;
$gar =~s/FIRSTNAME//g;
$gar =~s/GENDER/$gender/g;
$gar =~s/DOB/$dob/g;
$gar =~s/SSN/$ssn/g;

}

elsif ( $iteration == 3 ) {

$gar =~s/FACILITY/$facility/g;
$gar =~s/LASTNAME//g;
$gar =~s/FIRSTNAME/$firstname/g;
$gar =~s/GENDER/$gender/g;
$gar =~s/DOB/$dob/g;
$gar =~s/SSN/$ssn/g;

}

elsif ( $iteration == 4 ) {

$gar =~s/FACILITY/$facility/g;
$gar =~s/LASTNAME/$lastname/g;
$gar =~s/FIRSTNAME/$firstname/g;
$gar =~s/GENDER//g;
$gar =~s/DOB/$dob/g;
$gar =~s/SSN/$ssn/g;

}

elsif ( $iteration == 5 ) {

$gar =~s/FACILITY/$facility/g;
$gar =~s/LASTNAME/$lastname/g;
$gar =~s/FIRSTNAME/$firstname/g;
$gar =~s/GENDER/$gender/g;
$gar =~s/DOB//g;
$gar =~s/SSN/$ssn/g;

}

elsif ( $iteration == 6 ) {

$gar =~s/FACILITY/$facility/g;
$gar =~s/LASTNAME/$lastname/g;
$gar =~s/FIRSTNAME/$firstname/g;
$gar =~s/GENDER/$gender/g;
$gar =~s/DOB/$dob/g;
$gar =~s/SSN//g;

}

elsif ( $iteration == 7 ) {

$gar =~s/FACILITY/$facility/g;
$gar =~s/LASTNAME/$lastname/g;
$gar =~s/FIRSTNAME/FIRSTNAMECHANGE/g;
$gar =~s/GENDER/$gender/g;
$gar =~s/DOB/$dob/g;
$gar =~s/SSN/$ssn/g;

}

elsif ( $iteration == 8 ) {

$gar =~s/FACILITY/$facility/g;
$gar =~s/LASTNAME/LASTNAMECHANGE/g;
$gar =~s/FIRSTNAME/$firstname/g;
$gar =~s/GENDER/$gender/g;
$gar =~s/DOB/$dob/g;
$gar =~s/SSN/$ssn/g;

}

elsif ( $iteration == 9 ) {

print "SEX CHANGE\n";

$gar =~s/FACILITY/$facility/g;
$gar =~s/LASTNAME/$lastname/g;
$gar =~s/FIRSTNAME/$firstname/g;

    #Change the Sex

    if ( $gender == M ) {
    $gender = "F";

    }

    elsif ( $gender == F ) {
    $gender = "M";

    }

    elsif ( $gender == U ) {
    $gender = "M";

    }

$gar =~s/GENDER/$gender/g;
$gender = "";
$gar =~s/DOB/$dob/g;
$gar =~s/SSN/$ssn/g;

}

elsif ( $iteration == 10 ) {

$gar =~s/FACILITY/$facility/g;
$gar =~s/LASTNAME/$lastname/g;
$gar =~s/FIRSTNAME/$firstname/g;
$gar =~s/GENDER/$gender/g;
$gar =~s/DOB/19711231/g;
$gar =~s/SSN/$ssn/g;

}

elsif ( $iteration == 11 ) {

$gar =~s/FACILITY/$facility/g;
$gar =~s/LASTNAME/$lastname/g;
$gar =~s/FIRSTNAME/$firstname/g;
$gar =~s/GENDER/$gender/g;
$gar =~s/DOB/$dob/g;
$gar =~s/SSN/000000001/g;

}

elsif ( $iteration == "" ) {

print "You must specify a valid iteration to play this game\n";

print "usage: empitest.pl [iteration] [facility]\n";

exit;

}

else {

print "Oh come on\n";

}

my $str = "$gar\r";

#################################################################
#                       DEBUG FLAGS                             #
#################################################################

print "-----------------------\n";
print "facility: $facility\n";
print "lastname: $lastname\n";
print "firstname: $firstname\n";
print "gender: $gender\n";
print "dob: $dob\n";
print "ssn: $ssn\n\n\n";

my $msg = new Net::HL7::Message($str);
my $resp = $conn->send($msg);
$gender = $patient[2];

}

}

Filed Under: