Skip to content

Instantly share code, notes, and snippets.

@amponce
Created August 19, 2025 20:26
Show Gist options
  • Save amponce/7e2ce3e0ac4be8ba5d05015834054dbf to your computer and use it in GitHub Desktop.
Save amponce/7e2ce3e0ac4be8ba5d05015834054dbf to your computer and use it in GitHub Desktop.
VA Form 21P-534EZ

Form Digitization Instructions for VA Form 21P-534EZ

Overview

These instructions specify how to digitize VA Form 21P-534EZ (Application for DIC, Survivors Pension, and/or Accrued Benefits) following VA Design System (VADS) patterns and accessibility standards.

Form Structure

Form Flow

1. Landing Page (How to Apply)
2. Introduction Page
3. Form Steps (One thing per page pattern)
   - Section I: Veteran's Identification
   - Section II: Claimant's Identification
   - Section III: Veteran's Service Information
   - Section IV: Marital Information
   - Section V: Marital History
   - Section VI: Child Information
   - Section VII: D.I.C.
   - Section VIII: Nursing Home/Special Monthly
   - Section IX: Income and Assets
   - Section X: Medical Expenses
   - Section XI: Direct Deposit
   - Section XII: Certification
4. Review Page
5. Confirmation Page

One Thing Per Page Implementation

Break sections into logical pages:

  • Each major question gets its own page
  • Related fields can be grouped (e.g., full name fields)
  • Complex sections split into multiple pages
  • Conditional logic determines page flow

Component Specifications

Section I: Veteran's Identification Information

Field 1A - Veteran's Name

{
  component: "va-text-input",
  props: {
    label: "Veteran's full name",
    name: "veteranFullName",
    required: true,
    hint: "Enter first, middle, and last name"
  }
}

Field 1B - Veteran's Social Security Number

{
  component: "va-text-input",
  props: {
    label: "Veteran's Social Security number",
    name: "veteranSSN",
    required: true,
    pattern: "[0-9]{3}-[0-9]{2}-[0-9]{4}",
    hint: "Format: XXX-XX-XXXX"
  }
}

Field 1C - Veteran's Date of Birth

{
  component: "va-date-input",
  props: {
    label: "Veteran's date of birth",
    name: "veteranDOB",
    required: true
  }
}

Field 1D - Has veteran, surviving spouse, child, or parent ever filed a claim with VA?

{
  component: "va-radio",
  props: {
    label: "Has the veteran, surviving spouse, child, or parent ever filed a claim with VA?",
    name: "previousClaim",
    options: [
      { label: "Yes", value: "yes" },
      { label: "No", value: "no" }
    ],
    required: true
  }
}

Field 1E - VA File Number (Conditional)

{
  component: "va-text-input",
  props: {
    label: "VA file number",
    name: "vaFileNumber",
    required: false,
    showIf: "previousClaim === 'yes'",
    hint: "If known"
  }
}

Field 1F - Did the veteran die while on active duty?

{
  component: "va-radio",
  props: {
    label: "Did the veteran die while on active duty?",
    name: "diedOnActiveDuty",
    options: [
      { label: "Yes", value: "yes" },
      { label: "No", value: "no" }
    ],
    required: true
  }
}

Field 1G - Veteran's Service Number

{
  component: "va-text-input",
  props: {
    label: "Veteran's service number",
    name: "veteranServiceNumber",
    required: false
  }
}

Field 1H - Veteran's Date of Death

{
  component: "va-date-input",
  props: {
    label: "Veteran's date of death",
    name: "veteranDeathDate",
    required: true
  }
}

Section II: Claimant's Identification Information

Field 2A - Your Name

{
  component: "va-text-input",
  props: {
    label: "Your full name",
    name: "claimantFullName",
    required: true,
    hint: "Enter first, middle, and last name"
  }
}

Field 2B - Relationship to Veteran

{
  component: "va-radio",
  props: {
    label: "What is your relationship to the veteran?",
    name: "relationshipToVeteran",
    options: [
      { label: "Surviving spouse", value: "survivingSpouse" },
      { label: "Child 18-23 in school", value: "childInSchool" },
      { label: "Custodian filing for child under 18", value: "custodian" },
      { label: "Helpless adult child", value: "helplessAdultChild" }
    ],
    required: true
  }
}

