Sha256: b6e9d3572f29ce0e7335b1088410aa2c8d9ccafb8a660c3c4d1dcded742b7b2f

Contents?: true

Size: 1.59 KB

Versions: 4

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true
module Roqua
  module Healthy
    module A19
      class AddressParser
        attr_reader :message

        def initialize(message)
          @message = message
        end

        def address_type
          return nil unless record
          record.fetch('PID.11.7')
        end

        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

        def city
          return nil unless record
          record.fetch('PID.11.3')
        end

        def zipcode
          return nil unless record
          record.fetch('PID.11.5')
        end

        def country
          return nil unless record
          record.fetch('PID.11.6')
        end

        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

        private

        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
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
roqua-healthy-1.6.0 lib/roqua/healthy/a19/address_parser.rb
roqua-healthy-1.5.13 lib/roqua/healthy/a19/address_parser.rb
roqua-healthy-1.5.12 lib/roqua/healthy/a19/address_parser.rb
roqua-healthy-1.5.11 lib/roqua/healthy/a19/address_parser.rb