Class: EVSS::DisabilityCompensationForm::Form526ToLighthouseTransform

Inherits:
Object
  • Object
show all
Defined in:
lib/evss/disability_compensation_form/form526_to_lighthouse_transform.rb

Instance Method Summary collapse

Instance Method Details

#evss_claims_process_type(form526) ⇒ Object

returns “STANDARD_CLAIM_PROCESS”, “BDD_PROGRAM”, or “FDC_PROGRAM” based off of a few attributes in the evss data



41
42
43
44
45
46
47
48
49
# File 'lib/evss/disability_compensation_form/form526_to_lighthouse_transform.rb', line 41

def evss_claims_process_type(form526)
  if form526['bddQualified']
    return 'BDD_PROGRAM'
  elsif form526['standardClaim']
    return 'STANDARD_CLAIM_PROCESS'
  end

  'FDC_PROGRAM'
end

#transform(evss_data) ⇒ Object

takes known EVSS Form526Submission format and converts it to a Lighthouse request body evss_data will look like JSON.parse(form526_submission.form_data)



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/evss/disability_compensation_form/form526_to_lighthouse_transform.rb', line 10

def transform(evss_data)
  form526 = evss_data['form526']
  lh_request_body = Requests::Form526.new
  lh_request_body.claimant_certification = true
  lh_request_body.claim_process_type = evss_claims_process_type(form526) # basic_info[:claim_process_type]

  veteran = form526['veteran']
  lh_request_body.veteran_identification = transform_veteran(veteran)
  lh_request_body.change_of_address = transform_change_of_address(veteran) if veteran['changeOfAddress'].present?
  lh_request_body.homeless = transform_homeless(veteran) if veteran['homelessness'].present?

  service_information = form526['serviceInformation']
  lh_request_body.service_information = transform_service_information(service_information)

  disabilities = form526['disabilities']
  lh_request_body.disabilities = transform_disabilities(disabilities)

  direct_deposit = form526['directDeposit']
  lh_request_body.direct_deposit = transform_direct_deposit(direct_deposit) if direct_deposit.present?

  treatments = form526['treatments']
  lh_request_body.treatments = transform_treatments(treatments) if treatments.present?

  service_pay = form526['servicePay']
  lh_request_body.service_pay = transform_service_pay(service_pay) if service_pay.present?

  lh_request_body
end

#transform_change_of_address(veteran) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/evss/disability_compensation_form/form526_to_lighthouse_transform.rb', line 66

def transform_change_of_address(veteran)
  change_of_address = Requests::ChangeOfAddress.new
  change_of_address_source = veteran['changeOfAddress']
  change_of_address.city = change_of_address_source['militaryPostOfficeTypeCode'] ||
                           change_of_address_source['city']
  change_of_address.state = change_of_address_source['militaryStateCode'] || change_of_address_source['state']
  change_of_address.country = change_of_address_source['country']
  change_of_address.address_line_1 = change_of_address_source['addressLine1']
  change_of_address.address_line_2 = change_of_address_source['addressLine2']
  change_of_address.address_line_3 = change_of_address_source['addressLine3']

  change_of_address.zip_first_five = change_of_address_source['internationalPostalCode'] ||
                                     change_of_address_source['zipFirstFive']
  change_of_address.zip_last_four = change_of_address_source['zipLastFour']
  change_of_address.type_of_address_change = change_of_address_source['addressChangeType']
  change_of_address.dates = Requests::Dates.new

  fill_change_of_address(change_of_address_source, change_of_address)

  change_of_address
end

#transform_homeless(veteran) ⇒ Object



88
89
90
91
92
93
94
95
96
97
# File 'lib/evss/disability_compensation_form/form526_to_lighthouse_transform.rb', line 88

def transform_homeless(veteran)
  homeless = Requests::Homeless.new
  homelessness = veteran['homelessness']

  fill_currently_homeless(homelessness, homeless) if homelessness['currentlyHomeless'].present?

  fill_risk_of_becoming_homeless(homelessness, homeless) if homelessness['homelessnessRisk'].present?

  homeless
end

#transform_service_information(service_information_source) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/evss/disability_compensation_form/form526_to_lighthouse_transform.rb', line 99

def transform_service_information(service_information_source)
  service_information = Requests::ServiceInformation.new
  transform_service_periods(service_information_source, service_information)
  if service_information_source['confinements']
    transform_confinements(service_information_source, service_information)
  end
  if service_information_source['alternateName']
    transform_alternate_names(service_information_source, service_information)
  end
  if service_information_source['reservesNationalGuardService']
    transform_reserves_national_guard_service(service_information_source, service_information)
    reserves_national_guard_service_source =
      service_information_source['reservesNationalGuardService']['title10Activation']
    # Title10Activation == FederalActivation
    service_information.federal_activation = Requests::FederalActivation.new(
      anticipated_separation_date: reserves_national_guard_service_source['anticipatedSeparationDate'],
      activation_date: reserves_national_guard_service_source['title10ActivationDate']
    )
  end

  service_information
end

#transform_service_pay(service_pay_source) ⇒ Object

Transforms EVSS service pay format into Lighthouse request service pay block format

Parameters:

  • service_pay_source

    {} accepts an object in the EVSS servicePay format



142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/evss/disability_compensation_form/form526_to_lighthouse_transform.rb', line 142

def transform_service_pay(service_pay_source)
  # mapping to target <- source
  service_pay_target = Requests::ServicePay.new

  service_pay_target.favor_training_pay = service_pay_source['waiveVABenefitsToRetainTrainingPay']
  service_pay_target.favor_military_retired_pay = service_pay_source['waiveVABenefitsToRetainRetiredPay']

  # map military retired pay block
  if service_pay_source['militaryRetiredPay'].present?
    transform_military_retired_pay(service_pay_source, service_pay_target)
  end

  # map separation pay block
  transform_separation_pay(service_pay_source, service_pay_target) if service_pay_source['separationPay'].present?

  service_pay_target
end

#transform_treatments(treatments_source) ⇒ Object

Transforms EVSS treatments format into Lighthouse request treatments block format

Parameters:

  • treatments_source

    Array accepts a list of treatments in the EVSS treatments format



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/evss/disability_compensation_form/form526_to_lighthouse_transform.rb', line 124

def transform_treatments(treatments_source)
  treatments_source.map do |treatment|
    center = treatment['center']
    Requests::Treatment.new(
      treated_disability_names: treatment['treatedDisabilityNames'],
      center: Requests::Center.new(
        name: center['name'],
        state: center['state'],
        city: center['city']
      ),
      # LH spec says YYYY-DD or YYYY date format
      begin_date: convert_approximate_date(treatment['startDate'], short: true)
    )
  end
end

#transform_veteran(veteran) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/evss/disability_compensation_form/form526_to_lighthouse_transform.rb', line 51

def transform_veteran(veteran)
  veteran_identification = Requests::VeteranIdentification.new
  veteran_identification.current_va_employee = veteran['currentlyVAEmployee']
  veteran_identification.service_number = veteran['serviceNumber']
  veteran_identification.email_address = Requests::EmailAddress.new
  veteran_identification.email_address.email = veteran['emailAddress']
  veteran_identification.veteran_number = Requests::VeteranNumber.new

  fill_phone_number(veteran, veteran_identification)

  transform_mailing_address(veteran, veteran_identification) if veteran['currentMailingAddress'].present?

  veteran_identification
end