
In einem automatisierten medizinischen Zentrum werden viele verschiedene GerĂ€te eingesetzt, deren Betrieb durch ein medizinisches Informationssystem (MIS) gesteuert werden muss, sowie GerĂ€te, die keine Befehle entgegennehmen, aber die Ergebnisse ihrer Arbeit an das MIS ĂŒbertragen sollen. Alle GerĂ€te haben jedoch unterschiedliche Anschlussmöglichkeiten (USB, RS-232, Ethernet usw.) und Wege der Interaktion. Sie alle im MIS zu unterstĂŒtzen, ist praktisch unmöglich, weshalb eine Software-User-Interface-Software namens DeviceManager (DM) entwickelt wurde, die dem MIS eine einheitliche Schnittstelle fĂŒr die Auftragsvergabe an die GerĂ€te und den Erhalt von Ergebnissen bietet.

Um die Fehlertoleranz des Systems zu erhöhen, wurde DM in eine Reihe von Programmen unterteilt, die auf Computern im medizinischen Zentrum installiert sind. DM besteht aus einem Hauptprogramm und einer Reihe von Plugins, die die Interaktion mit bestimmten GerĂ€ten ermöglichen und Daten an das MIS ĂŒbermitteln. Die untenstehende Abbildung zeigt die allgemeine Struktur der Interaktion zwischen DeviceManager, MIS und GerĂ€ten.

Die Struktur der Interaktion zwischen dem MIS und DeviceManager zeigt 3 Varianten der Plugin-Arbeit:
- Das Plugin erhĂ€lt keine Daten vom MIS und ĂŒbertrĂ€gt die vom GerĂ€t in ein fĂŒr es verstĂ€ndliches Format umgewandelten Daten (entspricht GerĂ€tetyp 3 in der obigen Abbildung).
- Das Plugin erhĂ€lt vom MIS eine kurze (zeitlich begrenzte) Aufgabe, z.B. Drucken auf dem Drucker oder Scannen eines Bildes, fĂŒhrt diese aus und sendet das Ergebnis als Antwort auf die Anfrage zurĂŒck (entspricht GerĂ€tetyp 1 in der obigen Abbildung).
- Das Plugin erhĂ€lt vom MIS eine langfristige Aufgabe, z.B. eine Untersuchung durchzufĂŒhren oder Messwerte zu erfassen, und sendet danach den Status der Auftragsannahme zurĂŒck (bei einem Fehler in der Anfrage kann die Auftragsannahme verweigert werden). Nach Abschluss der Aufgabe werden die Ergebnisse in ein fĂŒr das MIS verstĂ€ndliches Format umgewandelt und in die entsprechenden Schnittstellen ihres Typs hochgeladen (entspricht GerĂ€tetyp 2 in der obigen Abbildung).
Das Hauptprogramm DM startet, initialisiert, setzt bei unvorhergesehenem Stopp (Absturz) neu und schlieĂt alle Plugins bei Beendigung der Arbeit. Die Zusammensetzung der Plugins auf jedem Computer ist unterschiedlich; es werden nur die notwendigen Plugins gestartet, die in den Einstellungen angegeben sind.
Jedes Plugin stellt ein eigenstĂ€ndiges Programm dar, das mit dem Hauptprogramm interagiert. Diese Definition eines Plugins ermöglicht eine stabilere FunktionalitĂ€t, da alle Instanzen der Plugins und des Hauptprogramms unabhĂ€ngig von der Fehlerverarbeitung sind (wenn ein kritischer Fehler auftritt, der dazu fĂŒhrt, dass ein Plugin ausfĂ€llt, hat dies keine Auswirkungen auf andere Plugins und das Hauptprogramm). Ein Plugin ermöglicht die Verwaltung von GerĂ€ten eines bestimmten Typs (oft eines Modells), wobei einige Plugins nur mit einem bestimmten GerĂ€t interagieren können, wĂ€hrend andere mit mehreren interagieren können. Um mehrere GerĂ€te desselben Typs mit einem DM zu verbinden, wird die AusfĂŒhrung mehrerer Instanzen eines Plugins verwendet.

FĂŒr die Entwicklung von DM wurde das Qt-Framework verwendet, da es in den meisten FĂ€llen ermöglicht, sich von einem bestimmten Betriebssystem zu abstrahieren. Dies erlaubte die UnterstĂŒtzung von Computern auf Basis von Windows, Linux und MacOS sowie von Einplatinencomputern wie Raspberry. Die einzige EinschrĂ€nkung bei der Auswahl des Betriebssystems bei der Entwicklung von Plugins liegt in der VerfĂŒgbarkeit von Treibern und/oder spezieller Software fĂŒr ein bestimmtes GerĂ€t.
Die Interaktion zwischen Plugins und dem Hauptprogramm erfolgt ĂŒber einen permanent aktiven QLocalSocket mit dem Namen der spezifischen Plugin-Instanz, basierend auf dem von uns entwickelten Protokoll. Die Implementierung des Kommunikationsprotokolls auf beiden Seiten wurde als dynamische Bibliothek gestaltet, was es anderen Unternehmen ermöglichte, an der Entwicklung einiger Plugins zu arbeiten, ohne die vollstĂ€ndige Interaktion mit dem Hauptprogramm offenzulegen. Die interne Logik des lokalen Sockets ermöglicht es dem Hauptprogramm, sofort ĂŒber einen Verbindungsabbruchsignal ĂŒber einen Ausfall informiert zu werden. Bei Auslösung eines solchen Signals wird das problematische Plugin neu gestartet, was eine effektivere Handhabung kritischer Situationen ermöglicht.
Die Interaktion zwischen dem MIS und dem DM wurde auf der Grundlage des HTTP-Protokolls realisiert, da das MIS auf einem Webserver, der es erleichtert, Anfragen ĂŒber dieses Protokoll zu senden und zu empfangen. AuĂerdem gibt es die Möglichkeit, Probleme zu unterscheiden, die beim Anlegen oder AusfĂŒhren von Aufgaben durch GerĂ€te basierend auf Antwortcodes auftreten konnten.
In den nĂ€chsten Artikeln wird die Funktionsweise des DM und einiger Plugins anhand mehrerer BĂŒros eines Diagnostikzentrums betrachtet.
Quelle: habr.com
