Calculate Body Mass Index (BMI) and Body Surface Area (BSA) for clinical assessment, obesity screening, and chemotherapy dosing. Supports multiple BSA formulas (DuBois, Mosteller, Haycock), WHO weight classification, pediatric calculations, and metric/imperial input.
58
68%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./scientific-skills/Other/bmi-bsa-calculator/SKILL.mdClinical calculator for anthropometric measurements used in health assessment, obesity screening, and chemotherapy dosing calculations.
Key Capabilities:
This skill accepts: weight (kg or lbs), height (cm or inches), and optional parameters (age, sex, drug dose per m², output format). All values must be physiologically plausible.
Valid ranges: weight 2–300 kg, height 50–250 cm.
If the request does not involve calculating BMI or BSA — for example, asking to diagnose a condition, interpret lab results, or provide dietary advice — do not proceed. Instead respond:
"BMI & BSA Calculator is designed to calculate Body Mass Index and Body Surface Area for clinical screening and dosing support. Please provide weight and height values. For clinical diagnosis or treatment decisions, consult a qualified healthcare professional."
python -m py_compile scripts/main.py
python scripts/main.py --helpFallback: If --weight or --height is missing, respond: "Required parameters missing. Please provide --weight (kg) and --height (cm). Cannot calculate BMI or BSA without both values."
from scripts.calculator import BMIBSACalculator
calc = BMIBSACalculator()
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}")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 |
bsa_results = calc.calculate_bsa(
weight_kg=70, height_cm=175,
formulas=["dubois", "mosteller", "haycock", "gehan_george"]
)BSA Formulas:
| Formula | Best For |
|---|---|
| DuBois | Adults (most common) |
| Mosteller | Adults (simplified) |
| Haycock | Pediatrics |
| Gehan-George | Oncology |
| Yu | Asian populations |
dose = calc.calculate_dose(bsa=1.79, drug="carboplatin", dose_per_m2=400, max_dose=800)Common BSA-based doses: Carboplatin (Calvert formula), 5-FU 400–600 mg/m², Doxorubicin 60–75 mg/m², Paclitaxel 135–175 mg/m².
pediatric = calc.pediatric_mode(weight_kg=25, height_cm=120, age_years=8, sex="female")
print(f"BMI-for-age percentile: {pediatric.bmi_percentile}%")# 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| Parameter | Type | Required | Description |
|---|---|---|---|
--weight, -w | float | Yes | Weight in kilograms |
--height, -H | float | Yes | Height in centimeters |
--dose, -d | float | No | Drug dose per m² in mg |
--format, -f | string | No | Output format (text, json) |
--output, -o | string | No | Output file path |
Every final response must make these explicit:
--weight or --height is missing, state the missing parameter and request it.scripts/main.py fails, report the failure point and provide manual calculation fallback.⚕️ Clinical Note: BMI and BSA are screening and calculation tools, not substitutes for clinical judgment. Always correlate with physical examination and patient history. Double-check all chemotherapy calculations independently.
references/bsa_formulas_comparison.md — Formula accuracy by populationreferences/pediatric_norms.md — Growth charts and percentilesreferences/chemotherapy_dosing.md — BSA-based drug calculationsreferences/ethnic_adjustments.md — Population-specific cutoffsf5ef65b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.