| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | package App::HL7::Compare::Parser::Message; | 
| 2 |  |  |  |  |  |  | $App::HL7::Compare::Parser::Message::VERSION = '0.002'; | 
| 3 | 4 |  |  | 4 |  | 51 | use v5.10; | 
|  | 4 |  |  |  |  | 19 |  | 
| 4 | 4 |  |  | 4 |  | 22 | use strict; | 
|  | 4 |  |  |  |  | 8 |  | 
|  | 4 |  |  |  |  | 79 |  | 
| 5 | 4 |  |  | 4 |  | 42 | use warnings; | 
|  | 4 |  |  |  |  | 9 |  | 
|  | 4 |  |  |  |  | 136 |  | 
| 6 |  |  |  |  |  |  |  | 
| 7 | 4 |  |  | 4 |  | 41 | use Moo; | 
|  | 4 |  |  |  |  | 9 |  | 
|  | 4 |  |  |  |  | 22 |  | 
| 8 | 4 |  |  | 4 |  | 1340 | use Mooish::AttributeBuilder -standard; | 
|  | 4 |  |  |  |  | 29 |  | 
|  | 4 |  |  |  |  | 26 |  | 
| 9 | 4 |  |  | 4 |  | 3120 | use Types::Standard qw(Bool); | 
|  | 4 |  |  |  |  | 483463 |  | 
|  | 4 |  |  |  |  | 47 |  | 
| 10 |  |  |  |  |  |  |  | 
| 11 | 4 |  |  | 4 |  | 11967 | use App::HL7::Compare::Parser::Segment; | 
|  | 4 |  |  |  |  | 20 |  | 
|  | 4 |  |  |  |  | 170 |  | 
| 12 | 4 |  |  | 4 |  | 1948 | use App::HL7::Compare::Parser::MessageConfig; | 
|  | 4 |  |  |  |  | 15 |  | 
|  | 4 |  |  |  |  | 1657 |  | 
| 13 |  |  |  |  |  |  |  | 
| 14 |  |  |  |  |  |  | has param 'skip_MSH' => ( | 
| 15 |  |  |  |  |  |  | isa => Bool, | 
| 16 |  |  |  |  |  |  | default => sub { 1 }, | 
| 17 |  |  |  |  |  |  | ); | 
| 18 |  |  |  |  |  |  |  | 
| 19 |  |  |  |  |  |  | with qw( | 
| 20 |  |  |  |  |  |  | App::HL7::Compare::Parser::Role::PartOfMessage | 
| 21 |  |  |  |  |  |  | App::HL7::Compare::Parser::Role::Partible | 
| 22 |  |  |  |  |  |  | App::HL7::Compare::Parser::Role::RequiresInput | 
| 23 |  |  |  |  |  |  | ); | 
| 24 |  |  |  |  |  |  |  | 
| 25 |  |  |  |  |  |  | sub part_separator | 
| 26 |  |  |  |  |  |  | { | 
| 27 | 10 |  |  | 10 | 0 | 24 | my ($self) = @_; | 
| 28 |  |  |  |  |  |  |  | 
| 29 | 10 |  |  |  |  | 310 | return $self->msg_config->segment_separator; | 
| 30 |  |  |  |  |  |  | } | 
| 31 |  |  |  |  |  |  |  | 
| 32 |  |  |  |  |  |  | sub _build_parts | 
| 33 |  |  |  |  |  |  | { | 
| 34 | 10 |  |  | 10 |  | 256 | my ($self) = @_; | 
| 35 |  |  |  |  |  |  |  | 
| 36 | 10 |  |  |  |  | 34 | my $input = $self->consume_input; | 
| 37 | 10 |  |  |  |  | 63 | $self->msg_config->from_MSH($input); | 
| 38 |  |  |  |  |  |  |  | 
| 39 | 10 |  |  |  |  | 311 | my $parts = $self->split_and_build($input, 'App::HL7::Compare::Parser::Segment'); | 
| 40 | 10 | 100 |  |  |  | 315 | @{$parts} = grep { $_->name ne 'MSH' } @{$parts} | 
|  | 9 |  |  |  |  | 47 |  | 
|  | 39 |  |  |  |  | 97 |  | 
|  | 9 |  |  |  |  | 32 |  | 
| 41 |  |  |  |  |  |  | if $self->skip_MSH; | 
| 42 |  |  |  |  |  |  |  | 
| 43 | 10 |  |  |  |  | 24 | my %last_seen; | 
| 44 | 10 |  |  |  |  | 21 | foreach my $item (@{$parts}) { | 
|  | 10 |  |  |  |  | 24 |  | 
| 45 | 45 |  |  |  |  | 1499 | $item->set_number(++$last_seen{$item->name}); | 
| 46 |  |  |  |  |  |  | } | 
| 47 |  |  |  |  |  |  |  | 
| 48 | 10 |  |  |  |  | 460 | return $parts; | 
| 49 |  |  |  |  |  |  | } | 
| 50 |  |  |  |  |  |  |  | 
| 51 |  |  |  |  |  |  | sub _build_msg_config | 
| 52 |  |  |  |  |  |  | { | 
| 53 | 10 |  |  | 10 |  | 26 | my ($self) = @_; | 
| 54 |  |  |  |  |  |  |  | 
| 55 | 10 |  |  |  |  | 167 | return App::HL7::Compare::Parser::MessageConfig->new; | 
| 56 |  |  |  |  |  |  | } | 
| 57 |  |  |  |  |  |  |  | 
| 58 |  |  |  |  |  |  | 1; | 
| 59 |  |  |  |  |  |  |  |