Machine learning in an artificial pancreas
The artificial pancreas system addresses the burden of insulin therapy by using machine learning to automatically adjust insulin doses, optimizing glucose control and enhancing treatment adherence.
Patent Information
- Application Number
- JP2025148506
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2020-02-20
- Filing Date
- 2025-09-08
- Publication Date
- 2026-01-21
AI Technical Summary
The process of customizing and administering insulin therapy for diabetes is burdensome, leading many individuals to avoid or neglect proper treatment, which can result in serious health events.
An artificial pancreas system utilizing machine learning, comprising a wearable blood glucose monitoring device, insulin delivery system, and computing device, automatically adjusts insulin doses to maintain blood glucose levels within a target range, learning from data patterns and user inputs to optimize therapy.
This system significantly reduces the time required to determine insulin administration rates and predicts events affecting glucose levels, allowing for automated adjustments, thereby reducing the burden of traditional insulin therapy and improving adherence.
Smart Images

Figure 2026009892000001_ABST
Abstract
Description
[Technical Field]
[0001] INCORPORATION BY REFERENCE OF RELATED APPLICATIONS This application claims the benefit of U.S. Provisional Patent Application No. 62 / 979,347, entitled "Machine Learning in An Artificial Pancreas," filed February 20, 2020. The foregoing application is incorporated by reference in its entirety and hereby expressly made a part of this specification. [Background technology]
[0002] Diabetes is a metabolic condition that affects hundreds of millions of people and is one of the leading causes of death worldwide. For people with diabetes, access to treatment is critical to their survival. With appropriate treatment, serious damage to the heart, blood vessels, eyes, kidneys, and nerves caused by diabetes can be largely avoided. Proper treatment for people with type 1 diabetes generally involves monitoring blood glucose levels throughout the day and regulating them, often with insulin, so that levels remain within a target range. Insulin therapy may also be prescribed as part of the treatment for many people with type 2 diabetes.
[0003] Creating and subsequently managing an insulin therapy plan typically requires, at least initially and periodically, the supervision of a healthcare provider, for example, to ensure adequate physical response to the therapy and the effectiveness of the treatment. Traditional insulin therapy techniques also typically involve rigor on the part of the person receiving the therapy. For example, determining a basal rate of insulin may require a person to undergo an incremental process of delivering insulin at a particular rate (initially low) and manually adjusting the rate of the person's insulin pump upward by a small amount at each increment by referring to a comprehensive adjustment table, observing how the person's blood glucose measurements are affected at the particular rate until the person's blood glucose measurements consistently remain within a target range. However, this process may take several months and is therefore tedious for the person. Determining the bolus insulin dose can also be challenging, and doing so may involve monitoring a person's blood glucose several times after eating the same measured amount of a particular carbohydrate (e.g., white rice as opposed to brown rice) or after eating the same meal (in terms of food and amount), and then delivering a measured bolus of insulin, which the person may also need to manually adjust depending on the observed blood glucose.
[0004] Even after determining the basal rate and bolus doses, a person must remain vigilant to ensure timely delivery of insulin according to those doses, and must continue to monitor the person's body's ongoing response, i.e., if further adjustments to the dose are necessary. Some examples of factors that may further adjust these doses include dietary changes, weight loss, changes in exercise routines, and various medical conditions (e.g., pregnancy), to name just a few. Although insulin therapy can mean the difference between a relatively normal adverse health event (experienced by most people) and a very serious health event (particularly due to diabetes), the process of customizing and then administering the therapy can still be burdensome. Additionally, this burden causes many people who should receive insulin therapy to avoid insulin therapy, while others neglect to properly adhere to the parameters of their therapy. Summary of the Invention [Means for solving the problem]
[0005] To overcome these problems, machine learning in the artificial pancreas is utilized. In one or more implementations, the artificial pancreas system includes a wearable blood glucose monitoring device, an insulin delivery system, and a computing device, communicatively coupled to execute various aspects of the system. Collectively, the wearable blood glucose monitoring device continuously provides blood glucose measurements for the individual. An artificial pancreas algorithm, which may be implemented on the computing device, determines a dose of insulin to deliver to the individual based on the various aspects and as indicated by the blood glucose measurements, with the goal of maintaining the individual's blood glucose level within a target range. The insulin delivery system then delivers the determined dose to the individual for absorption by the individual's body to maintain balanced blood glucose within the target range. As the artificial pancreas algorithm determines the individual's insulin doses over time, and the effectiveness of those doses in maintaining the individual's blood glucose level is observed, for example, based on the blood glucose measurements, the model underlying the artificial pancreas algorithm may be optimized to better determine future insulin doses for the individual.
[0006] This Summary introduces a selection of concepts in a simplified form that are further described below in the Detailed Description. As such, this Summary is not intended to identify essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
[0007] The detailed description is given with reference to the accompanying drawings. [Brief explanation of the drawings]
[0008] [Figure 1] 1 is an illustration of an environment in an example implementation operable to employ the techniques described herein. [Figure 2]2 illustrates the example wearable blood glucose monitoring device of FIG. 1 in more detail. [Figure 3] The example insulin delivery system of FIG. 1 is depicted in more detail. [Figure 4] 2 depicts an exemplary implementation in which the wearable blood glucose monitoring device, insulin delivery system, and computing device of FIG. 1 are configured as an artificial pancreas. [Figure 5] 1 depicts an exemplary implementation of tables stored in shared storage in the context of an implementation of an artificial pancreas system. [Figure 6] 1 depicts an exemplary implementation of tables stored in shared storage in the context of an implementation of an artificial pancreas system. [Figure 7] 1 depicts an exemplary implementation of tables stored in shared storage in the context of an implementation of an artificial pancreas system. [Figure 8] 1 depicts an exemplary implementation of tables stored in shared storage in the context of an implementation of an artificial pancreas system. [Figure 9] 1 depicts an exemplary implementation of tables stored in shared storage in the context of an implementation of an artificial pancreas system. [Figure 10] 1 depicts an exemplary implementation of a user interface displayed for determining a basal insulin dose. [Figure 11] 1 depicts an exemplary implementation of a user interface displayed for determining a carbohydrate-to-blood glucose ratio for a person. [Figure 12] 1 depicts an exemplary implementation of a user interface displayed for determining insulin sensitivity in a person. [Figure 13] 1 depicts an exemplary implementation of a user interface displayed for matching insulin doses to meals. [Figure 14] 1 depicts a procedure in an exemplary implementation in which an insulin dose is determined and delivered to a user. [Figure 15]1 depicts a procedure of an exemplary implementation in which carbohydrate-to-blood glucose ratio is determined and used to control the delivery of a bolus insulin dose. [Figure 16] 1 depicts a procedure in an exemplary implementation in which an insulin effect value is determined and used to control the delivery of a bolus insulin dose. [Figure 17] 1 depicts the procedure of an exemplary implementation in which an artificial pancreas algorithm is trained to determine a user's insulin dosage using one or more machine learning techniques. [Figure 18] 10 depicts a procedure of an exemplary implementation in which an insulin delivery request is encrypted and communicated for decryption by an application. [Figure 19] 1 depicts a procedure of an exemplary implementation in which an encrypted insulin delivery request is received, decrypted, and instructions for delivering insulin are communicated to an insulin delivery system based on the request. [Figure 20] To implement embodiments of the techniques described herein, an exemplary system is illustrated that includes various components of an exemplary device that may be implemented as any type of computing device described and / or utilized with reference to FIGS. 1-19 . DETAILED DESCRIPTION OF THE INVENTION
[0009] overview Insulin therapy can mean the difference between relatively common adverse health events experienced by most people and very serious events caused by diabetes in particular. However, the process of customizing and administering therapy can still be burdensome. In addition, this burden causes many people who should receive insulin therapy to avoid insulin therapy, while others fail to properly adhere to the parameters of their therapy.
[0010] Machine learning in an artificial pancreas is described herein. In one or more implementations, the artificial pancreas system includes a wearable blood glucose monitoring device, an insulin delivery system, and a computing device, communicatively coupled to execute various aspects of the system. Collectively, the wearable blood glucose monitoring device continuously provides blood glucose measurements for a person. An artificial pancreas algorithm, which may be implemented in the computing device, determines a dose of insulin to deliver to the person based on various aspects and as indicated by the blood glucose measurements, with the goal of maintaining the person's blood glucose level within a target range. The insulin delivery system then delivers the determined dose to the person for absorption by the person's body to maintain balanced blood glucose within the target range.
[0011] As the artificial pancreas algorithm determines the person's insulin dosages over time and observes the effectiveness of those dosages in maintaining the person's blood glucose levels, for example, based on blood glucose measurements, the model underlying the artificial pancreas algorithm may be updated to better determine future insulin dosages for the person. By programmatically reinforcing decisions that result in stable blood glucose measurements within the target range and programmatically discouraging decisions that result in unstable measurements and / or measurements outside the target range, the artificial pancreas algorithm learns to keep the person's blood glucose levels within the target range and / or more stable more frequently than when the algorithm was first deployed.
[0012] The use of machine learning in a fully closed, automated loop between continuous blood glucose monitoring and delivery of determined insulin doses can eliminate many of the burdens of traditional systems and processes associated with insulin therapy. For example, allowing an artificial pancreas algorithm to automatically adjust based on data patterns present in continuous blood glucose measurements can significantly reduce the time required to determine a basal insulin administration rate, from nearly a year to a few weeks in some cases. Not only can an artificial pancreas algorithm determine and refine a person's bolus insulin dose over time based on user input (e.g., grams of carbohydrates) of upcoming meals, but the artificial pancreas algorithm can also predict upcoming events (e.g., meals and exercise) that may affect a person's blood glucose without receiving user input for the specific events, and learn to automatically deliver insulin in anticipation of the predicted upcoming events. In addition, the artificial pancreas algorithm may learn to detect the occurrence of events (e.g., meals, exercise, etc.) that may affect a person's blood glucose as they occur, also without receiving user input for the specific events, and automatically deliver insulin to mitigate any impact of such detected events. These and other advantages of artificial pancreas systems will be further described below. Furthermore, the artificial pancreas system may be implemented in a modular manner, i.e., such that any of multiple insulin delivery system providers approved by the blood glucose monitoring platform can securely interface with the platform components (blood glucose monitoring devices and artificial pancreas algorithms) that make up the artificial pancreas system.
[0013] The following description first describes an example environment in which the techniques described herein may be used. Then, example implementation details and procedures that may be performed in the example environment and other environments are described. Performance of the example procedures is not limited to the example environment, and the example environment is not limited to performance of the example procedures.
[0014] Example Environment 1 is an illustration of an environment 100 in an exemplary implementation operable to use machine learning in an artificial pancreas, as described herein. The illustrated environment 100 includes a human 102, who is depicted wearing a wearable blood glucose monitoring device 104, an insulin delivery system 106, and a computing device 108. The illustrated environment 100 also includes other users of a wearable blood glucose monitoring device user population 110, a blood glucose monitoring platform 112, and an Internet of Things (IoT) 114. The wearable blood glucose monitoring device 104, the insulin delivery system 106, the computing device 108, the user population 110, the blood glucose monitoring platform 112, and the IoT 114 are communicatively coupled via a network 116.
[0015] Alternatively or additionally, the wearable blood glucose monitoring device 104, the insulin delivery system 106, and the computing device 108 may be communicatively coupled in other manners, such as using one or more short-range communication protocols or techniques. The wearable blood glucose monitoring device 104, the insulin delivery system 106, and the computing device 108 may be communicatively coupled to form, for example, an artificial pancreas system, as described above and below, particularly with reference to FIG.
[0016] The wearable blood glucose monitoring device 104, the insulin delivery system 106, and the computing device 108 may communicate with each other using one or more of Bluetooth® (e.g., a Bluetooth Low Energy link), near field communication (NFC), 5G, etc. The wearable blood glucose monitoring device 104, the insulin delivery system 106, and the computing device 108 may leverage these types of communications to form a closed-loop system between each other, such as an artificial pancreas system. In this way, the insulin delivery system 106 can deliver insulin based on a series of blood glucose measurements in real time as those measurements are obtained by the wearable blood glucose monitoring device 104.
[0017] In accordance with the described techniques, the wearable blood glucose monitoring device 104 is configured to monitor, e.g., continuously, the blood glucose of the human 102. Thus, in one or more implementations, the wearable blood glucose monitoring device 104 may be configured as a continuous blood glucose monitoring (CGM) system. Regardless, the wearable blood glucose monitoring device 104 may be configured with, for example, a blood glucose sensor that continuously detects analytes indicative of the blood glucose of the human 102 and enables the generation of blood glucose measurements. In the illustrated environment 100, these measurements are represented as blood glucose measurements 118. This functionality, along with further aspects of the configuration of the wearable blood glucose monitoring device 104, are described in more detail in conjunction with FIG. 2.
[0018] In one or more implementations, the wearable blood glucose monitoring device 104 transmits the blood glucose measurements 118 to the computing device 108, such as via a wireless connection. The wearable blood glucose monitoring device 104 may communicate these measurements in real time, for example, as these measurements are generated using a blood glucose sensor. Alternatively or additionally, the wearable blood glucose monitoring device 104 may communicate the blood glucose measurements 118 to the computing device 108 at set time intervals, for example, every 30 seconds, every minute, every 5 minutes, every hour, every 6 hours, daily, etc. Furthermore, the wearable blood glucose monitoring device 104 may communicate these measurements in response to a request from the computing device 108, which is communicated to the computing device 104, for example, when the computing device 108 causes the display of a user interface with information regarding the blood glucose level of the person 102, updates such display, uses one of the blood glucose measurements (or a series of blood glucose measurements) of the person 102 for purposes of delivering insulin, etc. Thus, the computing device 108 may at least temporarily maintain the blood glucose measurements 118 of the person 102 , for example, in a computer-readable storage medium of the computing device 108 .
[0019] While illustrated as a wearable device (e.g., a smart watch), the computing device 108 may be configured in a variety of ways without departing from the spirit or scope of the described techniques. By way of example and not limitation, the computing device 108 may be configured as a different type of mobile device (e.g., a mobile phone or tablet device). In one or more implementations, the computing device 108 may be configured as a dedicated device associated with the blood glucose monitoring platform 112, having the functionality to, for example, obtain blood glucose readings 118 from the wearable blood glucose monitoring device 104, perform various calculations related to the blood glucose readings 118, display information related to the blood glucose readings 118 and the blood glucose monitoring platform 112, communicate the blood glucose readings 118 to the blood glucose monitoring platform 112, receive communications from the insulin delivery system 106, control the insulin delivery system 106 to deliver doses of insulin to the person 102, etc. However, in contrast to implementations in which the computing device 108 is configured as a mobile phone, the computing device 108 may not include some functionality available in a mobile phone or wearable configuration when configured as a dedicated blood glucose monitoring device, such as the ability to make phone calls, camera functionality, the ability to utilize social networking applications, etc.
[0020] Additionally, the computing device 108 may represent more than one device in accordance with the described techniques. In one or more scenarios, for example, the computing device 108 may correspond to both a wearable device (e.g., a smartwatch) and a mobile phone. In such a scenario, both of these devices may be capable of performing at least some of the same operations, such as receiving blood glucose readings 118 from the wearable blood glucose monitoring device 104, communicating them over the network 116 to the blood glucose monitoring platform 112, displaying information related to the blood glucose readings 118, receiving communications from the insulin delivery system 106, and controlling the insulin delivery system 106 to deliver units of insulin to the person 102. Alternatively or additionally, different devices may have different capabilities that other devices do not have or are limited through computing instructions for the particular device.
[0021] In a scenario in which the computing device 108 corresponds to a separate smartwatch and mobile phone, for example, the smartwatch may be configured with various sensors and functionality to measure various physiological markers (e.g., heart rate, respiration, blood velocity, etc.) and the activity (e.g., steps) of the human 102. In this scenario, the mobile phone may not be configured with these sensors and functionality or may include a limited amount of that functionality, while in other scenarios, the mobile phone may be able to provide the same functionality. Continuing with this particular scenario, the mobile phone may have capabilities that the smartwatch does not have, such as a camera for capturing images of meals used to predict efficient insulin doses, or an amount of computing resources (e.g., battery and processing speed) that allows the mobile phone to more efficiently perform calculations related to blood glucose measurements 118. Even in scenarios in which the smartwatch is capable of performing such calculations, the computational instructions may limit the performance of those calculations on the mobile phone in order not to burden both devices and efficiently utilize available resources. To this extent, the computing device 108 may be configured differently and represent a different number of devices than described herein without departing from the spirit and scope of the described techniques.
[0022] The computing device 108 also includes functionality (e.g., one or more algorithms) for determining a predicted insulin dose that is based on the blood glucose measurements 118 and that prevents future blood glucose measurements of the person 102 from deviating from the target blood glucose range. In this regard, the computing device 108 may control the insulin delivery system 106 to deliver the determined insulin dose, such as by communicating instructions via a control signal over an established wireless connection with the insulin delivery system 106, such as a Bluetooth Low Energy link. In one or more implementations, the insulin delivery system 106 includes an insulin reservoir and is configured to deliver a dose of insulin from the reservoir to the person 102 in accordance with the instructions. This functionality, along with further aspects of the insulin delivery system 106, are described in more detail in connection with FIG. 3 .
[0023] As noted above, the computing device 108 communicates the blood glucose readings 118 to the blood glucose monitoring platform 112. In the illustrated environment 100, the blood glucose readings 118 are shown stored in a storage device 120 of the blood glucose monitoring platform 112. The storage device 120 may represent one or more databases and other types of storage capable of storing the blood glucose readings 118. The storage device 120 also stores a variety of other data. In accordance with the described techniques, for example, the person 102 corresponds to at least a user of the blood glucose monitoring platform 112 and may also be a user of one or more other third-party service providers. To this end, the person 102 is associated with a username and, at some point, may be required to provide authentication information (e.g., a password, biometric data, etc.) to access the blood glucose monitoring platform 112 using the username. This information may be maintained in storage device 120 along with various other information about the user, including, for example, demographic information describing person 102, information about healthcare providers, payment information, prescription information, determined health indicators, user preferences, account information for other service provider systems (e.g., service providers associated with wearables, social networking systems, etc.), etc.
[0024] Storage device 120 also maintains data for other users in user population 110. With this in mind, blood glucose readings 118 in storage device 120 include blood glucose readings from the blood glucose sensors of wearable blood glucose monitoring devices 104 worn by person 102 and also include blood glucose readings from blood glucose sensors of wearable blood glucose monitoring devices worn by people corresponding to other users in user population 110. This also results in these other users' blood glucose readings 118 being communicated by their respective devices to blood glucose monitoring platform 112 via network 116, and these other users having their own user profiles with blood glucose monitoring platform 112.
[0025] The data analytics platform 122 represents functionality for processing the blood glucose measurements 118, alone and / or together with other data maintained on the storage device 120, to generate various predictions, such as by using various machine learning models. Based on these predictions, the blood glucose monitoring platform 112 may provide recommendations and / or other information regarding the predictions. Although depicted separately from the computing device 108, portions or the entire data analytics platform 122 may alternatively or additionally be implemented on the computing device 108. The data analytics platform 122 may also use additional data obtained via the IoT 114 to generate these predictions.
[0026] It should be understood that the IoT 114 represents various sources that can provide data describing the human 102 and the human 102's activities and real-world activities as a user of one or more service providers. By way of example, the IoT 114 may include the user's various devices, such as, for example, a camera, a mobile phone, a laptop, etc. To this end, the IoT 114 may provide information about the user's interactions with the various devices, such as interactions with web-based applications, photographs taken, communications with other users, etc. The IoT 114 may also include various real-world items (e.g., shoes, clothing, sporting equipment, appliances, automobiles, etc.) that are configured with sensors that provide information describing behavior, such as, for example, the number of steps taken, the force of the foot striking the ground, stride length, the user's body temperature (and other physiological measurements), the temperature surrounding the user, the types of food stored in the refrigerator, the types of food removed from the refrigerator, driving habits, etc. The IoT 114 may also include third parties to the blood glucose monitoring platform 112, such as healthcare providers (e.g., healthcare providers of the human 102) and manufacturers (e.g., manufacturers of the wearable blood glucose monitoring device 104, insulin delivery system 106, or computing device 108) that can provide medical and manufacturing data that can be leveraged by the data analytics platform 122. Indeed, the IoT 114 may include devices and sensors that can provide a wealth of data used to predict insulin dosages to control blood glucose levels without departing from the spirit or scope of the described techniques. Consider the following description of FIG. 2 in the context of measuring blood glucose, for example, continuously, and obtaining data describing such measurements.
[0027] Figure 2 depicts in more detail an example implementation 200 of the wearable blood glucose monitoring device 104 of Figure 1. In particular, the illustrated example 200 includes a top view and a corresponding side view of the wearable blood glucose monitoring device 104.
[0028] The wearable blood glucose monitoring device 104 is shown to include a sensor 202 and a sensor module 204. In the illustrated example 200, the sensor 202 is depicted in a side view, e.g., subcutaneously inserted into the skin 206 of the person 102. The sensor module 204 is depicted as a dashed rectangle in a top view. The wearable blood glucose monitoring device 104 also includes a transmitter 208 in the illustrated example 200. The dashed rectangle is used for the sensor module 204 to indicate that it may be contained within or otherwise implemented within the housing of the transmitter 208. In this example 200, the wearable blood glucose monitoring device 104 further includes an adhesive pad 210 and an attachment mechanism 212.
[0029] In operation, the sensor 202, adhesive pad 210, and attachment mechanism 212 may be assembled to form an application assembly configured to be applied to the skin 206 such that the sensor 202 is inserted subcutaneously, as depicted. In such a scenario, the transmitter 208 may be attached to the assembly after it has been applied to the skin 206 via the attachment mechanism 212. Additionally or alternatively, the transmitter 208 may be incorporated as part of the application assembly, such that the sensor 202, adhesive pad 210, attachment mechanism 212, and transmitter 208 (with sensor module 204) may all be applied to the skin 206 at once. In one or more implementations, the application assembly is applied to the skin 206 using a separate applicator (not shown). The application assembly may also be removed by peeling the adhesive pad 210 from the skin 206. It will be understood that the illustrated wearable blood glucose monitoring device 104 and its various components are merely one example form factor, and that the wearable blood glucose monitoring device 104 and its components may have different form factors without departing from the spirit or scope of the described techniques.
[0030] In operation, the sensor 202 is communicatively coupled to the sensor module 204 via at least one communication channel, which may be a "wireless" connection or a "wired" connection. Communications from the sensor 202 to the sensor module 204 or from the sensor module 204 to the sensor 202 may be implemented actively or passively, and these communications may be continuous (e.g., analog) or discrete (e.g., digital).
[0031] The sensor 202 may be a device, molecule, and / or chemical that changes or causes a change in response to an event that is at least partially independent of the sensor 202. The sensor module 204 is implemented to receive an indication of a change to or caused by the sensor 202. For example, the sensor 202 may include a blood glucose oxidase that reacts with blood glucose and oxygen to form hydrogen peroxide that is electrochemically detectable by the sensor module 204, which may include electrodes. In this example, the sensor 202 may be configured as or include a blood glucose sensor configured to detect an analyte in blood or interstitial fluid indicative of blood glucose levels using one or more measurement techniques.
[0032] In another example, the sensor 202 (or an additional sensor of the wearable blood glucose monitoring device 104, not shown) can include first and second electrical conductors, and the sensor module 204 can electrically detect changes in electrical potential between the first and second electrical conductors of the sensor 202. In this example, the sensor module 204 and the sensor 202 are configured as a thermocouple, such that changes in electrical potential correspond to changes in temperature. In some examples, the sensor module 204 and the sensor 202 are configured to detect a single analyte, e.g., blood glucose. In other examples, the sensor module 204 and the sensor 202 are configured to detect multiple analytes, e.g., sodium, potassium, carbon dioxide, and blood glucose. Alternatively or additionally, the wearable blood glucose monitoring device 104 includes multiple sensors for detecting not only one or more analytes (e.g., sodium, potassium, carbon dioxide, blood glucose, and insulin) but also one or more environmental conditions (e.g., temperature). Thus, the sensor module 204 and the sensor 202 (and any additional sensors) may detect the presence of one or more analytes, the absence of one or more analytes, and / or changes in one or more environmental conditions.
[0033] In one or more implementations, the sensor module 204 may include a processor and memory (not shown). The sensor module 204 may utilize the processor to generate blood glucose readings 118 based on communications with the sensor 202 indicating the changes described above. Based on these communications from the sensor 202, the sensor module 204 is further configured to generate blood glucose monitoring device data 214. The blood glucose monitoring device data 214 is a communicable package of data including at least one blood glucose reading 118. Alternatively or additionally, the blood glucose monitoring device data 214 includes other data, such as multiple blood glucose readings 118, a sensor identification 216, a sensor status 218, etc. In one or more implementations, the blood glucose monitoring device data 214 may include other information, such as one or more of the temperature corresponding to the blood glucose reading 118 and measurements of other analytes. It should be understood that the blood glucose monitoring device data 214 may include a variety of data in addition to at least one blood glucose reading 118 without departing from the spirit or scope of the described techniques.
[0034] During operation, the transmitter 208 may wirelessly transmit the blood glucose monitoring device data 214 as a stream of data to the computing device 108. Alternatively or additionally, the sensor module 204 may buffer the blood glucose monitoring device data 214 (e.g., in memory of the sensor module 204) and cause the transmitter 208 to transmit the buffered blood glucose monitoring device data 214 at various intervals, such as time intervals (every second, every 30 seconds, every minute, every 5 minutes, every hour, etc.), storage intervals (when the buffered blood glucose monitoring device data 214 reaches a threshold amount of data or number of instances of blood glucose monitoring device data 214), etc.
[0035] In addition to generating and communicating blood glucose monitoring device data 214 to the computing device 108, the sensor module 204 may include additional functionality in accordance with the described techniques. This additional functionality may include generating a prediction of the person's 102 future blood glucose level and communicating a notification based on the prediction, for example, by communicating an alert when the prediction indicates that the person's 102 blood glucose level is likely to become dangerously low in the near future. This computing capability of the sensor module 204 may be advantageous, particularly when connectivity to services via the network 116 is limited or nonexistent. In this way, the person can be alerted to a dangerous condition without relying on connectivity to the Internet or the like. This additional functionality of the sensor module 204 may also include initially or continuously calibrating the sensor 202, as well as any other sensors of the wearable blood glucose monitoring device 104.
[0036] With respect to blood glucose monitoring device data 214, sensor identification 216 represents information that uniquely identifies sensor 202 from other sensors, such as other sensors in other wearable blood glucose monitoring systems 104, other sensors previously or subsequently implanted in skin 206, etc. By uniquely identifying sensor 202, sensor identification 216 may also be used to identify other aspects of sensor 202, such as the manufacturing lot of sensor 202, packaging details for sensor 202, shipping details for sensor 202, etc. In this manner, various problems detected with sensors manufactured, packaged, and / or shipped in a similar manner to sensor 202 may be identified and used in different ways, for example, to calibrate blood glucose readings 118, notify users to change or discard defective sensors, notify manufacturing facilities of machining issues, etc.
[0037] The sensor status 218 represents the state of the sensor 202 at a given time, e.g., the state of the sensor at the same time that one of the blood glucose readings 118 is generated. To this end, the sensor status 218 may include an entry for each blood glucose reading 118, such that there is a one-to-one relationship between the blood glucose reading 118 and the status captured in the sensor status 218 information. Generally speaking, the sensor status 218 describes the operational state of the sensor 202. In one or more implementations, the sensor module 204 may identify one of several pre-defined operational states for a given blood glucose reading 118. The identified operational state may be based on communications from the sensor 202 and / or characteristics of those communications.
[0038] As an example, the sensor module 204 may include a lookup table (e.g., in memory or other storage) with a predetermined number of operating conditions and a basis for selecting one condition from another. For example, the predetermined conditions may include a “normal” operating condition, and the basis for selecting this condition may be that communications from the sensor 202 fall within thresholds indicative of normal operation, such as within an expected time threshold, an expected signal strength threshold, an environmental temperature threshold suitable for continued operation as expected, etc. The predetermined conditions may also include operating conditions that indicate one or more characteristics of the sensor 202 communications are outside the range of normal activity, potentially resulting in a potential error in the blood glucose reading 118.
[0039] For example, the basis for these non-normal operating conditions may include receiving a communication from the sensor 202 outside a threshold expected time, detecting a signal strength of the sensor 202 outside a threshold of expected signal strength, detecting an environmental temperature outside a suitable temperature for continued operation as expected, detecting that the person 102 has rolled over (e.g., in bed) on the wearable blood glucose monitoring device 104, etc. The sensor status 218 may indicate various aspects related to the sensor 202 and the wearable blood glucose monitoring device 104 without departing from the spirit or scope of the described techniques.
[0040] FIG. 3 depicts an example implementation 300 of the wearable blood glucose monitoring system 106 of FIG. 1 in more detail.
[0041] In the illustrated example 300, the insulin delivery system 106 includes an insulin pump 302 and an infusion set 304. While the infusion set 304 is depicted as having tubing 306 connected to the insulin pump 302, in one or more implementations, the infusion set 304 can be tubeless. Overall, the infusion set 304 is a device configured to subcutaneously deliver insulin pumped by the insulin pump 302 to the infusion set 304 to the human 102 for absorption by the human's 102 bloodstream. In this manner, the delivered insulin can be used by the human's 102's body to maintain balanced blood glucose levels, for example, within a target range of blood glucose measurements. In one or more implementations, the infusion set 304 includes a cannula that is inserted subcutaneously into the skin, such as at an infusion site 308 of the human 102 in the illustrated example 300. Thus, the infusion set 304 can administer doses of insulin through the human's 102's skin, for example, in a continuous manner and at a programmable rate. As described herein, for example, basal and / or bolus doses of insulin may be administered through the skin of person 102 via infusion set 304.
[0042] As shown, the infusion set 304 includes an adhesive pad that permanently affixes the device to the person 102. In one or more implementations, the infusion set 304 is applied to the infusion site 308 using a separate applicator (not shown). In operation, this applicator injects the cannula of the infusion set 304 into the skin of the person 102 at the infusion site 308 and may also affix an adhesive pad to the infusion site 308 to secure the infusion set 304 to the person 102 for the duration of use. In at least some implementations, for example, the infusion set may be disposable, designed for removal after a prescribed and / or recommended period and replacement with a new set that is applied to the person 102 and attached to the insulin pump 302. In either case, the insulin pump 302 is configured to deliver insulin doses to the person 102 via an infusion set, such as the illustrated infusion set 304.
[0043] In the illustrated example 300, the insulin pump 302 includes a communications module 310, an insulin delivery control 312, an insulin reservoir 314, a display module 316, a safety module 318, and a battery 320. In implementations, the insulin pump 302 may be configured in various ways, such as having some of these components while other components are housed in separate devices or implemented differently. Alternatively or additionally, the insulin pump 302 may include additional or alternative components without departing from the spirit or scope of the techniques described herein.
[0044] The communications module 310 is configured to transmit data to and receive data from other devices, such as the computing device 108. In one or more implementations, the communications module 310 establishes a communications coupling with such other devices to enable the transmission and reception of data. By way of example, the communications module 310 may establish or otherwise facilitate the establishment of a communications link or channel with those other devices. The link or channel may be configured in a variety of ways, including, but not limited to, Bluetooth (e.g., a Bluetooth Low Energy link), near field communication (NFC), 5G or other cellular, and WiFi, to name just a few. Such a communications coupling may enable the insulin pump 302 to communicate securely over different networks, such as the network 116, and / or within the artificial pancreas system, as described in connection with FIG. 4.
[0045] Once a communication coupling is established, the communications module 310 can transmit data over the established coupling and / or receive data from the other device over the established coupling. Additionally or alternatively, the communications module 310 can be configured to establish a connection over a wired communications channel, such as via a USB cord connected to the insulin pump 302 and another device, and to transmit and / or receive data over such a wired coupling. The communications module 310 can be configured in various ways to enable the insulin pump 302 to communicate with other devices.
[0046] As one example, the communications module 310 enables the insulin pump 302 to receive instructions from the computing device 108 to control the delivery of insulin to the person 102. For example, the communications module 310 enables the insulin pump 302 to receive instructions instructing the insulin pump 302 regarding the delivery of a basal rate of insulin to the person 102, updates to the basal rate of insulin, the delivery of a bolus dose of insulin to the person 102 (e.g., an amount to bolus within a limited time period), etc. The computing device 108 may send a variety of communications to the insulin delivery system 106 to control insulin delivery without departing from the spirit or scope of the techniques described herein.
[0047] The insulin delivery control unit 312 represents any hardware, software, and / or mechanical components of the insulin pump 302 that cause insulin to be pumped (or otherwise extracted) from the insulin reservoir 314 so that it flows through the infusion set 304 to the person 102. Additionally, the insulin delivery control unit 312 is further configured to pump or otherwise extract insulin from the insulin reservoir 314 in accordance with insulin administration instructions, for example, from the computing device 108 that specify one or more deliveries of insulin. The insulin reservoir 314 is configured to contain a quantity of insulin, which may be delivered subcutaneously via the infusion set 304 by leveraging the functionality of the insulin pump 302. The insulin reservoir 314 may be replaceable or otherwise configured such that the insulin reservoir 314 can be replenished with a quantity of insulin. The insulin reservoir 314 may be configured in various ways (e.g., different shapes, different materials, differently removable, etc.) without departing from the spirit or scope of the described techniques.
[0048] The display module 316 is configured to cause the display of information via the display device 322 of the insulin pump 302. The display module 316 may generate one or more user interfaces for display via the display device 322. By way of example, the display module 316 may cause the display device 322 to display a user interface for setting up a wireless connection with the computing device 108. Additionally or alternatively, the display module 316 may cause the display device 322 to display blood glucose readings (e.g., in a manner similar to how blood glucose readings are displayed via a blood glucose monitoring application on the computing device 108), trend arrows (e.g., regarding identified trends in blood glucose readings), warnings (e.g., regarding blood glucose readings, other physiological conditions, the operability of the insulin delivery system 106, the operability of components of the artificial pancreas system, the status of the wireless connection with the computing device 108, etc.), a pump setup interface, an indication of being out of communication range from a different device (e.g., the computing device 108 or the wearable blood glucose monitoring device 104), etc. Thus, the display module 316 may cause a variety of information to be displayed via the display device 322 of the insulin pump 302.
[0049] The safety module 318 is configured to provide one or more safeguards for controlling the delivery of insulin so that the delivery is not harmful, in other words, so that the delivered insulin is safe. By way of example, the safety module 318 may include or otherwise enforce delivery limits, such as maximum and minimum rates of delivery over different time periods. These limits are effective to prevent erroneous delivery instructions from the computing device 108 from harming the human 102, such as when errors in transmitting the instructions affect the content of those instructions or when errors in predictions made by one or more machine learning models dangerously affect those instructions. For example, the safety module 318 may limit the amount or rate of insulin that the insulin pump 302 delivers to a threshold amount or rate, even if the instructions received from the computing device 108 instruct the insulin pump 302 to deliver an amount above the threshold. Similarly, the safety module 318 may also prevent the insulin pump from delivering an amount below the threshold or from delivering insulin at a rate below the threshold, even if the instructions received from the computing device 108 instruct the insulin pump to deliver an amount below the threshold.
[0050] Additionally, the safety module 318 is configured to continue operation of the insulin pump 302 in the absence of instructions from the computing device 108, such as instructions stating the amount of insulin to deliver and when. The safety module 318 may be configured, for example, to continue operation of the insulin pump 302 to deliver insulin to the person 102 when the computing device 108 is out of range. The safety module 318 may access logic, default settings, or settings entered as part of a setup process, to name just a few, that control the amount of insulin the insulin pump will deliver when instructions are not received from the computing device 108. The safety module 318 may implement various additional or different safeguards to ensure the amount of insulin delivered is not harmful to the person 102.
[0051] The battery 320 is configured to provide power to operate the insulin pump 302, such as to power the communications module 310 for transmitting and receiving data, to power the insulin delivery control 312 to cause delivery of insulin from the insulin reservoir to the person 102 via the infusion set, and to power the display module 316 to display information via the display device 322. The battery 320 may be rechargeable (e.g., via a USB charging port) or replaceable. It should be understood that the battery 320 may be configured in a variety of ways.
[0052] Although not depicted, the insulin delivery system 106 or another device (e.g., the wearable blood glucose monitoring device 104) may be configured with an insulin sensor. Such an insulin sensor may be applied to the skin or inserted subcutaneously to measure systemic levels of insulin, for example, in the human 102. Accordingly, the insulin sensor may be included as part of the infusion set 304, the wearable blood glucose monitoring device 104, or may be applied separately. In either case, such an insulin sensor may be used in conjunction with the safety module 318 and / or in conjunction with the dosage prediction functionality of the computing device 108. In this manner, insulin measurements generated using the insulin sensor may be used to prevent or detect insulin overdoses, e.g., to prevent a human taking insulin from experiencing a hypoglycemic episode. By way of example, the safety module 318 may shut off insulin delivery by the insulin pump 302 based on the insulin measurements, e.g., if the safety module 318 detects that the level of insulin has exceeded a predetermined threshold. Based on the insulin measurement, the computing device 108 may additionally or alternatively send a command to the insulin delivery system 106 to instruct the insulin delivery system 106 to cease insulin delivery. In one or more implementations, the safety module 318 and / or the computing device 108 may also trigger an alert if the level of insulin exceeds a predetermined threshold. Physiologically, different thresholds may be determined for different individuals based on insulin sensitivity, such that the above-described shutdown, alert, or cessation of insulin delivery may be triggered at different insulin levels for different individuals. As described in more detail below, the artificial pancreas system may also use such an insulin sensor to determine various factors for controlling the insulin dosage of the individual 102, such as the carbohydrate-to-blood glucose ratio and insulin sensitivity value of the individual 102.
[0053] Having considered an exemplary environment, an exemplary wearable blood glucose monitoring device, and an exemplary insulin delivery system, we now consider a detailed description of some exemplary techniques for machine learning in an artificial pancreas in a digital media environment according to one or more implementation aspects.
[0054] Machine learning in artificial pancreas FIG. 4 depicts an example implementation 400 in which the wearable blood glucose monitoring device 104, insulin delivery system 106, and computing device 108 of FIG. 1 are configured as an artificial pancreas.
[0055] In the illustrated example 400, an artificial pancreas system 402 includes a wearable blood glucose monitoring device 104, an insulin delivery system 106, and a computing device 108, which in this example is illustrated as a mobile phone. The computing device 108 is further illustrated as having an artificial pancreas controller 404, which includes an insulin module 406, a blood glucose monitoring module 408, and shared storage 410 (e.g., a database). While the artificial pancreas controller 404 and its components are illustrated as part of the computing device 108, it should be understood that in one or more implementations, portions of the artificial pancreas controller 404, its modules, and shared storage 410 may be implemented in other devices, such as other computing devices (e.g., a smartwatch or server of the blood glucose monitoring platform 112), the wearable blood glucose monitoring device 104, and / or the insulin delivery system 106. Regardless, the artificial pancreas controller 404 includes or otherwise has access to the functionality described in connection with the insulin module 406, the blood glucose monitoring module 408, and the shared storage 410.
[0056] In accordance with the techniques described herein, the wearable blood glucose monitoring device 104, insulin delivery system 106, and computing device 108 may form the artificial pancreas 402 as a fully closed-loop system such that user interaction for monitoring blood glucose (e.g., by finger prick), determining insulin dosage (e.g., based on past experience, records of previous dosages and physical responses, and reference to dosage charts), and selecting the actual amount and time of insulin to deliver is eliminated and instead handled by the system. Such a closed-loop system may be useful not only for people with type 1 and type 2 diabetes, but also in hospitals or other medical facilities that temporarily provide insulin therapy.
[0057] The wearable blood glucose monitoring device 104 and the insulin delivery system 106 are communicatively coupled to the computing device 108 via wireless connections 412, 414, respectively. In one or more implementations, there is no communicative coupling between the wearable blood glucose monitoring device 104 and the insulin delivery system 106, and no wireless connection is established. Instead, the artificial pancreas controller 404 handles communications on behalf of these devices to implement the artificial pancreas system 402, such as by receiving data from the wearable blood glucose monitoring device 104 via wireless connection 412, processing the received data as described above and below, and transmitting various instructions and / or portions of the processed data to the insulin delivery system 106 via wireless connection 414. Similarly, the artificial pancreas controller 404 can receive data from the insulin delivery system 106 via wireless connection 414, process the data received from the insulin delivery system 106, and transmit instructions (e.g., status or data requests, requests to perform various operations such as providing current blood glucose readings) or other data (e.g., algorithm or firmware updates) to the wearable blood glucose monitoring device 104 via wireless connection 412.
[0058] In this manner, handling communications between the wearable blood glucose monitoring device 104 of the blood glucose monitoring platform 112 and different insulin delivery systems that may be available from multiple third parties to the blood glucose monitoring platform 112 is offloaded from the wearable blood glucose monitoring device 104 and the insulin delivery system. Thus, the interface between these devices for purposes of implementing the artificial pancreas system 402 may be handled at the software level, rather than by the hardware and firmware of the wearable blood glucose monitoring device 104 and / or the insulin delivery system 106. By implementing the artificial pancreas system 402 in this manner, the blood glucose monitoring platform 112 does not need to disclose details regarding how the wearable blood glucose monitoring device 104 and the computing device 108 communicate, e.g., the type of communication channel used, the communication protocol, and / or the structure of the data communicated. Rather, the artificial pancreas controller 404 may include or otherwise have access to multiple interfaces, each of which converts data for transmission to the insulin delivery system 106 (e.g., instructions for controlling the delivery of insulin doses or instructions for displaying various information) into a specified format received by the insulin delivery system 106, and also converts data received from the insulin delivery system 106 into a specified format for processing by the artificial pancreas controller 404.
[0059] In one or more implementations, there may be an interface for each different insulin delivery system 106 approved for use as part of the artificial pancreas system 402. In other words, there may be a different interface for each third party that sells an insulin delivery system approved for use as part of the artificial pancreas system 402 and / or a different interface for each different model of insulin delivery system approved for use as part of the artificial pancreas system 402. Although the techniques herein are generally described without establishing and using a wireless connection between the wearable blood glucose monitoring device 104 and the insulin delivery system 106 for purposes of implementing the artificial pancreas system 402, in some implementations there may be a wireless connection between the wearable blood glucose monitoring device 104 and the insulin delivery system 106, such as to transmit alerts (e.g., detection of impending hyperglycemia or hypoglycemia, device malfunction, etc.).
[0060] Turning now to a more detailed description of the artificial pancreas controller 404, the insulin module 406 generally embodies functionality to enable communication with the insulin delivery system 106, determine a dose of insulin to deliver, and control the insulin delivery system 106 to deliver the determined dose. In contrast, the blood glucose monitoring module 408 embodies functionality to enable communication with the wearable blood glucose monitoring device 104, such as receiving blood glucose readings 118, and further processes data received from the wearable blood glucose monitoring device 104 so that the received data can be used to determine insulin dosages. This may include extracting portions of the blood glucose monitoring device data 214 received from the wearable blood glucose monitoring device 104 (e.g., blood glucose readings 118) and / or packaging at least some portions of this data with supplemental data from the computing device 108 (e.g., data that at one time describes application usage or health-related aspects that correlate to the blood glucose readings 118).
[0061] In one or more implementations, the artificial pancreas controller 404 may be configured to handle pairing between the wearable blood glucose monitoring device 104 and the computing device 108, and also between the insulin delivery system 106 and the computing device 108. It should be further appreciated that, specifically, either or both of the insulin module 406 and the blood glucose monitoring module 408 may include this functionality. In some implementations, only one of those modules may include functionality for pairing the wearable blood glucose monitoring device 104 and the insulin delivery system 106 with the computing device 108. Regardless, the artificial pancreas controller 404 may pair the devices, in part, by causing the display of a user interface via a display device of the computing device 108 and by receiving user input via the user interface, such as user input to select the manufacturer of the insulin delivery system 106 and / or provide the serial number of the insulin delivery system 106. It should be appreciated that the user interface may also allow a user to use the computing device 108 to capture an image of the manufacturer and / or serial number by capturing a digital image of that information affixed to the enclosure of and / or included on the box of the insulin delivery system 106. The artificial pancreas controller 404 may receive similar user input regarding the wearable blood glucose monitoring device 104 to pair the wearable blood glucose monitoring device 104 with the computing device 108.
[0062] In one or more implementations, the artificial pancreas controller 404 may also cause the display of educational information about the artificial pancreas system 402 during pairing or while the system is otherwise being set up, such as during a “warm-up” period for the sensors in the wearable blood glucose monitoring device 104. The artificial pancreas controller 404 may also be configured to generate and cause the output of alerts via one or more of the wearable blood glucose monitoring device 104, the insulin delivery system 106, the computing device 108, and a remote computing device, such as a medical professional associated with the person 102. By way of example, these alerts may be output in response to receiving one or more blood glucose measurements 118 from the wearable blood glucose monitoring device 104 indicating that the person's 102's blood glucose is outside the target range or is predicted to be outside the target range in the future. Additionally or alternatively, these alerts may be output in response to a device or functionality failure, such as an occlusion in the insulin delivery system 106.
[0063] In one or more scenarios, the artificial pancreas controller 404 may also escalate these alerts. For example, the artificial pancreas controller 404 may comply with the device setting for the first alert, such as by simply vibrating the insulin delivery system 106. If the first alert is not acknowledged by the human 102 (e.g., by providing some user input indicating acknowledgement), the artificial pancreas controller 404 may trigger an escalating output for a second alert; for example, the computing device 108 may audibly output an alert after five minutes. If the second alert is also not acknowledged by the human 102, the artificial pancreas controller 404 may trigger a further escalating output for a third alert; for example, the insulin delivery system 106 may output a medium-volume audible alert. If the third alert is also not acknowledged by the human 102, the artificial pancreas controller 404 may trigger a further escalating output for a fourth alert; for example, the computing device 108 may audibly output an alert again after five minutes. This escalation may continue until the human 102 or some other human (e.g., a medical professional) acknowledges the alert. Indeed, the artificial pancreas controller 404 may escalate alerts among different devices of the artificial pancreas system 402 in a variety of ways without departing from the spirit or scope of the described techniques.
[0064] With regard to the modules of the artificial pancreas controller 404, the insulin module 406 includes an artificial pancreas algorithm 416 and a pump control manager 418. The artificial pancreas algorithm 416 is configured to generate predictions of insulin doses that will prevent the blood glucose readings 118 of the human being 102 from departing from a target range, or, stated differently, will generally keep the blood glucose readings 118 of the human being 102 within the target range. Generally, extreme or persistent deviations from such target ranges can result in dangerous health conditions and / or damage to the human being's body, e.g., the heart, blood vessels, eyes, kidneys, and nerves. Therefore, maintaining blood glucose levels within the target range through timely insulin delivery can help avoid these dangerous health conditions and physical damage.
[0065] As described in more detail below, insulin dosages determined using the artificial pancreas algorithm 416 can include both basal rate changes and bolus doses. It should be understood that the artificial pancreas algorithm 416 can be configured in a variety of ways to handle the determination of both basal rate changes and bolus insulin dosages. To the extent that basal rate changes and bolus doses generally apply to different types of scenarios—basal rate doses corresponding to longer-acting insulin to keep blood glucose levels stable throughout fasting, and bolus doses corresponding to shorter-acting insulin to prevent a rise in blood glucose levels resulting from a meal or to immediately correct blood glucose levels—determining these different types of dosages may involve consideration of different aspects of the context of the human 102, and thus different inputs. Accordingly, the artificial pancreas algorithm 416 may include a machine learning model or ensemble thereof. Such machine learning models may be configured according to various paradigms, such as supervised learning, unsupervised learning, reinforcement learning, and transfer learning.
[0066] In one or more implementations, the artificial pancreas algorithm 416 and / or the model it includes may be initially trained or otherwise learned using blood glucose measurements 118 and other user data that describe characteristics of the user population 110 and that is maintained in the storage device 120, including delivered insulin doses, insulin measurements, target blood glucose ranges, insulin sensitivity, carbohydrate ratios, food consumption data, and activity data, to name just a few. Furthermore, this other user data may be correlated with the blood glucose measurements 118, for example, based on timestamps of the blood glucose measurements 118 and other data. The initially trained artificial pancreas algorithm 416 may then be communicated via connection 420 (which may be wired, wireless, or a combination thereof) for incorporation into the artificial pancreas controller 404. Once incorporated, the artificial pancreas algorithm 416 may be further trained such that the artificial pancreas algorithm 416 is customized for the human 102, i.e., the human associated with the computing device 108 and equipped with the particular wearable blood glucose monitoring device 104 and particular insulin delivery system 106.
[0067] In one or more implementations, further training to customize the artificial pancreas algorithm 416 for the human 102 may include transfer learning to personalize the artificial pancreas algorithm 416, i.e., to personalize the artificial pancreas algorithm 416 from a state trained with training data of the user population 110 to an updated state trained with additional training data or describing one or more aspects of the human 102 and / or one or more aspects of a subset of the user population 110 determined by similarity to the human 102. Similarity may be based on a variety of aspects, such as age, gender, diagnosed medical conditions, blood glucose measurements, and other physiological measurements, to name just a few. By way of example, such transfer learning may be used in connection with calculating an insulin-to-carbohydrate ratio and / or insulin sensitivity value for the human 102. Such transfer learning can be advantageous during system initialization of a human 102 because there is still relatively little data about the human 102 available to personalize the artificial pancreas algorithm 416, but the algorithm can nevertheless generate predictions due to the wealth of data from the user population 110 that initially trains the artificial pancreas algorithm 416.
[0068] For example, the artificial pancreas algorithm 416 may be further trained to be personalized for the human 102, in part, by obtaining target measurements, target measurement ranges, and / or starting dosages from the human 102's healthcare provider. The starting insulin dosage may be obtained, for example, for the basal titration process and through a tailored process as described in more detail below. Data for the basal titration process may be obtained from the healthcare provider (e.g., via a healthcare provider portal of the blood glucose monitoring platform 112) and / or through one or more user interfaces displayed via the computing device 108. Such user interfaces may be displayed, for example, in connection with setting up the artificial pancreas system 402 for use. In this latter scenario, the computing device 108 may receive input from a user (e.g., the human 102) through a series or sequence of these setup interfaces. The artificial pancreas algorithm 416 may also be further trained using data similar to the data originally used from the user population 110, but obtained about the human 102, such as the human's 102's past blood glucose measurements 118, delivered insulin doses, insulin measurements, target blood glucose ranges, insulin sensitivity, carbohydrate ratios, food consumption data, activity data, etc. As with the user population 110 data, the blood glucose measurements 118 of the human 102 may be correlated with other data, such as based on timestamps of the blood glucose measurements 118 and other data.
[0069] It should be further appreciated that the artificial pancreas algorithm 416 may use the exemplary initialization information listed above, i.e., target measurements, target measurement ranges, and / or starting dosages obtained from a healthcare provider, to determine insulin dosages for a predetermined time before beginning to deviate from the initialization information. By way of example, the artificial pancreas algorithm 416 may initially output insulin dosages for delivery (e.g., the first day, first week, first month, etc.) corresponding to those specified by the human 102's healthcare provider. However, after a predetermined time has passed, the artificial pancreas algorithm 416 may deviate from the healthcare provider-specified dosages by, for example, adjusting those dosages based on real-time data received regarding the human 102. Rather than waiting until a predetermined time has passed, the artificial pancreas algorithm 416 may alternatively wait to deviate from the healthcare provider-specified dosages until a threshold amount of data regarding the human 102 has been collected, such that an accurate prediction of the human 102's performance can be generated. In scenarios where the artificial pancreas algorithm 416 waits until a suitable amount of data has been collected so that an accurate prediction can be generated, the determination of "sufficient" data about the human 102 may be based on one or more learning rate parameters of the artificial pancreas algorithm 416. Generally, the learning rate of the artificial pancreas algorithm 416 can prevent the algorithm from making overly abrupt changes to an originally specified dosage that may be harmful to the human 102.
[0070] Regarding inputs to the artificial pancreas algorithm 416, the insulin module 406 may provide data describing various characteristics of the human 102 relevant to determining insulin dosage. In one or more implementations, these inputs may be configured as feature vectors, with each feature of the vector configured to represent a predetermined characteristic relevant to determining insulin dosage. During operation, each of these features may be set, at the time of input, to a value indicative of the respective characteristic as detected and recorded in association with the human 102. The inputs (e.g., corresponding to features of the input feature vector) may include, for example, a target blood glucose range, an initial basal insulin administration rate, previously delivered insulin doses or a time series thereof, one or more time series of blood glucose measurements 118 (e.g., from the wearable blood glucose monitoring device 104), one or more time series of insulin measurements, one or more time series of other physiological measurements (e.g., temperature, heart rate, etc.), data indicative of meals consumed and / or to be consumed (e.g., images, data entry via various editable data fields of the user interface, selections made via the user interface), data indicative of exercise (e.g., step counts or heart data obtained from a smart watch, an exercise bike or other exercise machine, etc.), diabetes subtype, insulin sensitivity, carbohydrate ratio, etc.
[0071] In one or more implementations, inputs to the artificial pancreas algorithm 416 may describe the physiological insulin sensitivity of the human 102 and, further, the relative effectiveness of the insulin infusion site of the human 102 to which the infusion set 304 is applied to the human 102. In this context, “effectiveness” refers to the ability of the human 102's body to control the human 102's blood glucose using insulin delivered through the infusion site. The more “effective” the site, the better the insulin delivered through that site controls the human 102's blood glucose, such that when insulin is delivered through a more effective site on the human 102, the effectiveness approaches and / or substantially matches the human 102's physiological insulin sensitivity. In contrast, insulin delivered through a less effective site is less effective than indicated by the human 102's physiological insulin sensitivity. With this in mind, the artificial pancreas system 402 can measure the human 102's physiological insulin sensitivity and the effectiveness of the insulin infusion site (e.g., infusion site 308). The artificial pancreas algorithm 416 may then determine the insulin dose to be delivered through the insulin infusion site based in part on the insulin sensitivity of the human 102 and the effectiveness of the site. By way of example, the artificial pancreas 416 may determine a higher dose of insulin to deliver through a less effective site. Alternatively or additionally, the artificial pancreas system 402 may trigger the output of a message when the infusion site is less effective than a threshold effectiveness, such as a message recommending that the human change the infusion site to a different infusion site, limit the period of time the infusion site is used, etc.
[0072] To measure a person's physiological insulin sensitivity and effectiveness of various infusion sites, the artificial pancreas system 402 is configured to learn and build a model of physiological insulin sensitivity (which may be generally stable) and potentially fluctuating infusion site-specific insulin sensitivity. As part of building this model, the artificial pancreas system 402 samples the person's 102 blood glucose during use of various infusion sites. For each different infusion site, the artificial pancreas system 402 also records the amount of insulin delivered through the site, the time the insulin is delivered through the site (e.g., the start time, end time, and / or duration of delivery), and the type of insulin delivered through the site. The artificial pancreas system 402 may also record other information about the infusion site, including, for example, one or more of its location on the person's 102 body, the time the infusion set is affixed or otherwise applied to the site, the time the infusion set is removed, the type of port, etc. The artificial pancreas algorithm 416 may use one or more of these various aspects of the effectiveness of the infusion site as inputs in determining the insulin dose to deliver.
[0073] The inputs to the artificial pancreas algorithm 416 may describe a variety of characteristics relevant to determining insulin dosage without departing from the spirit and scope of the techniques described herein. Some additional and / or different inputs to the algorithm are also further described below.
[0074] As mentioned, the artificial pancreas algorithm 416 is configured to output an insulin dosage. The output of the artificial pancreas algorithm 416 may also be in the form of a feature vector, where at least one of the features indicates an amount of insulin to deliver to the human 102 over a period of time. As mentioned above, the insulin dosage output by the artificial pancreas algorithm 416 may correspond to a basal dosage rate and a bolus dosage. To this end, the output of the artificial pancreas algorithm 416 may indicate a basal rate dosage, e.g., an amount of longer-acting insulin that is delivered throughout the course of a day and may be adjusted infrequently. The output of the artificial pancreas algorithm 416 may also or alternatively indicate a bolus dosage, e.g., an amount of shorter-acting insulin to be delivered before and / or during a meal. For example, the artificial pancreas algorithm 416 may generate a bolus dosage prediction in response to a user input indicating that the user is about to eat a meal and / or in response to the algorithm predicting that the user is about to eat a meal, e.g., based on the user's current location (restaurant), recorded previous eating habits, time, etc.
[0075] In scenarios in which the artificial pancreas algorithm 416 anticipates meals and predicts insulin bolus doses, the algorithm may do so not only based on the user's location but also based on blood glucose measurements 118 received in real time, such as based on rising blood glucose measurements 118 indicating that the human 102 has already started eating a meal. As noted above, the artificial pancreas algorithm 416 may be configured to detect the occurrence of events that may affect the blood glucose of the human 102 as these events occur. Thus, detecting that the human 102 has already started eating a meal based on real-time data is an example of detecting an event that may affect the blood glucose of the human 102 as this event occurs. Additionally, based on the user's location and / or the blood glucose measurements 118 of the human 102, the artificial pancreas algorithm 416 may also predict meals that the human 102 will eat and predict corresponding insulin doses; for example, if the human 102 is located at a pizza restaurant, the artificial pancreas algorithm 416 may determine an insulin dose that corresponds to pizza. The ability to predict that human 102 has eaten a meal or is likely to do so in the near future and to determine a corresponding bolus dose may be particularly useful for users who do not strictly adhere to insulin therapy, for example, by inputting data (e.g., carbohydrate amount) into the user's insulin delivery system in anticipation of an upcoming meal (e.g., 30 minutes in advance) or by calculating a dose in anticipation of such meals themselves. Instead, these “non-compliant” users may often not input such data, may not input it in a timely manner, and / or may simply not administer insulin. In addition to or instead of location data, there may be a variety of sources of meal data that can describe the meal eaten or characteristics of the meal eaten (e.g., timing, amount of food, etc.) and serve as input to the artificial pancreas algorithm 416.
[0076] By way of example, a “smart” refrigerator may be configured to generate and provide meal data for use by the artificial pancreas algorithm 416. Such a refrigerator may be configured to track inventory, which may include tracking food added to and removed from the refrigerator. To this end, the refrigerator may generate meal data describing food removed by the human 102 and not returned to the refrigerator. This may be further based on receipt by the system of information describing the user eating food removed from the refrigerator. Alternatively or additionally, the refrigerator may be configured to suggest foods stored in the refrigerator or recipes involving foods stored in the refrigerator based on blood glucose measurements of the human 102, such as when the human interacts with the refrigerator.
[0077] As an example, the refrigerator may detect that the person 102 has a wearable blood glucose monitoring device 104 and interacts with the refrigerator, e.g., the person 102 interacts with a refrigerator control or opens the refrigerator. In response, the refrigerator may obtain blood glucose measurements 118 of the person 102, e.g., by downloading them from one or more of the wearable blood glucose monitoring device 104, the computing device 108, or the blood glucose monitoring platform 112. Based on the obtained blood glucose measurements, the refrigerator may then determine whether any of the foods (or recipes involving those foods) it maintains, if consumed by the person 102, are predicted to achieve a desired blood glucose target, such as to lower blood glucose if blood glucose is determined to be above a threshold or rising, to maintain blood glucose if blood glucose is determined to be within a desired blood glucose range, or to raise blood glucose if blood glucose is determined to be below a threshold or falling. The determined foods or recipes may then be suggested by the refrigerator, e.g., displayed on the refrigerator, communicated to the computing device 108 for display, etc.
[0078] As noted above, images may also be utilized to obtain information regarding the meal consumed by the human 102. In one or more implementations, the blood glucose monitoring module 408 can use image analysis to determine what the human 102 consumed during a meal by comparing first and second images, where a first image of the meal (e.g., of the plate with the meal) is taken before the meal is consumed by the human 102 and a second image of the meal (e.g., of the plate without the meal and / or with portions of the meal that were not consumed) is taken after the meal is consumed by the human 102. While this functionality is described in connection with the blood glucose monitoring module, it should be understood that the image analysis, image comparison, and consumption determination may be performed by some other module other than the blood glucose monitoring module 408, and the information may simply be accessible by the blood glucose monitoring module 408.
[0079] Regardless, the difference between the before and after images allows the system to calculate the actual amount eaten, rather than simply using the before image, which may not accurately represent the amount of food actually consumed if not everything depicted in the before image was consumed. By more accurately determining the amount eaten due to the comparison of the before and after images, the blood glucose monitoring module 408 can also more accurately determine the carbohydrate and / or nutrient content of the meal eaten. Furthermore, such accurate determination of the meal allows the artificial pancreas algorithm 416 to predict the appropriate dose of insulin corresponding to the food actually eaten, rather than predicting the dose based solely on the amount of food depicted (e.g., on the plate) in the before image, which may also differ from the amount actually eaten.
[0080] The blood glucose monitoring module 408 may process the before and after images to estimate carbohydrate and / or fat amounts and determine the difference between meals from before the meal is eaten until the meal is completed. The artificial pancreas algorithm 416 may then predict one or more doses of insulin in conjunction with these determinations to cover the effect of the consumed meal (not simply photographed before eating) on the blood glucose of the human 102. Using the before and after images and detected patterns of blood glucose of the human 102, the artificial pancreas algorithm 416 can quickly generate a retrospective response and use the retrospective response to predict future meal blood glucose responses.
[0081] In addition to detecting the amount and / or food being eaten, in one or more implementations, the artificial pancreas system 402 may utilize one or more sensors to detect when the human 102 is eating, which may be advantageous for determining the time and / or rate of insulin delivery. In one example, for example, the human may wear a wearable strain sensor that can be used to detect food consumption, i.e., whether the human is eating. The wearable strain sensor may be configured in a variety of ways without departing from the spirit or scope of the described techniques. By way of example, the wearable strain sensor may be configured as a flexible substrate (e.g., elastomer, paper, reduced graphene oxide, to name just a few) that senses a change in shape and generates a measurable electrical signal in response to the detected change. This measurable electrical signal may be utilized to provide a signal or communication based on this signal to the artificial pancreas controller 406 (e.g., insulin module 406 and / or blood glucose monitoring module 408) indicating that the user is currently eating. In other words, wearable strain sensors can be used to generate meal data describing the times when the user actually eats. The artificial pancreas algorithm 416 can then determine insulin doses based on the actual times when the user eats, rather than other times, such as when the user provides user input indicating that they are eating (which may not coincide with the times when the user actually eats).
[0082] In one or more implementations, such wearable strain sensors may be worn by human 102 on the front of the neck to sense swallowing, on the jaw to sense chewing, or in the mouth, just to name a few. Some components of artificial pancreas controller 404 or system 402 may include one or more machine learning models that learn to distinguish between eating and other signal-generating behaviors, such as talking or swallowing without eating. Using such machine learning models, signals provided to artificial pancreas algorithm 416 may be filtered so that only signals from wearable strain sensors corresponding to eating are received by artificial pancreas algorithm 416.
[0083] To generate meal predictions, the artificial pancreas algorithm 416 may also leverage historical data of the human 102 and / or the user population 110. Alternatively or additionally, the artificial pancreas algorithm 416 may predict these upcoming meals and corresponding bolus doses using the current time and confidence intervals, which intervals are established when the human 102 has eaten in the past. The artificial pancreas algorithm 416 may also predict typical meals for the human 102 based on historical data, for example, to determine doses corresponding to the predicted meals. In one or more implementations, for example, the artificial pancreas algorithm 416 may predict an upcoming meal based on the current time and determine an average bolus dose, such as an average bolus dose for breakfast, lunch, dinner, or a snack. Additionally or alternatively, the artificial pancreas algorithm 416 may predict an upcoming meal based on the current time and past meal times, but the artificial pancreas algorithm 416 may wait to trigger insulin delivery until early signs that a meal will be eaten by the human 102 are detected. In this way, the artificial pancreas algorithm 416 can deliver insulin sooner than algorithms that rely solely on detecting a current event. In particular, the artificial pancreas algorithm 416 can use these signals, i.e., past mealtimes in conjunction with early indications that a meal is being eaten, such as a slight increase in blood glucose, to provide an earlier indication that a meal is being eaten than a slight increase in blood glucose alone.
[0084] In addition to predicting upcoming meals that may result in insulin spikes and determining bolus insulin delivery, the artificial pancreas algorithm 416 may also predict other events, such as exercise. The following scenario may correspond to another example in which the artificial pancreas algorithm 416 detects the occurrence of an event that will affect the blood glucose of the human 102 when the event occurs. For example, the artificial pancreas algorithm 416 may predict that the human 102 is exercising or about to exercise using one or more of the human's 102's current location, the human's 102's blood glucose measurements 118, the human's 102's activity data, etc. To do so, the artificial pancreas algorithm 416 may be trained, or the underlying model may learn otherwise, based on data describing the human's 102's past locations and activities, along with the human's blood glucose measurements 118 correlated with this other data, and by using one or more machine learning techniques. Thus, the trained artificial pancreas algorithm 416 may be able to predict the human's 102's activity (e.g., exercise) using data describing the human's current context based on learning from past data. Based on the predicted activity, the artificial pancreas algorithm 416 may also determine that a corresponding insulin dose or consumption of food (e.g., juice, candy, etc.) may be required to raise the blood glucose of the human 102. In scenarios where food consumption is required, the artificial pancreas system 402 may output a recommendation to eat something, such as via a display on the computing device 108.
[0085] In accordance with the described techniques, data input to the artificial pancreas algorithm 416 and data output therefrom related to determining insulin dosages are generally stored in shared storage 410. As the artificial pancreas algorithm 416 determines insulin dosages for the human 102 over time, and the effectiveness of these insulin dosages to maintain the human's 102's blood glucose levels is monitored, e.g., based on blood glucose measurements 118, the insulin module 406 may adjust the model underlying the artificial pancreas algorithm 416 to better determine insulin dosages for the human 102, such as by reinforcing (e.g., rewarding) decisions that resulted in stable blood glucose measurements within a target range and disallowing (e.g., penalizing) decisions that resulted in unstable measurements and / or measurements outside the target range. In this manner, the artificial pancreas algorithm 416 may be configured to learn how to keep the human's 102's blood glucose levels within a target range and / or more stable than when the algorithm was initially deployed. In one or more implementations, the underlying model may be adjusted by adjusting the internal weights of the artificial pancreas algorithm 416 or by adjusting the parameters of one or more functions used to implement the artificial pancreas algorithm 416. This adjustment over time, based on monitoring the results of the output of the artificial pancreas algorithm 416, is sometimes referred to as "learning" or "learning the model," and the underlying model is learned using machine learning techniques, i.e., is in essence a machine learning model.
[0086] In any case, losing such learning may generally be undesirable. This is because it may take time for the artificial pancreas algorithm 416 to learn how accurately the human 102's body responds to determined insulin doses (e.g., the number of times the response is administered and monitored). Furthermore, it may be inconvenient for the artificial pancreas algorithm 416 to take that time again to relearn such responses, and relearning may also result in the recurrence of adverse health events that occurred during previous learning. To this end, the artificial pancreas algorithm 416 is configured for communication to and storage by a different device, which may be used to back up the algorithm. By way of example, the computing device 108 may communicate the artificial pancreas algorithm 416 to the blood glucose monitoring platform 112 via connection 420 so that the artificial pancreas algorithm 416 can be maintained in the storage device 120, such as in association with the human 102's user profile in the blood glucose monitoring platform 112. Alternatively or additionally, the artificial pancreas algorithm 416 may be communicated to the insulin delivery system 106 and / or a service associated with the computing device 108, such as a backup cloud storage service. In this way, when a user begins using a new device (e.g., a new cell phone or a new insulin delivery system), the artificial pancreas algorithm 416 can simply be transferred to the new device so that learning is not lost. In other words, the artificial pancreas algorithm 416 can "pick up where it left off." In some use cases, one or more of the devices, such as the insulin delivery system, may be disposable, with some configurations being discarded after only three days of use. In these cases, it would be entirely inappropriate to re-learn the underlying model or parameters of the artificial pancreas algorithm 416 after each discard (e.g., every three days).
[0087] The data stored in the shared storage 410, including, among other information, data input to and output from the algorithms, may be communicated to other devices in a similar manner. For example, the data in the shared storage 410 may be communicated to the blood glucose monitoring platform 112, the insulin delivery system 106, remote storage associated with the computing device 108, etc. for storage on the storage device 120. Thus, if a device fails or is replaced, the artificial pancreas algorithm 416 and / or the data stored in the shared storage 410 may simply be downloaded to the new or replaced device, for example, from the storage device 120 of the blood glucose monitoring platform 112 or the cloud storage of the computing device 108.
[0088] Additionally, once the data in shared storage 410 is communicated to blood glucose monitoring platform 112, this data may be aggregated by data analytics platform 122 with similar data from user population 110 to form a large aggregated dataset. This dataset may be used to train various machine learning models. Additionally or alternatively, machine learning models may be applied to the large dataset to identify patterns among the data. In this manner, patterns in the data may be used to improve artificial pancreas system 402, such as to improve an initial artificial pancreas algorithm 416 deployed on computing device 108 of human 102. By way of example, as part of setting up artificial pancreas system 402, blood glucose monitoring platform 112 may communicate to computing device 108 an artificial pancreas algorithm 416 that is trained using data from users in user population 110 who are similar to human 102 (according to various characteristics of the humans and their users described by the data).
[0089] The pump control manager 418 embodies the functionality to control the insulin delivery system 106 to deliver insulin dosages output by the artificial pancreas algorithm 416. By way of example, the pump control manager 418 may generate instructions based on the output of the artificial pancreas algorithm 416 to instruct the insulin delivery system 106 to deliver an amount of insulin over a period of time, e.g., 3 insulin units (IU) immediately, 0.15 IU every hour continuously, etc. The pump control manager 418 may also cause these instructions to be communicated to the insulin delivery system 106 via the wireless connection 414. In addition to generating instructions based on the output of the artificial pancreas algorithm 416 for controlling the delivery of insulin dosages, the pump control manager 418 is also configured to connect insulin delivery systems from different providers (e.g., different manufacturers) so that the various pumps can deliver insulin according to dosages determined using the artificial pancreas algorithm 416. The pump control manager 418 may connect various insulin systems using dedicated interfaces (e.g., for each different insulin delivery system or their provider), as described in more detail below, and communicate secure payload data over the wireless connection 414. The pump control manager 418 may include a variety of functionality for controlling the insulin delivery system 106 to deliver insulin doses determined using the artificial pancreas algorithm 416 without departing from the spirit or scope of the described techniques.
[0090] Although illustrated as being included as part of the artificial pancreas controller 404, in one or more embodiments, the insulin module 406 and the blood glucose monitoring module 408 may be configured as separate computing applications, with the insulin module 406 corresponding to a first insulin application and the blood glucose monitoring module 408 corresponding to a second blood glucose monitoring application. Additionally or alternatively, the insulin module 406, when configured as an application, may be configured as a plug-in to the blood glucose monitoring module 408. Indeed, a variety of programmatic or logical arrangements are contemplated in accordance with the described techniques. In scenarios in which the insulin module 406 and the blood glucose monitoring module 408 are separate applications, communication of data between these modules may also be controlled by a secure communication protocol, i.e., so that payload data is securely communicated between the insulin module 406 and the blood glucose monitoring module 408. As noted above, processes for securing this payload data are described in more detail below.
[0091] The shared storage 410 can be used by the insulin module 406 and the blood glucose monitoring module 408 to securely share data, thereby enabling insulin dosages to be provided based in part on blood glucose measurements 118 generated by the wearable blood glucose monitoring device 104. In one or more implementations, the shared storage 410 is optimized for fast writes. Access to the shared storage 410 may also be controlled by an application programming interface (API) (not shown) to allow internal and external data consumers to access data from the shared storage 410. Additionally or alternatively, access to the shared storage 410 may be restricted to applications authorized to do so based on inclusion in an application group published by the blood glucose monitoring platform 112, for example, with a signing certificate. Applications included in this application group may be authorized to access the shared storage 410 by using the API and based on encryption controls.
[0092] Additionally or alternatively, the shared storage 410 may include multiple databases, such as a database for the insulin module 406 and a database for the blood glucose monitoring module 408. These multiple databases may be considered shared storage based on access permissions granted to the other modules. For example, the insulin module 406 may be granted permissions allowing it to access a portion of the blood glucose monitoring module 408's database, and the blood glucose monitoring module 408 may be granted permissions allowing it to access a portion of the insulin module 406's database. The portion of the database accessible to both modules may comprise the shared storage 410. The database manager 422 is configured to manage secure access to the shared storage 410 by various applications, such as by maintaining a database key in the blood glucose monitoring module's 408 private key chain. Details regarding at least one exemplary implementation are described in more detail below.
[0093] The blood glucose monitoring system manager 424 is generally configured to manage the wearable blood glucose monitoring device 104. This may include, for example, configuring the wearable blood glucose monitoring device 104 for use with the blood glucose monitoring platform 112, configuring the wearable blood glucose monitoring device 104 for use as part of the artificial pancreas system 402, receiving blood glucose monitoring device data 214 from the wearable blood glucose monitoring device 104, processing the received blood glucose monitoring device data 214 (e.g., to extract blood glucose readings 118 from the blood glucose monitoring device data 214 and store them in shared storage 410), associating the blood glucose monitoring device data 214 (or portions thereof) with supplemental data (e.g., data describing application usage or health-related aspects at the time corresponding to the blood glucose readings), storing at least some of this supplemental data in or otherwise making accessible via the shared storage 410, packaging the blood glucose monitoring device data 214 with the supplemental data for communication over the network 116 via connection 420 to the blood glucose monitoring platform 112 and for storage in the storage device 120, etc. The blood glucose monitoring system manager 424 may be configured to manage interactions involving the wearable blood glucose monitoring device 104 and the blood glucose monitoring platform 112 in connection with implementing the artificial pancreas system 402 in a variety of ways without departing from the spirit or scope of the described techniques.
[0094] Having described the artificial pancreas system 402 and its different components used to determine insulin doses and further deliver these insulin doses to a person without the need for the person to monitor their blood glucose and manually inject insulin, consider the following example implementations.
[0095] Shared Blood Glucose Monitoring and Insulin Module Storage The following description provides one exemplary implementation of the shared storage 410. As noted above, the shared storage 410 is configured to securely share data between the insulin module 406 (e.g., an insulin application) and the blood glucose monitoring module 408 (e.g., a blood glucose monitoring application) used in connection with delivering predicted insulin doses to keep the blood glucose level of the person 102 within a target range.
[0096] In one or more implementations, the insulin module 406 and the blood glucose monitoring module 408 encrypt the shared storage 410 using an encryption library. By way of example, the insulin module 406 and the blood glucose monitoring module 408 encrypt the shared storage 410 using a third-party encryption library, such as by using SQLCipher. Certainly, other encryption libraries, third-party and / or proprietary, may be used to encrypt the shared storage 410 without departing from the spirit or scope of the described techniques. To the extent an SQL-based encryption library may be used, the shared storage 410 may be configured as a shared database in various implementations, for example, an SQLite database. The shared storage 410 may also be configured in other ways to ensure secure data storage for the insulin module 406 and the blood glucose monitoring module 408 in accordance with the described techniques.
[0097] For example, to ensure the security and privacy of data stored on shared storage 410, shared storage 410 may be encrypted with a private key securely held in a shared keychain. By encrypting shared storage 410 in this manner, the encryption protects the data stored on shared storage 410 from unauthorized modification, interception, or eavesdropping while on computing device 108 and / or when one or more service providers generate unencrypted backups of computing device 108 to a different computing device.
[0098] Generally speaking, the shared storage 410 is configured to restrict access to data on the shared storage 410 to applications (e.g., including the insulin module 406 and / or the blood glucose monitoring module 408 or components thereof) listed in an application group. The applications listed in this application group may be controlled by the blood glucose monitoring platform 112 such that the blood glucose monitoring platform 112 publishes the application group, which lists the applications that are allowed to access the data on the shared storage 410. In other words, the applications listed by the blood glucose monitoring platform 112 as part of the application group are the only applications allowed to access the shared storage 410; other applications are blocked from accessing the shared storage 410. In one or more implementations, the application group may include further information for controlling access to the shared storage 410, such as whether the listed applications are allowed read and / or write access to the shared storage 410. In some scenarios, for example, a given application may be listed as having read access to the shared storage 410 but not write access to the shared storage 410. In other scenarios, a given application may have both read and write access to the shared storage 410 .
[0099] By using an application group, the computing device 108 can provide a shared document area accessible only to applications in the application group. Additionally, the application group may be configured so that the only applications that can join the group are applications published with the blood glucose monitoring platform 112's signing certificate and / or approved by a developer user of the blood glucose monitoring platform 112. The developer user of the blood glucose monitoring platform can approve applications to be part of the application group through a portal for forming application groups and enabling such publishing with signing certificates. Additionally, the blood glucose monitoring module 408, i.e., the database manager 422, is configured to manage an encryption key for the shared storage 410. Specifically, the database manager 422 maintains this key for the shared storage 410 in the blood glucose monitoring module's 408's private key chain. Thus, applications in the application group can access the shared document area and shared key chain described above. However, only applications with the private database key can read and write to the shared storage 410.
[0100] During operation, the insulin module 406 may generate a public / private key pair during a setup process with the blood glucose monitoring module 408. The insulin module's 406 public key is available to the blood glucose monitoring module 408 in a shared keychain. In various scenarios, a user may download an insulin application to the computing device 108 for use with the artificial pancreas system 402. This application may be downloaded from an application store, for example, and may include the insulin module 406. During setup of such an application, the user may choose to link the application with the blood glucose monitoring module 408.
[0101] Based on the selection to link the insulin application to the blood glucose monitoring module 408 and based on the inclusion of this insulin application in the application group described above, the database manager 422 creates a copy of the encryption key of the blood glucose monitoring module 408 by encrypting this copy with the insulin application's public key and storing this encrypted version of the insulin application's public key in the shared keychain. In particular, each application in the application group has access to the shared keychain. However, to decrypt the encrypted version of a given application's public key, the corresponding private key is required, and only the given application contains such a private key. Thus, an application in an application group cannot decrypt the encrypted version of another application's public key, despite its inclusion in the application group.
[0102] In a scenario where a user chooses to unlink the insulin application, for example when switching to a different insulin application, the database manager 422 removes the application's encrypted key from the shared keychain and rekeys the shared storage 410 with the new encrypted key. The database manager 422 then updates the encrypted key stored in the private keychain of the blood glucose monitoring module 408. However, if the shared storage 410 is accessible to the insulin module 406 and / or the blood glucose monitoring module 408, these modules may utilize various data persisted in the shared storage 410 (e.g., by reading data from or writing data to the storage) to determine the dosage of insulin to be delivered to the person 102 to keep blood glucose levels within a target range. In this context, consider the following description of FIGS. 5-9.
[0103] 5-9 depict example tables stored in shared storage in connection with implementing the artificial pancreas system 402. Each of these figures depicts the shared storage 410 in more detail and includes example specific tables. By way of example, FIG. 5 depicts an exemplary implementation 500 of the shared storage and an example of an active insulin (insulin on board (IOB)) table. In addition to the active insulin (IOB) table 502, the illustrated example 500 also includes a basal delivery table 504, a bolus delivery table 506, an insulin profile table 508, and a bolus calculation table 510. The shared storage 410 is illustrated with an ellipsis to indicate that more and / or different tables may be included in the shared storage without departing from the spirit or scope of the described techniques. The basal delivery table 504, the bolus delivery table 506, the insulin profile table 508, and the bolus calculation table 510 are each described in detail in connection with FIGS. 6-9.
[0104] In the illustrated example 500, the active insulin (IOB) table 502 includes multiple columns 512-520, where each column corresponds to a different attribute of the data in the active insulin (IOB) table 502. Each row in the illustrated example, except for the top row, represents a data record in the active insulin (IOB) table 502. It should be understood that the active insulin (IOB) table 502 may be configured with various attributes without departing from the spirit or scope of the described techniques.
[0105] In general, the active insulin (IOB) table 502 contains a history of insulin onboard. This table is generated while insulin doses are being delivered, so that when the amount of insulin onboard for a given bolus dose reaches zero, no more records are added to the active insulin (IOB) table 502 until delivery of the next insulin dose begins. In one or more implementations, the insulin module 406 may provide data for insulin onboard measurements at a time interval, causing the active insulin (IOB) table 502 to be updated with new records according to the interval, for example, every minute the IOB changes. In at least some implementations, changes in insulin onboard that are less than a threshold amount, for example, a change in insulin onboard that is less than 0.1 units of insulin, may not result in the addition of a new record to the active insulin (IOB) table 502.
[0106] In the context of the illustrated example 500, attribute 512 represents a record identifier. For a given record in active insulin (IOB) table 502, the record identifier uniquely identifies the record from other records in the table. In the illustrated example 500, attribute 512 is labeled with the name "record_id." In one or more implementations, the type of attribute 512 may be an integer primary key. Thus, attribute 512 may be configured as the primary key for a given record.
[0107] Attribute 514 represents a measurement time, e.g., the time a measurement is made or otherwise determined. For a given record in active insulin (IOB) table 502, the measurement time corresponds to the time an active insulin, i.e., insulin on-board, measurement is determined. In the illustrated example 500, attribute 514 is labeled with the name "insulin_system_time_sec." In one or more implementations, the type of attribute 514 may be an integer. Furthermore, the measurement time may correspond to Coordinated Universal Time (UTC) in seconds.
[0108] Attribute 516 represents the amount of insulin onboard. For a given record in active insulin (IOB) table 502, the amount of insulin onboard corresponds to a measurement of the insulin remaining onboard for delivery, e.g., until zero units of insulin remain to be delivered to human 102. In the illustrated example 500, attribute 516 is labeled with the name "insulin_on_board." In one or more implementations, the type of attribute 516 may be an integer. Furthermore, the amount of insulin onboard corresponds to the number of insulin units and may be measured to the hundredth of an insulin unit.
[0109] Attribute 518 represents the time remaining until there is no insulin remaining on-board for a given insulin dose. This amount may be determined based on the amount of insulin still on-board (e.g., attribute 516) and also the rate of delivery of the dose. Alternatively or additionally, the amount may be based on a fixed delivery end time, where an end time is specified (e.g., according to the output of the artificial pancreas algorithm 416) and the insulin delivery system 106 is instructed to deliver the entire dose of insulin by the end time. In the illustrated example 500, attribute 518 is labeled with the name "remaining_time_sec." In one or more implementations, the type of attribute 518 may be an integer. Furthermore, the remaining time may correspond to the number of seconds until there is no insulin remaining on-board for a given insulin dose.
[0110] Attribute 520 represents the name of the source device or application corresponding to the insulin onboard measurement, where "corresponding" may be the device or application that requested the measurement, performed the measurement, and / or has insulin onboard that is being delivered. This name may be determined by processing a data packet or uniform resource locator (URL) message from the device or application, e.g., by extracting the name from a field or successfully decoding the data or message using a particular key, to name just a few. In the illustrated example 500, attribute 520 is labeled with the name "source_name." In one or more implementations, the type of attribute 520 may be text, e.g., a text string. Additionally, the source device or application name may identify the device or application that corresponds to a given record in relation to other devices or applications, such as other devices or applications that may have insulin onboard that can request, perform, and / or deliver the measurement.
[0111] 6 depicts an example 600 of a basic delivery table 504 that includes multiple columns 602-616, where each of these columns corresponds to a different attribute of data in the basic delivery table 504. Each row of the illustrated example 600, except for the top row, represents a data record in the basic delivery table 504. It should be understood that the basic delivery table 504 may be configured with various attributes without departing from the spirit or scope of the described techniques.
[0112] Collectively, the basal delivery table 504 contains a history of basal rate changes. A new record is added to the basal delivery table 504 each time the artificial pancreas algorithm 416 determines a change in the basal rate of, for example, the human 102. Examples of when records may be added to the basal delivery table 504 include temporary basal rate determination and subsequent delivery (e.g., due to vacation, illness, stress, time, exercise, etc.), cessation of insulin delivery, administration of prescription medication, pregnancy, and changes in health indicators, to name just a few.
[0113] In the context of the illustrated example 600, attribute 602 represents a record identifier. For a given record in underlying delivery table 504, the record identifier uniquely identifies the record from other records in the table. In the illustrated example 600, attribute 602 is labeled with the name "record_id." In one or more implementations, the type of attribute 602 may be an integer primary key. Thus, attribute 602 may be configured as the primary key for a given record.
[0114] Attribute 604 represents the time at which the basal rate of insulin delivery is changed to deliver basal insulin to the person 102 at a different rate, for example, based on the events just described. For a given record in the basal delivery table 504, this particular change time corresponds to the time at which the basal rate corresponding to the particular record begins. In the illustrated example 600, attribute 604 is labeled with the name "basal_rate_start_time_sec." In one or more implementations, the type of attribute 604 can be an integer. Additionally, the delivery start time may correspond to UTC time in seconds.
[0115] Attribute 606 describes the rate of delivery of insulin. For a given record in basal delivery table 504, the rate of delivery corresponds to the rate at which basal insulin delivery has changed since the start time described by attribute 604, for example. Thus, the delivery rate described by attribute 606 may be used until the basal rate is changed again, for example, based on another one or more of the events described above. In the illustrated example 600, attribute 606 is labeled "basal_delivery_rate." In one or more implementations, the type of attribute 606 may be an integer. Specifically, the integer number represented by attribute 606 may describe the number of units of insulin to deliver over a predetermined period of time, such as one hour. Thus, in this scenario, if attribute 606 for a given record has a value of "1.00," this may represent that the rate of delivery of basal insulin is 1.00 insulin units per hour. Furthermore, the number of units of insulin to deliver per known time interval may be specified to a known precision, such as to one-hundredth of an insulin unit. It should be understood that different implementations may vary in precision and time intervals without departing from the spirit or scope of the described techniques. For example, attribute 606 may describe the number of units of insulin (specified to the tenth of a unit) to deliver over a 24-hour period.
[0116] Attribute 608 represents how much the basal rate described by the record varies from the basal rate described by a basal profile of the human 102, such as the basal profile described by the record in insulin profile table 508 and corresponding to the current time. Attribute 608 may correspond to the percentage by which the rate described by attribute 606 is the basal rate described by the basal profile of the human 102. In this context, a change from the basal rate described by such a basal profile does not correspond to 100 percent (100%). However, if the basal rate is twice the rate indicated by the basal profile, attribute 608 may be set to a value corresponding to two hundred percent (200%). For example, if the basal rate indicated by the basal profile is 1.00 IU / hr and a given record corresponds to a change to 2.00 IU / hr, attribute 608 may be set to a value corresponding to 200%. Thus, if the basal rate is half the rate indicated by the basal profile, attribute 608 may be set to a value corresponding to fifty percent (50%). For example, if the basal rate indicated by the basal profile is 1.00 IU / hr and a given record corresponds to a change to 0.50 IU / hr, attribute 608 may be set to a value corresponding to 50%.
[0117] In one or more implementations, this attribute 608 may be set to a value other than 100 percent only if the change corresponding to the record is temporary. In contrast, if the record corresponds to a rate change that also changes the basal rate described by the basal profile of the human 102, the value of this attribute 608 may be set to 100 percent (100%) even if the rate in the record is different from the previous rate described by the basal profile of the human 102. In the illustrated example 600, the attribute 608 is labeled with the name "temp_basal_adjustment." In one or more implementations, the type of the attribute 608 may be an integer. The difference between the rate in each record and the rate described by the basal profile may be described in ways other than as a percentage without departing from the spirit or scope of the described techniques.
[0118] Attribute 610 represents the duration for which insulin is delivered according to the rate for the respective record, e.g., the rate described by attribute 606. In the case of a temporary rate change, the value to which this attribute 610 is set may correspond to the time for the basal rate to return to the rate described by the basal profile of the human 102. In the case of a rate intended to be used indefinitely (a change that changes the rate described by the basal profile), this attribute 610 may be set to a value indicating the rate to be used indefinitely or a reserved value. Alternatively or additionally, this attribute 610 may be set to a value that triggers automatic calculation of a new basal rate for the basal profile, taking into account the lack of a staggered change. By way of example, this attribute 610 may be set to a value corresponding to one month such that the artificial pancreas algorithm 416 automatically determines the basal rate of insulin delivery for the human every month if no other events otherwise change the rate during that time. In the illustrated example 600, attribute 610 is labeled with the name “insulin_action_duration_sec.” In one or more implementations, the type of attribute 610 may be an integer. Additionally, the duration may correspond to the number of seconds after which the delivery of basal insulin according to the rate of the record is set to change, as described by attribute 606.
[0119] Attribute 612 describes the generic name of the insulin delivered according to the rate of the record. In this context, the term "generic" contrasts with "trademark" names, which refer to the non-brand name of the type of insulin delivered in association with the respective record. An example of a generic name for a type of long-acting insulin is glargine, which may have trade names such as Lantus®, Toujeo®, Abasaglar®, and Basaglar®. In the illustrated example 600, attribute 612 is labeled with the name "insulin_generic_name." In one or more implementations, the type of attribute 612 can be text, for example, a text string of the generic name. Furthermore, this attribute 612 and / or attribute 614 may optionally be included in the basal delivery table 504.
[0120] In contrast to attribute 612, attribute 614 describes the trade name (if any) of the insulin delivered according to the rate of the record. The term "trade name" refers to the brand name of a type of insulin, i.e., the generic insulin brand name. In the example described above, for example, Lantus®, Toujeo®, Abasaglar®, and Basaglar® are trade names for glargine, a generic name for a type of long-acting insulin that may be used for basal insulin delivery. In the illustrated example 600, attribute 614 is labeled with the name "insulin_trade_name." In one or more implementations, the type of attribute 614 can be text, for example, a text string of a trade name. Like attribute 612, this attribute 614 may optionally be included in the basal delivery table 504.
[0121] Attribute 616 represents the name of the insulin delivery system that delivers basal insulin according to the rate of the record, e.g., the name of the insulin delivery system 106. This name may be determined by processing data from the insulin delivery system 106, such as based on the setup of the artificial pancreas system 402. In the illustrated example 600, attribute 616 is labeled with the name "source_name." In one or more implementations, the type of attribute 616 may be text, e.g., a text string. Additionally, the name of the insulin delivery system may identify the system in relation to other systems that can deliver insulin, such as when a user changes to a different insulin system due to insurance reasons, upgrades, use of multiple systems, etc.
[0122] 7 depicts an example 700 of a bolus delivery table 506 that includes multiple columns 702-716, where each of these columns corresponds to a different attribute of data in the bolus delivery table 506. Each row of the illustrated example 700, except for the top row, represents a data record in the bolus delivery table 506. It should be understood that the bolus delivery table 506 may be configured with a variety of attributes without departing from the spirit or scope of the described techniques.
[0123] Overall, the bolus delivery table 506 contains a history of insulin boluses delivered by the insulin delivery system as part of the artificial pancreas system 402. By way of example, if a bolus insulin delivery is determined by the artificial pancreas algorithm 416 and delivered in anticipation of a meal, at least one record describing the delivery is added to the bolus delivery table 506. In one or more scenarios, multiple records may be added for split and / or combination bolus insulin doses. For example, several records may be added corresponding to several stages of bolus insulin delivery, e.g., two records may be added for a two-stage insulin delivery.
[0124] In the context of the illustrated example 700, the attribute 702 represents a record identifier. For a given record in the bolus delivery table 506, the record identifier uniquely identifies the record from other records in the table. In the illustrated example 700, the attribute 702 is labeled with the name "record_id." In one or more implementations, the type of the attribute 702 may be an integer primary key. Thus, the attribute 702 may be configured as the primary key for a given record.
[0125] Attributes 704 represent the time at which delivery of a bolus dose of insulin, or a phase of a bolus dose corresponding to the respective record, begins, for example, in response to input of data describing an upcoming meal or based on the artificial pancreas algorithm 416 predicting that the human 102 is likely to encounter a meal in the near future. For a given record in the bolus delivery table 506, this time of delivery corresponds to the time at which the bolus dose or phase corresponding to the particular record begins to be delivered to the human 102. This time may correspond to the determination of the respective bolus dose by the artificial pancreas algorithm 416, such that a record is added to the bolus delivery table 506 after the artificial pancreas algorithm 416 determines, based on an upcoming meal (specified by the user or predicted by the algorithm), that a bolus dose of insulin will be delivered. Here, the start time described by attributes 704 corresponds to the time at which the artificial pancreas algorithm 416 outputs a decision and / or is specified in the output of the algorithm. The pump control manager 418 then delivers the determined dose via the insulin delivery system 106 according to the added record. In the illustrated example 700, the attribute 704 is labeled with the name "delivery_start_time_sec." In one or more implementations, the type of the attribute 704 may be an integer. Furthermore, the delivery start time may correspond to UTC time in seconds.
[0126] Attribute 706 represents the time at which the delivery of the insulin bolus dose or phase of the bolus dose corresponding to the respective record ends. Thus, the duration or phase of the administration may be determined based on the difference between the values of attribute 704 and attribute 706. This time may correspond to the determination of the respective bolus dose by the artificial pancreas algorithm 416, as described by the output of the artificial pancreas algorithm 416. The artificial pancreas algorithm 416 may be configured to output the duration of the administration and / or the actual time at which the administration will begin and end. In the illustrated example 700, attribute 706 is labeled with the name "delivery_end_time_sec." In one or more implementations, the type of the attribute may be an integer. Furthermore, the delivery end time may correspond to UTC time in seconds.
[0127] Attribute 708 represents the amount of insulin to deliver for the bolus dose or bolus dose step corresponding to the respective record. For a given record in bolus delivery table 506, this amount corresponds to a decision made by artificial pancreas algorithm 416 regarding how much insulin to deliver to human 102 based, for example, on a user-specified meal or a predicted upcoming meal, how much to deliver for a particular step of the dose, etc. In the illustrated example 700, attribute 708 is labeled with the name "insulin_units." In one or more implementations, the type of attribute 708 may be an integer. Furthermore, the amount of insulin to deliver for the bolus dose may correspond to the number of insulin units to deliver between the start time specified by attribute 704 and the end time specified by attribute 706, and the amount may be specified in insulin units and to hundredths of an insulin unit.
[0128] Attribute 710 represents the duration for which the amount of insulin described by attribute 708 is delivered for the bolus dose or phase corresponding to the record. This attribute 710 may be determined based on the difference between the times described by attributes 704 and 706. Alternatively or additionally, the end time described by attribute 706 may be determined by adding the duration described by attribute 710 to the start time described by attribute 704. To this end, the artificial pancreas algorithm 416 in one or more implementations may output a prediction of an insulin bolus dose to deliver to a person to coincide with an upcoming or predicted upcoming meal. This prediction may include not only the amount of insulin to deliver, as described above, but also the start and end times of the bolus, or alternatively, the start time and duration of delivery, or simply the duration at the start time corresponding to the prediction output. Indeed, the output of the artificial pancreas algorithm 416 may specify a variety of characteristics of the insulin bolus dose (e.g., in a feature vector) without departing from the spirit or scope of the described techniques. In the illustrated example 700, the attribute 710 is labeled with the name "insulin_action_duration_sec." In one or more implementations, the type of the attribute 710 may be an integer. Furthermore, the duration may correspond to the number of seconds that the amount of bolus insulin described by the attribute 708 is delivered to the person 102, for example, via the insulin delivery system 106.
[0129] Attribute 712 describes the generic name of the insulin to be delivered according to the aforementioned attributes of each record in the bolus delivery table 506. As noted above, the term "generic" contrasts with the "trademark" name of the insulin. An example of a generic name for a type of short-acting insulin is lispro, which may have trade names including Humalog® and Admelog®. In the illustrated example 700, attribute 712 is labeled with the name "insulin_generic_name." In one or more implementations, the type of attribute 712 can be text, for example, a text string indicating the generic name of the insulin to be delivered according to the attributes of the record. Furthermore, this attribute 712 and / or attribute 714 may optionally be included in the bolus delivery table 506.
[0130] In contrast to attribute 712, attribute 714 describes the trade name (if any) of the insulin delivered according to the record's attributes. As noted above, the term "trade name" refers to the brand name of a type of insulin, i.e., the generic insulin brand name. For example, in the example just described, Humalog® and Admelog® are trade names for lispro, a generic name for a type of short-acting insulin that may be used to administer a bolus of insulin. In the illustrated example 700, attribute 714 is labeled with the name "insulin_trade_name." In one or more implementations, the type of attribute 714 can be text, such as a text string indicating a trade name. Like attribute 712, this attribute 714 may optionally be included in the bolus delivery table 506.
[0131] Attribute 716 represents the name of the insulin delivery system that delivers the insulin bolus dose or bolus dose phase according to the attributes of the record, e.g., the name of the insulin delivery system 106. This name may be determined by processing data from the insulin delivery system 106, such as based on the setup of the artificial pancreas system 402. In the illustrated example 700, attribute 716 is labeled with the name "source_name." In one or more implementations, the type of attribute 716 may be text, e.g., a text string. Additionally, the name of the insulin delivery system may identify the system in relation to other systems that can deliver insulin, such as when a user changes to a different insulin system due to insurance reasons, upgrades, etc.
[0132] 8 depicts an example 800 of an insulin profile table 508 that includes multiple columns 802-812, where each of these columns corresponds to a different attribute of the data in the insulin profile table 508. Each row of the illustrated example 800, except for the top row, represents a data record in the insulin profile table 508. It should be understood that the insulin profile table 508 may be configured with various attributes without departing from the spirit or scope of the described techniques.
[0133] In general, the insulin profile table 508 includes a current profile of the human 102 for which the artificial pancreas system 402 is monitoring various aspects related to insulin administration, determining insulin dosages, and delivering the dosages according to the determinations. In one or more implementations, this profile may correspond to a selected profile of a plurality of different profiles associated with the insulin delivery system 106. The insulin profile table 508 may also include a history of profile changes. By way of example, when a user changes, or the artificial pancreas algorithm 416 changes, this may correspond to a record describing the profile according to attributes being added to the insulin profile table 508. In the context of a user changing a profile, this may correspond to selecting a different preset profile (e.g., "go back" to the default profile or selecting the "eat pizza" profile) or changing a particular attribute of the profile, i.e., by changing or updating settings. Such profile changes may be based on a variety of events, such as advice from a healthcare provider, lifestyle changes, pregnancy, illness, improvement or deterioration of health indicators, to name just a few. As an example of a user-specified change, a user may enter new values for a blood glucose target range, for example new minimum and maximum blood glucose levels, based on information from a healthcare provider.
[0134] The insulin profile table 508 may also be configured to take into account how the user's body responds to food, exercise, sleep, insulin, etc. throughout the day. In this way, the insulin profile table 508 can account for differences in how the body responds overnight (e.g., while sleeping), in the morning, afternoon, and evening. To this end, the first record in the insulin profile table 508 may have a start time of zero (midnight) so that the insulin profile table 508 considers the entire day. In an example where a user has a different profile for each hour of a day, e.g., 24 hours, there may be 24 records in this table. In either case, the insulin profile table 508 includes at least one record so that attributes related to insulin dosing can be used to deliver insulin to the person 102.
[0135] In the context of the illustrated example 800, the attribute 802 represents a record identifier. For a given record in the insulin profile delivery table 508, the record identifier uniquely identifies the record from other records in the table. In the illustrated example 800, the attribute 802 is labeled with the name "record_id." In one or more implementations, the type of the attribute 802 may be an integer primary key. Thus, the attribute 802 may be configured as the primary key for a given record.
[0136] Attribute 804 represents the start time of the profile described by the record. In one or more implementations, the profile start time can range from midnight to 11:59 PM. Thus, for a given record in the insulin profile table 508, the values of the record's attributes are used to calculate insulin delivery beginning at the respective start time until another profile with the next chronological start time becomes "active" according to the respective start time. In the illustrated example 800, attribute 804 is labeled with the name "start_time_hr_min." In one or more implementations, the type of attribute 804 can be an integer. Additionally, the profile start time can be configured to have four digits, with the first two digits corresponding to the hour (e.g., 0-23) and the next two digits corresponding to the minutes (e.g., 0-59). Given this particular implementation, the value range may range from "0000" to "2359," with "0000" corresponding to midnight, "1200" corresponding to noon, "1800" corresponding to 6 PM, etc. It should be understood that various time formats may be used without departing from the spirit or scope of the described techniques.
[0137] Attribute 806 represents a target minimum blood glucose level for human 102 when the respective record corresponds to the active profile. This is the level below which artificial pancreas system 402 attempts to prevent human 102's blood glucose from falling when the respective record corresponds to the active profile. In the illustrated example 800, attribute 806 is labeled with the name "glucose_target_min." In one or more implementations, attribute 806 may be of type integer. Furthermore, the minimum blood glucose level may be described in milligrams per deciliter (mg / dL), such that artificial pancreas system 402 attempts to prevent human 102's blood glucose readings 118 from falling below the number of mg / dL specified by attribute 806.
[0138] Attribute 808 represents a target maximum blood glucose level for human 102 when the respective record corresponds to the active profile. This is the level above which artificial pancreas system 402 attempts to prevent human 102's blood glucose from rising when the respective record corresponds to the active profile. In the illustrated example 800, attribute 808 is labeled with the name "glucose_target_max." In one or more implementations, attribute 808 may be of type integer. Like the minimum blood glucose level, the maximum blood glucose level may also be described in mg / dL, such that artificial pancreas system 402 attempts to prevent human 102's blood glucose measurements 118 from rising above the number of mg / dL specified by attribute 808. It should be understood that measurements other than mg / dL may be used to describe minimum and maximum blood glucose levels for a period of time without departing from the spirit or scope of the description technique.
[0139] Together, the target minimum blood glucose level described by attribute 806 and the target maximum blood glucose level described by attribute 808 define a "target range" as described herein. These minimum and maximum values may be obtained in a variety of ways; for example, the human 102 may enter them through a user interface (e.g., of the computing device 108 or the insulin delivery system 106) when setting up the artificial pancreas system 402 to automatically deliver insulin. In some cases, these user-entered minimum and maximum values may correspond to information provided by the human 102's healthcare provider. Alternatively or additionally, these minimum and maximum values may be obtained by capturing a digital image (e.g., of a prescription or information provided by another healthcare provider) or may be received directly from the human 102's healthcare provider, such as when a portal is exposed to the healthcare provider (e.g., by the blood glucose monitoring platform 112) and the healthcare provider enters the minimum and maximum values through the portal's user interface.
[0140] Attribute 810 represents the insulin sensitivity of the human 102 when the respective record corresponds to the active profile. This attribute 810 describes how the blood glucose of the human 102 (as indicated by the blood glucose reading 118) changes for each insulin unit (IU) delivered. Additionally, the insulin sensitivity described by attribute 810 may be used by the artificial pancreas algorithm 416 to calculate the insulin dose when the respective record corresponds to the active profile. Insulin sensitivity may be determined according to the described techniques, as described in more detail below. In the illustrated example 800, attribute 810 is labeled with the name "insulin_sensitivity." In one or more implementations, the type of attribute 810 may be an integer. Additionally, attribute 810 may describe the insulin sensitivity in blood glucose change per insulin unit (e.g., mg / DL per IU).
[0141] Attribute 812 represents the carbohydrate ratio of the human 102 during the time period for which the respective record corresponds to the active profile. This attribute 812 describes how many carbohydrates are covered (in a predetermined unit of measure, e.g., grams) for the human 102 by a single insulin unit (IU). Here, "covered" refers to maintaining the human 102's future blood glucose within the target range corresponding to attributes 806, 808. The carbohydrate ratio described by attribute 812 may also be used by the artificial pancreas algorithm 416 to calculate insulin dosages for when the respective record corresponds to the active profile. The carbohydrate ratio may be determined according to the described techniques, as described in more detail below. In the illustrated example 800, attribute 812 is labeled with the name "carb_ratio." In one or more implementations, the type of attribute 812 may be an integer. As mentioned above, the attribute may describe the carbohydrate ratio in grams of carbohydrate per insulin unit (e.g., g / IU).
[0142] The insulin profile table 508 may include a variety of additional or different attributes for determining insulin dosages in accordance with the described techniques. These additional or different attributes may also be used by the artificial pancreas algorithm 416 to generate predictions of insulin dosages to keep the person's blood glucose within a target range. Indeed, the different or additional attributes may enable the artificial pancreas algorithm 416 to better predict insulin dosages to keep the person's blood glucose within a target range. By "better prediction," it is meant that the output insulin dosage of the artificial pancreas algorithm may keep the person's 102 blood glucose more frequently and even within the target range, keep the person's 102 blood glucose spike-free, avoid deviations from an optimal physiological response, etc., when using additional and / or different factors. One example of such an additional or different attribute may be diabetes subtype.
[0143] While diabetes is often categorized into two types, namely, Type I diabetes and Type II diabetes, there may be various subtypes within these two types, and the insulin profile table 508 may include attributes to capture the subtypes, which may be used by the artificial pancreas algorithm 416 to predict insulin dosage. As an example, research has shown that cell surface genetic mutations may affect insulin effectiveness. Specifically, as described below, research has shown the existence of two genetic mutations. Both genetic mutations may be present in people with Type I diabetes and in people who have neither Type I nor Type II diabetes. Thus, while a person may have Type I diabetes with the first of these genetic mutations, a different person may have Type I diabetes with the second of these genetic mutations, and a third person may have Type I diabetes without either genetic mutation. Thus, there may be three "subtypes" of people with Type I diabetes. However, because the first genetic mutation generally increases susceptibility to type II diabetes while the second genetic mutation generally prevents the development of type II diabetes, there may be only two "subtypes" of people with type II diabetes. Thus, with type II diabetes, a person may have either the first genetic defect or neither of the genetic defects. These subtypes may be captured in the data in insulin profile table 508 in a variety of ways, including, for example, in a manner similar to how different delivery types are captured in bolus calculation table 510.
[0144] In either case, the first genetic mutation is accompanied by a marker in the human gene sequence that causes abnormal surface topology on human cells. This abnormality in surface topology causes a decrease in the ability of insulin to attach to A receptors and B receptors on the cell surface. This inhibition (i.e., decreased attachment to A receptors and B receptors) reduces the ability of insulin to have the commonly observed effects. This inhibition, for example, reduces the effect of a known amount of insulin, because insulin takes more time to attach to the cell surface than in the absence of the mutation. This inhibition can also cause insulin to take more time to attach to a sufficient number of cells to cause a measurable effect of insulin on blood glucose levels (this may be referred to as "insulin resistance") than in the absence of the mutation.
[0145] The second genetic mutation can be considered the "opposite" of the first genetic mutation. The second genetic mutation causes a deviation in the human's surface topology, allowing insulin to attach more easily to the A and B receptors of the human's cells than in humans without either mutation. As a result, humans with the second genetic mutation generally have a faster cellular response (i.e., opening up cells to blood glucose) and also a larger population of cells that respond to insulin than humans without the mutation or with the first mutation. The artificial pancreas algorithm 416 not only uses attributes that capture these subtypes to more accurately determine insulin dosage, but the artificial pancreas algorithm 416 may also use these attributes to identify how carbohydrate intake and exercise, along with the subtype, affect how much insulin to administer. The techniques described herein may also involve identifying the presence of these subtypes by identifying patterns in the user population 110 of users who have the subtypes, identifying that the human 102 exhibits similarities to users who have one of the subtypes, verifying that the human 102 has the identified subtype based on improved accuracy of insulin dosage that takes into account predictions assuming the human 102 has the subtype, etc. Subtypes may also be identified by other methods, such as by a healthcare provider or genetic testing, and thus may be received as input by the artificial pancreas system 402. There may be other subtypes considered in the insulin profile table 508 in addition to those just described above.
[0146] 9 depicts an example 900 of a bolus calculation table 510 that includes multiple columns 902-934, where each of these columns corresponds to a different attribute of the data in the bolus calculation table 510. Each row of the illustrated example 900, except for the top row, represents a data record in the bolus calculation table 510. It should be understood that the bolus calculation table 510 may be configured with a variety of attributes without departing from the spirit or scope of the described techniques.
[0147] In general, the bolus calculation table 510 contains a history of bolus insulin doses calculated, for example, by the artificial pancreas algorithm 416, the blood glucose monitoring module 408, or the insulin delivery system 106. This is in contrast to the bolus delivery table 506, which describes the bolus dose delivered, for example, by the insulin delivery system 106. A given record in the bolus calculation table 510 describes the parameters input to calculate the bolus dose and the parameters received as output. In one or more implementations, these input parameters may be converted into feature vectors, for example, for input to the artificial pancreas algorithm 416. Similarly, these output parameters may be converted (e.g., via one or more transformation operations) from feature vectors to corresponding attribute values, where the feature vector is output by the artificial pancreas algorithm 416. Records may be added to the bolus calculation table 510 based on the bolus dose determined by either the insulin delivery system 106, the insulin module 406 (e.g., the artificial pancreas algorithm 416), or the blood glucose monitoring module 408.
[0148] In the context of the illustrated example 900, attribute 902 represents a record identifier. For a given record in bolus calculation table 510, the record identifier uniquely identifies the record from other records in the table. In the illustrated example 900, attribute 902 is labeled with the name "record_id." In one or more implementations, the type of attribute 902 may be an integer primary key. Thus, attribute 902 may be configured as the primary key for a given record.
[0149] Attribute 904 represents the time at which the calculation is performed. For a given record in the bolus calculation table 510, the time of calculation may correspond to the time at which the bolus dose of insulin is determined, for example, by the artificial pancreas algorithm 416. In the illustrated example 900, attribute 904 is labeled with the name "system_time_sec." In one or more implementations, the type of attribute 904 may be an integer. Furthermore, the time of calculation may correspond to UTC in seconds.
[0150] Attribute 906 represents the name of the source device or application corresponding to the bolus calculation, where "corresponding" refers to the device or application that determines the bolus dose. In the illustrated example 900, attribute 906 is labeled with the name "source_name." In one or more implementations, the type of attribute 906 may be text, such as a text string. Additionally, the source device or application name may identify the device or application corresponding to a given record to distinguish the device or application from other devices or applications, such as other devices or applications that may perform the calculation.
[0151] Attribute 908 represents the amount of carbohydrates for which a bolus dose corresponding to each record is calculated. For a given record in bolus calculation table 510, this is the amount of carbohydrates that the calculated insulin dose is predicted to cover for an upcoming meal to maintain the human 102's future blood glucose level within a target range. As described above and below, this carbohydrate amount may be received via one or more user interfaces or predicted by the artificial pancreas algorithm 416. Furthermore, this carbohydrate amount is used by the artificial pancreas algorithm 416 to calculate the corresponding insulin dose. In other words, the carbohydrate amount of the upcoming meal may be an input to the artificial pancreas algorithm 416 to calculate the insulin dose. In the illustrated example 900, attribute 908 is labeled with the name "meal_carbs." In one or more implementations, the type of attribute 908 may be an integer. Furthermore, the carbohydrate amount of the meal may be expressed in grams of carbohydrates, such that the attribute describes the number of grams of carbohydrates in the upcoming meal. It should be appreciated that this number of grams may be measured by the user (eg, on a scale) and then provided as input, estimated based on a photo of the meal, etc.
[0152] Attribute 910 represents the amount of insulin onboard. For a given record in bolus calculation table 510, the amount of insulin onboard corresponds to a measurement of the insulin remaining onboard for delivery, e.g., to human 102, until zero units of insulin remain for delivery. In the illustrated example 900, attribute 910 is labeled with the name "insulin_on_board." In one or more implementations, the type of attribute 910 may be an integer. Furthermore, the amount of insulin onboard may correspond to the number of insulin units onboard (e.g., to insulin delivery system 106) for delivery to human 102, and may be specified in insulin units and measured to the nearest hundredth of an insulin unit. Additionally, a measurement of insulin onboard may be required in connection with the calculation of a bolus dose by artificial pancreas algorithm 416, such that a record is added to active insulin (IOB) table 502 based on the calculation of a bolus dose, and such that attribute 910 corresponds to attribute 516 of active insulin (IOB) table 502.
[0153] Attribute 912 represents the carbohydrate ratio of the human 102 at the time the bolus dose is determined. The carbohydrate ratio may be determined by referencing the insulin profile table 508, such as by determining which record in the insulin profile table 508 corresponds to the “active” profile at the time the bolus dose is being determined and by extracting the carbohydrate ratio (e.g., attribute 812) from the record corresponding to the active profile. As mentioned above, this attribute describes how many carbohydrates (e.g., in grams) are covered for the human 102 by a single insulin unit (IU). Thus, the carbohydrate ratio described by attribute 912 may be used by the artificial pancreas algorithm 416 as an input to calculate the bolus insulin dose. In the illustrated example 900, attribute 912 is labeled with the name “carb_ratio.” In one or more implementations, the type of attribute 912 may be an integer. This attribute 912 may describe the carbohydrate ratio in grams of carbohydrate per insulin unit (e.g., g / IU).
[0154] Attribute 914 represents the insulin sensitivity of the human 102 at the time the bolus dose is determined. The insulin sensitivity may be determined by referencing the insulin profile table 508, such as by determining which record in the insulin profile table 508 corresponds to the “active” profile at the time the bolus dose is calculated and by extracting the insulin sensitivity (e.g., attribute 810) from the record corresponding to the active profile. As mentioned above, this attribute 914 describes how the blood glucose of the human 102 (as indicated by the blood glucose measurement 118) changes for each insulin unit (IU) delivered. Thus, the insulin sensitivity described by attribute 914 may be used by the artificial pancreas algorithm 416 as an input to determine the bolus insulin dose. In the illustrated example 900, attribute 914 is labeled with the name “insulin_sensitivity.” In one or more implementations, the type of attribute 914 may be an integer. Additionally, attributes 914 may describe insulin sensitivity in blood glucose change per insulin unit (eg, mg / DL per IU).
[0155] Attribute 916 represents the blood glucose level at the time the bolus dose was determined, such as the human's 102's current blood glucose level. For a given record in bolus calculation table 510, for example, attribute 916 may correspond to a blood glucose measurement 118 received from the wearable blood glucose monitoring device 104, such as a most recently received measurement, a measurement requested in connection with calculating a bolus insulin dose, etc. Additionally or alternatively, the blood glucose level may correspond to one or more blood glucose measurements 118 received from the wearable blood glucose monitoring device 104, such as an average (e.g., mean or median) blood glucose measurement calculated by blood glucose monitoring module 408 and / or insulin module 406. The blood glucose level described by attribute 916 may also be used by the artificial pancreas algorithm 416 as an input for determining the bolus insulin dose. In the illustrated example 900, attribute 916 is labeled with the name “glucose_level.” In one or more implementations, the type of attribute 916 may be an integer. Additionally, blood glucose levels may be described in milligrams per deciliter (mg / DL).
[0156] Attribute 918 represents the trend of blood glucose measurements at the time the bolus dose is determined, such as the most recent trend of the human's 102's blood glucose measurements 118 over a period of time before the bolus dose is determined, e.g., the trend of the human's blood glucose measurements 118 over the past half hour. For a given record in the bolus calculation table 510, for example, attribute 916 may be determined based on multiple blood glucose measurements 118 received from the wearable blood glucose monitoring device 104 over a period of time. It should be understood that the period of time may vary without departing from the spirit or scope of the technique, including, for example, a predetermined period of time (e.g., the past five hours, the past half hour, or the past minute), the time since the last dose of insulin, the last blood glucose measurement, etc. The blood glucose measurement trend described by attribute 918 may also be used by the artificial pancreas algorithm 416 as an input for calculating the bolus insulin dose. In the illustrated example 900, attribute 918 is labeled with the name “glucose_trend.” In one or more implementations, the type of attribute 918 may be an integer. Additionally, trends in blood glucose measurements may be described in milligrams per deciliter per minute (mg / dL / min).
[0157] Attribute 920 represents a target minimum blood glucose level for human 102 when the bolus dose is determined. The target minimum blood glucose level may be determined by referencing insulin profile table 508, such as by determining which record in insulin profile table 508 corresponds to the “active” profile when the bolus dose is determined and by extracting the target minimum blood glucose level (e.g., attribute 806) from the record corresponding to the active profile. As noted above, this attribute 920 describes the level below which the artificial pancreas system 402 attempts to prevent the blood glucose of human 102 from dropping. The target minimum blood glucose level described by attribute 920 may also be used by the artificial pancreas algorithm 416 as an input for determining the bolus insulin dose. In the illustrated example 900, attribute 920 is labeled with the name “target_glucose_min.” In one or more implementations, the type of attribute 920 may be an integer. Additionally, the minimum blood glucose level may be described in milligrams per deciliter (mg / dL), with the artificial pancreas system 402 attempting to prevent the blood glucose measurement 118 of the person 102 from dropping below the number of mg / dL specified by the attribute 920.
[0158] Attribute 922 represents the target maximum blood glucose level for human 102 when the bolus dose is determined. The target maximum blood glucose level may be determined by referencing insulin profile table 508, such as by determining which record in insulin profile table 508 corresponds to the “active” profile when the bolus dose is determined and extracting the target maximum blood glucose level (e.g., attribute 808) from the record corresponding to the active profile. As noted above, this attribute 922 describes the level above which the artificial pancreas system 402 attempts to prevent the blood glucose of human 102 from rising. The target maximum blood glucose level described by attribute 922 may also be used by artificial pancreas algorithm 416 as an input to calculate the bolus insulin dose. In the illustrated example 900, attribute 922 is labeled with the name “target_glucose_max.” In one or more implementations, the type of attribute 922 may be an integer. Like the minimum blood glucose level, the maximum blood glucose level may also be described in mg / dL, with the artificial pancreas system 402 attempting to prevent the blood glucose measurement 118 of the human 102 from rising above the number of mg / dL specified by the attribute 922. It should be understood that measurements other than mg / dL may be used to describe the minimum and maximum blood glucose levels without departing from the spirit or scope of the description technique.
[0159] In one or more implementations, one or more of attributes 908-922 may be used as inputs for determining a bolus dose of insulin. Accordingly, these attributes may be provided as inputs to the artificial pancreas algorithm 416 for determining the bolus insulin dose. In contrast, one or more of attributes 924-934, described in detail below, may correspond to outputs of the artificial pancreas algorithm 416. Such outputs may be used to generate instructions for controlling insulin delivery to the person 102 via the insulin delivery system 106. Specifically, the pump control manager 418 may control the insulin delivery system 106 to deliver insulin according to the outputs described by attributes 924-934, such as by using a request requesting bolus delivery, as described in more detail below.
[0160] In one or more implementations, attributes 908-922 may be processed and converted into a feature vector for input to artificial pancreas algorithm 416. By way of example, this processing may include normalizing one or more of the attributes so that the attributes have numerical values ranging from 0 to 1, e.g., using min-max feature scaling or other techniques. Similarly, artificial pancreas algorithm 416 may output a feature vector, which may be processed to transform the values of the features to obtain respective values for attributes 924-934, e.g., using one or more post-processing operations. It should also be understood that the inputs and outputs may correspond to different attributes without departing from the spirit or scope of the described techniques, such as including attributes indicating predicted blood glucose absence correction by insulin, diabetes subtype, etc. In the context of "output" attributes, consider the following description.
[0161] Attribute 924 represents the amount of insulin to deliver for the bolus dose or bolus dose step corresponding to the respective record, specifically the amount of insulin predicted to correct the person's 102 blood glucose level so that it remains within or is adjusted back into the target blood glucose range defined by attributes 920, 922. The amount of insulin described by attribute 924 may be obtained from the output of the artificial pancreas algorithm 416, whereby the value of this attribute 924 is set in the bolus calculation table 510, in part, by processing the output of the algorithm. In the illustrated example 900, attribute 924 is labeled "insulin_for_correction." In one or more implementations, the type of attribute 924 may be an integer. Furthermore, the amount of insulin predicted to correct the person's 102 insulin may be described in insulin units and specified to the hundredth of an insulin unit. Thus, pump control manager 418 may control the insulin delivery system 106 to deliver a bolus dose of insulin that includes the amount of insulin for the correction.
[0162] Attribute 926 represents the amount of insulin to deliver for the bolus dose or bolus dose step corresponding to the respective record, specifically, the amount predicted to coincide with a meal eaten by human 102. The amount of insulin described by attribute 926 may also be obtained from the output of the artificial pancreas algorithm 416, whereby the value of this attribute 926 is set in the bolus calculation table 510, in part, by processing the output of the algorithm. In the illustrated example 900, attribute 926 is labeled "insulin_for_meal." In one or more implementations, the type of attribute 926 may be an integer. Furthermore, the amount of insulin predicted to coincide with a meal eaten by human 102 may be described in insulin units and specified to the hundredth of an insulin unit. Thus, pump control manager 418 may control insulin delivery system 106 to deliver a bolus dose of insulin that includes the amount of insulin for the meal. It should be understood that the output of the artificial pancreas algorithm 416 may indicate the amount of insulin to deliver for both corrections and meals. In such a scenario, if no insulin is to be delivered for a particular purpose, such as a correction or meal, the output may show an amount of zero. As an example, if bolus insulin is to be delivered for a correction but not a meal, the output of the artificial pancreas algorithm 416 may show a particular amount for the correction and zero for the amount that matches the meal.
[0163] Attribute 928 indicates the type of insulin delivery, such as whether the bolus dose is delivered as a "normal," "extended," "combined," or "split" delivery. There may be more types of delivery without departing from the spirit or scope of the described technology. As used herein, a "normal" bolus delivery refers to a single, immediate administration of insulin without an extended portion. This type of bolus may be used to cover food intake or correct high blood sugar levels. Generally, a "normal" bolus delivery is used for a normal meal of carbohydrates, fat, and protein, such as meat with potatoes and vegetables. However, because fat slows the absorption of carbohydrates into the bloodstream, a "normal" bolus delivery is generally ineffective for meals with a high fat content. Examples of these non-normal, high-fat meals include pizza, lasagna, and tiramisu, to name just a few. Other types of bolus delivery may be used to cover such meals and various eating formats (e.g., grazing or buffet). As used herein, an "extended" bolus delivery refers to the delivery of a smaller amount of insulin over an extended period relative to a regular bolus. Extended delivery may also be referred to as a "delayed" bolus. As used herein, a "combined" bolus refers to the combination of a "regular" bolus and an "extended" bolus. In a combined bolus delivery of insulin, a regular bolus may be delivered followed by an extended bolus, for example, before a meal if blood glucose readings are high or when grazing at a buffet or cocktail party. As used herein, a "split" bolus refers to the delivery of multiple immediate doses of insulin without an extended portion. For example, a split bolus may involve the delivery of two regular bolus doses spaced apart, with the two single doses including a fast-acting insulin dose immediately before a meal and a second dose three hours after the meal. Split doses may be split in various ways, such as 50 / 50 (e.g., 50% delivered first, 50% delivered second), 60 / 40, etc.The type of delivery described by attribute 928 may be obtained from the output of the artificial pancreas algorithm 416, whereby the value of this attribute 924 is set in the bolus calculation table 510, in part, by processing the output of the algorithm.
[0164] In one or more implementations, these different delivery types may be represented by unique values in the bolus calculation table 510. By way of example, a "1" may represent a "normal" bolus delivery, a "2" may represent an "extended" delivery, a "3" may represent a "combined" delivery, and a "4" may represent a "split" delivery. In one or more implementations, a "0" may represent that no bolus delivery is in progress. In the illustrated example 900, the attribute 928 is labeled with the name "delivery_type." In one or more implementations, the type of attribute 928 may be an integer and may be limited to values corresponding to the different delivery types available, for example, as determined by the type of delivery the artificial pancreas algorithm 416 and / or insulin delivery system 106 are capable of delivering.
[0165] Attribute 930 represents the duration for which the amount of insulin described by attributes 924, 926 is delivered for the bolus dose or bolus dose phase corresponding to the record. The duration of delivery described by attribute 930 may be obtained from the output of the artificial pancreas algorithm 416, whereby the value of this attribute 930 is set in the bolus calculation table 510, in part, by processing the output of the algorithm. In the illustrated example 900, attribute 930 is labeled with the name "bolus_duration_sec." In one or more implementations, the type of attribute 930 may be an integer. Furthermore, the duration may correspond to the number of seconds for which the amount of bolus insulin as described by attributes 924, 926 is delivered to the person 102, for example, via the insulin delivery system 106.
[0166] Attribute 932 represents the amount of insulin to administer for the first phase of the bolus dose, for example, when the type of administration is a combination dose or a split dose according to attribute 928. The amount of insulin described by attribute 932 may be obtained from the output of the artificial pancreas algorithm 416, whereby the value of this attribute 932 is set in the bolus calculation table 510, in part, by processing the output of the algorithm. In the illustrated example 900, attribute 932 is labeled with the name “insulin_part1.” In one or more implementations, the type of attribute 932 may be an integer. The amount of insulin specified for the first phase of the bolus dose is described in insulin units and may be specified to the hundredth of a unit. Thus, the pump control manager 418 may control the insulin delivery system 106 to deliver the first phase of the bolus dose according to the amount specified by attribute 932.
[0167] Attribute 934 represents the amount of insulin to administer for the second phase of the bolus dose, for example, when the administration type is a combination dose or a split dose according to attribute 928. The amount of insulin described by attribute 934 may also be obtained from the output of the artificial pancreas algorithm 416, whereby the value of this attribute 934 is set in the bolus calculation table 510, in part, by processing the output of the algorithm. In the illustrated example 900, attribute 934 is labeled with the name "insulin_part2." In one or more implementations, the type of attribute 934 may be an integer. The amount of insulin specified for the second phase of the bolus dose is described in insulin units and may be specified to the hundredth of a unit. Thus, the pump control manager 418 may control the insulin delivery system 106 to deliver the second phase of the bolus dose according to the amount specified by attribute 934. It should be understood that an insulin dose can include more steps, and therefore more dose "portion" attributes may be added to the bolus calculation table 510 without departing from the spirit or scope of the described techniques.
[0168] Having described example tables that may be maintained in shared storage 410 in connection with implementing artificial pancreas system 402, we now consider a description of how insulin module 406 and blood glucose monitoring module 408 may connect and interact to process operations associated with artificial pancreas system 402.
[0169] Linking the Blood Glucose Monitoring and Insulin Modules One exemplary embodiment of how the insulin module 406 and the blood glucose monitoring module 408 may connect and interact is provided in the following description. As noted above, the insulin module 406 and the blood glucose monitoring module 408 may be configured as applications, such as an insulin application and a blood glucose monitoring application, respectively. The insulin module 406 and the blood glucose monitoring module 408 may also be configured as part of a single application or in other ways, such as with portions of the insulin module (e.g., the artificial pancreas algorithm 416) included in the same application as the blood glucose monitoring module 408, while other portions of the insulin module are included in different applications.
[0170] Regardless of the specific configuration, in one or more implementations, the insulin module 406 and the blood glucose monitoring module 408 may use uniform resource locator (URL) application linking to activate other modules in connection with sending secure payload data to the other modules. Using URL application linking, the insulin module 406 and the blood glucose monitoring module 408 can activate other modules with payloads containing requests and parameters such as "show home screen," "show bolus calculator," or "request 2.0 IU bolus." Collectively, URL application linking may be used for inter-application communication, which may be communicated when either the insulin module 406 or the blood glucose monitoring module 408 switches to activate the other module, for example, as the "top-level" application on the computing device 108. Such switching to activate the other module may include displaying the user interface of the switched-to module via the display of the computing device 108 and enabling user interaction via the displayed user interface.
[0171] In accordance with the URL application linking described herein, the insulin module 406 and the blood glucose monitoring module 408 may use public key cryptography to encrypt payload data sent to other modules via URLs. Encrypting this payload data using public key cryptography ensures the privacy of data exchanged between the insulin module 406 and the blood glucose monitoring module 408. While public key cryptography is described in this exemplary implementation, it should be understood that the insulin module 406 and the blood glucose monitoring module 408 may alternatively and additionally securely communicate data with each other using various techniques for secure communication, including, for example, blockchain technology. This secure communication involving the use of shared storage 410 may also prevent users from tampering with the insulin module 406 and the blood glucose monitoring module 408, including preventing tampering with the artificial pancreas algorithm 416, for example, by causing the algorithm to consider user-specified data for learning or by preventing the algorithm from being implemented with user-provided code. The secure communication that accompanies the use of shared storage 410 also prevents the use of unauthorized devices (e.g., not approved by blood glucose monitoring platform 112) in artificial pancreas system 402.
[0172] Regardless, by using public key cryptography for inter-application (or module) communications, the insulin module 406 and the blood glucose monitoring module 408 ensure that only the targeted module (e.g., the module to which the communications are communicated) can decrypt the payload. By ensuring that only the targeted module can decrypt the payload, sensitive information (e.g., personal data) is protected from interception in the event of unauthorized replacement of the targeted module, including if an unauthorized application registers the same URL scheme as a module that is authorized (e.g., by the blood glucose monitoring platform 112) to communicate data as part of the artificial pancreas system 402, etc.
[0173] To ensure the integrity and authenticity of payload data, modules that communicate payload data to other modules configure the payload to include a digital signature. In the following description, a module that communicates payload data may be referred to as a source module. A module intended to receive payload data by a source module may be referred to as a target module. The digital signature included with a matching communication allows the target module to verify that the payload data has not been altered or damaged in transit. Using the digital signature, the target module may also verify that the source of the payload data is a module that is enabled to send requests to the target module.
[0174] The insulin module 406 and the blood glucose monitoring module 408 may share a public key for such digital signatures using a shared keychain. In some scenarios, the insulin module 406 corresponds to one of multiple insulin applications authorized by the blood glucose monitoring platform 112 for use in connection with the artificial pancreas system 402. In such a scenario, each of the multiple applications may be authorized for use in connection with the artificial pancreas system 402. This authorization may be based on inclusion in a group of shared applications published by the blood glucose monitoring platform 112, e.g., published in a list of shared applications, persisted in code (e.g., of the blood glucose monitoring module 408), persisted in other data (e.g., a database or table included in the blood glucose monitoring module 408 or provided to the computing device 108 in connection with installing and / or updating the blood glucose monitoring module 408), or persisted by configuration, to name just a few examples. The published group of shared applications restricts access to the shared keychain to applications included in the group; only those applications published in the shared group can access the shared keychain.
[0175] The target module may use the digital signature, along with one or more additional identifiers of the source module, to verify that the source module is authorized to send the data payload. By way of example, the one or more identifiers may include an identifier (e.g., bundle_id) that may be provided to the target module by the operating system of the computing device 108 in connection with the communication of the payload, identifying the source module, etc. Thus, in connection with URL application linking, the target module may use the payload's digital signature, along with this identifier of the source module, to verify that the source module is authorized to send the communication, e.g., to send a request to the target module via a URL. By way of example, this identifier may enable the target module to retrieve the source module's public key and use the retrieved public key to verify the digital signature provided with the payload data.
[0176] If the target module determines that the source of the request is authorized to send such information, the operating system may switch the target module to the operating system foreground while suspending the source module. As noted above, these requests and their respective payloads are transmitted via URLs. Furthermore, the URL used for such switching may conform to a scheme, such as one in which the URL identifies the target module and optionally includes a path portion containing a single encrypted payload. The encrypted payload contained in this URL may be decrypted using a digital signature and identifier, as described above and below.
[0177] With regard to obtaining keys to implement the shared keychain described above, the insulin module 406 (any one of multiple applications authorized to perform the functionality of the insulin module 406) and the blood glucose monitoring module 408 generate public / private key pairs during a first initialization, such as in connection with setting up to link the modules. The modules may then store their generated public keys in the shared keychain of the group of shared applications and their generated private keys in their respective private keychains. In one or more implementations, the public keys may be identified in the shared keychain by one or more identifiers (e.g., bundle_id) provided by the operating system of the computing device 108.
[0178] With respect to payloads provided via URLs, in one or more implementations, these payloads may include a dictionary of key-value pairs of the request and the request's parameters. In accordance with the described techniques, this dictionary may be encoded into binary data, digitally signed, encrypted (e.g., using the target module's public key), and encoded into a string used as the path portion of the provided URL. In accordance with the public / private key chain technique, data encrypted with the target module's public key can only be decrypted by the target module because the target module solely stores the private key necessary for such decryption. Other modules, even if they intercept or eavesdrop on the data, cannot decrypt such data because they do not have the private key necessary to decrypt data encrypted with the target module's public key. Thus, the digital signature provided as part of the payload allows the target module to both verify the integrity of the payload and, further, verify the authenticity of the payload.
[0179] To generate the payloads and respective paths described above, the source module of the URL communication may encode the dictionary included with the payload in binary format, such as by using the NSSecureCoding protocol. Additionally, the source module may add a digital signature to the binary encoding of the dictionary by computing a hash value, such as by computing a hash value encrypted with the source module's private key. It should be understood that a variety of hashing techniques may be used to compute such a hash value, including, for example, the Secure Hash Algorithm (SHA) for computing a SHA-256 value. The source module may then encrypt the combined binary data and digital signature, for example, using the target module's public key. The source module may then form the path portion of the URL by encoding the encrypted combination of the binary data and the digital signature. For example, the source module may encode this encrypted data into a base64 string to form the path portion of the URL.
[0180] The target module may process the received URL message according to the following description. The target module may decode the received base64 string that makes up the path section of the URL into binary data. The target module may then separate the payload portion of the binary data from the digital signature portion of the binary data. The target module may decrypt the digital signature using the source module's public key, obtained, for example, from a public keychain of a group of shared applications. The target module may then compare the expected hash value with the decoded digital signature value to verify that the received payload is intact and to authenticate the source module.
[0181] The following description provides details of an exemplary implementation of the payload, including details of the key / value dictionary. As noted above, the payload sent to the target module via a URL contains a dictionary of encoded key / value pairs. These key / value pairs may be specific to a particular type of request directed to the target module. These key / value pairs may specify the type of request and, optionally, respective parameters specific to the type of request. Various types of requests may include an initial setup screen request, a home screen submission request, a bolus calculator submission request, and a bolus delivery request. It should be understood that the insulin module 406 and the blood glucose monitoring module 408 may communicate additional types of requests with each other without departing from the spirit or scope of the described techniques.
[0182] Regardless, exemplary dictionaries encoded in association with the above-described types of requests may be configured according to the following description. A request for an initial setup screen may include a dictionary having a “request” key and a “date” key. In the following description, the value of the “request” key generally identifies the type of request, and a specific value of the request key is adapted to distinguish an initial setup screen request from, for example, a bolus calculator submission request. For example, in the context of a request for an initial setup screen, the value type of the request key is a string (e.g., NSString), and the value corresponds to a string such as “init,” which distinguishes the request as an initial setup screen request from other types of requests. Based on receiving the initial setup screen request, the target module initiates a setup and pairing process with an insulin delivery system (e.g., insulin delivery system 106) or a wearable blood glucose monitoring device 104. The value type of the date key may be a date (e.g., NSDate) corresponding to the date and time the request is sent to the target module. In one or more implementations, the target module is configured to reject requests that are out of order, old, or duplicate with respect to this date.
[0183] A request to present a home screen may be configured differently from other types of requests. For example, a source module may request a target module to present a home screen by constructing a URL with an empty path portion where there is no payload and the path portion is empty. In response to receiving a URL with an empty path (payload), the target module is configured to display the home or main screen of the target module via a display device of the computing device 108.
[0184] A request to present a bolus calculator may include a dictionary with only a "request" key. For a bolus calculator presentation request, the value type of the request key may be a string (e.g., NSString), and the value may correspond to a string such as "calc," such that "calc" identifies the request as a bolus calculator presentation request from other types of requests. Based on receiving a bolus calculator presentation request, the target module causes the display of the target module's bolus calculator, for example, via a display device of the computing device 108. The displayed bolus calculator may include user interface elements through which the user can provide input for calculating an insulin bolus dose, such as the carbohydrate value of an upcoming meal, a specific meal selection (e.g., pizza, buffet, snack, etc.), the time until the upcoming meal, etc. The elements may also be selectable to start, pause, or stop delivery of a bolus insulin dose (e.g., calculated by the artificial pancreas algorithm 416 or manually entered by the user). The bolus calculator may include user interface elements for use with various user actions and may be configured to display various information (e.g., blood glucose measurements) and visualizations (e.g., displaying trends in blood glucose measurements) without departing from the spirit or scope of the described techniques.
[0185] A request requesting a bolus delivery may include a dictionary having a “request” key, a “date” key, a “carbohydrate” key, a “meal-bolus” key, a “correction” key, a “type” key, a “duration” key, a “bolus 1” key, and a “bolus 2” key. For a request requesting a bolus delivery, the value type of the request key may be a string, and the value may correspond to a string such as “bolus,” which distinguishes the request as a bolus delivery request from other types of requests. Based on receiving a request requesting a bolus delivery, the target module causes the insulin module 406 to initiate delivery of insulin via the insulin delivery system 106, which may include using the functionality of the pump control manager 418 to instruct the insulin delivery system 106 to deliver an insulin dose. In connection with such a request, the target module may also cause the insulin module 406 to calculate an insulin bolus dose and / or an insulin basal rate using the artificial pancreas algorithm 416. The value type of the date key for a bolus delivery request may be a date (e.g., NSDate) corresponding to the date and time the request is sent to the target module. In one or more implementations, the target module is configured to reject requests that are out of order, old, or duplicate with respect to this date.
[0186] The value type of the carbohydrate key may be a number (e.g., NSNumber) that describes the amount of carbohydrates to be covered in the requested bolus delivery. In one or more implementations, the number may correspond to the number of grams of carbohydrates to be considered in the requested bolus delivery. This data may be retrieved from shared storage 410 by the source module to populate the bolus delivery request and / or may otherwise correspond to a record in one or more tables, such as the bolus calculation table 510. The value of the meal-bolus key may be a number (e.g., NSNumber) that describes the amount of insulin to deliver to cover the carbohydrates of the meal for which bolus insulin delivery is requested. In one or more implementations, this number may correspond to the number of insulin units measured to the nearest hundredth of an insulin unit (IU). The value of the correction key may be a number (e.g., NSNumber) that describes the amount of insulin to deliver to correct the blood glucose level of the human 102 so that the blood glucose level remains within a target range of blood glucose measurements. In one or more implementations, this number may also correspond to the number of insulin units measured to the nearest hundredth of an insulin unit (IU).
[0187] The value type of the "Type" key may be a number (e.g., NSNumber) that indicates the type of insulin delivery, such as whether the delivery is "normal," "extended," "combined," or "split." As described in more detail in connection with FIG. 9 , a "1" can represent a "normal" bolus delivery, a "2" can represent an "extended" delivery, a "3" can represent a "combined" delivery, and a "4" can represent a "split" delivery. It should be understood that the value types of the "Type" key may be different but still capture the type of bolus delivery. The type of the Bolus 1 key may be a number (e.g., NSNumber) that describes the amount of insulin to deliver in connection with the first portion of the bolus insulin delivery. This number corresponds to the number of insulin units to deliver for the first portion of the delivery and may be specified to the hundredth of an insulin unit (IU). The type of the Bolus 2 key may be a number (e.g., NSNumber) that describes the amount of insulin to deliver in connection with the second portion of the bolus insulin delivery. The Bolus 2 key may be used in connection with a combined or split bolus delivery, rather than a normal or extended delivery. This number corresponds to the number of insulin units to deliver for the second portion of delivery and can be specified to the nearest hundredth of an insulin unit (IU).
[0188] It should be understood that the insulin module 406 and the blood glucose monitoring module 408 may provide different types of requests from each other without departing from the spirit or scope of the described techniques. The requests may alternatively or additionally be configured in a different manner than described above and / or by using different secure communication techniques to implement the artificial pancreas system 402.
[0189] Insulin delivery setup and adjustment As described throughout, the artificial pancreas controller 404 is configured to utilize the artificial pancreas algorithm 416 to accurately predict a user's blood glucose level as well as the insulin dose needed to maintain the user's blood glucose level within a target range. This allows flexibility in the user's food choices, as any number of carbohydrates consumed by the user can be covered by a corresponding dose of insulin delivered to the user by the insulin delivery system 106. In a healthy person, the pancreas produces enough insulin to keep the user's blood glucose readings within a target range, whether the user is active, resting, eating, ill, under stress, or sleeping. This means that a healthy person can eat food at any time without dramatically changing their blood glucose levels. However, a person with diabetes cannot effectively produce or use enough insulin to control their blood glucose levels. To solve this problem, the artificial pancreas controller 404 constantly monitors the blood glucose level of the person 102 based on blood glucose measurements 118 provided by the wearable blood glucose monitoring device 104 worn by the person 102, and then controls the insulin delivery system 106 to administer appropriate insulin to the person 102 at the appropriate time to maintain the blood glucose level of the person 102 within a target range.
[0190] Generally, the artificial pancreas controller 404 controls the insulin delivery system 106 to deliver two types of insulin doses to the human 102: basal insulin doses and bolus insulin doses. Basal insulin doses utilize long-acting insulin, which reaches the human 102's bloodstream several hours after injection and remains effective for up to 24 hours at a time, but with a lower peak than fast-, intermediate-, or normal-acting insulins. Thus, basal insulin doses provide a constant supply of insulin to lower the human 102's blood glucose level. The artificial pancreas controller 404 may be configured to control the insulin delivery system 106 to deliver basal insulin doses to the user once or twice per day to lower the user's blood glucose level throughout the day. One example of a generic name for a type of long-acting insulin is glargine, which may have trade names such as Lantus®, Toujeo®, Abasaglar®, and Basaglar®.
[0191] In contrast, bolus insulin doses are known as "fast-acting" or "rapid" insulin because they act quickly. For example, a bolus insulin dose delivered by the insulin delivery system 106 may enter the human 102's bloodstream quickly, with a noticeable effect occurring within 15 minutes and peaking in about an hour. After reaching the peak, the insulin dose may continue to act for 2-4 hours, although it may begin to decline. One example of a general type of short-acting insulin is lispro, which may have trade names including Humalog® and Admelog®. The artificial pancreas controller 404 is configured to control the insulin delivery system 106 to deliver bolus insulin doses to the human 102 to accommodate the effects of various factors that may cause the human 102's blood glucose levels to move outside the target range, such as carbohydrate consumption, exercise, stress, or illness, to name just a few.
[0192] It should be understood that the artificial pancreas algorithm 416 may be configured in a variety of ways to handle the determination of both basal and bolus insulin doses. To the extent that basal and bolus doses generally apply to different types of scenarios, with basal doses corresponding to longer-acting insulin to keep blood glucose levels stable throughout fasting and bolus doses corresponding to shorter-acting insulin to prevent blood glucose spikes resulting from meals, the determination of these different types of doses may involve consideration of different aspects of the context of the human 102 and therefore different inputs.
[0193] In various implementations, the artificial pancreas controller 404 provides a protocol for determining an optimal basal insulin dose for a new user. Attributes corresponding to the determined basal insulin dose may then be stored in the shared storage 410 described above with respect to FIGS. 5-9. The process of determining a new user's appropriate basal insulin dose is often referred to as "basal titration." Traditionally, basal titration is performed using a general titration chart that includes an initial basal insulin dose and an amount for adjusting the dose over time. The use of a comprehensive titration schedule makes it difficult to determine an optimal basal insulin dose for a new user because aggressive basal insulin doses can cause the user's blood glucose levels to fall outside the target range and into hypoglycemic levels. Therefore, conventional systems initially prescribe a conservative basal insulin dose that can be manually injected by the user (e.g., using an insulin pen) and then slowly increase the basal insulin dose over time as long as hypoglycemic events are avoided. This conservative process employed by conventional systems is time-consuming for the user and can take weeks or even months to determine the optimal basal insulin dose for a new user. The lack of immediate results leads many patients to give up before achieving an optimal basal insulin dose.
[0194] In contrast, the techniques described herein may use a more aggressive titration schedule because the wearable blood glucose monitoring device 104 can alert the person 102 before their blood glucose level drops to a hypoglycemic level. The more aggressive titration schedule allows for the optimal basal insulin dose to be determined in a reduced time frame compared to conventional processes. Furthermore, the real-time display of blood glucose levels and alerts by the wearable blood glucose monitoring device 104 keeps the person involved in the process until the optimal basal insulin dose is learned by the system.
[0195] To determine a new user's optimal basal insulin dose, the artificial pancreas controller 404 may control the computing device 108 to display a user interface configured to receive the user's initial basal insulin dose. For example, the initial basal insulin dose may be provided by the user's healthcare provider as part of an insulin prescription given to the user, and the user may then enter this dose into a user interface provided by the artificial pancreas controller 404. As an example, consider FIG. 10, which depicts an example user interface 1000 displayed as part of a protocol for determining a basal insulin dose. In this example, the user interface 1002 is displayed by the computing device 108. The user interface 1002 includes a control 1004 for requesting and receiving user input defining the initial basal insulin dose provided by the user's healthcare provider. In this example, the control 1004 is depicted as a text box control, but may be implemented as any type of control that can be used to define an initial basal insulin dose, such as a drop-down list. In example 1000, a user provides user input 1006 via control unit 1004 defining an initial basal insulin dose as 10 units of glargine per day. In response to user selection of submit control 1008, the user-entered basal insulin dose is stored in shared storage 410 by artificial pancreas controller 404.
[0196] Determining the optimal basal insulin dose may also include identifying a suitable time period for basal testing, e.g., one or more times overnight. In one or more implementations, the insulin module 406 may monitor a pattern of blood glucose measurements 118 of the human 102 over a period of time (e.g., a week) and a particular time (e.g., overnight). Based on this monitoring, the insulin module 406 may determine whether the human 102's basal dose is suitable, too high, or too low. In response to the determination, the artificial pancreas algorithm 416 may adjust the human 102's basal insulin dose accordingly, e.g., keeping the dose the same if suitable, lowering the dose if too high, or increasing the dose if too low. In one or more implementations, the monitoring may include the insulin module 406 identifying periods that qualify as suitable for basal testing without providing any specific instructions to the human 102 (e.g., via a display or audible output), without using information about what the human 102 eats, and / or without using information about the bolus doses administered by the human 102.
[0197] In some cases, the user interface 1002 may be provided to the user's healthcare provider on behalf of the user to reduce the risk of the user incorrectly entering the initial basal insulin dose prescribed by the user's healthcare provider via the user interface. Alternatively, the artificial pancreas controller 404 may prompt the user to capture an image of the prescription written by the user's healthcare provider and then utilize character recognition techniques to verify that the prescription is valid and determine the amount of the initial basal insulin dose. The artificial pancreas controller 404 may also provide a prompt to the user or healthcare provider to enter the time at which the basal insulin dose will be delivered to the user. Notably, the initial basal insulin dose may be determined or collected in a variety of different ways without departing from the spirit or scope of the described techniques.
[0198] Regardless of how the initial basal insulin dose is obtained, the artificial pancreas controller 404 controls the insulin delivery system 106 to deliver a basal insulin dose to the user at the indicated time, such as by delivering a basal insulin dose to the user in the morning and / or evening. The artificial pancreas controller 404 can then automatically adjust the basal insulin dose delivered to the person 102 by the insulin delivery system 106 based on feedback from the wearable blood glucose monitoring device, such as blood glucose readings 118 provided by the wearable blood glucose monitoring device 104 worn by the person 102. For example, if after the first day the person's 102's blood glucose level does not fall to approach the hypoglycemic range and instead the person 102 has various blood glucose readings 118 near the hyperglycemic range, the artificial pancreas controller 404 may dynamically increase the basal insulin dose the next day based on feedback received from the wearable blood glucose monitoring device 104. In contrast, if after the first day the blood glucose level of the person 102 does not rise to approach the hyperglycemic range, and instead the person 102 has various blood glucose measurements near the hypoglycemic range, the artificial pancreas controller 404 may dynamically reduce the basal insulin dosage on the following day.
[0199] The artificial pancreas controller 404 may also adjust the basal insulin dosage each day based on a variety of different factors, such as exercise, stress, illness, etc. In some cases, the basal insulin dosage may also be adjusted based on the human 102's fasting blood glucose level, determined from blood glucose measurements 118 provided by the wearable blood glucose monitoring device 104. For example, the artificial pancreas controller 404 may increase the human 102's basal insulin dosage when the fasting blood glucose level is above the "normal range," while decreasing the dosage on days when the fasting blood glucose level is below the "normal range." In either case, the process just described can be repeated daily so that the artificial pancreas controller 404 can quickly learn the human 102's optimal basal insulin dosage, adjust this dosage as needed, and deliver the optimized basal insulin dosage to the human 102.
[0200] Additionally, once a basal insulin dosage has been determined for the human 102, the artificial pancreas controller 404 can detect when the human's 102 blood glucose level is out of range (when a bolus insulin dosage is not effective) based on the blood glucose readings 118 provided by the wearable blood glucose monitoring device 104. In some cases, the artificial pancreas controller 404 can determine the reason for the out-of-range reading and indicate these reasons, such as lack of exercise, stress, or illness, to the human 102. As part of this, the artificial pancreas controller 404 may also generate goal recommendations for the human 102 indicating lifestyle changes that will help stabilize blood glucose levels within the target range, such as adjusting exercise frequency and / or intensity, reducing stress, etc. If the human's 102 blood glucose level remains out of range for an extended period of time, the protocol for determining the optimal basal insulin dosage may be repeated by the artificial pancreas controller 404.
[0201] In various implementations, the artificial pancreas controller 404 also provides a protocol for determining optimal bolus insulin doses. In particular, because carbohydrates and insulin affect people differently, the artificial pancreas controller 404 is configured to determine the effects of carbohydrates and insulin on the blood glucose level of the human 102 to accurately predict blood glucose levels and corresponding bolus insulin doses to deliver to maintain blood glucose levels within a target range in response to various events, such as carbohydrate consumption, exercise, stress, or illness. As part of this, the artificial pancreas controller 404 uses a process to learn the carbohydrate-to-blood glucose ratio and insulin effect value of the human 102. Attributes corresponding to the determined carbohydrate-to-blood glucose ratio and insulin effect value may then be stored in the shared storage 410 described above with respect to FIGS. 5-9.
[0202] The carbohydrate-to-blood glucose ratio is a measure of the effect of carbohydrates on blood glucose levels. For example, using the process described below, the artificial pancreas controller 404 can determine how much a human's 102 blood glucose level increases per gram of carbohydrate. The insulin effect value is a measure of insulin's effect on blood glucose levels and corresponds to the drop in blood glucose levels (usually measured in mg / dL) caused by one unit of insulin. High insulin sensitivity allows the body's cells to use blood glucose levels more effectively, thereby lowering blood glucose levels. In contrast, low insulin sensitivity, known as insulin resistance, occurs when a user's cells do not absorb as much blood glucose, which can lead to excessively high blood glucose levels.
[0203] It should be appreciated, therefore, that so long as the amount of carbohydrates consumed is identified, the carbohydrate-to-blood glucose ratio can be used by the artificial pancreas algorithm 416 of the artificial pancreas controller 404 to accurately predict future blood glucose levels shortly after the carbohydrates are consumed by the human 102. Based on the predicted future blood glucose levels and the insulin effect value, the artificial pancreas algorithm 416 can then determine the appropriate bolus insulin dose to deliver to match the predicted rise in blood glucose levels.
[0204] As part of the process of determining the carbohydrate-to-blood glucose ratio, the artificial pancreas controller 404 determines an initial blood glucose measurement based on the blood glucose measurement 118 provided by the wearable blood glucose monitoring device 104 worn by the human 102 and obtains nutritional information describing the amount of carbohydrates consumed by the human 102. In the context of determining the carbohydrate-to-blood glucose ratio, consider FIG. 11, which depicts an example user interface 1100 displayed by the artificial pancreas controller as part of a process for determining the carbohydrate-to-blood glucose ratio of the human 102. At 1102, the artificial pancreas controller 404 causes the computing device 108 to display the user interface 1104. The user interface 1104 includes a welcome message that provides information describing the carbohydrate-to-blood glucose ratio. Notably, because consuming additional macronutrients (e.g., protein and fat) in addition to carbohydrates can reduce the accuracy of the test, in this example, the user interface 1104 includes a recommendation to select foods primarily composed of carbohydrates, such as white rice.
[0205] At 1106, the artificial pancreas controller controls the user interface 1104 to display a second screen indicating that the human 102's initial blood glucose level is 120 mg / dL, and the control unit 1108 is configured to receive user input defining the amount of carbohydrates the human 102 will consume. In one or more implementations, the artificial pancreas controller 404 may ensure that the initial blood glucose measurement is within a target range, such as within 100-120 mg / dL, before initiating the automated process. For example, if the blood glucose level is determined to be outside the target range, the artificial pancreas controller 404 may terminate the automated process and instruct the user to try again later when the blood glucose level is within range. As part of this, the artificial pancreas controller 404 may provide recommendations for moving the blood glucose level into the target range by increasing exercise, decreasing stress, etc.
[0206] In some cases, the artificial pancreas controller 404 can more accurately determine the carbohydrate-to-blood glucose ratio if a small amount of carbohydrates is consumed as part of the test (e.g., 5-10 grams of carbohydrates). Thus, at 1106, the user interface 1104 includes a recommendation to consume 10 grams or less of carbohydrates. The suggested carbohydrate range may be based on other factors, such as body weight or the human 102, among other factors. Thus, the suggested amount of carbohydrates to consume may vary for different users. In some implementations, the user interface may display additional prompts instructing the user to enter more detailed information, such as the type of food consumed, the weight of the food consumed (e.g., measured in grams or ounces), or the macronutrient composition of the food consumed (e.g., the amount of carbohydrates, protein, and fat). In this scenario, the artificial pancreas controller 404 may factor the type of food and / or the amount of other macronutrients when determining the carbohydrate-to-blood glucose ratio.
[0207] At 1106, human 102 provides input via control unit 1108 indicating that 10 grams of carbohydrates will be consumed. At 1110, in response to the input defining the amount of carbohydrates to be consumed, artificial pancreas controller 404 controls user interface 1104 to display instructions for consuming the carbohydrates. User interface 1104 also provides an indication that human 102's blood glucose level will be monitored and used to determine a carbohydrate-to-blood glucose ratio.
[0208] After determining the initial blood glucose reading and nutritional information describing the amount of carbohydrates to be consumed, the artificial pancreas controller 404 monitors the blood glucose level based on the blood glucose reading 118 provided by the wearable blood glucose monitoring device 104 worn by the human 102. Notably, after consuming the carbohydrates, the blood glucose reading will increase to a peak blood glucose reading before decreasing downward. To determine the peak blood glucose reading, the artificial pancreas controller 404 may monitor the trend rate of the human's blood glucose reading 118 as it increases and detect the peak blood glucose reading when the trend rate decreases toward a value of zero, since the decrease in trend rate indicates that the peak blood glucose reading caused by the consumption of carbohydrates has been reached.
[0209] Once the peak blood glucose level is detected, the artificial pancreas controller 404 determines a carbohydrate-to-blood glucose ratio based on the initial blood glucose measurement, the peak blood glucose measurement, and the amount of carbohydrates consumed. For example, the carbohydrate-to-blood glucose ratio may be determined by dividing the number of carbohydrates (measured in grams) by the change in blood glucose measurement (e.g., the difference between the initial blood glucose measurement and the peak blood glucose measurement). In some cases, the resulting carbohydrate-to-blood glucose ratio is output by the artificial pancreas controller 404. By way of example, at 1112, the artificial pancreas controller 404 controls the user interface 1104 to display the determined carbohydrate-to-blood glucose ratio. In this example, the carbohydrate-to-blood glucose ratio of the human 102 is determined to be 1:5, representing that for every gram of carbohydrate consumed by the human 102, the human's 102's blood glucose level will increase by 5 mg / dL. This may be determined, for example, by measuring blood glucose levels using the wearable blood glucose monitoring device 104 and detecting a peak blood glucose level of 170 mg / dL after 10 grams of carbohydrates have been consumed. Based on this, the amount of carbohydrates (10 grams) is divided by the change in blood glucose level of 50 mg / DL (170 mg / dL - 120 mg / DL) to determine a carbohydrate-to-blood glucose ratio of 1:5. The carbohydrate-to-blood glucose ratio is stored in shared storage 410 by artificial pancreas controller 404 and is usable by artificial pancreas algorithm 416 to determine bolus insulin doses, as described throughout.
[0210] In one or more implementations, the artificial pancreas controller 404 can determine an insulin effect value after detecting a peak blood glucose level as part of an automated process. For example, as depicted at 1112, the user interface 1104 may display a control asking the human 102 whether they would like to determine their insulin effect value immediately. If the human 102 selects "yes," the artificial pancreas controller 404 may initiate a process to determine the insulin effect value. Alternatively, the artificial pancreas controller 404 can determine the insulin effect value as part of a separate automated process (e.g., if the human 102 selects the "no" control depicted in the user interface 1104 at 1112).
[0211] To determine the insulin effect value, the artificial pancreas controller 404 detects a peak blood glucose measurement, such as by detecting a leveling of the rate of increase in the blood glucose measurement 118 provided by the wearable blood glucose monitoring device 104, after carbohydrates are consumed by the human 102 as part of the process for determining the carbohydrate-to-blood glucose ratio. The artificial pancreas controller 404 then estimates a bolus insulin dose that will lower the blood glucose level from the peak blood glucose measurement to a target blood glucose measurement. The artificial pancreas controller 404 may calculate a conservative estimate of the bolus insulin dose to prevent the blood glucose level from dropping too far into the hypoglycemic range. In some cases, the bolus insulin dose is estimated to lower the peak blood glucose measurement to a target blood glucose measurement corresponding to the human 102's initial blood glucose level. For example, if the human 102's initial blood glucose level is 120 mg / dL and rises to a peak blood glucose level of 170 mg / dL, a bolus insulin dose may be selected to return the blood glucose level to the initial level of 120 mg / dL.
[0212] The artificial pancreas controller 404 controls the insulin delivery system 106 to deliver the determined bolus insulin dose to the human 102 and, after the estimated bolus insulin dose is delivered to the human 102 via the insulin delivery system 106, monitors the blood glucose measurements 118 provided by the wearable blood glucose monitoring device 104 worn by the human 102 to detect a target blood glucose measurement corresponding to a leveling out of the rate of decline of the blood glucose measurements 118. The artificial pancreas controller 404 determines an insulin effect value based on the amount of insulin included in the bolus insulin dose and the difference between the peak blood glucose measurement and the target blood glucose measurement. For example, the change in blood glucose level (from the peak blood glucose measurement to the basal blood glucose measurement) may be divided by the units of insulin delivered in the bolus insulin dose. In some cases, the artificial pancreas controller 404 may include other factors when calculating the insulin effect value, such as the time it takes for insulin to begin to affect the blood glucose level, when the insulin effect peaks, and when the insulin effect begins to decline.
[0213] In the context of determining an insulin effect value, consider FIG. 12, which depicts an example user interface 1200 displayed by the artificial pancreas controller 404 as part of a process for determining an insulin effect value for the human 102. At 1202, the artificial pancreas controller 404 causes the computing device 108 to display the user interface 1204. The user interface 1204 includes information about the insulin effect value and a welcome message informing the human 102 that a peak blood glucose level of 170 mg / dL has been detected. In addition, the user interface 1204 notifies the human 102 that an insulin dose will be delivered to measure the insulin effect value. At 1206, the artificial pancreas controller 404 controls the user interface 1204 to display a second screen including a display of the determined insulin effect value for the human 102. In this example, the determined insulin effect value is 1:50, indicating that one unit of fast-acting insulin will lower the human 102's blood glucose level by 50 mg / dL.
[0214] Among other things, the process for determining carbohydrate-to-blood glucose ratio and insulin effect value may be repeated multiple times by artificial pancreas controller 404 to obtain the most accurate values. Additionally, artificial pancreas controller 404 may repeat the test at different times of the day because a person's insulin sensitivity may vary from breakfast to lunch to dinner, as well as based on other factors such as exercise or stress. In some cases, the test may be repeated multiple times to first confirm the results of the first meal event (e.g., breakfast), and then, once confirmed, can be repeated multiple times to confirm the results of other meal events, such as lunch and dinner.
[0215] The insulin effectiveness value, along with the carbohydrate-to-blood glucose ratio, is stored by the artificial pancreas controller 404 in the shared storage 410. Additionally, the artificial pancreas algorithm 416 may determine a carbohydrate ratio for the human 102 based on the carbohydrate-to-blood glucose ratio and the insulin effectiveness value. As described throughout, the carbohydrate ratio describes how many of a predetermined measure of carbohydrates (e.g., grams) are covered for the human 102 by a single insulin unit (IU), where "covered" refers to maintaining the human 102's blood glucose within a target range. The artificial pancreas algorithm 416 may access these parameters from the shared storage 410 and utilize the carbohydrate-to-blood glucose ratio and the insulin effectiveness value to determine bolus insulin doses to be delivered to the user during the user's daily activities. The artificial pancreas controller 404 may provide these values as part of the input to the artificial pancreas algorithm 416, such as the values of features in an input feature vector. For example, based on the carbohydrate-to-blood glucose ratio, the artificial pancreas algorithm 416 may predict a peak blood glucose reading for a future meal based on the initial blood glucose reading of the human 102 and the amount of carbohydrates consumed as part of the meal. Additionally, based on the insulin effect value, the artificial pancreas algorithm 416 may determine an amount of insulin to deliver via the insulin delivery system 106 to reduce the blood glucose level from the predicted peak blood glucose reading back to the initial blood glucose reading.
[0216] While the carbohydrate-to-blood glucose ratio and insulin effect value can be utilized by the artificial pancreas algorithm 416 to accurately predict peak blood glucose measurements and the corresponding insulin doses to deliver to match rising blood glucose levels when the only available information is an estimate of the amount of carbohydrates consumed, an even higher level of accuracy may be achieved by matching insulin doses to commonly consumed meals. Accordingly, in one or more implementations, the artificial pancreas controller 404 provides an automated process for matching bolus insulin doses to commonly consumed meals. To do so, the artificial pancreas controller 404 obtains information describing the meal to be consumed by the human 102. This information may be obtained in a variety of ways. In some cases, the information includes a description of the meal along with nutritional information indicating the total amount of carbohydrates contained in the meal. Alternatively, the nutritional information may include additional information, such as the total amount of calories, fat, and protein. In one or more implementations, this information may include an image of the meal, from which the artificial pancreas controller 404 can estimate the amount of carbohydrates and other macronutrients. For example, human 102 may indicate that a meal is a particular type of cereal and includes a photograph of a bowl containing milk and the cereal captured by a camera. From this, artificial pancreas controller 404 can determine the amount of cereal and milk in the bowl using various image recognition techniques. Based on the amount of cereal and milk estimated using image recognition techniques, artificial pancreas controller 404 can then determine the nutritional content (e.g., carbohydrates, protein, and fat) of the meal by accessing nutritional information for the cereal and milk from a database containing nutritional information for various foods.
[0217] Regardless of how the nutritional information for a meal is obtained, the artificial pancreas controller 404 determines the bolus insulin dose based on the nutritional information. For example, by calculating the total carbohydrate content of a meal based on the nutritional information, the artificial pancreas controller 404 can use the artificial pancreas algorithm 416 to predict the bolus insulin dose that will be needed to counteract the rise in blood glucose levels caused by consuming the meal. The artificial pancreas controller 404 then controls the insulin delivery system 106 to deliver the determined bolus insulin dose to the person 102. In some cases, the bolus insulin dose may be administered 15 to 30 minutes before the meal is consumed, which is the time required for the insulin dose to take effect. Alternatively, the ideal time to start a meal may be determined by monitoring the effect of insulin on the user, such as by determining when the insulin rate begins to decline. Thus, in some cases, the artificial pancreas controller 404 can monitor the effect of insulin on the user and then notify the user when it is time to start consuming the meal, such as by sending a notification to the computing device 108.
[0218] After instructing the user to begin eating a meal, the artificial pancreas controller 404 monitors the blood glucose level based on the blood glucose measurements 118 provided by the wearable blood glucose monitoring device 104 worn by the person 102. The artificial pancreas controller 404 may detect a peak blood glucose measurement and then monitor the blood glucose measurement as the blood glucose level drops from the peak blood glucose measurement. The artificial pancreas controller 404 detects a basal blood glucose level when the trend rate of the decrease in blood glucose measurements approaches a value of zero. The artificial pancreas controller 404 then compares the basal blood glucose level with an initial blood glucose level measured before the delivery of the bolus insulin dose and consumption of the meal. If the basal blood glucose level is within a predefined error range of the initial blood glucose level, the artificial pancreas controller 404 determines that the meal consumption is met, and the bolus insulin dose is associated with the meal information in the shared storage 410. In this manner, a bolus insulin dose can be delivered to the person 102 for a future meal based on an indication that a particular meal will be consumed.
[0219] In particular, if the basal blood glucose level is not within a predefined error range, the artificial pancreas controller 404 may generate a notification to repeat the test again. During the next test for a meal, the artificial pancreas controller will adjust the bolus insulin dose based on the results of the previous test. This test can then be repeated multiple times until the bolus insulin dose is properly matched to the meal. Additionally, the artificial pancreas controller 404 can be configured to provide feedback to the human 102 describing how well the process is working.
[0220] In the context of matching insulin doses to commonly consumed meals, consider FIG. 13, which depicts an example user interface 1300 displayed by the artificial pancreas controller as part of the process of matching insulin doses to meals. At 1302, the artificial pancreas controller 404 causes the computing device 108 to display the user interface 1304. The user interface 1304 includes a prompt 1306 for receiving user input describing nutritional information for a commonly consumed meal. In this example, the human 102 is determining nutritional information for a commonly consumed meal that includes 8 ounces of chicken breast, 1 cup of white rice, and 100 grams of broccoli. The human 102 provides input via prompt 1306 describing the name of the meal as "chicken bowl," along with the nutritional information for the meal, in this case indicating that the meal contains 479 calories, 52 grams of carbohydrates, 59 grams of protein, and 3 grams of fat. This nutritional information may be determined by the human 102 in a variety of different ways, such as by utilizing an online nutrition calculator. However, as explained throughout, nutritional information may be determined in a variety of different ways without departing from the spirit or scope of the described techniques.
[0221] At 1308, the artificial pancreas controller 404 controls the user interface 1304 to indicate that the bolus insulin dose has been delivered and instructs the human 102 to wait 15 minutes before beginning to consume a meal. At 1310, the artificial pancreas controller 404 causes the user interface 1304 to display an indication that the determined bolus insulin dose is compatible with the meal. Providing this feedback can increase the user's confidence that the artificial pancreas controller 404 is effectively controlling the blood glucose level of the human 102, which is likely to motivate the user to continue providing meal information to the system.
[0222] In one or more implementations, the artificial pancreas controller 404 can auto-set various attributes for a new user, such as a temporary basal rate for titrating insulin, a carbohydrate-to-blood glucose ratio, an insulin effect value, etc. In other words, rather than requiring user input or a protocol to determine these attributes, the artificial pancreas controller 404 may auto-configure these values for the human 102. Then, based on blood glucose measurements received from a wearable blood glucose monitoring device 104 worn by the human 102, the artificial pancreas controller 404 can adjust these attributes over time such that the attributes are customized to the human 102. Additionally, the artificial pancreas controller 404 can reveal data to the human 102, as well as other users, such as the human's 102's healthcare provider, indicating how changes in these various attributes affect the human's 102's glycemic control. For example, if the artificial pancreas algorithm 416 reduces a patient's basal rate from 0.8 U / hr to 0.7 U / hr from 3:00 PM to 5:00 PM, the artificial pancreas controller 404 may record this change as an event along with data and analysis supporting this change. Such data and analysis may include, for example, identification of the basal change in a graph of the data with an overlay showing the previous week's blood glucose data with the period after the basal change.
[0223] As described throughout, the various attributes learned by the artificial pancreas controller 404 using the automated processes described above can be maintained in shared storage 410. These attributes can then be accessed from shared storage 410 by the artificial pancreas algorithm 416 and utilized to control the insulin dose delivered to the human 102 by the insulin delivery system 106. As the insulin dose is delivered to the human 102, the artificial pancreas controller 404 continuously monitors blood glucose measurements provided by the wearable blood glucose monitoring device 104 worn by the human 102. Based on the blood glucose measurements, the artificial pancreas controller 404 can automatically adjust the various attributes stored in shared storage 410 to account for situations in which blood glucose levels are not maintained within a target range.
[0224] Artificial pancreas controller 404 may adjust the insulin dose in response to detecting that human 102's blood glucose level is below a target blood glucose range (e.g., hypoglycemia) or above a target blood glucose range (e.g., hyperglycemia). An out-of-range blood glucose level may be detected by artificial pancreas controller 404 after the active time of a delivered bolus insulin dose as well as within the active time of a delivered bolus insulin dose. If an out-of-range blood glucose level is detected, artificial pancreas controller 404 may take various actions to adjust the insulin dose delivered to human 102 by insulin delivery system 106.
[0225] The artificial pancreas controller 404 detects a hypoglycemic blood glucose reading below the target range after the active time of a bolus insulin dose when blood glucose readings provided by a wearable blood glucose monitoring device 104 worn by the human 102 indicate that the human's blood glucose level is within the target range immediately after the bolus insulin dose completes its course, but then drops below the target range once the bolus insulin dose is disabled. Upon detecting a hypoglycemic blood glucose level, the artificial pancreas controller 404 determines a likely cause of the hypoglycemic level, such as a high basal insulin dose, exercise, and / or alcohol consumption. The artificial pancreas controller 404 can determine the likely cause of the hypoglycemic level by analyzing data stored in the shared storage 410 as well as various additional data associated with the human 102. Such additional data may include, for example, activity data (e.g., heart rate data or step count data automatically collected by various wearable devices worn by the user) and user-provided data (e.g., data entered by the user via various user interfaces provided by the artificial pancreas controller 404 or other services).
[0226] As an example, by processing the data stored in shared storage 410 as well as various additional data, the artificial pancreas controller 404 can determine that a high basal insulin dose is a likely cause of a hypoglycemic level if multiple hypoglycemic levels are detected after an active period of bolus insulin doses. Similarly, exercise can be identified as a cause of a hypoglycemic level based on a determination that hypoglycemic levels occur regularly on days when the human 102 exercises. In some cases, the artificial pancreas controller 404 may perform additional pattern analysis, such as by determining that exercise on a particular day is combined with additional walking while the human 102 is at work. Similarly, alcohol can be identified as a cause of a hypoglycemic level based on alcohol consumption that correlates with hypoglycemic levels. If the artificial pancreas controller 404 is unable to determine a likely cause of an out-of-range reading based on the available data, the artificial pancreas controller 404 may prompt the user to answer various questions, such as questions related to exercise, alcohol consumption, illness, stress, etc.
[0227] Once the cause of the hypoglycemic level is determined, the artificial pancreas controller 404 may automatically adjust the insulin dose delivered to the human 102, such as by modifying attributes describing basal or bolus insulin doses in shared storage 410. Generally, if a pattern of hypoglycemic levels can be determined within an error threshold, the insulin dose is adjusted by the artificial pancreas controller 404. In contrast, the artificial pancreas controller 404 may handle a "one-time" hypoglycemic level by providing a hypoglycemic warning to the human 102.
[0228] The artificial pancreas controller 404 detects a hypoglycemic blood glucose reading below the target range during an active bolus insulin dose when a blood glucose reading provided by a wearable blood glucose monitoring device 104 worn by the human 102 indicates that the human's blood glucose level is below the target range while the bolus insulin dose is active. If a hypoglycemic blood glucose level is detected during an active bolus insulin dose, the artificial pancreas controller 404 determines a likely cause of the hypoglycemic level. The artificial pancreas controller 404 can determine the likely cause of the hypoglycemic level by analyzing data stored in shared storage 410 as well as various additional data associated with the human 102. Such additional data may include, for example, activity data (e.g., heart rate data or step count data automatically collected by various wearable devices worn by the user) as well as user-provided data (e.g., data entered by the user through various user interfaces provided by the artificial pancreas controller 404 or other services).
[0229] In some cases, the artificial pancreas controller 404 may determine a discrepancy between the carbohydrates of the meal and the bolus insulin dose. Another possibility is that the bolus insulin dose is acting before the meal raises blood glucose levels. This may be due to consumption of carbohydrates with a low glycemic index, which causes carbohydrates to be digested more slowly by the human 102, or due to a delay in consumption of the meal by the human 102. Other possible causes include a discrepancy between the exercise factor used to calculate the bolus insulin dose and the actual exercise completed by the human 102.
[0230] Once the cause of the hypoglycemic level is determined, the artificial pancreas controller 404 may automatically adjust the insulin dose delivered to the human 102, such as by modifying attributes describing the basal or bolus insulin dose in shared storage 410. Generally, insulin doses are adjusted when a pattern of hypoglycemic levels can be determined. For example, if hypoglycemic levels are measured multiple times for a particular meal, the artificial pancreas controller 404 may adjust the bolus insulin dose for that particular meal by decreasing the dose. In contrast, a one-time hypoglycemic level can be handled by providing a hypoglycemic warning to the human 102, as described throughout.
[0231] The artificial pancreas controller 404 detects a hyperglycemic blood glucose reading above the target range after the active time of the bolus insulin dose when blood glucose readings provided by the wearable blood glucose monitoring device 104 worn by the person 102 indicate that the person's blood glucose level is within or below the target range immediately after the bolus insulin dose completes its course, but then rises above the target range once the bolus insulin dose is ineffective. When a hyperglycemic blood glucose level is detected, the artificial pancreas controller 404 determines likely causes of the hyperglycemic level, such as insufficient basal insulin dosage, various health problems or illnesses, stress, lack of exercise, consumption of a high-fat diet, gastroparesis, the dawn phenomenon, or the Somogyi effect, to name just a few.
[0232] Once the cause of the high blood glucose level is determined, the artificial pancreas controller 404 may automatically adjust the insulin dosage delivered to the user, such as by modifying attributes describing the basal or bolus insulin dosage in the shared storage 410. Generally, insulin dosages are adjusted when a pattern of high blood glucose levels can be determined. For example, if high blood glucose levels are measured multiple times for a particular meal, the artificial pancreas controller 404 may adjust the bolus insulin dosage for that particular meal by increasing the dosage. With respect to exercise, a basal insulin dosage may have been determined assuming a particular amount and intensity of exercise by the human 102. If the amount or intensity of the human's exercise subsequently decreases, the basal insulin dosage may need to be increased to account for the higher blood glucose levels caused by the decreased exercise by the human 102. In contrast, a one-time high blood glucose level can be handled by providing a hyperglycemia warning to the human 102, as described throughout. If the artificial pancreas controller 404 is unable to determine a likely cause of the out-of-range reading based on the available data, the artificial pancreas controller may prompt the user to answer various questions, such as questions related to exercise, alcohol consumption, illness, stress, etc.
[0233] The artificial pancreas controller 404 detects a hyperglycemic blood glucose reading above the target range during an active time of a bolus insulin dose when a blood glucose reading provided by a wearable blood glucose monitoring device 104 worn by the human 102 indicates that the human's blood glucose level is above the target range while the bolus insulin dose is active. When a hyperglycemic blood glucose level is detected during an active time of a bolus insulin dose, the artificial pancreas controller 404 determines a likely cause of the hyperglycemic level. The artificial pancreas controller 404 can determine the likely cause of the hyperglycemic level by analyzing data stored in shared storage 410 as well as various additional data associated with the human 102. Such additional data may include, for example, activity data (e.g., heart rate data or step count data automatically collected by various wearable devices worn by the user) as well as user-provided data (e.g., data entered by the user through various user interfaces provided by the artificial pancreas controller 404 or other services).
[0234] In some cases, the artificial pancreas controller 404 can determine a discrepancy between the carbohydrate content of a meal and the bolus insulin dose, in which case the bolus insulin dose for the meal is increased. Another possibility is that the bolus insulin dose acts too slowly (e.g., the person's blood glucose level rises before the insulin begins to act). Once the cause of the high blood glucose level is determined, the artificial pancreas controller 404 can automatically adjust the insulin dose delivered to the user, such as by modifying attributes describing the basal or bolus insulin dose in shared storage 410. Generally, insulin doses are adjusted when a pattern of high blood glucose levels can be determined. For example, if high blood glucose levels are measured multiple times for a particular meal, the artificial pancreas controller 404 may adjust the bolus insulin dose for that particular meal by increasing the dose. In contrast, a one-time high blood glucose level can be handled by providing a hyperglycemia warning to the person 102, as described throughout.
[0235] Alert Escalation As noted above, artificial pancreas controller 404 may be configured to use various devices of artificial pancreas system 402 (and potentially other remote devices) to trigger the output of escalating alerts to, for example, reduce the occurrence of adverse health events resulting from hyperglycemia and / or hypoglycemia. One implementation for providing such alerts is described in the following description.
[0236] The artificial pancreas controller 404 may provide alert notification services using wireless connections 412, 414 (e.g., Bluetooth) and by leveraging the functionality of the wearable blood glucose monitoring device 104, the insulin delivery system 106, and / or the computing device 108. By way of example, the artificial pancreas controller 404 may receive an alert that occurs in the insulin delivery system 106 (e.g., due to a measured level of insulin or a device malfunction) via the wireless connection 414 and then cause the computing device 108 to output an indication of the alert. In this scenario, the insulin delivery system 106 may output a first indication of the alert (e.g., in response to detecting a condition that causes the alert), and the computing device 108 may output a second indication of the alert based on receipt of the alert by the artificial pancreas controller 404 and an instruction from the controller to output the second indication. The artificial pancreas controller 404 is configured to manage alert escalation, whereby alert escalation is managed at a single device. This management of alert escalation may include determining where (which device) the alerts are output, the type of alert output (e.g., haptic (vibration), auditory, visual (notification)), and the order of output. This management may also include causing the alerts to be output according to the determination.
[0237] One or more of the wearable blood glucose monitoring device 104, the insulin delivery system 106, and / or the computing device 108 may also include functionality for a user (e.g., the human 102, the user's parent, or a healthcare provider) to acknowledge these alerts. As used herein, the term “acknowledge” may refer to providing user input in a manner that indicates that the user has seen or otherwise sensed the alert (e.g., felt a vibration) and further indicates that the user is aware of possible consequences that may be associated with the alert, such as hypoglycemia or hyperglycemia, which may soon occur if no intervention action is taken. By way of example, these alerts may be acknowledged by pressing a physical button, providing some input associated with a displayed user interface element (e.g., sliding, pressing, double-tapping, etc.), and / or providing a verbal acknowledgment, to name just a few. Such an acknowledgment may “clear” the alert from all devices used to implement the alert notification service, such that if the acknowledgment of the alert is received by the computing device 108, the alert may also be cleared from the insulin delivery system 106 where the alert was issued.
[0238] In one or more implementations, the artificial pancreas controller 404 may activate an application on the computing device 108 even if that application is not running when the alert is triggered. Examples of applications may include a blood glucose monitoring application or an insulin application, which may correspond to the blood glucose monitoring module 408 and / or the insulin module 406 (or various portions thereof). In scenarios in which the alert is associated with a text message, the text of the alert may be maintained on a master device (e.g., the device that detects the condition that caused the alert), so that other devices used to implement the service do not need to be exposed to the text (or a translation of the text) prior to the alert.
[0239] Consider the following example of alert escalation in accordance with the described techniques: The artificial pancreas controller 404 vibrates the computing device 108 in response to detecting a condition associated with the alert. If an acknowledgment is not received within a certain time, the artificial pancreas controller 404 vibrates the insulin delivery system 106. If an acknowledgment is not received within a certain time, the artificial pancreas controller 404 causes the computing device 108 to output an audible alert via one or more speakers associated with the computing device 108. If an acknowledgment is not received within a certain time, the artificial pancreas controller 404 causes the insulin delivery system 106 to output an audible alert via one or more speakers associated with the insulin delivery system 106. This process may then continue by alternating audible outputs by the computing device 108 and the insulin delivery system 106 until an acknowledgment is received. It should be understood that the time between outputs may be the same or different between different outputs, e.g., the time between outputs may be decreased. Additionally, the artificial pancreas controller 404 may increase the volume of the audible output as the process continues. The artificial pancreas controller 404 may escalate alerts among devices that are part of the artificial pancreas system 402 in a variety of ways without departing from the spirit or scope of the techniques described herein.
[0240] Example implementation of the on-board artificial pancreas algorithm As noted above, the artificial pancreas algorithm 416 may, in one or more implementations, be implemented in the wearable blood glucose monitoring device 104. Thus, rather than being implemented in the computing device 108 as depicted in FIG. 4 , the artificial pancreas algorithm 416 and pump control module 418 may be implemented locally in the wearable blood glucose monitoring device 104 (artificial pancreas algorithm 416) or otherwise, and the pump control module 418 may be included in a computer-readable medium of the wearable blood glucose monitoring device 104, and they may be executed using one or more processors of the wearable blood glucose monitoring device 104. In this manner, the artificial pancreas system 402 may operate using only the wearable blood glucose monitoring device 104 and the insulin delivery system 106 for at least one period of time, without interacting with the computing device 108 or another computing device. This can be advantageous in a variety of scenarios where it is not desirable to connect to a computing device 108 or set up a computing device to operate with the artificial pancreas algorithm 416 and pump control module 418, such as when the artificial pancreas system 402 is used in a hospital setting or in scenarios where the user does not have easy access to power or a network 116 (e.g., camping, hiking, in rural areas, while driving, etc.).
[0241] In such a scenario, the artificial pancreas algorithm 416 may determine, at the wearable blood glucose monitoring device 104, a dose of insulin to be delivered to the person 102 based on the blood glucose measurements 118 generated by the wearable blood glucose monitoring device 104. The pump control module 418 may then generate instructions at the wearable blood glucose monitoring device 104 instructing the insulin delivery system 106 to deliver the determined amount of insulin one or more times to the person 102. A transmitter at the wearable blood glucose monitoring device 104 may then transmit the instructions to the insulin delivery system 106 over a communicative coupling, such as a Bluetooth Low Energy (BLE) link, a near field communication (NFC) connection, or 5G, to name just a few.
[0242] At one or more intervals, the artificial pancreas algorithm 416 and / or pump control module 418 may back up settings that have changed since the last update, such as by establishing a communications coupling with the computing device 108 and communicating the settings to the computing device 108. The communicated settings may then be saved by the computing device 108, for example, by persisting the settings locally on a computer-readable medium of the computing device 108, or the settings may be communicated to the blood glucose monitoring platform 112 for storage in the storage device 120. In this way, the settings of the human 102 need not simply be discarded when the wearable blood glucose monitoring device 104 expires, for example, when the wearable blood glucose monitoring device 104 is replaced with a new one.
[0243] Examples of intervals at which settings may be communicated to the computing device include every 7 days, every 10 days, every 14 days, and upon expiration of the wearable blood glucose monitoring device 104, to name just a few. When a new wearable blood glucose monitoring device 104 is applied to the person, the saved settings can then be communicated from the computing device 108 to the new wearable blood glucose monitoring device 104, thereby allowing the artificial pancreas algorithm 416 and pump control module 418 to be used from a persisted state. In this manner, learning or optimization of the artificial pancreas algorithm 416 and / or pump control module 418 can be maintained over time and across the use of multiple wearable blood glucose monitoring devices. Alternatively or additionally, the settings may be backed up in the insulin delivery system 106.
[0244] In one or more implementations, the artificial pancreas algorithm 416 and pump control module 418 may operate in a different mode than the wearable blood glucose monitoring device 104, including, by way of example and not limitation, a predicted hypoglycemia suspend-only mode, or a partial closed-loop mode (e.g., when the person 102 delivers a bolus insulin dose for a meal), to name just a few.
[0245] Exemplary Procedure This section describes an exemplary procedure for machine learning in an artificial pancreas. Aspects of the procedure may be implemented in hardware, firmware, software, or a combination thereof. The procedure is illustrated as a set of blocks specifying operations performed by one or more devices and is not necessarily limited to the order shown for performing the operations by each block. In at least some implementations, the procedure is performed by an artificial pancreas controller, such as the artificial pancreas controller 404, which utilizes an insulin module 406 and a blood glucose monitoring module 408.
[0246] FIG. 14 depicts an exemplary procedure 1400 by which an insulin dose is determined and delivered to a user.
[0247] A first wireless connection is established to a wearable blood glucose monitoring device worn by a user, and a second wireless connection is established to an insulin delivery system worn by the user (block 1402). By way of example, an artificial pancreas controller 404 implemented in a computing device 108 establishes a first wireless connection 412 to a wearable blood glucose monitoring device 104 worn by a person 102 and a second wireless connection 414 to an insulin delivery system 106.
[0248] A series of blood glucose measurements provided by the wearable blood glucose monitoring device are received via the first wireless connection (block 1404). By way of example, the wearable blood glucose monitoring device 104 is configured to continuously monitor the blood glucose of the human 102. The wearable blood glucose monitoring device 104 may be configured with, for example, a blood glucose sensor that continuously detects an analyte indicative of the blood glucose of the human 102 and enables generation of blood glucose measurements 118. The artificial pancreas controller 404 implemented in the computing device 108 receives the blood glucose measurements 118 from the wearable blood glucose monitoring device 104. The wearable blood glucose monitoring device 104 may communicate these measurements in real time, for example, because these measurements are generated using the blood glucose sensor. Alternatively or additionally, the wearable blood glucose monitoring device 104 may communicate the blood glucose measurements 118 to the computing device 108 at set time intervals, for example, every 30 seconds, every minute, every 5 minutes, every hour, every 6 hours, daily, etc.
[0249] An insulin dose is determined using an artificial pancreas algorithm based at least in part on the series of blood glucose measurements (block 1406). By way of example, the artificial pancreas algorithm 416 of the artificial pancreas controller 404 determines the insulin dose based at least in part on the series of blood glucose measurements. The artificial pancreas algorithm 416 determines the insulin dose to prevent the blood glucose measurements 118 of the human 102 from straying from a target range. Generally, extreme or persistent deviations from such a target range can result in dangerous health conditions and / or damage to the human's body, e.g., the heart, blood vessels, eyes, kidneys, and nerves. Therefore, maintaining blood glucose levels within the target range through timely insulin delivery can help avoid these dangerous health conditions and physical damage. In some cases, the artificial pancreas algorithm 416 determines the insulin dose based at least in part on previous insulin doses (e.g., basal or bolus doses) delivered to the user by the insulin delivery system, trends in blood glucose measurements provided by the wearable blood glucose monitoring device 104, or data identifying one or more events corresponding to the user, such as food consumption, carbohydrate consumption, exercise, stress, or illness. In one or more implementations, the artificial pancreas algorithm 416 predicts that an event has occurred based on a series of blood glucose measurements and determines the insulin dose based at least in part on the predicted event (e.g., food consumption or exercise).
[0250] The insulin delivery system is controlled to deliver an insulin dose to the user by communicating instructions via the second wireless connection to the insulin delivery system (block 1408). By way of example, the pump control manager 418 of the artificial pancreas controller 404 may generate instructions based on the output of the artificial pancreas algorithm 416 to instruct the insulin delivery system 106 to deliver an amount of insulin over a period of time, e.g., 3 insulin units (IU) immediately, 0.15 IU every hour continuously, etc. The pump control manager 418 may also cause these instructions to be communicated to the insulin delivery system 106 via the wireless connection 414.
[0251] FIG. 15 depicts an exemplary procedure 1500 in which carbohydrate-to-blood glucose ratios are determined and used to control the delivery of bolus insulin doses.
[0252] A first wireless connection is established to a wearable blood glucose monitoring device worn by a user, and a second wireless connection is established to an insulin delivery system worn by the user (block 1502). By way of example, an artificial pancreas controller 404 implemented in a computing device 108 establishes a first wireless connection 412 to a wearable blood glucose monitoring device 104 worn by a person 102 and a second wireless connection 414 to an insulin delivery system 106.
[0253] An initial blood glucose measurement provided by a wearable blood glucose monitoring device worn by a user is received via a first wireless connection (block 1504), and user input describing the amount of carbohydrates to be consumed by the user is received via a user interface (block 1506). By way of example, the artificial pancreas controller 404 provides a protocol for determining an optimal bolus insulin dose. Because carbohydrates and insulin affect people differently, among other things, the artificial pancreas controller 404 is configured to determine the effects of carbohydrates and insulin on the blood glucose level of the human 102 to accurately predict blood glucose levels and corresponding bolus insulin doses to deliver to maintain the blood glucose level within a target range in response to various events, such as carbohydrate consumption, exercise, stress, or illness. As part of this, the artificial pancreas controller 404 uses a process to learn the carbohydrate-to-blood glucose ratio and insulin effect value of the human 102.
[0254] As part of the process of determining the carbohydrate-to-blood glucose ratio, the artificial pancreas controller 404 determines an initial blood glucose measurement based on the blood glucose measurement 118 provided by the wearable blood glucose monitoring device 104 worn by the human 102 and obtains nutritional information describing the amount of carbohydrates to be consumed by the human 102. For example, as depicted in FIG. 11 , the artificial pancreas controller controls the user interface 1104 to display a second screen indicating that the human 102's initial blood glucose level is 120 mg / dL, and the control unit 1108 is configured to receive user input defining the amount of carbohydrates to be consumed by the human 102.
[0255] The blood glucose readings provided by the wearable blood glucose monitoring device worn by the user are monitored after the meal is consumed by the user to detect a peak blood glucose reading (block 1508). By way of example, after determining the initial blood glucose reading and nutritional information describing the amount of carbohydrates to be consumed, the artificial pancreas controller 404 monitors the blood glucose level based on the blood glucose readings 118 provided by the wearable blood glucose monitoring device 104 worn by the person 102. Specifically, after consuming the carbohydrates, the blood glucose readings will increase to a peak blood glucose reading before decreasing downward. To determine the peak blood glucose reading, the artificial pancreas controller 404 may monitor the trend rate of the user's blood glucose readings 118 as they increase and detect the peak blood glucose reading when the trend rate decreases toward a value of zero, since the decrease in trend rate indicates that the peak blood glucose reading caused by the consumption of carbohydrates has been reached.
[0256] The user's carbohydrate-to-blood glucose ratio is determined based on the initial blood glucose measurement, the peak blood glucose measurement, and the amount of carbohydrates consumed (block 1510). For example, the artificial pancreas controller 404 determines the carbohydrate-to-blood glucose ratio based on the initial blood glucose measurement, the peak blood glucose measurement, and the amount of carbohydrates consumed. For example, the carbohydrate-to-blood glucose ratio may be determined by dividing the number of carbohydrates (measured in grams) by the change in blood glucose measurement (e.g., the difference between the initial blood glucose measurement and the peak blood glucose measurement). In some cases, the resulting carbohydrate-to-blood glucose ratio is output by the artificial pancreas controller 404. In FIG. 11, for example, the artificial pancreas controller 404 controls the user interface 1104 to display the determined carbohydrate-to-blood glucose ratio.
[0257] The insulin delivery system is controlled to deliver a bolus insulin dose to the user based at least in part on the carbohydrate-to-blood glucose ratio (block 1512). By way of example, the carbohydrate-to-blood glucose ratio is stored in shared storage 410 by artificial pancreas controller 404 and used by artificial pancreas algorithm 416 to determine the bolus insulin dose. Artificial pancreas controller 404 then controls insulin delivery system 106 to deliver the determined bolus insulin dose to the user, as described throughout.
[0258] In one or more implementations, the artificial pancreas controller 404 can determine the insulin effect value after detecting a peak blood glucose level as part of an automated process. Alternatively, the artificial pancreas controller 404 can determine the insulin effect value as part of a separate automated process. In the context of determining an insulin effect value, consider FIG. 16, which depicts an exemplary procedure 1600 in which an insulin effect value is determined and used to control the delivery of a bolus insulin dose.
[0259] A first wireless connection is established to a wearable blood glucose monitoring device worn by a user, and a second wireless connection is established to an insulin delivery system worn by the user (block 1602). By way of example, an artificial pancreas controller 404 implemented in a computing device 108 establishes a first wireless connection 412 to a wearable blood glucose monitoring device 104 worn by a person 102 and a second wireless connection 414 to an insulin delivery system 106.
[0260] Glucose measurements provided by a wearable blood glucose monitoring device worn by the user are monitored to detect a peak blood glucose measurement (block 1604), and a bolus insulin dose is estimated to lower the user's blood glucose level from the peak blood glucose measurement to a target blood glucose measurement (block 1606). For example, the artificial pancreas controller 404 detects the peak blood glucose measurement, such as by detecting a leveling of the rate of increase in the blood glucose measurement 118 provided by the wearable blood glucose monitoring device 104 after carbohydrates are consumed by the human 102 as part of a process for determining a carbohydrate-to-blood glucose ratio. The artificial pancreas controller 404 then estimates a bolus insulin dose that will lower the blood glucose level from the peak blood glucose measurement to the target blood glucose measurement. The artificial pancreas controller 404 may calculate a conservative estimate of the bolus insulin dose to prevent the blood glucose level from dropping too far into the hypoglycemic range. In some cases, the bolus insulin dose is estimated to lower the peak blood glucose measurement to a target blood glucose measurement corresponding to the human 102's initial blood glucose level. For example, if a person 102 has an initial blood glucose level of 120 mg / dL and rises to a peak blood glucose level of 170 mg / dL, a bolus insulin dose may be selected to return the blood glucose level to the initial level of 120 mg / dL.
[0261] The insulin delivery system is controlled to deliver the estimated bolus insulin dose to the user by communicating instructions over the second wireless connection to the insulin delivery system (block 1608). By way of example, the artificial pancreas controller 404 controls the insulin delivery system 106 to deliver the estimated bolus insulin dose to the human 102 by communicating instructions over the second wireless connection to the insulin delivery system 106.
[0262] Blood glucose measurements provided by a wearable blood glucose monitoring device worn by the user are monitored after an estimated bolus insulin dose is delivered to the user via the insulin delivery system to detect a target blood glucose measurement (block 1610), and an insulin effectiveness value for the user is determined based on the amount of insulin contained in the estimated bolus insulin dose and the difference between the peak blood glucose measurement and the target blood glucose measurement (block 1612). As an example, the artificial pancreas controller 404 controls the insulin delivery system 106 to deliver an estimated bolus insulin dose to the person 102 and monitors blood glucose measurements 118 provided by the wearable blood glucose monitoring device 104 worn by the person 102 after the estimated bolus insulin dose is delivered to the person 102 via the insulin delivery system 106 to detect a target blood glucose measurement that corresponds to a leveling out of the rate of decline of the blood glucose measurements 118. The artificial pancreas controller 404 determines the insulin effectiveness value based on the amount of insulin contained in the estimated bolus insulin dose and the difference between the peak blood glucose measurement and the target blood glucose measurement. For example, the change in blood glucose level (e.g., the difference between the peak blood glucose measurement and the target blood glucose measurement) can be divided by the units of insulin delivered in the estimated bolus insulin dose. In some cases, the artificial pancreas controller 404 may include other factors when calculating the insulin effect value, such as the time it takes for insulin to begin to affect blood glucose levels, when the effect of insulin peaks, and when the effect of insulin begins to decline.
[0263] The insulin delivery system is controlled to deliver future bolus insulin doses to the user based at least in part on the insulin effect value (block 1614). By way of example, the insulin effect value is stored in shared storage 410 by artificial pancreas controller 404 and used by artificial pancreas algorithm 416 to determine bolus insulin doses. Artificial pancreas controller 404 then controls insulin delivery system 106 to deliver the determined bolus insulin doses to the user, as described throughout.
[0264] FIG. 17 depicts an exemplary procedure 1700 in which an artificial pancreas algorithm is trained to determine a user's insulin dosage using one or more machine learning techniques.
[0265] Historical blood glucose measurements provided by a wearable blood glucose monitoring device worn by a user over a series of days are received (block 1702), and additional data for the user is received from one or more sources different from the wearable blood glucose monitoring device (block 1704). In accordance with the principles described herein, the other user data may include food consumption data, activity data, or insulin doses correlated to the blood glucose measurements, to name just a few.
[0266] An artificial pancreas algorithm is trained to determine the user's insulin dosage based on the user's past blood glucose measurements and other user data using one or more machine learning techniques (block 1706). By way of example, the artificial pancreas algorithm 416 and / or the model it includes may be initially trained or otherwise learned using the blood glucose measurements 118 of the user population 110 and other user data (e.g., delivered insulin doses, insulin measurements, target blood glucose ranges, insulin sensitivity, carbohydrate ratios, food consumption data, activity data, etc.) maintained in the storage device 120. Furthermore, this other user data may be correlated with the blood glucose measurements 118, for example, based on timestamps of the blood glucose measurements and other data. The initially trained artificial pancreas algorithm 416 may then be communicated via connection 420 (which may be wired, wireless, or a combination thereof) for incorporation into the artificial pancreas controller 404. Once incorporated, the artificial pancreas algorithm 416 can be further trained to customize the artificial pancreas algorithm 416 for the person 102, i.e., the person associated with the computing device 108 and equipped with the particular wearable blood glucose monitoring device 104 and particular insulin delivery system 106.
[0267] For example, the artificial pancreas algorithm 416 may be further trained to be personalized for the human 102, in part, by obtaining target measurements, target measurement ranges, and / or starting dosages from the human 102's healthcare provider. The starting dosage of insulin may be obtained, for example, for the basal titration process and through a tailored process as described in more detail below. Data for the basal titration process may be obtained from the healthcare provider (e.g., via a healthcare provider portal of the blood glucose monitoring platform 112) and / or via one or more user interfaces displayed via the computing device 108, for example, in connection with setting up the artificial pancreas system 402 for use. In the latter scenario, the computing device 108 may receive input from a user (e.g., the human 102) via a series or sequence of these setup interfaces. The artificial pancreas algorithm 416 may also be further trained using similar data obtained about the human 102, such as data from the user population 110, but such as the human's 102's past blood glucose measurements 118, delivered insulin doses, insulin measurements, target blood glucose ranges, insulin sensitivity, carbohydrate ratios, food consumption data, activity data, etc. As with the user population 110 data, the human's 102's blood glucose measurements 118 may be correlated with other data, such as based on timestamps of the blood glucose measurements 118 and other data. Once trained, the artificial pancreas algorithm 416 is utilized by the artificial pancreas controller 404 to determine the user's insulin dose and deliver the insulin dose to the user via the insulin delivery system 106.
[0268] FIG. 18 depicts an exemplary procedure 1800 in which an insulin delivery request is encrypted and communicated for decryption by an application.
[0269] An encrypted message is generated by encrypting an insulin delivery request (block 1802). In accordance with the principles described herein, the insulin delivery request requests delivery of insulin by an insulin delivery system to a person wearing the insulin delivery system. As an example, the blood glucose monitoring module 408 encrypts the insulin delivery request, which requests delivery of insulin by the insulin delivery system 106 to the person 102. In this example, the blood glucose monitoring module 408 and at least the artificial pancreas algorithm 416 may be included as part of a first application. The blood glucose monitoring module 408 generates the encrypted message based on the encryption.
[0270] The encrypted message is communicated to the insulin application for decryption and, based on the insulin delivery request, for further communication of instructions to the insulin delivery system (block 1804). By way of example, the blood glucose monitoring module 408 communicates the encrypted message generated in block 1802 to the insulin module 406. Here, at least a portion of the insulin module 406 (the pump control manager 418) may be included, for example, as part of a second application corresponding to the insulin delivery system 106. The pump control manager 418 communicates the instructions to the insulin delivery system 106 to deliver insulin to the person 102 in accordance with the instructions.
[0271] FIG. 19 depicts an exemplary procedure 1900 in which an encrypted insulin delivery request is received and decrypted, and instructions for delivering insulin are communicated to an insulin delivery system based on the request.
[0272] An encrypted message including an insulin delivery request is received (block 1902). By way of example, the insulin module 406 receives the encrypted message including the insulin delivery request. The encrypted message is decrypted to reveal the insulin delivery request (block 1904). By way of example, the insulin module 406 decrypts the encrypted message received in block 1902 to reveal the insulin delivery request.
[0273] The instructions are communicated to the insulin delivery system via the wireless connection (block 1906). In accordance with the principles described herein, the instructions instruct the insulin delivery system to deliver insulin to the person wearing the insulin delivery system according to the insulin delivery request. By way of example, the pump control manager 418 communicates instructions to the insulin delivery system 106 via the wireless connection 414 to deliver insulin to the person 102 according to the insulin delivery request identified in block 1904.
[0274] Having described exemplary procedures according to one or more implementations, we now turn to exemplary systems and devices that can be utilized to implement the various techniques described herein.
[0275] Exemplary Systems and Devices 20 illustrates an example system, generally 2000, that includes an example computing device 2002 embodying one or more computing systems and / or devices that may implement various techniques described herein. This is illustrated through the inclusion of a blood glucose monitoring platform 112. The computing device 2002 may be, for example, a service provider's server, a device associated with a client (e.g., a client device), an on-chip system, and / or any other suitable computing device or system.
[0276] The illustrated exemplary computing device 2002 includes a processing system 2004, one or more computer-readable media 2006, and one or more I / O interfaces 2008 communicatively coupled to each other. Although not shown, the computing device 2002 may further include a system bus or other data and command transfer system coupling the various components together. The system bus may include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and / or a processor or local bus utilizing any of a variety of bus architectures. Various other examples, such as control and data lines, are also contemplated.
[0277] The processing system 2004 embodies functionality for performing one or more operations using hardware. Accordingly, the processing system 2004 is illustrated as including hardware elements 2010, which may be configured as processors, functional blocks, etc. This may include hardware implementations as application-specific integrated circuits or other logic devices formed using one or more semiconductors. The hardware elements 2010 are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, a processor may be composed of semiconductors and / or transistors (e.g., electronic integrated circuits (ICs)). In this context, processor-executable instructions may be electronically executable instructions.
[0278] Computer-readable medium 2006 is shown as including memory / storage 2012. Memory / storage 2012 represents memory / storage capacity associated with one or more computer-readable media. Memory / storage component 2012 may include volatile media (such as random access memory (RAM)) and / or non-volatile media (such as read-only memory (ROM), flash memory, optical disks, magnetic disks, etc.). Memory / storage component 2012 may include fixed media (e.g., RAM, ROM, fixed hard drives, etc.) as well as removable media (e.g., flash memory, removable hard drives, optical disks, etc.). Computer-readable medium 2006 may also be configured in a variety of other ways, as described further below.
[0279] The input / output interface 2008 embodies functionality that allows a user to input commands and information into the computing device 2002 and also to present information to the user and / or other components or devices using various input / output devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, touch functionality (e.g., a capacitive or other sensor configured to detect physical touch), a camera (e.g., which may use visible or invisible wavelengths such as infrared frequencies to recognize movements as gestures without touch), etc. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, a tactile response device, etc. Accordingly, the computing device 2002 may be configured in a variety of ways, described further below, to support user interaction.
[0280] Various techniques may be described herein in the general context of software, hardware elements, or program modules. Generally, such modules include routines, programs, objects, elements, components, data structures, etc. that perform particular tasks or implement particular abstract data types. As used herein, the terms "module," "functionality," and "component" generally refer to software, firmware, hardware, or combinations thereof. Aspects of the techniques described herein are platform-independent, meaning that the techniques can be implemented on a variety of commercial computing platforms having a variety of processors.
[0281] An implementation of the described modules and techniques may be stored on or transmitted across some form of computer-readable media. Computer-readable media may include a variety of media that can be accessed by computing device 2002. By way of example, and not limitation, computer-readable media may include “computer-readable storage media” and “computer-readable signal media.”
[0282] A "computer-readable storage medium" may refer to a medium and / or device that enables persistent and / or non-transitory storage of information, as opposed to merely a signal transmission, carrier wave, or signal itself. Thus, a computer-readable storage medium refers to a non-signal-bearing medium. Computer-readable storage media include hardware, such as volatile and non-volatile, removable and non-removable media, and / or storage devices implemented in any method or technology suitable for storing information, such as computer-readable instructions, data structures, program modules, logic elements / circuits, or other data. Examples of computer-readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage device, hard disk, magnetic cassette, magnetic tape, magnetic disk storage or other magnetic storage device, or other storage device, tangible media, or any article of manufacture suitable for storing desired information and that can be accessed by a computer.
[0283] A "computer-readable signal medium" may refer to a signal-bearing medium configured to transmit instructions to the hardware of the computing device 2002, such as over a network. Signal media may typically embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave, data signal, or other transport mechanism. Signal media also includes any information delivery media. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.
[0284] As previously mentioned, the hardware elements 2010 and the computer-readable medium 2006 embody modules, programmable device logic, and / or fixed device logic implemented in hardware that may be used in some embodiments to implement at least some aspects of the techniques described herein, such as to execute one or more instructions. The hardware may include integrated circuits or components of on-chip systems, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), and other implementations in silicon or other hardware. In this context, the hardware may operate as a processing device that executes program tasks defined by instructions and / or logic embodied by the hardware, as well as hardware utilized to store instructions for execution, such as the computer-readable storage medium described above.
[0285] Combinations of the foregoing may be used to implement the various techniques described herein. Accordingly, software, hardware, or executable modules may be implemented as one or more instructions and / or logic embodied on some form of computer-readable storage medium and / or by one or more hardware elements 2010. The computing device 2002 may be configured to implement specific instructions and / or functions corresponding to the software and / or hardware modules. Accordingly, implementation aspects of modules executable by the computing device 2002 as software may be achieved at least in part in hardware, for example, through the use of computer-readable storage media and / or hardware elements 2010 of the processing system 2004. The instructions and / or functions may be executable / operable by one or more articles of manufacture (e.g., one or more computing devices 2002 and / or processing system 2004) to implement the techniques, modules, and examples described herein.
[0286] The techniques described herein may be supported by various configurations of computing device 2002 and are not limited to the specific examples of the techniques described herein. This functionality may also be implemented in whole or in part through the use of a distributed system, such as via a "cloud" 2014 via a platform 2016, as described below.
[0287] The cloud 2014 includes and / or embodies a platform 2016 for resources 2018. The platform 2016 abstracts the underlying functionality of the hardware (e.g., servers) and software resources of the cloud 2014. The resources 2018 may include applications and / or data available while computer processing is running on a server remote from the computing device 2002. The resources 2018 may also include services provided over the Internet and / or through a subscriber network, such as a cellular or Wi-Fi network.
[0288] The platform 2016 may abstract resources and functionality for connecting the computing device 2002 with other computing devices. The platform 2016 may also abstract resource scaling to provide a level of scale corresponding to the encountered demand of the resources 2018 implemented via the platform 2016. Thus, in embodiments of interconnected devices, implementation aspects of the functionality described herein may be distributed throughout the system 2000. For example, functionality may be implemented partially on the computing device 2002 as well as via the platform 2016, which abstracts the functionality of the cloud 2014.
[0289] conclusion Although the systems and techniques have been described in language specific to structural features and / or methodological acts, it should be understood that the systems and techniques defined in the appended claims are not necessarily limited to the particular features or acts described. Rather, the particular features and acts are disclosed as example forms for implementing the claimed subject matter. [Explanation of symbols]
[0290] 100 Environment 102 humans 104 Wearable Blood Glucose Monitoring Device 106 Insulin Delivery System 108 Computing Devices 110 User Population 112 Blood Glucose Monitoring Platform 114 Internet of Things (IoT) 116 Network 118 Blood Glucose Measurements 120 Storage Devices 122 Data Analysis Platform 200 Wearable Blood Glucose Monitoring Devices 202 Sensor 204 Sensor Module 206 Skin 208 Transmitter 210 adhesive pad 212 Mounting mechanism 214 Blood Glucose Monitoring (GM) Device Data 216 Sensor Identification 218 Sensor Status 300 Insulin Delivery System 302 Insulin Pump 304 Infusion Set 306 Tube 308 Injection site 310 Communication Module 312 Insulin delivery control unit 314 Insulin reservoir 316 Display Module 318 Safety Module 320 battery 322 Display Devices 400 Artificial Pancreas 402 Artificial Pancreas System 404 Artificial Pancreas Controller 406 Insulin Module 408 Blood Glucose Monitoring (GM) Module 410 Shared Storage 412,414 Wireless connection 416 Artificial Pancreas (AP) Algorithm 418 Pump Control Manager 420 connection 422 Database Manager 424 Blood Glucose Monitoring (GM) System Manager 502 Active Insulin (IOB) Table 504 Basic Delivery Table 506 Bolus Delivery Table 508 Insulin Profile Table 510 Bolus Calculation Table 2000 System 2002 Computing Devices 2004 Processing System 2006 Computer-Readable Medium 2008 I / O Interface 2010 Hardware Elements 2012 Memory / Storage 2014 Cloud 2016 Platform 2018 Resources
Claims
1. 1. A method implemented by an artificial pancreas controller running on a computing device, comprising: Establishing a first wireless connection to a wearable blood glucose monitoring device worn by a user and a second wireless connection to an insulin delivery system worn by the user; receiving a series of blood glucose measurements provided by the wearable blood glucose monitoring device via the first wireless connection; determining an insulin dosage based at least in part on said series of blood glucose measurements using an artificial pancreas algorithm; and controlling the insulin delivery system to deliver the insulin dose to the user by communicating instructions to the insulin delivery system via the second wireless connection.
2. 10. The method of claim 1, wherein the insulin dosage is determined using the artificial pancreas algorithm to maintain the user's future blood glucose measurements within a target blood glucose range.
3. 3. The method of claim 1 or 2, wherein the artificial pancreas algorithm determines the insulin dosage based at least in part on data identifying one or more events corresponding to the user, the one or more events including at least one of food consumption, carbohydrate consumption, exercise, stress, or illness.
4. 4. The method of claim 1, wherein the artificial pancreas algorithm determines the insulin dose based at least in part on one or more previous insulin doses delivered to the user by the insulin delivery system.
5. 5. The method of claim 1, wherein the artificial pancreas algorithm determines the insulin dosage based at least in part on trends in the blood glucose measurements provided by the wearable blood glucose monitoring device worn by the user.
6. 6. The method of claim 1, wherein the artificial pancreas algorithm predicts that an event has occurred based on the series of blood glucose measurements, and the artificial pancreas algorithm determines the insulin dose based at least in part on the predicted event, the predicted event comprising food consumption by the user or exercise by the user.
7. 7. The method of claim 1, wherein the artificial pancreas algorithm determines the insulin dosage based at least in part on the user's current location or the current time.
8. 8. The method of claim 1, wherein the artificial pancreas algorithm is trained based on the user's past blood glucose measurements and other user data using one or more machine learning techniques.
9. The method of claim 1 , wherein the wearable blood glucose monitoring device is a continuous blood glucose monitoring (CGM) device.
10. 1. A system comprising:
1. An artificial pancreas controller, comprising: Establishing a first wireless connection to a wearable blood glucose monitoring device worn by a user and a second wireless connection to an insulin delivery system worn by the user; receiving, via the first wireless connection, a series of blood glucose measurements provided by the wearable blood glucose monitoring device; and an artificial pancreas algorithm for determining an insulin dosage based at least in part on said series of blood glucose measurements; a pump control manager for controlling the insulin delivery system to deliver the insulin dose to the user by communicating instructions to the insulin delivery system via the second wireless connection.
11. 11. The system of claim 10, wherein the insulin dosage determined by the artificial pancreas algorithm is determined to maintain the user's future blood glucose measurements within a target blood glucose range.
12. 12. The system of claim 10 or 11, wherein the insulin dosage is determined based at least in part on data identifying one or more events corresponding to the user, the one or more events including at least one of food consumption, carbohydrate consumption, exercise, stress, or illness.
13. 13. The system of claim 10, wherein the insulin dose is determined based at least in part on one or more previous insulin doses delivered to the user by the insulin delivery system.
14. 14. The system of claim 10, wherein the insulin dosage is determined based at least in part on trends in the blood glucose measurements provided by the wearable blood glucose monitoring device worn by the user.
15. 15. The system of claim 10, wherein the artificial pancreas algorithm is further configured to predict that an event has occurred based on the series of blood glucose measurements, and to determine the insulin dosage based at least in part on the predicted event, wherein the predicted event comprises food consumption by the user or exercise by the user.
16. 16. The system of claim 10, wherein the insulin dosage is determined based at least in part on the user's current location or the current time.
17. 17. The system of claim 10, wherein the artificial pancreas algorithm is trained based on the user's past blood glucose measurements and other user data using one or more machine learning techniques.
18. 18. The system of claim 10, wherein the wearable blood glucose monitoring device is a continuous blood glucose monitoring (CGM) device.
19. One or more computer-readable storage media having instructions stored thereon, the instructions being executable by one or more processors to perform operations, the operations comprising: Establishing a first wireless connection to a wearable blood glucose monitoring device worn by a user and a second wireless connection to an insulin delivery system worn by the user; receiving a series of blood glucose measurements provided by the wearable blood glucose monitoring device via the first wireless connection; determining an insulin dosage based at least in part on said series of blood glucose measurements using an artificial pancreas algorithm; and controlling the insulin delivery system to deliver the insulin dose to the user by communicating instructions to the insulin delivery system via the second wireless connection.
20. 20. The one or more computer-readable storage media of claim 19, wherein the insulin dosage is determined to maintain future blood glucose measurements of the user within a target blood glucose range.
21. 21. The one or more computer-readable storage media of claim 19 or 20, wherein the insulin dosage is determined based at least in part on data identifying one or more events corresponding to the user, the one or more events including at least one of food consumption, carbohydrate consumption, exercise, stress, or illness.
22. 22. The one or more computer-readable storage media of any one of claims 19 to 21, wherein the insulin dosage is determined based at least in part on one or more previous insulin dosages delivered to the user by the insulin delivery system.
23. 23. The one or more computer-readable storage media of any one of claims 19 to 22, wherein the insulin dosage is determined based at least in part on a trend of the blood glucose measurements provided by the wearable blood glucose monitoring device worn by the user.
24. 24. The one or more computer-readable storage media of any one of claims 19 to 23, wherein the operations further include predicting that an event has occurred using the artificial pancreas algorithm and based on the series of blood glucose measurements, and wherein the insulin dosage is further determined based at least in part on the predicted event, and wherein the predicted event includes food consumption by the user or exercise by the user.
25. 25. The one or more computer-readable storage media of any one of claims 19 to 24, wherein the insulin dosage is determined based at least in part on the user's current location or current time.
26. 26. The one or more computer-readable storage media of any one of claims 19-25, wherein the artificial pancreas algorithm is trained based on the user's past blood glucose measurements and other user data using one or more machine learning techniques.
27. 1. An apparatus comprising: establishing means for establishing a first wireless connection to a wearable blood glucose monitoring device worn by a user and a second wireless connection to an insulin delivery system worn by said user; receiving means for receiving a series of blood glucose measurements provided by the wearable blood glucose monitoring device via the first wireless connection; a determining means for determining an insulin dosage based at least in part on said series of blood glucose measurements using an artificial pancreas algorithm; and control means for controlling the insulin delivery system to deliver the insulin dose to the user by communicating instructions to the insulin delivery system via the second wireless connection.
28. 1. A method implemented by an artificial pancreas controller running on a computing device, comprising: Establishing a first wireless connection to a wearable blood glucose monitoring device worn by a user and a second wireless connection to an insulin delivery system worn by the user; receiving, via the first wireless connection, an initial blood glucose measurement provided by the wearable blood glucose monitoring device worn by the user; receiving user input via a user interface describing an amount of carbohydrates to be consumed by the user as part of a meal; monitoring blood glucose measurements provided by the wearable blood glucose monitoring device worn by the user after the meal to detect peak blood glucose measurements; determining a carbohydrate-to-blood glucose ratio for the user based on the initial blood glucose measurement, the peak blood glucose measurement, and the amount of carbohydrates consumed by the user; and controlling the insulin delivery system to deliver a bolus insulin dose to the user based at least in part on the carbohydrate-to-blood glucose ratio.
29. 30. The method of claim 28, wherein the controlling comprises controlling the insulin delivery system to deliver a bolus insulin dose to the user based at least in part on the carbohydrate-to-blood glucose ratio and an insulin effect value.
30. The controlling Determining an amount of carbohydrates to be consumed as part of a future meal; determining a bolus insulin dose for the user based on the amount of carbohydrates to be consumed as part of the future meal, the carbohydrate-to-blood glucose ratio, and the insulin sensitivity value; 30. The method of claim 29, further comprising controlling the insulin delivery system to deliver the bolus insulin dose to the user by communicating instructions to the insulin delivery system via the second wireless connection.
31. 31. The method of claim 30, wherein determining the amount of carbohydrates to be consumed as part of the future meal comprises estimating the amount of carbohydrates to be consumed as part of the future meal based on information describing the future meal.
32. 32. The method of claim 31 , wherein the information describing the future meal includes an image of the future meal.
33. 33. The method of claim 32, wherein the information describing the future meal includes an additional image of any leftovers of the future meal, and wherein the determining the amount of carbohydrates to be consumed as part of the future meal is based on a comparison of the image with the additional image.
34. estimating a bolus insulin dose to lower the user's blood glucose level from the peak blood glucose measurement to a target blood glucose measurement; controlling the insulin delivery system to deliver the estimated bolus insulin dose to the user by communicating instructions to the insulin delivery system via the second wireless connection; monitoring a blood glucose measurement provided by the wearable blood glucose monitoring device worn by the user to detect the target blood glucose measurement after the estimated bolus insulin dose is delivered to the user via the insulin delivery system; 34. The method of any one of claims 28 to 33, further comprising determining an insulin sensitivity value for the user based on the amount of insulin included in the estimated bolus insulin dose and the difference between the peak blood glucose measurement and the target blood glucose measurement.
35. 35. The method of claim 34, further comprising associating the carbohydrate-to-blood glucose ratio and the insulin effect value with a user profile of the user maintained in a database accessible to the wearable blood glucose monitoring device and the insulin delivery system.
36. 36. The method of any one of claims 28 to 35, wherein the wearable blood glucose monitoring device is a continuous blood glucose monitoring (CGM) device.
37. 1. A system comprising:
1. An artificial pancreas controller, comprising: Establishing a first wireless connection to a wearable blood glucose monitoring device worn by a user and a second wireless connection to an insulin delivery system worn by the user; receiving, via the first wireless connection, an initial blood glucose measurement provided by the wearable blood glucose monitoring device worn by the user; receiving user input via a user interface describing an amount of carbohydrates to be consumed by the user as part of a meal; monitoring blood glucose measurements provided by the wearable blood glucose monitoring device worn by the user after the meal to detect peak blood glucose measurements; determining a carbohydrate-to-blood glucose ratio for the user based on the initial blood glucose measurement, the peak blood glucose measurement, and the amount of carbohydrates consumed by the user; and a pump control manager for controlling the insulin delivery system to deliver a bolus insulin dose to the user based at least in part on the carbohydrate-to-blood glucose ratio.
38. 38. The system of claim 37, wherein the pump control manager is further configured to control the insulin delivery system to deliver a bolus insulin dose to the user based at least in part on the carbohydrate-to-blood glucose ratio and an insulin effect value.
39. The artificial pancreas controller, Determining an amount of carbohydrates to be consumed as part of a future meal; determining a bolus insulin dose for the user based on the amount of carbohydrates to be consumed as part of the future meal, the carbohydrate-to-blood glucose ratio, and the insulin sensitivity value; 39. The system of claim 38, wherein the pump control manager is further configured to control the insulin delivery system to deliver the bolus insulin dose to the user by communicating instructions to the insulin delivery system via the second wireless connection.
40. 40. The system of claim 39, wherein the artificial pancreas controller is further configured to estimate the amount of carbohydrates to be consumed as part of the future meal based on information describing the future meal to determine the amount of carbohydrates to be consumed as part of the future meal.
41. 41. The system of claim 40, wherein the information describing the future meal includes an image of the future meal.
42. 42. The system of claim 41, wherein the information describing the future meal includes an additional image of any leftovers of the future meal, and the amount of carbohydrates to be consumed as part of the future meal is further determined based on a comparison of the image with the additional image.
43. The artificial pancreas controller, estimating a bolus insulin dose to lower the user's blood glucose level from the peak blood glucose measurement to a target blood glucose measurement; monitoring a blood glucose measurement provided by the wearable blood glucose monitoring device worn by the user to detect the target blood glucose measurement after the estimated bolus insulin dose is delivered to the user via the insulin delivery system; determining an insulin sensitivity value for the user based on the amount of insulin in the estimated bolus insulin dose and the difference between the peak blood glucose measurement and the target blood glucose measurement; 43. The system of any one of claims 37 to 42, wherein the pump control manager is further configured to control the insulin delivery system to deliver the estimated bolus insulin dose to the user by communicating instructions to the insulin delivery system via the second wireless connection.
44. 44. The system of claim 43, wherein the artificial pancreas controller is further configured to associate the carbohydrate-to-blood glucose ratio and the insulin effect value with a user profile of the user maintained in a database accessible to the wearable blood glucose monitoring device and the insulin delivery system.
45. One or more computer-readable storage media having instructions stored thereon, the instructions being executable by one or more processors to perform operations, the operations comprising: Establishing a first wireless connection to a wearable blood glucose monitoring device worn by a user and a second wireless connection to an insulin delivery system worn by the user; receiving, via the first wireless connection, an initial blood glucose measurement provided by the wearable blood glucose monitoring device worn by the user; receiving user input via a user interface describing an amount of carbohydrates to be consumed by the user as part of a meal; monitoring blood glucose measurements provided by the wearable blood glucose monitoring device worn by the user after the meal to detect peak blood glucose measurements; determining a carbohydrate-to-blood glucose ratio for the user based on the initial blood glucose measurement, the peak blood glucose measurement, and the amount of carbohydrates consumed by the user; and controlling the insulin delivery system to deliver a bolus insulin dose to the user based at least in part on the carbohydrate-to-blood glucose ratio.
46. 46. The one or more computer-readable storage media of claim 45, wherein the controlling comprises controlling the insulin delivery system to deliver a bolus insulin dose to the user based at least in part on the carbohydrate-to-blood glucose ratio and an insulin effect value.
47. The controlling Determining an amount of carbohydrates to be consumed as part of a future meal; determining a bolus insulin dose for the user based on the amount of carbohydrates to be consumed as part of the future meal, the carbohydrate-to-blood glucose ratio, and the insulin sensitivity value; 47. The one or more computer-readable storage media of claim 46, further comprising controlling the insulin delivery system to deliver the bolus insulin dose to the user by communicating instructions to the insulin delivery system via the second wireless connection.
48. 48. The one or more computer-readable storage media of claim 47, wherein determining the amount of carbohydrates to be consumed as part of the future meal comprises estimating the amount of carbohydrates to be consumed as part of the future meal based on information describing the future meal.
49. 49. The one or more computer-readable storage media of claim 48, wherein the information describing the future meal includes an image of the future meal.
50. 50. The one or more computer-readable storage media of claim 49, wherein the information describing the future meal includes an additional image of any leftovers of the future meal, and wherein the determining the amount of carbohydrates to be consumed as part of the future meal is based on a comparison of the image with the additional image.
51. The operation is estimating a bolus insulin dose to lower the user's blood glucose level from the peak blood glucose measurement to a target blood glucose measurement; controlling the insulin delivery system to deliver the estimated bolus insulin dose to the user by communicating instructions to the insulin delivery system via the second wireless connection; monitoring a blood glucose measurement provided by the wearable blood glucose monitoring device worn by the user to detect the target blood glucose measurement after the estimated bolus insulin dose is delivered to the user via the insulin delivery system; 51. The one or more computer-readable storage media of any one of claims 45 to 50, further comprising determining an insulin sensitivity value for the user based on the amount of insulin included in the estimated bolus insulin dose and the difference between the peak blood glucose measurement and the target blood glucose measurement.
52. 52. The one or more computer-readable storage media of claim 51 , wherein the operations further include associating the carbohydrate-to-blood glucose ratio and the insulin effect value with a user profile for the user maintained in a database accessible to the wearable blood glucose monitoring device and the insulin delivery system.
53. 53. The one or more computer-readable storage media of any one of claims 45 to 52, wherein the wearable blood glucose monitoring device is a continuous blood glucose monitoring (CGM) device.
54. 1. An apparatus comprising: establishing means for establishing a first wireless connection to a wearable blood glucose monitoring device worn by a user and a second wireless connection to an insulin delivery system worn by said user; first receiving means for receiving an initial blood glucose measurement provided by the wearable blood glucose monitoring device worn by the user via the first wireless connection; second receiving means for receiving user input via a user interface describing an amount of carbohydrates to be consumed by the user as part of the meal; monitoring means for monitoring blood glucose measurements provided by the wearable blood glucose monitoring device worn by the user after the meal to detect peak blood glucose measurements; determining means for determining a carbohydrate-to-blood glucose ratio of the user based on the initial blood glucose measurement, the peak blood glucose measurement, and the amount of carbohydrates consumed by the user; and control means for controlling the insulin delivery system to deliver a bolus insulin dose to the user based at least in part on the carbohydrate-to-blood glucose ratio.
55. 1. A method comprising: receiving an encrypted message including an insulin delivery request; decrypting the encrypted message to reveal the insulin delivery request; and communicating instructions to an insulin delivery system via a wireless connection, the instructions instructing the insulin delivery system to deliver insulin to a person wearing the insulin delivery system in accordance with the insulin delivery request.
56. 56. The method of claim 55, wherein the insulin delivery request specifies an amount of the insulin to deliver to the human.
57. 57. The method of claim 56, wherein the insulin delivery request specifies a timing for delivering the amount of insulin to the person.
58. 58. The method of claim 56 or 57, wherein the amount of insulin is determined based on processing a series of blood glucose measurements of the human using one or more machine learning models.
59. 59. The method of any one of claims 55 to 58, wherein the encrypted message is received by a first application from a second application.
60. 60. The method of claim 59, wherein the encrypted message is encrypted using a public key of the first application.
61. 61. The method of claim 59 or 60, further comprising decrypting the encrypted message using a private key of the first application.
62. 62. The method of claim 61, wherein the first application maintains the private key in a keychain.
63. 1. A computing device, comprising: an application for the computing device, receiving an encrypted message including an insulin delivery request; decrypting the encrypted message to reveal the insulin delivery request; a computing device comprising an application for causing communication of instructions to an insulin delivery system via a wireless connection, the instructions instructing the insulin delivery system to deliver insulin to a person wearing the insulin delivery system in accordance with the insulin delivery request.
64. 64. The computing device of claim 63, wherein the insulin delivery request specifies an amount of the insulin to deliver to the human.
65. 65. The computing device of claim 64, wherein the insulin delivery request specifies a timing for delivering the amount of insulin to the person.
66. 66. The computing device of claim 64 or 65, wherein the amount of insulin is determined based on processing a series of blood glucose measurements of the person using one or more machine learning models.
67. 67. The computing device of any one of claims 63 to 66, further comprising an additional application, wherein the encrypted message is received from the application by the additional application.
68. 68. The computing device of any one of claims 63 to 67, wherein the encrypted message is encrypted using the public key of the application.
69. 69. The computing device of any one of claims 63 to 68, further comprising decrypting the encrypted message using a private key of the application.
70. 70. The computing device of claim 69, wherein the application maintains the private key in a keychain.
71. One or more computer-readable storage media having instructions stored thereon, the instructions being executable by one or more processors to perform operations, the operations comprising: receiving an encrypted message including an insulin delivery request; decrypting the encrypted message to reveal the insulin delivery request; and communicating instructions to an insulin delivery system via a wireless connection, the instructions instructing the insulin delivery system to deliver insulin to a person wearing the insulin delivery system according to the insulin delivery request.
72. 72. The one or more computer-readable storage media of claim 71, wherein the insulin delivery request specifies an amount of the insulin to deliver to the human.
73. 73. The one or more computer-readable storage media of claim 72, wherein the insulin delivery request specifies a timing for delivering the amount of insulin to the human.
74. 74. The one or more computer-readable storage media of claim 72 or 73, wherein the amount of insulin is determined based on processing a series of blood glucose measurements of the human using one or more machine learning models.
75. 75. The one or more computer-readable storage media of any one of claims 71 to 74, wherein the encrypted message is received by a first application from a second application.
76. 76. The one or more computer-readable storage media of claim 75, wherein the encrypted message is encrypted using a public key of the first application.
77. 77. The one or more computer-readable storage media of claim 75 or 76, further comprising decrypting the encrypted message using a private key of the first application.
78. 78. The one or more computer-readable storage media of claim 77, wherein the first application maintains the private key in a keychain.
79. 1. An apparatus comprising: receiving means for receiving an encrypted message including an insulin delivery request; a decoding means for decrypting the encrypted message to reveal the insulin delivery request; and communication means for communicating instructions to an insulin delivery system via a wireless connection, the instructions instructing the insulin delivery system to deliver insulin to a person wearing the insulin delivery system in accordance with the insulin delivery request.
80. 1. A method comprising: generating an encrypted message by encrypting an insulin delivery request, the insulin delivery request requesting delivery of insulin by an insulin delivery system to a person wearing the insulin delivery system; and communicating the encrypted message to an insulin application for decryption and further communication of instructions to the insulin delivery system based on the insulin delivery request.
81. 81. The method of claim 80, wherein the encrypted message is generated by an additional application.
82. 82. The method of claim 80 or 81, wherein the insulin delivery request is encrypted using the public key of the insulin application.
83. 83. The method of any one of claims 80 to 82, wherein the insulin application includes a private key, the private key being used to decrypt the encrypted message.
84. 84. The method of claim 83, wherein the insulin application maintains the private key in a keychain.
85. 85. The method of any one of claims 80 to 84, wherein the insulin delivery request specifies an amount of insulin to deliver to the human using the insulin delivery system.
86. 86. The method of claim 85, wherein the insulin delivery request specifies a timing for delivering the amount of insulin to the person using the insulin delivery system.
87. 87. The method of claim 85 or 86, wherein the amount of insulin is determined based on processing a series of blood glucose measurements of the human using one or more machine learning models.
88. 88. The method of any one of claims 80 to 87, wherein the insulin application is configured to establish a wireless connection with the insulin delivery system for communication of insulin delivery instructions to the insulin delivery system.
89. 1. A computing device, comprising: an application for the computing device, generating an encrypted message by encrypting an insulin delivery request, the insulin delivery request requesting delivery of insulin by an insulin delivery system to a person wearing the insulin delivery system; and communicating the encrypted message to an insulin application for decryption and for further communication of instructions to the insulin delivery system based on the insulin delivery request.
90. 90. The computing device of claim 89, wherein the insulin delivery request is encrypted using a public key of the insulin application.
91. 91. The computing device of claim 89 or 90, wherein the insulin application includes a private key, the private key being used to decrypt the encrypted message.
92. 92. The computing device of claim 91, wherein the insulin application maintains the private key in a keychain.
93. 93. The computing device of any one of claims 89 to 92, wherein the insulin delivery request specifies an amount of the insulin to deliver to the human using the insulin delivery system.
94. 94. The computing device of claim 93, wherein the insulin delivery request specifies a timing for delivering the amount of insulin to the person using the insulin delivery system.
95. 95. The computing device of claim 93 or 94, wherein the amount of insulin is determined based on processing a series of blood glucose measurements of the person using one or more machine learning models.
96. One or more computer-readable storage media having instructions stored thereon, the instructions being executable by one or more processors to perform operations, the operations comprising: generating an encrypted message by encrypting an insulin delivery request, the insulin delivery request requesting delivery of insulin by an insulin delivery system to a person wearing the insulin delivery system; and communicating the encrypted message to an insulin application for decryption and for further communication of instructions to the insulin delivery system based on the insulin delivery request.
97. 97. The one or more computer-readable storage media of claim 96, wherein the encrypted message is generated by an additional application.
98. 98. The one or more computer-readable storage media of claim 96 or 97, wherein the insulin delivery request is encrypted using the public key of the insulin application.
99. 99. The one or more computer-readable storage media of any one of claims 96 to 98, wherein the insulin application includes a private key, the private key being used to decrypt the encrypted message.
100. 100. The one or more computer-readable storage media of claim 99, wherein the insulin application maintains the private key in a keychain.
101. 101. The one or more computer-readable storage media of any one of claims 96-100, wherein the insulin delivery request specifies an amount of the insulin to deliver to the human using the insulin delivery system.
102. 102. The one or more computer-readable storage media of claim 101, wherein the insulin delivery request specifies a timing for delivering the amount of insulin to the person using the insulin delivery system.
103. 103. The one or more computer-readable storage media of claim 101 or 102, wherein the amount of insulin is determined based on processing a series of blood glucose measurements of the person using one or more machine learning models.
104. 1. An apparatus comprising: encryption means for generating an encrypted message by encrypting an insulin delivery request, said insulin delivery request requesting delivery of insulin by an insulin delivery system to a person wearing said insulin delivery system; and communication means for communicating the encrypted message to an insulin application for decryption and for further communication of instructions to the insulin delivery system based on the insulin delivery request.
105. 1. A method comprising: receiving historical blood glucose measurements provided by a wearable blood glucose monitoring device worn by a user over a series of days; receiving other user data for the user from one or more sources different from the wearable blood glucose monitoring device, the other user data including one or more of food consumption data, activity data, or insulin dosages correlated to the blood glucose measurements; and training an artificial pancreas algorithm to determine an insulin dosage for the user based on the past blood glucose measurements and the other user data of the user using one or more machine learning techniques.
106. 106. The method of claim 105, further comprising controlling an insulin delivery system to deliver an insulin dose to the user, the insulin dose being determined by the trained artificial pancreas algorithm.
107. 107. The method of claim 105 or 106, further comprising training the artificial pancreas algorithm to determine insulin dosages based on past blood glucose measurements of a user population and based on other user data of the user population from one or more sources different from wearable blood glucose monitoring devices worn by users of the user population.
108. 108. The method of any one of claims 105 to 107, wherein the artificial pancreas algorithm is initially trained to determine insulin dosages based on past blood glucose measurements of a user population and based on other user data of the user population from one or more sources different from wearable blood glucose monitoring devices worn by users of the user population.
109. 109. The method of claim 108, wherein the artificial pancreas algorithm is first trained based on the past blood glucose measurements of the user population and the other user data of the user population, and then the artificial pancreas algorithm is trained to determine the insulin dosage for the user based on the past blood glucose measurements of the user.
110. 110. The method of claim 108 or 109, further comprising receiving the initially trained artificial pancreatic algorithm.
111. 111. The method of any one of claims 105 to 110, wherein the insulin dosage determined by the trained artificial pancreas algorithm specifies the amount of insulin to deliver.
112. 112. The method of claim 111, wherein the insulin dosage determined by the trained artificial pancreas algorithm specifies a timing for delivering the amount of insulin to the user.
113. 113. The method of any one of claims 105 to 112, wherein the insulin dosage determined by the trained artificial pancreas algorithm specifies the type of insulin to deliver.
114. 1. A system comprising:
1. An artificial pancreas controller, comprising: receiving historical blood glucose measurements provided by a wearable blood glucose monitoring device worn by a user over a series of days; receiving other user data for the user from one or more sources different from the wearable blood glucose monitoring device, the other user data including one or more of food consumption data, activity data, or insulin dosages correlated to the blood glucose measurements; and training an artificial pancreas algorithm using one or more machine learning techniques to determine insulin dosages for the user based on the past blood glucose measurements and the other user data of the user.
115. The system of claim 114, wherein the artificial pancreas controller is further configured to control an insulin delivery system to deliver an insulin dose to the user by communicating instructions to the insulin delivery system to deliver the insulin dose, the insulin dose being determined by the trained artificial pancreas algorithm.
116. The system of claim 114 or 115, wherein the artificial pancreas controller is further configured to train the artificial pancreas algorithm to determine insulin dosages based on past blood glucose measurements of a user population and based on other user data of the user population from one or more sources different from wearable blood glucose monitoring devices worn by users of the user population.
117. The system of any one of claims 114 to 116, wherein the artificial pancreas algorithm is initially trained to determine insulin dosages based on past blood glucose measurements of a user population and based on other user data of the user population from one or more sources different from wearable blood glucose monitoring devices worn by users of the user population.
118. 118. The system of claim 117, wherein the artificial pancreas algorithm is first trained based on the past blood glucose measurements of the user population and the other user data of the user population, and then the artificial pancreas algorithm is trained to determine the insulin dosage for the user based on the past blood glucose measurements of the user.
119. 119. The system of claim 117 or 118, wherein the artificial pancreas controller is further configured to receive an initially trained artificial pancreas algorithm.
120. 120. The system of any one of claims 114 to 119, wherein the insulin dosage determined by the trained artificial pancreas algorithm specifies the amount of insulin to deliver.
121. 121. The system of claim 120, wherein the insulin dosage determined by the trained artificial pancreas algorithm specifies a timing for delivering the amount of insulin to the user.
122. 122. The system of any one of claims 114 to 121, wherein the insulin dosage determined by the trained artificial pancreas algorithm specifies the type of insulin to deliver.
123. One or more computer-readable storage media having instructions stored thereon, the instructions being executable by one or more processors to perform operations, the operations comprising: receiving historical blood glucose measurements provided by a wearable blood glucose monitoring device worn by a user over a series of days; receiving other user data for the user from one or more sources different from the wearable blood glucose monitoring device, the other user data including one or more of food consumption data, activity data, or insulin dosages correlated to the blood glucose measurements; and training an artificial pancreas algorithm to determine an insulin dosage for the user based on the past blood glucose measurements and the other user data of the user using one or more machine learning techniques.
124. 124. The one or more computer-readable storage media of claim 123, wherein the operations further include controlling an insulin delivery system to deliver an insulin dose to the user, the insulin dose being determined by the trained artificial pancreas algorithm.
125. 125. The one or more computer-readable storage media of claim 123 or 124, wherein the operations further include training the artificial pancreas algorithm to determine insulin dosages based on past blood glucose measurements of a user population and based on other user data of the user population from one or more sources different from wearable blood glucose monitoring devices worn by users of the user population.
126. 126. The one or more computer-readable storage media of any one of claims 123 to 125, wherein the artificial pancreas algorithm is initially trained to determine insulin dosages based on past blood glucose measurements of a user population and based on other user data of the user population from one or more sources different from wearable blood glucose monitoring devices worn by users of the user population.
127. 127. The one or more computer-readable storage media of claim 126, wherein the artificial pancreas algorithm is first trained based on the past blood glucose measurements of the user population and the other user data of the user population, and then the artificial pancreas algorithm is trained to determine the insulin dosage for the user based on the past blood glucose measurements of the user.
128. 128. The one or more computer-readable storage media of claim 126 or 127, wherein the operations further comprise receiving an initially trained artificial pancreatic algorithm.
129. 129. One or more computer-readable storage media described in any one of claims 123 to 128, wherein the insulin dosage determined by the trained artificial pancreas algorithm specifies an amount of insulin to deliver.
130. 130. The one or more computer-readable storage media of claim 129, wherein the insulin dosage determined by the trained artificial pancreas algorithm specifies a timing for delivering the amount of insulin to the user.
131. 131. The one or more computer-readable storage media of any one of claims 123-130, wherein the insulin dosage determined by the trained artificial pancreas algorithm specifies the type of insulin to deliver.
132. 1. An apparatus comprising: a first receiving means for receiving historical blood glucose measurements provided by a wearable blood glucose monitoring device worn by a user over a series of days; second receiving means for receiving other user data of the user from one or more sources different from the wearable blood glucose monitoring device, the other user data including one or more of food consumption data, activity data, or insulin dosages correlated to the blood glucose measurements; and training means for training an artificial pancreas algorithm to determine insulin dosages for the user based on the past blood glucose measurements and the other user data of the user using one or more machine learning techniques.