Opdrachtgever
Photo by Marek Levák on Unsplash

Uitgebreid Drupal content en publicatie platform met Adlib koppeling

In samenwerking met Enof creatieve communicatie uit Utrecht werd in opdracht van het Nivel, het Nederlands instituut voor onderzoek van de gezondheidszorg, de bestaande Drupal 7 website herbouwd en qua indeling en structuur volledig opnieuw uitgedacht en gebouwd in Drupal 8.

Het Nivel doet wetenschappelijk onderzoek naar naar de kwaliteit en effectiviteit van de gezondheidszorg. De resultaten worden in de praktijk gebruikt. Het Nivel werkt samen met een groot aantal andere partijen zoals universiteiten, patiënten- en beroepsorganisaties. In het onderzoek worden drie perspectieven gecombineerd: dat van de patiënten, dat van de zorgprofessionals en hun organisaties en dat van het gezondheidszorgsysteem. 

 

Doel: efficiënt werken met alle bronnen

Bij elk onderzoek komt veel informatie vrij. Informatie over de onderzoekers, over het project en uiteindelijk de publicaties. Aan Atom de opdracht om een nieuwe website te ontwikkelen waarbij de eigen bron van data gecombineerd wordt met externe data uit Atlib. De bedoeling is dat zowel interne gebruikers als externe bezoekers in één zoekopdracht alle betreffende informatie voor handen hebben. 

Deliverable

Herbouw van Drupal 7 naar 8 inclusief data migratie

Adlib software systeem

Op de vorige website van het Nivel werd de onderzoeksdata uit de externe database getoond zonder dat er een relatie met de inhoud van de website zelf was. Nu gebruiken zij voor deze externe database het Adlib systeem. Adlib software wordt wereldwijd gebruikt voor het beheer van multimedia, tekstbestanden en objecten, zowel voor privécollecties als door grote instellingen als bibliotheken en musea.

Het voordeel van een externe database zoals Adlib is dat data consistent op één plek wordt beheerd terwijl het op verschillende plaatsen kan worden getoond. Bijvoorbeeld op de website, maar ook voor intern gebruik of in een app.

Doel: efficiënt werken met alle bronnen Bij elk onderzoek komt veel informatie vrij. Informatie over de onderzoekers, over het project en uiteindelijk de publicaties. Aan Atom de opdracht om een nieuwe website te ontwikkelen waarbij de eigen bron van data gecombineerd wordt met externe data uit Atlib. De bedoeling is dat zowel interne gebruikers als externe bezoekers in één zoekopdracht alle betreffende informatie voor handen hebben. 

Samenvoeging van de Adlib data met Drupal.

Bij het opzetten van de nieuwe Nivel omgeving is er gekozen om de Adlib data samen te voegen met content in Drupal. Door het samenvoegen kan de kracht van Drupal gebruikt worden om als bezoeker van de website ook de informatie in Adlib te doorzoeken.

We synchroniseren dagelijks de Adlib data naar de Drupal website. Hierbij maken we gebruik van de Adlib API. De Nivel data kunnen we met deze Adlib API via 3 endpoints benaderen; Users, Projecten en Publicaties. Ieder endpoint heeft een zee van data; 24 Velden voor projecten, 28 voor publicaties en 27 voor personen.

Drupal kent veel mogelijkheden om content te combineren en weer te geven. Zoals relaties tussen content, diverse soorten velden en woordenlijsten om termen centraal op te slaan. Om Drupal hiervoor optimaal in te zetten hebben we ervoor gezorgd dat de data bij import al gescreend wordt. Zodat er vervolgens relaties gelegd kunnen worden en alles op de juiste manier en in de juiste velden opgeslagen wordt.

Voor de migratie schreven we generieke custom process plugins

Als eerste onderzochten we wat er met de data van de oude website moest gebeuren. Welke velden in Adlib zijn nodig voor de migratie en welke soort inhoud komt in welke velden? Op basis daarvan bepaalden we wat wel en niet voor migratie in aanmerking kwam en wat er moest worden aangepast. 

Het overgrote deel van deze velden moesten op het moment van import nog worden bewerkt. Denk daarbij bijvoorbeeld aan namen van auteurs die soms met een tussenvoegsel geschreven zijn, soms zonder tussenvoegsel, soms met initialen ervoor en soms erachter.  Om de import te optimaliseren hebben we generieke custom process plugins geschreven. In het voorbeeld van de afwijkende auteursnamen hebben we een plugin geschreven waarbij we de naam met behulp van een regex, een patroon waarmee elementen uit een tekst geïdentificeerd kunnen worden, ontleden. Hierdoor zijn we in staat om dezelfde naam in andere content te herkennen, ook wanneer deze anders geschreven is. We hebben dus een relatie gelegd die normaal gesproken niet één op één aanwezig is. 

Een ander voorbeeld van een generieke plugin die we schreven is de mogelijkheid om, onder bepaalde voorwaarden, een prefix of suffix (voor- of achtervoegsel) aan de geïmporteerde data toe te voegen. Deze plugin kan bijvoorbeeld gebruikt worden om een extensie achter een bestandsnaam te plaatsen. 

