Blog

Ontdek hoe nexuzhealth moderne technologie inzet om te bouwen aan de gezondheidszorg van de toekomst

Geschreven door nexuzhealth | 8.11.2023

 

Nexuzhealth bouwt aan een volledig geïntegreerd elektronisch patiëntendossier (EPD). Hiermee bedienen we momenteel de helft van de ziekenhuizen in Vlaanderen. Ook huisartsen en thuisverpleegkundigen kunnen in de toekomst gebruik maken van dit geïntegreerde dossier. Om ook in de toekomst te kunnen blijven bouwen aan het elektronisch patiëntendossier, zijn we enkele jaren geleden naast Java ook in Go beginnen ontwikkelen. Daarnaast hebben we onze technologiestack vernieuwd, gebaseerd op het Google Cloud Platform. We leggen je graag deze keuzes uit.

Go(lang): een performante en robuuste programmeertaal

Terwijl we onze klassieke productlijn ontwikkelen met Java en zijn uitgebreide en beproefde ecosysteem, sloegen we voor onze nieuwe producten een andere weg in. Onze keuze viel op Go(lang), een moderne programmeertaal die oorspronkelijk door Google is ontwikkeld, maar ondertussen als open-source beschikbaar is gemaakt, om performante en robuuste enterprise-level backendsystemen te bouwen. Go heeft zijn plaats al veroverd en wordt onder andere gebruikt door YouTube, Dropbox, Netflix, Uber, SoundCloud, Kubernetes en Terraform.

Een belangrijk voordeel van Go ten opzichte van Java is de hogere performance omdat je geen virtuele machine nodig hebt: je Go-code compileert rechtstreeks naar machinecode. Bovendien hebben de gecompileerde programma’s een kleinere footprint. Omdat we bij nexuzhealth veel van onze software in de cloud draaien, levert dat ons efficiëntiewinsten op waardoor we ons meer kunnen focussen op het opschalen van onze oplossingen.

Concurrency en functioneel programmeren

Ook de taal zelf heeft zijn troeven. Zo zijn parallellisatie en concurrency expliciet in de taal opgenomen. De kracht van een individuele processor neemt al jaren niet zo veel meer toe. Daardoor wordt het steeds belangrijker voor software om efficiënt gebruik te maken van het samenspel tussen meerdere processorkernen, zeker met de schaal van de producten die nexuzhealth bouwt.

In andere talen is het ook mogelijk om parallelle programma’s te ontwikkelen, maar Go vereenvoudigt dit. De taal heeft een elegant en lichtgewicht systeem voor concurrency, goroutines. Dit is gebaseerd op communicating sequential processes (CSP), voor het eerst beschreven door de befaamde computerwetenschapper Tony Hoare. Met goroutines communiceren processen op een efficiënte manier via kanalen met elkaar, waardoor je optimaal van de kracht van multicore-processoren kunt gebruikmaken.

Functies zijn ook first-class citizens in Go. Je kunt ze efficiënt als argument aan andere functies doorgeven en het concept van closures is sterk in Go geïmplementeerd. Code in een functionele programmeerstijl is doorgaans beter leesbaar en testbaar. Het is ook een natuurlijke aanpak voor het pipeline-patroon in Go dat we regelmatig toepassen om berichten te verwerken.

Go is geen puur functionele programmeertaal: je kunt zowel functioneel als objectgeoriënteerd programmeren. Onze ontwikkelaars gebruiken dan ook beide programmeerparadigma’s waar deze het beste tot hun recht komen in de verschillende technische modules van het platform.

Eenvoudig aan te leren

Een taal als Java heeft een groot ecosysteem. Vaak zijn er meerdere manieren om iets in Java te doen en bestaan er diverse softwarebibliotheken om uit te kiezen. Dat vraagt een niet te onderschatten investering van tijd om je in Java-ontwikkeling in te werken en je kennis te onderhouden.

Go daarentegen maakt deel uit van een tegenbeweging naar eenvoud. De taal is opinionated: de ontwerpers ervan nemen duidelijke standpunten in. Vaak is er in Go maar één juiste manier om iets te schrijven. Daardoor kan de taal enerzijds zeer efficiënte code produceren, en anderzijds blijft de leesbaarheid voor andere ontwikkelaars zeer hoog.

