class Roqua::Healthy::A19::AddressParser

Attributes

message[R]

Public Class Methods

new(message) click to toggle source
# File lib/roqua/healthy/a19/address_parser.rb, line 8
def initialize(message)
  @message = message
end

Public Instance Methods

address_type() click to toggle source
# File lib/roqua/healthy/a19/address_parser.rb, line 12
def address_type
  return nil unless record
  record.fetch('PID.11.7')
end
city() click to toggle source
# File lib/roqua/healthy/a19/address_parser.rb, line 30
def city
  return nil unless record
  record.fetch('PID.11.3')
end
country() click to toggle source
# File lib/roqua/healthy/a19/address_parser.rb, line 40
def country
  return nil unless record
  record.fetch('PID.11.6')
end
record() click to toggle source
# File lib/roqua/healthy/a19/address_parser.rb, line 45
def record
  # PID.11.7 address types:
  # M: Mailing
  # P: Permanent
  # H: Home
  # L: Legal address

  @record ||= get_address_of_type(message, 'M') ||
              get_address_of_type(message, 'P') ||
              get_address_of_type(message, 'H') ||
              get_address_of_type(message, 'L')
end
street() click to toggle source
# File lib/roqua/healthy/a19/address_parser.rb, line 17
def street
  return nil if record.blank? || record.fetch('PID.11.1').blank?

  street = record.fetch('PID.11.1').fetch('PID.11.1.1')
  suffix = record.fetch('PID.11.2', nil)

  if suffix.present? && !street.end_with?(suffix)
    street + suffix
  else
    street
  end
end
zipcode() click to toggle source
# File lib/roqua/healthy/a19/address_parser.rb, line 35
def zipcode
  return nil unless record
  record.fetch('PID.11.5')
end

Private Instance Methods

get_address_of_type(message, type) click to toggle source
# File lib/roqua/healthy/a19/address_parser.rb, line 60
def get_address_of_type(message, type)
  message.dig('PID', 'PID.11')&.find do |record|
    record.fetch('PID.11.7', :unknown_type_of_address_record) == type
  end
end