App-HL7-Dump
view release on metacpan or search on metacpan
# Run.
sub run {
my $self = shift;
# Process arguments.
$self->{'_opts'} = {
'c' => 0,
'h' => 0,
};
if (! getopts('ch', $self->{'_opts'}) || @ARGV < 1
|| $self->{'_opts'}->{'h'}) {
print STDERR "Usage: $0 [-c] [-h] [--version] hl7_file\n";
print STDERR "\t-c\t\tColor mode.\n";
print STDERR "\t-h\t\tPrint help.\n";
print STDERR "\t--version\tPrint version.\n";
return 1;
}
$self->{'_hl7_file'} = $ARGV[0];
if ($ENV{'COLOR'}) {
$self->{'_opts'}->{'c'} = 1;
}
# Load Term::ANSIColor.
if ($self->{'_opts'}->{'c'}) {
eval "require Term::ANSIColor;";
if ($EVAL_ERROR) {
err "Cannot load 'Term::ANSIColor'.",
'Eval error', $EVAL_ERROR;
}
}
# Get hl7_file.
my $hl7 = slurp($self->{'_hl7_file'});
# Create message.
my $msg = Net::HL7::Message->new($hl7);
if (! $msg) {
err 'Cannot parse HL7 file.', 'File', $self->{'_hl7_file'};
return 1;
}
# Segment name: size
foreach my $seg ($msg->getSegments) {
foreach my $index (1 .. $seg->size) {
my $val = $seg->getField($index);
if (defined $val) {
my $print_val;
if (ref $val eq 'ARRAY') {
$print_val = $seg->getFieldAsString($index);
} else {
$print_val = $val;
}
if ($self->{'_opts'}->{'c'}) {
print Term::ANSIColor::color('green').$seg->getName.
Term::ANSIColor::color('reset').'-'.
Term::ANSIColor::color('red').$index.
Term::ANSIColor::color('reset').':'.
Term::ANSIColor::color('bold white').
$print_val.Term::ANSIColor::color('reset')."\n";
} else {
print $seg->getName.'-'.$index.':'.$print_val."\n";
}
}
}
}
return 0;
}
1;
__END__
=pod
=encoding utf8
=head1 NAME
App::HL7::Dump - Base class for hl7dump script.
=head1 SYNOPSIS
use App::HL7::Dump;
my $app = App::HL7::Dump->new;
my $exit_code = $app->run;
=head1 METHODS
=head2 C<new>
my $app = App::HL7::Dump->new;
Constructor.
Returns instance of object.
=head2 C<run>
my $exit_code = $app->run;
Run method.
Returns exit code (0 as success, > 0 as error).
=head1 ERRORS
new():
Cannot load 'Term::ANSIColor'.
Eval error: %s
From Class::Utils::set_params():
Unknown parameter '%s'.
run():
Cannot parse HL7 file.
File: %s
( run in 1.333 second using v1.01-cache-2.11-cpan-d7f47b0818f )