Personal tools
You are here: Home OSCAR Users EMR and Case Management Resources eForms eForms for download Calculators Fracture Risk Calculator

Fracture Risk Calculator

Fracture Risk Calculator

— HTML, 17Kb

File contents

<html><head><title>Fracture Risk Calculator</title>
    
<link rel="stylesheet" type="text/css" href="fracturerisk_files/mystyles.html">

<script type="text/javascript" language="javascript">
var dummy;
var ts;
var zs;
var bav;
var sdv;
var age;
var BMD;
var RR;
var EXRR; 
var tenyr;
var tsindx;
var rk;
var FXI;
grams = 0;
var blck;
var eur;
var costeff;

function checkey(xx, e){
if (e.keyCode==13){dummy = xx;
e.returnValue=false;}
else {e.returnValue;}
}

function getage(){
EXRR = 0;
BMDav = new Array (955, 945, 920, 876, 826,792,758,725,694,679);
sd = new Array (123, 130, 136, 139, 140,140, 129,129,135, 135);
tenyr = new Array (0,0,2.8,3.8,5.1,6.3,7.1,7.0,7.7,7.4);
FXI = new Array (0,0,0,0,0,1,2,3,4,5);
//tenyr = ten year risk of fx for T-score = 0
 for  (i=0; i<10; i++) {
          if (document.oform.agerange[i].checked)
              {age = document.oform.agerange[i].value;
               bav = BMDav[i];
               sdv = sd[i];
               tenyr = tenyr[i];
               FXI = FXI[i];
           }
     }
//check for risk factors

extrarisk = new Array (1.5,1.4,1.2,1.3,2.3,2,2,1.6,1.7,1.7);
for (i=0;i<10;i++) {
      if (document.oform.factor[i].checked)
           {EXRR = EXRR + extrarisk[i];}
    }
// check for walking
 if (document.oform.factor[10].checked)
  { if (EXRR>1) {EXRR = EXRR-1.4}
     else {EXRR = 0.8} }
 // no risk factors checked, set relative value to 1  
     if (EXRR ==0) {EXRR=1}
//prednisone
if (document.oform.factor[6].checked) {document.getElementById('ocomment').innerHTML = "Prednisone use is a high risk and these numbers may not apply."}
else {document.getElementById('ocomment').innerHTML = " ";}

return true;
}


 function knowT() {
ts = document.oform.tscore.value;
if (Math.abs(ts)>5){alert("Check entry for T-score");
    document.oform.tscore.value="";}
BMD = 955 + 123*ts;
dummy = getage();
zs =  (BMD - bav)/sdv;
document.oform.zscore.value=(Math.round(zs*10))/10;
document.oform.ograms1.value="0.000";
dummy = printresults();
}

function knowZ() {
dummy = getage();
zs = document.oform.zscore.value;
if (Math.abs(zs)>3){alert("Check entry for Z-score");
document.oform.zscore.value="";}
BMD = (sdv * zs) + bav;
ts = (BMD - 955)/123;
document.oform.tscore.value=(Math.round(ts*10))/10;
document.oform.ograms1.value="0.000";
dummy = printresults();
}

function oconvert() {
dummy = getage();
g1 = document.oform.ograms1.value;
if (g1>100) {alert("Check units for BMD");document.getElementById('lifetime').innerHTML
document.oform.ograms1.value = "0.000";}
if (document.oform.omachine1[0].checked) {
   BMD = 1000 * ( .006 + (g1 * 1.008));}
if (document.oform.omachine1[1].checked) {
   BMD = 1000 * ((.979 * g1) - 0.031);}
if (document.oform.omachine1[2].checked) {
   BMD = 1000 * ( .026 + (1.012 * g1));}
ts = (BMD - 955)/123;
zs =  (BMD - bav)/sdv;
document.oform.zscore.value=(Math.round(zs*10))/10;
document.oform.tscore.value=(Math.round(ts*10))/10;
dummy = printresults();
}

