oref0 a oref1: ako vznikli algoritmy, ktoré dnes dávkujú inzulín v AAPS, iAPS a Trio

V telefónoch tisícok ľudí s diabetom 1. typu dnes po celom svete beží softvér, ktorý priebežne rozhoduje, koľko inzulínu podá inzulínová pumpa. Nevytvorila ho veľká technologická ani medicínska firma. Medzi rokmi 2013 až 2017 ho v Seattli postupne vyvinuli dvaja ľudia — Dana Lewis a Scott Leibrand — najprv pre vlastnú potrebu, neskôr pre celú komunitu ľudí s diabetom. Základný algoritmus dostal názov oref0 a neskôr vznikla jeho rozšírená verzia oref1.

Tento článok nie je detailným technickým rozborom algoritmov. Je skôr príbehom rozhodnutí, ktoré formovali ich dizajn — prečo vznikli práve takto, prečo dodnes tvoria jadro systémov AndroidAPS, iAPS aj Trio a prečo open-source uzavreté slučky ovplyvnili vývoj moderných komerčných closed-loop systémov viac, než si väčšina ľudí uvedomuje.

Motivácia: hlasnejší budík a predikcia

Príbeh sa začal úplne nesúvisiacim problémom. Dana Lewis, pacientka s diabetom 1. typu zo Seattlu, si na jeseň 2013 vytvorila nástroj nazvaný DIYPS, pôvodne preto, aby si zosilnila alarmy svojho CGM senzora — boli príliš tiché na to, aby ju budili zo spánku. Nočná hypoglykémia môže byť smrteľná, a komerčný senzor, za ktorý zaplatila tisíce dolárov, jej nedokázal dostatočne hlasno povedať, že glykémia padá.

So svojím partnerom Scottom Leibrandom, sieťovým inžinierom, postupne pridávali vrstvy. Najprv hlasitejší alarm. Potom vzdialený dohľad. Potom — a tu sa začína zaujímavé — predikciu: jednoduchý algoritmus, ktorý zoberie aktuálnu glykémiu, IOB (insulin on board – aktívny inzulín), COB (carbs on board – aktívne sacharidy) a niekoľko hodín dopredu odhadne, kam smeruje krivka. Ak smeruje do hypoglykémie, upozorní na to. Ak smeruje do hyperglykémie, navrhne dávku inzulínu.

Bol to systém, ktorý mal pomôcť človeku s rozhodovaním sa. Človek bol stále uprostred — DIYPS odporúčal, človek konal.

V tom čase ich tento prístup zásadne ovplyvnil v ďalšom myslení. Algoritmus počítal každých päť minút, používal rovnakú matematiku, akú by pacient robil ručne, a bol transparentný v tom, čo a prečo navrhuje. Tieto tri princípy sa stali základom dizajnu, ktorý prežil dodnes.

Zatvorenie slučky a hnutie #WeAreNotWaiting

V roku 2013 vznikol na konferencii DiabetesMine D-Data ExChange v kalifornskom Stanforde hashtag, ktorý definoval celý nasledujúci vývoj: #WeAreNotWaiting. Pacienti, vývojári a rodičia detí s diabetom 1. typu verejne deklarovali, že nebudú čakať, kým FDA schváli komerčnú uzavretú slučku, ale postavia si vlastné riešenie.

Kľúčový technický prelom prišiel od tretej osoby — Bena Westa, ktorý reverse-engineeroval rádiový komunikačný protokol starších inzulínových púmp Medtronic. Pumpy z čias pred rokom 2013 mali bezpečnostnú dieru: dali sa ovládať na diaľku cez 915 – 866MHz MHz rádio. Pre pacientsku komunitu to bola neoceniteľná zraniteľnosť. Cez túto dieru bolo možné do pumpy posielať príkazy.

V decembri 2014 Lewis a Leibrand spojili Westov prienik do systému s ich predikčným algoritmom a vytvorili uzavretú slučku — vznikol prvý funkčný pacientský uzavretý systém. Hardvér bol pomerne jednoduchý: mini-počítač (Raspberry Pi alebo Intel Edison) s algoritmom, rádiový prevodník na komunikáciu s pumpou a power banka.

