sub parse_lab_test { @segs = split('\r', $b); # \r is the record terminator foreach $seg (@segs) { $segtype = substr($seg, 0, 3); if ($segtype eq "MSH") { msh_fields($seg); } elsif ($segtype eq "PID") { pid_fields($seg); } elsif ($segtype eq "PV1") { pv1_fields($seg); ... etc ... } else { &segment_error; } } } #### sub msh_fields { ($mshseg) = @_; @vals = split('\|', $mshseg); $docsource = $vals[3]; $trandate = $vals[6]; $doctype2 = $vals[7]; $rectype = $vals[8]; $unique_hl7_id = $vals[9]; if ($rectype ne 'ORU^R01'){ # Discrete Results only next MAIN; # Label that ends the script } }