Packages
hl7v2
3.3.4
3.10.1
3.9.0
3.8.0
3.7.0
3.6.0
3.5.0
3.4.0
3.3.6
3.3.5
3.3.4
3.3.3
3.3.2
3.3.1
3.3.0
3.2.0
3.1.1
3.1.0
3.0.2
3.0.1
3.0.0
2.11.0
2.10.0
2.9.1
2.9.0
2.8.2
2.8.1
2.8.0
2.7.1
2.7.0
2.6.0
2.5.0
2.4.0
2.3.0
2.2.0
2.1.3
2.1.2
2.1.1
2.1.0
1.4.6
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.0
1.2.0
1.1.0
1.0.0
0.6.0
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.1.0
Pure Elixir HL7 v2.x toolkit — schema-driven parsing, typed segments, message builder, MLLP transport
Current section
Files
Jump to
Current section
Files
lib/hl7v2/type/sad.ex
defmodule HL7v2.Type.SAD do
@moduledoc """
Street Address (SAD) -- HL7v2 sub-component composite type.
Used as component 1 of XAD (Extended Address). Contains 3
sub-components delimited by `&` when embedded in a composite field.
Sub-components:
1. Street or Mailing Address (ST)
2. Street Name (ST)
3. Dwelling Number (ST)
"""
@behaviour HL7v2.Type
alias HL7v2.Type
defstruct [:street_or_mailing_address, :street_name, :dwelling_number]
@type t :: %__MODULE__{
street_or_mailing_address: binary() | nil,
street_name: binary() | nil,
dwelling_number: binary() | nil
}
@doc """
Parses a street address from a list of sub-components.
## Examples
iex> HL7v2.Type.SAD.parse(["123 Main St", "Main St", "123"])
%HL7v2.Type.SAD{street_or_mailing_address: "123 Main St", street_name: "Main St", dwelling_number: "123"}
iex> HL7v2.Type.SAD.parse(["123 Main St"])
%HL7v2.Type.SAD{street_or_mailing_address: "123 Main St"}
iex> HL7v2.Type.SAD.parse([])
%HL7v2.Type.SAD{}
"""
@spec parse(list()) :: t()
def parse(components) when is_list(components) do
%__MODULE__{
street_or_mailing_address: Type.get_component(components, 0),
street_name: Type.get_component(components, 1),
dwelling_number: Type.get_component(components, 2)
}
end
@doc """
Encodes a street address to a list of sub-component strings.
## Examples
iex> HL7v2.Type.SAD.encode(%HL7v2.Type.SAD{street_or_mailing_address: "123 Main St", street_name: "Main St", dwelling_number: "123"})
["123 Main St", "Main St", "123"]
iex> HL7v2.Type.SAD.encode(%HL7v2.Type.SAD{street_or_mailing_address: "123 Main St"})
["123 Main St"]
iex> HL7v2.Type.SAD.encode(nil)
[]
"""
@spec encode(t() | nil) :: list()
def encode(nil), do: []
def encode(%__MODULE__{} = sad) do
[
sad.street_or_mailing_address || "",
sad.street_name || "",
sad.dwelling_number || ""
]
|> Type.trim_trailing()
end
end