Difference between revisions of "MediaWiki:Gadget-calculator-neuro.js"
From WikiAnesthesia
Chris Rishel (talk | contribs) (Created page with "( function() { mw.calculators.addUnitsBases( { temperature: { toString: function( units ) { units = units.replace( 'deg', '°' ); return units; } } } ); mw.calculators.addVariables( { paCO2: { name: 'PaCO<sub>2</sub>', type: 'number', abbreviation: 'PaCO<sub>2</sub>', minValue: '20 mmHg', defaultValue: '40 mmHg',...") |
Chris Rishel (talk | contribs) |
||
Line 211: | Line 211: | ||
'Tameem A, Krovvidi H, Cerebral physiology, Continuing Education in Anaesthesia Critical Care & Pain, Volume 13, Issue 4, August 2013, Pages 113–118, https://doi.org/10.1093/bjaceaccp/mkt001' | 'Tameem A, Krovvidi H, Cerebral physiology, Continuing Education in Anaesthesia Critical Care & Pain, Volume 13, Issue 4, August 2013, Pages 113–118, https://doi.org/10.1093/bjaceaccp/mkt001' | ||
], | ], | ||
searchData: 'cmro2', | |||
calculate: function( data ) { | calculate: function( data ) { | ||
// Temperature is included as an optional variable to generate the input. | // Temperature is included as an optional variable to generate the input. |
Revision as of 15:49, 5 April 2022
( function() { mw.calculators.addUnitsBases( { temperature: { toString: function( units ) { units = units.replace( 'deg', '°' ); return units; } } } ); mw.calculators.addVariables( { paCO2: { name: 'PaCO<sub>2</sub>', type: 'number', abbreviation: 'PaCO<sub>2</sub>', minValue: '20 mmHg', defaultValue: '40 mmHg', maxLength: 3, units: [ 'mmHg' ] }, temperature: { name: 'Temperature', type: 'number', abbreviation: 'Temp', minValue: '20 degC', maxValue: '44 degC', defaultValue: '37 degC', maxLength: 5, units: [ 'degC', 'degF' ] } } ); // Neuro mw.calculators.addCalculations( { brainMass: { name: 'Brain mass', data: { variables: { optional: [ 'age', 'gender' ] } }, digits: 0, units: 'gwt', description: 'This calculation will give a more precise estimate of brain mass if age and/or gender are provided.', references: [ 'Dekaban AS. Changes in brain weights during the span of human life: relation of brain weights to body heights and body weights. Ann Neurol. 1978 Oct;4(4):345-56. doi: 10.1002/ana.410040410. PMID: 727739.' ], calculate: function( data ) { var age = data.age ? data.age.toNumber( 'yr' ) : null; var gender = data.gender ? data.gender : null; var brainMassFemale = 1290; var brainMassMale = 1450; if( age !== null ) { if( age <= 10 / 365 ) { // <=10 days brainMassFemale = 360; brainMassMale = 380; } else if( age <= 4 * 30 / 365 ) { // Less than 4 months. This is a gap in the reported data of the paper, so linearly interpolate? var ageFactor = 1 - ( 4 * 30 / 365 - age ) / ( 4 * 30 / 365 - 10 / 365 ); brainMassFemale = 360 + ageFactor * ( 580 - 360 ); brainMassMale = 380 + ageFactor * ( 640 - 380 ); } else if( age <= 8 * 30 / 365 ) { // <=8 months brainMassFemale = 580; brainMassMale = 640; } else if( age <= 18 * 30 / 365 ) { // <=18 months brainMassFemale = 940; brainMassMale = 970; } else if( age <= 30 * 30 / 365 ) { // <=30 months brainMassFemale = 1040; brainMassMale = 1120; } else if( age <= 43 * 30 / 365 ) { // <=43 months brainMassFemale = 1090; brainMassMale = 1270; } else if( age <= 5 ) { brainMassFemale = 1150; brainMassMale = 1300; } else if( age <= 7 ) { brainMassFemale = 1210; brainMassMale = 1330; } else if( age <= 9 ) { brainMassFemale = 1180; brainMassMale = 1370; } else if( age <= 12 ) { brainMassFemale = 1260; brainMassMale = 1440; } else if( age <= 15 ) { brainMassFemale = 1280; brainMassMale = 1410; } else if( age <= 18 ) { brainMassFemale = 1340; brainMassMale = 1440; } else if( age <= 21 ) { brainMassFemale = 1310; brainMassMale = 1450; } else if( age <= 30 ) { brainMassFemale = 1300; brainMassMale = 1440; } else if( age <= 40 ) { brainMassFemale = 1290; brainMassMale = 1440; } else if( age <= 50 ) { brainMassFemale = 1290; brainMassMale = 1430; } else if( age <= 55 ) { brainMassFemale = 1280; brainMassMale = 1410; } else if( age <= 60 ) { brainMassFemale = 1250; brainMassMale = 1370; } else if( age <= 65 ) { brainMassFemale = 1240; brainMassMale = 1370; } else if( age <= 70 ) { brainMassFemale = 1240; brainMassMale = 1360; } else if( age <= 75 ) { brainMassFemale = 1230; brainMassMale = 1350; } else if( age <= 80 ) { brainMassFemale = 1190; brainMassMale = 1330; } else if( age <= 85 ) { brainMassFemale = 1170; brainMassMale = 1310; } else { brainMassFemale = 1140; brainMassMale = 1290; } } if( gender === 'F' ) { return brainMassFemale; } else if( gender === 'M' ) { return brainMassMale; } else { return ( brainMassFemale + brainMassMale ) / 2; } } }, cerebralBloodVolume: { name: 'Cerebral blood volume', abbreviation: 'CBV', data: { calculations: { required: [ 'brainMass' ] } }, units: 'mL', description: '4 mL per 100g of brain mass', references: [ 'Tameem A, Krovvidi H, Cerebral physiology, Continuing Education in Anaesthesia Critical Care & Pain, Volume 13, Issue 4, August 2013, Pages 113–118, https://doi.org/10.1093/bjaceaccp/mkt001' ], calculate: function( data ) { var brainMass = data.brainMass.toNumber( 'gwt' ); return 4 * brainMass / 100; } }, cerebralMetabolicRateFactor: { name: 'Cerebral metabolic rate factor', abbreviation: '%CMR', data: { variables: { optional: [ 'temperature' ] } }, description: '7% change in CMR for every 1 °C change in temperature', references: [ 'Tameem A, Krovvidi H, Cerebral physiology, Continuing Education in Anaesthesia Critical Care & Pain, Volume 13, Issue 4, August 2013, Pages 113–118, https://doi.org/10.1093/bjaceaccp/mkt001' ], calculate: function( data ) { var temperature = data.temperature ? data.temperature.toNumber( 'degC' ) : null; var cerebralMetabolicRateFactor = 1; if( temperature ) { cerebralMetabolicRateFactor += 0.07 * ( temperature - 37 ); } return cerebralMetabolicRateFactor; } }, cerebralMetabolicRateO2: { name: 'Cerebral metabolic rate (O<sub>2</sub>)', abbreviation: 'CMRO<sub>2</sub>', data: { calculations: { required: [ 'brainMass', 'cerebralMetabolicRateFactor' ] }, variables: { optional: [ 'temperature' ] } }, units: 'mL/min', description: '<ul><li>3 mL O<sub>2</sub>/min per 100g of brain mass</li><li>If temperature is provided, adjusts estimate using 7% change in CMR for every 1 °C change in temperature</li></ul>', references: [ 'Tameem A, Krovvidi H, Cerebral physiology, Continuing Education in Anaesthesia Critical Care & Pain, Volume 13, Issue 4, August 2013, Pages 113–118, https://doi.org/10.1093/bjaceaccp/mkt001' ], searchData: 'cmro2', calculate: function( data ) { // Temperature is included as an optional variable to generate the input. // It is used by cerebralMetabolicRateFactor, which is an internal calculation not typically shown. var brainMass = data.brainMass.toNumber( 'gwt' ); var cerebralMetabolicRateFactor = data.cerebralMetabolicRateFactor.toNumber(); return cerebralMetabolicRateFactor * 3 * brainMass / 100; } }, cerebralMetabolicRateGlucose: { name: 'Cerebral metabolic rate (Glucose)', abbreviation: 'CMR<sub>glu</sub>', data: { calculations: { required: [ 'brainMass', 'cerebralMetabolicRateFactor' ] } }, units: 'mg/min', description: '<ul><li>5 mg glucose/min per 100g of brain mass</li><li>7% change in CMR for every 1 °C change in temperature</li></ul>', references: [ 'Tameem A, Krovvidi H, Cerebral physiology, Continuing Education in Anaesthesia Critical Care & Pain, Volume 13, Issue 4, August 2013, Pages 113–118, https://doi.org/10.1093/bjaceaccp/mkt001' ], calculate: function( data ) { var brainMass = data.brainMass.toNumber( 'gwt' ); var cerebralMetabolicRateFactor = data.cerebralMetabolicRateFactor.toNumber(); return cerebralMetabolicRateFactor * 5 * brainMass / 100; } }, cerebralBloodFlow: { name: 'Cerebral blood flow', abbreviation: 'CBF', data: { calculations: { required: [ 'brainMass', 'cerebralMetabolicRateFactor' ] }, variables: { optional: [ 'paCO2' ] } }, units: 'mL/min', description: '<ul><li>50 mL/min per 100g of brain mass.</li><li>Every mmHg in PaCO2 changes CBF by 1.5 mL/min per 100g of brain mass.</li><li>Cerebral blood flow and cerebral metabolic rate are coupled. Factors that alter CMR (e.g. temperature) will proportionally alter CBF.</li>', references: [ 'Tameem A, Krovvidi H, Cerebral physiology, Continuing Education in Anaesthesia Critical Care & Pain, Volume 13, Issue 4, August 2013, Pages 113–118, https://doi.org/10.1093/bjaceaccp/mkt001', 'Brian JE Jr. Carbon dioxide and the cerebral circulation. Anesthesiology. 1998 May;88(5):1365-86. doi: 10.1097/00000542-199805000-00029. PMID: 9605698.' ], calculate: function( data ) { var brainMass = data.brainMass.toNumber( 'gwt' ); var cerebralMetabolicRateFactor = data.cerebralMetabolicRateFactor.toNumber(); var paCO2 = data.paCO2.toNumber( 'mmHg' ); var cerebralBloodFlow = cerebralMetabolicRateFactor * 50 * brainMass / 100; if( paCO2 ) { // CO2 reductions don't reduce CBF more than 50% var minCerebralBloodFlow = cerebralBloodFlow / 2; cerebralBloodFlow += 1.5 * brainMass / 100 * ( paCO2 - 40 ); cerebralBloodFlow = math.max( cerebralBloodFlow, minCerebralBloodFlow ); } return cerebralBloodFlow; } } } ); }() );