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

Occurrence Span Code and Date (OSP) -- HL7v2 composite data type.

Links a UB occurrence span code to a date range for billing segments (UB2-8).

3 components:
1. Occurrence Span Code (CNE) -- sub-components, Table 0351
2. Occurrence Span Start Date (DT) -- YYYY[MM[DD]]
3. Occurrence Span Stop Date (DT) -- YYYY[MM[DD]]

# `t`

```elixir
@type t() :: %HL7v2.Type.OSP{
  occurrence_span_code: HL7v2.Type.CNE.t() | nil,
  occurrence_span_start_date: Date.t() | HL7v2.Type.DT.t() | nil,
  occurrence_span_stop_date: Date.t() | HL7v2.Type.DT.t() | nil
}
```

# `encode`

```elixir
@spec encode(t() | nil) :: list()
```

Encodes an OSP to a list of component strings.

## Examples

    iex> HL7v2.Type.OSP.encode(%HL7v2.Type.OSP{occurrence_span_code: %HL7v2.Type.CNE{identifier: "70"}, occurrence_span_start_date: ~D[2026-01-01], occurrence_span_stop_date: ~D[2026-01-15]})
    ["70", "20260101", "20260115"]

    iex> HL7v2.Type.OSP.encode(nil)
    []

# `parse`

```elixir
@spec parse(list()) :: t()
```

Parses an OSP from a list of components.

## Examples

    iex> HL7v2.Type.OSP.parse(["70&Qualifying stay&NUBC", "20260101", "20260115"])
    %HL7v2.Type.OSP{
      occurrence_span_code: %HL7v2.Type.CNE{identifier: "70", text: "Qualifying stay", name_of_coding_system: "NUBC"},
      occurrence_span_start_date: ~D[2026-01-01],
      occurrence_span_stop_date: ~D[2026-01-15]
    }

    iex> HL7v2.Type.OSP.parse([])
    %HL7v2.Type.OSP{}

---

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