function printresults(){
document.getElementById('ages').innerHTML = age;
document.getElementById('sbmd').innerHTML = Math.round(BMD);
document.getElementById('sbav').innerHTML = Math.round(bav);
document.getElementById('sts').innerHTML =( Math.round(ts*10))/10;
document.getElementById('szs').innerHTML =( Math.round(zs*10))/10;

var textmoreorless;
if (zs>=0){document.getElementById('moreorless').innerHTML = "less";
	textmoreorless = "less";
	}
if (zs<0){document.getElementById('moreorless').innerHTML = "more";
	textmoreorless = "more";
	} 
azs=Math.abs(zs);
RR=Math.pow(2,azs);

document.getElementById('relrisk').innerHTML =  (Math.round(RR*10))/10;
var textrelrisk = (Math.round(RR*10))/10;
if (azs > 2) {document.getElementById('relrisk').innerHTML = "over 4";
	textrelrisk = "over 4";
	}

document.getElementById('pd').innerHTML = Math.round( ( BMD - bav)/bav * 100);
azs = Math.abs(zs);
if (azs>2) {pt=99}
else {if (azs>1.8) {pt=98}
else {if (azs>1.6) {pt=95}
  else {if (azs>1.5) {pt = 93}
    else {if (azs>1.3) {pt = 90}
      else {if (azs >0.9) {pt = 84}
        else {if (azs > .84) {pt = 80}
          else {if (azs > .53) {pt  = 70}
            else {if (azs >.4) {pt  =65}
              else{ if (azs > .11) {pt  = 55}
             else {if (azs >= 0) {pt = 50}}}}}}}}}}}
if (zs>=0){document.getElementById('percentile').innerHTML = pt};
if (zs<0){document.getElementById('percentile').innerHTML = (100-pt)};

//FRACTURE RISKS FROM STEVE CUMMINGS
 if (ts >0) {tsindx = 0}
     else {tsindx =Math.round(-2*ts);
             }
if (tsindx>7) {tsindx=8}

if (age==55) {
lifetimerisk = new Array ("less than 10",13,16,21,27,33,41,49,"above 50");
fiverisk = new Array ("less than 1","less than 1","less than 1","less than 1",1,1,1,2,"above 2");
vertrisk = new Array ("less than 1","less than 1",1,2,2,3,4,6,"above 6");
rkk = new Array (1,1,1,1,1,1,1,2,0);
}
if (age==62) {
lifetimerisk = new Array ("less than 10",13,17,21,27,33,40,47,"above 50");
fiverisk = new Array ("less than 1","less than 1", "less than 1",1,1,2,2,4,"above 4");
vertrisk = new Array ("less than 1",1,2,2,3,5,6,9,"above 9");
rkk = new Array (1,1,1,1,1,2,2,4,0);
}
if (age==67) {
lifetimerisk = new Array ("less than 10",13,17,21,27,33,40,47,"above 50");
fiverisk = new Array ("less than 1","less than 1", "less than 1",1,2,2,4,5,"above 5");
vertrisk= new Array ("less than 1",1,2,3,4,6,8,12, "above 12");
rkk = new Array (1,1,1,1,2,2,4,5,0);
}
if (age==72) {
lifetimerisk = new Array ("less than 10",13,14,21,27,33,39,46,"above 50");
fiverisk = new Array ("less than 1",1,1,1,2,3,5,8,"above 8");  
vertrisk= new Array ("less than 2",2,3,4,6,8,11,15, "above 15");
rkk = new Array (1,1,1,1,1,2,3,5,8,0);
}
if (age==77) {
lifetimerisk = new Array ("less than 10",13,14,21,27,33,39,46,"above 50");
fiverisk = new Array ("less than 1",1,1,2,3,4,7,12, "above 12");  
vertrisk= new Array ("less than 2",2,4,6,7,11,14,19, "above 19");  
rkk = new Array (1,1,1,2,3,4,7,12,0);
}
if (age==82) {
lifetimerisk = new Array ("less than 10",12,16,20,24,30,35,41,"above 45");
fiverisk = new Array (1,2,2,3,4,6,10,16, "above 16");  
vertrisk= new Array ("less than 4",4,5,7,10,14,18,24, "above 24");  
rkk = new Array (1,2,2,3,4,6,10,16,0);
}
if (age==85) {
lifetimerisk = new Array ("less than 10",12,16,20,24,30,35,41,"above 45");
fiverisk = new Array (1,2,2,3,5,7,12,18,"above 18");
vertrisk= new Array ("less than 5",5,5,7,10,14,18,246,9,11,15,20,26, "above 26");  
rkk = new Array (1,2,2,3,5,7,12,18,0);
}

if (age>50) {
document.getElementById('lifetime').innerHTML = lifetimerisk[tsindx] + "%" ;
document.getElementById('risk').innerHTML = fiverisk[tsindx] ;
var textrisk = fiverisk[tsindx];
document.getElementById('spinerisk').innerHTML = vertrisk[tsindx];
var textspinerisk = vertrisk[tsindx];
rk =Math.round ( rkk[tsindx] * EXRR);
document.getElementById('risk2').innerHTML = rk + "%";
if (rk <= 1) {document.getElementById('risk2').innerHTML = "1% or less"};
if (rk>50) {document.getElementById('risk2').innerHTML = "greater than 50"+"%"};
if (rk ==0) {document.getElementById('risk2').innerHTML = fiverisk[tsindx] +"%";}
}

else {
document.getElementById('risk').innerHTML = "less than 1";
document.getElementById('risk2').innerHTML = "not enough data";
document.getElementById('spinerisk').innerHTML = "too young to predict";
document.getElementById('lifetime').innerHTML = "too young to predict";}



//CALCULATE FRACTURE RISK INDEX per Black

for (i=0;i<4;i++) {
      if (document.oform.factor[i].checked)
           {FXI = FXI + 1;}
    }
if (ts > -2 && ts < -1 ) {FXI = FXI + 2}
if (ts >= -2.5 && ts <= -2 ) {FXI = FXI + 3}
if (ts < -2.5 ) {FXI = FXI + 4}
if (document.oform.factor[4].checked){FXI = FXI+2};

if (FXI==1||FXI==2){blck=0.4; eur=0.6;}
if (FXI==3||FXI==4){blck=0.9; eur=0.6;}
if (FXI==5){blck=1.9; eur=0.6;}
if (FXI==6||FXI==7){blck=3.9; eur=2.6;}
if (FXI==8||FXI==9){blck="8.7"; eur=4.5;}
if (FXI==10){blck="8.7"; eur=7.8;}
if (FXI>10){blck="8.7"; eur=14.1;}
document.getElementById('usrisk').innerHTML="Average 5 yr hip fracture rate in this quintile was "+blck+"%";
document.getElementById('eurorisk').innerHTML="in the US and "+eur+"% in Europe.";

if (age < 65) {document.getElementById('usrisk').innerHTML = "";
document.getElementById('eurorisk').innerHTML=""}
document.getElementById('fxi').innerHTML=FXI;

//Ten year risk any Fx per method of Kanis
document.getElementById('tenyear').innerHTML  = Math.round(Math.pow(1.6,-ts)*tenyr) + "%";
 if (age<45) {document.getElementById('tenyear').innerHTML = "data not available"};

//CALCULATE COST EFFECTIVENESS per Kanis
if (document.oform.factor[6].checked) {costeff = "Does not apply due to prednisone use";}
else {
       if (age<50) {costeff = "Does not apply in younger women (not enough data)";}
       else { if (age<60&&ts<-2.49) {costeff = "Would be cost effective";}
       else { if (age>60&&document.oform.factor[0].checked) {costeff = "Would be cost effective";}
       else { if (age<60&&ts<-1.9&&document.oform.factor[0].checked) {costeff = "Would be cost effective";}   
       else { if (age>60&&ts<-1.9) {costeff = "Would be cost effective";} 
       else { if (age>70&&zs<0) {costeff = "Would be cost effective";}
       else {if (age>70&&ts<-1.79) {costeff = "Might be cost effective but patient is above average";}
       else {costeff = "Would NOT be cost effective";}
}}}}}}}
document.getElementById('thresh').innerHTML=costeff;
document.result.resultEncounter.value="**********************************************\n" +
"FRACTURE RISKS BASED ON BONE DENSITY AND AGE:" +
"\nRisk relative to average woman for same age: " + document.getElementById('relrisk').innerHTML + " times " + document.getElementById('moreorless').innerHTML + " likely to break hip." +
"\nHip fracture risk in next 5 years: " + document.getElementById('risk').innerHTML + "%" +
"\nSpine fracture risk in the next 5 years: " + document.getElementById('spinerisk').innerHTML + "%" +
"\nLifetime risk of hip fracture: " + document.getElementById('lifetime').innerHTML +
"\nRisk of any osteoporotic fracture in the next ten years: " + document.getElementById('tenyear').innerHTML +
"\n**********************************************";

}//end of funtion

