Stránky

Prototyp simulátora pre ilustráciu bolus kalkulátora

Tu je prezentovaná „alfa“ verzia simulátora (akýsi prvý prototyp).

Simulátor je založený na empirickom modeli opísanom v príspevku Empirický model pre simulátor subjektu s diabetom 1. typu. Parametre empirického modelu (inz. citlivosť, sach. pomer, bazálny inzulín, ich zmeny atp.) použité v prototype simulátora neprezradím. Sú nepodstatné pre túto chvíľu.

Podstatné je, že simulátor je napísaný v jazyku Python. Samotná webová aplikácia je napísaná vo web frameworku Django. Je umiestnená na Heroku. Simulátor využíva knižnice SciPy, Matplotlib a teda samozrejme aj NumPy. To je trošku problém vzhľadom na umiestnenie aplikácie na Heroku. Preto je použitý nie originálny buildpack pre Python aplikácie na Heroku ale iný, ktorý vytvorili dobrý ľudia. Jeho fork je tu na GitHube.

URL simulátora je:



Ovládanie

(V prvom rade, má to veľa múch, možno chýb. Som lenivý a naničhodný)

Pre ovládanie a zadávanie hodnôt slúži formulár v pravej časti. Prvá položka sú Sacharidy. Sú dané časom a hodnotou a tieto sú vždy vo dvojiciach. Času prislúcha hodnota a naopak. V čase písania tohto príspevku je položka Sacharidy inicializovaná takto:

7   11.5  18
60  70    50

To znamená, že v čase 7 [h], teda 07:00, je prijatých 60 [g] sacharidov. Ďalej v čase 11,5 [h] (napísané ako 11.5 - musí tam byť bodka, nie desatinná čiarka), teda 11:30 je podaných 70 [g] sacharidov, atď.

Nasleduje položka Bolus (manuálny) - to je bolus, ktorý nie je vypočítaný bolus kalkulátorom ale zadávame ho priamo my. Princíp zadávania je rovnaký ako v položke Sacharidy. Bolus (manuálny) je inicializovaný ako

0
0

teda žiadny manuálny bolus. Políčka formulára však nesmú byť prázdne.

Posledná položka je Bolus kalkulátor. Dá sa zapnúť a vypnúť. Globálnym parametrom je čas (doba) zostatkového inzulínu (slúži pre výpočet IOB). Ďalej je možné nastaviť parametre bolus kalkulátora. Začiatočný čas určuje od kedy budú hodnoty parametrov platiť. Bolo by dobré aby prvý začiatočný čas bola 0. Pre prvý čas sa nastavia prvé hodnoty parametrov v poradí, pre druhý čas druhé atď. Opäť rovnaký princíp ako pri predch. položkách formulára.

Veľa šťastia.

MT

27. 4. 2016

Empirický model pre simulátor subjektu s diabetom 1. typu

Cieľom je demonštrovať výpočty bolus kalkulátora pomocou simulácie. Simulovaný je priebeh glykémie. Napríklad počas jedného dňa.

Pre simuláciu potrebujeme matematický model. Mohol by to byť model založený na fyziologických procesoch súvisiacich s metabolizmom glukózy. Také modely sú dostupné v literatúre. Avšak z ich podstaty zodpovedajú akoby priemernému subjektu (človeku s diabetom) a je obtiažne ich prispôsobiť tak aby zodpovedali konkrétnemu subjektu. A mi chceme simulovať konkrétny subjekt, konkrétne bolusy, konkrétne „faktory inzulínovej citlivosti“ a podobne.

V simulátore nepoužijeme model založený na fyziologii. Použijeme iný. Budeme ho nazývať Empirický model. Nevystihuje vnútorné procesy súvisiace s metabolizmom a transportom glukózy. Je jednoduchší. Jeho parametre sú do veľkej miery spojené s pojmami inzulínová citlivosť a sacharidový pomer.