We hebben gemerkt dat ontwikkelaars met een gezonde professionele interesse, in welke programmeertaal ze ook bedreven zijn, vrij eenvoudig Go kunnen aanleren. Wanneer ontwikkelaars zonder Go-ervaring bij ons beginnen, geven we hen een opleiding Go, speciaal afgestemd ook op de moderne technologiestack die we gebruiken. Nieuwe ontwikkelaars zijn onmiddellijk in staat om mee te draaien in onze scrum-teams, waarin ze door hun collega’s mee opgeleid worden.

“Wanneer ontwikkelaars zonder Go-ervaring bij ons beginnen, geven we hen een opleiding Go, speciaal afgestemd ook op de moderne technologiestack die we gebruiken.

Nexuzhealth wilt zich ook verder actief inzetten binnen de Go-community van België op het vlak van kennisdeling. We leven niet op een eilandje, maar maken deel uit van een bredere gemeenschap van ontwikkelaars.

Google Cloud Platform: schaalbaar en naadloos geïntegreerd

Uiteraard is de programmeertaal Go niet het enige instrument dat we in onze moderne technologiestack gebruiken. Met onze klassieke productlijn liepen we tegen de grenzen aan van de schaalbaarheid. Meer en meer ziekenhuizen tekenen in op het concept van een gedeeld EPD en daarbovenop breiden we nu verder uit naar de zorgverstrekkers van de andere zorglijnen. Om verder te groeien, hadden we andere oplossingen nodig.

Voor onze database zijn we zo uitgekomen bij Google Cloud Spanner. Dit is een managed relationele database die ontworpen is om ongelimiteerd horizontaal te schalen en toch transactionele consistentie te garanderen met een zeer hoge beschikbaarheid.

Cloud Spanner was voor ons de hoofdreden om voor het Google Cloud-platform te kiezen, dat we ondertussen al enkele jaren  gebruiken. Maar dit platform biedt ook andere krachtige componenten aan. Zo gebruiken we BigQuery als datawarehouse met ingebouwde machine learning voor data mining. Met Cloud Pub/Sub sturen we data betrouwbaar en schaalbaar naar BigQuery of andere technische modules van ons ecosysteem. En voor object storage maken we gebruik van Google Cloud Storage. Ook de Google Healthcare API, met onder andere een robuuste implementatie van een Fast Healthcare Interoperability Resource (FHIR) server maakt een geïntegreerde aanpak van onze businessdomeinen gemakkelijk.

Al die diensten van de Google Cloud zijn naadloos met elkaar geïntegreerd en via het beheerportaal kunnen we alles vrij gemakkelijk configureren. De diensten zijn ook allemaal schaalbaar en worden goed ondersteund door Google.

Moderne technologiestack voor de toekomst van de gezondheidszorg

Door onze grote schaal en nog grotere ambities kan nexuzhealth rechtstreeks samenwerken met de productmanagers en ontwikkelteams bij Google, wat een groot voordeel is. De configuratie en onderhoud van al die clouddiensten gebeurt bij ons overigens door een gespecialiseerd team voor Site Reliability Engineering (SRE). Zo kunnen onze ontwikkelaars zich op het programmeren focussen, en voor het gebruik van Google Cloud werken ze samen met het SRE-team.

“Door onze grote schaal en nog grotere ambities kan nexuzhealth rechtstreeks samenwerken met de productmanagers en ontwikkelteams bij Google, wat een groot voordeel is.”

Buiten het cloudplatform van Google gebruiken we ook Angular, een op TypeScript gebaseerd framework voor webapplicaties. Onze mobiele apps ontwikkelen we met Flutter, een softwareontwikkelkit voor gebruikersinterfaces die onder andere ingezet wordt door BMW, eBay en Nubank. Het idee achter Flutter is dat we daarmee één keer een app kunnen schrijven die zowel op Android als iOS werkt. En we kunnen diezelfde app later indien gewenst op het web aanbieden. Daarmee bevinden we ons in goed gezelschap samen met een heleboel andere gevestigde waarden in de bedrijfswereld die deze technologie ook omarmd hebben. Niet in het minst Microsoft, dat ook zelf actief bijdraagt om Flutter te gebruiken op hun opvouwbare toestellen of als desktopapplicaties in Windows.

Wil je ook deel uitmaken van een innovatief ontwikkelaarsteam dat met een moderne technologiestack werkt? Wil je je stempel drukken op de toekomst van de gezondheidszorg? Bekijk dan zeker onze openstaande vacatures.