HL7v2.Encoder (HL7v2 v3.10.1)

Copy Markdown View Source

Serializes HL7v2 messages to wire format.

Reconstructs the HL7v2 wire format from a RawMessage struct. The encoder handles the MSH-1/MSH-2 special encoding and faithfully reproduces the field structure present in the raw message. Round-tripping is canonical: the parser normalizes line endings to CR and the encoder always appends a trailing CR, so parse(text) |> encode() produces canonical wire form.

Uses iodata internally for performance — the final result is converted to a binary only at the top level.

Examples

iex> {:ok, msg} = HL7v2.Parser.parse("MSH|^~\\&|SEND|FAC||RCV||20240101||ADT^A01|123|P|2.5\r")
iex> HL7v2.Encoder.encode(msg)
"MSH|^~\\&|SEND|FAC||RCV||20240101||ADT^A01|123|P|2.5\r"

Summary

Functions

Encodes a RawMessage to its HL7v2 wire format binary.

Functions

encode(raw_message)

@spec encode(HL7v2.RawMessage.t()) :: binary()

Encodes a RawMessage to its HL7v2 wire format binary.

Each segment is terminated by the segment separator (CR by default). MSH-1 and MSH-2 receive special treatment to match the standard encoding.