Empirický model

Empirický model sa v základnej štruktúre skladá z dvoch častí. Inzulínový podsystém a sacharidový podsystém. Prvý uvedený modeluje takpovediac efekt inzulínu - jeho výstupom je signál, ktorý reprezentuje priebeh glykémie ak na ňu vplýva len inzulín. Sacharodový podsystém obdobne modeluje efekt sacharidov (prijatých s jedlom) a teda jeho výstupom je signál, ktorý reprezentuje glykémiu pri pôsobení len prijatých sacharidov. Súčet týchto dvoch efektov potom reprezentuje výsledný priebeh glykémie. Schematicky je možné základnú štruktúru modelu znázorniť ako na nasledujúcom obrázku:

Obr. 1: Základná štruktúra empirického modelu.

Rovnice modelu

Úplne presne je možné model vyjadriť v tvare:
$$
\begin{align}
\dot x_{i1}(t) &= - \frac{1}{T_i} x_{i1}(t) + u_i(t) \\
\dot x_{i2}(t) &= - \frac{1}{T_i} x_{i2}(t) + \frac{1}{T_i} K_i x_{i1}(t) \\
y_i(t) &= e\ x_{i2}(t) \\
\dot x_{c1}(t) &= - \frac{1}{T_c} x_{c1}(t) + u_c(t) \\
\dot x_{c2}(t) &= - \frac{1}{T_c} x_{c2}(t) + \frac{1}{T_c} K_c x_{c1}(t) \\
y_c(t) &= e\ x_{c2}(t) \\
G(t) &= G_b + y_c(t) - y_i(t)
\end{align}
$$ kde $G(t)$ [mmol/l] je výstupná (výsledná) glykémia. Signály $x_{i1}(t)$, $x_{i2}(t)$, $x_{c1}(t)$, $x_{c2}(t)$, $y_i(t)$ a $y_c(t)$ sú isté vnútorné signály modelu a symbol $e$ v tomto prípade označuje matematickú konštantu - Eulerove číslo.

Vstupné signály

Vstupmi modelu sú signály $u_i(t)$ [U/min] a $u_c(t)$ [g/min].

Signál $u_i(t)$ je rýchlosť infúzie (podávania) inzulínu do podkožia. Veľmi ľahko je možné tento signál vyjadriť v jednotkách [U/h] súvis s bazálnym inzulínom je hneď zrejmý. Klasický bolus (dávka) inzulínu sa realizuje ako vysoká rýchlosť infúzie inzulínu počas krátkeho času. Teda impulz signálu $u_i(t)$.

Napríklad, nech je dané, že šírka impulzu je 5 minút a cieľom je podať 1 [U] inzulínu. Ak počas 5 minút bude rýchlosť infúzie inzulínu 0,2 [U/min], potom výsledná dávka je 1 [U].

Signál $u_c(t)$ je vzhľadom na jednotky [g/min] tiež rýchlosť. V tomto prípade rýchlosť prísunu sacharidov do organizmu, presnejšie jedla s obsahom sacharidov. Úplne postačuje opäť uvažovať impulz signálu $u_c(t)$.

Napríklad nech impulz má šírku 5 [min] a prijaté množstvo sacharidov je 10 [g]. To zodpovedá rýchlosti (výške impulzu) 2 [g/min]. Smozrejme zvyčajne jeme dlhšie ako 5 minút. Avšak medzi impulzom so šírkou 5 minút a so šírkou 15 minút je z pohľadu simulácie zanedbateľný rozdiel. Iste, impulz v dĺžke trvania napr. 60 minút by už bolo niečo iné.

Inzulínový podsystém

