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

Family Name (FN) -- HL7v2 sub-component composite type.

Used as component 1 of XPN (Extended Person Name). Contains 5
sub-components delimited by `&` when embedded in a composite field.

Sub-components:
1. Surname (ST) -- required
2. Own Surname Prefix (ST)
3. Own Surname (ST)
4. Surname Prefix From Partner/Spouse (ST)
5. Surname From Partner/Spouse (ST)

# `t`

```elixir
@type t() :: %HL7v2.Type.FN{
  own_surname: binary() | nil,
  own_surname_prefix: binary() | nil,
  surname: binary() | nil,
  surname_from_partner: binary() | nil,
  surname_prefix_from_partner: binary() | nil
}
```

# `encode`

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

Encodes a family name to a list of sub-component strings.

## Examples

    iex> HL7v2.Type.FN.encode(%HL7v2.Type.FN{surname: "Smith"})
    ["Smith"]

    iex> HL7v2.Type.FN.encode(%HL7v2.Type.FN{surname: "Smith", own_surname_prefix: "Van"})
    ["Smith", "Van"]

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

# `parse`

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

Parses a family name from a list of sub-components.

## Examples

    iex> HL7v2.Type.FN.parse(["Smith"])
    %HL7v2.Type.FN{surname: "Smith"}

    iex> HL7v2.Type.FN.parse(["Smith", "Van"])
    %HL7v2.Type.FN{surname: "Smith", own_surname_prefix: "Van"}

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

---

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