#!/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];
}
}
Tags: softwarebyme, toolsofthetrade
Filed Under: