Convert All Healthcare Costs to Per Member Per Month—Enable Apples-to-Apples Comparison Across Different Population Sizes
python# PMPM Normalization Framework def calculate_member_months(enrollment_data): """ Calculate exact member-months accounting for: - Mid-month enrollments/terminations - Coverage tier (EE, EE+Spouse, EE+Child, Family) - Part-time vs. full-time status """ member_months = 0 for enrollment in enrollment_data: # Days enrolled in each month for month in enrollment.coverage_periods: days_in_month = get_days_in_month(month) days_enrolled = enrollment.days_covered_in_month(month) # Fractional member-month fraction = days_enrolled / days_in_month # Coverage tier multiplier covered_lives = get_covered_lives(enrollment.tier) member_months += fraction * covered_lives return member_months def calculate_pmpm_costs(claims, enrollment): """ Convert absolute costs to PMPM """ total_claims = sum(claims.allowed_amount) total_member_months = calculate_member_months(enrollment) pmpm = total_claims / total_member_months return { 'total_claims': total_claims, 'member_months': total_member_months, 'pmpm': pmpm, 'annualized_pmpy': pmpm * 12 } # Example: Mid-Year Acquisition Impact # Q1 2024: 1,000 members, $2.85M claims # - Member-months: 3,000 (Jan-Mar) # - PMPM: $950 # # Q2 2024: 1,450 members, $3.95M claims (acquired 450 employees in April) # - Member-months: 4,200 (Apr-Jun, accounting for April mid-month start) # - PMPM: $941 # # Conclusion: PMPM actually DECREASED by 0.9% despite absolute # claims increasing 38% due to acquisition
Convert all costs to PMPM with exact member-month calculations. Trend cleanly regardless of headcount changes. Benchmark against any peer, any size.
Normalize to PMPM→