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

Represents a validated HL7v2 path.

Created by the `~h` sigil at compile time or by `HL7v2.Path.parse/1` at runtime.
Pass to `HL7v2.get/2` or `HL7v2.fetch/2` for resolution.

## Path Syntax

    "PID"          — segment
    "PID-5"        — field 5
    "PID-5.1"      — component 1 of field 5
    "PID-3[2]"     — repetition 2 of field 3
    "OBX[*]-5"     — field 5 from ALL OBX segments (returns list)
    "OBX[2]-5"     — field 5 from the 2nd OBX segment
    "PID-3[*]"     — ALL repetitions of PID-3 (returns list)

# `t`

```elixir
@type t() :: %HL7v2.Path{
  component: pos_integer() | nil,
  field: pos_integer() | nil,
  raw: binary(),
  repetition: pos_integer() | nil,
  segment: binary(),
  segment_index: pos_integer() | :all | nil
}
```

# `parse`

```elixir
@spec parse(binary()) :: {:ok, t()} | {:error, :invalid_path}
```

Parses a path string at runtime, returning `{:ok, path}` or `{:error, :invalid_path}`.

Prefer the `~h` sigil for compile-time validation when the path is a literal.

---

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