Creating a variable from if/else condition output

Hello!

Is there a way to create a variable for the output of an if/else condition?

For example I would like to use the output of the following snippet to do other things:

Sex:{formmenu: default=Man; Woman; name=Patient Sex}
Age:{formtext: name=Age}
VO2 Max:{formtext: name=VO2 Max}

{if: `patient sex`=="Man"}{if: Age<20}{if: `vo2 max`<39}Low{elseif: `vo2 max`<46}Below Average{elseif: `vo2 max`<50}Above Average{elseif: `vo2 max`<58}High{elseif: `vo2 max`>=58}Elite{endif}{elseif: Age<30}{if: `vo2 max`<36}Low{elseif: `vo2 max`<43}Below Average{elseif: `vo2 max`<49}Above Average{elseif: `vo2 max`<56}High{elseif: `vo2 max`>=56}Elite{endif}{elseif: Age<40}{if: `vo2 max`<35}Low{elseif: `vo2 max`<40}Below Average{elseif: `vo2 max`<46}Above Average{elseif: `vo2 max`<53}High{elseif: `vo2 max`>=53}Elite{endif}{elseif: Age<50}{if: `vo2 max`<34}Low{elseif: `vo2 max`<39}Below Average{elseif: `vo2 max`<44}Above Average{elseif: `vo2 max`<52}High{elseif: `vo2 max`>=52}Elite{endif}{elseif: Age<60}{if: `vo2 max`<29}Low{elseif: `vo2 max`<36}Below Average{elseif: `vo2 max`<41}Above Average{elseif: `vo2 max`<50}High{elseif: `vo2 max`>=50}Elite{endif}{elseif: Age<70}{if: `vo2 max`<25}Low{elseif: `vo2 max`<30}Below Average{elseif: `vo2 max`<36}Above Average{elseif: `vo2 max`<46}High{elseif: `vo2 max`>=46}Elite{endif}{elseif: Age<80}{if: `vo2 max`<21}Low{elseif: `vo2 max`<25}Below Average{elseif: `vo2 max`<30}Above Average{elseif: `vo2 max`<41}High{elseif: `vo2 max`>=41}Elite{endif}{elseif: Age>=80}{if: `vo2 max`<18}Low{elseif: `vo2 max`<23}Below Average{elseif: `vo2 max`<26}Above Average{elseif: `vo2 max`<35}High{elseif: `vo2 max`>=35}Elite{endif}{endif}{elseif: `patient sex`=="Woman"}{if: Age<20}{if: `vo2 max`<35}Low{elseif: `vo2 max`<40}Below Average{elseif: `vo2 max`<46}Above Average{elseif: `vo2 max`<53}High{elseif: `vo2 max`>=53}Elite{endif}{elseif: Age<30}{if: `vo2 max`<28}Low{elseif: `vo2 max`<36}Below Average{elseif: `vo2 max`<41}Above Average{elseif: `vo2 max`<51}High{elseif: `vo2 max`>=51}Elite{endif}{elseif: Age<40}{if: `vo2 max`<27}Low{elseif: `vo2 max`<34}Below Average{elseif: `vo2 max`<39}Above Average{elseif: `vo2 max`<49}High{elseif: `vo2 max`>=49}Elite{endif}{elseif: Age<50}{if: `vo2 max`<26}Low{elseif: `vo2 max`<32}Below Average{elseif: `vo2 max`<37}Above Average{elseif: `vo2 max`<47}High{elseif: `vo2 max`>=47}Elite{endif}{elseif: Age<60}{if: `vo2 max`<25}Low{elseif: `vo2 max`<29}Below Average{elseif: `vo2 max`<36}Above Average{elseif: `vo2 max`<46}High{elseif: `vo2 max`>=46}Elite{endif}{elseif: Age<70}{if: `vo2 max`<21}Low{elseif: `vo2 max`<25}Below Average{elseif: `vo2 max`<30}Above Average{elseif: `vo2 max`<40}High{elseif: `vo2 max`>=40}Elite{endif}{elseif: Age<80}{if: `vo2 max`<18}Low{elseif: `vo2 max`<22}Below Average{elseif: `vo2 max`<25}Above Average{elseif: `vo2 max`<36}High{elseif: `vo2 max`>=36}Elite{endif}{elseif: Age>=80}{if: `vo2 max`<15}Low{elseif: `vo2 max`<20}Below Average{elseif: `vo2 max`<23}Above Average{elseif: `vo2 max`<30}High{elseif: `vo2 max`>=30}Elite{endif}{endif}{endif}

