How to bundle patient-provided context that's received at same time as a standard value?

When a patient steps on a scale, their weight is recorded. At the same time, the patient might select a button stating they were “binge eating” that day or that they “missed their water pill”. There are only a handful of options for the patient to choose from when providing this additional context. Those handful of options won’t change:
-so is there a way aside from free text to exchange that data? can we create our own value set with those handful of options?
-if the patient is stepping on the scale each day, it’s important to tie the patient-derived context to the weight from that date/time. How is that bundling done?

Sounds like a component of the observation to me

<Observation>
  <code loinc code for weight - see http://www.healthintersections.com.au/?p=2487 />
  <valueQuantity  80kg />
 <component>
   <code your code for patient context question />
   <valueCodeableConcept  you code for their answer here />
 <component>
</Observation>