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.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