Sha256: ac620e4c5e7dd073d287d65c3c6ff44bb61686e1216bb9a96ffc1e042ed5b9e2

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

module Roqua
  module Healthy
    module A19
      class NameParser
        attr_reader :message

        def initialize(message)
          @message = message
        end

        def firstname
          return unless names[:nick]
          names[:nick].fetch('PID.5.2')
        end

        def initials
          "#{names[:legal].fetch('PID.5.2')} #{names[:legal].fetch('PID.5.3')}".strip
        end

        def lastname
          prefix   = names[:legal].fetch('PID.5.1').fetch('PID.5.1.2')
          lastname = names[:legal].fetch('PID.5.1').fetch('PID.5.1.3')
          "#{prefix} #{lastname}".strip
        end

        def display_name
          return unless names[:display]
          names[:display].fetch('PID.5.1')
        end

        def nickname
          firstname
        end

        private

        def names
          names = {}
          message.fetch('PID').fetch('PID.5').each do |record|
            case record.fetch('PID.5.7', :unknown_type_of_name_record)
            when 'L'
              names[:legal] = record
            when 'D'
              names[:display] = record
            when 'N'
              names[:nick] = record
              # else ignore record
            end
          end
          names
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
roqua-healthy-1.4.1 lib/roqua/healthy/a19/name_parser.rb