Skip to content

enroll_driver

Status: Implemented | Module: enrollment

Enroll a driver for mileage reimbursement. For self enrollment the member is the driver; for friend_or_family a third party drives the member. Requires full driver info: name, phone, DOB (must be 18+), full address, and driver-license details. The enrollment starts in pending status — admin approval is required before reimbursement. Call AFTER verify_member and BEFORE setup_payee.

Hint Value
readOnlyHint false
destructiveHint false
idempotentHint true
Field Type Required Description
session_id string yes Active session ID from verify_member
enrollment_type string yes self or friend_or_family
transportation_provider_id string no Org’s mileage reimbursement TP UUID (admin can backfill)
first_name string yes Driver first name
last_name string yes Driver last name
middle_name string no Driver middle name
phone string yes Driver phone, any format (normalized to E.164)
email string no Driver email
dob string yes Date of birth (MM/DD/YYYY or YYYY-MM-DD). Must be 18+.
address_line_1 string yes Street address line 1
address_line_2 string no Apartment, suite, or unit
address_city string yes City
address_state string yes 2-letter code or full name (normalized to 2-letter)
address_postal_code string yes ZIP/postal code
license_number string yes Driver license number
license_state string yes Issuing state (2-letter or full name)
license_expiration string yes Expiration date (MM/DD/YYYY or YYYY-MM-DD). Must be today or later.
Field Type Description
status string success or error
enrollment_id string Enrollment UUID
driver_id string TP driver UUID (generated on create)
first_name string Echoed
last_name string Echoed
phone string Normalized digits
enrollment_type string Echoed
transportation_provider_id string Echoed
enrollment_status string pending on create; existing status on idempotent match
idempotent bool True when matched an existing enrollment
message string Human summary
guidance Guidance Suggests setup_payee next
  • Driver must be at least 18 years old (DOB + 18 years ≤ current date).
  • License must not be expired (expiration date ≥ today, UTC-anchored midnight).
  • Invalid/unparseable DOB or license expiration returns an INVALID_DATE error.
  • Loads session; requires lob_id and member_id from verification.
  • Inserts a row via the enrollment repository (Create), keyed by a new UUID.
  • Emits a HIPAA audit entry mcp.enroll_driver with action (created / idempotent) and fields_set (deterministic comma-separated list of FIELD NAMES — never values).
  • Error logs redact PII; only session_id is correlated.

Sensitive fields (name, DOB, license, phone, email) are stored in the enrollment row but never written to logs or audit metadata. The audit trail captures only which fields were supplied.

  • Source: internal/app/enrollment/usecases/enroll_driver.go, internal/app/enrollment/register.go
  • Prerequisite: verify_member
  • Next: setup_payee