Preskoči na sadržaj

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
React (SPA)Node.js / Express APIMongoDB AtlasAdmin dashboardGTMGA4
Početna stranica reagiraj.ba ('Zdravlje pluća') u prozoru browsera, uz telefon s rezultatom umjerenog rizika
Interreg IPA Hrvatska, Bosna i Hercegovina, Crna Gora; Sufinansira Evropska unija; LIFEGATE

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

KlijentSKB Mostar (Sveučilišna klinička bolnica Mostar)
ProgramInterreg VI-A IPA Hrvatska, Bosna i Hercegovina, Crna Gora 2021. do 2027., sufinansira Evropska unija
ProjekatLIFEGATE (HR-BA-ME00489)
Moja ulogaTehnički partner za web aplikaciju (aktivnost A1.2): platforma, admin panel i analitika.
Vremenski okvirRazvoj od decembra 2025. do maja 2026., javno pokretanje 11. augusta 2026.
PlatformaJavna web aplikacija, API i admin panel
KorisniciŠira javnost, s posebnim fokusom na starije korisnike; bolnički tim u admin panelu
StatusAktivno

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. 1
    Početna stranica: Šta je procjena, koliko traje i da je anonimna.

    Početna stranica

    Šta je procjena, koliko traje i da je anonimna.

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

    Osnovni podaci

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

  3. 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.

    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. 4
    Okruženje: Životno okruženje i izloženost na radnom mjestu, npr. azbestu.

    Okruženje

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

  5. 5
    Rezultat: Nivo rizika s jasnom preporukom i prepoznatim faktorima.

    Rezultat

    Nivo rizika s jasnom preporukom i prepoznatim faktorima.

  6. 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.

    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.

Odgovori
Alarmantni simptomi?
Da ↓

Simptomatski / hitno: potrebna klinička procjena

Sigurnosno pravilo, a ne skrining bodovanje. Iskašljavanje krvi ili više ozbiljnih simptoma istovremeno.

Ne ↓

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.

NizakUmjerenVisok
NivoBodoviPreporuka
Nizak0 do 7 bodovaEdukacija, prestanak pušenja, bez rutinskog skrininga
Umjeren8 do 15 bodovaRazmotriti RTG grudnog koša, uz podršku AI-ja gdje je dostupna, i/ili niskodozni CT (LDCT) u skladu sa smjernicama i individualnim rizikom
Visok16 bodova ili višeSkrining RTG-om uz AI i niskodoznim CT-om (LDCT), te pulmološki pregled
HitnoAlarmantni simptomiPotrebna 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 poljaPrimjeriZašto postoji
DemografijaSpol, dob, kanton, gradFaktori rizika i geografska analitika za bolnički tim
Tjelesne mjere i BMITežina, visina, izračunati BMIPrikazuje se u rezultatu i koristi u analitici
Pušenje i kutija-godineStatus, godine pušenja, broj cigareta dnevno, izračunate kutija-godineNajjači faktor rizika u modelu
Simptomi i anamnezaSimptomi, bolesti pluća, lična i porodična anamnezaSigurnosno pravilo i skrining skor
IzloženostŽivotno okruženje, azbest, izloženost na radnom mjestuOkolišni i profesionalni faktori rizika
RezultatBodovi, nivo, prepoznati faktori, preporukaOno što osoba vidi i što klinika može provjeriti
UpućivanjeKod za upućivanjeProvjera rezultata u ustanovi
PrivatnostHash IP adrese, oznaka za isključenje iz analitikeZaš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.

Ilustracija, primjer podataka

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.

OdlukaZašto
Nivo rizika se nikada ne šalje u analitikuGA4 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 straniceSPA bez promjene URL-a zahtijeva da se eventi šalju iz koda
IP adrese se čuvaju samo kao hashZaštita od zloupotrebe bez čuvanja ličnih podataka
Testni unosi se mogu isključitiStatistika ostaje čista za bolnički tim i projektne izvještaje
Bez oglašivačkih profilaNiš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

Hronologija
  1. decembar 2025.Početak razvoja
  2. maj 2026.Platforma isporučena
  3. juli 2026.Analitika i provjera privatnosti
  4. 11. august 2026.Javno pokretanje
  5. 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

SlojTehnologija
FrontendReact SPA
APINode.js i Express
Baza podatakaMongoDB Atlas
AdminReact admin panel s autentifikacijom putem kolačića
AnalitikaGoogle Tag Manager, GA4, Google Consent Mode

Imate sličan projekat?
Razgovarajmo.