So if output=='High' print "You're exercise capacity is fantastic", else print "You need to work out more"

Thanks for the help!

hey @Abby_Buccino

cool snippet, anything involving vo2 max is interesting to me :eyes:

You can definitely define a variable as part of the result of an if statement, and then use that variable elsewhere in your snippet. Just use assignment mode inside your if statement's results to define the variable.

Here's an example:

{formmenu: low; medium; high; name=menu}

{if: menu="low"}{newvariable="example1"}Low was selected{elseif: menu="medium"}{newvariable="example2"}Medium was selected{elseif: menu="high"}{newvariable="example3"}High was selected{endif}

The value of "newvariable" will change based on the result of my if statement: {=newvariable}

See how in that snippet, I'm defining the variable called "newvariable" in 3 different ways, one for each of the potential outcomes of my if statement.

At the end of my snippet, I'm using {=newvariable}, and that value being output changes based on my if statement.

If I wanted to, I could then also use that in other if statements, too.

1 Like

I re-read your original question and you want the output to be a variable itself so you can re-use it -- not quite what I answered in my last response, sorry! Still very much possible though.

Just define what you want the results to be as a variable, and then use that variable, along these lines:

{formmenu: low; medium; high; name=menu}

{if: menu="low"}{newvariable="example1"}{=newvariable}{elseif: menu="medium"}{newvariable="example2"}{=newvariable}{elseif: menu="high"}{newvariable="example3"}{=newvariable}{endif}

Now I can also re-use that value elsewhere in my snippet, like so: {=newvariable}

You don't have to re-use the same variable name for each result of the IF statement the way I did, you can change it up.

1 Like

Hi @Abby_Buccino ,

