Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige...

61
Stagedocumentatie NICOLAS PARADIS PROFESSIONELE BACHELOR TOEGEPASTE INFORMATICA 2013-2014 EXAMENPERIODE JUNI 2014

Transcript of Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige...

Page 1: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Stagedocumentatie

NICOLAS PARADIS

PROFESSIONELE BACHELOR TOEGEPASTE INFORMATICA 2013-2014 EXAMENPERIODE JUNI 2014

Page 2: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

2

Voorwoord Het doel van de bachelor in de Toegepaste informatica is om mensen op te leiden tot IT-professionals,

die een verantwoordelijkheid dragen binnen een bedrijf. Als student is het dus noodzakelijk om de

verworven kennis en competenties aan te vullen met werkveldervaring. Velen lopen tijdens het derde

jaar een stage binnen een bedrijf, als navolging van hun bachelorproef.

In mijn geval is de situatie wat anders. Na een succesvol IT-project, uitgevoerd voor het bedrijf

KeyTech, heb ik in het tweede semester van deze derde fase gekozen voor het buitenland.

Dankzij het uitwisselingsprogramma Erasmus heb ik kunnen studeren en stage lopen in de

Fachhochschule Brandenburg. Zoals de naam al verklapt, is deze universiteit gelegen in de stad

Brandenburg an der Havel, te Duitsland.

Over internationale uitwisseling hoort men vaak dat het vele positieve aspecten en ervaringen met

zich meebrengt en dat kan ik alleen maar beamen! Ik heb er geleerd zelfstandig en gedreven te werken,

afwisselend in teamverband. Planning en stiptheid draagt men in Duitsland hoog in het vaandel, dat

was ook het geval in mijn project.

Daarnaast vulden cultuur en evenementen ook de drukke planning aan. Het was een bijzondere,

boeiende en leerrijke ervaring. Ik kan het iedere toekomstige student dan ook aanraden.

Hierbij wil ik dan ook alle mensen bedanken die dit voor mij mogelijk maakten.

Nicolas Paradis

Page 3: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

3

Inhoudsopgave

Voorwoord .............................................................................................................................................. 2

Inleiding ................................................................................................................................................... 4

Overzicht van specifieke termen of afkortingen ..................................................................................... 5

Deel 1: Beschrijving van de opdracht ...................................................................................................... 6

1.1 Het project GesundheitsKiosk ....................................................................................................... 6

1.2 Doelstellingen ................................................................................................................................ 6

1.3 Mijn opdracht ................................................................................................................................ 7

Deel 2: Technische uitwerking .............................................................................................................. 10

Deel 3: Reflectie en evaluatie van het resultaat ................................................................................... 13

Deel 4: Persoonlijk ontwikkelingsplan ................................................................................................... 14

Bronnenoverzicht .................................................................................................................................. 16

Bijlagen .................................................................................................................................................. 17

Page 4: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

4

Inleiding Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met

computers, tablets, smartphones, … te werken. Vaak zijn deze toestellen verbonden met het internet.

Dit biedt uiteraard mogelijkheden in verschillende sectoren waaronder verkoop & marketing, de

industrie, de banksector … Het is echter zo dat IT in heel wat domeinen nog niet optimaal wordt ingezet

om processen te verbeteren.

Er is dus nog een lange weg te gaan en ook in Duitsland probeert men die digitale kloof te dichten.

BürgerServiceNetz e.V., kortweg BSN, is een concept dat gegroeid is uit de Fachhochschule

Brandenburg en heeft als doel verschillende burgerdiensten (digitaal) bij elkaar te brengen.

De meeste mensen kennen thuisbankieren bijvoorbeeld, maar er zijn nog vele andere online-

mogelijkheden, die tot op heden nog onbenut zijn. BSN probeert hierop in te spelen en als het ware

een nieuwe dimensie te geven aan het thuis-internetten.

BSN overkoepelt meerdere projecten, waarin vaak studenten actief meewerken. De projecten zijn

gelinkt aan verschillende sectoren. Eén van die projecten is de BSN GesundheitsKiosk, ook wel Health

Kiosk genaamd. In dit project mocht ik actief meewerken gedurende vier maanden.

Page 5: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

5

Overzicht van specifieke termen of afkortingen Hieronder staan een aantal specifieke termen verklaard die in dit project worden gebruikt. Vaak zijn

het termen die mensen uit de wereld van informatica reeds kennen.

CMS: Contentmanagementsysteem

Dit is een softwaretoepassing om op een eenvoudige manier, zonder technische kennis,

inhoud op het internet te plaatsen.

Bijvoorbeeld: een tekst en een afbeelding op een website plaatsen.

Typo3

Een open-source CMS, actief sinds 1998. Typo3 wordt vaak gebruikt in Duitsland en heeft

een vrij steile leercurve.

Alternatieven: WordPress of Joomla

Normalisatie

Databasenormalisatie is een techniek om een databank te ontwerpen. Hierbij let men vooral

op dat dezelfde data niet meerdere keren wordt vastgelegd.

Lightbox

Lightbox is een venster dat kan worden opgeroepen in de browser. Het wordt vaak opgebouwd

met de scripttalen CSS, HTML en vaak Ajax. Zo’n venster kan extra informatie en opties

bevatten voor de gebruiker.

Bijvoorbeeld: bij het klikken van een info-knop verschijnt een klein half-transparant venster

met meer uitleg over het aangeklikte item.

Ajax: Asynchronous JavaScript And XML

Met Ajax kunnen opgevraagde gegevens op een asynchrone manier worden opgevraagd. Een

webpagina hoeft dus niet in zijn geheel te verversen bij een nieuwe opvraging.

SQL-injectie

Een SQL-injectie is een methode dat een gebruiker kan gebruiken om ongewenste SQL-query’s

uit te voeren. Een grondige controle op de invoer van gegevens in een databank is

noodzakelijk.

SWOT-analyse

SWOT ofwel Sterkte-zwakteanalyse is een model om interne zwaktes en sterktes in kaart te

brengen, samen met de externe kansen en bedreigingen.

Page 6: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

6

Deel 1: Beschrijving van de opdracht Dit hoofdstuk bevat de algemene beschrijving en de doelstellingen van het project, waaraan ik heb

meegewerkt. Daarnaast is er ook een overzicht van de taken die ik heb uitgevoerd.

1.1 Het project GesundheitsKiosk BSN GesundheitsKiosk (Health Kiosk) is een platform (in ontwikkeling) dat

artsen, medische assistenten, … de mogelijkheid biedt om in de toekomst

medische gegevens van patiënten op te slaan en te raadplegen.

Het project staat onder leiding van Professor Dietmar Wikarski.

In de eerste plaats dient de GesundheitsKiosk om vitale waarden van

patiënten te meten, met moderne digitale apparatuur en automatisch in

een beveiligde omgeving op te slaan. Nadien kan men, onafhankelijk van

stad, deelstaat of medische instelling, op een eenvoudige en gestructureerde manier de meetwaarden

raadplegen.

De waarden van bloeddruk, gewicht, suikerspiegel, bloedarmoede en zuurstofgehalte zullen worden

ondersteund.

Het platform zal bovendien nog heel wat meer mogelijkheden bieden. Zo kan men ook

patiëntendossiers bijhouden. Zo’n patiëntendossier mag zeer ruim worden opgevat: medisch

beeldonderzoek, allergieën, ziekten, medische familiegeschiedenis, vaccinaties tot zelfs

fitnessschema’s kunnen worden opgeslagen.

Een medicatieplan is eveneens een beschikbare optie. De patiënt zal in dit onderdeel kunnen

raadplegen welke medicatie hij moet nemen, op welke tijdsstippen en hoelang.

Tot slot is er ook nog de rubriek noodgegevens. Hierin zullen de voornaamste zaken zoals gebruikte

medicatie, allergieën, belangrijke diagnoses worden bewaard. Hieraan zal er een mobiele website

gelinkt zijn, die enkel beveiligd te raadplegen zal zijn via een QR-code. Elke patiënt zal zo’n QR-code op

zijn medische verzekeringskaart hebben. Het doel is om een snel overzicht te bieden van cruciale data

in geval van nood. De mobiele website verhoogt de kans op een snelle en aangepaste hulp.

1.2 Doelstellingen De BSN GesundheitsKiosk is een project dat heel wat voordelen biedt en zo ook diverse doelstellingen

kan realiseren.

Eerst en vooral: centralisatie en digitalisering. Het platform zal alle belangrijke gegevens van patiënten

groeperen en zorgt er ook voor dat deze, op een beveiligde manier, beschikbaar zullen zijn bij

verschillende medische instellingen en instanties. Momenteel is het namelijk zo dat in Duitsland

gegevens per arts of hooguit per gemeente beschikbaar zijn. Er bestaan reeds kleine initiatieven om

enkele databanken te bundelen, maar een modern, nationaal systeem ontbreekt.

Verder is er ook nog vereenvoudiging. Het systeem moet toegankelijk zijn voor mensen met diverse

achtergrond en leeftijd. Daarom zal een simpele, efficiënte structuur worden gebruikt voor de website.

Bovendien is het de bedoeling om naast eenvoudig, ook platformonafhankelijk te

zijn. Of het nu iOS, Windows of Android is, het zou geen verschil mogen maken. De

website zal sowieso bereikbaar zijn voor elk systeem, maar daarenboven zullen ook

de medische metingen met verschillende besturingssystemen mogelijk zijn.

Page 7: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

7

1.3 Mijn opdracht De GesundheidsKiosk is reeds verschillende jaren in ontwikkeling. Enerzijds was het project lange tijd

in de opstartfase. Men moest nagaan welke doelstellingen men wilt bereiken, wat de scope is, …

Anderzijds lag de focus op de ontwikkeling van de back-end. Zo was het reeds mogelijk om via

Bluetooth randapparatuur te linken en automatisch metingen (gewicht en hartslag) te laten uitvoeren.

De back-end was echter nog niet afgewerkt en daarenboven was er nog heel wat werk aan de front-

end.

De taken die ik de afgelopen vier maanden heb gekregen en uitgevoerd, zijn zeer uiteenlopend

geweest. Hieronder een overzicht van wat ik allemaal heb gedaan.

1. Onderzoek en analyse van het project (10/02 19/02)

In het begin van mijn stage moest ik de bestaande documentatie en ideeën analyseren

en bijsturen. BSN vond het belangrijk om een frisse visie van een buitenstaander te

hebben over het project. Deze taak duurde anderhalve week.

Het is bovendien ook normaal dat ik deze taak had. Ik moest immers weten hoe alles

(theoretisch) in mekaar zit, wat de scope is, wat de doestellingen zijn.

2. Analyse van het technische gedeelte (20/02 26/02)

Tijdens deze fase moest ik vooral de technische zijde analyseren. Ik had immers totaal geen ervaring

met een CMS, zoals Typo3, of de werking van drivers voor draadloze Bluetooth-communicatie. De

eerder ontwikkelde “Vital Data Manager”, die instaat voor communicatie met randapparatuur was

helemaal nieuw voor mij. Ik moest mij dus als het ware inwerken om het platform beter te begrijpen.

3. Diverse taken (27/02 16/03)

Deze periode bundelt een aantal diverse kleinere taken. Ik heb toen extra dagen (incl.

weekend) intensief gewerkt om alles te kunnen voltooien. De verschuiving van

werkdagen is het gevolg van de welkomweek voor Erasmus-studenten. Gezien in

Duitsland het 2de semester start midden maart, zijn er toen enkele dagen

weggevallen uit de werkweek ten voordele van culturele activiteiten.

Een gedetailleerde, technische oplossing leveren voor de implementatie van meertaligheid op

het platform.

Helpen bij het leveren van inhoud voor de front-end.

Zoeken naar passende, rechten-vrije illustraties. Deze moeten toekomstige gebruikers

op een heldere manier uitleggen hoe men het platform moet gebruiken.

Het controleren en verbeteren van Engelse teksten.

De draadloze Bluetooth-connectie tussen randapparatuur en centrale computer, waarop de

GesundheitsKiosk draait, controleren en testen.

Sommige apparaten hadden namelijk verbindingsproblemen, andere dan weer niet.

Eerste stappen zetten voor de reorganisatie van de SQL-databank.

Ik zocht antwoorden op vragen als “Welke tabellen kunnen geschrapt worden?” en “Welke

tabellen worden uitgebreid?”.

Page 8: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

8

De databankconnectie tussen databank en website voltooien. Hierdoor kunnen gegevens

(gedeeltelijk) aangepast en toegevoegd worden.

4. Ontwerpen en aanmaken van een nieuwe databank (17/03 26/03)

Uit eerdere analyse (zie ‘diverse taken’) bleek dat de bestaande databank helemaal

niet goed was ontworpen. Vaak doken dezelfde gegevens meerdere keren op in

eenzelfde databank. Van normalisatie was er dus geen sprake. Bovendien klopten de

relaties tussen de verschillende tabellen niet.

Tot slot is er in dit project ook nog een extra moeilijkheid: alles draait om persoonsgevoelige gegevens.

Een eis is om die persoonsgegevens, zoals naam of adres, afgesplitst te houden van de overige data.

De aanmaak van een gloednieuwe databank drong zich op, rekening houdend met deze specifieke eis.

Het nieuwe ontwerp is duidelijker en eenvoudiger, maar voldoet ook voor de toekomst. Hoewel een

ontwerpweergave zou doen vermoeden dat het een niet-relationele databank is, is het dat wel.

De aanpassingen en vernieuwingen die in deze stap zijn uitgevoerd, kan men terugvinden in bijlage 8

en 9. Uitzonderlijk staan ook de afgesplitst tabellen voor de persoonsgegevens aangeduid.

5. Aanmaken en aanpassen van de rubriek ‘Notfalldaten’ (27/03 13/04)

De rubriek ‘Notfalldaten’ bevat alle gegevens die belangrijk zijn wanneer een patiënt in nood is.

Oorspronkelijk stond er beknopt overzicht van deze noodzakelijke items (Zie bijlage 10). Na research

hierover bleek dat wat we hadden, onvoldoende was.

Ik ging aan de slag met de resultaten van de research en breidde de databank uit. Nadien begon ik de

pagina ‘Notfalldaten’ volledig opnieuw op te bouwen. Sommige items kregen een nieuwe subpagina,

andere werden gegroepeerd. Zo werd de beschikbare informatie sterk uitgebreid, maar toch bleef het

geheel overzichtelijk. Details en bewerkingen zijn namelijk op te roepen via een lightbox, zoals men

kan zien in bijlage 12.

6. Volledige herwerking van de rubriek ‘Medikamentenplan ’ (14/04 17/04)

Ook na verdere research bleek dit onderdeel niet volledig aan de vereisten te voldoen van

een goede tool (Zie bijlage 13). De pagina kreeg een vernieuwd, strakker uiterlijk.

Het raadplegen van welke medicatie men moet nemen, hoe lang en op welke tijdsstippen

kan dus eenvoudiger. Extra details werden eveneens toegevoegd. Deze kunnen

opgeroepen worden met een lightbox.

7. Aanmaken van de rubriek ‘Patientenakten’ (18/04 04/05)

Deze rubriek heeft als doel het herbergen van patiëntengegevens zoals bijvoorbeeld allergieën,

ziekten, medische familiegeschiedenis, vaccinaties, trainingsschema’s bij fitnessen, …

Oorspronkelijk was dit deel van het platform zeer beperkt. Slechts raadplegingen bij een arts werden

op 1 webpagina bijgehouden. Een connectie met de databank bestond zelfs niet. Om de

patiëntengegevens allemaal te kunnen bijhouden, waren heel wat nieuwe pagina’s en nieuwe functies

nodig. Dit werk nam een halve maand in beslag.

Het belang van het patiëntendossier is aanzienlijk groter geworden in het platform.

Page 9: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

9

8. Maken van een mobiele website (05/05 11/05)

Zoals eerder werd vermeld, zal er ook een mobiele website worden ingezet. Deze site bevat alle

noodgegevens van een patiënt, maar zonder gevoelige data zoals naam, geboortedatum of

rijksregisternummer. De bedoeling is dus om anoniem te blijven.

De site kan namelijk alleen via een persoonlijke QR-code worden opgeroepen,

die elke patiënt op zijn medische verzekeringskaart zal hebben. Uiteraard zijn

de noodgegevens te raadplegen via verschillende browsers. Een QR-scanner

is ook vereist. De technische ontwikkeling van het QR-gedeelte zal samen met

een andere student worden uitgevoerd.

9. Oplossen bugs (12/05 31/05)

In de code van het platform waren een aantal fouten geslopen. Zo zagen bepaalde stijlelementen er

niet correct uit in verschillende (moderne) browsers. Ook werden niet altijd alle functies correct

opgeroepen. Het oplossen van deze bugs verloopt tussentijds, tot het einde van de maand mei.

10. Uitbreiding bestaande databank (19/05 31/05)

De recente uitbreidingen van het platform hebben uiteraard gevolgen: de nieuwe databank moest

worden bijgewerkt. Een aantal nieuwe tabellen moet worden toegevoegd en ook bestaande tabellen

moeten sterk worden uitgebouwd.

Om de nieuwe structuren duidelijk te houden, zowel voor mezelf, als voor de mensen die me in dit

project opvolgen, heb ik een Engelstalig document opgesteld waarin de functies van alle tabellen

worden uitgelegd. Dit is terug te vinden als Bijlage 19.

In verschillende pagina’s moesten ook de connecties met de databank worden opnieuw geschreven.

Tijdens deze stap blijft de afsplitsing tussen persoonsgegevens (naam, adres, …) en overige data

(meetdata, patiëntendossiers, ...) behouden.

11. Documenteren en afwerken (01/06 08/06)

De laatste week dient vooral om de puntjes op de i te zetten. Zaken, zoals onder andere onafgewerkte

webpagina’s en SQL-statements worden afgewerkt

Zo heb ik in deze tijdsperiode een upload-systeem voor afbeeldingen gemaakt. Een arts kan

bijvoorbeeld röntgenfoto’s toevoegen aan een patiëntendossier.

Documenteren is uiteraard ook belangrijk. Tijdens deze week verzamel ik alle informatie over mijn

prestaties en afgeleverde producten en documenteer ik deze.

Page 10: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

10

Deel 2: Technische uitwerking In het vorige deel had ik algemeen mijn uitgevoerde taken beschreven. In dit hoofdstuk ga ik

meer in op de technische kant en resultaten van die taken. De gebruikte programmeertalen,

gebruikte methodes, … zijn in dit hoofdstuk terug te vinden.

1. Onderzoek en analyse van het project (10/02 19/02)

2. Analyse van het technische gedeelte (20/02 26/02)

Zowel voor het algemeen onderzoek van het project als de analyse van het technische gedeelte was

er geen technische uitwerking vereist. Het is natuurlijk wel zo dat ik met beide taken intensief bezig

was, vooral tijdens de analyse van het technische gedeelte was veel inzicht nodig.

Ik heb een technisch document opgesteld om alle (Duitstalige) informatie uit te klaren en te begrijpen.

Dit is terug te vinden in de bijlagen (bijlage 1).

3. Diverse taken (27/02 16/03)

In deze tijdsperiode heb ik uiteenlopende taken uitgevoerd, zo ook met diverse technische

uitwerkingen.

De implementatie van meertaligheid gebeurde niet in deze tijdsperiode, het aanreiken van een

stappenplan echter wel. Ik heb me moeten verdiepen in Typo3. Het is een CMS dat ik eerder

nog nooit had gebruikt. Ik had er zelfs nog nooit van gehoord.

Typo3 staat gekend als een technisch CMS met hoge leercurve.

Het oplossen van de problemen met de randapparatuur vereiste aanpassingen in de

configuratie en foutafhandeling. Het bijwerken van de drivers, net als de configuratie,

gebeurde in C. De code hiervan mag helaas niet worden vrijgegeven.

Om de connectie tussen databank en site te voltooien, heb ik gebruik gemaakt van PHP en

SQL. Dit gebeurde toen nog pagina per pagina. Het grote nadeel is dat wanneer er iets

verandert met die connectie, dit per pagina moet worden aangepast.

4. Ontwerpen en aanmaken van een nieuwe databank (17/03 26/03)

Het eerste visuele ontwerp van de databank heb ik op papier gemaakt. Voor het aanmaken van de

nieuwe databank werd gebruik gemaakt van de open-source tool MySQL Workbench. De databank zelf

werd opgebouwd met MySQL. Ik heb alleen toegang tot de databank waarin data zoals meetgegevens,

patiëntendossiers, … worden bijgehouden. Het is dan ook hieraan dat ik werk.

Een andere databank bevat slechts de persoonsgegevens van patiënten. Dit is essentieel om privacy

en veiligheid te garanderen. In geval van een hack, zouden de gegevens op die manier anoniem blijven.

Op de ontwerpfoto’s (bijlage 8) staan ook de tabellen voor persoonlijke gegevens, maar die worden in

de realiteit dus niet gebruikt. Ze zijn in dit geval louter ter illustratie.

Page 11: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

11

5. Aanmaken en aanpassen van de rubriek ‘Notfalldaten’ (27/03 13/04)

De pagina’s werden geïmplementeerd in Typo3. Het Typo3-systeem zorgt ervoor dat de

algemene lay-out niet opnieuw hoeft te worden opgebouwd. Deze lay-out werd tijdens

een eerder stadium van het project reeds gemaakt.

Het ophalen van gebruikersdata gebeurt in verschillende, aparte PHP-pagina’s, aan de hand van SQL-

statements. Voor deze rubriek werd gekozen om gebruik te maken van tabbladen. Deze tabbladen,

samen met het weergeven van de data vereist naast PHP ook HTML en CSS (versie 3).

Dit heb ik van nul moeten opbouwen. Elk tabblad bevat totaal andere informatie en is gekoppeld aan

een PHP-pagina. Bovendien wordt er ook gebruik gemaakt van Ajax-code om het onnodig laden van

data te voorkomen en de performantie te verbeteren.

In deze stap worden stilaan alle statements met de databank ter vereenvoudiging gecentraliseerd.

Slechts 1 bestand bevat vanaf nu ook de connectie-instellingen met de databank.

Tot slot was mijn taak ook om een nieuw type lightbox te ontwerpen. Tot op dat moment moest elk

venstertje een eigen configuratie krijgen, wat bijzonder inefficiënt was en bovendien ook moeilijk. De

nieuwe versie maakt onder andere gebruik van JavaScript en CSS.

6. Volledige herwerking van de rubriek ‘Medikamentenplan ’ (14/04 17/04)

Ook dit onderdeel werd in Typo3 geïmplementeerd. Het opvragen van data uit de databank en het

weergeven ervan gebeurt ook via PHP. HTML en CSS geven het uiterlijk en de indeling weer.

De eerder ontworpen lightbox kon, zonder al te veel moeite, opnieuw worden hergebruikt.

7. Aanmaken van de rubriek ‘Patientenakten’ (18/04 04/05)

Deze rubriek vereiste dezelfde technische uitwerking als voorgaande onderdelen. In dit

geval dienden er veel nieuwe pagina’s aangemaakt te worden, wat de langere

ontwikkeltijd verklaart.

Alle statements met de databank worden centraal bijgehouden in hetzelfde document

waar eerdere code voor de noodgegevens en het medicatieplan stond.

Om alles verstaanbaar te houden, is er telkens een duidelijke commentaarlijn die aangeeft over welk

onderdeel de code gaat.

8. Maken van een mobiele website (05/05 11/05)

De gehele mobiele lay-out werd opgebouwd door middel van CSS, HTML en JavaScript.

PHP zorgt er dan weer voor dat men per pagina stukken lay-out kan hergebruiken. Ook kan men via

PHP data uit de databank halen. Sommige deeltjes PHP zijn identiek met de algemene website. In de

toekomst kan ook de mobiele website gebruik maken van het centrale bestand, met SQL-statements,

van de hoofdwebsite.

Er wordt voor de mobiele website echter geen gebruik gemaakt van het Typo3-systeem. Beiden zijn

qua beheer dan ook volledig onafhankelijk.

Page 12: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

12

9. Oplossen bugs (12/05 31/05)

De oplossen van bugs gebeurde in verschillende lagen van de website. Zo werden aanpassingen in CSS

en HTML doorgevoerd om problemen met stijlelementen, zoals tabellen, buttons of titels, op te lossen.

Ook in de PHP-code werden een aantal foutjes opgelost.

10. Uitbreiding bestaande databank (19/05 31/05)

De databank-uitbreidingen gebeuren via MySQL. Ook in dit geval wordt er gebruik gemaakt van de tool

MySQL Workbench.

Tijdens deze taak heb ik ook gebruik gemaakt van PHP. Ik moest namelijk op verschillende webpagina’s

de SQL-statements bijwerken. In een aantal gevallen werden zowel de SQL statements (tegen SQL-

injectie) als de PHP-pagina’s (authenticatie) beter beveiligd en efficiënter.

11. Documenteren en afwerken (01/06 08/06)

Deze laatste afwerkingen gaan van databank-aanpassingen tot het herschrijven van titels

op de webpagina’s. Het is m.a.w. zeer uiteenlopend, vaak zonder al te veel technische

ingrepen.

Het upload-systeem voor afbeeldingen is een complexer gedeelte. Er wordt gebruik gemaakt van PHP

en SQL. Verschillende veiligheidsmaatregelen zijn ingebouwd. Zo wordt er eerst gecheckt op het type

bestand. Alles wat geen afbeelding is, wordt geweerd. Verder wordt er ook nagekeken of het

opgeladen bestand niet te groot is. Indien de grens van 3MB wordt overschreden, wordt het proces

afgebroken. Deze grens is eenvoudig aan te passen door de webbeheerder.

Tot slot wordt er nog extra controle uitgevoerd om SQL-injectie tegen te gaan.

Page 13: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

13

Deel 3: Reflectie en evaluatie van het resultaat Zoals eerder beschreven, is dit project al verschillende jaren aan de gang en zal het ook dit jaar nog

niet volledig klaar zijn. Ik geloof wel dat ik een grote positieve inbreng aan het project heb geleverd.

Eerst en vooral heb ik veel bijgedragen aan de technische kant van de zaak. Hoewel mijn

afstudeerrichting normaal gezien netwerken is, heb ik tijdens deze stage bijzonder veel

geprogrammeerd. De databank is nu volledig anders opgebouwd dan bij mijn aankomst. Het is ook

meer uitgebreid, zonder daarbij nutteloze zaken te bevatten.

Een ander aspect waar ik bijzonder tevreden mee ben, is de website. In het begin vertelde men me dat

de site vrij snel in mekaar was gezet om toch maar een ‘front-end’ te hebben. Iets wat toekomstige

gebruikers reeds konden bewonderen tijdens een medische conferentie in Potsdam. De website die ik

achterlaat, is echter amper te vergelijken met de zogenaamde ‘mockup’-site. Er zijn heel wat functies

en mogelijkheden die nu wel werken, ik heb talrijke nieuwigheden geïmplementeerd, de eerder

gebruikte code heb ik vereenvoudigd, …

Wat wel beter kon, is de manier van plannen binnen het project. Ik had al tijd en moeite gestopt in de

oudere databank en webpagina’s (bijvoorbeeld noodgegevens). Dit was uiteraard in overeenstemming

met de opdrachtgever. Helaas bleek na research dat die ‘informatiebundels’ op de website

onvoldoende uitgebreid en overzichtelijk waren. Het resultaat was dat ik niet veel code kon

hergebruiken en dus een heel stuk opnieuw moest maken.

Dit was iets dat ik helaas zelf niet in handen had. Een medestudente deed namelijk die research en de

resultaten kwamen een stuk later uit de bus dan verwacht.

De conclusie is dat het resultaat positief is. Ik ben fier op het werk dat ik geleverd heb tijdens deze vier

maanden en als ik de mondelinge feedback van mijn verantwoordelijke en medewerkers/studenten

mag geloven, zijn zij dat ook.

De schriftelijke feedback is rechtstreeks van mijn verantwoordelijke uit naar de cel internationalisatie

in Brussel gestuurd.

Het project is er een heel stuk op vooruit gegaan en is klaar om verder gezet te worden.

Page 14: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

14

Deel 4: Persoonlijk ontwikkelingsplan “Al doende leert men”, een befaamd spreekwoord dat ik alleen maar kan beamen.

Gedurende deze driejarige IT-opleiding heb ik heel wat competenties verworven, maar

de praktijk brengt bijzonder veel bij.

1. Algemene competenties, business skills en soft skills

Mijn algemene skills zijn er tijdens deze Erasmus-ervaring natuurlijk goed op vooruit gegaan.

Gedurende mijn studierichting Latijn-Wetenschappen kwam ik al in contact met verschillende, vooral

oudere, culturen. Nu heb ik kennis gemaakt met vele nieuwe mensen en nieuwe hedendaagse

culturen. Zo kwam ik in contact met Duitsers, Mexicanen, Polen, Oekraïners, Tsjechen, Chinezen, …

Kortom, mensen die een andere achtergrond hebben dan wat ik in België, in mijn eigen omgeving,

gewoon ben. Deze positieve contacten gelden eveneens op professioneel vlak. Ik heb de relaties met

mijn medestudenten/medewerkers altijd goed onderhouden, ook met de opdrachtgever.

Bovendien zorgde deze internationale uitwisseling er ook voor dat mijn talenkennis actief werd

gestimuleerd. De Engelse taal was hier bijzonder nuttig, maar ondertussen is mijn Duits ook sterk

verbeterd. Het is zelfs zo dat ik tijdens meetings nu meepraat in het Duits, terwijl ik vroeger alleen een

beetje basiskennis had.

Tevens kwam deze uitwisseling mijn zelfstandigheid ten goede. Ik heb binnen het project zelf mijn

opgelegde taken kunnen uitvoeren, zonder teamwerking achter wege te laten.

Het speciale aan een Erasmus-stage is dat men in het buitenland werkt en leeft. Dit heeft er evenzeer

voor gezorgd dat deze vaardigheid sterker is geworden.

2. IT-competenties

Deze stageperiode heeft mijn IT-skills op een positieve manier beïnvloed.

Eerst en vooral waren de regelmatige, stipte meetings nieuw voor mij. Zowat elke week kwamen

medestudenten, opdrachtgever en ik bij elkaar om te bespreken wat er reeds voltooid was en wat er

nog op het programma stond. Kritiek of verbetertips waren geen taboe en gelukkig maar. Zo kon

iedereen ook echt vooruit gaan in het project.

Daarnaast zijn ook mijn programmeercompetenties er natuurlijk op vooruit gegaan. In grote mate op

vlak van websiteontwikkeling (HTML, CSS, PHP, JavaScript), maar ook in kleinere mate C. Verder is ook

mijn kennis in databankontwikkeling verbeterd. Ik heb tijdens het programmeren altijd geprobeerd

om zo efficiënt en eenvoudig mogelijk te werken. Zo staan er in mijn code regelmatig

commentaaraanduidingen, gebruik ik consistente naamgevingen en hergebruik ik code waar mogelijk.

Helaas heb ik tijdens deze stageperiode mijn netwerk- en systeemcompetenties niet kunnen benutten

en verbeteren.

Ik heb tijdens mijn opleidingsjaren informatica altijd geleerd dat documenteren uiterst belangrijk is.

Wanneer iemand anders jouw werk verderzet, moet deze persoon weten waarover het gaat. In dit

project kon ik proefondervindelijk vaststellen hoe cruciaal dit is. Zo moest ik aan de hand van

documentatie van mijn voorgangers mezelf inwerken. Elke aanpassing die ik doorvoerde, moest ik dan

toelichten zodat mijn opvolgers alles zouden begrijpen.

Page 15: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

15

3. Toekomst

Zoals in het begin aangehaald, ben ik ervan overtuigd dat men al doende heel wat leert. Ik ben klaar

om in een professionele omgeving mee te werken en daar nog heel wat extra ervaringen op te doen.

Het vakgebied IT staat gekend voor de permanent bijscholing. Ik heb ook nog plannen om verdere

certificaten te behalen, zowel bij Cisco als bij Microsoft.

4. SWOT-analyse

Aan de hand van de gekende competenties, kan men een SWOT-analyse samenstellen.

Verlegen

Ik moet mensen beter kennen

om vlotter met hen om te gaan.

Leiding nemen

Ik verkies teamwerk of

leiderschap met beperkte sociale

hiërarchie.

Punctueel

Ik houd alles netjes en geordend

bij. Ik respecteer afspraken.

Zelfstandig

Ik werk autonoom in

teamverband.

Doorzetter

Ik zet door, ook als het tegen zit.

Sterktes Zwaktes

Net afgestudeerd

Ik ben zeer flexibel en niet vast-

geroest aan een bedrijfsfilosofie.

Altijd up-to-date

IT is een branche waar permanente

vorming mogelijk is.

Concurrentie

Goedkopere werkkrachten kunnen

leiden tot werkafname of

jobverlies.

Gebrek aan ervaring

Ik heb nog niet genoeg ervaring in

professionele omgevingen.

Kansen

Sterktes

Bedreigingen

Sterktes

Page 16: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

16

Bronnenoverzicht Tijdens mijn stage heb ik gebruik gemaakt van heel wat online bronnen. Dit is een overzicht met de

voornaamste bronnen:

Awesome Ajax Lightbox and Modal Dialog Solutions

Geraadpleegd via http://www.1stwebdesigner.com/freebies/ajax-lightbox-modal-dialog-solutions

Dynamic Drive DHTML Scripts- Ajax Includes Script

Geraadpleegd via http://dynamicdrive.com/dynamicindex17/ajaxincludes.htm

Dynamically selecting a tab/ loading an external page

Geraadpleegd via

http://dynamicdrive.com/dynamicindex17/ajaxtabscontent/ajaxtabs_suppliment.htm

Tabs | jQuery UI

Geraadpleegd via http://jqueryui.com/tabs/#ajax

PHP Tutorials Uploading Storing an Image inside a MySQL Database Part 1 + Part 2

Geraadpleegd via http://youtube.com/watch?v=o-0bfleqE2g

Geraadpleegd via http://youtube.com/watch?v=pMLc4IXmYfg

Ajax + PHP validation and call Javascript function inside PHP validation

Geraadpleegd via http://stackoverflow.com/questions/18138377/ajax-php-validation-and-call-

javascript-function-inside-php-validation

Create a Lightbox effect only with CSS – no javascript needed

Geraadpleegd via http://emanueleferonato.com/2007/08/22/create-a-lightbox-effect-only-with-css-

no-javascript-needed/

PHP: getimagesize – Manual

Geraadpleegd via http://www.php.net/manual/en/function.getimagesize.php

MySQL BLOB using PHP

Geraadpleegd via http://phppot.com/php/mysql-blob-using-php/

Making Web, Mobile friendly

Geraadpleegd via http://mobifreaks.com

Pure Javascript, HTML 5 & CSS3 Tabs

Geraadpleegd via http://www.my-html-codes.com/javascript-tabs-html-5-css3

Delete button and confirmation Geraadpleegd via http://stackoverflow.com/questions/16962280/delete-button-and-confirmation

Javascript submit form not working on Firefox Geraadpleegd via http://www.daniweb.com/web-development/javascript-dhtml-

ajax/threads/411964/javascript-submit-form-not-working-on-firefox

Upload images to mysql database Geraadpleegd via http://daniweb.com/web-development/php/code/301923/upload-images-to-mysql-

database

Page 17: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

17

Bijlagen Hieronder kan men een lijst der bijlagen terugvinden.

Bijlage Titel

1 Documentatie BSN (Engelstalig)

2 Documentatie Typo3 meertaligheid (Engelstalig)

3 Vitaldatamanager

4 Overzicht van alle gehouden meetings

5 Notities tijdens meetings

6 Takenlijsten

7 Presentatie meeting 7 maart 2014

8 Eerste fases van de nieuwe databank

9 Finale afwerking databank

10 Situatie ‘Notfalldaten’ na eerste herwerking op 15 maart 2014

11 Situatie ‘Notfalldaten’ na grondige herwerking

12 Definitief vernieuwde ‘Notfalldaten’

13 Situatie ‘Medikamentenplan’ op 7 april 2014

14 Definitief vernieuwde ‘Medikamentenplan’ op 17 april 2014

15 Weergave van de mobiele site voor noodgegevens (Notfalldaten) op 11 mei

2014

16 Uploadsysteem

17 POST Instructies pagina

18 Code webpagina noodgegevens

19 Databank documentatie

20 PowerPoint presentatie juni 2014

Page 18: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 1: Documentatie BSN (Engelstalig) Dit is het resultaat van de analyse van de Duitstalige projectinformatie. Het heeft me geholpen om het

gehele project beter te begrijpen, zowel qua doelstellingen en scope als qua technische werking.

Documentation BSN 1. The project

In this first step I need to discover what kind of project “Health Kiosk” is. I’ve analyzed and read the

documents that my German colleges had composed earlier. The result of my research is summarized

below:

Today internet is used everywhere. People are familiar with computers, tablets, smartphones … and all

these devices are ‘connected’ with the internet. This offers a lot of opportunities in different domains,

including the medical sector. This is very important.

In many countries, over the whole world, the mean age of people increases. This means that people live

longer. At the same time there is a decrease of births. The result is an unbalanced demographic

situation.

Healthcare is an essential factor in this demographic transition. More and more doctors will be

necessary in the future. At the moment these doctors are spending a lot of time on measuring and

processing manually the medical parameters of their patients.

The Health Kiosk (BSN Gesundheitskiosk) is a computer application that helps doctors, nurses, medical

assistants … measuring medical parameters, such as weight or blood pressure. The results of the

measurements are automatically send to and stored in a secured database. This means that all these

results can be consulted later on, which largely can improve the medical assistance.

The application uses different sensors/devices to measure these parameters. This is completely

wireless. The project started as a real kiosk, but will be extend to different mobile hardware (iPad with

iOS, Surface with Windows 8, Android tablet, Windows computer…).

Architecture

Health Kiosk is divided into different parts (data store, webserver) as you can see in the scheme below.

The connections between the data store, as well as the data store itself, need to be secured.

The Content Management System that is used is TYPO3.

Page 19: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

2. Technical working

The Health Kiosk is a project that has been developed during several years in the Fachhochschule

Brandenburg and it’s still in evolution. My job is to contribute in the different evolution stages of this

project.

2.1 Connection agent-manager In part 1 of this document, you could already read that specific devices will be used to measure blood

pressure, weight and so on. These devices need to communicate their results.

The ISO/IEEE 11073 standard makes communication between devices (sensors) and extern computer

systems possible. The main goal of this standard is a plug & play-connection, which can send all the

medical data from the devices, in a structured and efficient way to the computers. The computer that

communicates with the device becomes a ‘manager’, the medical sensor becomes an ‘agent’.

Different devices are supported with this ISO-standard: Weight scale, blood pressure monitor,

electrocardiograph …

In this project the goal is that we can measure the following parameters:

Blood pressure

Weight

Blood sugar

Blood clotting

Oxygen saturation

At the moment, we can only use the blood pressure device. The weighting scale is not pairing yet

with the computer.

Data transmission

In this paragraph you can find, as example, how a weight scale (agent) communicates with the computer

(manager), according to the ISO IEEE 11073 standard.

1. After the start-up of the agent, a connection is set up between agent and manager.

2. The manager sends its standard configuration to the agent. When the configuration of the

manager is unknown, an advanced configuration is requested. The agent sends its advanced

configuration to the manager.

3. The connection is established and both devices are ready to send and receive vital data.

Manager and agent are in active-mode.

4. The manager asks the agent the MDS Object attributes with the ‘Remote Operation Invoke’

command. Then the agent sends its MDS Object attributes with the command ‘Remote

Operation Response’.

5. In this step the measured vital data is transferred. When the transfer was successful, the

manager sends a confirmation to the agent. Thereafter, other measured data can be send.

The data transmission can be executed in a different way when another agent is used.

Communication protocol

The connection between an agent and a manager needs to be in accordance with the ISO IEEE

11073 standard. The Bluetooth Health Device Protocol (HDP) is a perfect protocol for the

transmission of medical data.

Page 20: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Drivers

Some devices use specific, proprietary protocols to send and receive data. Unfortunately, in that case,

this devices can’t be connected with every manager. Drivers, that adapt the proprietary data to data in

the ISO IEEE 11073 standard, need to be created.

A Software Development Kit (11073-SDK) has been created by Prisma GmbH and can be used for the

creation of the drivers. The SDK is compatible with Windows and Linux.

The SDK consists of different components:

1. Agent component

2. Manager component

3. Message Handler component

4. PHD component

5. ACSE component

6. Mder component

The driver needs to be written in Java, which means that the driver is platform independent.

2.2 Vital data-manager The vital data-manager is responsible for receiving and managing data send by the agents.

Installation

The first thing to know is that the following components are required to run the manager:

- Windows or Linux OS

- Bluetooth Stack

o Windows: Microsoft Bluetooth Stack

o Linux: BlueZ-Package

- Webserver (e.g. Apache)

- MySQL Database

- Java Runtime Environment

The use of the vital data-manager on Windows requires the presence of Cygwin. This software provides

native integration of Windows-based applications and resources with the respective Unix-environment

applications and resources.

The second step is to put the whole directory of the manager in the root directory (C:\) and adapt

configuration files. The first file to adapt is DB.properties. Change the parameters of the database

connection to your settings. Each device has his own directory. There you can find also a properties-file.

Here the MAC-address of the using medical devices needs to be entered.

Usage

The medical devices need to be connected with the computer, using Bluetooth. Click on

ManagerServer.bat to start the manager. Use ManagerServer - Logging.bat to start the manager and

keep logs in a logfile.

Now the file Treiber.bat, which is linked to the drivers, keeps asking the medical devices to send their

data to the manager. When a device is connected and used, the data will appear in the website (GUI).

The source code (kernel) of the vital data-manager is not public/open, which means I cannot watch,

learn and adapt the existing code. Modifications must be done by Mr. P. Emmermacher (Prisma GmbH).

Configuration files are accessible.

Page 21: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

2.3 Graphical User Interface (18/02) The graphical part of the project is a website, running on the Typo 3-framework. Typo 3 is Content

Management System: you can publish, edit and modify content in one central interface. Like in many

similar systems, every web page is modular, which means that different, individual components form

one page together. The advantage is that you can edit one component, e.g. the menu, and the changes

are visible on al web pages.

Img. 1: Start page BSN Gesundheitskiosk (2014.02.20)

Img. 2: Start page BSN Gesundheitskiosk (2014.03.07)

When you want to run a website, you need a web service. In this case, we use the free open source

platform XAMPP. XAMPP can launch and manage different services: HTTP server, MySQL database …

The next step is to run the website on a webhosting, which is publicly accessible for everyone.

Database

The database of the website is made in SQL and can be run on the phpMyAdmin-framework. In PHP-

files we link to the database and get the requested data. In the future, we will adapt these pages: we

will work in layers. This provides a more efficient and secure system.

Due to other security reasons, the users of the website are put in another, separate database. In the

ERD-model, we put the userDB and dataDB together to get a better overview.

I analyzed the existing way of working and redesigned the database. Normalization is now correctly

used. I also added relationships between the different columns.

One of my upcoming tasks is to complement the database with new, required columns.

Page 22: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Img. 1: General overview [ERD] of the database (2014.03.17)

Multilingual

This project is not only interesting for Germany, but also for many other countries.

A support for a multilingual site is recommended. With Typo 3 this is possible.

Extensions can, similar to a browser, add some interesting functionality, including

multilingualism.

On every page a menu will appear where you can choose the language.

I found out how the installation of such a plugin works.

Page 23: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 2: Documentatie Typo3 meertaligheid (Engelstalig) Hieronder staan alle uit te voeren stappen om de Typo3-site geschikt te maken voor meerdere talen.

TYPO3 multi language The Typo3-systems offers the possibility to install extensions. These small programs can offer extra,

useful functions. In this document, you can find step-by-step explication how to make a Typo3 website

ready for multiple websites.

1. Install the extension “Static Info Tables”

Download and install the extension “Static Info Tables” 1 in the extension manager. The add-on will

expand the typo3 database with countries, languages … After installing, include static in your main

typoscript template (see image under chapter 8: Realurl and multilanguage). Without installing this add-

on, the localization tab in TemplaVoila will not appear.

Please adapt the PHP.ini by changing the maximum execution time (max_execution_time) from 30 to

90 or higher. This can avoid errors while installing.

2. Create website languages

Go via List and click on the logo

of Typo3. There create the

wanted languages. Fill in

language, ISO code and flag. We

use English as default in this

example. You don’t need to

define that language. Look at

the id’s of the languages which

you can see if you hover with

the mouse over the symbol.

Those IDs will be used later in

Realurl.

3. Check if langdisable is in Templavoila data source

This code is in the data structure of a Templavoila template. You can verify that in the DS record.

<meta>

<langDisable>1</langDisable>

</meta>

1 http://typo3.org/extensions/repository/view/static_info_tables

Page 24: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

4. Define the languages in Typoscript.

In the setup of the main Typoscript template the following code has been put. In our example our default

language is English and we included Spanish, German, Dutch, French and Portuguese. The IDs have to

be identic to the created web languages. The default language has uID 0.

config.linkVars = L

config.uniqueLinkVars = 1

config.sys_language_overlay = content_fallback

config.language = en

config.locale_all = en_EN

config.htmlTag_langKey = en-EN

config.sys_language_uid = 0

[browser = msie]

config.htmlTag_setParams = xmlns="http://www.w3.org/1999/xhtml"

xmlns:v=”urn:schemas-microsoft-com:vml” xml:lang="en"

[globalVar = GP:L = 2]

config.language = es

config.locale_all = es_ES

config.htmlTag_langKey = es-ES

config.sys_language_uid = 2

[globalVar = GP:L = 2] && [browser = msie]

config.htmlTag_setParams = xmlns="http://www.w3.org/1999/xhtml"

xmlns:v=”urn:schemas-microsoft-com:vml” xml:lang="es"

[globalVar = GP:L = 3]

config.language = de

config.locale_all = de_DE

config.htmlTag_langKey = de-DE

config.sys_language_uid = 3

[globalVar = GP:L = 3] && [browser = msie]

config.htmlTag_setParams = xmlns="http://www.w3.org/1999/xhtml"

xmlns:v=”urn:schemas-microsoft-com:vml” xml:lang="de"

[globalVar = GP:L = 4]

config.language = nl

config.locale_all = nl_NL

config.htmlTag_langKey = nl-NL

config.sys_language_uid = 4

[globalVar = GP:L = 4] && [browser = msie]

config.htmlTag_setParams = xmlns="http://www.w3.org/1999/xhtml"

xmlns:v=”urn:schemas-microsoft-com:vml” xml:lang="nl"

[globalVar = GP:L = 5]

config.language = fr

config.sys_language_uid = 5

config.locale_all = fr_FR

config.htmlTag_langKey = fr-FR

[globalVar = GP:L = 5] && [browser = msie]

config.htmlTag_setParams = xmlns="http://www.w3.org/1999/xhtml"

xmlns:v=”urn:schemas-microsoft-com:vml” xml:lang="fr"

[globalVar = GP:L = 6]

config.language = pt

config.locale_all = pt_PT

config.htmlTag_langKey = pt-PT

config.sys_language_uid = 6

[globalVar = GP:L = 6] && [browser = msie]

config.htmlTag_setParams = xmlns="http://www.w3.org/1999/xhtml"

xmlns:v=”urn:schemas-microsoft-com:vml” xml:lang="pt"

Page 25: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

[global]

More information about XHTML and the language in TYPO3, can be find on the Wiki of Typo32.

For now just copy it and adjust to your languages. Don’t forget to end with [global]! Without realurl

installed your URLs will now be something like www.yoursite.com/index.php?id=1&L=2 , where L=2

means that you get the Spanish version of the page.

5. Put the default language and flag in TSConfig

On your root page edit the page properties. Under Options include in TSConfig:

mod.SHARED.defaultLanguageLabel = English

mod.SHARED.defaultLanguageFlag = gb.gif

This sets the default language on English and uses the English flag in the backend.

6. Create new page translation and page content

Click via Page on the page where you wish to create a new translation. There choose the localization

view tab and create a new page translation.

After that you can fill in the page title for that language.

By creating a new webpage, it will be possible to choose the language for that page.

2 http://wiki.typo3.org/XHTML

Page 26: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

7. Creating a language selector on the typo3 website

For the language selector, you can install in the extension sr_language_menu 3. No configuration is

needed if your default language is English. If not change in constant editor the default language and

country. For example for German:

plugin.tx_srlanguagemenu_pi1.defaultLanguageISOCode = DE

plugin.tx_srlanguagemenu_pi1.defaultCountryISOCode = DE

You can add this extension as a plugin on your pages via page content or you could map it with

TemplaVoila. By mapping it appears on each page. To do that create a sysfolder. You can call it

“elements”. In the sysfolder, create page content and choose “Language Selection”. Select the

languages from the globe level and choose between a dropdown list or flags.

Note: you do not need to add the default language.

In the TemplaVoila html template you can add for example:

<div id="language-selector"><!-- languages --></div>

Go via List to the TemplaVoila storage folder, click on the TO icon before your template and

then Templavoila, modify DS/TO.

Add a new data element language.

Choose as mapping type Element and as Editing Type “Typoscript object path”, fill in after

update lib.language.

3 http://typo3.org/extensions/repository/view/sr_language_menu

Page 27: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Update, click on map, choose as Mapping Window “mode: html source” and click on the new created

div. Then click SET and “save as” to overwrite the TemplaVoila template.

Now, in your Typoscript template add the following under setup:

lib.language = RECORDS

lib.language.tables = tt_content

lib.language.source = 62

The number needs to correspond with the ID of the page content element. You can see the ID by

hovering with the mouse over the icon before the Language menu item under the folder elements as

stated above.

When you’re set and done clear all cache.

If you now check on the frontend of your site the language selector should be visible and working.

The language selector will of course only appear when the page translations are available.

The only thing to do now is putting it on the right place in the design. Add this in your CSS:

#language-selector {

left: 500px;

top:100px;

position:absolute;

z-index:10;

}

Page 28: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

8. Realurl and multilanguage

To change your URL, to make the more readable you can install the extension Realurl 4.

After installing uncheck “Enable automatic configuration” in the extension manager at the realurl

extension. In the main Typoscript template the following code needs to be put under setup:

tx_realurl_enable = 1

baseURL = http://www.yourwebsite.com/

simulateStaticDocuments = 0

prefixLocalAnchors = all

More info about the needed .htaccess file at the root of TYPO3 folder 5 is absolute necessary.

The pre-configuration of the extension CB Realurl 6 is good enough. It includes configuration for some

popular extensions like tt_news.

You can also chose the option to create manually a realurl configuration and include it in the file

localconf.php.

Install cbrealurl in the extension manager and include static in your main Typoscript template.

Now you need to alter the file realurl.php in the extension cbrealurl with your languages. Unfortunately

this needs to be done in PHP instead of an editor.

4 http://typo3.org/extensions/repository/view/realurl 5 http://www.training-typo3.com/2008/12/09/installation-of-typo3-for-newbies-part-1-ftp-htaccess-and-chmod/ 6 http://typo3.org/extensions/repository/view/cbrealurl

Page 29: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Click on the extension manager, click on “Cannonbose RealURL Configuration Helper” then choose “Edit

files”.

You see there the languages defined when you scroll down a little. Default are some other languages

defined than you see in the image above. In this example our default language is English and we

included Spanish, German, Dutch, French and Portuguese. The IDs have to be identic to the created web

languages.

In the URL you now will get http://www.yoursite.com/site/ for English and for the other languages it will

become http://www. yoursite.com/es/site/, http://www. yoursite.com/de/site/ etc.

If you do see the message “SAVING IS DISABLED” instead of the save button go to the install manager

first, find in all configuration “[noEdit]” (use ctrl-F in Firefox to search), uncheck it and then scroll down

totally and click on “Write to localconf.php”.

Source:

TYPO3 multi language, December 15, 2008 (http://training-typo3.com/2008/12/15/typo3-multi-language)

Page 30: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 3: Vitaldatamanager De exacte code van de datamanager kan helaas niet worden vrijgegeven. Een aantal screenshots van

het programma (o.a. configuraties) worden hier weergegeven.

Page 31: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 4: Overzicht van alle gehouden meetings Hieronder kan u een tabel terugvinden van alle gehouden meetings, samen met het uur van aanvang

en uur van afronding.

Datum Start Einde

10 februari 2014 9 uur 11 uur

12 februari 2014 9 uur 10 uur

14 februari 2014 10 uur 12 uur

17 februari 2014 9:30 uur 11:30 uur

19 februari 2014 10 uur 12 uur

20 februari 2014 10 uur 12:30 uur

25 februari 2014 10 uur 12 uur

27 februari 2014 10 uur 12:15 uur

3 maart 2014 10 uur 12 uur

7 maart 2014 10 uur 12:15 uur

17 maart 2014 10 uur 11:45 uur

21 maart 2014 15 uur 16:30 uur

28 maart 2014 11 uur 12:30 uur

3 april 2014 10 uur 12 uur

8 april 2014 10 uur 11:30 uur

15 april 2014 10 uur 11:45 uur

22 april 2014 9:30 uur 11 uur

25 april 2014 10 uur 11 uur

2 mei 2014 10 uur 11:15 uur

8 mei 2014 14 uur 15:15 uur

15 mei 2014 14 uur 15:30 uur

28 mei 2014 14 uur 16 uur

6 juni 2014 15 uur 16:30 uur

10 juni 2014 10:30 uur 11:40 uur

Page 32: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 5: Notities tijdens meetings Gedurende verschillende meetings heb ik notities bijgehouden van wat er werd besproken. In vele

gevallen was het echter zo dat er mondeling afspraken werden vastgelegd.

Meetings

Page 33: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

12/02/14

Folder

QR: site

Thomas Jacob: verantw. site

Naumann: telecom earlier, now project

Sebastian Keideweiss: typo3

Next: room 317? Nee, bureau

VRAGEN?

Erik Rauchstein

Phillip Emmermacher

Tobias

tekst maken kort: manuals voor gebruiken toestellen. V.b.: hoe bloeddruk nemen ed.

17/02/14

Service

Find links in third column: general (external) services

V.b. Doctor, medical stations?

Internet tests

Find headlines and websites (tests)

Donderdag 10u

Teksten

17/03/14

CeBIT

- Android Stick Smart-TV (COL Tech)

- Home-automatisation: Power management (Dawon DNS)

- In general

Results Putri

Hand-out

o Notfalldaten

Page 34: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

o Design

Link to info about required fields

o Broadcast

Card with QR-code, where link to notfalldaten saved is. This card can be used in case of emergency

(scan QR)

To do: communicatie met Emmermacher in BSCW plaatsen

Next meeting: Friday 21, at 3PM. Room: 321

25/04/14

- Adapting existing webpages (Patientenakte, Medikamentenplan)

- Creating new webpages (Patientenakte)

- Finishing mobile webpage (Notfalldaten)

- Creation and adaptations in database

- Finishing documentation database

- Testing devices with Windows 7-computer

- Implementing Multilanguage-system (with Tobias, Typo3)

Vervolg

In de meetings die erna volgden, werd besloten om te werken met een duidelijk afgebakende ‘Task

list’. Alle uit te voeren taken werden daar opgesomd, samen met de prioriteit en deadline.

Deze takenlijsten zijn eveneens terug te vinden in de bijlagen.

Page 35: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 6: Takenlijsten Na een aantal weken werd besloten om alle uit te voeren taken te groeperen en te voorzien van een

prioriteit en deadline.

03/04/14

Page 36: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

15/04/14

Page 37: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …
Page 38: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 7: Presentatie meeting 7 maart 2014 Dit is een tussentijdse presentatie die ik tijdens een meeting (op 7 maart) heb gegeven.

Page 39: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 8: Eerste fases van de nieuwe databank De eerste aanpassingen, op 20 maart 2014.

Page 40: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

De tweede rij aanpassingen in de databank, op 26 maart 2014.

Page 41: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 9: Finale afwerking databank Deze screenshot toont hoe de databank is opgebouwd. Er zijn weinig relaties tussen de verschillende

tabellen te zien op deze afbeelding. Dit komt omdat de persoonsgegevens in een aparte databank

zitten. De link tussen de twee databanken gebeurt via het beveiligde Typo3-systeem.

Page 42: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 10: Situatie ‘Notfalldaten’ na eerste herwerking op 15 maart 2014 Alle noodgegevens worden op 1 pagina weergegeven. De nieuw toegevoegde plusjes zorgen ervoor

dat men nieuwe data kan toevoegen.

Bijlage 11: Situatie ‘Notfalldaten’ na grondige herwerking Startpagina van de noodgegevens. Nog niet alle tabbladen werken correct, waardoor er nog geen

testgegevens kunnen worden gebruikt.

Page 43: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 12: Definitief vernieuwde ‘Notfalldaten’ Deze startpagina geeft een kort overzicht weer van noodgegevens. Wanneer men op een element klikt,

wordt men automatisch naar het juiste tabblad doorverwezen.

Alle items worden zelfstandig geüpdatet.

Hieronder een screenshot van het tabblad “diagnosen”. Een algemeen overzicht van gestelde

diagnoses door artsen wordt hier weergegeven.

Page 44: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Indien men meer informatie wenst te verkrijgen (van bijvoorbeeld een diagnose), of wijzigingen wenst

aan te brengen, kan men op informatie-icoontje klikken. Een lightbox zal dan verschijnen.

Dankzij het gebruik van HTML5 kan er gebruik gemaakt worden van extra nieuwe functies, zoals een

kalender indien men een datum moet opgeven. Bij het gebruik van oudere browsers kan men gewoon

een datum zelf ingeven.

Page 45: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 13: Situatie ‘Medikamentenplan’ op 7 april 2014 Het medicatieplan geeft een overzicht van welke medicatie een patiënt wanneer moet nemen en in

welke aantallen.

Het aanpassen van gegevens gebeurt in 1 lightbox. Het vertraagt nodeloos de webpagina gezien alle

invoervelden, ook de niet-aangepaste, worden geüpdatet na bevestiging.

Page 46: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 14: Definitief vernieuwde ‘Medikamentenplan’ op 17 april 2014 Het nieuwe medicatieplan is moderner en eenvoudiger dankzij de icoontjes. Elk item kan ook

afzonderlijk worden bewerkt door op het informatie-icoontje te klikken.

Bijlage 15: Weergave van de mobiele site voor noodgegevens (Notfalldaten) op 11 mei 2014 In geval van nood kan een omstaander de QR-code inscannen van een verzekeringskaart. Deze linkt

door naar deze mobiele website waar men anoniem noodgegevens, zoals allergieën of gebruikte

medicatie kan raadplegen.

Page 47: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 16: Uploadsysteem Eén van de functies van het patiëntendossier is het bijhouden van medische beeldonderzoeken.

Wanneer een nieuw onderzoek wordt toegevoegd, kan een afbeelding (bijvoorbeeld een röntgenscan)

worden meegegeven via het uploadsysteem.

Automatisch wordt

er nagekeken of

het bestand wel

een afbeelding is.

In de PHP-code worden er ook verschillende veiligheidschecks uitgevoerd om te zware bestanden te

weren, maar ook om alles wat geen afbeelding is, weg te houden.

Page 48: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 17: POST Instructies pagina De code die instaat voor het invoegen, aanpassen en verwijderen van data staat hieronder beschreven

(statements.php). In totaal gaat het over 650 lijnen code.

Deze centrale pagina is toegankelijk voor verschillende webpagina’s: alles van noodgegevens,

patiëntendossier en medicatieplan.

<?php

/*

This documents containts the SQL-statements (POST-requests) from webpages to the

Database.

Every part of code has been indicated with comment.

*/

$db = getDB();

$db2 = getDB();

//UserID: Get the ID of the logged-in user (via Typo3!)

$hash = $GLOBALS["TSFE"] -> fe_user -> user["uid"];

/**

* ALLERGIE

*/

//Add a new allergie

if (isset($_POST['addAll'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

if ($p1 != NULL && $p2 != NULL && $p3 != NULL) {

$sql = "INSERT INTO Allergie

VALUES (NULL, '$hash', '$p1', '$p2', '$p3', '$p4', '$p5', '$p6')";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Get requested allergie

if (isset($_GET['requestAll'])) {

$id = $_POST['idAll'];

$sql1 = "SELECT allergie, reaktion, fremdbefund FROM Allergie WHERE NotID = $hash && id

= $id";

$result1 = $db -> query($sql1);

$row = $result1 -> fetch_assoc();

$param1 = $row[allergie];

$param2 = $row[reaktion];

$param3 = $row[fremdbefund];

}

function getAllergie() {

$sql1 = "SELECT id, allergie, reaktion, fremdbefund, allergentyp, zuerstBeob,

allergencode FROM Allergie WHERE uID = $hash";

$result1 = $db -> query($sql1);

}

function getDiagnose() {

$sql1 = "SELECT Diagnose.id, beschreibung, fremdbefund, datum, icd, gruppe

FROM Diagnose

LEFT OUTER JOIN ICD

ON Diagnose.ICD_id = ICD.id

WHERE uID = $hash";

$db = getDB();

$result1 = $db -> query($sql1);

$sql2 = "SELECT *

FROM ICD";

$result2 = $db -> query($sql2);

}

Page 49: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

//Update an existing allergie

if (isset($_POST['editAll'])) {

$id = $_POST['idAll'];

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

if ($p1 != NULL && $p2 != NULL && $p3 != NULL) {

$sql = "UPDATE Allergie

SET allergie='$p1', reaktion='$p2', fremdbefund='$p3',

allergentyp='$p4', zuerstBeob='$p5', allergencode='$p6'

WHERE id='$id' AND uId='$hash'";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Delete an allergie

if (isset($_POST['deleteAll'])) {

$id = $_POST['idAll'];

$sql = "DELETE FROM Allergie

WHERE id=$id AND NotId=$hash";

$db -> query($sql);

}

/**

* MEDIZINISCHE BILDGEBENDE UNTERSUCHUNG

*/

//Add a new image research

if (isset($_POST['addBildUnt'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

//Image-upload: addslashes prevents SQL-injection

$image1 = addslashes(file_get_contents($_FILES['param4']['tmp_name']));

$image_size = getimagesize($_FILES['param4']['tmp_name']);

$image_filesize = filesize($_FILES['param4']['tmp_name']);

if ($p1 != NULL && $image1 != NULL) {

// Check if the uploaded file is an image

if ($image_size == FALSE)

{

echo "<script type='text/javascript'>alert('Please upload an

image!');</script>";

}

// Check if the uploaded image not to big is

elseif ($image_filesize > '3145728') {

echo "<script type='text/javascript'>alert('Your image must be maximum

3MB!');</script>";

}

// Execute statement

else {

$sql = "INSERT INTO BildUntersuching

VALUES (NULL, '$hash', '$p1', '$p2', '$p3', '$image1')";

$db -> query($sql);

}

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Update an image research

if (isset($_POST['editBildUnt'])) {

$id = $_POST['idBildUnt'];

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$image1 = addslashes(file_get_contents($_FILES['param4']['tmp_name']));

Page 50: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

$image_size = getimagesize($_FILES['param4']['tmp_name']);

$image_filesize = filesize($_FILES['param4']['tmp_name']);

$p5 = $_POST['param5'];

if ($p1 != NULL && $image1 != NULL) {

// Check if the uploaded file is an image

if ($image_size == FALSE)

{

echo "<script type='text/javascript'>alert('Please upload an

image!');</script>";

}

// Check if the uploaded image not to big is

elseif ($image_filesize > '3145728') {

echo "<script type='text/javascript'>alert('Your image must be maximum

3MB!');</script>";

}

// Execute statement

else {

$sql = "UPDATE BildUntersuching

SET zeit='$p1', beschreibung='$p2', typ='$p3',

vorschau='$image1'

WHERE id='$id' AND uId='$hash'";

$db -> query($sql);

}

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Delete an image research

if (isset($_POST['deleteBildUnt'])) {

$id = $_POST['idBildUnt'];

$sql = "DELETE FROM BildUntersuching

WHERE id=$id AND uID=$hash";

$db -> query($sql);

}

/**

* MEDIKATION

*/

//Add a new medication

if (isset($_POST['addMed'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

if ($p1 != NULL && $p2 != NULL && $p3 != NULL) {

$sql = "INSERT INTO Medikament

VALUES (NULL, '$p1', '$p2', '$p3', '$p4', '$p5')";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Update a medication

if (isset($_POST['editMed'])) {

$id = $_POST['idMed'];

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

//*, vorschau='$p4'*/

if ($p1 != NULL && $p3 != NULL) {

$sql = "UPDATE Medikament

SET handelsname='$p1', wirkst_menge='$p2',

freisetzung='$p3', darreichungsform='$p4', applikationsweg'$p5'

WHERE id='$id' AND uId='$hash'";

$db -> query($sql);

Page 51: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Delete a medikation

if (isset($_POST['deleteMed'])) {

$id = $_POST['idMed'];

$sql = "DELETE FROM Medikament

WHERE id=$id AND uID=$hash";

$db -> query($sql);

echo "<script type='text/javascript'>alert('Delete Medikation $id from user

$hash.');</script>";

}

/**

* DIAGNOSE

*/

//Add a new diagnose

if (isset($_POST['addDia'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

if ($p1 != NULL && $p2 != NULL && $p3 != NULL) {

$sql = "INSERT INTO ICD

VALUES (NULL, '$p1', '$p2')";

$db -> query($sql);

$id = $db -> insert_id;

$sql2 = "INSERT INTO Diagnose

VALUES (NULL, '$hash', '$p3', '$p5', '$p4', '$id')";

$db2 -> query($sql2);

} elseif ($p6 != NULL && $p3 != NULL) {

$sql = "INSERT INTO Diagnose

VALUES (NULL, '$hash', '$p3', '$p5', '$p4', '$p6')";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Update a diagnose

if (isset($_POST['editDia'])) {

$id = $_POST['idDia'];

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

//*, vorschau='$p4'*/

if ($p1 != NULL && $p3 != NULL) {

$sql = "UPDATE Diagnose

SET beschreibung='$p3', datum='$p4', fremdbefund='$p5'

WHERE id='$id' AND uId='$hash'";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Delete a diagnose

if (isset($_POST['deleteDia'])) {

$id = $_POST['idDia'];

$sql = "DELETE FROM Diagnose

WHERE id=$id AND uID=$hash";

$db -> query($sql);

}

Page 52: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

/**

* ERKRANKUNG

*/

//Add a new disease

if (isset($_POST['addErkrank'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

if ($p1 != NULL && $p2 != NULL && $p3 != NULL) {

if ($p4 == "") {

$sql = "INSERT INTO Erkrankung

VALUES (NULL, '$hash', '$p1', '$p2', '$p3', NULL, '$p5', '$p6')";

} else {

$sql = "INSERT INTO Erkrankung

VALUES (NULL, '$hash', '$p1', '$p2', '$p3', '$p4', '$p5', '$p6')";

}

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Update an existing disease

if (isset($_POST['editErkrank'])) {

$id = $_POST['idErkrank'];

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

if ($p1 != NULL && $p2 != NULL && $p3 != NULL) {

if ($p4 == "" || $p4 == "0000-00-00" ) {

$sql = "UPDATE Erkrankung

SET erkrakung='$p1', status='$p2', start='$p3', ende=NULL,

artAusgangs='$p5', notiz='$p6'

WHERE id='$id' AND uId='$hash'";

} else {

$sql = "UPDATE Erkrankung

SET erkrakung='$p1', status='$p2', start='$p3', ende='$p4',

artAusgangs='$p5', notiz='$p6'

WHERE id='$id' AND uId='$hash'";

}

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Delete a disease

if (isset($_POST['deleteErkrank'])) {

$id = $_POST['idErkrank'];

$sql = "DELETE FROM Erkrankung

WHERE id=$id AND uID=$hash";

$db -> query($sql);

}

/**

* MEDIZINISCHE GERÄTE

*/

//Add a new medical device

if (isset($_POST['addMedG'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

Page 53: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

$p7 = $_POST['param7'];

$p8 = $_POST['param8'];

$p9 = $_POST['param9'];

$p10 = $_POST['param10'];

$p11 = $_POST['param11'];

if ($p1 != NULL && $p2 != NULL && $p3 != NULL) {

$sql = "INSERT INTO Geraete

VALUES (NULL, '$p1', '$p2', '$p3', '$p4', '$p5', '$p6', '$p7', '$p8',

'$p9')";

$db -> query($sql);

$id = $db -> insert_id;

$sql2 = "INSERT INTO PersGeraete

VALUES (NULL, '$hash', '$p10', '$id')";

$db2 -> query($sql2);

} elseif ($p11 != NULL && $p10 != NULL) {

$sql = "INSERT INTO PersGeraete

VALUES (NULL, '$hash', '$p10', '$p11')";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Update an existing medical device

if (isset($_POST['editMedG'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

$p7 = $_POST['param7'];

$p8 = $_POST['param8'];

$p9 = $_POST['param9'];

$p10 = $_POST['param10'];

$p11 = $_POST['param11'];

$p12 = $_POST['param12'];

$id = $_POST['idPMedG'];

$id2 = $_POST['idMedG'];

if ($p1 != NULL && $p2 != NULL && $p3 != NULL) {

$sql = "UPDATE Geraete

SET hersteller='$p1', geraet='$p2', modell='$p3',

beschreibung='$p4', seriennummer='$p5', anatomischPos='$p6', telefon='$p7', email='$p8',

notiz='$p9'

WHERE id='$id2'";

$db -> query($sql);

$sql2 = "UPDATE PersGeraete

SET datum='$p10'

WHERE id='$id' AND uId='$hash'";

$db2 -> query($sql2);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Delete a medical device

if (isset($_POST['deleteMedG'])) {

$id = $_POST['idPMedG'];

$sql = "DELETE FROM PersGeraete

WHERE id=$id AND uID=$hash";

$db -> query($sql);

}

/**

* SCHWANGERSCHAFT

*/

//Add a new pregnancy

if (isset($_POST['addSchw'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

Page 54: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

if ($p1 != NULL && $p3 != NULL) {

$sql = "INSERT INTO Schwangerschaft

VALUES (NULL, '$hash', '$p1', '$p2', '$p3', '$p4', '$p5')";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Update an existing pregnancy

if (isset($_POST['editSchw'])) {

$id = $_POST['idSchw'];

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

if ($p1 != NULL && $p3 != NULL) {

$sql = "UPDATE Schwangerschaft

SET titel='$p1', beschreibung='$p2', relevant='$p3',

status='$p4', erstellt='$p5'

WHERE id='$id' AND uId='$hash'";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Delete a pregnancy

if (isset($_POST['deleteSchw'])) {

$id = $_POST['idSchw'];

$sql = "DELETE FROM Schwangerschaft

WHERE id=$id AND uID=$hash";

$db -> query($sql);

}

/**

* FESTE NAHRUNG UND GETRÄNKE

*/

//Add a new eat/drink

if (isset($_POST['addNagGet'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

$p7 = $_POST['param7'];

if ($p1 != NULL && $p2 != NULL && $p3 != NULL && $p4 != NULL) {

$sql = "INSERT INTO NahrungGetraenke

VALUES (NULL, '$hash', '$p1', '$p2', '$p3', '$p4', '$p5', '$p6',

'$p7')";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Update an existing eat/drink

if (isset($_POST['editNagGet'])) {

$id = $_POST['idNagGet'];

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

$p7 = $_POST['param7'];

Page 55: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

if ($p1 != NULL && $p2 != NULL && $p3 != NULL && $p4 != NULL) {

$sql = "UPDATE NahrungGetraenke

SET datum='$p1', nahrung='$p2', portion='$p3',

portionsgroesse='$p4', energie='$p5', ernaehrungsinfo='$p6', hinweis='$p7'

WHERE id='$id' AND uID='$hash'";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Delete a eat/drink

if (isset($_POST['deleteNagGet'])) {

$id = $_POST['idNagGet'];

$sql = "DELETE FROM NahrungGetraenke

WHERE id=$id AND uID=$hash";

$db -> query($sql);

}

/**

* SPORTLICHE BETÄTIGUNG

*/

//Add a new sportactivity

if (isset($_POST['addSportBet'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

$p7 = $_POST['param7'];

$p8 = $_POST['param8'];

if ($p1 != NULL && $p2 != NULL && $p4 != NULL && $p5 != NULL) {

$sql = "INSERT INTO Sportbetaetigung

VALUES (NULL, '$p1', '$p2', '$p3', '$p4', '$p5', '$p6', '$p7',

'$p8', '$hash')";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Update an existing sportactivity

if (isset($_POST['editSportBet'])) {

$id = $_POST['idSportBet'];

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

$p7 = $_POST['param7'];

$p8 = $_POST['param8'];

if ($p1 != NULL && $p2 != NULL && $p4 != NULL && $p5 != NULL) {

$sql = "UPDATE Sportbetaetigung

SET zeit='$p1', aktivitaet='$p2', titel='$p3',

entfernung='$p4', dauer='$p5', anzahlSchritten='$p6', verbKal='$p7', notiz='$p8'

WHERE id='$id' AND uID='$hash'";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Delete a sportactivity

if (isset($_POST['deleteSportBet'])) {

$id = $_POST['idSportBet'];

$sql = "DELETE FROM Sportbetaetigung

WHERE id=$id AND uID=$hash";

$db -> query($sql);

}

/**

Page 56: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

* IMPFUNG

*/

//Add a new vaccination

if (isset($_POST['addImpfung'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

$p7 = $_POST['param7'];

$p8 = $_POST['param8'];

$p9 = $_POST['param9'];

$p10 = $_POST['param10'];

$p11 = $_POST['param11'];

if ($p1 != NULL && $p2 != NULL && $p5 != NULL && $p9 != NULL) {

//Add new vaccination (general)

$sql = "INSERT INTO Impfung

VALUES (NULL, '$p1', '$p5', '$p9')";

$db -> query($sql);

$id = $db -> insert_id;

//Add personal information about vaccination

$sql2 = "INSERT INTO PersImpfung

VALUES (NULL, '$hash', '$p2', '$p3', '$p4', '$id', '$p7',

'$p8', '$p10', '$p11')";

$db2 -> query($sql2);

} elseif ($p11 != NULL && $p10 != NULL) {

$sql = "INSERT INTO PersImpfung

VALUES (NULL, '$hash', '$p10', '$p11')";

$db -> query($sql);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Update an existing vaccination

if (isset($_POST['editImpfung'])) {

$p1 = $_POST['param1'];

$p2 = $_POST['param2'];

$p3 = $_POST['param3'];

$p4 = $_POST['param4'];

$p5 = $_POST['param5'];

$p6 = $_POST['param6'];

$p7 = $_POST['param7'];

$p8 = $_POST['param8'];

$p9 = $_POST['param9'];

$p10 = $_POST['param10'];

$p11 = $_POST['param11'];

$id = $_POST['idPImpfung'];

$id2 = $_POST['idImpfung'];

if ($p1 != NULL && $p2 != NULL && $p5 != NULL && $p9 != NULL) {

$sql = "UPDATE Impfung

SET name='$p1', impfstoff='$p5', hersteller='$p9'

WHERE id='$id2'";

$db -> query($sql);

$sql2 = "UPDATE PersImpfung

SET datumGabe='$p2', abfolge='$p3', unerwEreignis='$p4',

wieVerabreicht='$p7', koerperteil='$p8', lotNr='$p10', hinweis='$p11'

WHERE id='$id' AND uID='$hash'";

$db2 -> query($sql2);

} else {

echo "<script type='text/javascript'>alert('An error occurred: please fill in

the required fields correctly.');</script>";

}

}

//Delete a personal vaccination

if (isset($_POST['deleteImpfung'])) {

$id = $_POST['idPImpfung'];

$sql = "DELETE FROM PersImpfung

WHERE id=$id AND uID=$hash";

$db -> query($sql);

}

?>

Page 57: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 18: Code webpagina noodgegevens De webpagina (zie bijlage 12: Definitief vernieuwde ‘Notfalldaten’) met verschillende tabbladen

bestaat uit 1 pagina waarin verschillende PHP-pagina’s worden gelinkt. Deze structuur is

samenhangend met het tabbladen-systeem.

Bovenaan staan de 2 andere pagina’s ingevoegd. De eerste (connect.php) bevat alle

configuratiegegevens voor de database. De tweede (statements.php) bevat de instructies om data in

te voegen, aan te passen of te verwijderen (zie bijlage 17: POST Instructies pagina).

<?php

include "connect.php";

include "statements.php";

?>

<div id="benutzerdaten">

<div id="tabContainer">

<div class="tabs">

<ul id="countrytabs">

<li>

<a href="/fileadmin/php/Notfalldaten/Start.php"

class="selected" rel="#default"> Start </a>

</li>

<li>

<a href="/fileadmin/php/Notfalldaten/Diagnose.php"

rel="countrycontainer" id="favorite"> Diagnosen </a>

</li>

<li>

<a href="/fileadmin/php/Notfalldaten/Medikation.php"

rel="countrycontainer"> Medikation </a>

</li>

<li>

<a href="/fileadmin/php/Notfalldaten/Allergie.php"

rel="countrycontainer"> Allergien </a>

</li>

<li>

<a href="/fileadmin/php/Notfalldaten/Hinweise.php"

rel="countrycontainer"> Besondere Hinweise </a>

</li>

<li>

<a href="/fileadmin/php/Notfalldaten/WeitereInfo.php"

rel="countrycontainer"> Weitere Information </a>

</li>

</ul>

</div>

<div id="countrydivcontainer" class="tabscontent">

<?

include "Notfalldaten/Start.php";

?>

</div>

<script type="text/javascript">

var notfalldaten = new ddajaxtabs("countrytabs", "countrydivcontainer")

notfalldaten.setpersist(true)

notfalldaten.setselectedClassTarget("link")//"link" or "linkparent"

notfalldaten.init()

</script>

</div>

</div>

Page 58: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 19: Databank documentatie

Database documentation This documents describes the different tables of the database “Gesundheidskiosk”.

Personal data

Personal data, like logins, names and so on, are kept in a separate database. The connection between

these two databases is made in Typo3. Every authentication passes the user ID trough the webpage.

Medikamentenplan

The area of the old diagram has been split up in the blue area Medikamentplan and the violet area

Medikament.

In this blue area you can find 2 tables. First of all: Medikamentenplan. All the relevant data for using

medication (e.g. the dosis, time of use, start- and end date) are in this table. The second table is

MedStatus. In this small table fixed statuses of the plan will be stored. (e.g. In use, future or

completed).

Medikament

The violet area only contains 1 table: Medikament

In the redesign of the database, it became clear that this table has an important role in the whole

project. All the relevant, general information about medication will be stored in this table. (e.g.

manufacturer, code, way of use, info about active ingredient, ..) That’s why the table is from now on

standalone and can be easily “re-used” in different contexts.

Weitere daten

This orange area contains the tables that is used to store data for i.e. the patient file and the

emergency data.

BildUntersuchung is used to store image screenings (patient file). Important to know is that the table

contains a field to store an image and a small image (preview). The image and the timestamp fields are

mandatory. The preview is created automatically during the upload of the image.

Termin stores the appointments you have with a doctor. Time and date is mandatory, status, goal and

duration are not.

Allergie table is used to store different allergic reactions. This information is used in the patient file

and the emergency data.

Behandlung keeps the name and status of a remediation. Also (short) notes can be kept in the table.

Operativeeingriff is a small table that stores operations.

Diagnose keeps the different diagnosis (i.e. a flu). Personal, detailed information is stored in that table.

Linked to that is the table ICD. ICD stores in the different general ICD categories and the name of that

category.

Page 59: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Erkrankung keeps the diseases stored. The disease and the status are mandatory. Start and end date

can also be added. This table keeps general diseases stored, for example a heart disease.

Schwangerschaft stores all the relevant information of pregnancy. The details (titel, relevant date,

status …) is used in the patient file. The emergency card only has a link to this page if the patient is

pregnant.

Familiengeschichte. Brothers, sisters or parents with a genetic disease can have an impact on a patient.

This information is stored here. The disease and affinity are mandatory fields.

Sportbetaetigung. Sport activities can be positive on the health state. Activities like swimming, walking

and running can be kept in the patient file. You can store the activity name, duration, notes, distances

and so on.

Impfung stores general vaccinations. This is linked with PersImpfung. Here is the personal data kept.

(I.e. date of vaccination, who did the vaccination, which part of the body was involved, and so on).

Geraete keeps in general the medical devices stored. You can give up the name of the device, the

manufacturer, serial number, telephone, email, model, notes …

The PersGeraete table is linked to store the date of use of a device.

NahrungGetraenke. Food and beverages are also important to keep your health in a good condition.

The patient file offers the possibility to store all what a patient eats or drinks. You can also add the

portions, energetic values, date of eating/drinking and so on.

Vitaldaten

This green area contains all the tables we use to store results of measurements. You can find the tables

VDblutgerinnung (blood clotting), VDnormalwert (normal values), VDgewicht (weight), VDblutdruck

(blood pressure), VDsauerstoffsettigung (oxygen saturation), VDblutzucker (blood sugar).

Each table has of course its own specific elements.

Page 60: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …

Bijlage 20: PowerPoint presentatie juni 2014 De presentatie die ik zal geven ter verdediging van mijn bachelorproef op 20 juni 2014.

Page 61: Stagedocumentatie - Typepad...2014/06/18  · Informatica is niet meer weg te denken in onze huidige maatschappij. Mensen zijn het gewoon om met computers, tablets, smartphones, …