Field 2C - Your Social Security Number

{
  component: "va-text-input",
  props: {
    label: "Your Social Security number",
    name: "claimantSSN",
    required: true,
    pattern: "[0-9]{3}-[0-9]{2}-[0-9]{4}",
    hint: "Format: XXX-XX-XXXX"
  }
}

Field 2D - Your Date of Birth

{
  component: "va-date-input",
  props: {
    label: "Your date of birth",
    name: "claimantDOB",
    required: true
  }
}

Field 2E - Are you a veteran?

{
  component: "va-radio",
  props: {
    label: "Are you a veteran?",
    name: "claimantIsVeteran",
    options: [
      { label: "Yes", value: "yes" },
      { label: "No", value: "no" }
    ],
    required: true
  }
}

Field 2F - Mailing Address

{
  pattern: "address",
  props: {
    label: "Your mailing address",
    name: "claimantAddress",
    required: true,
    showCountry: true,
    showMilitaryStates: true
  }
}

Field 2G - Phone Number

{
  component: "va-telephone-input",
  props: {
    label: "Your phone number",
    name: "claimantPhone",
    required: true
  }
}

Field 2H - Email Address

{
  component: "va-text-input",
  props: {
    label: "Your email address",
    name: "claimantEmail",
    type: "email",
    required: false,
    hint: "Optional"
  }
}

Field 2I - What are you claiming?

{
  component: "va-checkbox-group",
  props: {
    label: "What are you claiming? (Check all that apply)",
    name: "benefitsClaimed",
    options: [
      { label: "Dependency and Indemnity Compensation (D.I.C.)", value: "dic" },
      { label: "Survivors Pension", value: "survivorsPension" },
      { label: "Accrued Benefits", value: "accruedBenefits" }
    ],
    required: true
  }
}

Section III: Veteran's Service Information

Field 3A - Did the veteran serve under another name?

{
  component: "va-radio",
  props: {
    label: "Did the veteran serve under another name?",
    name: "servedUnderAnotherName",
    options: [
      { label: "Yes", value: "yes" },
      { label: "No", value: "no" }
    ],
    required: true
  }
}

Other Names (Conditional)

{
  component: "va-text-input",
  props: {
    label: "List other names the veteran served under",
    name: "otherServiceNames",
    required: true,
    showIf: "servedUnderAnotherName === 'yes'",
    hint: "Enter first, middle, and last name"
  }
}

Field 3B - Date Veteran Entered Active Duty

{
  component: "va-date-input",
  props: {
    label: "Date veteran entered active duty",
    name: "activeServiceStartDate",
    required: true
  }
}

Field 3C - Date Veteran Released from Active Duty

{
  component: "va-date-input",
  props: {
    label: "Date veteran released from active duty",
    name: "activeServiceEndDate",
    required: true
  }
}

Field 3D - Branch of Service

{
  component: "va-select",
  props: {
    label: "Branch of service",
    name: "branchOfService",
    options: [
      { label: "-- Select --", value: "" },
      { label: "Army", value: "army" },
      { label: "Navy", value: "navy" },
      { label: "Air Force", value: "airForce" },
      { label: "Marine Corps", value: "marineCorps" },
      { label: "Coast Guard", value: "coastGuard" },
      { label: "Space Force", value: "spaceForce" },
      { label: "NOAA", value: "noaa" },
      { label: "USPHS", value: "usphs" }
    ],
    required: true
  }
}

Section IV: Marital Information (Conditional - Show if claiming as surviving spouse)

Field 4A - Were you aware of any reason the marriage might not be legally valid?

{
  component: "va-radio",
  props: {
    label: "At the time of your marriage to the veteran, were you aware of any reason the marriage might not be legally valid?",
    name: "marriageValidityConcerns",
    options: [
      { label: "Yes", value: "yes" },
      { label: "No", value: "no" }
    ],
    required: true,
    showIf: "relationshipToVeteran === 'survivingSpouse'"
  }
}

Explanation (Conditional)