I fixed your snippet, by escaping backticks (` to \`) in the post above,

Adding to Andrew response, I used his recommendation in your snippet, to get the result you need.

Sex:{formmenu: default=Man; Woman; name=Patient Sex}
Age:{formtext: name=Age}
VO2 Max:{formtext: name=VO2 Max}

{if: `patient sex`=="Man"}{if: Age<20}{if: `vo2 max`<39}{result="Low"}{elseif: `vo2 max`<46}{result="Below Average"}{elseif: `vo2 max`<50}{result="Above Average"}{elseif: `vo2 max`<58}{result="High"}{elseif: `vo2 max`>=58}{result="Elite"}{endif}{elseif: Age<30}{if: `vo2 max`<36}{result="Low"}{elseif: `vo2 max`<43}{result="Below Average"}{elseif: `vo2 max`<49}{result="Above Average"}{elseif: `vo2 max`<56}{result="High"}{elseif: `vo2 max`>=56}{result="Elite"}{endif}{elseif: Age<40}{if: `vo2 max`<35}{result="Low"}{elseif: `vo2 max`<40}{result="Below Average"}{elseif: `vo2 max`<46}{result="Above Average"}{elseif: `vo2 max`<53}{result="High"}{elseif: `vo2 max`>=53}{result="Elite"}{endif}{elseif: Age<50}{if: `vo2 max`<34}{result="Low"}{elseif: `vo2 max`<39}{result="Below Average"}{elseif: `vo2 max`<44}{result="Above Average"}{elseif: `vo2 max`<52}{result="High"}{elseif: `vo2 max`>=52}{result="Elite"}{endif}{elseif: Age<60}{if: `vo2 max`<29}{result="Low"}{elseif: `vo2 max`<36}{result="Below Average"}{elseif: `vo2 max`<41}{result="Above Average"}{elseif: `vo2 max`<50}{result="High"}{elseif: `vo2 max`>=50}{result="Elite"}{endif}{elseif: Age<70}{if: `vo2 max`<25}{result="Low"}{elseif: `vo2 max`<30}{result="Below Average"}{elseif: `vo2 max`<36}{result="Above Average"}{elseif: `vo2 max`<46}{result="High"}{elseif: `vo2 max`>=46}{result="Elite"}{endif}{elseif: Age<80}{if: `vo2 max`<21}{result="Low"}{elseif: `vo2 max`<25}{result="Below Average"}{elseif: `vo2 max`<30}{result="Above Average"}{elseif: `vo2 max`<41}{result="High"}{elseif: `vo2 max`>=41}{result="Elite"}{endif}{elseif: Age>=80}{if: `vo2 max`<18}{result="Low"}{elseif: `vo2 max`<23}{result="Below Average"}{elseif: `vo2 max`<26}{result="Above Average"}{elseif: `vo2 max`<35}{result="High"}{elseif: `vo2 max`>=35}{result="Elite"}{endif}{endif}{elseif: `patient sex`=="Woman"}{if: Age<20}{if: `vo2 max`<35}{result="Low"}{elseif: `vo2 max`<40}{result="Below Average"}{elseif: `vo2 max`<46}{result="Above Average"}{elseif: `vo2 max`<53}{result="High"}{elseif: `vo2 max`>=53}{result="Elite"}{endif}{elseif: Age<30}{if: `vo2 max`<28}{result="Low"}{elseif: `vo2 max`<36}{result="Below Average"}{elseif: `vo2 max`<41}{result="Above Average"}{elseif: `vo2 max`<51}{result="High"}{elseif: `vo2 max`>=51}{result="Elite"}{endif}{elseif: Age<40}{if: `vo2 max`<27}{result="Low"}{elseif: `vo2 max`<34}{result="Below Average"}{elseif: `vo2 max`<39}{result="Above Average"}{elseif: `vo2 max`<49}{result="High"}{elseif: `vo2 max`>=49}{result="Elite"}{endif}{elseif: Age<50}{if: `vo2 max`<26}{result="Low"}{elseif: `vo2 max`<32}{result="Below Average"}{elseif: `vo2 max`<37}{result="Above Average"}{elseif: `vo2 max`<47}{result="High"}{elseif: `vo2 max`>=47}{result="Elite"}{endif}{elseif: Age<60}{if: `vo2 max`<25}{result="Low"}{elseif: `vo2 max`<29}{result="Below Average"}{elseif: `vo2 max`<36}{result="Above Average"}{elseif: `vo2 max`<46}{result="High"}{elseif: `vo2 max`>=46}{result="Elite"}{endif}{elseif: Age<70}{if: `vo2 max`<21}{result="Low"}{elseif: `vo2 max`<25}{result="Below Average"}{elseif: `vo2 max`<30}{result="Above Average"}{elseif: `vo2 max`<40}{result="High"}{elseif: `vo2 max`>=40}{result="Elite"}{endif}{elseif: Age<80}{if: `vo2 max`<18}{result="Low"}{elseif: `vo2 max`<22}{result="Below Average"}{elseif: `vo2 max`<25}{result="Above Average"}{elseif: `vo2 max`<36}{result="High"}{elseif: `vo2 max`>=36}{result="Elite"}{endif}{elseif: Age>=80}{if: `vo2 max`<15}{result="Low"}{elseif: `vo2 max`<20}{result="Below Average"}{elseif: `vo2 max`<23}{result="Above Average"}{elseif: `vo2 max`<30}{result="High"}{elseif: `vo2 max`>=30}{result="Elite"}{endif}{endif}{endif}
Your result is {=result}
{if: result=="High"}You're exercise capacity is fantastic{else}You need to work out more{endif}

1 Like

Andrew's snippet is explicit and gets the job done. But we can also rewrite it succinctly, using the ternary operator like so:

{formmenu: low; medium; high; name=menu}

{newvariable="example1" if menu="low" else "example2" if menu="medium" else "example3"}{=newvariable}

Now I can also re-use that value elsewhere in my snippet, like so: {=newvariable}

The primary part is: {newvariable="example1" if menu="low" else "example2" if menu="medium" else "example3"}. The way to interpret this is to read it like an English sentence and look for the first match.

1 Like

Thank you everyone! This is going to be so helpful for not just this snippet, but so many others. I really really appreciate it.