🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Bmi Bsa Calculator

by @aipoch-ai

Calculate Body Mass Index (BMI) and Body Surface Area (BSA) for clinical assessment and drug dosing. Supports multiple BSA formulas (DuBois, Mosteller, Hayco...

Versionv0.1.0
Downloads464
TERMINAL
clawhub install bmi-bsa-calculator

πŸ“– About This Skill


name: bmi-bsa-calculator description: Calculate Body Mass Index (BMI) and Body Surface Area (BSA) for clinical assessment and drug dosing. Supports multiple BSA formulas (DuBois, Mosteller, Haycock) and provides weight category classification with pediatric and adult norms. allowed-tools: [Read, Write, Bash, Edit] license: MIT metadata: skill-author: AIPOCH

BMI & BSA Calculator

Overview

Clinical calculator for anthropometric measurements used in health assessment, obesity screening, and chemotherapy dosing calculations.

Key Capabilities:

  • BMI Calculation: Standard and adjusted BMI formulas
  • BSA Estimation: Multiple validated formulas (DuBois, Mosteller, Haycock)
  • Weight Classification: WHO and CDC category assignment
  • Dosing Support: Chemotherapy and medication dose calculations
  • Pediatric Support: Age-appropriate norms and calculations
  • Unit Flexibility: Metric and imperial input support
  • When to Use

    βœ… Use this skill when:

  • Calculating chemotherapy doses requiring BSA (mg/mΒ²)
  • Screening for obesity or underweight in clinical practice
  • Adjusting drug doses based on body composition
  • Documenting baseline anthropometrics in patient charts
  • Teaching medical students clinical calculations
  • Quick assessment in resource-limited settings
  • ❌ Do NOT use when:

  • BMI alone for clinical diagnosis β†’ Use comprehensive metabolic assessment
  • Pregnancy weight assessment β†’ Use gestational weight gain charts
  • Pediatric growth evaluation β†’ Use WHO/CDC growth charts with percentiles
  • Body composition analysis β†’ Use DEXA or bioimpedance
  • Athletic/muscular patients β†’ Consider body fat % instead of BMI
  • Integration:

  • Upstream: ehr-semantic-compressor (patient data extraction), automated-soap-note-generator (vital signs)
  • Downstream: drug-interaction-checker (dose calculation), medication-reconciliation (dosing verification)
  • Core Capabilities

    1. BMI Calculation

    Calculate Body Mass Index with classification:

    from scripts.calculator import BMIBSACalculator

    calc = BMIBSACalculator()

    Calculate BMI

    result = calc.calculate_bmi( weight_kg=70, height_cm=175, age=45, sex="male" )

    print(f"BMI: {result.bmi:.1f} kg/mΒ²") print(f"Category: {result.category}") # Normal weight print(f"Ideal weight range: {result.ideal_weight_range}")

    BMI Categories (WHO): | Category | BMI Range | Clinical Significance | |----------|-----------|---------------------| | Underweight | < 18.5 | Malnutrition risk | | Normal | 18.5 - 24.9 | Healthy range | | Overweight | 25.0 - 29.9 | Increased risk | | Obese I | 30.0 - 34.9 | High risk | | Obese II | 35.0 - 39.9 | Very high risk | | Obese III | β‰₯ 40.0 | Extremely high risk |

    Adjusted BMI:

  • BMI Prime: BMI / 25 (obesity severity index)
  • Ponderal Index: BMI for tall/short individuals
  • Age-adjusted: For elderly patients (>65)
  • 2. BSA Calculation

    Multiple formulas for different clinical scenarios:

    # Calculate BSA using different formulas
    bsa_results = calc.calculate_bsa(
        weight_kg=70,
        height_cm=175,
        formulas=["dubois", "mosteller", "haycock", "gehan_george"]
    )

    for formula, bsa in bsa_results.items(): print(f"{formula}: {bsa:.2f} mΒ²")

    BSA Formulas: | Formula | Equation | Best For | |---------|----------|----------| | DuBois | 0.007184 Γ— W^0.425 Γ— H^0.725 | Adults (most common) | | Mosteller | √(W Γ— H / 3600) | Adults (simplified) | | Haycock | 0.024265 Γ— W^0.5378 Γ— H^0.3964 | Pediatrics | | Gehan-George | 0.0235 Γ— W^0.51456 Γ— H^0.42246 | Oncology | | Yu | 0.015925 Γ— W^0.5 Γ— H^0.5 | Asian populations |

    3. Drug Dosing Calculations

    Apply BSA to medication dosing:

    # Calculate chemotherapy dose
    dose = calc.calculate_dose(
        bsa=bsa_results["dubois"],
        drug="carboplatin",
        dose_per_m2=400,  # mg/mΒ²
        max_dose=800  # mg cap
    )

    print(f"Calculated dose: {dose:.0f} mg") print(f"BSA used: {bsa_results['dubois']:.2f} mΒ²")

    Common BSA-Based Doses:

  • Carboplatin: AUC-based (Calvert formula)
  • 5-FU: 400-600 mg/mΒ²
  • Doxorubicin: 60-75 mg/mΒ² (lifetime max 450-550 mg/mΒ²)
  • Paclitaxel: 135-175 mg/mΒ²
  • 4. Pediatric Calculations

    Age-appropriate calculations for children:

    pediatric = calc.pediatric_mode(
        weight_kg=25,
        height_cm=120,
        age_years=8,
        sex="female"
    )

    print(f"BMI-for-age percentile: {pediatric.bmi_percentile}%") print(f"Weight status: {pediatric.weight_status}") print(f"BSA (Haycock): {pediatric.bsa:.2f} mΒ²")

    Pediatric Considerations:

  • BMI percentiles (not absolute values)
  • Growth chart integration
  • Age-specific BSA formulas
  • Body composition changes with development
  • Common Patterns

    Pattern 1: Chemotherapy Dosing

    Scenario: Calculate carboplatin dose for cancer patient.

    # Calculate BSA and dose
    python scripts/main.py \
      --weight 70 \
      --height 175 \
      --drug carboplatin \
      --target-auc 5 \
      --creatinine-clearance 80 \
      --output dose_calculation.txt
    

    Output:

    BSA (DuBois): 1.79 mΒ²
    Calvert Formula: Dose = Target AUC Γ— (GFR + 25)
                     = 5 Γ— (80 + 25)
                     = 525 mg
    Maximum dose check: 525 mg ≀ 800 mg βœ“
    Recommended dose: 525 mg
    

    Pattern 2: Obesity Screening

    Scenario: BMI assessment for weight management clinic.

    # BMI with full assessment
    assessment = calc.assess_bmi(
        weight_kg=95,
        height_cm=165,
        age=52,
        sex="female",
        waist_cm=98
    )

    print(f"BMI: {assessment.bmi:.1f} (Obese Class II)") print(f"Waist-to-height ratio: {assessment.whtr:.2f} (High risk)") print(f"Comorbidity risk: {assessment.health_risk}") print(f"Recommended: {assessment.recommendations}")

    Pattern 3: Pediatric Growth Assessment

    Scenario: Calculate child's BSA for medication dosing.

    # Pediatric dosing
    child = calc.pediatric_assessment(
        weight_kg=20,
        height_cm=110,
        age_years=6,
        sex="male"
    )

    print(f"BSA: {child.bsa:.2f} mΒ² (Haycock formula)") print(f"BMI percentile: {child.bmi_percentile}th") print(f"Doxorubicin dose: {child.bsa * 60:.0f} mg")

    Pattern 4: Rapid Clinical Assessment

    Scenario: Quick BMI/BSA for admission vital signs.

    # Quick calculation
    python scripts/main.py --weight 80 --height 180 --quick

    Output:

    BMI: 24.7 kg/mΒ² (Normal)

    BSA: 2.00 mΒ² (DuBois)

    Ideal weight: 65-80 kg

    Complete Workflow Example

    Comprehensive patient assessment:

    from scripts.calculator import BMIBSACalculator
    from scripts.reports import ClinicalReport

    Initialize

    calc = BMIBSACalculator() report = ClinicalReport()

    Patient data

    patient = { "weight_kg": 75, "height_cm": 170, "age": 55, "sex": "female", "waist_cm": 88 }

    Calculate all metrics

    bmi = calc.calculate_bmi(**patient) bsa = calc.calculate_bsa(**patient, formula="dubois") assessment = calc.comprehensive_assessment(**patient)

    Generate report

    report_data = { "bmi": bmi, "bsa": bsa, "assessment": assessment, "recommendations": assessment.recommendations }

    report.generate(report_data, output="patient_assessment.pdf")

    Quality Checklist

    Input Validation:

  • [ ] Weight realistic (2-300 kg range)
  • [ ] Height realistic (50-250 cm range)
  • [ ] Units clearly specified (kg/lbs, cm/in)
  • [ ] Age appropriate for formulas used
  • Calculation Accuracy:

  • [ ] Formula selection appropriate for patient
  • [ ] BSA formula matches clinical context
  • [ ] Pediatric vs. adult norms correctly applied
  • [ ] Rounding appropriate (1-2 decimal places)
  • Clinical Interpretation:

  • [ ] CRITICAL: BMI is screening tool, not diagnostic
  • [ ] Ethnicity-specific cutoffs considered
  • [ ] Muscle mass considered (athletes)
  • [ ] Age adjustments applied (elderly/children)
  • Documentation:

  • [ ] Formula used documented (DuBois vs. Mosteller)
  • [ ] Units clearly stated
  • [ ] Date of calculation recorded
  • [ ] Dose limits verified for chemotherapy
  • Common Pitfalls

    Calculation Errors:

  • ❌ Unit confusion β†’ Pounds vs. kg, inches vs. cm
  • - βœ… Always verify units; convert if necessary

  • ❌ Wrong formula β†’ Using adult BSA for infants
  • - βœ… Use Haycock for children < 12 years

  • ❌ BMI over-interpretation β†’ Diagnosing based on BMI alone
  • - βœ… BMI is screening tool; clinical correlation required

    Clinical Misuse:

  • ❌ Athletes misclassified β†’ Muscular patients marked obese
  • - βœ… Consider waist circumference or body fat %

  • ❌ Elderly inappropriate norms β†’ Same cutoffs for all ages
  • - βœ… Use age-adjusted BMI for >65 years

  • ❌ Ignoring ethnicity β†’ Universal cutoffs applied
  • - βœ… Asian populations: lower obesity thresholds

    Dosing Errors:

  • ❌ BSA rounding β†’ 1.79 mΒ² rounded to 1.8 mΒ²
  • - βœ… Use precise values for chemotherapy

  • ❌ Max dose ignored β†’ Exceeding lifetime limits
  • - βœ… Always check cumulative doses (doxorubicin)

    References

    Available in references/ directory:

  • bsa_formulas_comparison.md - Formula accuracy by population
  • pediatric_norms.md - Growth charts and percentiles
  • chemotherapy_dosing.md - BSA-based drug calculations
  • ethnic_adjustments.md - Population-specific cutoffs
  • calculator_validation.md - Comparison with reference standards
  • Scripts

    Located in scripts/ directory:

  • main.py - CLI calculator interface
  • calculator.py - Core BMI/BSA calculations
  • formulas.py - Multiple BSA formula implementations
  • pediatric.py - Child-specific calculations
  • dosing.py - Medication dose calculations
  • reports.py - Clinical report generation
  • Limitations

  • BMI Limitations: Doesn't distinguish fat from muscle; varies by ethnicity
  • BSA Estimation: All formulas are approximations; 10-15% variation normal
  • Extreme Values: Very short/tall patients may have inaccurate estimates
  • Not for Diagnosis: BMI/BSA are tools, not clinical diagnoses
  • Amputees: Standard formulas inaccurate; adjustment needed
  • Pregnancy: Special considerations not included
  • Parameters

    | Parameter | Type | Default | Required | Description | |-----------|------|---------|----------|-------------| | --weight, -w | float | - | Yes | Weight in kilograms | | --height, -H | float | - | Yes | Height in centimeters | | --dose, -d | float | - | No | Standard drug dose per mΒ² in mg (optional) | | --format, -f | string | text | No | Output format (text, json) | | --output, -o | string | - | No | Output file path (optional) |

    Usage

    Basic Usage

    # Calculate BMI and BSA
    python scripts/main.py --weight 70 --height 175

    Calculate with drug dosing

    python scripts/main.py --weight 70 --height 175 --dose 100

    Output as JSON

    python scripts/main.py --weight 70 --height 175 --format json --output results.json

    Risk Assessment

    | Risk Indicator | Assessment | Level | |----------------|------------|-------| | Code Execution | Python script executed locally | Low | | Network Access | No external API calls | Low | | File System Access | Optional file output only | Low | | Data Exposure | No sensitive data stored | Low | | Clinical Risk | Results used for medical decisions | Medium |

    Security Checklist

  • [x] No hardcoded credentials or API keys
  • [x] No unauthorized file system access
  • [x] Input validation for weight/height
  • [x] Output does not expose sensitive information
  • [x] Error messages sanitized
  • [x] Script execution in sandboxed environment
  • Prerequisites

    # Python 3.7+
    

    No additional packages required (uses standard library)

    Evaluation Criteria

    Success Metrics

  • [x] Successfully calculates BMI using standard formula
  • [x] Successfully calculates BSA using DuBois formula
  • [x] Correctly categorizes BMI (Underweight, Normal, Overweight, Obese)
  • [x] Calculates drug doses based on BSA when provided
  • Test Cases

    1. Normal Adult: 70kg, 175cm β†’ BMI 22.9 (Normal), BSA ~1.85 mΒ² 2. Drug Dosing: 70kg, 175cm, 100mg/mΒ² β†’ Dose 185mg 3. JSON Output: Valid JSON with all fields

    Lifecycle Status

  • Current Stage: Draft
  • Next Review Date: 2026-03-06
  • Known Issues: None
  • Planned Improvements:
  • - Add additional BSA formulas (Haycock, Mosteller) - Add pediatric BMI percentiles - Add unit conversion (lbs, ft/in)


    βš•οΈ Clinical Note: BMI and BSA are screening and calculation tools, not substitutes for clinical judgment. Always correlate with physical examination, patient history, and other assessments. Double-check all chemotherapy calculations independently.

    ⚑ When to Use

    TriggerAction
    - Calculating chemotherapy doses requiring BSA (mg/mΒ²)
    - Screening for obesity or underweight in clinical practice
    - Adjusting drug doses based on body composition
    - Documenting baseline anthropometrics in patient charts
    - Teaching medical students clinical calculations
    - Quick assessment in resource-limited settings
    **❌ Do NOT use when:**
    - BMI alone for clinical diagnosis β†’ Use comprehensive metabolic assessment
    - Pregnancy weight assessment β†’ Use gestational weight gain charts
    - Pediatric growth evaluation β†’ Use WHO/CDC growth charts with percentiles
    - Body composition analysis β†’ Use DEXA or bioimpedance
    - Athletic/muscular patients β†’ Consider body fat % instead of BMI
    **Integration:**
    - **Upstream**: `ehr-semantic-compressor` (patient data extraction), `automated-soap-note-generator` (vital signs)
    - **Downstream**: `drug-interaction-checker` (dose calculation), `medication-reconciliation` (dosing verification)

    πŸ’‘ Examples

    Basic Usage

    # Calculate BMI and BSA
    python scripts/main.py --weight 70 --height 175

    Calculate with drug dosing

    python scripts/main.py --weight 70 --height 175 --dose 100

    Output as JSON

    python scripts/main.py --weight 70 --height 175 --format json --output results.json

    βš™οΈ Configuration

    # Python 3.7+
    

    No additional packages required (uses standard library)