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

Message Type (MSG) -- HL7v2 composite data type.

Used in MSH-9 to identify the message type, trigger event, and structure.

3 components:
1. Message Code (ID) -- Table 0076: ADT, ORM, ORU, ACK, etc.
2. Trigger Event (ID) -- Table 0003: A01, O01, R01, etc.
3. Message Structure (ID) -- Table 0354: ADT_A01, ORM_O01, etc.

# `t`

```elixir
@type t() :: %HL7v2.Type.MSG{
  message_code: binary() | nil,
  message_structure: binary() | nil,
  trigger_event: binary() | nil
}
```

# `encode`

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

Encodes a MSG to a list of component strings.

## Examples

    iex> HL7v2.Type.MSG.encode(%HL7v2.Type.MSG{message_code: "ADT", trigger_event: "A01", message_structure: "ADT_A01"})
    ["ADT", "A01", "ADT_A01"]

    iex> HL7v2.Type.MSG.encode(%HL7v2.Type.MSG{message_code: "ADT", trigger_event: "A01"})
    ["ADT", "A01"]

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

# `parse`

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

Parses a MSG from a list of components.

## Examples

    iex> HL7v2.Type.MSG.parse(["ADT", "A01", "ADT_A01"])
    %HL7v2.Type.MSG{message_code: "ADT", trigger_event: "A01", message_structure: "ADT_A01"}

    iex> HL7v2.Type.MSG.parse(["ADT", "A01"])
    %HL7v2.Type.MSG{message_code: "ADT", trigger_event: "A01"}

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

---

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