Hiding options in a multichoice question

Hi, everyone.

In my application, I have a visit form which a CHW has to fill seven times, i.e, the chw has to make seven home visits. I have a hidden value that counts the number of visits.

The problem I have has to do with following situation:
I have a multichoice question with seven options below. These are the topics to be discussed during visits. The chw has to select a topic according to the number of a visit. If the number of visit is 1, they have to select topic 1; if the number of visit is 2, they have to select topic 2, etc.
I would like to configure this question so that if the chw select topic 1 during visit 1, this option is shown during visit 2; if they selected topic 2, options 1 and 2 are not shown during visit 3 and so on. Is this possible on commcare? If this is not possible, how can configure this question so that the chw is show which option she/he selected in the previous visit so that she/he does not select the same option as each topic is for each visit?

  1. Sexual behavior
  2. Adherence to Antiretroviral Therapy
  3. Sexually transmitted infections
  4. Family Planning and Prevention of mother-to-child transmission
  5. Alcohol consumption and drug use
  6. Referrals to community support services
  7. HIV status disclosure and testing among sexual partners

Hi,

You can set up a question like this using case properties to keep track of previous selections, and Lookup Tables with Filtered Choices based on those case properties.

-Clayton

Hi, Clayton.

I have read the page 'Lookup Tables with Filtered Choices' and the information there is clear, but I still don not understand this part: You can set up a question like this using case properties to keep track of previous selections

Do you mean saving the question as a case property? how can I configure the link between case properties and the lookup table? Can you describe the steps I have to follow??

Iam interested in knowing how to accomplish the above mentioned question.

You can save an ongoing space separated list of choices the user has made into a case property, load that property back into the form each time, then use an expression like

not(selected(#form/previously_selected_choices, table_value))

as the lookup table filter, which would exclude the choices the user has chosen previously.

-Clayton

Hi @Clayton_Sims.

I have difficulty in getting things work.

Maybe I haven't made a clear description of my problem.

In my form, I have a multichoice question " psycho-social counselling" with the following options:

  1. Sexual behavior
  2. Adherence to Antiretroviral Therapy
  3. Sexually transmitted infections
  4. Family Planning and Prevention of mother-to-child transmission
  5. Alcohol consumption and drug use
  6. Referrals to community support services
  7. HIV status disclosure and testing among sexual partners

I have a hidden value num_visits that counts the number of visits.(the same form is completed seven times == 7 visits)
As the number of visits progresses, I want the options selected in the previous visits hidden as the example below.

visit 1

  1. Sexual behavior
  2. Adherence to Antiretroviral Therapy
  3. Sexually transmitted infections
  4. Family Planning and Prevention of mother-to-child transmission
  5. Alcohol consumption and drug use
  6. Referrals to community support services
  7. HIV status disclosure and testing among sexual partners

visit 2

  1. Adherence to Antiretroviral Therapy
  2. Sexually transmitted infections
  3. Family Planning and Prevention of mother-to-child transmission
  4. Alcohol consumption and drug use
  5. Referrals to community support services
  6. HIV status disclosure and testing among sexual partners

visit 3

  1. Sexually transmitted infections
  2. Family Planning and Prevention of mother-to-child transmission
  3. Alcohol consumption and drug use
  4. Referrals to community support services
  5. HIV status disclosure and testing among sexual partners

visit 4

  1. Family Planning and Prevention of mother-to-child transmission
  2. Alcohol consumption and drug use
  3. Referrals to community support services
  4. HIV status disclosure and testing among sexual partners

visit 5

  1. Alcohol consumption and drug use
  2. Referrals to community support services
  3. HIV status disclosure and testing among sexual partners

visit 6

  1. Referrals to community support services
  2. HIV status disclosure and testing among sexual partners

visit 7

  1. HIV status disclosure and testing among sexual partners

I haven't yet been able to accomplish this. Thak you for your patience in helping me.

Hi,

so if the mobile worker can select any of the options in visit 1, and then have that option not appear in visit 2, what Clayton described should do the trick without any changes.

But i think what you're saying is that you want visit 1 to be about topic 1, visit 2 to be about topic 2, etc...

i suggest the following:

in your lookup table that you are using as a source for your multiple choices (it would be a small table with only 7 rows of data), you can add a column for "visit number".

you can then filter the options in the multiple choice question by saying "visit_number = /data/visit_number" or whatever you end up naming your column/question id in your application.

basically, this will only show option 1 for visit 1, option 2 for visit 2, etc...

the point here that is confusing is that you are showing all the options to us at once. that's not what you want to do, you're trying to show only the relevant option based on the visit number.

if you are expecting users to sometimes need to change data that was already submitted, this approach will cause problems unless you create child cases that you can follow up on for each visit.

Hope this helps

Mazz

1 Like