diff --git a/scripts/content/vacms-17969/VACMS-17969-vba-test-data-processor.php b/scripts/content/vacms-17969/VACMS-17969-vba-test-data-processor.php new file mode 100644 index 0000000000..620f129b60 --- /dev/null +++ b/scripts/content/vacms-17969/VACMS-17969-vba-test-data-processor.php @@ -0,0 +1,772 @@ +getStorage('node')->load($data[1]); + $node->field_show_banner->value = $data[2]; + $node->field_alert_type->value = $data[3]; + $node->field_dismissible_option->value = $data[4]; + $node->field_banner_title->value = $data[5]; + $node->field_banner_content->value = $data[6]; + $node->field_operating_status_facility->value = $data[7]; + $node->field_operating_status_more_info->value = $data[8]; + add_prepare_for_your_visit_to_facility($node, $data[9]); + add_media_to_facility($node, $data[12]); + add_spotlights_to_facility($node, $data[13], $data[16]); + $node->moderation_state = 'published'; + save_node_revision($node, "Updated for VBA test data", TRUE); +} + +/** + * Create a VBA service region node. + * + * @param array $data + * The data from the CSV file. + */ +function create_vba_service_region_node($data) { + $service_region = Node::create([ + 'type' => 'service_region', + 'title' => $data[28], + 'field_service_name_and_descripti' => [ + 'target_id' => $data[1], + ], + 'field_administration' => [ + 'target_id' => $data[3], + ], + 'field_facility_location' => [ + 'target_id' => $data[30], + ], + 'moderation_state' => 'published', + ]); + // Create the service location paragraph(s). + $number_of_service_locations = $data[6]; + for ($i = 0; $i < $number_of_service_locations; $i++) { + $service_location = create_service_location_paragraph($data, $i); + $service_region->field_service_location->appendItem($service_location); + } + save_node_revision($service_region, "Created for VBA test data", TRUE); +} + +/** + * Create a VBA facility service node. + * + * @param array $data + * The data from the CSV file. + */ +function create_vba_facility_service_node($data) { + $facility_id = $data[1]; + $facility_section = $data[3]; + $service_id = $data[5]; + + // Create the VBA service node initially + // and then add to it the necessary service locations. + $service_node = Node::create([ + 'type' => 'vba_facility_service', + 'field_administration' => [ + 'target_id' => $facility_section, + ], + 'field_office' => [ + 'target_id' => $facility_id, + ], + 'field_service_name_and_descripti' => [ + 'target_id' => $service_id, + ], + 'moderation_state' => 'published', + ]); + $service_node->save(); + + // Create the service location paragraph(s). + $number_of_service_locations = $data[6]; + for ($i = 0; $i < $number_of_service_locations; $i++) { + $service_location = create_service_location_paragraph($data, $i); + $service_node->field_service_location->appendItem($service_location); + } + save_node_revision($service_node, "Created for VBA test data", TRUE); +} + +/** + * Create service location paragraphs. + * + * @param array $data + * The data from the CSV file. + * @param int $service_location_index + * The number of the service location creation loop. + * + * @return \Drupal\paragraphs\Entity\Paragraph + * The service location paragraph. + */ +function create_service_location_paragraph($data, $service_location_index) { + // If this is the first service location, use the data from the CSV file. + if ($service_location_index === 0) { + $service_location = Paragraph::create([ + 'type' => 'service_location', + 'field_office_visits' => $data[7], + 'field_virtual_support' => $data[8], + 'field_appt_intro_text_type' => $data[9], + 'field_appt_intro_text_custom' => $data[10] . ' for service location ' . $service_location_index + 1, + 'field_use_facility_phone_number' => $data[11], + 'field_online_scheduling_avail' => $data[15], + ]); + $number_of_appointment_phones = $data[12]; + $service_location->field_use_main_facility_phone = $data[23]; + $number_of_contact_phones = $data[24]; + $number_of_contact_emails = $data[27]; + } + else { + // If not, generate random data. + $field_appt_intro_text_type = choose_random_appt_intro_text_type(); + if ($field_appt_intro_text_type === 'customize_text') { + $field_appt_intro_text_custom = 'Random text for service location ' . $service_location_index + 1; + } + else { + $field_appt_intro_text_custom = NULL; + } + $service_location = Paragraph::create([ + 'type' => 'service_location', + 'field_office_visits' => choose_random_office_visit(), + 'field_virtual_support' => choose_random_virtual_support(), + 'field_appt_intro_text_type' => $field_appt_intro_text_type, + 'field_appt_intro_text_custom' => $field_appt_intro_text_custom, + 'field_use_facility_phone_number' => rand(0, 1), + 'field_online_scheduling_avail' => choose_random_online_scheduling_avail_option(), + ]); + $number_of_appointment_phones = rand(0, 9); + $service_location->field_use_main_facility_phone = choose_random_true_false_null(); + $number_of_contact_phones = rand(0, 5); + $number_of_contact_emails = rand(0, 5); + } + + $service_location->save(); + + create_service_location_phone_numbers($service_location, 'field_other_phone_numbers', $number_of_appointment_phones, $data[13], $data[14]); + $service_location->field_service_location_address->appendItem(create_service_location_address_paragraph($data)); + $service_location->field_hours = $data[20]; + $service_location->field_additional_hours_info = $data[22]; + // If "specify hours" is selected, create office hours. + if ($data[20] === '2') { + $service_location->field_office_hours = create_service_location_hours($data[21]); + } + create_service_location_phone_numbers($service_location, 'field_phone', $number_of_contact_phones, $data[25], $data[26]); + create_email_contacts($service_location, 'field_email_contacts', $number_of_contact_emails); + $service_location->save(); + + return $service_location; +} + +/** + * Create phone numbers for a service location. + * + * @param \Drupal\paragraphs\Entity\Paragraph $service_location + * The service location paragraph. + * @param string $paragraph_field + * The paragraph field to which the phone numbers will be appended. + * @param int $number_of_phone_numbers + * The number of phone numbers to create. + * @param string $phone_type + * The type of phone number. (e.g., 'tel', 'fax', 'sms', 'tty') + * @param int $create_extension + * Whether to create an extension for the first phone number. + */ +function create_service_location_phone_numbers($service_location, $paragraph_field, $number_of_phone_numbers, $phone_type, $create_extension) { + // There can be multiple appointment phone numbers for a service location. + // We want to ensure that the first appointment phone number is of the + // desired type and has an extension, as specified in the CSV file. + // The rest of the appointment phone numbers can be of a random type + // with random extensions or no extension. + $phone_numbers = NULL; + for ($i = 0; $i < $number_of_phone_numbers; $i++) { + if ($i === 0) { + $service_location->get($paragraph_field)->appendItem(create_phone_paragraph($i, $phone_type, (bool) $create_extension)); + } + else { + $service_location->get($paragraph_field)->appendItem(create_phone_paragraph($i, choose_random_phone_number_type(), (bool) rand(0, 1))); + } + } + + return $phone_numbers; +} + +/** + * Create a phone paragraph. + * + * @param int $phone_index + * The index of the loop to create multiple phone numbers. + * @param string $phone_type + * The type of phone number. (e.g., 'tel', 'fax', 'sms', 'tty') + * @param bool $add_extension + * Whether to add an extension to the phone number. + */ +function create_phone_paragraph($phone_index, $phone_type, $add_extension = NULL) { + $phone_number = generate_random_phone_number(); + + // We only want an extension when the phone type is 'tel'. + if ($phone_type === 'tel') { + $random_extension = (string) rand(1, 99999); + $add_extension = (is_null($add_extension)) ? rand(0, 1) : $add_extension; + } + else { + $random_extension = NULL; + $add_extension = NULL; + } + $extension = $add_extension ? $random_extension : NULL; + + $phone = Paragraph::create([ + 'type' => 'phone_number', + 'field_phone_number' => $phone_number, + 'field_phone_number_type' => $phone_type, + 'field_phone_extension' => $extension, + 'field_phone_label' => sprintf("Service location phone %d, (%s)", $phone_index + 1, $phone_type), + ]); + $phone->save(); + return $phone; +} + +/** + * Create a service location address paragraph. + * + * @param array $data + * The data from the CSV file. + * + * @return \Drupal\paragraphs\Entity\Paragraph + * The service location address paragraph. + */ +function create_service_location_address_paragraph(array $data) { + $service_location_address = Paragraph::create([ + 'type' => 'service_location_address', + 'field_clinic_name' => $data[16], + 'field_building_name_number' => $data[17], + 'field_wing_floor_or_room_number' => $data[18], + 'field_use_facility_address' => $data[19], + + ]); + if ($data[19] === '0') { + $service_location_address->field_address->setValue([ + 'country_code' => 'US', + 'administrative_area' => 'NE', + 'locality' => 'Omaha', + 'address_line1' => '1010 Dodge Street', + 'address_line2' => rand(0, 1) ? 'Suite 100' : NULL, + 'postal_code' => '68102', + ]); + } + $service_location_address->save(); + + return $service_location_address; +} + +/** + * Create service location hours. + * + * @param string $hours + * The type of hours for a facility. + */ +function create_service_location_hours($hours) { + $office_hours_sets = [ + // Open 8:00 AM - 4:00 PM Monday - Friday, closed on weekends. + 'hours_mf8_4' => [ + [ + // Sunday. + 'day' => 0, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => 'Closed', + ], + [ + // Monday. + 'day' => 1, + 'starthours' => 800, + 'endhours' => 1600, + 'comment' => '', + ], + [ + // Tuesday. + 'day' => 2, + 'starthours' => 800, + 'endhours' => 1600, + 'comment' => '', + ], + [ + // Wednesday. + 'day' => 3, + 'starthours' => 800, + 'endhours' => 1600, + 'comment' => '', + ], + [ + // Thursday. + 'day' => 4, + 'starthours' => 800, + 'endhours' => 1600, + 'comment' => '', + ], + [ + // Friday. + 'day' => 5, + 'starthours' => 800, + 'endhours' => 1600, + 'comment' => '', + ], + [ + // Saturday. + 'day' => 6, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => 'Closed', + ], + ], + // Open 24/7, per the comments. + 'hours_24_7' => [ + [ + // Sunday. + 'day' => 0, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => '24/7', + ], + [ + // Monday. + 'day' => 1, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => '24/7', + ], + [ + // Tuesday. + 'day' => 2, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => '24/7', + ], + [ + // Wednesday. + 'day' => 3, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => '24/7', + ], + [ + // Thursday. + 'day' => 4, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => '24/7', + ], + [ + // Friday. + 'day' => 5, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => '24/7', + ], + [ + // Saturday. + 'day' => 6, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => '24/7', + ], + ], + // Open 12:00 AM - 12:00 AM every day. + 'hours_12a_12a' => [ + [ + // Sunday. + 'day' => 0, + 'starthours' => 0, + 'endhours' => 2400, + 'comment' => '', + ], + [ + // Monday. + 'day' => 1, + 'starthours' => 0, + 'endhours' => 2400, + 'comment' => '', + ], + [ + // Tuesday. + 'day' => 2, + 'starthours' => 0, + 'endhours' => 2400, + 'comment' => '', + ], + [ + // Wednesday. + 'day' => 3, + 'starthours' => 0, + 'endhours' => 2400, + 'comment' => '', + ], + [ + // Thursday. + 'day' => 4, + 'starthours' => 0, + 'endhours' => 2400, + 'comment' => '', + ], + [ + // Friday. + 'day' => 5, + 'starthours' => 0, + 'endhours' => 2400, + 'comment' => '', + ], + [ + // Saturday. + 'day' => 6, + 'starthours' => 0, + 'endhours' => 2400, + 'comment' => '', + ], + ], + // Closed every day. + 'hours_closed' => [ + [ + // Sunday. + 'day' => 0, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => 'Closed', + ], + [ + // Monday. + 'day' => 1, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => 'Closed', + ], + [ + // Tuesday. + 'day' => 2, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => 'Closed', + ], + [ + // Wednesday. + 'day' => 3, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => 'Closed', + ], + [ + // Thursday. + 'day' => 4, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => 'Closed', + ], + [ + // Friday. + 'day' => 5, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => 'Closed', + ], + [ + // Saturday. + 'day' => 6, + 'starthours' => NULL, + 'endhours' => NULL, + 'comment' => 'Closed', + ], + ], + ]; + $service_location_hours = $office_hours_sets[$hours]; + + return $service_location_hours; +} + +/** + * Create email contacts for a service location. + * + * @param \Drupal\paragraphs\Entity\Paragraph $service_location + * The service location paragraph. + * @param string $paragraph_field + * The paragraph field to which the email contacts will be appended. + * @param int $number_of_email_addresses + * The number of email addresses to create. + */ +function create_email_contacts($service_location, $paragraph_field, $number_of_email_addresses) { + for ($i = 0; $i < $number_of_email_addresses; $i++) { + $service_location->get($paragraph_field)->appendItem(create_email_paragraph($i)); + } +} + +/** + * Create an email paragraph. + * + * @param int $email_index + * The index of the loop to create multiple email addresses. + * + * @return \Drupal\paragraphs\Entity\Paragraph + * The email paragraph. + */ +function create_email_paragraph($email_index) { + $email_address = 'service_location_contact' . $email_index + 1 . '@example.com'; + $email = Paragraph::create([ + 'type' => 'email_contact', + 'field_email_address' => $email_address, + 'field_email_label' => 'Email ' . $email_index + 1, + ]); + return $email; +} + +/** + * Randomly choose a true, false, or null value. + * + * @return string + * The true, false, or null value. + */ +function choose_random_true_false_null() { + $true_false_null = [ + '1', + '0', + NULL, + ]; + $random_true_false_null = $true_false_null[array_rand($true_false_null)]; + return $random_true_false_null; + +} + +/** + * Randomly choose whether online scheduling is available. + * + * @return string + * The online scheduling availability choice. + */ +function choose_random_online_scheduling_avail_option() { + $online_scheduling_avail_options = [ + 'yes', + 'no', + NULL, + ]; + $random_online_scheduling_avail_option = $online_scheduling_avail_options[array_rand($online_scheduling_avail_options)]; + return $random_online_scheduling_avail_option; +} + +/** + * Randomly choose an office visit option. + * + * @return string + * The office visit option. + */ +function choose_random_office_visit() { + $office_visits_options = [ + 'no', + 'yes_appointment_only', + 'yes_walk_in_visits_only', + 'yes_with_or_without_appointment', + NULL, + ]; + $random_office_visit = $office_visits_options[array_rand($office_visits_options)]; + return $random_office_visit; +} + +/** + * Randomly choose a virtual support option. + * + * @return string + * The virtual support option. + */ +function choose_random_virtual_support() { + $virtual_support_options = [ + 'no', + 'yes_appointment_only', + 'yes_veterans_can_call', + 'virtual_visits_may_be_available', + NULL, + ]; + $random_virtual_support = $virtual_support_options[array_rand($virtual_support_options)]; + return $random_virtual_support; +} + +/** + * Randomly choose an introduction text type. + * + * @return string + * The appointment introduction text type. + */ +function choose_random_appt_intro_text_type() { + $appt_intro_text_type_options = [ + 'use_default_text', + 'customize_text', + 'remove_text', + NULL, + ]; + $random_appt_intro_text_type = $appt_intro_text_type_options[array_rand($appt_intro_text_type_options)]; + return $random_appt_intro_text_type; + +} + +/** + * Randomly choose a phone number type. + * + * @return string + * The phone number type. + */ +function choose_random_phone_number_type() { + $phone_number_types = [ + 'tel', + 'fax', + 'sms', + 'tty', + ]; + $random_phone_number_type = $phone_number_types[array_rand($phone_number_types)]; + return $random_phone_number_type; +} + +/** + * Generate a random phone number. + * + * @return string + * A phone number. + */ +function generate_random_phone_number() { + $area_code = rand(200, 989); + $prefix = rand(100, 999); + $line_number = rand(1000, 9999); + $phone_number = sprintf("%03d-%03d-%04d", $area_code, $prefix, $line_number); + return $phone_number; +} + +/** + * Add prepare for your visit to facility. + * + * @param \Drupal\node\Entity\Node $node + * The facility node. + * @param int $number_of_accordions + * The number of accordions to add. + */ +function add_prepare_for_your_visit_to_facility($node, $number_of_accordions) { + for ($i = 0; $i < $number_of_accordions; $i++) { + $prepare_for_your_visit_new = Paragraph::create([ + 'type' => 'basic_accordion', + 'field_header' => 'Prepare for your visit ' . $i + 1, + + 'field_rich_wysiwyg' => [ + 'value' => 'Prepare for your visit body ' . $i + 1, + 'format' => 'rich_text_limited', + ], + ]); + $prepare_for_your_visit_new->save(); + $node->field_prepare_for_visit->appendItem($prepare_for_your_visit_new); + } + $node->save(); +} + +/** + * Add media to facility. + * + * @param \Drupal\node\Entity\Node $node + * The facility node. + * @param int $media_id + * The media node to add. + */ +function add_media_to_facility($node, $media_id) { + // Load the media entity. + $media = Media::load($media_id); + // Check if the media entity exists and is an image. + if ($media && $media->bundle() == 'image') { + // Append the media entity to the field. + $media = \Drupal::entityTypeManager()->getStorage('media')->load($media_id); + $node->field_media->appendItem($media); + $node->save(); + } +} + +/** + * Add spotlights to facility. + * + * @param \Drupal\node\Entity\Node $node + * The facility node. + * @param int $number_of_spotlights + * The number of spotlights to add. + * @param bool $use_cta + * Whether to add a CTA to the spotlight. + */ +function add_spotlights_to_facility($node, $number_of_spotlights, $use_cta) { + for ($i = 0; $i < $number_of_spotlights; $i++) { + if ($use_cta) { + $cta = Paragraph::create([ + 'type' => 'button', + 'field_button_link' => 'https://www.google.com', + 'field_button_label' => 'Spotlight CTA ' . $i + 1, + ]); + $cta->save(); + } + else { + $cta = NULL; + } + $spotlight = Paragraph::create([ + 'type' => 'featured_content', + 'field_section_header' => 'Spotlight title ' . $i + 1, + 'field_description' => 'Spotlight body ' . $i + 1, + ]); + + $spotlight->field_cta->appendItem($cta); + $spotlight->save(); + $node->field_local_spotlight->appendItem($spotlight); + $node->save(); + } +} diff --git a/scripts/content/vacms-17969/VACMS-17969-vba-test-data-source-facilities.csv b/scripts/content/vacms-17969/VACMS-17969-vba-test-data-source-facilities.csv new file mode 100644 index 0000000000..a5c75c2868 --- /dev/null +++ b/scripts/content/vacms-17969/VACMS-17969-vba-test-data-source-facilities.csv @@ -0,0 +1,7 @@ +Facility name,facility_nid,field_show_banner,field_alert_type,field_dismissible_option,field_banner_title,field_banner_content,field_operating_status_facility,field_operating_status_more_info,field_prepare_for_visit (accordion),field_header,field_rich_wysiwyg,field_media (id),field_local_spotlight (featured_content),field_section_header,field_description,field_cta (button),field_button_link,field_button_label +VA Regional Benefit Satellite Office at Thomas E. Creek Department of Veterans Affairs Medical Center,4247,,,,,,NULL,,0,,,,0,,,,, +VA Regional Benefit Satellite Office at Athens VA Clinic,48915,1,information,dismiss,Banner alert headline (also known as field_banner_title) for the VBA satellite office at Athens VA Clinic,"President Lincoln's words have stood the test of time, and stand today as a solemn reminder of VA’s commitment to care for those injured in our nation's defense and the families of those killed in its service. On March 16, 2023, VA announced an updated version of its 1959 mission statement.",normal,,0,,,,0,,,,, +Pre-Discharge Site at Fort Walker,42628,0,,,,,notice,Be advised: the Fort's been swarmed by walkers.,1,,,33234,1,,,1,, +Oakland VA Regional Benefit Office,4177,0,,,,,limited,We have a lot going on right now. We will be available on a limited based.,2,,,,2,,,0,, +Reno VA Regional Benefit Office,4286,1,warning,perm,Banner alert headline (also known as field_banner_title) for the VBA Regional office in Reno,"The new mission statement acknowledges all who have served in our nation’s military, as well as Veteran families, caregivers, and survivors. VA serves more than 50,000 Veteran caregivers and more than 600,000 Veteran survivors. Additionally, VA serves more than 600,000 women Veterans, the fastest growing cohort of Veterans.",closed,The office is temporary closed due to a strain of the fireplace flu. We will let you know when the smoke clears.,3,,,29430,2,,,2,, +Philadelphia VA Regional Benefit Office,3968,0,,,,,normal,,1,,,26862,1,,,1,, diff --git a/scripts/content/vacms-17969/VACMS-17969-vba-test-data-source-service-regions.csv b/scripts/content/vacms-17969/VACMS-17969-vba-test-data-source-service-regions.csv new file mode 100644 index 0000000000..923785c35a --- /dev/null +++ b/scripts/content/vacms-17969/VACMS-17969-vba-test-data-source-service-regions.csv @@ -0,0 +1,3 @@ +VA Service name,VA service (field_service_name_and_descripti) tid,Section name,Section (field_administration) tid,VBA facilities in this region,(field_vba_region_facility_list),Number of service locations,field_office_visits,field_virtual_support,field_appt_intro_text_type,field_appt_intro_text_custom,field_use_facility_phone_number,# of add'l phones (field_other_phone_numbers),field_phone_number_type,Create an extention for field_phone_extension,field_online_scheduling_avail,field_clinic_name,field_building_name_number,field_wing_floor_or_room_number,field_use_facility_address,field_hours (facility hours = 0; specific hours = 2; do not specify = 0),field_office_hours (case statement),field_additional_hours_info,field_use_main_facility_phone,# of phone (field_phone),type ,Create an extension for field_phone_extension,# of field_email_contacts,Service region name (title),Primary VBA facility,Primary VBA facility target nid +Home loans,1131,Philadelphia VA Regional Benefit Office,1057,"Philadelphia VA Regional Benefit Office, Oakland VA Regional Benefit Office","3968,4177",1,null,virtual_visits_may_be_available,null,,0,1,tel,1,yes,Office of Home Loans,,,0,0,,,null,3,tel,1,2,Philadelphia home loan service region,Philadelphia VA Regional Benefit Office,3968 +Veterans pension,1130,Reno VA Regional Benefit Office,1092,"Reno VA Regional Benefit Office, Pre-Discharge Site at Fort Walker","4286,42628",2,yes_walk_in_visits_only,no,use_default_text,,1,8,tty,0,yes,Office of Home Loans,Home loans buiding,Room 3,1,1,,,0,1,tel,1,3,Reno Veterans pension service region,Reno VA Regional Benefit Office,4286 diff --git a/scripts/content/vacms-17969/VACMS-17969-vba-test-data-source-services.csv b/scripts/content/vacms-17969/VACMS-17969-vba-test-data-source-services.csv new file mode 100644 index 0000000000..d15f0030e9 --- /dev/null +++ b/scripts/content/vacms-17969/VACMS-17969-vba-test-data-source-services.csv @@ -0,0 +1,19 @@ +Facility (field_office),facility_nid,Section,section_tid,Service Name,service_tid,Number of service locations (field_service_location),field_office_visits,field_virtual_support,field_appt_intro_text_type,field_appt_intro_text_custom,field_use_facility_phone_number,# of add'l phones (field_other_phone_numbers),field_phone_number_type,Create an extention for field_phone_extension,field_online_scheduling_avail,field_clinic_name,field_building_name_number,field_wing_floor_or_room_number,field_use_facility_address,field_hours (facility hours = 0; specific hours = 2; do not specify = 1),field_office_hours (case statement),field_additional_hours_info,field_use_main_facility_phone,# of phone (field_phone),type ,Create an extension for field_phone_extension,# of field_email_contacts +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Benefit letters and decision letters,1142,1,null,no,use_default_text,,1,0,tel,0,yes,,,,1,0,,,0,1,tel,1,0 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Burials and memorials,1143,2,no,yes_appointment_only,customize_text,Test text,0,1,tel,1,no,Office of Burials and Memorials,,,0,2,hours_24_7,,1,2,tel,0,1 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Careers and employment,1169,3,yes_appointment_only,yes_veterans_can_call,remove_text,,null,2,tel,0,null,,Careers building,,1,1,,,null,3,fax,1,2 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Direct deposit information,1170,1,yes_walk_in_visits_only,virtual_visits_may_be_available,null,,null,3,fax,0,null,,,West wing,0,0,,Come by any time.,1,4,sms,0,3 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Disability compensation,1144,2,yes_with_or_without_appointment,null,use_default_text,,0,4,sms,0,no,,Disability compensation building,1st floor,0,2,hours_mf8_4,After hours available by appointment.,1,5,tty,0,4 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Education benefits for family members,1145,3,null,yes_appointment_only,customize_text,Test text,1,5,fax,0,yes,,,,1,1,,,null,0,null,null,5 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Education benefits for Veterans,1146,1,no,yes_veterans_can_call,remove_text,,0,6,tel,0,no,Office of Education Benefits,Education building,Room 123,0,0,,Operators are standing by 24/7.,0,0,null,null,1 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Grief and bereavement counseling,1006,2,yes_appointment_only,virtual_visits_may_be_available,null,,null,7,sms,0,null,,,,1,2,hours_12a_12a,,1,3,tel,1,2 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Home loans,1131,3,yes_walk_in_visits_only,no,use_default_text,,1,8,tty,0,yes,Office of Home Loans,,,1,1,,,0,1,tel,1,3 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Homeless Veteran care,39,1,yes_with_or_without_appointment,null,customize_text,Test text,null,9,tel,1,yes,,Homeless Veteran care building,,0,0,,,1,2,tel,0,4 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Life Insurance,1147,2,null,yes_veterans_can_call,remove_text,,1,0,sms,0,yes,,,East wing,1,2,hours_closed,Come by any time.,null,3,tel,1,5 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Military records,1148,3,no,virtual_visits_may_be_available,null,,0,1,tty,0,no,,Military records building,Sub-bassement B,0,1,,After hours available by appointment.,0,4,sms,0,0 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Military sexual trauma-related claims,1171,1,yes_appointment_only,no,use_default_text,,0,2,tel,0,null,,,,0,0,,,0,5,fax,0,5 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Pre-discharge claims,1172,2,yes_walk_in_visits_only,yes_appointment_only,customize_text,Test text,1,0,tty,0,null,Office of Pre-discharge claims,Pre-discharge claims building,Room 321,1,2,hours_mf8_4,Operators are standing by 24/7.,1,1,tel,1,4 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Returning service member care,55,3,yes_with_or_without_appointment,yes_veterans_can_call,remove_text,,null,0,fax,0,no,,,,1,1,,,0,2,tel,0,3 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Veteran readiness and employment programs,94,1,null,virtual_visits_may_be_available,null,,0,1,tel,1,yes,Office of VRE,,,0,0,,,null,3,tel,1,2 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,Veterans pension,1130,2,no,no,use_default_text,,null,1,fax,0,no,,Pension building,,0,2,hours_mf8_4,,1,4,sms,0,1 +Philadelphia VA Regional Benefit Office,3968,Philadelphia VA Regional Benefit Office,1057,VetSuccess on Campus,1173,3,yes_appointment_only,yes_appointment_only,customize_text,Test text,1,0,tel,1,null,,,North wing,1,1,,Come by any time.,0,5,tty,0,0