
Tijdens de COVID-pandemie werd op enorme snelheid gevraagd om software die verandert net zo snel als het beleid. Voor een organisatie in de gezondheidszorg werkte ik in een team aan een portaal én aan een onderliggend low-code platform waarmee testafname-stappen, vragenlijsten en adviesregels door functioneel beheer aangepast konden worden — zonder dat developers iedere week opnieuw moesten releasen.
Het portaal zelf moest het werk van afnamelocaties vereenvoudigen: aanmelden, intake, testafname, registratie en doorgeleiding van resultaten. Niets daarvan stond aan het begin van het project vast: definities veranderden per week, soms per dag, omdat richtlijnen mee bewogen met wat we landelijk en internationaal over het virus leerden.
Daarom hebben we bewust gekozen voor een combinatie van een klassieke applicatie (Angular 11 met Symfony 5 erachter) en een configureerbare stappen-engine. Een stap is in dat model meer dan een scherm: het is een combinatie van een vraag of handeling, condities, validaties, vervolgstappen en eventuele consequenties (bijvoorbeeld doorverwijzing naar een andere flow). Functioneel beheerders bouwden complete trajecten op zonder ook maar één regel code aan te raken.
Authenticatie en autorisatie liepen volledig via Keycloak. Dat was geen luxe maar een noodzaak: meerdere doelgroepen (medewerkers, behandelaars, beheerders, externe partijen) moesten toegang krijgen tot scherp afgebakende delen van het portaal, en die afbakening moest centraal en aantoonbaar geregeld zijn. De integratie met Keycloak heb ik mede vormgegeven en hard gemaakt met integratie- en e2e-tests.
We hebben veel geïnvesteerd in testbaarheid. PHPUnit voor de back-end, Jasmine en Karma voor de Angular-zijde, plus een laag e2e-tests die complete trajecten doorliep. Dat klinkt overdreven voor een project dat in een paar maanden moest staan, maar juist door die tests konden we zonder schroom blijven veranderen — wat in deze context essentieel was.
Uiteindelijk werd het project, door hernieuwde inzichten binnen de organisatie, niet in zijn volledige vorm afgerond. Wat het project mij wel gaf, was een diepgaande les in flexibele architectuur, in samenwerken onder hoge druk en in het scheiden van wat écht in code moet zitten en wat beter als configuratie kan leven.
