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)

News - Sidebar
Ubuntu Touch Backup und Restore
Ubuntu Touch ist nun seit mehr als zwei Jahren mein Betriebssystem der Wahl auf meinem Nexus 4. Leider habe ich mir irgendwie den Update-Mechanismus zerschossen und so kurzerhand beschlossen, das System neu aufzusetzen. Den Prozess habe ich in der ubuntu touch section dokumentiert.
Ableton MIDI CC Automation
In der Audio-Sektion wird nun kurz erläutert, mit welchem Hilfsmittel man im Arrangement View von Ableton Live MIDI CC Parameter eines externen Instruments automatisieren kann.
x0xb0x und Reason 7
In der Audio-Sektion habe ich kurz niedergeschrieben, wie der Sound einer x0xb0x in Reason 7 per MIDI-Clock synchron geroutet werden kann.
LaTeX-Workshop
In der LaTeX-Sektion werden inzwischen Folien und weiteres zu einem LaTeX-Workshop verlinkt.
ClusterGL
Unter Projekte->ClusterGL habe ich ein paar Schritte zur Nutzung von ClusterGL online gestellt.
NFC MobiDoc
Unter Projekte->NFC MobiDoc habe ich eine in einer Gruppe von 5 Stundenten inklusive mir umgesetzte NFC-basierte Krankenhausanwendung dokumentiert.
VotingTool
Unter Projekte->VotingTool habe ich ein Grailsbasiertes VotingTool online gestellt.
neues Design
Heute habe ich ein Geschenk von Max bekommen - ein neues schönes Design. Vielen Dank an dieser Stelle!
ROBERTA
Heute habe ich neben der Übersetzung ins Englische auch eine Featurelist für den Server aus dem ROBERTA-Projekt erstellt.
Git + Apache
Wer sein Git-Repository über HTTP mit Apache und aber ohne VirtualHosts (also ohne Subdomain) verfügbar machen will, findet unter Anleitungen -> Vermischtes nun eine entsprechende Anleitung.
ARM-Toolchain
Wie man einen gcc Toolchain für ARM aufsetzt, findet sich ab sofort unter Anleitungen -> ARM. Diesen nutze ich beispielsweise für die Programmierung von OpenBeacon USB 2-RFID-Tags.
SD-Karte kaputt
Nach dem Netzteil nun auch die SD-Karte: Unter Anleitungen -> Sheevaplug mein Rettungsweg.
Netzteil kaputt
Wem das gleiche Glück mit dem Sheevaplug beschieden, der findet unter Sheevaplug meinen Lösungsweg.
ATMEGA verfust
Wer einen seiner AVR Mikrocontroller verfust hat, findet unter Anleitungen -> AVR nun einen rettenden Beitrag.
Abschlussarbeit
Unter Anleitungen -> LaTeX habe ich eine Vorlage für eine Abschlussarbeit verlinkt.
Etherpad
unter Anleitungen -> Vermischtes findet sich ein Tutorial zur Installation von Etherpad auf Debian Lenny

Valid XHTML 1.0 Strict CSS ist valide!