Difference between revisions of "MediaWiki:Gadget-calculator-patients-core.js"

From WikiAnesthesia
(Changed gender label to sex)
 
(28 intermediate revisions by the same user not shown)
Line 45: Line 45:
             name: 'Age',
             name: 'Age',
             type: 'number',
             type: 'number',
             defaultValue: '40 yr',
             minValue: '20 wk',
            maxValue: '125 yr',
             maxLength: 3,
             maxLength: 3,
             units: [
             units: [
Line 54: Line 55:
         },
         },
         gender: {
         gender: {
             name: 'Gender',
             name: 'Sex',
             type: 'string',
             type: 'string',
            defaultValue: 'F',
             options: [
             options: [
                '',
                 'F',
                 'F',
                 'M'
                 'M'
Line 65: Line 66:
             name: 'Height',
             name: 'Height',
             type: 'number',
             type: 'number',
             defaultValue: '175 cm',
             minValue: '20 cm',
            maxValue: '300 cm',
             maxLength: 3,
             maxLength: 3,
             units: [
             units: [
Line 77: Line 79:
             name: 'Weight',
             name: 'Weight',
             type: 'number',
             type: 'number',
             defaultValue: '75 kgwt',
             minValue: '200 gwt',
            maxValue: '750 kgwt',
             maxLength: 3,
             maxLength: 3,
             units: [
             units: [
Line 84: Line 87:
                 'gwt'
                 'gwt'
             ]
             ]
        }
    } );
    /**
    * Very basic patient calculations which may be used by many modules
    */
    mw.calculators.addCalculations( {
        ibw: {
            name: 'Ideal body weight',
            abbreviation: 'IBW',
            data: {
                variables: {
                    required: [ 'height', 'gender' ]
                }
            },
            units: 'kgwt',
            link: 'https://en.wikipedia.org/wiki/Human_body_weight#Ideal_body_weight',
            references: [
                'Devine BJ. Gentamicin therapy. Drug Intell Clin Pharm. 1974;8:650–655.'
            ],
            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: {
            name: 'Lean body weight',
            abbreviation: 'LBW',
            data: {
                variables: {
                    required: [ 'gender', 'height', 'weight' ]
                }
            },
            units: 'kgwt',
            link: 'https://en.wikipedia.org/wiki/Lean_body_mass',
            references: [
                'Janmahasatian S, Duffull SB, Ash S, Ward LC, Byrne NM, Green B. Quantification of lean bodyweight. Clin Pharmacokinet. 2005; 44(10): 1051-65.'
            ],
            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 ) );
                }
            }
         }
         }
     } );
     } );
}() );
}() );

Latest revision as of 21:23, 11 July 2022

/**
 * @author Chris Rishel
 */
( function() {
    // Units for age (37 weeks = birth)
    mw.calculators.addUnits( {
        wk: {
            definition: '0.01923 year',
            offset: -37
        },
        mo: {
            definition: '1 month'
        },
        yr: {
            definition: '1 year',
            aliases: [ 'yo' ]
        }
    } );

    // Units for weight
    // Body weight needs to be treated as a different fundamental unit type from mass (otherwise it would cancel out
    // doing stoichiometry calculations.
    // Gram-weight, which uses short SI prefixes (e.g. 1 kgwt = 1000 gwt)
    mw.calculators.addUnitsBases( {
        weight: {
            toString: function( units ) {
                return units.replace( 'wt', '' );
            }
        }
    } );

    mw.calculators.addUnits( {
        gwt: {
            baseName: 'weight',
            prefixes: 'short'
        },
        lbwt: {
            baseName: 'weight',
            definition: '453.59237 gwt'
        }
    } );

    mw.calculators.addVariables( {
        age: {
            name: 'Age',
            type: 'number',
            minValue: '20 wk',
            maxValue: '125 yr',
            maxLength: 3,
            units: [
                'yr',
                'mo',
                'wk'
            ]
        },
        gender: {
            name: 'Sex',
            type: 'string',
            options: [
                '',
                'F',
                'M'
            ]
        },
        height: {
            name: 'Height',
            type: 'number',
            minValue: '20 cm',
            maxValue: '300 cm',
            maxLength: 3,
            units: [
                'cm',
                'm',
                'in',
                'ft'
            ]
        },
        weight: {
            name: 'Weight',
            type: 'number',
            minValue: '200 gwt',
            maxValue: '750 kgwt',
            maxLength: 3,
            units: [
                'kgwt',
                'lbwt',
                'gwt'
            ]
        }
    } );
}() );