Deze plugins hebben we zoveel mogelijk generiek geschreven, hierdoor wordt de code consistenter, veiliger en beter te onderhouden. Door de generieke opzet kunnen we dezelfde plug-ins ook voor allerlei andere oplossingen inzetten, zowel binnen dit project als bij andere projecten. 

Photo by NEW DATA SERVICES on Unsplash

Trefwoordenlijst in Drupal gerelateerd aan alle Adlib velden

In de Adlib data, zoals wij die binnen krijgen, zijn geen hulptabellen beschikbaar, zoals bijvoorbeeld een lijst met trefwoorden en tags. Bij het importeren vergelijken we trefwoorden en bouwen deze vervolgens in Drupal wel als lijst op. Daarmee zijn publicaties met gerelateerde trefwoorden gemakkelijker op te zoeken, zijn de trefwoorden consistenter aan te passen en kan er gemakkelijker op deze trefwoorden gefilterd worden.

URL’s en Links op de juiste manier opslaan

Enkele velden in Adlib beslaan zowel externe links als verwijzingen naar lokale files. Deze data hebben we uit elkaar getrokken en in verschillende varianten opgebouwd om de bijbehorende relatie op te zoeken. URL’s voor lokale bestanden zijn als inhoudstype bestand in Drupal opgeslagen.  URL’s met interne content kregen een rechtstreekse referentie en een normale URL werd uiteraard als URL opgeslagen. Door het correct herleiden en opslaan in Drupal van deze verschillende URL’s maken we gebruik van de mogelijkheden die Drupal biedt, zoals bestanden in een bepaald formaat aanbieden, gerelateerde content in een teaser tonen en  URL’s duidelijk als  URL’s weergeven.

Adlib api en Drupal migrate

Naast de plug-ins hebben we ook de koppeling geschreven tussen de Adlib_api en Drupal migrate. Drupal migrate zorgt voor de basis van de import en update functionaliteit. De koppeling zorgt ervoor dat Drupal in opdracht van de migrate functionaliteit door de Adlibdata heen kan bladeren en van daaruit data ophaalt. 

Het resultaat

Wij hebben alle data van de oude website naar een nieuwe geïmporteerd. Daarnaast werd ook de data van publicaties van 12.000 projecten en personen vanuit de externe database met elkaar gekoppeld. Op de nieuwe website Nivel.nl is elke relatie tussen onderzoeker, project en publicatie en elke gerelateerde content met elkaar gelinkt en gemakkelijk terug te vinden. Het leverde ons een heel enthousiaste klant op waarmee we bij de doorontwikkeling nauw samenwerken.

Door het analyseren en aanpassen van de data en de manier waarop we de data in Drupal plaatsen, hebben we een optimaal uitgangspunt voor doorontwikkeling en aanpassingen.

Elke nacht wordt nieuwe data van de database opgehaald en gekoppeld. Daarnaast is nieuwe data ook handmatig op te halen. Bijvoorbeeld nieuwe artikelen worden direct gelinkt. Elke gebruiker of bezoeker kan dit meteen, en tegelijk met alle andere relevante informatie uit verschillende bronnen, in een oogopslag lezen. 

Screenshot Nivel.nl

Voortdurend in ontwikkeling

De website Nivel.nl werd MVP opgeleverd. Dat betekent dat er een stabiele werkende basisomgeving is gemaakt. Vanuit dit startpunt werken we verder om het product te optimaliseren. Samen met de klant, via terugkoppeling en tests, wordt de website verbeterd en doorontwikkeld. In dit project zullen we daar voortdurend mee bezig zijn.

 

Technische Project Details:

 • Volledige herbouw van Drupal 7 omgeving in Drupal 8

 • Data migratie Drupal 7 naar Drupal 8

 • Koppeling Adlib collectiebeheersysteem

 • Automatisch herkennen en koppelen van geïmporteerde data.

 • Diverse generieke migratie plugins gemaakt om data automatisch aan te passen en te koppelen tijdens import.

 • Scheiding van configuratie en verantwoordelijkheden zodat de webadmin meer
mogelijkheden heeft voor het beheer

 • Gekoppelde data integraal in de website geïntegreerd, waardoor de bezoeker een
goed overzicht heeft en makkelijk kan doorbladeren naar gerelateerde content.

 • Intuitive navigatie voor zowel bezoeker als auteur door gebruik te maken van drupal’s book module.

 • Zorg geoptimaliseerde Hosting van Oxilion (ISO 9001, ISO 27001, NEN 7510)

 • Professionele ontwikkelstraat (OTAP), continuous integration, versiebeheer (Git), clean url’s en SSL

 • Apache Solr zoekindexen

 • Meertalige Drupal opzet

 • Klaar voor eenvoudige overgang in 2021 naar Drupal 9

 • Metadata en technische voorbereiding SEO

 • Flexibel pagina’s samenstellen en contentbeheer middels Drupal layout builder

 • Lazy loading & CSS/JS minification en aggregatie

 • Server side caching en Drupal cache

 • Uitgebreide rollen en rechten voor workflow optimalisatie en ondersteuning

Uw oplossing?

Neem contact met ons op, wij denken graag met u mee.
Bel Justin of stel een vraag via de site.

Justin van der Raaf
Justin van der Raaf

Meer cases

Photo by Gabriel Sollmann on Unsplash

Van CD naar Drupal maatwerk webapplicatie, voor perfect afgedrukte etiketten