Skills bmi-bsa-calculator
Calculate Body Mass Index (BMI) and Body Surface Area (BSA) for clinical
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/aipoch-ai/bmi-bsa-calculator" ~/.claude/skills/clawdbot-skills-bmi-bsa-calculator && rm -rf "$T"
skills/aipoch-ai/bmi-bsa-calculator/SKILL.mdBMI & 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:
(patient data extraction),ehr-semantic-compressor
(vital signs)automated-soap-note-generator - Downstream:
(dose calculation),drug-interaction-checker
(dosing verification)medication-reconciliation
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:
- Formula accuracy by populationbsa_formulas_comparison.md
- Growth charts and percentilespediatric_norms.md
- BSA-based drug calculationschemotherapy_dosing.md
- Population-specific cutoffsethnic_adjustments.md
- Comparison with reference standardscalculator_validation.md
Scripts
Located in
scripts/ directory:
- CLI calculator interfacemain.py
- Core BMI/BSA calculationscalculator.py
- Multiple BSA formula implementationsformulas.py
- Child-specific calculationspediatric.py
- Medication dose calculationsdosing.py
- Clinical report generationreports.py
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 |
|---|---|---|---|---|
, | float | - | Yes | Weight in kilograms |
, | float | - | Yes | Height in centimeters |
, | float | - | No | Standard drug dose per m² in mg (optional) |
, | string | text | No | Output format (text, json) |
, | 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
- No hardcoded credentials or API keys
- No unauthorized file system access
- Input validation for weight/height
- Output does not expose sensitive information
- Error messages sanitized
- Script execution in sandboxed environment
Prerequisites
# Python 3.7+ # No additional packages required (uses standard library)
Evaluation Criteria
Success Metrics
- Successfully calculates BMI using standard formula
- Successfully calculates BSA using DuBois formula
- Correctly categorizes BMI (Underweight, Normal, Overweight, Obese)
- Calculates drug doses based on BSA when provided
Test Cases
- Normal Adult: 70kg, 175cm → BMI 22.9 (Normal), BSA ~1.85 m²
- Drug Dosing: 70kg, 175cm, 100mg/m² → Dose 185mg
- 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.