Class: LighthouseRatedDisabilitiesProvider

Inherits:
Object
  • Object
show all
Includes:
RatedDisabilitiesProvider
Defined in:
lib/disability_compensation/providers/rated_disabilities/lighthouse_rated_disabilities_provider.rb

Instance Method Summary collapse

Methods included from RatedDisabilitiesProvider

get_rated_disabilities

Constructor Details

#initialize(icn) ⇒ LighthouseRatedDisabilitiesProvider

Returns a new instance of LighthouseRatedDisabilitiesProvider.



10
11
12
13
# File 'lib/disability_compensation/providers/rated_disabilities/lighthouse_rated_disabilities_provider.rb', line 10

def initialize(icn)
  @service = VeteranVerification::Service.new
  @icn = icn
end

Instance Method Details

#decision_code_transform(decision_code_text) ⇒ Object



56
57
58
59
60
61
62
63
64
65
# File 'lib/disability_compensation/providers/rated_disabilities/lighthouse_rated_disabilities_provider.rb', line 56

def decision_code_transform(decision_code_text)
  service_connected = decision_code_text&.downcase == 'Service Connected'.downcase ||
                      decision_code_text&.downcase == '1151 Granted'.downcase

  if service_connected
    'SVCCONNCTED'
  else
    'NOTSVCCON'
  end
end

#get_combined_disability_rating(lighthouse_client_id = nil, lighthouse_rsa_key_path = nil) ⇒ integer

Returns the combined disability rating.

Parameters:

  • lighthouse_client_id: (string)

    the lighthouse_client_id requested from Lighthouse

  • lighthouse_rsa_key_path: (string)

    path to the private RSA key used to create the lighthouse_client_id

Returns:

  • (integer)

    the combined disability rating



18
19
20
21
# File 'lib/disability_compensation/providers/rated_disabilities/lighthouse_rated_disabilities_provider.rb', line 18

def get_combined_disability_rating(lighthouse_client_id = nil, lighthouse_rsa_key_path = nil)
  data = get_data(lighthouse_client_id, lighthouse_rsa_key_path)
  data.dig('data', 'attributes', 'combined_disability_rating')
end

#get_data(lighthouse_client_id = nil, lighthouse_rsa_key_path = nil) ⇒ Object

Parameters:

  • lighthouse_client_id: (string)

    the lighthouse_client_id requested from Lighthouse

  • lighthouse_rsa_key_path: (string)

    path to the private RSA key used to create the lighthouse_client_id



33
34
35
# File 'lib/disability_compensation/providers/rated_disabilities/lighthouse_rated_disabilities_provider.rb', line 33

def get_data(lighthouse_client_id = nil, lighthouse_rsa_key_path = nil)
  @service.get_rated_disabilities(@icn, lighthouse_client_id, lighthouse_rsa_key_path)
end

#get_rated_disabilities(lighthouse_client_id = nil, lighthouse_rsa_key_path = nil) ⇒ DisabilityCompensation::ApiProvider::RatedDisabilitiesResponse

Returns a list of individual disability ratings.

Parameters:

  • lighthouse_client_id: (string)

    the lighthouse_client_id requested from Lighthouse

  • lighthouse_rsa_key_path: (string)

    path to the private RSA key used to create the lighthouse_client_id

Returns:



26
27
28
29
# File 'lib/disability_compensation/providers/rated_disabilities/lighthouse_rated_disabilities_provider.rb', line 26

def get_rated_disabilities(lighthouse_client_id = nil, lighthouse_rsa_key_path = nil)
  data = get_data(lighthouse_client_id, lighthouse_rsa_key_path)
  transform(data['data']['attributes']['individual_ratings'])
end

#transform(data) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/disability_compensation/providers/rated_disabilities/lighthouse_rated_disabilities_provider.rb', line 37

def transform(data)
  rated_disabilities =
    data.map do |rated_disability|
      DisabilityCompensation::ApiProvider::RatedDisability.new(
        name: rated_disability['diagnostic_text'],
        decision_code: decision_code_transform(rated_disability['decision']),
        decision_text: rated_disability['decision'],
        diagnostic_code: rated_disability['diagnostic_type_code'].to_i,
        effective_date: rated_disability['effective_date'],
        rated_disability_id: rated_disability['disability_rating_id'],
        rating_decision_id: 0,
        rating_percentage: rated_disability['rating_percentage'],
        # TODO: figure out if this is important
        related_disability_date: DateTime.now
      )
    end
  DisabilityCompensation::ApiProvider::RatedDisabilitiesResponse.new(rated_disabilities:)
end