2023: LUMC - Verouderde software, vernieuwende zorg

In het najaar van 2023 werd ik gevraagd om het lab van Klinische Genetica van het LUMC te ondersteunen. De interne ontwikkelaar van de Oracle Forms software was onverwachts uitgevallen, waardoor de continuïteit van het lab in gevaar kwam.

De software van het lab (Miracle) is de afgelopen 25 jaar intern ontwikkeld. Het is een Oracle Forms applicatie met een Oracle database. Er loopt een project om dit te vervangen door commerciële software, en mede hierdoor draait dit nu op verouderde technologie.

Het was een steile leercurve om met Oracle en Oracle Forms te leren werken, maar het is gelukt om hier goed grip op te krijgen. Ik heb een vervelende vastloper gevonden en opgelost die al jaren in het systeem zat, en heb het project begeleid om de zwaar verouderde Windows versie van de servers te upgraden. We hebben ervoor gekozen om dit met downtime te doen, wat een zorgvuldige afstemming met het lab vereisde.

Daarnaast heb ik nieuwe functionaliteit toegevoegd, want ondanks dat het de bedoeling is om de software te vervangen moet het lab wel gewoon door kunnen. Dit gaat dan om nieuwe koppelingen met analysesoftware en nieuwe robots. Ook zijn er altijd wensen om zaken anders of beter op te kunnen zoeken.

Bij dit werk aan oude software heb ik moderne technieken gebruikt. Zo ben ik hier met AI aan de slag gegaan, om wijs te worden uit de grote hoeveelheden code en om nieuwe code te schrijven. Ook heb ik voor de benodigde nieuwe functionaliteit een simpele Java webinterface neergezet, waarin ik eenvoudig (en dus met AI) functionaliteit kon toevoegen zonder dat ik met de verouderde Forms hoefde te werken. Dit heb ik ondersteund door een aantal zelfgeschreven tools om de forms en de database te converteren naar eenvoudig toegankelijke tekstbestanden.

Het ontwerp is robuust genoeg om ook op langere termijn door te ontwikkelen, mocht dat nodig zijn. In de toekomst zou de Oracle database vervangen kunnen worden door Postgres. Ik heb ook geëxperimenteerd met HTMX, een lichte JavaScript-bibliotheek om server-side interfaces interactiever te maken.