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

Money and Charge Code (MOC) -- HL7v2 composite data type.

Used to convey a monetary amount together with a charge code.

2 components:
1. Monetary Amount (MO) -- sub-components delimited by `&`
2. Charge Code (CE) -- sub-components delimited by `&`

# `t`

```elixir
@type t() :: %HL7v2.Type.MOC{
  charge_code: HL7v2.Type.CE.t() | nil,
  monetary_amount: HL7v2.Type.MO.t() | nil
}
```

# `encode`

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

Encodes a MOC to a list of component strings.

## Examples

    iex> HL7v2.Type.MOC.encode(%HL7v2.Type.MOC{monetary_amount: %HL7v2.Type.MO{quantity: "150.00", denomination: "USD"}})
    ["150.00&USD"]

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

# `parse`

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

Parses a MOC from a list of components.

## Examples

    iex> HL7v2.Type.MOC.parse(["150.00&USD", "99213&Office Visit&CPT4"])
    %HL7v2.Type.MOC{
      monetary_amount: %HL7v2.Type.MO{quantity: "150.00", denomination: "USD"},
      charge_code: %HL7v2.Type.CE{identifier: "99213", text: "Office Visit", name_of_coding_system: "CPT4"}
    }

    iex> HL7v2.Type.MOC.parse(["150.00&USD"])
    %HL7v2.Type.MOC{monetary_amount: %HL7v2.Type.MO{quantity: "150.00", denomination: "USD"}}

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

---

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