donderdag 5 april 2012

Afstuderen!

Volgende week is het dan zo ver, ik ga afstuderen.
Het verslag is klaar en ingebonden, nu nog een poster en presentatie in elkaar draaien!

zondag 25 maart 2012

De laatste loodjes..

Het einde is in zicht, het tussenverslag was bijna helemaal goed en aangezien het project ook al bijna helemaal klaar is (laatste puntjes op de i zetten). Omdat ik al zo ver ben is het mogelijk om al in schoolweek 10 van dit semester af te studeren. Schoolweek 10 valt in de week na Pasen dus dat is al erg snel.


Dus druk aan slag met het eindverslag!

donderdag 8 maart 2012

Tussentijdse status

Tijd voor een status update..
De afgelopen weken is er veel gedaan en getypt. Het tussenverslag is bijna klaar en daarmee ook het systeemdesign.Zo terugkijkend op dit blog en in mijn aantekeningen zie ik toch wel dat dit project groot is, groter dan ik aan het begin dacht. De planning die Edwin en ik hebben opgesteld is totaal niet haalbaar gebleken, dit mede doordat we ook nog een heel leuk en interessant semester Iphone development moesten volgen. 


Momenteel ben ik ook bezig om de laatste hand te leggen aan mijn deel van de proof of concept.


Wat is er momenteel klaar:


Agent
Deze stuurt de actuele cpu, geheugen, netwerk en disk status naar de server. Daarnaast wordt er ook connectie gemaakt met een worklistserver om de grootte van een werklijst en de snelheid waarmee deze binnenkomt te loggen en naar de server te sturen. Omdat het uitlezen van de röntgensystemen niet mogelijk bleek te zijn, tenminste niet op dit moment heb ik dus geen dedicated agent voor deze systemen kunnen maken. De algemene agent laat echter wel duidelijk het concept en de werking zien.


Server
De server en SQL database zijn bijna klaar, de data wordt al netjes ontvangen en in de juiste tabellen geplaatst. Het laatste stukje behelst het communiceren met de verschillende Gui's. Dit is voor 90% klaar. Het communicatieprotocol met behulp van JSON files is ook al netjes beschreven en kan door andere Edwin gebruikt gaan worden in zijn agent. Aangezien ik na het wireshark onderzoek van de röntgensystemen kon concluderen dat dit momenteel niet tot een bruikbare oplossing zou lijden heb ik extra tijd besteed aan de server, sql en communicatie. Tijd die achteraf hard nodig was want dit was toch meer werk dan ik ingeschat had.


SQL
De Microsoft SQL Server draait momenteel op mijn laptop en de basis tabellen zijn aangemaakt. In het verslag zijn deze tabellen ook allemaal netjes benoemt en uitgelegd.





donderdag 16 februari 2012

JSON, SQL en meer..

Afgelopen weken weer behoorlijk wat werkt verzet, druk bezig met het maken van het tussenverslag (waar ondermeer mijn SDD in verwerkt zit) en ook bezig geweest met het verder uitwerken van de software.


Naar aanleiding van een semester Iphone ontwikkeling waar collega Edwin Kailuhu gewerk heeft met JSON heb ik in ons project de communicatie tussen agent en server omgezet naar JSON. Voordeel is de compactere opbouw en beter leesbaar. Er wordt een object van het type DataPacket (zelf gedefinieerd) aangemaakt en gevuld met gegevens, de opbouw van dit object is vergelijkbaar met de opbouw van het eerder gebruikte xml formaat. Dit object wordt vervolgens door de json.net bibliotheek omgezet in een json string en verzonden naar de server. De server zet de string vervolgens weer om in een object van het type DataPacket.
Het formaat van het DataPacket is als volgt:






Daarnaast heb ik een SQL server opgebouwd met nu nog een enkele tabel waarin alle data wordt geplaatst. Deze database wordt natuurlijk straks netjes opgezet met meerdere tabellen. Het ontwerpen van deze tabellen is een behoorlijke klus, vooral omdat we tijdens de opleiding niet veel databases hebben gehad. Hierdoor mis ik de handigheid om tabellen te ontwerpen. Na een middag puzzelen ben ik tot de (voorlopig) volgende indeling gekomen.



