Packages
hl7v2
2.1.2
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/telemetry.ex
defmodule HL7v2.Telemetry do
@moduledoc """
Telemetry event helpers for HL7v2 operations.
All events are prefixed with `[:hl7v2, ...]`. Span events emit
`[:hl7v2, event, :start]` and `[:hl7v2, event, :stop]` (or `:exception`).
## Events
| Event | Measurements | Metadata |
|-------|-------------|----------|
| `[:hl7v2, :parse, :start]` | `%{system_time: integer}` | `%{mode: atom}` |
| `[:hl7v2, :parse, :stop]` | `%{duration: integer}` | `%{mode: atom}` |
| `[:hl7v2, :encode, :start]` | `%{system_time: integer}` | `%{type: atom}` |
| `[:hl7v2, :encode, :stop]` | `%{duration: integer}` | `%{type: atom}` |
"""
@doc """
Executes a span with HL7v2 telemetry events.
Emits `[:hl7v2, event, :start]` before and `[:hl7v2, event, :stop]` after
the given function runs (or `[:hl7v2, event, :exception]` if it raises).
"""
@spec span(atom(), map(), (-> result)) :: result when result: var
def span(event, metadata, fun) do
:telemetry.span(
[:hl7v2, event],
metadata,
fn ->
result = fun.()
{result, metadata}
end
)
end
@doc """
Emits a telemetry event with the given measurements and metadata.
"""
@spec emit(atom(), map(), map()) :: :ok
def emit(event, measurements \\ %{}, metadata \\ %{}) do
:telemetry.execute([:hl7v2, event], measurements, metadata)
end
end