Vo februári 2015 sa rozhodli celý projekt otvoriť verejnosti. Vznikol OpenAPS — Open Artificial Pancreas System a spolu s ním vznikol referenčný dizajn OpenAPS Reference Design.

Typická OpenAPS zostava z rokov 2015–2016: Raspberry Pi s power bankou, inzulínová pumpa Medtronic 723 (Paradigm), prijímač Dexcom G4 CGM, hodinky Pebble s aplikáciou Nightscout a CareLink USB stick na rádiovú komunikáciu medzi Raspberry Pi a pumpou. Foto: Chris Hannemann.

Referenčný dizajn oref0

Skôr než zverejnili akýkoľvek kód, Lewis a Leibrand publikovali bezpečnostné princípy. oref0 nie je algoritmus, ktorého primárnym cieľom je byť čo najefektívnejším. Je to algoritmus, ktorého primárnym cieľom je byť bezpečným — a v rámci tejto bezpečnosti čo najefektívnejším.

Referenčný dizajn definoval niekoľko zásad, ktoré sú dodnes základom všetkých systémov vychádzajúcich z OpenAPS.

  • Iba dočasné bazálne rýchlosti (TBR), žiadne podávanie automatických bolusov. Toto bolo zďaleka najdôležitejšie rozhodnutie. Dôvod tkvie v tom, že TBR má vstavanú bezpečnostnú poistku — expiruje. Ak systém stratí spojenie s pumpou, ak softvér spadne alebo ak sa stratí pripojenie k internetu, dočasný bazál po nastavenej dobe (typicky 30 minút) jednoducho skončí a pumpa sa vráti k profilovým bazálnym hodnotám. Žiadny „zaseknutý“ príkaz nikdy nemôže pokračovať v nadmernom dávkovaní. Bolus je naopak okamžitý a nezvratný. Ak by algoritmus halucinoval a vydal príkaz na 10 jednotiek bolusu, žiadne TBR by ich nezachránilo. Z toho dôvodu platí: oref0 nikdy nedáva bolus. Iba zvyšuje a znižuje bazál.
  • Pri zlyhaní sa systém vracia k štandardnému bazálnemu profilu. Ak čokoľvek zlyhá, systém sa nevracia do nejakého „núdzového režimu“ — vracia sa presne k tomu, čo by pacient mal aj bez algoritmu: k svojmu vlastnému bazálnemu profilu. Ide o hlboký bezpečnostný princíp. Najhorším prípadom zlyhania je to, čo by pacient mal aj bez uzavretej slučky.
  • Rovnaká matematika, akú by robil pacient ručne. Oref0 nepoužíva žiadne neurónové siete ani čierne skrinky. Pracuje s rovnakými vzorcami, ktoré sa učí každý diabetik na začiatku — IOB cez exponenciálny model rozpadu, korekčný faktor cez ISF, COB ako odhad zvyšných sacharidov v krvi. Ak sa niečo pokazí, pacient (alebo jeho lekár) si to vie ručne prepočítať.
  • Transparentnosť. Každé rozhodnutie algoritmu je logované, vysvetliteľné a má číselné odôvodnenie. Ak oref0 nastaví TBR 1,5 j/h, presne sa dá zistiť, ktoré vstupy a aké výpočty k tomu viedli.

Tieto princípy formovali oref0. Z toho vyplýva, že oref0 má dodnes viacero „obmedzení“, ktoré nie sú obmedzeniami z neschopnosti — sú zámerné z dôvodu bezpečnosti.

Oref0 sa rozširuje: AMA a Autosens

Keď sa OpenAPS dostal do rúk komunity, prišli ďalšie rozšírenia. Prvými veľkými rozšíreniami oref0 boli AMA a Autosens.

AMA (Advanced Meal Assist), koniec roku 2016. Pred AMA bol oref0 striktne reaktívny — reagoval na to, čo sa už dialo s glykémiou. AMA priniesol predikciu absorpcie sacharidov: ak používateľ zadal 50 g sacharidov, oref0 začal predvídať, kedy sa budú vstrebávať, a podľa toho upravoval bazál preventívne. Stále len cez TBR, stále s rovnakými bezpečnostnými poistkami. Ale výrazne efektívnejšie pri jedlách.