Ik ben uitgegaan van een zo flexibel mogelijk systeem met het oog op toekomstige uitbreiding. Daarnaast is denk ik de opzet ook goed te combineren met bijvoorbeeld een mobiel dashboard of een weergave via een webbrowser.

Ook op het vlak van mijn WireShark project kan ik vordering melden, inmiddels worden de poorten van 2 röntgenkamers gekopieerd naar 2 andere poorten en kan ik eenvoudig inpluggen en de data analyseren. 


donderdag 2 februari 2012

(semi) Dynamische GUI

Ik had het idee om het dashboard zo flexibel mogelijk te maken, het moet dus mogelijk zijn om verschillende pagina's te maken om apparaten te groeperen op afdeling, type of locatie. Een hele dynamische gui is voor dit proof of concept misschien nog wat te ver gezien de beschikbare tijd. Maar een tussenweg moest toch te vinden zijn.

Ik denk dat ik die tussenweg heb gevonden, namelijk een soort van standaard layout waar de diverse items dynamisch aangepast kunnen worden. In de eerste eenvoudige opzet acht items en een label. Op de achtergrond heb ik een array met verschillende vensters (momenteel nog gevuld met slechts 1 venster) en ieder venster heeft maximaal 8 items met daarin de beschrijving, label naam, de modaliteit naam (om een apparaat te koppelen aan een item) en een eventuele actie omschrijving voor de button (het groene vinkje, rode kruis of geen verbinding symbool). Hiermee wordt het straks mogelijk om door te klikken naar een volgende pagina.

Daarnaast heb ik getest of meerdere agents contact kunnen maken met mijn Intersect Server, zoals te zien in onderstaand filmpje is dit gelukt.






donderdag 19 januari 2012

Intersect; een eerste pre-pre-pre-preview


Een eerste blik op hoe simpel een dashboard kan zijn.
De agent haalt gegevens op van het systeem en bewaakt het errorlog van mijn virtuele röntgenkamer. De gegevens worden verzonden en wanneer de errorlog wordt aangepast omdat er een fout wordt weggeschreven (dit simuleer ik met het venster linksonder) dan wordt er een melding richting de server gestuurd dat er een critical error is.

De server ontvangt de data en ziet dat het om een critical melding gaat, vervolgens wordt het vinkje een rood kruis. Door op het kruis te klikken wordt de status weer teruggezet naar het groene vinkje.

donderdag 12 januari 2012

Systeemdata => XML => TCP/IP => Server => XML

Weer een belangrijk stuk werkend, er wordt systeem informatie opgevraagd uit de client zoals bijvoorbeeld Windows Taakbeheer dit ook doet. De informatie wordt omgezet in een xml formaat en vervolgens via tcp/ip verstuurd naar een server welke de file weer verder verwerkt.
Dit wordt straks de basis voor de communicatie tussen de verschillende agents en de centrale server.


donderdag 5 januari 2012

SPAN(nend)

Omdat het communicatie protocol van de rontgenkamers niet openbaar is en het niet mogelijk is eventuele foutmeldingen ook naar een 2e adres te sturen ben ik genoodzaakt om het protocol te reverse engineeren, tenminste te proberen want als het om versleutelde data gaat kan dit een probleem worden.
De beste manier is om dus mee te luisteren met het netwerkverkeer, dit wordt vaak gedaan door een hub tussen pathpunt en apparaat te zetten waarop een systeem wordt aangesloten met daarop Wireshark.
Gelukkig gebruiken wij hier CISCO switches en deze hebben een vreselijk handige functie SPAN.
SPAN staat voor Switched Port Analyzer en is een manier om data te kopieren naar een andere poort zodat hier met behulp van een sniffer (Wireshark) de data geanalyseerd kan worden.


Door nu op de rontgenkamer fouten te genereren en de kamer opnieuw te starten zodat deze weer aangemeld wordt bij leverancier kan ik hopelijk gericht zoeken naar de gebruikte protocollen en deze dus reverse engineeren. Wanneer deze gegevens bekend zijn is het mogelijk om een eenvoudige sniffer te programmeren welke toegevoegd kan worden aan het project.
Het werkend krijgen van dit systeem zou heel erg mooi zijn aangezien dan alle foutmeldingen afgevangen kunnen worden.

Vandaag heb ik de de juiste pathpunten en switches gezocht en overleg gehad met collega's hoe ik dit het beste kan aanpakken. Gelukkig zijn er voldoende vrije poorten op de switches en worden deze ook niet al te zwaar belast zodat het gebruiken van SPAN geen performance problemen zou moeten veroorzaken.


dinsdag 3 januari 2012

Happy New Year!

Het nieuwe jaar is weer gestart, iedereen nog de beste wensen voor 2012.


Afgelopen week vakantie gehad en daardoor geen updates gedaan in dit blog, ondertussen wel het een en ander geprogrammeerd. Het project lijkt iets uit te gaan lopen onder andere doordat ik doormiddel van Wireshark het protocol moet gaan ontrafelen waarmee onze Röntgenkamers communiceren met de leverancier. Dit staat de komende weken op de planning, hiervoor moeten echter eerst nog wat instellingen aangepast worden op enkele switches zodat ik met een laptop of pc de lijn kan "afluisteren".


Op andere fronten gaat het gelukkig een stuk beter, ik heb al een aantal onderdelen voor de agent en server werkend en ook het binnenhalen van werklijsten met behulp van de Dicom Modality Worklist is mogelijk.
De afgelopen weken heb ik de volgende onderdelen werkend gekregen:



  • Email communicatie (server en client)
  • XML files maken, schrijven en lezen
  • Versturen van bovenstaande xml files (doormiddel van socketcommunicatie)
Neem daarbij nog de eerder functionerend gekregen onderdelen:

Windows service in c#
Hardware monitoring (van het werkstation / pc)

En de blokkendoos voor het Intersect begint al aardig compleet te worden. De grote uitdaging zal hem zitten in het samenvoegen van al deze onderdelen tot een stabiele windows service.

Om de agent compleet te krijgen moet ik de volgende zaken nog aanpakken:

  • Protocol communicatie Röntgenkamers met leverancier (dit om foutmeldingen af te kunnen vangen van deze kamers.
  • Logfile analyser
  • Netwerk ping en Dicom ping
Daarnaast moet ik nog starten aan de centrale server (samen met Edwin Kailuhu) en aan het dashboard voor de afdeling.



donderdag 15 december 2011

Sharktale deel I

Zoals eerder al verteld in dit blog moet ik om eventuele informatie uit modaliteiten te krijgen het netwerk verkeer gaan analyseren en dan proberen hier de meldingen uit the halen. Ik heb gekozen voor onze "interne" kamer en een van de bucky kamers. Alvast eerst toestemming gevraagd aan de afdeling zelf om dit te mogen gaan doen, was natuurlijk geen probleem.


Hoe ga ik het nu aanpakken, na overleg met een van mijn ict collega's (Paul Ket, bedankt voor de informatie) zijn we gekomen tot het volgende plan.


Ik zoek uit op welke switch de modaliteit(en) aangesloten zijn, vervolgens wordt gekeken of er nog een vrij poort is en daarna zetten we SPAN aan op de desbetreffende poorten. SPAN staat voor Switch Port Analyser en maakt het mogelijk om data van een bepaalde poort te kopiëren naar een andere poort. Daarna kan ik met Wireshark het netwerk verkeer monitoren en hopelijk de juiste boodschappen voorbij zien komen.


Daarnaast ben ik aan het kijken of er ook een mogelijkheid is om met behulp van emails foutmeldingen te kunnen ontvangen, er zijn in huis ook systemen die dit gebruiken. Bijvoorbeeld het programma Process Manager wat we gebruiken om onze endoscopen reinigers te kunnen monitoren.
In C# heb ik inmiddels een proef smtp server gemaakt waarmee ik eventuele emails zou kunnen ontvangen.


De komende tijd zal ook in het teken staan van het programmeren van de verschillende puzzelstukjes die straks het volledige programma zullen gaan vormen, denk hierbij aan de volgende onderdelen:



  • SMTP server om emails te kunnen ontvangen
  • XML parsen en generator voor de onderlinge communicatie
  • Grafische module voor het tekenen van grafieken, meters etc.
  • Logfile analyser om eventuele logfiles te kunnen inlezen en analyseren
  • Systeem monitoring
  • DICOM communicatie







maandag 12 december 2011

Uitdaging of showstopper?

Afgelopen vrijdag een gesprek gehad met een van onze leveranciers over de mogelijkheden tot toegang op de systemen. Dit om eventueel een lokale agent te kunnen installeren en toegang te kunnen krijgen op logfiles en foutmeldingen.

Mijn verwachting was dat vooral het installeren van een agent op een systeem niet zomaar toegestaan wordt door de leverancier hetgeen ook het geval blijkt te zijn. Op zich geen verrassing want er zit natuurlijk wel een flink stuk aansprakelijkheid bij, installeren van een lokale agent is dus alleen mogelijk wanneer er een vrijwaringsverklaring ondertekend wordt zodat eventuele aansprakelijkheid niet meer bij de leverancier ligt. 
De modaliteiten sturen wel berichten naar een centrale server buiten het ziekenhuis zodat field engineers logfiles en de status van de apparatuur kunnen bekijken (men heeft dus ook een centrale monitoring op de apparatuur). Er kan geen kopie van deze berichten naar een eigen server gestuurd worden dus rest er niets anders dan met behulp van tools te gaan kijken of we deze berichten kunnen aftappen bij de modaliteit. Dat betekend dat ik met een tool als wireshark het verkeer van een modaliteit ga opnemen en daaruit deze boodschappen moet gaan filteren. Gelukkig is wel toegezegd dat ik logfiles vanuit de leverancier kan krijgen zodat ik deze naast mijn data kan leggen. Hopelijk zijn deze boodschappen niet extreem gecodeerd zodat lezen onmogelijk is.

Gelukkig kan ik wel gewoon verder met de ontwikkeling van een agent en zijn er zeker zaken die ik van buitenaf (dus zonder lokale agent) kan monitoren. Bovenstaande is dus vooral een uitdaging en absoluut geen showstopper!

dinsdag 29 november 2011

Windows Services

Een goede monitor agent doet zijn werk op de achtergrond, vandaag onderzoek gedaan naar het implementeren van zo'n service. Als eerste opzet gekozen voor een service op basis van C# die de standaard systeem monitoring kan uitvoeren (geheugen, disks, processor etc).

In Visual Studio 2010 zit een template om al een basis te hebben om een dergelijke service te kunnen programmeren. Als test zal ik de service in een bepaalde interval gegevens laten schrijven in een log file.

Planning week 9

Inmiddels al weer week 9, de eisen en wensen zijn bekend en opgenomen in een beknopt RAD. Ik heb een kleine planning gemaakt met onderwerpen waar ik deze week aan wil gaan werken.

  • System Design Document opzetten
  • Globaal systeem ontwerpen (start reeds gemaakt vorige week)
  • Inventariseren benodigde koppelingen en technologieën (Dicom. XML, SNMP)
  • Brainstormen over de centrale server 

donderdag 24 november 2011

System Design en toegang tot de apparatuur

Om het project succesvol te maken moet ik gegevens uit de diverse apparaten op de afdeling Radiologie kunnen halen. Dit zijn semi gesloten systemen, we hebben we wat toegangsrechten maar niet volledig. Daarnaast kun je niet zomaar een stuk software op een dergelijk systeem installeren. Er zijn misschien ook nog wel andere minder invasieve oplossingen zoals berichten uitlezen, logfiles doorsturen.

Ik heb daarom ook contact opgenomen met een van onze leveranciers, Siemens. Op vrijdag 9 december heb ik een afspraak staan om eens samen te kijken wat de mogelijkheden zijn om data te kunnen vergaren uit de systemen.

Ondertussen gaat het systeem ontwerp natuurlijk gewoon door, ik wil ook een agent schrijven om gegevens van een systeem te halen. Er zijn binnen het ziekenhuis ook systemen waarop we wel software kunnen installeren, daarnaast bouwen we op deze manier een uitbreidbaar systeem. De agent kan altijd getest en gedemonstreerd worden op een simulator dus dat komt helemaal goed.

dinsdag 22 november 2011

System Design I

Vandaag gestart met het system design, als eerste nagedacht over de agent die op de werkstations geïnstalleerd zou moeten worden. De opzet wordt zo universeel mogelijk zodat niet voor ieder apparaat een volledig nieuwe agent geschreven hoeft te worden. De data die verzameld wordt zal gerapporteerd worden door een xml file richting de centrale server te sturen. 



Ook al even zitten stoeien met system monitoring in c#, hiermee kan ik het onderdeel systemmonitor gaan maken en op deze manier netwerk, processor, geheugen en opslagmedia gaan monitoren.

Het Requirements Analysis Document II

Het RAD is klaar, in tegenstelling tot een RAD uit een UML traject is dit een heel klein document geworden.
Dus geen pagina's vol met usecases, sequence diagrammen en klassendiagram. Waarschijnlijk voeg ik het RAD samen met het SDD (System Design Document) tot een gezamenlijk document. Een groot deel zal ook terug te vinden zijn in het eindverslag.
De klanteisen zijn duidelijk, het is duidelijk wat het systeem moet doen dus kan ik nu starten met het systeemdesign. Voor specifieke gevallen zal ik gebruik maken van sequence diagrammen (met name voor het communicatie onderdeel). Het klassendiagram zoals normaal te vinden is in het RAD zal een plek vinden in het SDD.

donderdag 17 november 2011

Druk druk druk...

Vandaag in verband met de personele bezetting weinig tijd om uitgebreid te werken aan het afstuderen.Deze week dus ook nog geen tijd gehad om te stoeien met de Interne kamer op de Röntgenafdeling.
Gisteren bij een storing aan de CT scanner wel even gekeken in de logfiles, deze zijn zeker bruikbaar voor monitoring dus de CT komt ook op het lijstje.
Uiterlijk zondagavond wil ik het RAD volledig af hebben en een start gemaakt hebben met het system design. 
Net nog even gesproken met Edwin en misschien dat we ook een facebook pagina gaan gebruiken, helemaal hip en modern. Zou de pagina intersect nog beschikbaar zijn?

dinsdag 15 november 2011

Verder aan het RAD

Vandaag verder gewerkt aan het RAD, planning is om dit document deze week af te hebben zodat ik spoedig kan starten met het systeemdesign. Daarnaast ook nog wat tijd plannen om op de drukke röntgenafdeling te kunnen stoeien met een van de röntgenkamers. Mijn eerste slachtoffer wordt de Artis, dat is de zogenaamde Interne kamer waar onder andere darmonderzoeken worden uitgevoerd. Deze kamer is 's middags over het algemeen vrij en is een van onze nieuwe kamers. Hopelijk heb ik deze week tijd om het een en ander te onderzoeken.

maandag 14 november 2011

Bedrijfsbezoek

Een onderdeel van het afstuderen is een bedrijfsbezoek door de docentbegeleider, Paul de Mast in mijn geval.
Vandaag om 13.30 hebben we dan ook een bijeenkomst gehad met Richard, Corné, Joh, Marleen en Edwin samen met Paul. Hierin hebben we gesproken over de opdracht, de eisen en mogelijke risico's. In ieder geval een erg nuttige bijeenkomst!