Parametrami inzulínového podsystému sú $K_i$ [mmol/l/U] a $T_i$ [min]. Tieto parametre definujú ako bude vyzerať priebeh glykémie v závislosti od inzulínu. Význam týchto parametrov je možné ukázať na príklade, kde simulujeme podanie bolusu 1 [U]. Viď Obr. 2, kde simulovaný subjekt je pomocou bazálneho inzulínu udržiavaný na, takpovediac, bazálnej glykémii $G_b = 7$ [mmol/l]. Na spodnom grafe Obr. 2 vidíme, že rýchlosť podávania inzulínu je nenulová počas celej simulácie.

Obr. 2: Význam parametrov inzulínového podsystému.

V čase $t=1$ [h] je podaný bolus s veľkosťou 1 [U]. Na priebehu glykémie sa to prejaví poklesom. Po čase sa však glykémia vráti na ustálenú („bazálnu“) hodnotu. Takto v tomto prípade modelujeme efekt inzulínu. Veľkosť maxima poklesu je daná parametrom $K_i = 2,5$ [mmol/l/U] ako je znázornené na vrchnom grafe. Čas maxima poklesu je daná parametrom $T_i = 24$ [min]. Celková doba efektu inzulínu je približne päť násobok hodnoty parametra $T_i$, ako je tiež znázornené na grafe.

Sacharidový podsystém

Parametrami sacharidového podsystému sú $K_c$ [mmol/l/g] a $T_c$ [min]. Tieto parametre definujú ako bude vyzerať priebeh glykémie v závislosti od sacharidov.

Význam týchto parametrov je možné ilustrovať na príklade, kde simulujeme, naozaj len teoreticky, príjem jedla s obsahom 1 [g] sacharidov. Výsledok simulácie je na Obr. 3.

Obr. 3: Význam parametrov sacharidového podsystému.

Rovnako ako na Obr. 2, simulovaný subjekt je v ustálenom stave na hodnote $G_b = 7$ [mmol/l].

V čase $t=1$ [h] je s jedlom prijatý 1 [g] sacharidov. Táto udalosť je reprezentovaná impulzom signálu $u_c(t)$ zobrazenom na spodnom grafe Obr. 3. Na priebehu glykémie sa to prejaví nárastom, pričom hodnota maxima a čas maxima sú dané parametrami $K_c$ a $T_c$. Približná celková doba efektu sacharidov je päť násobok hodnoty $T_c$ ako je znázornené na Obr. 3.

MT

Zostatkový účinok inzulínu – IOB

V príspevku s názvom O niektorých parametroch v bolus kalkulátoroch sme sa nevenovali tzv. aktívnemu inzulínu, presnejšie $IOB$ (z ang. insulin on board), viď Poznámky k Bolus Wizard-u. Tu sa tomuto pojmu budeme venovať.

Skratka IOB znamená, ako už bolo uvedené, Insulin on Board (inzulín „na palube“), čo vyjadruje teoretické množstvo inzulínu od poseldného bolusu (bolusov), ktorého účinok sa ešte neprejavil. Toto množstvo sa určuje na základe veľkosti podaného bolusu, samozrejme, a istej krivky, ktorá charakterizuje takpovediac priebeh spotreby bolusu v čase. Možno tiež povedať, že charakterizuje účinok bolusu v čase, alebo zostávajúci účinok od posledného bolusu. Táto krivka je parametrizovaná časom, po ktorom daný bolus už nemá žiadny účinok. V bolus kalkulátore spoločnosti Medtronic sa táto krivka nazýva „krivka aktívneho inzulínu“ a to čo sme označili ako IOB sa nazýva aktívny inzulín.

V opisoch Bolus Wizard-u sa to neuvádza explicitne, avšak je zrejmé (a logické), že krivka aktívneho inzulínu je daná farmakodynamikou inzulínu. Farmakodynamika vyjadruje glukózový tok spôsobený bolusom inzulínu. Farmakodynamika znázornená ako krivka (funkcia času) je vlastne časový priebeh účinku bolusu. Po podaní bolusu sa účinok zvyšuje, glukózový tok (transport glukózy do buniek) narastá, dosahuje svoje maximum a nakoniec pozvoľna klesá.