Autosens, dostupný od roku 2016. Autosens bol prvý serióznejší pokus o adaptáciu profilu v reálnom čase. Citlivosť pacienta na inzulín sa mení — ráno je iná ako večer, počas menštruácie iná ako mimo nej, pri infekcii iná ako v zdraví. Autosens analyzuje posledných 8 až 24 hodín dát glykémie a aktívneho inzulínu a ak vidí, že glykémia padá rýchlejšie, než predikcia očakávala, znižuje ISF a bazál. Ak vidí opačný efekt, naopak ich zvyšuje.

Autosens znamenal koncepčnú revolúciu v tom zmysle, že algoritmus po prvý raz prestal slepo veriť nastavenému profilu. Profil je iba základ. Telo lepšie vie, čo sa s ním deje.

V roku 2018 prezentoval tím v zložení Lewis, Street, Leibrand a Phatak na konferencii American Diabetes Association poster s analýzou, podľa ktorej Autosens spoľahlivo deteguje zmeny citlivosti — a komunita získala empirický dôkaz, že adaptívne algoritmy v praxi fungujú.

Limity oref0 a prečo bolo potrebné niečo viac

Po troch rokoch reálneho používania oref0 (s rozšíreniami AMA a Autosens) komunita identifikovala jeho limity.

Limit rýchlosti reakcie po jedle. Predstavme si stredne veľké jedlo bez riadneho bolusu k jedlu — alebo s podhodnoteným odhadom sacharidov. Glykémia začne stúpať. Oref0 vidí, že stúpa, a chce dať viac inzulínu. Ale vie len zvýšiť bazál. Maximálny bazál je pritom obmedzený, typicky na štvornásobok profilového bazálu. Aj keby algoritmus dával túto maximálnu dávku celú hodinu, ide o jednu až dve jednotky inzulínu navyše. Pri jedle so 60 g sacharidami to nestačí.

Limit dočasného bazálu je pomalý spôsob doručenia. Aj keď oref0 nastaví TBR 4 j/h, pumpa to dávkuje rovnomerne počas piatich minút ako mikrokvapky. Inzulín sa následne absorbuje ešte pomalšie — najvyšší účinok dosahuje 60 až 90 minút po dávke. Pri rýchlo rastúcej postprandiálnej glykémii ide o stratu 30 a viac minút.

Limit oref0 je závislý na presnom zadaní sacharidov. AMA funguje len vtedy, keď algoritmus vie, že pacient jedol. Ak používateľ zabudne zadať sacharidy alebo ich zadá nesprávne, AMA sa „stratí“ a vráti sa k základnej reaktívnej logike.

V tomto bode sa zrodil oref1.

Oref1 (2017): tri zmeny dizajnového princípu

V apríli 2017 Dana Lewis predstavila oref1. Nešlo iba o rozšírenie — bolo to zámerné porušenie pôvodného referenčného dizajnu v jednom kľúčovom bode. Práve preto sa volá oref1, a nie napríklad oref0.6.

SMB (Super Micro Bolus)

Hlavný rozdiel medzi oref0 a oref1 je v tom, že oref1 používa malé „supermikrobolusy“ inzulínu pri jedlách, aby rýchlejšie (ale bezpečne) podal inzulín potrebný na reakciu na rast glykémie po jedle.

Pri potrebe 0,5 jednotky navyše počas piatich minút by oref0 nastavil dočasnú bazálnu rýchlosť na 6 j/h na 30 minút. Oref1 podá 0,5 j inzulínu okamžite — a aby kompenzoval tento posun, súčasne nastaví dlhú nulovú bazálnu rýchlosť (TBR 0 j/h).

Ide o zásadný rozdiel. Bolus má fyzikálnu výhodu rýchlejšej absorpcie (najmä v kombinácii s rýchlejšími inzulínmi typu Fiasp či Lyumjev) a algoritmus sa vie postprandiálne stupňovať prudšie. Ale porušuje pôvodný princíp „iba TBR“.

Nulový dočasný bazál ako bezpečnostná protiváha

