Die Feinheiten der Medizinischen Gerätentwicklung bewältigen - mit einer soliden Plattform
Tragbare medizinische Geräte verlangen die äußerste Aufmerksamkeit auf Detail—für Sensoren, Energieverwaltung, Sicherheit und Kommunikation. Ein integrierter Prozessor/RTOS-Paket gibt einen starken Vorsprung auf den Beginn des Projekts.
von Kim Rowe, Geschäftsführer, RoweBots, Ltd.
Kleine intelligente medizinische Geräte, die auf dem Körper getragen oder zuhause eingestellt werden—in Zusatz zu denen, die im Krankenhausnetzwerken verwendet werden—retten nicht nur Leben. Sie verkürzen auch Krankenhausaufenthalte, was älteren Patienten ermöglicht, länger zuhause zu leben, und dabei die Kosten der medizinischen Versorgung senkt. Indem sie lebenswichtige Körperfunktionen direkt erkennen und interpretieren können, sind sie, wenn nötig, in der Lage, Alarm zu senden. Sie sind auch mit der Cloud verbunden und daher auch mit Medizinern und Spezialisten für regelmäßige Überwachung oder Notfall.
Firmen, die solche Geräte entwickeln, müssen mit einer Reihe Herausforderungen rechnen, zu denen die Bekannten wie Kosten, Markteinführungszeit, Größe, Gewicht, Kraftverbrauch und Sicherheit gehören, sowie die richtige Kombination von Funktionen. Sie müssen auch die Probleme der Zertifikation bewältigen—und zwar von verschiedenen Ländern und auf verschiedenen Ebenen. Obwohl die spezifischen Funktionserfordernisse für medizinische Geräte oft ganz verschieden sind, teilen sie trotzdem auch einige gemeinsame Eigenschaften.
Die Erfüllung der vielen spezifischen Erfordernisse kann stark geholfen werden, wenn die Entwickler einen Startpunkt haben, von dem sie für die gemeinsamen Funktionen direkte Lösungen haben. Ein solcher Punkt bietet dann einen Weg vorwärts, um die anderen, oft komplizierten, spezifischen Bedürfnisse zu erfüllen und ein erfolgreiches Projekt zu sichern. Daraus ergibt sich der Begriff von einer „Plattform“—eine Kombination von grundlegender Software und Hardware, die den Entwicklern erlaubt, ihren spezifischen Wert und ihre Innovation sofort anzubauen.
Das Ziel ist es, spezifische Komponenten zur Verfügung zu stellen, die eine breite Reihe von medizinischen Funktionen anbieten, ohne dass die Entwickler durch eine komplexe Menge von unnötigen Komponenten suchen müssen. Sie sollten diejenigen, die für ihre Zwecke am besten geeignet sind, schnell finden und beurteilen können. Eines der Hauptgebiete ist die medizinische Versorgung zuhause. Das bedeutet ein Gerät, das am Körper getragen wird und mit anderen Geräten kommuniziert—entweder mit einem Smartphone, das vom Patienten getragen wird oder mit einem PC oder mit einem spezialisierten Computer im Hause. Das System wird dann mit dem Internet verbunden und schließlich zu Diensten in der Cloud. Es kann natürlich auch andere Szenarios geben. Der Träger könnte zum Beispiel ein normales Leben außerhalb des Hauses führen aber das getragene Gerät muss trotzdem lebenswichtige Daten überwachen und wenn nötig einen Alarm senden. Geräte für verschiedene Sportveranstaltungen könnten je nach der Sportart verschiedene Kommunikationsbedingungen haben (Abbildung 1).
1: Dieses System für die Entdeckung von Gehirnerschütterung, die von RoweBots entwickelt wurde, ist eine spezialisierte Anwendung, die in verschiedenen Situationen gebraucht werden kann. In diesem Fall kann das Gerät mit Bluetooth LE sehr gut auf einem Spielfeld wirken. In einem anderen Szenario, wie z.B., ein Marathon, wäre eine andere drahtlose Technologie, wie etwa LoRa, geeignet.
Das Ziel ist es, dem Patienten die höchste Freiheit zu erlauben und gleichzeitig spezifische medizinische Daten zu überwachen und auf verschiedenen Ebenen Alarm zu geben. Solche Alarmebenen könnten einfach Signale sein, dass es Zeit ist, ein Medikament zu nehmen. Sie könnten regelmäßig Daten über die Cloud an einen Arzt senden. Oder sie könnten echte Notrufe sein, die sofortigen Eingriff bedeuten. Dies alles erfordert die Fähigkeit, Daten richtig zu analysieren und behandeln. Solche Analyse kann im Gerät, im Randcomputer oder in einem Cloud-Dienst stattfinden.
Ein weiterer Aspekt ist die Überwachung von Ort und Bewegung. Ein Beschleunigungsmesser kann zum Beispiel ein Signal geben, wenn ein älterer Patient hinfällt und ob er wieder aufgestanden ist oder nicht. Wenn ein Patient in der Nacht aufsteht, um aufs Klo zu gehen, ist er zurück ins Bett gekommen? Hat er gegessen und seine Medikamente genommen? Wenn ein Alarm gegeben wird, wohin genau soll Hilfe geschickt werden?
Zusätzlich also zu Prozessor und Betriebssystem, muss der Entwickler eine reiche Auswahl an spezialisierten Peripheriegeräten aussuchen und dazu noch andere Funktionen. Zu diesen gehören Energieverwaltung, Ort- und Bewegung- Sensoren, Unterstützung für Sicherheit und die Wahl von Kommunikationshardware und Protokollen. Das ist ganz schön viel verlangt.
Unterstützung für Sensoren und Peripheriegeräte
Angesichts der Beschränkungen an Größe und Energie kann das tragbare medizinische Gerät nicht ein Mehrzweckgerät sein, sondern muss darauf konzentrieren, ein Paar Funktionen sehr gut und sehr effizient auszuführen. Die genauen Funktionen können aber ganz unterschiedlich sein und es ist deswegen wichtig, dass man eine reiche Auswahl von Sensoren hat, um den geplanten Zweck eines Geräts zu erfüllen. Unter den Peripheriegeräten sind Temperatursensoren, Druckmesser, Gyroskope und Beschleunigungsmesser sowie Pulsoxymeter und Lichtsensoren.
Um die Entwicklung zu beschleunigen, sollten solche Geräte auch mit Quellcode-Treibern, die für den geeigneten Prozessor schnell kompiliert und ins RTOS integriert werden können, geliefert werden. Eine wachsende Zahl solcher Peripheriegeräte und Sensoren gebrauchen eine I2C oder SPI-Schnittstelle, die sich schnell mit denen integrieren lassen, die auf den neuesten Prozessoren zu finden sind.
Obwohl die Möglichkeiten für eine volle graphische Benutzeroberfläche auf dem tragbaren Gerät selbst stark begrenzt sind, ist es trotzdem wichtig, Unterstützung für solche Peripheriefunktionen zu haben. Daten von dem Gerät werden auch auf einem Tablett oder auf dem Randcomputer oder in der Cloud verarbeitet und angezeigt. Vorhandene Protokolle für Graphik, Kamera und Video-Funktionen geben dem Entwickler eine reiche Wahl an Möglichkeiten für eine große Menge medizinischer Anwendungen. Eine Auswahl drahtloser Verbindungsmöglichkeiten, wie Bluetooth LE, 6LoWPAN, LoRa und andere, sollte auch vorhanden sein. Das bedeutet auch Unterstützung für geeignete Radiogeräte und die entsprechenden Protokolle. Dazu gehört auch Unterstützung für die Energieverwaltungsfunktionen, die in den ausgewählten Prozessoren eingebaut sind.
Die Notwendigkeit der Sicherheit
Einer der anspruchsvollsten Aspekte der medizinischen Gerätentwicklung und einer, der vom Entwickler ganz genaue Aufmerksamkeit verlangt, ist die Sicherheit. Es ist äußerst schwer, die Wichtigkeit der Sicherheit auf dem Gebiet der medizinischen Geräte stark genug zu betonen. Natürlich gibt es amtliche Vorschriften, die die Privatsphäre des Patienten schützen. Aber diese Geräte werden oft über Netzwerke verwendet, die von einer Internetverbindung in einem Privathaus bis zur Cloud reichen und von dort aus zu Ärzten und Spezialisten und drahtlosen Netzwerken in Krankenhäusern. Geräte müssen sichere Verbindungen aushandeln, nicht nur um Daten zu schützen, sondern auch gegen Hacker und böswilligen Zugang zu wehren. So fürchterlich es sich anhört, besteht auch die klare Notwendigkeit, Hetzschrittmacher gegen Hacker zu schützen. Und selbstverständlich muss die Sicherheit über die verschiedenen Ebenen von Sensor bis zur Cloud streng aufbewahrt werden (Abbildung 2).
2: Sicherheit darf nicht nur im Gerät eingebaut werden, sondern auch mit den Sicherheitsprotokollen des Internets, um Sicherheit von Sensor bis zur Cloud zu versichern.
Man sollte ganz natürlich erwarten, dass die Sicherheitsunterstützung in der Form von kritischen Softwarekomponenten, wie z.B., sichere SMTP zusammen mit sicheren Webseiten oder HTTPS für die Implementierung von geschichteten Sicherheitsstrategien, vorhanden ist. Sicheres Management—SNMT v3—kann auch verwendet werden, um die Authentisierung und Übermittelung von Daten zwischen Managementstation und den SNMP-Agent zusammen mit einem verschlüsselten Dateisystem zu sichern. Weitere Protokolle für die Unterstützung von Graphik, Kamera und Video geben dem Entwickler eine reiche Auswahl an Möglichkeiten für die ganze Breite der medizinischen Anwendungen.
Obwohl solche Sicherheitsmaßnahmen äußerst wichtig sind, gibt es immer noch einen kritischen Aspekt, der oft übersehen wird und das ist die Methode der Speicherverwaltung. Eine potenzielle Gefahr für empfindliche medizinische Geräte besteht darin, dass viele RTOSe die Kompatibilität mit Linux aufrechterhalten, besonders im Falle der API. Das hat natürlich den Vorteil, dass viele Programmierer damit vertraut sind und dass eine große Menge fertiger Code—einschließlich Open Source—erhältlich ist und für Embedded Anwendungen adoptiert werden kann.
Aber eine weitere Eigenschaft, die mit POSIX-Linux-Kompatibilität verbunden ist, ist die Speicherverwaltung, die dynamische Ladung verwendet. Dynamische Ladung bedeutet, dass der Code unter Kontrolle des Betriebssystems in RAM geladen werden kann. Linux verlässt sich auf den Schütz des Betriebssystems, um dafür zu sorgen, dass Benutzerprogramme nicht entscheiden können, welche Programme laufen. Dieser Schutz kann aber manchmal überwunden werden. Deswegen stellt dynamische Ladung eine bestimmte Gefahr dar—besonders wenn sie in kritischen medizinischen Systemen gebraucht wird.
Viele RTOS-Implementierungen können auch durchbrochen werden, weil sie groß und kompliziert sind. Dann braucht der Hacker nur eine kleine Sicherheitslücke zu finden, um Zugang zum Speicher zu erreichen und damit den ganzen Sicherheitsmechanismus zu umgehen. Da die Malwarecode vom Gerät selbst laufen muss, muss sie erst in den Speicher des gezielten Geräts geladen werden.
Die Anwendung eines alternativen Speichermodells kann einen wesentlich höheren Grad von Sicherheit für verbundene Geräte anbieten. In einem solchen Modell wird der Code nur vom Flash-Speicher ausgeführt. Und um vom Flash zu laufen, muss der Code erst in den Flash-Speicher geladen werden, was viel schwieriger ist, als ihn einfach in RAM zu laden. Der Flash-Code-Image ist eine vollständige Einheit und wenn er läuft, läuft er nur aus diesem Image. Kein Code wird von RAM eingetauscht. RAM wird natürlich für die vorübergehende Speicherung von Variablen und Stacks, wie z.B. für Kontextumschaltung, aber alle Befehle werden vom Flash ausgeführt.
Das bedeutet, dass kein Programm von außen in den Speicher des Geräts—auch nicht unter Kontrolle des Betriebssystems—geladen werden kann, weil der Code vom Flash laufen muss. Und das Flash-Image kann nur dadurch geändert werden, indem ein völlig neues Image aufgeladen wird. Dieses neue Image wird vermutlich auch die Malware zusammen mit dem normalen Adwendungscode enthalten. Aber, um diesen Flash-Code überhaupt ändern zu können, muss man eine echte Kopie in die Hand bekommen, was äußerst schwierig, wenn nicht unmöglich ist.
Eine weitere Schutzmaßnahme ist das Feldupgrade-Programm, das auf dem Gerät läuft und Verschlüsselung verwendet. Wenn ein aufzuladendes Image verschlüsselt ist, kann es nur dann entschlüsselt werden, wenn es mit dem richtigen Schlüssel unterzeichnet wird. Dieser Schlüssel gehört dem Code- und Gerätbesitzer und wird getrennt vom Gerät aufbewahrt. Also kann man durch Hacken des Geräts nicht an den Schlüssel kommen. Code, der nicht richtig unteryeichnet wird, wird einfach weggeworfen. Das Resultat ist, dass sogar, wenn ein Hacker die Barriere von Passwort und Benutzernamen durchbrechen kann, wird er trotzdem den Code im Gerät nicht verändern können.
Mit einer soliden Plattform anfangen
Die Entwicklung von Systemen dieser Vielfalt und Komplexität ganz von vorne anzufangen wäre eine danklose Arbeit. Der Entwickler sollte zuerst eine stabile und vielseitige Plattform aussuchen. Diese sollte eine Auswahl von unterstützten Prozessoren und Peripheriegeräten zusammen mit einer RTOS-Umgebung anbieten, die für kleine Systeme geeignet ist. Dazu sollte sie eine breite Auswahl von geprüften Treibern, Software Modulen und Protokollen bereitstellen (Abbildung 3). Viele Verkäufer bieten heute brettbasierte Bausätze, die Entwicklern ermöglichen, Prototypen zu bauen und ihre Konzepte zu testen, bevor sie die teure Entscheidung auf eine Lösung machen.
3: RoweBots, Ltd. bietet eine Auswahl von Plattformen für Prototypen. Diese bestehen aus einem RTOS, Software Komponenten (Trebern, Protokollen, usw.) und unterstützen Peripheriegeräten. Dazu gibt es auch eine Auswahl von Prozessorbretten wie hier das STM32F4 (l) und STM32F7 (r) von STMicroelectronics.
Angesichts der großen Auswahl an medizinischen Geräten und ihre Hilfssystemen—wie, z.B., Randcomputer, Cloud Konnektivität und mehr—ist die breite Unterstützung von vielen verschiedenen Prozessoren und ihren Familien sehr wichtig, um die spätere Ausweitung und Verbesserung zu fördern. Unterstützung für ein Standard API wie POSIX erleichtert das anheuern von neuen Programmierern sowie den Gebrauch von Open Source. Die Fähigkeit, vom ersten Tag an Wert einzubauen ist ein großer Schritt in Richtung eines erfolgreichen Projekts.