Format HL7 without the "|" trailing character

Verified
Added by iNTERFACEWARE

How to format an HL7 message without the trailing "|" at the end of each line

Source Code
function main(Data)   
   local Msg = hl7.parse  {vmd = 'example/demo.vmd', data = Data}
   
   -- Out1 contains the message without trailing "|" delimiters
   local Out1 = Msg:flatwire()
   
   -- Out2 contains the message with the default formatting.
   local Out2 = Msg:S()
end

function node.flatwire(Node) 
   local R = ''
   for i=1, #Node do
      if Node[i]:nodeType() == 'segment' and not Node[i]:isNull() then
         R = R..Node[i]:S()
         R = R:sub(1, #R-1)  -- get rid of trailing delimiters
         R = R..'\r'
      elseif Node[i]:nodeType() == 'segment_repeated' then
         R = R..Node[i]:flatwire()
      elseif Node[i]:nodeType() == 'segment_group' then
         R = R..Node[i]:flatwire()
      end
   end
   return R
end
Description
How to format an HL7 message without the trailing "|" at the end of each line
Usage Details

This example uses an extension function node.flatwire() to remove the “|” trailing character from each line of an HL7 message.

Note: The node.flatwire() function uses recursion, but you don’t need to understand this to use it.

How to use the code:

  • Use a Filter or To Translator script
    • Add the code
    • Load the sample messages from sample_data.txt
  • Alternatively you can also load the attached project which already contains the sample messages
  • Inspect the code and annotations to see how it works