Semesterprojekt "Mobile Anwendungen im Gesundheitswesen"
Mobidoc has been a semester project for "mobile applications in healthcare" which took place at my third semester of master studies in applied computer science.
The task was to develop a project as if it would be a realworld project. So we had to think about marketing and sales, product design and all that stuff besides developing the actual product.
The topic was up to us to decide but had to be in some relation to the overall topic of the course. Therefor we (a group of 5 students) decided to develop a NFC-based kind of medical information system.
That system constists of several components: a terminal where the patient can input all relevant data, a mobile devices (an android phone with NFC-functionallity in our case) for hospital staff members and doctors, a mobile checking device (for pulse and temperature as a proof of concept) and stationary devices, that would adjust automatically according to the preferences of the patient (we decided to build a model of a bed that could move the head part as well as the leg part up and down).
Just like the slowly upcoming electronic health insurance card we safe relevant life saving inforamtion about the patient directly on our NFC card (DESFire 4k MIFARE). Those information contain blood group, information about alergies, name, an emergency number as well as an ID for further information in a database like mediecal information systems contain but which might not allways be present. Additionally we came up with an approach to save vital sign measurements (temperature and pulse) in form of a ringbuffer onto the card. This enables staff members as well as doctors to easily gain a quick overview about the last "activities" directly to be able to make reasonably solid decisions what to do next. To make the card more appealing to the patients we also included "comfort data" like settings for the bed, eating habits and more.
Right now there is no encryption of data implemented - this could be implemented directly on card layer as of the fact, that we used DESFire cards.
Beagleboard Applikation
With a beagleboard as central bed component equipped with several arduino microcontrollers ('many of them' just to proof modularity of the system - otherwise it would have also been possible to combine several sensors and actors on just one arduino or even directly to the GPIOs of the beagleboard itself) as well as a NFC USB stick this was mainly my part of development.
The beagleboard is running a debian squeeze and the application running on it is implemented in C++ using qt, libnfcrfid (based on libnfc and libfreefare) and QSerialDevice. All sensor data is received via serial interface and can be pulled in adjustable intervals. The minimum, maximum and average values are then calculated throughout an adjustable period of time and stored on the card into the corresponding NFC record for this sensor combined with a timestamp. Also the card data is read of the card lying on the bed NFC reader and thereby the bed is adjusted according to the users preferences.
Terminal Applikation
Patients should be capable to maintain their personal information themselfes. Therefor a terminal is needed for them to input their data. An application to do just this was implemented in ObjectiveC for Mac OS X. It also uses libnfcrfid and reads NFC cards, displays stored information (after input of a passphrase) and also writes modified data back to it.
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)