File Coverage

blib/lib/App/HL7/Compare/Parser/Message.pm
Criterion Covered Total %
statement 40 40 100.0
branch 2 2 100.0
condition n/a
subroutine 11 11 100.0
pod 0 1 0.0
total 53 54 98.1


line stmt bran cond sub pod time code
1             package App::HL7::Compare::Parser::Message;
2             $App::HL7::Compare::Parser::Message::VERSION = '0.004';
3 4     4   61 use v5.10;
  4         16  
4 4     4   23 use strict;
  4         7  
  4         159  
5 4     4   20 use warnings;
  4         7  
  4         225  
6              
7 4     4   21 use Moo;
  4         16  
  4         37  
8 4     4   1620 use Mooish::AttributeBuilder -standard;
  4         17  
  4         26  
9 4     4   3345 use Types::Standard qw(Bool);
  4         614889  
  4         46  
10              
11 4     4   14617 use App::HL7::Compare::Parser::Segment;
  4         18  
  4         157  
12 4     4   2290 use App::HL7::Compare::Parser::MessageConfig;
  4         18  
  4         1337  
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 14     14 0 31 my ($self) = @_;
28              
29 14         409 return $self->msg_config->segment_separator;
30             }
31              
32             sub _build_parts
33             {
34 14     14   372 my ($self) = @_;
35              
36 14         62 my $input = $self->consume_input;
37 14         124 $self->msg_config->from_MSH($input);
38              
39 14         449 my $parts = $self->split_and_build($input, 'App::HL7::Compare::Parser::Segment');
40 14 100       425 @{$parts} = grep { $_->name ne 'MSH' } @{$parts}
  11         57  
  47         118  
  11         29  
41             if $self->skip_MSH;
42              
43 14         30 my %last_seen;
44 14         21 foreach my $item (@{$parts}) {
  14         51  
45 53         2191 $item->set_number(++$last_seen{$item->name});
46             }
47              
48 14         636 return $parts;
49             }
50              
51             sub _build_msg_config
52             {
53 14     14   26 my ($self) = @_;
54              
55 14         287 return App::HL7::Compare::Parser::MessageConfig->new;
56             }
57              
58             1;
59