Ak by sme integrovali (v čase) tento časový priebeh účinku bolusu inzulínu, výsledok by bolo možné znázorniť krivkou, ktorá má v čase bolusu hodnotu 0 % takpovediac využitého účinku inzulínu a po istom čase by dosiahla konečne 100 % využitého účinku inzulínu. Jednoducho, časový integrál farmakodynamiky. Krivka aktívneho inzulínu je vlastne len preklopenie tohto časového integrálu tak (v zmysle: percento časového integrálu odpočítame od 100 %), že krivka začína na 100 % a končí na 0 %. Pre každý bolus je tak možné určiť jeho vlastnú krivku, kde 100 % je samozrejme veľkosť bolusu v inzulínových jednotkách. Výsledný priebeh IOB [U] je súčtom jednotlivých dielčich kriviek zodpovedajúco rozložených v čase.

Model krivky aktívneho inzulínu

Farmakodynamika rýchlo účinkujúceho inzulínu je znázornená na nasledujúcom obrázku:



Ak priebeh tejto krivky vyjadríme tak, ako sme uviedli v predchádzajúcej časti, teda zostávajúci účinok v čase $t = 0$ je 100 %, a z tohto uberáme s časom úmerne veľkosti hodnoty krivky farmakodynamiky, potom výsledok je znázornený na nasledujúcom obrázku -- krivka označená ako FD. Toto je v princípe krivka aktívneho inzulínu daná farmakodynamikou.



Na obrázku sú tiež znázornené takpovediac namerané krivky aktívneho inzulínu označené ako „pump data“ (pumpa MiniMed Paradigm 522). Tieto boli získané tak, že v pumpe bol zadaný bolus a následne boli v pravidelných intervaloch zaznamenané hodnoty aktívneho inzulínu, ktoré uvádzal Bolus Wizard. S týmito krivkami sme sa už zaoberali v prípevku „Krivka aktívneho inzulínu“. Boli odmerané krivky pre tri rôzne nastavenia parametra „doba aktívneho inzulínu“ (active insulin time), 6 hodín, 4 hodiny a 2 hodiny. Tieto prípady sú na obrázku vyššie odlíšené farebne.

Pre potreby simulácie výpočtov bolus kalkulátora je potrebné mať model krivky IOB. Tu opíšeme model, ktorého cieľom nie je čo najpresnejšie aproximovať namerané alebo odvodené krivky aké boli uvedené vyššie. Model však zohľadňuje zovšeobecnený (a zjednodušený) charakter farmakodynamiky a princíp ako z farmakodynamiky odvodiť krivku IOB (krivku aktívneho inzulínu).

Nech farmakodynamika je reprezentovaná ako impulzná charakteristika dynamického systému. Konkrétne systému 2. rádu s rovnakými časovými konštantami. Integrovaním funkcie impulznej charakteristiky a následne úpravou do výhodného tvaru je možné získať časovú závislosť v tvare $$ \begin{equation} IOB(t) = e^{-\frac{1}{T_i} t} \left( 1 + \frac{1}{T_i} t \right) \times 100 \% \end{equation}$$ kde $IOB(t)$ je množstvo zostávajúceho inzulínu, v tomto prípade v [%], a $T_i$ [min] je jediný parameter -- časová konštanta. Ide o veľmi jednoduchý model, čo je výhodné, a navyše má len jeden parameter. Tento je tiež jednoduché určiť (a ladiť), napríklad ak zavedieme vzťah $$ \begin{equation} T_i = \frac{T_{IOB}}{5} \end{equation}$$ kde $T_{IOB}$ [min] je „doba aktívneho inzulínu“. V tomto prípade je $T_i$ pätinou doby aktívneho inzulínu. Porovnanie výsledných kriviek s dátami získanými s pumpy je na obrázku vyššie.

22. 4. 2016