Full-stack
reagiraj.ba: procjena rizika od raka pluća za EU projekat LIFEGATE
Više od 2.300 završenih procjena u prvim sedmicama nakon pokretanja: provjera rizika od raka pluća za SKB Mostar i EU projekat LIFEGATE, izgrađena uz React, Node.js i MongoDB.
- Klijent
- SKB Mostar (Sveučilišna klinička bolnica Mostar), u okviru EU Interreg IPA projekta LIFEGATE
- Isporučio
- ANODA
- Godina
- 2026
- Uloga
- Tehnički partner za web aplikaciju (aktivnost A1.2): platforma, admin panel i analitika
- Jezik proizvoda
- Bosanski / hrvatski


Razvijeno u okviru projekta LIFEGATE, koji Evropska unija sufinansira kroz program Interreg VI-A IPA Hrvatska, Bosna i Hercegovina, Crna Gora 2021. do 2027.
Ukratko
| Klijent | SKB Mostar (Sveučilišna klinička bolnica Mostar) |
|---|---|
| Program | Interreg VI-A IPA Hrvatska, Bosna i Hercegovina, Crna Gora 2021. do 2027., sufinansira Evropska unija |
| Projekat | LIFEGATE (HR-BA-ME00489) |
| Moja uloga | Tehnički partner za web aplikaciju (aktivnost A1.2): platforma, admin panel i analitika. |
| Vremenski okvir | Razvoj od decembra 2025. do maja 2026., javno pokretanje 11. augusta 2026. |
| Platforma | Javna web aplikacija, API i admin panel |
| Korisnici | Šira javnost, s posebnim fokusom na starije korisnike; bolnički tim u admin panelu |
| Status | Aktivno |
Problem
Rak pluća se često otkrije kasno, kada su mogućnosti liječenja ograničene. Projektu LIFEGATE trebao je jednostavan javni alat koji ljudima pomaže da razumiju vlastiti rizik i podstiče one s povišenim rizikom da se jave ljekaru, i to u regiji u kojoj su mnogi kojima je alat najpotrebniji stariji i nenavikli na online obrasce.
Tok korištenja, korak po korak
Besplatno, anonimno i traje oko dvije minute. Svaki korak osmišljen je s posebnom pažnjom prema starijim korisnicima: velike kartice s odgovorima, kratki koraci i jednostavan jezik.
- 1

Početna stranica
Šta je procjena, koliko traje i da je anonimna.
- 2

Osnovni podaci
Dob, kanton, grad, težina i visina (BMI se računa automatski), lična i porodična anamneza.
- 3

Pušenje i simptomi
Pušački status, godine pušenja i broj cigareta dnevno (računaju se kutija-godine), simptomi i bolesti pluća.
- 4

Okruženje
Životno okruženje i izloženost na radnom mjestu, npr. azbestu.
- 5

Rezultat
Nivo rizika s jasnom preporukom i prepoznatim faktorima.
- 6

