🛠️ToolsShed

Calculateur de Vitamine D

Estimez vos besoins quotidiens en Vitamine D selon l'âge et le mode de vie.

Questions Fréquentes

Implémentation du Code

def vitamin_d_dose(weight_kg, serum_level_ng_ml=None, sun_exposure='low',
                   skin_tone='medium', age=30):
    """
    Estimate daily vitamin D3 supplementation in IU.

    Parameters:
        weight_kg        - body weight in kilograms
        serum_level_ng_ml- current 25(OH)D level (None if unknown)
        sun_exposure     - 'low' | 'moderate' | 'high'
        skin_tone        - 'light' | 'medium' | 'dark'
        age              - age in years (>70 needs more)

    Returns recommended daily dose in IU.
    """
    # Base dose: ~40 IU/kg for maintenance
    base_iu = weight_kg * 40

    # Adjust for known deficiency
    if serum_level_ng_ml is not None:
        if serum_level_ng_ml < 12:        # severe deficiency
            base_iu = weight_kg * 100
        elif serum_level_ng_ml < 20:      # moderate deficiency
            base_iu = weight_kg * 70
        elif serum_level_ng_ml >= 30:     # sufficient — lower dose
            base_iu = weight_kg * 25

    # Sun exposure reduces need
    sun_adj = {'low': 0, 'moderate': -400, 'high': -800}
    base_iu += sun_adj.get(sun_exposure, 0)

    # Darker skin produces less D3 from sunlight
    skin_adj = {'light': 0, 'medium': 200, 'dark': 400}
    base_iu += skin_adj.get(skin_tone, 0)

    # Older adults absorb less efficiently
    if age > 70:
        base_iu += 400

    # Clamp to safe range 400–4000 IU/day
    return max(400, min(4000, round(base_iu / 100) * 100))

# Examples
print(vitamin_d_dose(70))                              # 70 kg, unknown level
print(vitamin_d_dose(90, serum_level_ng_ml=15,         # 90 kg, deficient
                     sun_exposure='low', skin_tone='dark', age=65))

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.