Menu Zavřít

Jak odhalit hrozbu slepoty či Alzheimera? Řešení nabízí diagnostika od českého Channel Labu, jeho nástroj Aireen proplácí už i pojišťovny

11. 4. 2025
Doba čtení: 6 minut
Aireen dokáže včas odhalit řadu chronických onemocnění
Autor: Channel Lab
  • Česká inovační technologická skupina Channel Lab stojí v přední linii revoluce v oblasti precizní medicíny s využitím umělé inteligence
  • Její šéf David Navrátil se o zmíněný obor začal zajímat v důsledku onemocnění svého syna, a to ve snaze najít rychlejší odpovědi na otázky, které tehdy řešil se svou manželkou
  • Následně podnikání zaměřil právě na využití umělé inteligence, která podle něj poskytuje rychlejší, přesnější a dostupnější diagnostiku. Věří, že právě to umožní lékařům věnovat více času pacientům místo rutinní administrativy
  • AI screening Aireen dokáže zachytit i drobné změny na sítnici, a odhalit tak řadu chronických onemocnění, jež mohou způsobit slepotu. Jde o první model AI v Česku, jehož diagnostiku hradí zdravotní pojišťovny

Problémů ve zdravotnictví přibývá, počty lékařů, sestřiček a dalšího personálu se však rozšiřují o poznání pomaleji – pakliže vůbec. Stejně tak navíc roste i počet pacientů, což jde ruku v ruce s tím, jak zdejší populace stárne. 

Pokud si dá člověk tyto jednoduché počty dohromady, vyjde mu, že bez rychlé akce hrozí dramatický pokles kvality zdravotní péče. Což je přirozeně nepřípustné. Naštěstí existuje řešení, a to v podobě umělé inteligence (AI). Právě s jejím přispěním totiž mohou experti na precizní medicínu a automatizovanou diagnostiku udržet kvalitu i dostupnost odborné péče na současné úrovni a zajistit včasnou detekci závažných nemocí.

Outstream Placeholder

Pokud se potenciál AI ve zdravotnictví správně uchopí, dojde k obrovské úspoře času pro lékaře i zdravotnický personál. Moderní diagnostika s pomocí AI a genetické analýzy umožní spolu s lékaři vytvářet plány léčby a prevence na míru pro každého pacienta. A právě na tom pracuje česká inovační technologická skupina Channel Lab, která spojuje odborníky na umělou inteligenci, medicínu a vývoj softwaru.

Pod vedením jejího zakladatele a CEO Davida Navrátila společně vyvíjejí nové AI systémy právě pro přesnější diagnostiku. „Naším cílem je aktivně prodlužovat zdravý život pomocí pokročilých technologií a precizní medicíny, urychlit přechod k prediktivní péči v Česku a později i ve světě. Zároveň nechceme, aby naše nástroje byly dostupné jen pro horních deset tisíc – například náš AI screening zraku s Aireen v ordinacích diabetologů je proplácen zdravotními pojišťovnami,“ popisuje své záměry Navrátil.

Nový směr podnikání

Zakladatel Channel Labu je technologický inovátor, který má z minulosti s umělou inteligencí zkušenosti mimo jiné jako investor ve firmě Quantasoft, jež se zabývá také biometrií a počítačovým viděním. V kombinaci oborů diagnostiky a technologií tak rozhodně není žádným nováčkem.

Do světa medicíny jako takové nicméně naplno pronikl až před několika lety, kdy přišel na svět jeho syn, který musel ihned po narození podstoupit transplantaci. „To byl moment, kdy jsem se rozhodl, že chci změnit směr svého podnikání. Zdravotnictví stále vnímám jako oblast, kde můžu nejlépe pomáhat. Syn je dnes je díky moderní medicíně v pořádku, a když se dívám zpětně, tak vidím, že to bylo dobré rozhodnutí,“ vypráví o své cestě k diagnostice v medicíně Navrátil.

Pan doktor-hologram vás za okamžik přijme. Američtí lékaři testují nový systém komunikace, který má pacientům přinést příjemnější vyšetření
Přečtěte si také:

Pan doktor-hologram vás za okamžik přijme. Američtí lékaři testují nový systém komunikace, který má pacientům přinést příjemnější vyšetření

Obor, který si vybral, ale ani zdaleka není z nejdostupnějších. Vývoj a klinické testování AI produktů jsou náročné jak časově, tak právě i finančně. Jeho podnikání „spolklo“ již vyšší desítky milionů korun. Zatím. „Naštěstí máme řadu investorů, k nimž patří například WOOD & Company, Precise Control Petra Kociána nebo deep tech fond Tensor Ventures. Ti všichni vidí v tomto segmentu velký potenciál a zároveň je toto téma velmi zajímá. Velmi tomu také pomohla úspěšná certifikace technologie Aireen a její nasazení do zdravotnických zařízení,“ dodává Navrátil.

Jak odhalit hrozbu vážných chorob

Samotnou skupinu Channel Lab založil Navrátil v roce 2020, s Aireen nicméně vstoupil na trh již o dva roky dříve, přičemž dodnes jde o jeden ze tří klíčových produktů jeho firmy. Těmi dalšími jsou Neurona Lab a aplikace Molecula.

