App-HL7-Dump

 view release on metacpan or  search on metacpan

Dump.pm  view on Meta::CPAN


# 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 )