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:
CODEBLOCK0
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:
CODEBLOCK1
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:
CODEBLOCK2
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:
CODEBLOCK3
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.
CODEBLOCK4
Output:
CODEBLOCK5
Pattern 2: Obesity Screening
Scenario: BMI assessment for weight management clinic.
CODEBLOCK6
Pattern 3: Pediatric Growth Assessment
Scenario: Calculate child's BSA for medication dosing.
CODEBLOCK7
Pattern 4: Rapid Clinical Assessment
Scenario: Quick BMI/BSA for admission vital signs.
CODEBLOCK8
Complete Workflow Example
Comprehensive patient assessment:
CODEBLOCK9
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 - INLINECODE6 - Growth charts and percentiles
- INLINECODE7 - BSA-based drug calculations
- INLINECODE8 - Population-specific cutoffs
- INLINECODE9 - Comparison with reference standards
Scripts
Located in scripts/ directory:
- -
main.py - CLI calculator interface - INLINECODE12 - Core BMI/BSA calculations
- INLINECODE13 - Multiple BSA formula implementations
- INLINECODE14 - Child-specific calculations
- INLINECODE15 - Medication dose calculations
- INLINECODE16 - 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 |
|---|
| INLINECODE17 , INLINECODE18 | float | - | Yes | Weight in kilograms |
| INLINECODE19 , INLINECODE20 |
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
CODEBLOCK10
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
CODEBLOCK11
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²
- 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.
BMI & BSA 计算器
概述
用于健康评估、肥胖筛查和化疗剂量计算的人体测量临床计算器。
关键功能:
- - BMI 计算:标准及调整后的 BMI 公式
- BSA 估算:多种经过验证的公式(DuBois、Mosteller、Haycock)
- 体重分类:WHO 和 CDC 类别分配
- 剂量支持:化疗和药物剂量计算
- 儿科支持:适龄标准和计算
- 单位灵活性:支持公制和英制输入
使用时机
✅ 使用此技能的场景:
- - 计算需要 BSA 的化疗剂量(mg/m²)
- 临床实践中筛查肥胖或体重不足
- 根据身体成分调整药物剂量
- 在患者病历中记录基线人体测量数据
- 教授医学生临床计算方法
- 资源有限环境下的快速评估
❌ 不应使用的场景:
- - 仅凭 BMI 进行临床诊断 → 应使用综合代谢评估
- 孕期体重评估 → 应使用妊娠期体重增长图表
- 儿科生长发育评估 → 应使用包含百分位的 WHO/CDC 生长曲线
- 身体成分分析 → 应使用 DEXA 或生物电阻抗
- 运动员/肌肉发达患者 → 应考虑体脂百分比而非 BMI
集成:
- - 上游:ehr-semantic-compressor(患者数据提取)、automated-soap-note-generator(生命体征)
- 下游:drug-interaction-checker(剂量计算)、medication-reconciliation(剂量验证)
核心功能
1. BMI 计算
计算身体质量指数并进行分类:
python
from scripts.calculator import BMIBSACalculator
calc = BMIBSACalculator()
计算 BMI
result = calc.calculate_bmi(
weight_kg=70,
height_cm=175,
age=45,
sex=male
)
print(fBMI: {result.bmi:.1f} kg/m²)
print(f类别: {result.category}) # 正常体重
print(f理想体重范围: {result.idealweightrange})
BMI 分类(WHO):
| 类别 | BMI 范围 | 临床意义 |
|---|
| 体重不足 | < 18.5 | 营养不良风险 |
| 正常 |
18.5 - 24.9 | 健康范围 |
|
超重 | 25.0 - 29.9 | 风险增加 |
|
肥胖 I 级 | 30.0 - 34.9 | 高风险 |
|
肥胖 II 级 | 35.0 - 39.9 | 非常高风险 |
|
肥胖 III 级 | ≥ 40.0 | 极高风险 |
调整后的 BMI:
- - BMI Prime:BMI / 25(肥胖严重程度指数)
- Ponderal 指数:适用于高/矮个体的 BMI
- 年龄调整:适用于老年患者(>65岁)
2. BSA 计算
适用于不同临床场景的多种公式:
python
使用不同公式计算 BSA
bsa
results = calc.calculatebsa(
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 公式:
| 公式 | 方程式 | 最佳适用 |
|---|
| DuBois | 0.007184 × W^0.425 × H^0.725 | 成人(最常用) |
| Mosteller |
√(W × H / 3600) | 成人(简化版) |
|
Haycock | 0.024265 × W^0.5378 × H^0.3964 | 儿科 |
|
Gehan-George | 0.0235 × W^0.51456 × H^0.42246 | 肿瘤学 |
|
Yu | 0.015925 × W^0.5 × H^0.5 | 亚洲人群 |
3. 药物剂量计算
将 BSA 应用于药物剂量计算:
python
计算化疗剂量
dose = calc.calculate_dose(
bsa=bsa_results[dubois],
drug=carboplatin,
dose
perm2=400, # mg/m²
max_dose=800 # mg 上限
)
print(f计算剂量: {dose:.0f} mg)
print(f使用的 BSA: {bsa_results[dubois]:.2f} m²)
常见基于 BSA 的剂量:
- - 卡铂:基于 AUC(Calvert 公式)
- 5-氟尿嘧啶:400-600 mg/m²
- 阿霉素:60-75 mg/m²(终身最大剂量 450-550 mg/m²)
- 紫杉醇:135-175 mg/m²
4. 儿科计算
适用于儿童的年龄相关计算:
python
pediatric = calc.pediatric_mode(
weight_kg=25,
height_cm=120,
age_years=8,
sex=female
)
print(f年龄别 BMI 百分位: {pediatric.bmi_percentile}%)
print(f体重状况: {pediatric.weight_status})
print(fBSA(Haycock): {pediatric.bsa:.2f} m²)
儿科注意事项:
- - BMI 百分位(非绝对值)
- 生长曲线集成
- 特定年龄的 BSA 公式
- 随发育变化的身体成分
常见模式
模式 1:化疗剂量计算
场景:计算癌症患者的卡铂剂量。
bash
计算 BSA 和剂量
python scripts/main.py \
--weight 70 \
--height 175 \
--drug carboplatin \
--target-auc 5 \
--creatinine-clearance 80 \
--output dose_calculation.txt
输出:
BSA(DuBois): 1.79 m²
Calvert 公式: 剂量 = 目标 AUC × (GFR + 25)
= 5 × (80 + 25)
= 525 mg
最大剂量检查: 525 mg ≤ 800 mg ✓
推荐剂量: 525 mg
模式 2:肥胖筛查
场景:体重管理门诊的 BMI 评估。
python
全面评估 BMI
assessment = calc.assess_bmi(
weight_kg=95,
height_cm=165,
age=52,
sex=female,
waist_cm=98
)
print(fBMI: {assessment.bmi:.1f}(肥胖 II 级))
print(f腰围身高比: {assessment.whtr:.2f}(高风险))
print(f合并症风险: {assessment.health_risk})
print(f建议: {assessment.recommendations})
模式 3:儿科生长发育评估
场景:计算儿童的 BSA 用于药物剂量。
python
儿科剂量
child = calc.pediatric_assessment(
weight_kg=20,
height_cm=110,
age_years=6,
sex=male
)
print(fBSA: {child.bsa:.2f} m²(Haycock 公式))
print(fBMI 百分位: {child.bmi_percentile}th)
print(f阿霉素剂量: {child.bsa * 60:.0f} mg)
模式 4:快速临床评估
场景:入院生命体征的快速 BMI/BSA 计算。
bash
快速计算
python scripts/main.py --weight 80 --height 180 --quick
输出:
BMI: 24.7 kg/m²(正常)
BSA: 2.00 m²(DuBois)
理想体重: 65-80 kg
完整工作流程示例
全面患者评估:
python
from scripts.calculator import BMIBSACalculator
from scripts.reports import ClinicalReport
初始化
calc = BMIBSACalculator()
report = ClinicalReport()
患者数据
patient = {
weight_kg: 75,
height_cm: 170,
age: 55,
sex: female,
waist_cm: 88
}
计算所有指标
bmi = calc.calculate_bmi(
patient)
bsa = calc.calculate_bsa(
patient, formula=dubois)
assessment = calc.comprehensive_assessment(
patient)
生成报告
report_data = {
bmi: bmi,
bsa