public void Do(ReplacementBuilderImpl replacementBuilder) { var insulinTotal = new Insulin(); var patterns = replacementBuilder.replacement.Items.Select(item => item.Pattern); foreach (var pattern in patterns) { var meal = pattern.From; var totalCuInMeal = meal.Items.Sum(item => item.Cu); var percentOfCu = totalCuInMeal == 0 ? 0 : pattern.Match.Cu / totalCuInMeal; insulinTotal.NormalBolus += (float)Math.Round(percentOfCu * pattern.Insulin.NormalBolus * pattern.Factor, 1); var totalFpuInMeal = meal.Items.Sum(item => item.Fpu); var percentOfFpu = totalFpuInMeal == 0 ? 0 : pattern.Match.Fpu / totalFpuInMeal; insulinTotal.SquareWaveBolus += (float)Math.Round(percentOfFpu * pattern.Insulin.SquareWaveBolus * pattern.Factor, 1); insulinTotal.SquareWaveBolusHours += (float)Math.Round(percentOfFpu * pattern.Insulin.SquareWaveBolusHours * pattern.Factor, 1); } replacementBuilder.replacement.InsulinTotal = insulinTotal; }
public void Do(ReplacementBuilderImpl replacementBuilder) { short energySum = replacementBuilder.meal.Energy; float replacementEnergySum = replacementBuilder.replacement.Items .Sum(replacement => replacement.Pattern.Match.Energy * replacement.Pattern.Factor); float notReplacedEnergy = Math.Abs(energySum - replacementEnergySum); double notReplacedEnergyPercent = notReplacedEnergy / energySum * 100; replacementBuilder.replacement.IsComplete = notReplacedEnergyPercent <= MAX_NOT_REPLACED_PERCENT_OF_ENERGY; }