An example of a system for controlling delivery of neurostimulation from a stimulation device to a patient according to a selected neurostimulation program may include a programming device. The programming device may be configured to be communicatively coupled to the stimulation device and to select the neurostimulation program. The programing device may include a user interface and a program selection circuit. The program selection circuit may be configured to receive life factor information indicative of at least one of an environmental factor and a biopsychosocial factor of the patient, to select the neurostimulation program from a plurality of neurostimulation programs based on the received life factor information, to present a recommendation using the user interface based on the selected neurostimulation program, and to receive a user command responding to the recommendation using the user interface.