Closed Projekte

Hier werden alle Closed Software Projekte vorgestellt.

OpenSource Projekte

Alle Projekte, die hier vorgestellt werden sind OpenSource auf Github zu beziehen. Feel free to contribute.

Web Projekte

In dieser Kategorie werden alle Web-Projekte vorgestellt.

The MedDoser is a RaspberryPi 3 Model B equipped with a touchscreen and some other components and helps patients to remember to take their medications.

It offers acoustic and visual memory functions and provides a history that gives the opportunity to track the ingestions to the exact day and time. The information of the respective medication is based on the doctor-prescribed medication plan on sheet of paper, whose barcode can be scanned. The read data is provided in a user interface that is operated exclusively with the finger. The user also has the option to manually adjust reminder times for each ingestion time of the day.

Beschreibung

Das Gerät MedDoser ist ein mit einem Touchscreen und weiteren Komponenten versehenes Raspberry Pi, das eine Erinnerungsfunktion samt Medikationsdokumentation auf Basis eines eingescannten Medikationsplans ermöglicht und die Medikation eines Patienten visuell darstellt.

Der MedDoser bietet akustische und visuelle Erinnerungsfunktionen und stellt eine Historie zur Verfügung, mit welcher der Verlauf der Medikation tages- und zeitpunktgenau nachvollzogen werden kann.

Die Informationen der jeweiligen Medikamente basieren hierbei auf dem vom Arzt verordneten Medikationsplan auf Papier, dessen Barcode eingescannt werden kann. Die eingelesenen Daten werden in einer Benutzeroberfläche bereitgestellt, die ausschließlich mit dem Finger bedient wird. Der Benutzer hat zudem die Möglichkeit, die Erinnerungszeitpunkte für jede Tageszeit manuell auf seine Bedürfnisse anzupassen.

 


Motiviation

Der demografische Wandel resultiert in einem wachsenden Anteil alter Menschen in unserer Gesellschaft. Einige von ihnen befinden sich an der Schwelle zur Pflegebedürftigkeit und sind auf eine regelmäßige Medikamenteneinnahme angewiesen. Vor allem jene von ihnen, die an den Volkskrankheiten Demenz und Alzheimer leiden, aber auch Patienten, die aus anderen Gründen Probleme bei Medikamenteneinnahme haben, soll diese Prozedur erleichtert werden. Durch den MedDoser kann die Wahrscheinlichkeit, Einnahmen von Medikamenten zu vergessen und den Therapieverlauf dadurch negativ zu beeinflussen, reduziert werden.

Der Patient sowie der behandelnde Arzt können zusätzlich retrospektiv den Medikationsverlauf anhand der erfassten Daten nachvollziehen. Durch diese Form der Unterstützung des Patienten in seinem Alltag fungiert der MedDoser als Teil von AAL (Ambient Assisted Living)

 


Randbedingungen

  • Die Programmierung der Anwendung erfolgt in Java (aus Kompatibilitätsgründen zum OS Rasbian Jessie) mit dem JDK 8.
  • Für die Datenspeicherung kommen SQLite (permanente Daten) und XML (Nutzerinteraktion) zum Einsatz.
  • Die Benutzeroberfläche wird mit JavaFX (siehe JavaFX und Raspbian OS) und dem SceneBuilder gestaltet.
  • Modultests werden mit JUnit verwaltet und gewartet.
  • Die Versionsverwaltung bei diesem Projekt wird mit git realisiert.
  • Um eine möglichst vollständige Codedokumentation zu erhalten, wird Javadoc genutzt.
  • Das Bugtracking übernimmt das CMS Mantis.
  • Beim Logging von Systemereignissen und kritischen Meldungen zur Laufzeit hilft die Bibliothek Log4J.

 


Grafische Oberfläche

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

 


Bilder des Geräts

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 

 


Ablaufdiagramm- Einscannen des Plans

Ein Medikationsplan kann aus mehreren Seiten bestehen – abhängig davon, wie viele Medikationen er enthält. Auf einer Seite können maximal 15 Medikationen enthalten sein, meist sind es weniger aufgrund von Metadaten wie Zwischenüberschriften und Freitextzeilen.

Das angefügte Diagramm zeigt den Vorgang des Scannens in Interaktion mit der UI. Erst nach einem erfolgreichen Scan werden alle Daten geparsed und zu einem HL7-FHIR-Dokument (Siehe Syntaktik: Health Level 7 (HL7)) zusammen gefügt.

Anschließend öffnet sich das Hauptfenster der Benutzeroberfläche und der Patient kann direkt damit beginnen, seine Medikationen zu verwalten.

 


Umsetzung Datenspeicherung