function fillage() {
	var age = document.oform.patientage.value;
	if (age < 20) {
	  if (!confirm("Warning. Patient is too young. Assume age 20?")) {
		return;
	  }
	  document.oform.agerange[0].checked = true;
	}
	else if ((age >= 20) && (age <= 29)) {
	  document.oform.agerange[0].checked = true;
	}
	else if ((age >= 30) && (age <= 39)) {
	  document.oform.agerange[1].checked = true;
	}
	else if ((age >= 40) && (age <= 49)) {
	  document.oform.agerange[2].checked = true;
	}
	else if ((age >= 50) && (age <= 59)) {
	  document.oform.agerange[3].checked = true;
	}
	else if ((age >= 60) && (age <= 64)) {
	  document.oform.agerange[4].checked = true;
	}
	else if ((age >= 65) && (age <= 69)) {
	  document.oform.agerange[5].checked = true;
	}
	else if ((age >= 70) && (age <= 74)) {
	  document.oform.agerange[6].checked = true;
	}
	else if ((age >= 75) && (age <= 79)) {
	  document.oform.agerange[7].checked = true;
	}
	else if ((age >= 80) && (age <= 84)) {
	  document.oform.agerange[8].checked = true;
	}
	else if (age > 84) {
	  document.oform.agerange[9].checked = true;
	}
}
</script></head>

 

 
    <body>
    <h1>Fracture Risk Calculator</h1>

 <hr size="4">
Enter the AGE and results from a DEXA measurement of the HIP <br>
 (<b>either </b>T-score <b>or</b>  Z-score <b>or</b> Total hip bone density in g/cm2).  
<p></p>
<table cellpadding="5" cellspacing="3">
<tbody><tr><td rowspan="2" bgcolor="#ccffe5">

<form name="oform">
AGE<br>
<input name="patientage" oscardb="age" type="hidden">
<input onclick="fillage()" value="prefill" type="button">
<br>&nbsp;<br><input name="agerange" value="25" type="radio"> 20-29
<br><input name="agerange" value="35" type="radio"> 30-39
<br><input name="agerange" value="45" type="radio"> 40-49
<br><input name="agerange" value="55" type="radio"> 50-59
<br><input name="agerange" value="62" type="radio"> 60-64
<br><input name="agerange" value="67" type="radio"> 65-69
<br><input name="agerange" value="72" type="radio"> 70-74
<br><input name="agerange" value="77" type="radio"> 75-79

<br><input name="agerange" value="82" type="radio"> 80-84
<br><input name="agerange" value="85" type="radio"> over 84

</form></td><td rowspan="2" bgcolor="#ccffe5">OTHER FACTORS<br>&nbsp;<br>
<input name="factor" type="checkbox">Fracture as adult
<br><input name="factor" type="checkbox">Hip fracture in parent
<br><input name="factor" type="checkbox">Weigh less than 125 lb
<br><input name="factor" type="checkbox">Cigarette smoker
<br><input name="factor" type="checkbox">Use arms to rise from chair
<br><input name="factor" type="checkbox">Take seizure medicine
<br><input name="factor" type="checkbox">Take prednisone
<br><input name="factor" type="checkbox">Use sedatives
<br><input name="factor" type="checkbox">History hyperthyroidism
<br><input name="factor" type="checkbox">Resting pulse &gt; 80
<br><input name="factor" type="checkbox">Walk for exercise


</td><td bgcolor="#ccddff">
 T-score = <input maxlength="4" name="tscore" size="8" value="0.00" onkeydown="checkey(knowT(), event)" type="text">
<br>&nbsp;<br>
<input value="click to calculate" onclick="knowT()" type="button">

</td><td rowspan="2" bgcolor="#ccddff">
TOTAL HIP BMD
<br><input name="omachine1" checked="checked" type="radio"> Hologic
<br><input name="omachine1" type="radio"> Lunar
<br><input name="omachine1" type="radio"> Norland
<br><input maxlength="5" name="ograms1" size="6" value="0.000" onkeydown="checkey(oconvert(), event)" type="text"> g / cm2

<br>&nbsp;<br>
<input value="click to calculate" onclick="oconvert()" type="button">

</td></tr><tr><td bgcolor="#ccddff"> Z-score = <input maxlength="4" name="zscore" size="8" value="0.00" onkeydown="checkey(knowZ())" type="text">
<br>&nbsp;<br>
<input value="click to calculate" onclick="knowZ()" type="button"></td><td>


</td></tr><tr><td colspan="4" style="background-color: rgb(255, 255, 255); line-height: 17pt;">
AGE <span id="ages"> --- </span> years old &nbsp; &nbsp;

STANDARDIZED BONE DENSITY: <span id="sbmd"> --- </span> mg/cm2 
<br> T-SCORE: <span id="sts"> --- </span>  &nbsp; &nbsp;
 Z-SCORE: <span id="szs"> --- </span>

<br>Average bone density for age: <span id="sbav"> --- </span> mg/cm2
<br>Difference from average bone density: <span id="pd"> --- </span>%
<br>Percentile (% of ordinary women of same age with lower density): <span id="percentile"> --- </span>%


