—#! /usr/local/bin/perl
#!/usr/bin/perl
=head1 UMLS-Interface
getStDef.pl
=head1 SYNOPSIS
This program takes in a semantic type (ST) and returns its definition
=head1 USAGE
Usage: getStDef.pl [OPTIONS] <semantic type>
=head1 INPUT
=head2 Required Arguments:
=head3 <semantic type>
Semantic type (ST) from the Unified Medical Language System (UMLS)
=head2 Optional Arguments:
=head3 --username STRING
Username is required to access the umls database on MySql
unless it was specified in the my.cnf file at installation
=head3 --password STRING
Password is required to access the umls database on MySql
unless it was specified in the my.cnf file at installation
=head3 --hostname STRING
Hostname where mysql is located. DEFAULT: localhost
=head3 --socket STRING
The socket your mysql is using. DEFAULT: /tmp/mysql.sock
=head3 --database STRING
Database contain UMLS DEFAULT: umls
=head4 --help
Displays the quick summary of program options.
=head4 --version
Displays the version information.
=head1 OUTPUT
List of CUIs that are associated with the input term
=head1 SYSTEM REQUIREMENTS
=over
=item * Perl (version 5.8.5 or better) - http://www.perl.org
=back
=head1 AUTHOR
Bridget T. McInnes, University of Minnesota
=head1 COPYRIGHT
Copyright (c) 2007-2008,
Bridget T. McInnes, University of Minnesota
bthomson at cs.umn.edu
Ted Pedersen, University of Minnesota Duluth
tpederse at d.umn.edu
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to:
The Free Software Foundation, Inc.,
59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
=cut
###############################################################################
# THE CODE STARTS HERE
###############################################################################
# ================================
# COMMAND LINE OPTIONS AND USAGE
# ================================
use
UMLS::Interface;
use
Getopt::Long;
GetOptions(
"version"
,
"help"
,
"username=s"
,
"password=s"
,
"hostname=s"
,
"database=s"
,
"socket=s"
,
"config=s"
);
# if help is defined, print out help
if
(
defined
$opt_help
) {
$opt_help
= 1;
&showHelp
();
exit
;
}
# if version is requested, show version
if
(
defined
$opt_version
) {
$opt_version
= 1;
&showVersion
();
exit
;
}
# At least 1 CUI should be given on the command line.
if
(
scalar
(
@ARGV
) < 1) {
STDERR
"No term was specified on the command line"
;
&minimalUsageNotes
();
exit
;
}
my
$database
=
"umls"
;
if
(
defined
$opt_database
) {
$database
=
$opt_database
; }
my
$hostname
=
"localhost"
;
if
(
defined
$opt_hostname
) {
$hostname
=
$opt_hostname
; }
my
$socket
=
"/tmp/mysql.sock"
;
if
(
defined
$opt_socket
) {
$socket
=
$opt_socket
; }
my
$umls
=
""
;
if
(
defined
$opt_username
and
defined
$opt_password
and
defined
$opt_config
) {
$umls
= UMLS::Interface->new({
"driver"
=>
"mysql"
,
"database"
=>
"$database"
,
"username"
=>
"$opt_username"
,
"password"
=>
"$opt_password"
,
"hostname"
=>
"$hostname"
,
"socket"
=>
"$socket"
,
"config"
=>
"$opt_config"
});
die
"Unable to create UMLS::Interface object.\n"
if
(!
$umls
);
(
$errCode
,
$errString
) =
$umls
->getError();
die
"$errString\n"
if
(
$errCode
);
}
elsif
(
defined
$opt_username
and
defined
$opt_password
) {
$umls
= UMLS::Interface->new({
"driver"
=>
"mysql"
,
"database"
=>
"$database"
,
"username"
=>
"$opt_username"
,
"password"
=>
"$opt_password"
,
"hostname"
=>
"$hostname"
,
"socket"
=>
"$socket"
});
die
"Unable to create UMLS::Interface object.\n"
if
(!
$umls
);
(
$errCode
,
$errString
) =
$umls
->getError();
die
"$errString\n"
if
(
$errCode
);
}
elsif
(
defined
$opt_config
) {
$umls
= UMLS::Interface->new({
"config"
=>
"$opt_config"
});
die
"Unable to create UMLS::Interface object.\n"
if
(!
$umls
);
(
$errCode
,
$errString
) =
$umls
->getError();
die
"$errString\n"
if
(
$errCode
);
}
else
{
$umls
= UMLS::Interface->new();
die
"Unable to create UMLS::Interface object.\n"
if
(!
$umls
);
(
$errCode
,
$errString
) =
$umls
->getError();
die
"$errString\n"
if
(
$errCode
);
}
&errorCheck
(
$umls
);
my
$st
=
shift
;
my
$def
=
$umls
->getStDef(
$st
);
&errorCheck
(
$umls
);
"The definition of the semantic type ($st):\n"
;
"=> $def\n"
;
sub
errorCheck
{
my
$obj
=
shift
;
(
$errCode
,
$errString
) =
$obj
->getError();
"ERRORCHECK: $errCode ($errString)\n"
;
STDERR
"$errString\n"
if
(
$errCode
);
exit
if
(
$errCode
> 1);
}
##############################################################################
# function to output minimal usage notes
##############################################################################
sub
minimalUsageNotes {
"Usage: queryCui.pl [OPTIONS] CUI \n\n"
;
&askHelp
();
exit
;
}
##############################################################################
# function to output help messages for this program
##############################################################################
sub
showHelp() {
"This is a utility that takes as input a semantic type\n"
;
"and returns its definition.\n\n"
;
"Usage: getStDef.pl [OPTIONS] <semantic type>\n\n"
;
"Options:\n\n"
;
"--username STRING Username required to access mysql\n\n"
;
"--password STRING Password required to access mysql\n\n"
;
"--hostname STRING Hostname for mysql (DEFAULT: localhost)\n\n"
;
"--database STRING Database contain UMLS (DEFAULT: umls)\n\n"
;
"--socket STRING Socket used by mysql (DEFAULT: /tmp.mysql.sock)\n\n"
;
"--config FILE Configuration file\n"
;
"--version Prints the version number\n\n"
;
"--help Prints this help message.\n\n"
;
}
##############################################################################
# function to output the version number
##############################################################################
sub
showVersion {
'$Id: getStDef.pl,v 1.2 2009/01/08 20:17:59 btmcinnes Exp $'
;
"\nCopyright (c) 2008, Ted Pedersen & Bridget McInnes\n"
;
}
##############################################################################
# function to output "ask for help" message when user's goofed
##############################################################################
sub
askHelp {
STDERR
"Type getStDef.pl --help for help.\n"
;
}