mPat – Mobiles Patientenwartezeitsystem

Teammitglieder

Noor Alrabea

Beschreibung

mPat ist ein Software System, bestehend aus einem Backend und Frontend (Backoffice genannt), sowie aus einer mobilen Applikation, welches eine neuartige Herangehensweise an ein Patientenwartezeitsystem anbieten soll. Es ist spezialisiert auf Notaufnahmen, welche ihre Patienten, die derzeit warten, im Backoffice verwalten und aufrufen können. Für jeden Patient kann ein QR Code generiert werden, welchen die mobile Applikation von mPat lesen kann und dem Patienten anschließend Wartezeitinformationen anbieten kann. Weiterhin benachrichtigt die mobile Applikation den Patienten, falls dieser durch das Backoffice aufgerufen wurde.

Das Backend und Backoffice verwaltet Accounts für Notfallaufnahmen in Form von Organisationen. Jede Organisation kann weiterhin in Abteilungen (Departments) unterteilt werden, falls die Notaufnahme des Krankenhauses Patienten für verschiedene Abteilungen unabhängig voneinander verwalten möchte.

Patienten selbst sind in neue Patienten, welche noch nicht behandelt wurden, sowie WIP (Work-In-Process) Patienten, welche bereits einmal behandelt wurden, aber auf weitere Behandlung warten müssen, unterteilt. Weiterhin werden neue Patienten in vier Prioritäten unterteilt, welche jeweils eigene Deadlines besitzen. Die Unterteilung der Patienten basiert hierbei auf einem kanadischen System, CTAS genannt, wobei die Prioritäten in der nachfolgenden Tabelle aufgelistet sind:

 

Priorität Emergent Urgent Less urgent Non-urgent
Deadline 15 min 30 min 60 min 120 min

 

Da bei neuen Patienten die Deadline so gut wie möglich eingehalten werden muss, kann für jeden neuen Patienten in der mobilen Applikation angezeigt werden, wann seine jeweilige Deadline abläuft und dadurch auch, in welchem Zeitrahmen er voraussichtlich aufgerufen wird. Weiterhin kann anhand dieser Klassifikation ein Algorithmus einerseits berechnen welcher Patient optimalerweise als nächstes ausgewählt werden sollte, bzw. die Position eines Patienten in der Warteliste berechnen und dem Patienten diese Information mitteilen.

 

Projektziel

Patienten, die eine Notfallaufnahme besuchen, bekommen grundsätzlich kaum Informationen bezüglich ihrer verbleibenden Wartezeit. Dies ist ärgerlich für Patienten, da es eine weitere Tagesplanung schwer möglich macht. Aufgrund dessen ist die Zufriedenheit der Patienten bei einer Evaluation des Gesundheitszentrums am geringsten, wenn es um die Wartezeit in der Notaufnahme geht. Das mPat System soll es Patienten ermöglichen mehr Informationen bezüglich ihrer Wartezeit beim Besuch der Notfallaufnahme zu erhalten und damit gleichzeitig den Besuch angenehmer zu gestalten. Da Smartphones in unserer heutigen Gesellschaft weit verbreitet sind, eignen diese sich ideal als Medium um den Patienten diese Informationen anzubieten.

Technologien

Backend und Datenbanken

  

Frontend

 

Mobile Applikation

Bilder der Software

  

Backoffice

 

Mobile Applikation

Architektur des Systems

Das Zentrum des Systems bildet das Backend, welches als REST API in ASP.NET Core und C# entwickelt wurde. Mithilfe eines MySQL Connectors für C# greift es auf die MySQL Datenbank zu und verwaltet so alle Organisations- sowie Patientendaten. Die REST API bietet ihre Dienste über HTTP an das Frontend und die Mobile App an, wobei als Format für den Transport der Daten JSON verwendet wird.

Das Frontend ist als Single Page Applikation mit React implementiert und lädt aus diesem Grund alle Daten per JSON von der REST API mittels AJAX. Um sich zu authentifizieren muss ein Benutzer des Frontends die Login Daten der Organisation eingeben, damit das Frontend ein Token von der REST API anfordern kann. Mit diesem Token authentifiziert sich das Frontend in jedem Request, indem es dieses Token in einem HTTP Header an die REST API sendet. Für das Frontend bietet die REST API Schnittstellen zur Verwaltung von Abteilungen sowie Patienten an.

Die mobile Applikation ist als eine Hybrid Applikation mit React Native und JavaScript implementiert und ist dadurch automatisch auf iOS und Android lauffähig. Ein Nutzer der App kann sich einerseits durch manuelle Eingabe der Patienten ID, als auch durch Scan eines QR Codes mit der REST API verbinden und bekommt alle Wartezeitinformationen über die App angezeigt. Die REST API bietet hierbei eine dedizierte Schnittstelle für die App an, welche jedoch nicht per Authentifizierung gesichert werden muss, da keine persönlichen Daten an die App weitergegeben werden.

 

Algorithmus zur Ermittlung des nächsten Patienten

Für die Ermittlung des nächsten Patienten verwaltet der Algorithmus alle Patienten in Prioritätswarteschlangen. Hierbei kennt der Algorithmus drei verschiedene Warteschlangen. In der Warteschlange für neue Patienten mit hoher Priorität werden alle neuen Patienten eingeordnet, bei denen die Deadline demnächst erreicht wird. In eine zweite Warteschlange werden alle WIP Patienten eingefügt. Die letzte Warteschlange enthält alle neuen Patienten, bei denen noch einige Zeit vergehen muss, bis die Deadline erreicht wird. Die Warteschlangen für die neuen Patienten sind geordnet nach der verbleibenden Zeit bis zum Ablauf der Deadline. Dies bedeutet, dass an erster Stelle der Warteschlange jeweils der Patient steht, wessen Deadline als erstes auslaufen wird. Patienten in der WIP Warteschlange, werden nach dem Zeitpunkt der Registrierung im System geordnet.

Der Algorithmus arbeitet für die Selektierung von Patienten diese drei Warteschlangen der Reihe nach ab. Um die neuen Patienten in hohe und niedrige Patienten zu unterteilen, kann ein numerischer Wert für jede Abteilung festgelegt werden, welcher WIP Threshold genannt wird. Der WIP Threshold wird in Minuten festgelegt, und setzt legt die Anzahl an Minuten fest ab welcher ein neuer Patient der höheren Priorität zugeordnet wird. Falls die verbleibende Zeit des Patienten bis zum Ablaufen der Deadline kleiner als dieser Wert ist, wird er in die Warteschlange der höheren Priorität eingeordnet.

Um Patienten zu selektieren läuft der Algorithmus diese drei Warteschlangen der Reihe nach ab. Falls in der ersten Warteschlange kein Patient enthalten ist, versucht der Algorithmus in der zweiten Warteschlange einen WIP Patient zu wählen. Falls dort ebenfalls kein Patient vorhanden ist, wird ein neuer Patient mit niedriger Priorität gewählt.