Case study · Healthcare research

Turning a clinic's sample archive into a research instrument.

An eye clinic had years of samples and the clinical history behind each one. We built a platform that lets its researchers search that data, compare patient groups and run a prediction model trained on it.

KBC Sestre milosrdnice
Client
KBC Sestre milosrdnice, Eye Clinic
Engagement
Public tender, fixed scope
Delivered
Platform, prediction model, documentation, EU hosting
Year
2026

Delivered under contract N-215/2026 by the consortium of Okultis d.o.o. and Alpha Signal Analytics d.o.o.

The starting point

A collection worth building on

The clinic spent years collecting eye fluid and serum samples from patients with glaucoma, PEX syndrome, diabetic retinopathy and macular degeneration. Each sample comes with the patient's clinical history, including diagnoses and stages, other conditions, medications and surgeries. The samples were analysed with Raman spectroscopy and mass spectrometry. That makes the collection a strong base for research into biomarkers and early diagnosis.

The clinical records came as spreadsheet exports with a column for every field, and the spectra came as one file per measurement. Every new study started with the same manual cleanup. To compare patient groups or try prediction, the researchers needed a proper platform behind the data.

What we did with the data

Prepared once, on import

We moved those exports into one database. The importer reads the clinical spreadsheets directly, turns the very wide tables into a clean structure and removes duplicates. It also keeps "absent" and "not measured" apart, so the counts stay correct. Spectra and mass spectrometry results are linked to the same patient. The cleanup now happens once, during import, and every study after that starts with clean data.

What we built

What the platform does

Ocular Biobank has three main parts, and all of them were built with hospital rules in mind.

A searchable biobank

Each patient record holds diagnoses and stages, other conditions, medications and surgeries, along with the Raman spectra and mass spectrometry results. Researchers can filter by disease, stage or treatment, open a patient's full profile and export the group they need. They can also import new spreadsheets and spectra files themselves, without asking a developer.

Comparing groups

Researchers pick two groups, such as a disease group and a control group, or two stages of the same disease, and compare their spectra side by side. The preparation that each comparison used to need is already done.

A prediction model trained on the clinic's data

We trained models on the spectra in the biobank to score a patient's measurements against the leading eye diseases. A researcher uploads spectra and gets a prediction for each disease, along with the model that produced it. The model can be retrained as the biobank grows.

Built for a hospital

Researchers, supervisors and administrators each get their own level of access. Every access and change is recorded in an audit log. The data is encrypted and stays in the EU, and we designed for GDPR from the start.

Built under constraints

What shaped the architecture

This was an open public tender with a fixed 60-day delivery term, for a hospital with strict security expectations. GDPR meant hosting in the EU. Those limits shaped the design. One service faces the internet and handles login, the database and the audit log. The ML prediction model can only be reached through the platform. All the infrastructure is defined in code, so it can be rebuilt when needed.

Researchers get secure access to the biobank platform. The platform stores sample data in the biobank DB. It sends spectra to the ML prediction model and gets predictions back, and the model is internal only. The platform, the DB and the model run on infrastructure in a GDPR-compliant EU region.
Researchersweb browser
Researchers to Biobank platform · Secure access

Infrastructure in a GDPR-compliant EU region

Biobank platformweb app + API
Biobank platform to Biobank DB · Sample data
Biobank DBsample records
Biobank platform to ML prediction model · Spectra and predictions
ML prediction modelinternal only

Working on something similar?