=head1 NAME
App::HL7::Compare - compare two HL7 v2 messages against one another
=head1 SYNOPSIS
my $stringified = App::HL7::Compare->new(
files => [
'filename.hl7',
\$file_content,
],
)->compare_stringify;
print $stringified;
=head1 DESCRIPTION
This module contains routines for parsing, comparing and generating output for
HL7 v2 (pipe-separated) messages. Such comparison can be useful for determining
what's missing from a message, which may not be immediately obvious (depending
on message complexity).
=head2 Output format
MSH segments are automatically skipped and not included in the comparison. The
output lines are as follows:
SEGM.1[1][2][3]: val1 => val2
Where:
=over
=item * C<SEGM.1> is the same of the segment and its number. If there are more
segments of this type the number will distinguish that.
=item * C<[1][2][3]> is the path in the segment. The numbers are: field,
component, subcomponent. The list may be shorter if there are no more
subdivisions.
=item * C<< val1 => val2 >> are the values present in the first and the second message.
=back
=head2 Options
=head3 files
The list of files to parse. Must consist of two files. Each can be either a
plain string (a filename) or a reference to a string (a file's contents).
=head3 exclude_matching
Optional, boolean, true by default. If the value is the same, line is excluded
from the comparison.
=head2 Methods
=head3 compare
Returns the comparison in arrayref format.
=head3 compare_stringify
Returns the comparison in string format.
=head1 TODO
Decoding escaped HL7 characters in App::HL7::Compare::Parser::Subcomponent.
=head1 SEE ALSO
L<App::HL7::Dump>
=head1 AUTHOR
Bartosz Jarzyna E<lt>bbrtj.pro@gmail.comE<gt>
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2023 by Bartosz Jarzyna
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.