# Medical risk calculator - three inputs

• 05-18-2013, 02:26 PM
tim_k
Medical risk calculator - three inputs
Hi all,

I'm trying my hand at jscript for the first time (au fait with html and css). I'd like to build a medical risk calculator to sit in a side block on a drupal site. The html form is done.

Input x is the size of an aneurysm and input will be in text and then parsed into ranges (0-7mm, 7-10mm and 10+mm)
Input y is location of aneurysm and consists of three options, a, b & c.
Input z is yes / no radio button
Output (risk) should update each time input is changed (no submit button).

Each combination of these variables should produce two linked risk values (% in one year and % in five years). The number of potential outputs is thus 3x3x2 = 18 (so it's not really a calculation, more a lookup). I am imagining some sort of 18-faceted list of functions like this:

If x=1 AND y=1 AND z=1 THEN output Risk combo 1
IF x=2 AND y=1 AND z=1 THEN output Risk combo 2
IF x=3 AND y=1 AND z=1 THEN output Risk combo 3
IF x=1 AND y=2 AND z=1 THEN output Risk combo 4
IF x=2 AND y=2 AND z=1 THEN output Risk combo 5
IF x=3 AND y=2 AND z=1 THEN output Risk combo 6
IF x=1 AND y=3 AND z=1 THEN output Risk combo 7
IF x=2 AND y=3 AND z=1 THEN output Risk combo 8
IF x=3 AND y=3 AND z=1 THEN output Risk combo 9
If x=1 AND y=1 AND z=2 THEN output Risk combo 10
IF x=2 AND y=1 AND z=2 THEN output Risk combo 11
IF x=3 AND y=1 AND z=2 THEN output Risk combo 12
IF x=1 AND y=2 AND z=2 THEN output Risk combo 13
IF x=2 AND y=2 AND z=2 THEN output Risk combo 14
IF x=3 AND y=2 AND z=2 THEN output Risk combo 15
IF x=1 AND y=3 AND z=2 THEN output Risk combo 16
IF x=2 AND y=3 AND z=2 THEN output Risk combo 17
IF x=3 AND y=3 AND z=2 THEN output Risk combo 18

How should one best go about performing these functions?
• 05-19-2013, 07:28 AM
Dormilich
since you mentioned a lookup-table, what about a nested Array?
PHP Code:

// though you need to use a 0-based index in your <input>s
var risks = [ // x-level

// y-level

[risk combo 1risk combo 2], // z-level

[risk combo 3risk combo 4],
[
risk combo 5risk combo 6]
],
[
[
risk combo 7risk combo 8],
[
risk combo 9risk combo 10],
[
risk combo 11risk combo 12]
],
[
[
risk combo 13risk combo 14],
[
risk combo 15risk combo 16],
[
risk combo 17risk combo 18]
]
]
// access would work like
// remember, it's zero-indexed
var combo risks[x][y][z];

• 05-19-2013, 02:18 PM
tim_k
Thanks for your suggestion - will read around this approach and give it a try! :thumbsup:
• 05-19-2013, 02:34 PM
Dormilich
if you don’t have numbers as input value, you could do the same with an object.
PHP Code:

var risks = {

"category 1": {

"class 1" : {

"subclass 1""combo 1",

"subclass 2""combo 2"    // etc.

},

"class 2" : {

// etc.

}
},

"category 2": {

// etc.

}
};