Weil die Lizenzierung der genannten IFA-Datenbank während des Projektverlaufs aus Kostengründen seitens der OTH Regensburg nicht realisierbar war, dient als Provisorium bei MedDoser eine SQLite-Datenbank. Über einen JDBC-Konnektor werden Daten aus ihr gelesen. Ein Schreibvorgang erfolgt ausschließlich beim Programmstart und dies auch nur dann, wenn die Datenbank auf dem Zielsystem (dem Raspberry Pi 3) zuvor noch nicht erstellt wurde.

Zur Verwaltung der täglichen und tageszeit-entsprechenden Einnahmen ist eine XML-Struktur (Siehe XML und XSD) am Sinnvollsten. Die Wahl für diese Form der Speicherung begründet sich damit, dass Hierarchien und Strukturen mit XML-Schemata besser abgebildet werden können als über eine relationale Datenbankstruktur. In folgendem Codefragment sind die Daten für genau eine Einnahme enthalten. Aus ihm ist ersichtlich, dass ein Medikament

  • mit einer speziellen ID (urn)
  • am 12. März 2018
  • abends (PCV) um 17:00 Uhr (Vom Patient festgelegter Wert aus dem Header)
  • noch eingenommen werden muss (Status 2).
<?xml version="1.0" encoding="UTF−8" standalone="no" ?>  <MedDoser>   <CreationDate>03/12/2018 00:11</CreationDate>   <LastOpenedDate>03/13/2018 00:53</LastOpenedDate>     <IngestionTime>    <morning time="08:00"/>    <midday time="12:00"/>    <evening time="17:00"/>    <night time="21:00"/>   </IngestionTime>     <MedicationIngestion>    <ingestionmedStatementReference=" urn:uuid:09e8d5b1−0e6f−4f0d−8871−5d7eeecbe532" scheduledDate="03/12/2018" scheduledTime="" scheduledTimeCode="PCV" status="2" time="" />   </MedicationIngestion>  </MedDoser>

Die Struktur dieses XML-Schemas wurde eigens für dieses Projekt entwickelt.

Die XML-Datei wird täglich erweitert: Entweder durch den Anwender, der den Status seiner Einnahmen durch Interaktion mit dem Touchscreen verändert, oder durch das Anbrechen eines neuen Tages. In diesem Fall wird für jede planmäßige Medikation ein neuer Eintrag mit dem Standard-Status 2 erstellt.

 


Nebenläufigkeiten

Die Funktionalität der Anwendung wird durch folgende Threads unterstützt:

  • Erstellen von Einträgen in der XML-Datei
    Beim erstmaligen Einscannen eines Medikationsplans mit dem MedDoser wird für jede Einnahme eines Medikaments des aktuellen Tages ein Eintrag in der XML-Datei generiert. Falls das Gerät über mehrere Tage hinweg ausgeschaltet war, werden bei Programmstart für jeden Tag, der seit dem letzten Tag, an dem das Gerät eingeschaltet war, vergangen ist, Einträge in der XML-Datei erstellt. Zusätzlich überprüft ein Thread alle 60 Sekunden, ob ein neuer Tag begonnen hat. Ist dies der Fall, werden automatisch die Einträge für den neuen Tag in der XML-Datei generiert und die Ansicht im Hauptfenster aktualisiert sich.
  • Aktualisieren der Uhrzeit
    Das aktuelle Datum sowie die Uhrzeit wird unterhalb des MedDoser-Logos in einem Label angezeigt. Weil der Zustand eines Labels statisch ist, muss die Uhrzeit regelmäßig aktualisiert werden. Hierzu legt der Thread alle fünf Sekunden die neue Uhrzeit als Text des Labels fest.
  • Erinnerung an die Einnahme
    Der Thread überprüft alle acht Sekunden, ob Medikationen noch nicht quittiert wurden. Hierbei werden Medikationen vom aktuellen Tag sowie der Vergangenheit in Betracht gezogen, die eine bestimmte Einnahmezeit definiert haben. Medikamente, die zu besonderen Zeiten eingenommen werden müssen, sind hiervon nicht eingeschlossen. Sobald mindestens eine Einnahme noch nicht vom Anwender quittiert wurde, beginnt er mit der Ausführung folgender Aktionen:
    • Farbliches Hervorheben der Tabs: Alle Tabs für die Einnahmezeiten des heutigen Tages, welche unbestätigte Medikationen enthalten, werden hervorgehoben.
    • Aktivieren und Deaktivieren von LED und Lautsprecher: Die GPIO-Pins des Lautsprechers und der LED werden aktiviert und sie beginnen, den Erinnerungston abzuspielen beziehungsweise zu blinken. Der Thread bemerkt, wenn der Benutzer alle Einnahmen erledigt hat und deaktiviert die beiden Komponenten in diesem Fall wieder.

 


Verwendete Hardware

Die folgenden Bauteile wurden für das Projekt angeschafft und verbaut. Der Handscanner ist hierbei ein Workaround für die Raspberry-Kamera, mit der das Einlesen eines Medikationsplans Probleme machte.

 


Lizenz

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

 


Abschlussarbeit und weiterführende Links

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.