docassemble icon indicating copy to clipboard operation
docassemble copied to clipboard

Ordering of Optional questions

Open andrewcbw35 opened this issue 4 years ago • 3 comments

Hi,

I am fairly new to docassemble and I have been trying to work out a way ask some questions which are deemed optional in a decision tree kind of manner.

Say I ask Question A. If the user answers Yes, it will proceed to ask Question B. If the user again answers Yes, it then asks Question C before it goes on to ask Question D. If Question A gets a No, it will just skip B and C for D. If B gets a No, it will then skip to D.

Is there a way to do this in docassemble? I tried events but events are only for giving an end and not for asking questions. I have looked through the interview logic repeatedly but it's not quite clear how I should try to approach this. Or are the alternatives like deactivating questions. Thanks in advance.

andrewcbw35 avatar May 18 '21 13:05 andrewcbw35

See: https://suffolklitlab.org/legal-tech-class/docs/practical-guide-docassemble/controlling-interview-order

and https://suffolklitlab.org/legal-tech-class/docs/classes/assignment-branch-logic

nonprofittechy avatar May 18 '21 13:05 nonprofittechy

Have you managed to do this?

I have this 2 questions

mandatory: True question: | Was there risk of contagium at entry and exit points? yesno: risk_entrance

question: | What was the level of the risk? field: risk_level_entrance choices:

  • High: High
  • Medium: Medium
  • Low: Low

and then have this code block

mandatory: True code: |

if risk_entrance: if risk_level_entrance=="High" or risk_level_entrance=="Medium": ... else: ...

but this always ask the question even tho risk_entrance is false

jpdoliveira-ui avatar Oct 18 '21 16:10 jpdoliveira-ui

There might be a reference to risk_level_entrance elsewhere in your interview. When the interview asks for risk_level_entrance, you can click the Source tab and look at "how this question was asked," which will show you the thought process leading up to the asking of the question. I assume that some question, code block, or document needed to know the value of risk_level_entrance.

This example works correctly for me:

question: |
  Was there risk of contagium at entry and exit points?
yesno: risk_entrance
---
question: |
  What was the level of the risk?
field: risk_level_entrance
choices:
  - High: High
  - Medium: Medium
  - Low: Low
---
mandatory: True
code: |
  if risk_entrance:
    if risk_level_entrance=="High" or risk_level_entrance=="Medium":
      answer = "high or medium"
    else:
      answer = "low"
  else:
    answer = "no risk"
---
mandatory: True
question: |
  The answer is ${ answer }

jhpyle avatar Oct 18 '21 17:10 jhpyle

I am closing this issue because there has been no activity, but feel free to reopen if you have further questions.

jhpyle avatar Aug 13 '22 15:08 jhpyle