Aby Lewis a Leibrand toto porušenie obhájili, navrhli kompenzáciu, ktorá je geniálna vo svojej jednoduchosti. Pred každým SMB sa nastaví dostatočne dlhá nulová bazálna rýchlosť — TBR 0 j/h — tak dlho, ak by sa aj všetko následne pokazilo, ak aj keby pacient prestal jesť po prvom súste a aj ak by systém stratil spojenie s pumpou — glykémia by sa nakoniec sama vrátila do bezpečného rozsahu bez ďalšieho zásahu.

Inak povedané: oref1 dáva bolus iba vtedy, keď si môže byť istý, že ak by toto bola posledná akcia, ktorú vykoná, pacient skončí bezpečne. Nie nutne najlepšie, ale bezpečne.

Filozofia za tým je hlboko premyslená. Bolus je sám osebe nezvratný — ale ak je vždy podávaný v kontexte aktívneho nulového dočasného bazálu, ktorý by sám stačil dostať pacienta do bezpečia, dynamicky sa stáva zvratným. Prebytočný inzulín sa „odoberie“ cez nulový dočasný bazál v ďalších hodinách.

UAM (Unannounced Meals) – neohlásené jedlá

Treťou novinkou oref1 bola schopnosť detegovať jedlo, ktoré pacient nezadal. Algoritmus sleduje, ako rýchlo glykémia stúpa, a porovnáva to s tým, koľko by mala stúpať čisto na základe aktívneho inzulínu a profilového bazálu. Ak vidí neočakávaný rast, predpokladá „neohlásené sacharidy“ (alebo neohlásený stres, adrenalín, čokoľvek iné) a začne dávkovať SMB aj bez vstupu od používateľa.

Šlo o filozofický posun — oref1 prestal slepo veriť, že pacient všetko nahlási. Ľudia zabúdajú zadávať jedlo a podhodnocujú množstvo sacharidov. Adolescenti jedia tajne. Telo niekedy reaguje na faktory, ktoré sa zadať „nedajú“. UAM rieši aj tento problém.

Bezpečnostné kontroly oref1

To, čo z oref1 robí algoritmus, ktorému sa dá dôverovať aj napriek používaniu bolusov, je niekoľko vrstiev kontrol pred každou dávkou.

Oref1 najprv overí hladinu inzulínu v zásobníku pumpy, potom vykoná kontrolu histórie liečby, vypočíta potrebnú dávku (pričom si poznamená, akú hladinu inzulínu by zásobník pumpy mal mať, keď sa dávka podá), a následne skontroluje stav pumpy a zásobník znova bezprostredne pred dávkovaním. Tento postup chráni pred situáciami, kedy by sa zastaraná rekomendácia vykonala viac než raz.

Každý SMB je obmedzený na zlomok inzulínu, ktorý je podľa aktuálnych informácií potrebný. Pôvodná OpenAPS špecifikácia z roku 2017 stanovila tento limit na 1/3 — historicky kvôli scenáru dvoch súčasne bežiacich mini počítačov, ktoré by mohli takmer simultánne vydať bolus. Moderné implementácie (AAPS, iAPS, Trio) tento parameter nazývajú SMB delivery ratio a používajú hodnotu 0,5, teda 50 % vypočítanej dávky. Posun bol možný preto, že súčasné systémy bežia výlučne na jednom zariadení spárovanom s pumpou cez Bluetooth, čím sa scenár simultánneho spojenia vylučuje.

SMB funkcie oref1 nie sú aktívne automaticky — sú riadené sériou nastavení, ktoré používateľ explicitne zapína. Najkonzervatívnejšia konfigurácia povoľuje SMB iba pokiaľ sú prítomné sacharidy — teda počas trávenia jedla. V tomto režime sa po vstrebaní sacharidov oref1 správa ako oref0 a riadi glykémiu výhradne cez TBR.

Od OpenAPS k AAPS, iAPS a Trio

V tomto bode sa príbeh prestáva týkať jedného projektu a stáva sa príbehom celého ekosystému.

AndroidAPS (AAPS) vznikol ako Androidový port OpenAPS. Namiesto Raspberry Pi s rádiom je algoritmus v telefóne, ktorý ovláda pumpy cez Bluetooth alebo rádiový prevodník – napr. OrangeLink alebo RileyLink. Zakladateľ — Miloš Kozák z Česka vzal pôvodný JavaScript kód oref0 a oref1 a zachoval ho takmer identický s pôvodným OpenAPS. AAPS používa rovnaký algoritmus, len s iným hardvérovým rozhraním a Android UI nad ním.

iAPS, Trio a Loop na iOS. Loop má historicky vlastný algoritmus, nezaložený na oref. Ale iAPS a Trio je iOS port priamo oref kódu — Swift wrapper okolo pôvodného JavaScript kódu, takže algoritmus je opäť ten istý.

Spoločným menovateľom všetkých týchto systémov je: ten istý oref0 ako bezpečný základ, ten istý oref1 pre SMB a UAM, tie isté princípy referenčného dizajnu. Líšia sa hardvérom, používateľským rozhraním a podporou rôznych púmp, ale v jadre rozhoduje rovnaký kód napísaný v rokoch 2014 až 2017.

Uzavretá slučka AAPS v roku 2026. Žiaden mini-počítač a prevodník. Stačí smartfón s aplikáciou AAPS, ktorá cez Bluetooth komunikuje priamo s inzulínovou pumpou a CGM.

Čo prišlo po oref1: DynamicISF a ďalšie vrstvy

V posledných rokoch (od roku 2021) vzniká nová generácia rozšírení nad oref1. DynamicISF je najznámejší z nich. Vychádza z myšlienky, že ISF by sa mal dynamicky meniť podľa aktuálnej glykémie a pacientovho TDD (celkovej dennej dávky). Pri vysokej glykémii je telo rezistentnejšie na inzulín a treba viac. Pri nízkej naopak – potreba inzulínu je menšia.

DynamicISF nenahrádza oref0 ani oref1 — vrství sa nad nimi. Algoritmus rozhodovania je stále oref. DynamicISF len mení vstupné parametre v reálnom čase.

Toto je elegantné z dvoch dôvodov. Po prvé, neporušuje sa overený bezpečnostný mechanizmus oref. Po druhé, komunita môže experimentovať s adaptívnymi vrstvami bez toho, aby musela prepisovať jadro.

Prečo to celé funguje: tri lekcie z evolúcie oref

Z desiatich rokov vývoja oref0 a oref1 sa dajú vyvodiť tri princípy, ktoré ekosystém držia pohromade — a ktoré sú dôvodom, prečo dnes DIY systémy obstoja v porovnaní s komerčnými.

Bezpečnosť pred efektivitou. Referenčný dizajn z roku 2015 určil hierarchiu, ktorá platí dodnes: bezpečnosť má prednosť pred výkonom, pred pohodlím aj pred eleganciou. Každé následné rozšírenie — AMA, Autosens, SMB, UAM, DynamicISF — muselo túto hierarchiu rešpektovať. SMB v oref1 napríklad porušilo pôvodný princíp „iba TBR“, no len preto, že si dokázalo vybudovať vlastnú bezpečnostnú protiváhu nulovým dočasným bazálom. Empirický základ tohto prístupu poskytla už v roku 2016 publikácia Lewis, Leibranda a komunity #OpenAPS v Journal of Diabetes Science and Technology — survey-štúdia Real-World Use of Open Source Artificial Pancreas Systems (DOI 10.1177/1932296816665635). U 18 respondentov z prvých 40 používateľov klesol self-reportovaný medián HbA1c zo 7,1 % na 6,2 %, medián time-in-range (4,4 – 10,0 mmol/L) stúpol z 58 % na 81 %, a 17 z 18 respondentov uviedlo zlepšenie kvality spánku. Autori v limitáciách výslovne pripustili, že išlo o malú, vysoko motivovanú vzorku a nimi reportované dáta — nešlo o kontrolovanú štúdiu. V kontexte roku 2016, kedy ešte neexistovali porovnateľné publikované dáta z komerčných uzavretých systémov, však tieto čísla poskytli komunite aj akademickej obci prvý empirický signál, že DIY automatizácia môže byť pri správne nastavených bezpečnostných limitoch nielen efektívna, ale aj bezpečná.

Open-source ako forma regulácie. V uzavretom komerčnom systéme jeden tím vyvíja kód a ten istý tím kontroluje sám seba — externý dohľad poskytuje len regulátor pri schvaľovaní. OpenAPS, AAPS, iAPS aj Trio fungujú opačne: kód je verejný, auditovaný stovkami vývojárov a používaný tisíckami pacientov, ktorí v reálnom čase reportujú nezhody medzi predikciou a skutočnosťou. Bezpečnostné chyby sa preto nachádzajú a opravujú transparentne, často v priebehu dní. To, čo regulátor dosahuje prísnymi schvaľovacími procesmi pred uvedením na trh, dosahuje komunita radikálnou transparentnosťou počas používania — iný mechanizmus, no rovnaký účel.

Komerčný svet: OpenAPS predbehol a určil trend

FDA schválila prvú komerčnú uzavretú slučku SmartGuard s pumpou Medtronic MiniMed 670G v septembri 2016, takmer dva roky po tom, čo Lewis a Leibrand predstavili svoju uzavretú slučku v decembri 2014.

SmartGuard na 670G podporoval iba úpravu bazálu, podobne ako oref0 — žiadne automatické korekčné bolusy. Tandem Control-IQ (FDA december 2019) bol prvým komerčne schváleným systémom s automatickými korekčnými bolusmi — približne dva a pol roka po tom, čo oref1 priniesol SMB do DIY komunity. Medtronic 780G s uzavretou slučkou SmartGuard a auto-korekciami nasledoval v roku 2023.

Oba systémy však majú konštrukčné obmedzenia, ktoré DIY systémy nemajú:

Control-IQ dáva auto-korekčný bolus iba vtedy, keď je predikovaná glykémia o 30 minút nad 10,0 mmol/L, maximálne raz za hodinu, a doručí 60 % vypočítanej korekčnej dávky s fixným cieľom 6,1 mmol/L. Cieľ 6,1 mmol/L nie je používateľsky meniteľný počas behu Control-IQ. Čas trvania účinku inzulínu je fixne nastavený na päť hodín a nedá sa zmeniť. V režime spánku sa auto-korekčné bolusy úplne vypínajú a algoritmus sa spolieha iba na úpravu bazálu.

MiniMed 780G ponúka výber medzi tromi pevnými cieľmi auto-bazálu — 5,5, 6,1 alebo 6,7 mmol/L — bez možnosti zadať vlastnú hodnotu. Čas trvania účinku inzulínu má rozsah 2 až 5 hodín, no odporúčané nastavenie pre dosiahnutie najlepšieho TIR sú 2 hodiny v kombinácii s cieľom 5,5 mmol/L. Auto-korekcie sa spúšťajú až keď je automatický bazál na maxime a glykémia stúpne nad 6,7 mmol/L. Pri jedlách typu vysoký tuk + vysoké sacharidy systém nepodporuje rozšírený bolus so SmartGuardom.

Spoločnou črtou oboch komerčných systémov je uzavretý algoritmus: pacient nevie zistiť, prečo bola v konkrétnom okamihu doručená konkrétna dávka. V AAPS, iAPS aj Trio je každé rozhodnutie logované s úplným číselným odôvodnením.

Záver

Oref0 a oref1 nie sú len algoritmy. Sú to dve odlišné odpovede na rovnakú otázku — ako bezpečne automatizovať dávkovanie inzulínu — napísané v dekáde, kedy pacientska komunita preukázala, že vie vyriešiť problém, ktorý komerčné firmy dlhodobo neriešili.

Keď dnes používateľ spustí AAPS, Trio alebo iAPS, beží v nich kód, ktorého základné princípy zostali nezmenené od roku 2015. Pridali sa vrstvy — AMA, Autosens, SMB, UAM, DynamicISF, AutoISF, automatizácie — ale jadro ostalo rovnaké: rovnaká matematika, akú by pacient robil ručne, transparentne, a vždy s návratom k nastavenej bazálnej dávke ako k núdzovému riešeniu v prípade zlyhania.

Pacientska komunita preukázala, že bezpečná a efektívna uzavretá slučka nemusí byť čiernou skrinkou — a že transparentnosť je rovnocennou formou bezpečnosti, akou je regulácia.


by

Tags: