bmi-bsa-calculator
$
npx mdskill add aipoch/medical-research-skills/bmi-bsa-calculatorCalculate BMI and BSA for clinical dosing and screening.
- Enables obesity screening and chemotherapy dose computation.
- Depends on validated formulas like DuBois and Mosteller.
- Executes calculations only when input is physiologically plausible.
- Delivers WHO classifications and pediatric percentile data.
SKILL.md
.github/skills/bmi-bsa-calculatorView on GitHub ↗
---
name: bmi-bsa-calculator
description: 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.
license: MIT
author: aipoch
---
> **Source**: [https://github.com/aipoch/medical-research-skills](https://github.com/aipoch/medical-research-skills)
# BMI & BSA Calculator
Clinical calculator for anthropometric measurements used in health assessment, obesity screening, and chemotherapy dosing calculations.
**Key Capabilities:**
- **BMI Calculation**: Standard and adjusted BMI formulas with WHO classification
- **BSA Estimation**: Multiple validated formulas (DuBois, Mosteller, Haycock, Gehan-George)
- **Weight Classification**: WHO and CDC category assignment
- **Dosing Support**: Chemotherapy and medication dose calculations
- **Pediatric Support**: Age-appropriate norms and percentile calculations
- **Unit Flexibility**: Metric and imperial input support
---
## Input Validation
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."
---
## Quick Check
```bash
python -m py_compile scripts/main.py
python scripts/main.py --help
```
## Workflow
1. Confirm weight, height, and any optional parameters (age, sex, drug dose).
2. Validate inputs are within physiologically plausible ranges; stop if values are outside bounds.
3. Run the script or apply the documented calculation path.
4. Return a structured result separating assumptions, deliverables, risks, and unresolved items.
5. If execution fails or inputs are incomplete, switch to the fallback path and state exactly what blocked full completion.
**Fallback:** 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."
---
## Core Capabilities
### 1. BMI Calculation
```python
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 |
### 2. BSA Calculation
```python
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 |
### 3. Drug Dosing
```python
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².
### 4. Pediatric Calculations
```python
pediatric = calc.pediatric_mode(weight_kg=25, height_cm=120, age_years=8, sex="female")
print(f"BMI-for-age percentile: {pediatric.bmi_percentile}%")
```
---
## CLI Usage
```text
# 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
```
---
## Parameters
| 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 |
---
## Output Requirements
Every final response must make these explicit:
- Objective or requested deliverable
- Inputs used (weight, height, age, sex) and assumptions introduced
- Formula(s) selected and rationale
- Core result: BMI value + category, BSA value + formula used, dose if applicable
- Constraints and risks (BMI is screening only; not diagnostic)
- Unresolved items and next-step checks
---
## Error Handling
- If `--weight` or `--height` is missing, state the missing parameter and request it.
- If values are outside valid ranges (weight <2 or >300 kg; height <50 or >250 cm), flag as implausible and request correction.
- If `scripts/main.py` fails, report the failure point and provide manual calculation fallback.
- Do not fabricate results or clinical interpretations.
---
## Common Pitfalls
- **Unit confusion**: Always verify kg vs lbs, cm vs inches
- **Wrong formula**: Use Haycock for children < 12 years
- **BMI over-interpretation**: BMI is a screening tool; clinical correlation required
- **Athletes misclassified**: Consider waist circumference or body fat %
- **BSA rounding**: Use precise values for chemotherapy dosing
---
## Limitations
- BMI does not distinguish fat from muscle; varies by ethnicity
- All BSA formulas are approximations (10–15% variation normal)
- Not for diagnosis — BMI/BSA are tools, not clinical diagnoses
- Standard formulas inaccurate for amputees; special considerations for pregnancy
> ⚕️ **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
- `references/bsa_formulas_comparison.md` — Formula accuracy by population
- `references/pediatric_norms.md` — Growth charts and percentiles
- `references/chemotherapy_dosing.md` — BSA-based drug calculations
- `references/ethnic_adjustments.md` — Population-specific cutoffs
More from aipoch/medical-research-skills
- 3d-molecule-ray-tracerGenerate photorealistic rendering scripts for PyMOL and UCSF ChimeraX.
- abstract-summarizerTransform lengthy academic papers into concise, structured 250-word abstracts.
- abstract-trimmerPrecision editing tool that reduces abstract word count through intelligent compression techniques, maintaining scientific rigor while meeting strict journal and conference requirements.
- academic-abstract-refinerRefines long medical academic texts into SCI-style unstructured Chinese and English abstracts; use when you need to condense drafts/reports/summaries into bilingual abstracts and generate Summary_Report.md.
- academic-cv-generatorGenerate structured academic CVs from free-form Chinese/English text and export to Word (.docx). Use this skill when you are asked to organize, generate, or optimize an academic CV (e.g., publications/projects/awards) into a consistent, formatted document with uniform-colored section headers and optional bilingual output.
- academic-highlight-generatorGenerates submission-ready Elsevier/SCI Highlights from manuscript text or extracted PDF/DOCX/TXT content. Use when a user needs 3-5 concise, evidence-grounded highlight bullets for a research paper, review, meta-analysis, case report, or bioinformatics manuscript.
- academic-norm-reviewDetects content similarity, verifies standardized citations and abbreviations, and flags potential academic integrity risks; use it before submission, during academic writing QA, or for compliance reviews.
- academic-poster-generatorComplete workflow for generating academic research posters from PDF literature; use when you need to extract paper content from PDFs and produce a LaTeX-based poster (beamerposter/tikzposter/baposter) with mandatory figure generation and a final rendered HTML deliverable.
- acronym-unpackerIntelligent medical abbreviation disambiguation tool that resolves ambiguous acronyms using clinical context, specialty-specific knowledge, and document-level semantic analysis.
- active-comparator-single-soc-faers-safety-comparisonGenerates complete FAERS pharmacovigilance study designs for multi-drug or class-level safety comparison inside one predefined SOC or AE family using active comparators, disproportionality analysis, subgroup characterization, and reviewer-facing evidence control.