# `HL7v2.Telemetry`
[🔗](https://github.com/Balneario-de-Cofrentes/hl7v2/blob/v3.10.1/lib/hl7v2/telemetry.ex#L1)

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}` |

# `emit`

```elixir
@spec emit(atom(), map(), map()) :: :ok
```

Emits a telemetry event with the given measurements and metadata.

# `span`

```elixir
@spec span(atom(), map(), (-&gt; result)) :: result when result: var
```

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).

---

*Consult [api-reference.md](api-reference.md) for complete listing*