{
  component: "va-textarea",
  props: {
    label: "Please explain",
    name: "marriageValidityExplanation",
    required: true,
    showIf: "marriageValidityConcerns === 'yes'",
    maxlength: 500
  }
}

Section IX: Income and Assets (Conditional - Show if claiming Survivors Pension)

Field 9A - Do you or your dependents have over $25,000 in assets?

{
  component: "va-radio",
  props: {
    label: "Do you or your dependents have over $25,000.00 in assets (not including the value of your primary residence)?",
    name: "assetsOver25k",
    options: [
      { label: "Yes", value: "yes" },
      { label: "No", value: "no" }
    ],
    required: true,
    showIf: "benefitsClaimed.includes('survivorsPension')",
    hint: "Assets are all the money and property you or your dependents own. Assets do not include your/your family's primary residence or personal effects such as appliances and vehicles you or your dependents need for transportation."
  }
}

Section XI: Direct Deposit Information

Field 11A - Financial Institution Name

{
  component: "va-text-input",
  props: {
    label: "Name of financial institution",
    name: "bankName",
    required: true,
    hint: "Please provide the name of the bank where you want your direct deposit"
  }
}

Field 11B - Routing Number

{
  component: "va-text-input",
  props: {
    label: "Routing or transit number",
    name: "routingNumber",
    required: true,
    pattern: "[0-9]{9}",
    hint: "The first nine numbers located at the bottom left of your check"
  }
}

Field 11C - Account Type and Number

{
  component: "va-radio",
  props: {
    label: "Account type",
    name: "accountType",
    options: [
      { label: "Checking", value: "checking" },
      { label: "Savings", value: "savings" }
    ],
    required: true
  }
}
{
  component: "va-text-input",
  props: {
    label: "Account number",
    name: "accountNumber",
    required: true
  }
}

Section XII: Certification and Signature

Privacy Agreement

{
  component: "va-privacy-agreement",
  props: {
    showError: false,
    checked: false
  }
}

Statement of Truth

{
  pattern: "statement-of-truth",
  props: {
    label: "I certify that the statements in this document are true and complete to the best of my knowledge."
  }
}

Navigation Components

Continue/Back Buttons

{
  component: "va-button-pair",
  props: {
    continue: {
      label: "Continue",
      primary: true
    },
    back: {
      label: "Back",
      secondary: true
    }
  }
}

Progress Bar

{
  component: "va-progress-bar-segmented",
  props: {
    current: "[current step]",
    total: 14,
    label: "Step [X] of 14: [Section Name]"
  }
}

Validation Rules

Required Fields

  • All fields marked with required: true
  • Death certificate upload (if veteran didn't die on active duty)
  • Income/asset information (if claiming pension)
  • Medical expense documentation (if claiming expenses)

Format Validation

  • SSN: XXX-XX-XXXX
  • Phone: (XXX) XXX-XXXX
  • Dates: MM/DD/YYYY
  • Currency: $X,XXX.XX
  • Routing number: 9 digits

Conditional Logic

  • Show marital sections only for surviving spouse
  • Show income sections only for pension claims
  • Show child sections based on dependent claims
  • Show expense worksheets when expenses claimed

Error Messages

Field-Specific Errors

  • "Please enter the veteran's full name"
  • "Please enter a valid Social Security Number (XXX-XX-XXXX)"
  • "Please select your relationship to the veteran"
  • "Please enter a valid date (MM/DD/YYYY)"
  • "Please select at least one benefit type"

Accessibility Requirements

  • All fields must have descriptive labels
  • Required fields marked with asterisk and required attribute
  • Error messages associated with fields using aria-describedby
  • Fieldsets for grouped radio buttons and checkboxes
  • Focus management between form pages
  • Screen reader announcements for progress

Review Page Configuration

Generate summary cards for each section:

{
  component: "va-summary-box",
  props: {
    heading: "[Section Name]",
    editLink: "/form/[section-path]",
    content: {
      // Display field labels and entered values
    }
  }
}

Submission Components

Submit Button

{
  component: "va-button",
  props: {
    text: "Submit application",
    primary: true,
    submit: true
  }
}

Data Persistence

Autosave

{
  component: "va-autosave",
  props: {
    frequency: 30,
    message: "Your application has been saved."
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment