Difference between revisions of "MediaWiki:Gadget-calculator-anatomyPhysiology.js"
From WikiAnesthesia
Chris Rishel (talk | contribs) |
Chris Rishel (talk | contribs) |
||
Line 24: | Line 24: | ||
} else { | } else { | ||
return '-'; | return '-'; | ||
} | |||
} | |||
}, | |||
bladeMillerSize: { | |||
abbreviation: 'Blade (Miller)', | |||
name: 'Laryngoscope blade size (Miller)', | |||
references: [ | |||
'Smith\'s Anesthesia for Infants and Children. 8e. p356' | |||
], | |||
type: 'string', | |||
variables: { | |||
required: [ 'age' ] | |||
}, | |||
calculate: function( data ) { | |||
var age = data.age.toNumber( 'yo' ); | |||
if( age >= 2 ) { | |||
return '2'; | |||
} else if( age >= 1 / 12 ) { | |||
return '1'; | |||
} else if( age >= 0 ) { | |||
return '0-1'; | |||
} else { | |||
return '0'; | |||
} | } | ||
} | } | ||
Line 107: | Line 131: | ||
if( age >= 12 ) { | if( age >= 12 ) { | ||
return ' | return '6+'; | ||
} else if( age >= 1 ) { | } else if( age >= 1 ) { | ||
// ( age + 16 ) / 4 | // ( age + 16 ) / 4 | ||
Line 119: | Line 143: | ||
return '2.5-3'; | return '2.5-3'; | ||
} | } | ||
} | |||
}, | |||
fluidMaintenanceRate: { | |||
abbreviation: 'Fluid maint.', | |||
digits: 0, | |||
formula: '', | |||
name: 'Fluid maintenance rate', | |||
references: [ | |||
'Miller\'s Anesthesia 7e, section IV, pg. 1728' | |||
], | |||
units: 'mL/hr', | |||
variables: { | |||
required: [ 'weight' ] | |||
}, | |||
calculate: function( data ) { | |||
var weight = data.weight.toNumber( 'kgwt' ); | |||
// Uses 4-2-1 rule | |||
var maintenanceRate = 4 * Math.min( weight, 10 ); | |||
if( weight > 10 ) { | |||
maintenanceRate += 2 * Math.min( weight - 10, 10 ); | |||
} | |||
if( weight > 20) { | |||
maintenanceRate += weight - 20; | |||
} | |||
return maintenanceRate; | |||
} | } | ||
}, | }, | ||
Line 184: | Line 237: | ||
calculations: [ | calculations: [ | ||
'bladeMacSize', | 'bladeMacSize', | ||
'bladeMillerSize', | |||
'ettSize' | 'ettSize' | ||
], | ], | ||
Line 194: | Line 248: | ||
name: 'Fluid management', | name: 'Fluid management', | ||
calculations: [ | calculations: [ | ||
'ebv' | 'ebv', | ||
'fluidMaintenanceRate' | |||
], | ], | ||
css: { | css: { |
Revision as of 11:20, 25 July 2021
( function() { var moduleId = 'patientStats'; mw.calculators.addCalculations( { bladeMacSize: { abbreviation: 'Blade (MAC)', name: 'Laryngoscope blade size (MAC)', references: [ 'Smith\'s Anesthesia for Infants and Children. 8e. p356' ], type: 'string', variables: { required: [ 'age' ] }, calculate: function( data ) { var age = data.age.toNumber( 'yo' ); if( age >= 6 ) { return '3'; } else if( age >= 1 ) { // ( age + 16 ) / 4 // To nicely display in increments of 0.5, double the calculation, round (floor), then divide by 2 return '2'; } else { return '-'; } } }, bladeMillerSize: { abbreviation: 'Blade (Miller)', name: 'Laryngoscope blade size (Miller)', references: [ 'Smith\'s Anesthesia for Infants and Children. 8e. p356' ], type: 'string', variables: { required: [ 'age' ] }, calculate: function( data ) { var age = data.age.toNumber( 'yo' ); if( age >= 2 ) { return '2'; } else if( age >= 1 / 12 ) { return '1'; } else if( age >= 0 ) { return '0-1'; } else { return '0'; } } }, bmi: { abbreviation: 'BMI', digits: 0, formula: '<math>\\mathrm{BMI} = \\frac{\\text{mass}_\\text{kg}}{{\\text{height}_\\text{m}}^2}</math>', link: '[[Body mass index]]', name: 'Body mass index', references: [], units: 'kg/m^2', variables: { required: [ 'weight', 'height' ] }, calculate: function( data ) { return data.weight.toNumber( 'kgwt' ) / Math.pow( data.height.toNumber( 'm' ), 2 ); } }, bsa: { abbreviation: 'BSA', formula: '<math>\\mathrm{BSA} = 0.007184 \\times W^{0.425} \\times H^{0.725}</math>', link: false, name: 'Body surface area', references: [ 'Verbraecken, J; Van de Heyning P; De Backer W; Van Gaal L (Apr 2006). "Body surface area in normal-weight, overweight, and obese adults. A comparison study". Metabolism: Clinical and Experimental. 55 (4): 515–24. doi:10.1016/j.metabol.2005.11.004. PMID 16546483' ], variables: { required: [ 'weight', 'height' ] }, calculate: function( data ) { return Math.pow( data.weight.toNumber( 'kgwt' ), 0.425 ) * Math.pow( data.height.toNumber( 'cm' ), 0.725 ); } }, ebv: { abbreviation: 'EBV', formula: '', link: false, name: 'Estimated blood volume', references: [ 'Morgan & Mikhail\'s Clinical Anesthesiology. 5e. p1168' ], units: 'mL', variables: { required: [ 'weight', 'age' ] }, calculate: function( data ) { var weight = data.weight.toNumber( 'kgwt' ); var age = data.age.toNumber( 'yo' ); var ebvPerKg; if( age >= 1 ) { if( data.gender === 'F' ) { ebvPerKg = 65; } else { ebvPerKg = 75; } } else if( age >= 1/12 ) { ebvPerKg = 80; } else if( age >= 0 ) { ebvPerKg = 85; } else { ebvPerKg = 95; } return weight * ebvPerKg; } }, ettSize: { abbreviation: 'ETT size', name: 'Endotracheal tube size', references: [ 'Smith\'s Anesthesia for Infants and Children. 8e. p356' ], type: 'string', variables: { required: [ 'age' ], optional: [ 'height' ] }, calculate: function( data ) { var age = data.age.toNumber( 'yo' ); if( age >= 12 ) { return '6+'; } else if( age >= 1 ) { // ( age + 16 ) / 4 // To nicely display in increments of 0.5, double the calculation, round (floor), then divide by 2 return String( Math.floor( 2 * ( ( age + 16 ) / 4 ) ) / 2 ); } else if (age >= 0.5 ) { return '3.5-4'; } else if( age >= 0 ) { return '3-3.5'; } else { return '2.5-3'; } } }, fluidMaintenanceRate: { abbreviation: 'Fluid maint.', digits: 0, formula: '', name: 'Fluid maintenance rate', references: [ 'Miller\'s Anesthesia 7e, section IV, pg. 1728' ], units: 'mL/hr', variables: { required: [ 'weight' ] }, calculate: function( data ) { var weight = data.weight.toNumber( 'kgwt' ); // Uses 4-2-1 rule var maintenanceRate = 4 * Math.min( weight, 10 ); if( weight > 10 ) { maintenanceRate += 2 * Math.min( weight - 10, 10 ); } if( weight > 20) { maintenanceRate += weight - 20; } return maintenanceRate; } }, ibw: { abbreviation: 'IBW', link: 'https://en.wikipedia.org/wiki/Human_body_weight#Ideal_body_weight', name: 'Ideal body weight', references: [ 'Devine BJ. Gentamicin therapy. Drug Intell Clin Pharm. 1974;8:650–655.' ], units: 'kg', variables: { required: [ 'height', 'gender' ] }, calculate: function( data ) { if( data.height.toNumber( 'cm' ) < 152 ) { throw new Error( 'Ideal body weight may only be applied to persons 152 cm (60 inches) or taller' ); } var baseWeight = data.gender === 'F' ? 45.5 : 50; // baseWeight + 2.3 kg for every inch over 5 feet return baseWeight + 2.3 * ( data.height.toNumber( 'in' ) - 60 ); } }, lbw: { abbreviation: 'LBW', link: 'https://en.wikipedia.org/wiki/Lean_body_mass', name: 'Lean body weight', references: [ 'Janmahasatian S, Duffull SB, Ash S, Ward LC, Byrne NM, Green B. Quantification of lean bodyweight. Clin Pharmacokinet. 2005; 44(10): 1051-65.' ], units: 'kg', variables: { required: [ 'gender', 'height', 'weight' ] }, calculate: function( data ) { if( data.gender === 'F' ) { return 9270 * data.weight.toNumber( 'kgwt' ) / ( 8780 + 244 * data.weight.toNumber( 'kgwt' ) / Math.pow( data.height.toNumber( 'm' ), 2 ) ); } else { return 9270 * data.weight.toNumber( 'kgwt' ) / ( 6680 + 216 * data.weight.toNumber( 'kgwt' ) / Math.pow( data.height.toNumber( 'm' ), 2 ) ); } } } } ); var tableMaxWidth = 600; mw.calculators.addCalculators( moduleId, { anatomy: { name: 'Patient statistics', calculations: [ 'bmi', 'bsa', 'ibw', 'lbw' ], css: { 'max-width': tableMaxWidth }, table: true }, equipment: { name: 'Equipment', calculations: [ 'bladeMacSize', 'bladeMillerSize', 'ettSize' ], css: { 'max-width': tableMaxWidth }, table: true }, fluidManagement: { name: 'Fluid management', calculations: [ 'ebv', 'fluidMaintenanceRate' ], css: { 'max-width': tableMaxWidth }, table: true } } ); }() );