*! version 1.0.0  //  Ariel Linden 21May2025 


program define hba1c2bg, rclass
version 11.0

	syntax varlist(max=1 numeric) [, MMOL REplace]
	
		
		// drop existing variables 
		if "`replace'" != "" {
			local list bg_mg bg_mmol
			foreach v of local list {
				capture confirm variable `v'
				if !_rc {
					drop `v'
				}
			}
		}
		
		// if HbA1c is a percent
		if "`mmol'" == "" {
			generate double bg_mg = (28.7 * `varlist' - 46.7)
			label var bg_mg "Estimated average blood glucose (mg/dL)"		
			generate double bg_mmol = (bg_mg / 18.015)	
			label var bg_mmol "Estimated average blood glucose (mmol/L)"
		}
		// if HbA1c is in mmols 
		else {
			tempvar a1cpct
			gen `a1cpct' = (`varlist' / 10.929) + 2.15
			generate double bg_mg = (28.7 * `a1cpct' - 46.7)
			label var bg_mg "Estimated average blood glucose (mg/dL)"	
			generate double bg_mmol = (bg_mg / 18.015)	
			label var bg_mmol "Estimated average blood glucose (mmol/L)"			
		}
		// format for viewing
		format %5.1f bg_mg bg_mmol
end