diff --git a/db/seeds.rb b/db/seeds.rb index 666990f8056..d773936bf9c 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -58,6 +58,7 @@ def seed call_and_log_seed_step Seeds::Notifications call_and_log_seed_step Seeds::CavcDashboardData call_and_log_seed_step Seeds::VbmsExtClaim + call_and_log_seed_step Seeds::AdditionalRemandedAppeals # Always run this as last one call_and_log_seed_step Seeds::StaticTestCaseData call_and_log_seed_step Seeds::StaticDispatchedAppealsTestData diff --git a/db/seeds/additional_remanded_appeals.rb b/db/seeds/additional_remanded_appeals.rb new file mode 100644 index 00000000000..bc748d03c15 --- /dev/null +++ b/db/seeds/additional_remanded_appeals.rb @@ -0,0 +1,354 @@ +# frozen_string_literal: true + +module Seeds + class AdditionalRemandedAppeals < Base + def initialize + initial_id_values + end + + def seed! + create_ama_appeals_decision_ready_es + create_ama_appeals_decision_ready_hr + create_ama_appeals_decision_ready_dr + create_ama_appeals_ready_to_dispatch_remanded_es + create_ama_appeals_ready_to_dispatch_remanded_hr + create_ama_appeals_ready_to_dispatch_remanded_dr + create_ama_appeals_ready_to_dispatch_remanded_multiple_es + create_ama_appeals_ready_to_dispatch_remanded_multiple_hr + create_ama_appeals_ready_to_dispatch_remanded_multiple_dr + end + + private + + def initial_id_values + @file_number ||= 500_000_000 + @participant_id ||= 900_000_000 + while Veteran.find_by(file_number: format("%09d", n: @file_number + 1)) + @file_number += 2000 + @participant_id += 2000 + end + end + + def create_veteran(options = {}) + @file_number += 1 + @participant_id += 1 + params = { + file_number: format("%09d", n: @file_number), + participant_id: format("%09d", n: @participant_id) + } + create(:veteran, params.merge(options)) + end + + def judge + @judge ||= User.find_by_css_id("BVAAABSHIRE") + end + + def attorney + @attorney ||= User.find_by_css_id("BVASCASPER1") + end + + def decision_reason_remand_list + [ + "no_notice_sent", + "incorrect_notice_sent", + "legally_inadequate_notice", + "va_records", + "private_records", + "service_personnel_records", + "service_treatment_records", + "other_government_records", + "medical_examinations", + "medical_opinions", + "advisory_medical_opinion", + "due_process_deficiency", +#New Remand Reasons not implemented yet - need actual IDs, not just text output +=begin + "No medical examination", + "Inadequate medical examination", + "No medical opinion", + "Inadequate medical opinion", + "Advisory medical opinion", + "Inextricably intertwined", + "Error satisfying regulatory or statutory duty", + "Other", +=end + ] + end + + def create_ama_remand_reason_variable(remand_code) + [create(:ama_remand_reason, code: remand_code)] + end + + def create_allowed_request_issue_1(appeal) + nca = BusinessLine.find_by(name: "National Cemetery Administration") + description = "Service connection for pain disorder is granted with an evaluation of 25\% effective August 1 2020" + notes = "Pain disorder with 25\% evaluation per examination" + + board_grant_task = create(:board_grant_effectuation_task, + status: "assigned", + assigned_to: nca, + appeal: appeal) + + request_issues = create_list(:request_issue, 1, + :nonrating, + contested_issue_description: "#{description}", + notes: "#{notes}", + benefit_type: nca.url, + decision_review: board_grant_task.appeal) + + request_issues.each do |request_issue| + # create matching decision issue + create(:decision_issue, + :nonrating, + disposition: "allowed", + decision_review: board_grant_task.appeal, + request_issues: [request_issue], + rating_promulgation_date: 2.months.ago, + benefit_type: request_issue.benefit_type) + end + end + + def create_allowed_request_issue_2(appeal) + education = BusinessLine.find_by(name: "Education") + description = "Service connection for pain disorder is granted with an evaluation of 50\% effective August 2 2021" + notes = "Pain disorder with 50\% evaluation per examination" + + board_grant_task = create(:board_grant_effectuation_task, + status: "assigned", + assigned_to: education, + appeal: appeal) + + request_issues = create_list(:request_issue, 1, + :nonrating, + contested_issue_description: "#{description}", + notes: "#{notes}", + benefit_type: education.url, + decision_review: board_grant_task.appeal) + + request_issues.each do |request_issue| + # create matching decision issue + create(:decision_issue, + :nonrating, + disposition: "allowed", + decision_review: board_grant_task.appeal, + request_issues: [request_issue], + rating_promulgation_date: 1.month.ago, + benefit_type: request_issue.benefit_type) + end + end + + def create_remanded_request_issue_1(appeal, num) + vha = BusinessLine.find_by(name: "Veterans Health Administration") + description = "Service connection for pain disorder is granted with an evaluation of 75\% effective February 3 2021" + notes = "Pain disorder with 75\% evaluation per examination" + + board_grant_task = create(:board_grant_effectuation_task, + status: "assigned", + assigned_to: vha, + appeal: appeal) + + request_issues = create_list(:request_issue, 1, + :nonrating, + contested_issue_description: "#{description}", + notes: "#{notes}", + benefit_type: vha.url, + decision_review: board_grant_task.appeal) + + request_issues.each do |request_issue| + # create matching decision issue + create(:decision_issue, + :nonrating, + remand_reasons: create_ama_remand_reason_variable(decision_reason_remand_list[num]), + decision_review: board_grant_task.appeal, + request_issues: [request_issue], + rating_promulgation_date: 1.month.ago, + benefit_type: request_issue.benefit_type) + end + end + + def create_remanded_request_issue_2(appeal, num) + insurance = BusinessLine.find_by(name: "Insurance") + description = "Service connection for pain disorder is granted with an evaluation of 100\% effective February 4 2021" + notes = "Pain disorder with 100\% evaluation per examination" + + board_grant_task = create(:board_grant_effectuation_task, + status: "assigned", + assigned_to: insurance, + appeal: appeal) + + request_issues = create_list(:request_issue, 1, + :nonrating, + contested_issue_description: "#{description}", + notes: "#{notes}", + benefit_type: insurance.url, + decision_review: board_grant_task.appeal) + + request_issues.each do |request_issue| + # create matching decision issue + create(:decision_issue, + :nonrating, + remand_reasons: create_ama_remand_reason_variable(decision_reason_remand_list[num]), + disposition: "remanded", + decision_review: board_grant_task.appeal, + request_issues: [request_issue], + rating_promulgation_date: 1.month.ago, + benefit_type: request_issue.benefit_type) + end + end + + + #Appeals Ready for Decision - Attorney Step + #Evidence Submission + def create_ama_appeals_decision_ready_es + Timecop.travel(30.days.ago) + 15.times do + appeal = create(:appeal, + :evidence_submission_docket, + :at_attorney_drafting, + associated_judge: judge, + associated_attorney: attorney, + issue_count: 3, + veteran: create_veteran) + end + Timecop.return + end + + #Hearing + def create_ama_appeals_decision_ready_hr + Timecop.travel(90.days.ago) + 15.times do + appeal = create(:appeal, + :hearing_docket, + :at_attorney_drafting, + associated_judge: judge, + associated_attorney: attorney, + issue_count: 3, + veteran: create_veteran) + end + Timecop.return + end + + #Direct Review + def create_ama_appeals_decision_ready_dr + Timecop.travel(60.days.ago) + 15.times do + appeal = create(:appeal, + :direct_review_docket, + :at_attorney_drafting, + associated_judge: judge, + associated_attorney: attorney, + issue_count: 3, + veteran: create_veteran) + end + Timecop.return + end + + def link_request_issues(appeal, num) + create_allowed_request_issue_1(appeal) + create_allowed_request_issue_2(appeal) + create_remanded_request_issue_1(appeal, num) + end + + #Appeals Ready for Decision with 1 Remand + #Evidence Submission + def create_ama_appeals_ready_to_dispatch_remanded_es + Timecop.travel(35.days.ago) + (0..11).each do |num| + appeal = create(:appeal, + :evidence_submission_docket, + :at_judge_review, + associated_judge: judge, + associated_attorney: attorney, + issue_count: 3, + veteran: create_veteran) + link_request_issues(appeal, num) + end + Timecop.return + end + + #Hearing + def create_ama_appeals_ready_to_dispatch_remanded_hr + Timecop.travel(95.days.ago) + (0..11).each do |num| + appeal = create(:appeal, + :hearing_docket, + :at_judge_review, + associated_judge: judge, + associated_attorney: attorney, + issue_count: 3, + veteran: create_veteran) + link_request_issues(appeal, num) + end + Timecop.return + end + + #Direct Review + def create_ama_appeals_ready_to_dispatch_remanded_dr + Timecop.travel(65.days.ago) + (0..11).each do |num| + appeal = create(:appeal, + :direct_review_docket, + :at_judge_review, + associated_judge: judge, + associated_attorney: attorney, + issue_count: 3, + veteran: create_veteran) + link_request_issues(appeal, num) + end + Timecop.return + end + + + #Appeals Ready for Decision with Multiple(2) Remands + #Evidence Submission + def create_ama_appeals_ready_to_dispatch_remanded_multiple_es + Timecop.travel(40.days.ago) + (0..11).each do |num| + appeal = create(:appeal, + :evidence_submission_docket, + :at_judge_review, + associated_judge: judge, + associated_attorney: attorney, + issue_count: 4, + veteran: create_veteran) + link_request_issues(appeal, num) + create_remanded_request_issue_2(appeal, num) + end + Timecop.return + end + + #Hearing + def create_ama_appeals_ready_to_dispatch_remanded_multiple_hr + Timecop.travel(100.days.ago) + (0..11).each do |num| + appeal = create(:appeal, + :hearing_docket, + :at_judge_review, + associated_judge: judge, + associated_attorney: attorney, + issue_count: 4, + veteran: create_veteran) + link_request_issues(appeal, num) + create_remanded_request_issue_2(appeal, num) + end + Timecop.return + end + + #Direct Review + def create_ama_appeals_ready_to_dispatch_remanded_multiple_dr + Timecop.travel(70.days.ago) + (0..11).each do |num| + appeal = create(:appeal, + :direct_review_docket, + :at_judge_review, + associated_judge: judge, + associated_attorney: attorney, + issue_count: 4, + veteran: create_veteran) + link_request_issues(appeal, num) + create_remanded_request_issue_2(appeal, num) + end + Timecop.return + end + end +end