</td></tr><tr><td colspan="4" style="background-color: rgb(204, 221, 255); line-height: 17pt;">
FRACTURE RISKS BASED ON BONE DENSITY AND AGE:
<br> Risk relative to average woman of same age: <span id="relrisk"> --- </span>&nbsp; times <span id="moreorless"> -- </span>&nbsp; likely to break hip

<br> Hip fracture risk in next 5 years: <span id="risk"> --- </span>%
<br> Spine fracture risk in next 5 years: <span id="spinerisk"> --- </span>%
<br> Lifetime risk of hip fracture:  <span id="lifetime"> --- </span>
<br> Risk of any osteoporotic fracture in the next ten years: <span id="tenyear"> --- </span>

</td></tr><tr><td colspan="4" style="background-color: rgb(255, 255, 255); line-height: 17pt;">
FRACTURE RISKS CONSIDERING OTHER FACTORS:
<br>Fracture Risk Index  <a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=retrieve&amp;db=pubmed&amp;list_uids=11527048&amp;dopt=r">(Black)</a>: <span id="fxi"> -- </span>&nbsp; of 15
<br><i><span id="usrisk"> -- </span> <span id="eurorisk"> -- </span> </i>

<br>Hip fracture risk in 5 years (<i>baseline fracture rate times relative risks</i>): <span id="risk2"> -- </span> 
<br> <span id="ocomment">   </span>

</td></tr><tr><td colspan="4" style="background-color: rgb(204, 221, 255); line-height: 17pt;">
TREATMENT THRESHOLD for prescription medications <a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=retrieve&amp;db=pubmed&amp;list_uids=15663999&amp;dopt=abstract">(Kanis)</a>:
<br><span id="thresh">-- </span>

 <br>A recent study by<a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=retrieve&amp;db=pubmed&amp;list_uids=15867405&amp;dopt=abstract">  Schousboe</a> found it was cost-effective to treat women <br>aged 55 to 75 with a clnical fracture or a T-score less than -2.5</td></tr></tbody></table>
<p></p><hr>
<p>
 
</p><form name="result">
<textarea name="resultEncounter" cols="80" rows="8"></textarea>
</form>
<hr>
<br>
The above results apply to ambulatory Caucasian women from the US or
northern Europe. The risk for a hip fracture is based on studies of
large numbers of women but for an individual woman these are all
estimations. Also, there are some discrepancies among the results
because they were calculated using different methods and different data
sets. Lifetime and 5-yr risks were from <a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=retrieve&amp;db=pubmed&amp;list_uids=12377088&amp;dopt=r">the Study of Osteoporotic Fractures.</a>
To calculate relative risk due to bone density I used a relative risk
of 2.0 per standard deviation. For ten-year fracture probabilities I
used <a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=retrieve&amp;db=pubmed&amp;list_uids=11846333&amp;dopt=r">data</a> from Sweden.  <br>

<i>So far this works only on Internet Explorer - despite hours of trying!!</i>
(<a href="https://stonechurch.oscarmcmaster.org:11042/oscar_sfhc/eform/refs/general.html#riskref">References</a>)<br>
<p></p>
<i>Updated 8/24/05</i> <a href="https://stonechurch.oscarmcmaster.org:11042/oscar_sfhc/eform/opDEXA1.html"> </a>

<hr><a href="https://stonechurch.oscarmcmaster.org:11042/oscar_sfhc/eform/ophome.html"></a>  <a href="https://stonechurch.oscarmcmaster.org:11042/oscar_sfhc/eform/opDEXA1.html"></a>

</body></html>
Document Actions
Help us support OSCAR!

 

Download button

DOWNLOAD OSCAR FOR TESTING

 

Demo Button

SEE OSCAR EMR IN ACTION


Subscribe Button

SUBSCRIBE TO DISCUSSION LIST

 (SEE ALL LISTS)

 Customize button

FIND PLUG-INS AND TWEAKS
FOR YOUR OSCAR EMR

 

 Join OCUS Button

 BECOME A MEMBER OF THE
OSCAR CANADA USERS SOCIETY
(OUR MISSION)

 

Help button

ACCESS THE ONLINE MANUALS
(OLD MANUALS)
(PAID SUPPORT)

 

Contact Us

Oscar Canada Users Society

#425 - 1917 West 4th Avenue

Vancouver  BC  V6J 1M7

OscarCanadaUserSociety@gmail.com