Injecting for Protein and Fat with an Artificial Pancreas System (APS)

13th Feb 2022 (updated 18th October 2022 to include unannounced meals)

In recent years scientists have discovered that carbohydrates are not the only macronutrient that has an effect blood sugar. In fact there are more and more medical studies exploring the effects of the other macronutrients (fat and protein) on blood sugar, and the complications they pose to blood sugar control. In the post below I provide my understanding and explore how I inject for protein and fats using an artificial pancreas system (APS).

Science / Background

One of the more interesting reads on the subject is a medical study entitled “The Role of Dietary Protein and Fat in Glycaemic Control in Type 1 Diabetes: Implications for Intensive Diabetes Management”. In the study they explore the effect of fats and protein on blood sugar management. I have summarised some of the more interesting elements below;

  • Fat itself doesn’t get converted through gluconeogenesis into carbohydrates, but glycerol from the hydrolysis of TAGs can be metabolised to pyruvate and makes up between 5-15% of the weigh of TAGs, so only part of the TAGs would be converted into glucose.
  • Fat does have an impact on gastric emptying, slowing the process down by delaying and reducing glycaemic and insulinemic responses.
  • Meal protein influences hormones such as cortisol, growth hormone, IGF-1 and ghrelin. These changes impact insulin resistance and increase insulin requirements.
  • 90% of the amino acids found in protein are converted into glucose through gluconeogenesis and will increase blood glucose.

How do I inject for the effects of fat and protein?

There are currently a few different methods to deal with the effects of protein and fat on blood glucose, I will outline the one I mostly use, but if you are on multiple daily injections (MDI) I strongly suggest reading Dr. Bernstein’s diabetes solution for an approach using regular insulin. All of these approaches require some experimenting on your part.

Loop / Android APS

Depending on the macronutrient profile, I shift my approach appropriately. I generally eat low-carb high protein meals as these meals are more easily managed by an APS or covered by MDI. For these types of meals I use the formula eCarbs (extended carbs) = (Protein *25%) + (Fat *10%). I then add an absorption time of around 5-6 hours, unless the fats are above 40g, then I would increase the absorption time to 7-8 hours to counter the delayed gastric emptying caused from the increased fat content.

eCarbs (extended carbs) = (Protein *25%) + (Fat *10%)

Example of a meal calculation

If the fat content is more than 60g, I prefer to add 30% to the total carb count and then split the dose 60/40 (this amount will vary on the protein content and your body’s ability to digest the food) . This can either be done by scheduling the second dose or by using an extended bolus.

Its often a hit and miss process. So I keep detailed notes to help me repeat the process should I guess correctly and want to eat that meal again. Otherwise its used as a variable and adjusted the next time I eat that meal.

Unannounced meals (UAM) – Android APS / OpenAPS

Another mechanism of managing high protein, moderate fat meals is though an Android APS / OpenAPS function called unannounced meals (UAM). This is extremely low input (All you need to do is not add carbs to AAPS). This requires you to manage your expectations somewhat in terms of how much fat AAPS can manage without user intervention, but moderate fat high protein meals can be managed with minor deviations and no user intervention as can be seen in the example below and is a complete game changer in terms of quality of life.

Goal

The goal of any meal as far as I am concerned is to keep your readings within a normal blood sugar range for the entire duration of the meal, whilst minimising any sudden spikes in blood sugar, essentially mimicking a working pancreas. To analyse this I use two values, standard deviation and time in range (TIR). These two (2) values will assist you in determining how good or bad a meal was for you in terms of blood sugar impact.

Time in Range (TIR): For TIR we are looking for a high percentage of your readings within a normal (I use 3.9-7.8 mmol/l ) range.

Standard Deviation: For standard deviation I look for values under 1 as a meal that has little to no blood glucose impact (BGI).

Coefficient of the variation (CV): Is the standard deviation divided by the average glucose. Its a measure that helps normalise the results by reducing the influence on average glucose. Most studies indicate that anything under 33% is good.

Here are my top 5 meals in terms of standard deviation (SD) and time-in-range (TIR).

You will notice that all the meals are low-carb high protein meals. My blood sugar hardly deviated in the first 3 hours of eating and then had a slight bump during the absorption of proteins later. This can be seen by observing the differences in the three (3) and five (5) hour standard deviation values. The first set of standard deviations being lower represent blood sugars that are close to the each other in number and not changing much, then they start getting a litter larger as blood sugars rise (so the SD gets higher) as the proteins digest in the last 2 hours.

Example of Android APS (UAM) counteracting the absorption of proteins and fats


An export of the device status for the 4 hours post meal consumption.

In the graph above we can see sugars (grey) steadily rise and peak (8.2 mmol/l) at around the two (2) hour mark due to protein digestion (gluconeogenesis). By the four (4) hour mark the system has infused an additional 3.2 units of insulin through super micro boluses (SMBs) and temporary basal adjustments to bring sugars down to a comfortable, but not perfect 6.2 mmol/l. This was completely managed by AAPS with no intervention by myself. Using additional functionality in AAPS we could provide insulin more quickly using automations and profile switches to further reduce the impact of protein. If we use the Loop eCarb formula previously stated, then insulin required for fat and protein equates to 3.3 units.

Meal NameInsulinCarbsProteinFatStart BG BGEnd BGAverage 2 hoursAverage 4 hoursTime in Range 2 hours (3.9-7.8)Time in Range 4 hours (3.9-7.8)
Lunch2 units @ meal start18.4g62g41g5.8 mmol/l6.2 mmol/l6.69 mmol/l6.87 mmol/l85.1%88.6%
Table providing results from UAM during lunch..
Daily graph exported from Nightscout.

As you can see from the Nightscout graph, no carbs have been entered into AAPS and results have been outstanding.

Example of Loop counteracting the absorption of proteins and fats

In the picture below we can see how Loop manages gluconeogenesis (eCarbs or extended carbs) from a low-carb high protein meal I ate.

At the top of the Loop user interface (UI) (the yellow arrow) we can see that Loop is issuing a 2.3U temporary basal (temp basal) almost three hours after I injected for the meal. This temp basal is to counter the absorption of the fats and proteins. These temp basals’ are issued and adjusted multiple times during the course of the meal digestion timeframe.

In the Insulin delivery section of the Loop UI (the red arrow) we can see Loop delivering insulin in the form a temp basal. It takes multiple hours for the protein to be synthesised into glucose and so a temporary basal can easily manages the resultant rise in blood sugar from gluconeogenesis.

In the Active carbohydrates section of the Loop UI (the blue arrow) we can see that there are still 14g of unabsorbed carbohydrates that Loop will manage with temporary basals’.

The picture below is from the ICE (Insulin Carbohydrate Effect) chart displaying a graphical representation of the predicted vs observed blood glucose effects that insulin and carbohydrates have on the body.

A graphical view of the absorption process.

Meal examples

Here are a few examples of meals I eat, not all are low-carb meals, but all meals are under 50g of carbs.

https://wordpress.com/post/t1daaps.wordpress.com/446

Day 42 – Loop – Micro-boluses – Free APS

A few days ago I enabled micro-boluses in Free APS and its been working remarkably well at managing any post prandial blood sugars highs. I have only setup a 45% partial bolus being administered when deemed necessary, but at this stage I feel its performing as I want it to. I still count carbs and administer ‘fake’ or ‘extended’ carbs and simply use the micro-boluses as a tool to quickly administer insulin in place of an extended high temporary basal, which would do the job a little more slowly. Tonight I test this on Chinese food. 🙂

In the chart below we can see that I ate a hearty dinner, and then decided to eat some raisin toast. I managed to stay in range almost the entire evening after all these carbs. Amazing. I would never have even considered doing this before Loop, and if I did I would have anxiety the entire time.

UPDATE: The night went well and overall I am very happy with the results. If I am honest though, I think my expectation in the beginning of this experiment was that Loop would autonomously manage my blood sugar with very little input from myself, but I have realised and this is not the case, and adapted my management to include pre-emptive blood sugar correction. I am certain that Loop would indeed make these decisions, but keeping my finger on the pulse allows me to obtain the level of blood sugar control I am after.

Time-in-range (TIR) = >3.9 AND < 7.8mmol/l

The goal: Eat Chinese food and stay in range

The strategy: I went onto MyFitnessPal and found honey chicken, pork pieces and mixed veg. I added them into the dinner section and calculated the insulin required for the carbohydrate, protein and fat macros. I was not sold on the bolus amount for the carbs and ended up only injecting 70% of the calculated amount, but Loop quickly started administering micro-boluses to correct this. The ‘fake carbs’ ( I don’t really know why this name has gained so much traction in the diabetic community, since proteins and fats end up being synthesised into glucose (carbs) through gluconeogenesis, and are thus sugars (real carbs) being generated by the body at a slower rate than the exogenous carbs we eat) for protein and fat were then added to Loop with a 4.5 hour digestion period. This will allow Loop to attribute blood sugar changes to carbs (from gluconeogenesis) for up to 6 hours, and be able to micro-bolus or increase basal for them.

The outcome: I noticed that after an hour I had a substantial amount of insulin on-board and my blood glucose (BG) was dropping at a rate that could not be sustained by the food I had eaten, so I ate another 20g of faster acting carbs. An hour after that I had a mild hypo (3.7 mmol/l) and ended up eating again to correct this. I believe a better strategy may have been to inject 60% of the bolus up-front and then monitor for an hour before injecting the remaining bolus. Then again, this may have been just a carb-counting error on my part.