Packages
hl7v2
3.3.1
3.10.1
3.9.0
3.8.0
3.7.0
3.6.0
3.5.0
3.4.0
3.3.6
3.3.5
3.3.4
3.3.3
3.3.2
3.3.1
3.3.0
3.2.0
3.1.1
3.1.0
3.0.2
3.0.1
3.0.0
2.11.0
2.10.0
2.9.1
2.9.0
2.8.2
2.8.1
2.8.0
2.7.1
2.7.0
2.6.0
2.5.0
2.4.0
2.3.0
2.2.0
2.1.3
2.1.2
2.1.1
2.1.0
1.4.6
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.0
1.2.0
1.1.0
1.0.0
0.6.0
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.1.0
Pure Elixir HL7 v2.x toolkit — schema-driven parsing, typed segments, message builder, MLLP transport
Current section
Files
Jump to
Current section
Files
lib/hl7v2/mllp/handler.ex
defmodule HL7v2.MLLP.Handler do
@moduledoc """
Behaviour for MLLP message handlers.
Implement `handle_message/2` to process incoming HL7v2 messages and return
a response. The handler receives the raw HL7v2 message (without MLLP framing)
and connection metadata. The returned response message will be MLLP-framed
before sending back to the client.
## Example
defmodule MyHandler do
@behaviour HL7v2.MLLP.Handler
@impl true
def handle_message(message, _meta) do
# Parse, process, build ACK...
{:ok, ack_message}
end
end
## Connection metadata
The `meta` map contains:
- `:peer` — `{address, port}` of the remote client
- `:ref` — the Ranch listener reference
- `:handler_state` — the value passed as `:handler_state` to the listener
"""
@type meta :: %{
peer: {:inet.ip_address(), :inet.port_number()},
ref: :ranch.ref(),
handler_state: term()
}
@doc """
Handles an incoming HL7v2 message.
Receives the raw message binary (MLLP framing already stripped) and
connection metadata. Must return `{:ok, response_binary}` or
`{:error, reason}`.
"""
@callback handle_message(message :: binary(), meta :: meta()) ::
{:ok, response :: binary()} | {:error, reason :: term()}
end