Gdje se javiti
Osobe s povišenim rizikom dobijaju najbližu lokaciju za pulmološki pregled u svom području i kod za upućivanje koji se provjerava u ustanovi.
Snimci ekrana iz produkcije. Odgovori su primjeri bez ličnih podataka i ništa nije poslano. Klinički bodovi i podaci o ljekarima su sakriveni.
Algoritam bodovanja
Model je definisan zajedno s kliničkim stručnjacima na projektu; moj zadatak bio je da ga implementiram tačno, testiram na graničnim slučajevima i zadržim ga objašnjivim.
Simptomatski / hitno: potrebna klinička procjena
Sigurnosno pravilo, a ne skrining bodovanje. Iskašljavanje krvi ili više ozbiljnih simptoma istovremeno.
Aditivni skrining skor
Bodovi po domenama: dob, pušenje (status i kutija-godine), bolesti pluća, rak pluća u porodici, lična historija raka, azbest, druga izloženost na radnom mjestu, životno okruženje, pasivno pušenje.
Provjera pojačivača
20 ili više kutija-godina uz barem jedan snažan pojačivač (azbest, HOBP, rak pluća kod rodbine u prvom koljenu ili ranije preboljeli rak) znači najmanje Visok rizik.
| Nivo | Bodovi | Preporuka |
|---|---|---|
| Nizak | 0 do 7 bodova | Edukacija, prestanak pušenja, bez rutinskog skrininga |
| Umjeren | 8 do 15 bodova | Razmotriti RTG grudnog koša, uz podršku AI-ja gdje je dostupna, i/ili niskodozni CT (LDCT) u skladu sa smjernicama i individualnim rizikom |
| Visok | 16 bodova ili više | Skrining RTG-om uz AI i niskodoznim CT-om (LDCT), te pulmološki pregled |
| Hitno | Alarmantni simptomi | Potrebna klinička procjena, bez obzira na broj bodova |
Kutija-godine
Kutija-godine = (broj cigareta dnevno ÷ 20) × godine pušenja
Jedna kutija dnevno tokom 20 godina daje 20 kutija-godina, kao i dvije kutije dnevno tokom 10 godina. Aplikacija to računa iz odgovora, tako da niko ne mora računati sam.
Arhitektura
Browser
React SPA na reagiraj.ba
Admin panel
admin.reagiraj.ba, autentifikacija putem kolačića
API
Node.js i Express na api.reagiraj.ba
Baza podataka
MongoDB Atlas
Analitika
GTM i GA4, isključivo u browseru
Nivo rizika nikada ne napušta aplikaciju
Model podataka
| Grupa polja | Primjeri | Zašto postoji |
|---|---|---|
| Demografija | Spol, dob, kanton, grad | Faktori rizika i geografska analitika za bolnički tim |
| Tjelesne mjere i BMI | Težina, visina, izračunati BMI | Prikazuje se u rezultatu i koristi u analitici |
| Pušenje i kutija-godine | Status, godine pušenja, broj cigareta dnevno, izračunate kutija-godine | Najjači faktor rizika u modelu |
| Simptomi i anamneza | Simptomi, bolesti pluća, lična i porodična anamneza | Sigurnosno pravilo i skrining skor |
| Izloženost | Životno okruženje, azbest, izloženost na radnom mjestu | Okolišni i profesionalni faktori rizika |
| Rezultat | Bodovi, nivo, prepoznati faktori, preporuka | Ono što osoba vidi i što klinika može provjeriti |
| Upućivanje | Kod za upućivanje | Provjera rezultata u ustanovi |
| Privatnost | Hash IP adrese, oznaka za isključenje iz analitike | Zaštita od zloupotrebe bez čuvanja IP adresa i čista statistika bez testnih unosa |
Prijevodi se uređuju u admin panelu, tako da bolnički tim može mijenjati tekstove bez novog izdanja. Pristankom na kolačiće upravlja se kroz Google Consent Mode: Cookiebot se može uključiti iz admin panela, a podrazumijevano se koristi ugrađeni baner za kolačiće.
Admin panel
Bolnički tim radi u admin panelu sa pet sekcija: Kontrolna ploča, Analitika, Aplikacije, Prijevodi i Postavke. Analitički prikazi pokrivaju demografiju, geografsku raspodjelu, raspodjelu rizika, analizu međusobnog odnosa faktora i dnevni trend.
Završeno
1.234
Danas
56
Visok ili hitan
28%
Raspodjela rizika
- Nizak: 38%
- Umjeren: 34%
- Visok: 21%
- Hitno: 7%
Po kantonima
- Kanton A
- Kanton B
- Kanton C
- Kanton D
Dnevni trend
Mjerenje s pažnjom
Budući da je ovo zdravstveni alat, analitiku sam osmislio oko jednog pravila: ništa o zdravlju osobe ne smije napustiti aplikaciju.
| Odluka | Zašto |
|---|---|
| Nivo rizika se nikada ne šalje u analitiku | GA4 zna da je procjena završena, ali nikada ne zna kakav je bio rezultat |
| Koraci se prate iz koda aplikacije, a ne iz HTML-a stranice | SPA bez promjene URL-a zahtijeva da se eventi šalju iz koda |
| IP adrese se čuvaju samo kao hash | Zaštita od zloupotrebe bez čuvanja ličnih podataka |
| Testni unosi se mogu isključiti | Statistika ostaje čista za bolnički tim i projektne izvještaje |
| Bez oglašivačkih profila | Ništa o zdravlju osobe ne dijeli se ni s jednom trećom stranom. |
Rezultati
Podaci iz projektnih izvještaja od 27. augusta i 10. septembra 2026.
2.300+
završenih procjena u prvim sedmicama nakon pokretanja
~30%
procijenjeno kao visok ili hitan rizik
11.000+
posjeta
- decembar 2025.Početak razvoja
- maj 2026.Platforma isporučena
- juli 2026.Analitika i provjera privatnosti
- 11. august 2026.Javno pokretanje
- septembar 2026.2.300+ završenih procjena
Šta sam naučio
- Implementirati klinički model znači implementirati ga tačno i provjerljivo: svako pravilo pokriveno testovima graničnih slučajeva, a svaki rezultat objašnjiv osobi koja ga dobije.
- Analitika oko zdravstvenih podataka mora se osmisliti od prvog dana. Odlučiti šta se nikada ne smije pratiti jednako je važno kao i odlučiti šta mjeriti.
- Praćenje u SPA aplikaciji zahtijeva hookove u kodu, a ne CSS selektore. Aplikacija zna na kojem je koraku osoba; DOM to ne zna.
Tehnologije
| Sloj | Tehnologija |
|---|---|
| Frontend | React SPA |
| API | Node.js i Express |
| Baza podataka | MongoDB Atlas |
| Admin | React admin panel s autentifikacijom putem kolačića |
| Analitika | Google Tag Manager, GA4, Google Consent Mode |