Řešení Aireen využívá analýzu digitálních snímků oční sítnice s pomocí AI k neinvazivnímu a bezbolestnému screeningu, díky čemuž tak dokáže během několika vteřin diagnostikovat třeba věkem podmíněnou makulární degeneraci či diabetickou retinopatii. „To jsou dvě závažná onemocnění očí, která mají v české i světové populaci velkou prevalenci a mohou vést až ke ztrátě zraku. Díky nasazení AI lze za stejnou dobu vyšetřit více pacientů než standardní metodou,“ doplňuje Navrátil.

Stejně tak umí AI odhalit řadu nemocí již v raném stádiu, kdy ho lidské oči nebo dosavadní nástroje často nezachytí, a velmi přesně předpovídat progresi. To samozřejmě zjednodušuje léčbu a nežádoucímu vývoji zabránit.

Dělají něco jako „Google Maps pro buňky“. Do biotechnologického startupu QurieGen nyní investují i čeští Tensor Ventures
Přečtěte si také:

Dělají něco jako „Google Maps pro buňky“. Do biotechnologického startupu QurieGen nyní investují i čeští Tensor Ventures

V rámci Neurona Lab pak vznikají tři další řešení. „Zaměřujeme se na včasnou detekci kognitivních poruch a diagnostiku neurodegenerativních onemocnění, včetně Alzheimerovy nemoci s využitím AI,“ uvádí Navrátil s tím, že prvním z nich je mobilní aplikace Neurona VOX, která z hlasu uživatele rozpozná rizikové příznaky. 

Dále se jedná o software Neurona PET, jenž díky fúzi vyšetření magnetické rezonance (MR) a pozitronové emisní tomografie (PET-CT) umí určit množství beta-amyloidu v mozku. Zároveň jej dokáže lokalizovat, což je důležité pro přesnou diagnózu a případnou léčbu. Třetím řešením je pak Neurona ARIA, která rozpozná s pomocí umělé inteligence nežádoucí účinky biologické léčby Alzheimerovy choroby z obrazu MR.

Molecula před spuštěním

Dalším klíčovým produktem Channel Labu je aplikace Molecula. „Ta je právě před spuštěním. Nyní prochází finálním testováním a již brzy ji uvedeme na trh, takže bude doufám i ve vašem telefonu,“ komentuje s úsměvem příští plány Navrátil.

Jde o aplikaci zaměřenou na optimalizaci účinnosti léků a doplňků stravy, která po načtení čárového kódu upozorní uživatele na vzájemné interakce jednotlivých léčiv (s využitím lékové databáze SÚKL) a následně jej díky certifikovanému algoritmu od DrugAgency dokáže varovat před rizikovými kombinacemi, k nimž patří třeba Paralen či Ibuprofen. Současně si v ní může uživatel rovněž nastavit připomínky k dávkování léků: „Pro lepší lékový management v rodině také budou moci lidé využít rodinné účty pro sdílené plány léčby. V jedné aplikaci pak přehledně uvidí údaje o všech lécích a výživových doplňcích užívaných v celé rodině.“

Léky, defibrilátory, a dokonce i orgány. Zdravotnická zařízení využívají čím dál tím víc k urychlení pomoci pacientům drony
Přečtěte si také:

Léky, defibrilátory, a dokonce i orgány. Zdravotnická zařízení využívají čím dál tím víc k urychlení pomoci pacientům drony

Kromě toho vedení Channel Labu uvažuje o možnosti rozšířit screening s Aireen i na další nemoci. „Zde jsme v poměrně rané fázi příprav a pretestů, ale zatím ještě stoprocentně nemůžu říct, že to dopadne. Mohu jen prozradit, že máme velmi dobré výsledky v oblasti kardiovaskulárních onemocnění. Tam vidíme i velkou budoucnost,“ zdůrazňuje Navrátil.

bitcoin_smenarna

Partneři a náročná certifikace

Jednou z činností, kterou v Channel Labu realizují, ale která možná není na první pohled tak zřetelná, je vytváření expertních týmů, jež propojují odborníky z oblasti vědy, medicíny, technologií a byznysu. „I proto jsou naše produkty vždy potvrzeny klinickou zkouškou a vysokým stupněm certifikace MDR (minimálně třídy IIb), díky čemuž mohou hned po zhodnocení dat přinést diagnózu člověka – nikoliv jen doporučení pro lékaře, které on musí dále ověřit,“ odkrývá zákulisí vývoje Navrátil.

Samotný proces certifikace je však podle něj velice zevrubný, takže ne zřídkakdy zabere i celé roky: „Na druhou stranu, i když je neskutečně drahý a časově náročný, je zcela nutný. Koneckonců vytváříme řešení, která mají co do činění s lidským zdravím. A proto musí být perfektní,“ míní šéf Channel Labu s tím, že při vývoji nových produktů pomáhají jeho týmu nejlepší lékaři z oboru. „Spolupracujeme s mnoha partnery – k těm nejvýznamnějším patří Ústřední vojenská nemocnice Praha, Fakultní nemocnice Motol nebo Nadační fond Alzheimer. A zapojení jsme i do České asociace umělé inteligence,“ uzavírá.

  • Našli jste v článku chybu?
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »