Semesterprojekt "Mobile Anwendungen im Gesundheitswesen"
Mobidoc ist ein Semesterprojekt für das Fach "mobile Anwendungen im Gesundheitswesen" des 3. Mastersemesters Angewandte Informatik gewesen, an dem ich beteiligt war.
Die Entwicklung sollte "wie für ein echtes Produkt" ablaufen und wurde entsprechend begleitet und dokumentiert.
Die Themenwahl war (im Rahmen der Überschrift des Fachs) komplett den Studenten überlassen und wir (eine Gruppe von 5 Studenten) entschieden uns für eine NFC-basierte Krankenhausanwendung.
Dabei besteht das System aus mehreren Komponenten: einem Terminal, auf dem der Besucher seine relevanten Daten eingeben kann, den mobilen Endgeräten (in unserem Fall Android-Smartphones mit NFC-Funktionalität) für Pflegepersonal und Ärzte, den mobilen Messgeärten (in unserem Fall Temperatur und Puls), sowie stationären Geräten, die sich nach dem Patient einrichten (in unserem Fall ein Bett, welches Kopf- und Fußteil je nach Patient automatisch einstellt).
Ähnlich wie auf der elektronischen Gesundheitskarte, welche nach etlichen Verzögerungen nun langsam doch eingeführt werden wird, werden auf unserer NFC-Karte (DESFire 4k MIFARE) patientenrelevante Informationen (Blutgruppe, Allergien, Name, Notfallnummer) für Notfälle gespeichert, sowie eine ID für weitere Daten aus einer Datenbank, die nicht immer erreichbar sein könnte, aber wesentlich mehr Informationen vorhält (beispielsweise Befunde mit hochauflösenden Bildern und ähnliches). Zusätzlich speichern wir die letzten Vitaldaten des Patienten (Temperatur und Puls) in Form eines Ringbuffers auf der Karte und geben somit Pflegepersonal die Möglichkeit, schnell und unkompliziert die letzten "Aktivitäten" direkt begutachten zu können und schnell fundiert die richtige Entscheidung für Behandlungen zu treffen. Schließlich komplettieren "Wohlfühldaten" wie Betteinstellungen, Essgewohnheiten etc. die Daten, welche auf der Karte gespeichert werden um so auch dem Patienten einen direkten Mehrwert zu bieten.
Die Daten auf der Karte werden momentan noch nicht verschlüsselt - eine entsprechende Erweiterung der Programme ist aber mit den genutzten DESFire Karten denkbar und sogar direkt auf Kartenebene umsetzbar.
Beagleboard Applikation
Mit dem Beagleboard als zentrale Bettkomponente und daran angeschlossen mehreren Arduinos als mobile Messgeräte (um die Modularität des Systems zu demonstrieren - es wäre auch möglich gewesen bei den wenigen bisher genutzten Sensoren und Aktoren nur ein Arduino zu nutzen oder direkt die GPIOs des Beagleboard selbst) sowie NFC-USB-Stick war ich vor allem für die Embedded-Entwicklung unseres Projekts zuständig.
Die Anwendung auf dem Beagleboard, auf dem ein Debian Squeeze installiert ist in C++ unter Verwendung von Qt, libnfcrfid (auf libnfc und libfreefare basierend) und QSerialDevice entstanden. Alle Sensoren werden momentan per serieller Schnittstelle angesprochen und in einstellbaren Intervallen abgerufen. Von den empfangenen Werten werden minimal-, maximal- und durchschnittswerte gebildet und wiederum in einstellbaren Intervallen in den entsprechenden Records mit Zeitstempel versehen auf der NFC-Karte gespeichert. Wiederum regelmäßig wird vom NFC-Reader die Karte ausgelesen, die gerade drauf liegt und das Bett auch über serielle Schnittstelle auf die Benutzerpräferenzen eingestellt.
Terminal Applikation
Die Patienten sollen in unserem System ihre Daten auf der Karte selbst pflegen und benötigen dazu ein Terminal zur Eingabe ihrer Daten. Die Appliaktion für diesen Zweck wurde in ObjectiveC für Mac OS X geschrieben. Sie nutzt ebenso die libnfcrfid und liest aufgelegte Karten ein und beschreibt diese neu.
Zur Authentifizierung des Terminalnutzers ist auf der Karte ein Passwort gespeichert, welches der Nutzer vor Änderungen seiner Daten erst eingeben muss.
Android Applikation
Die Applikation für Ärzte und Pflegepersonal wurde in Java für Android geschrieben. Bei der Bedienung wird unterschieden in Patient und Arzt - nur Ärzte und Pflegepersonal, welche sich vor Auslesen der Patientenkarte mit ihrer eigenen NFC-Karte am Gerät angemeldet haben (wiederum mit Passworteingabe nach ranhalten der Arztkarte) können Patientenkarten lesen und entsprechende weitere Informationen aus dem Backend nachladen.
Sämtliche Vitaldaten auf der Karte werden grafisch zoombar dargestellt.
Ist eine Infrastruktur (WLAN) verfügbar, kann die Android-Anwendung auf entsprechende ergänzende Daten im Backend (Krankenhausinformationssystem) zugreifen, ansonsten nur auf die, die direkt auf der Karte gespeichert sind. Das ermöglicht es im Falle eines Notfalls außerhalb der Infrastruktur dennoch auf überlebenswichtige Informationen zuzugreifen.
Krankenhausinformationssystem
Da wir simulieren wollten, wie es wäre, wenn Daten aus dem Krankenhausinformationssystem geladen werden, haben wir uns selbst eine kleine Webanwendung in Python unter Verwendung des flask-microframework geschrieben, welche Daten über eine REST-Schnittstelle entgegennimmt (von der Terminal Applikation beispielsweise) und zur Verfügung stellt (der Android Applikation beispielsweise).
Quelltext
Wer am Gesamtprojekt interessiert ist oder auch nur an Teilen, kann den Quelltext hier herunterladen. Über Rückmeldungen wofür er nutzbar war, würden wir uns sehr freuen :) .
mobidoc.tar.gz (875 kB)