-
Die
Erfindung bezieht sich auf medizinische Vorrichtungen, und insbesondere
auf das Programmieren von implantierbaren medizinischen Vorrichtungen.
-
Eine
Vielfalt von Typen bzw. Ausführungen von
implantierbaren medizinischen Vorrichtungen wird verwendet, um Patienten
mit Therapien zu versorgen. Zum Beispiel werden implantierbare Pulsgeneratoren
verwendet, um Patienten mit Neurostimulations- und Herzstimulierungstherapien
zu versorgen. Als anderes Beispiel werden implantierbare Pumpen
verwendet, um Patienten mit therapeutischen Mitteln bzw. Wirkstoffen
zu versorgen.
-
Typischerweise
verwendet ein Kliniker/Arzt eine Programmiereinrichtung, zum Beispiel
ein Arztprogrammierer, um Aspekte des Betriebs einer implantierbaren
medizinischen Vorrichtung zu programmieren, nachdem sie in einen
Patienten implantiert wurde. Programmiereinrichtungen sind Recheneinheiten,
die fähig
sind, mit implantierbaren medizinischen Vorrichtungen durch das
Körpergewebe
des Patienten mittels Telemetrieeinrichtung zu kommunizieren. Um
die Kommunikation mit einer implantierbaren medizinischen Vorrichtung
zu erleichtern bzw. zu vereinfachen, kann eine Programmiereinrichtung an
einen Programmierkopf gekoppelt werden, der an der Körperoberfläche des
Patienten an einer Position nahe zu der Stelle der implantierbaren
medizinischen Vorrichtung innerhalb des Patienten platziert ist.
-
Ein
Trend in der implantierbaren medizinischen Vorrichtungskunst ist
die immer mehr zunehmende Komplexität der Vorrichtungen selbst,
und der Firmware, welche den Betrieb der Vorrichtungen steuert.
Zum Beispiel stellen viele moderne implantierbare medizinische Vorrichtungen
eine Vielfalt von Therapieabgabe- und/oder Patientenüberwachungsmodi
zur Verfügung,
die durch den Kliniker/Arzt während
einer Programmiersitzung bzw. -session ausgewählt und konfiguriert werden
können.
Während
einer Programmiersession kann es für den Kliniker/Arzt erforderlich
sein, Werte für
eine Vielfalt von programmierbaren Parametern, Grenzwerten oder dergleichen,
die die Aspekte der Therapieabgabe steuern, auszuwählen.
-
Infolgedessen
sind Programmiereinrichtungen, und insbesondere die Software, die
einem Kliniker/Arzt gestattet, Modi und/oder Werte für programmierbare
Parameter auszuwählen,
zunehmend komplexer geworden. Programmiersessions können Trial-and-Error-
bzw. empirisch-praktische-Versuche von verschiedenen Modi- und/oder
Parameterwerten umfassen. In einigen Fällen können Programmiersessions automatisiert
oder halbautomatisiert sein, zum Beispiel geleitet durch einen Kliniker/Arzt
oder Patienten, mit einem Algorithmus, der durch die Programmiereinrichtung
ausgeführt
wird, die zumindest einige der Auswahl von neuen Modi und/oder Parameterwerten
zum Testen steuert. Solches Testen bzw. Experimentieren erfordert
wiederholte Telemetriekommunikation zwischen der Programmiereinrichtung
und der implantierbaren medizinischen Vorrichtung, da neue Modi
und/oder Parameter, ausgewählt von
dem Kliniker/Arzt, dem Patienten oder einem Algorithmus, von der
Programmiereinrichtung an die implantierbare medizinische Vorrichtung
kommuniziert bzw. übertragen
werden.
-
Es
ist möglich,
dass die komplexe von einer Programmiereinrichtung ausgeführte Programmiersoftware
versteckte Fehlermodi aufweist, die nicht erkennbar bzw. offensichtlich
werden, sogar mit umfangreichen Validierungen und Tests. Es ist
auch möglich,
dass das physikalische Kabel zwischen einer Programmiereinrichtung
und einem Telemetriekopf, der Telemetriekopf selbst, oder die RF
Telemetrieverbindung zwischen der Programmiereinrichtung und der
implantierbaren medizinischen Vorrichtung ausfällt oder fehlerhaft ist. Wenn
ein oder mehrere solcher Ausfälle
bzw. Fehler während
einer Programmiersession auftreten, zum Beispiel während der Kommunikation
eines neuen Modus oder neuen Parameterwerten an die implantierbare
medizinische Vorrichtung, kann der unvollständige und/oder fehlerhafte
Datentransfer die implantierbare medizinische Vorrichtung dabei
belassen, in einer unerwünschten und
potentiell unsicheren Konfiguration zu arbeiten bzw. zu laufen.
Außerdem
kann, wegen des Ausbleibens bzw. Fehlens der Kommunikation zwischen
der Programmiereinrichtung und der implantierbaren medizinischen
Vorrichtung, sich ein Kliniker/Arzt ohne unmittelbare Mittel wieder
finden,, um die implantierbare medizinische Vorrichtung aus dem
unsicheren Zustand zu bringen.
-
Im
Allgemeinen ist die Erfindung auf Techniken für die ausfallsichere Programmierung
von implantierbaren medizinischen Vorrichtungen (IMDs) gerichtet,
wie in Anspruch 1 definiert. Eine Überwachungseinheit empfängt Stay-alive-Signale
von einer Programmiereinrichtung während des Programmierens von
einer IMD. Die Überwachungseinheit
beaufschlagt einen Überwachungs-Timer
bzw. Überwachungszeitgeber,
und setzt den Timer bei Empfang von jedem Stay-alive-Signal zurück. Wenn
der Überwachungs-Timer
abläuft, ändert die Überwachungseinheit
einen Betriebsmodus der implantierbaren medizinischen Vorrichtung,
zum Beispiel versetzt sie die implantierbare medizinische Vorrichtung
in einen bekannten, sicheren Zustand, um zu vermeiden, dass die
IMD in einem unerwünschten
und potentiell unsicheren Zustand ohne unmittelbare Mittel belassen wird,
um sie aus einem solchen Zustand zu entfernen. Zum Beispiel kann
die Überwachungseinheit
die implantierbare medizinische Vorrichtung veranlassen, Therapieabgabe
zu unterdrücken
bzw. einzustellen, einen Power-On-Reset und/oder ein bekanntes,
sicheres Therapieabgabeprogramm auszuführen.
-
Die Überwachungseinheit
kann an einem Kabel angeordnet sein, welches die Programmiereinrichtung
mit einem Telemetriekopf verbindet, der verwendet wird, um mit der
IMD zu kommunizieren, kann das Kabel mit dem Telemetriekopf koppeln, kann
innerhalb des Telemetriekopfes angeordnet sein, oder kann innerhalb
der IMD angeordnet sein. Infolgedessen können in einigen Ausführungsformen die
Stay-alive-Signale aktive Übergänge von
einer Datenleitung des Datenkabels oder kabellosen Telemetriesignalen
sein. Die Überwachungseinheit
kann als Hardware, ein Software-Modul oder einer Kombination von
Hardware und Software ausgeführt
sein.
-
In
einem Aspekt ist die Erfindung auf ein Verfahren gerichtet, welches
folgendes umfasst:
Empfangen von Stay-alive-Signalen von einer
Programmiereinrichtung an einer Überwachungseinheit, welche
an die Programmiereinrichtung gekoppelt ist, während einer kabellosen Telemetriesitzung
bzw. -session zwischen der Programmiereinrichtung und einer implantierbaren
medizinischen Vorrichtung;
Zurücksetzen eines Überwachungs-Timers,
welcher von der Überwachungseinheit
in Antwort auf das Empfangen von jedem Stay-alive-Signal beaufschlagt
ist; und
Senden eines Signals von der Überwachungseinheit an die implantierbare
medizinische Vorrichtung mittels kabelloser Telemetrie, um einen
Betriebsmodus der implantierbaren medizinischen Vorrichtung in Antwort
auf das Ablaufen des Überwachungs-Timers zu ändern.
-
In
einem anderen Aspekt ist die Erfindung auf eine Überwachungseinheit zum Durchführen des Verfahrens
gerichtet.
-
In
einem anderen Aspekt ist die Erfindung auf ein computerlesbares
Medium gerichtet, welches Instruktionen zum Durchführen des
Verfahrens beinhaltet.
-
Die
Erfindung kann Vorteile bereitstellen. Zum Beispiel kann eine Überwachungseinheit
gemäß der Erfindung
schnell eine IMD aus einem unerwünschten
und unsicheren Zustand entfernen, verursacht durch einen Ausfall
bzw. Fehler während
des Programmierens der IMD. Durch Beaufschlagen eines Überwachungs-Timers
und Zurücksetzen
des Überwachungs-Timers auf Empfangen
von Stay-alive-Signalen hin kann eine Überwachungseinheit gemäß der Erfindung
Hardware- oder Softwareausfälle der
Programmiereinrichtung und Ausfall bzw. Fehler des Kabels, welches
die Programmiereinrichtung mit dem Telemetriekopf koppelt, detektieren.
In Ausführungsformen,
bei denen die Überwachungseinheit
innerhalb der IMD angeordnet ist, was bevorzugt ist, kann die Überwachungseinheit
zusätzlich
Ausfälle des
Telemetriekopfes, der Radiofrequenz-Telemetrieverbindung zwischen
dem Telemetriekopf und der IMD, und der Telemetrie-Schaltkreise
der IMD detektieren. Jedoch können
Ausführungsformen,
bei denen die Überwachungseinheit
außerhalb
der IMD angeordnet ist, vorteilhafter Weise während des Programmierens von
vorhandenen IMDs verwendet werden.
-
Bevorzugte
Ausführungsformen
werden nun lediglich beispielhaft mit Bezug auf die Zeichnungen beschrieben
werden.
-
1 zeigt
ein konzeptionelles Diagramm, das ein System illustriert, in welchem
ein Beispiel einer implantierbaren medizinischen Vorrichtung programmiert
ist, die fehlersichere Programmiertechnik gemäß der Erfindung verwendet.
-
2 zeigt
ein Blockdiagramm, welches ferner das System von 1 gemäß einer
Ausführungsform
der Erfindung illustriert, in welchem das System eine Überwachungseinheit umfasst,
die fehlersichere Programmierung der implantierbaren medizinischen
Vorrichtung von 1 vereinfacht bzw. erleichtert.
-
3 zeigt
ein Blockdiagramm, welches ferner die Überwachungseinheit von 2 gemäß einer Ausführungsform
der Erfindung illustriert.
-
4 zeigt
ein Blockdiagramm, welches die implantierbare medizinische Vorrichtung
von 1 gemäß einer
Ausführungsform
der Erfindung illustriert, in welcher die implantierbare medizinische
Vorrichtung eine Überwachungseinheit
umfasst.
-
5 zeigt
ein Blockdiagramm, welches eine exemplarische Programmiereinrichtung
illustriert, die betriebssichere Programmierung der implantierbaren
medizinischen Vorrichtung von 1 vereinfacht.
-
6 zeigt
ein Flussdiagramm, welches exemplarisch den Betrieb der Programmiereinrichtung von 5 illustriert,
um fehlersichere Programmierung der implantierbaren medizinischen
Vorrichtung von 1 zu vereinfachen.
-
7 zeigt
ein Flussdiagramm, welches exemplarisch den Betrieb der Überwachungseinheit von 3 illustriert,
um fehlersichere Programmierung der implantierbaren medizinischen
Vorrichtung von 1 zu vereinfachen.
-
1 ist
ein konzeptionelles Diagramm, welches ein System 10 illustriert,
wobei eine beispielhafte implantierbare medizinischen Vorrichtung
(IMD) 12 unter Verwendung fehlersicherer Programmiertechniken
gemäß der Erfindung
programmiert ist. Die IMD 12 ist in 1 in einem
Patienten 14 implantiert dargestellt. In der illustrierten
Ausführungsform
nimmt die IMD die Form eines implantierbaren Neurostimulators (INS)
ein, der Neurostimulationstherapie an den Patienten 12 über Leitungen 16A und 16B (im Folgenden „Leitungen 16") abgibt.
-
Insbesondere
sind in der illustrierten Konfiguration Leitungen 16 nahe
an dem Rückenmark 18 des
Patenten 14 implantiert und die IMD 12 gibt Rückenmark-Stimulations-(SCS)-Therapie an den Patienten 14 ab,
um zum Beispiel Schmerz, der von dem Patienten 14 erfah ren
wird, zu reduzieren. Die Leitungen 16 umfassen Elektroden
(in 2 nicht dargestellt), und die IMD gibt Neurostimulation
an das Rückenmark 18 über die
Elektroden ab. Die IMD 12 kann ein implantierbarer Pulsgenerator
sein und kann Neurostimulation an das Rückenmark 18 in Form
von elektrischen Pulsen abgeben.
-
Die
IMD gibt Neurostimulation gemäß einem Programm
ab. Das Programm kann Werte für
eine Anzahl von Parametern umfassen und die Parameterwerte definieren
die Neurostimulationstherapie, die gemäß diesem Programm abgegeben
wird. In Ausführungsformen,
bei denen die IMD 12 Neurostimulationstherapie in Form
von elektrischen Pulsen abgibt, können die Parameter Spannungs-
oder Strompulsamplituden, Pulsbreiten, Pulsraten und dergleichen
umfassen. Ferner umfassen die Parameter für ein Programm Informationen,
die identifizieren, welche Elektroden zur Abgabe von Pulsen gemäß dem Programm
ausgewählt
wurden, sowie die Polaritäten
der ausgewählten
Elektroden.
-
Das
System 10 umfasst auch eine Programmiereinrichtung 20.
Die Programmiereinrichtung 20 kann, wie in 1 dargestellt,
ein Handheld-Computergerät
sein. Die Programmiereinrichtung 20 umfasst ein Display 22,
wie ein LCD- oder LED-Display, um einem User bzw. Anwender Informationen
anzuzeigen. Die Programmiereinrichtung 20 kann auch ein
Tastenfeld 24 umfassen, welches von einem Anwender verwendet
werden kann, um mit der Programmiereinrichtung 20 zu interagieren.
In einigen Ausführungsformen
kann das Display 22 ein Touchscreen bzw. berührungsempfindliches
Display sein, und ein Anwender kann mit der Programmiereinrichtung 20 über das
Display 22 interagieren. Ein Anwender kann zusätzlich oder
alternativ mit dem Arztprogrammierer 20 unter Verwendung
peripherer Zeigegeräte
wie Stift/Stylus oder Maus interagieren. Das Tastenfeld 24 kann
die Form eines alphanumerischen Tastenfeldes oder eines verkleinerten
Tastensatzes aufweisen, ausgestattet mit speziellen Funktionen.
-
Ein
Kliniker/Arzt (nicht dargestellt) kann die Programmiereinrichtung 20 verwenden,
um Neurostimulationstherapie für
Patient 14 zu programmieren. In einigen Ausführungsformen
spezifiziert der Klinker/Arzt Programme mittels Auswählens von
Programmparameterwerten und testet die spezifizierten Programme
an dem Patienten 14. In anderen Ausführungsformen stellt die Programmiereinrichtung 20 eine
automatische oder halbautomatische Programmierroutine zur Verfügung, bei
der die Programmiereinrichtung 20 Programme erzeugt und
die erzeugten Programme an den Patienten testet. In solchen Ausführungsformen
können
entweder der Kliniker/Arzt oder der Patient 14 oder beide
mit der Programmiereinrichtung 20, während dem Testen des erzeugten
Programms, interagieren. Ferner kann in solchen Ausführungsformen
der Klinker/Arzt mit der Programmiereinrichtung 20 interagieren,
um Programme zu bestätigen,
die mittels der Programmiereinrichtung 20 zum Testen erzeugt
werden, und/oder um Programme von denen auszuwählen, die mittels der Programmiereinrichtung
automatisch getestet sind. Eine exemplarische Programmiereinrichtung, die
eine halbautomatische Programmierroutine zur Verfügung stellt,
ist in US Patent Nr. 6,308,102 von Sieracki et al. beschrieben.
-
In
jedem Fall sendet die Programmiereinrichtung 20 jedes der
zu testenden Programme, zur IMD 12, die aus dem Stand der
Technik bekannte Radiofrequenz-Telemetrietechniken verwendet. Zum
Beispiel kann die Programmiereinrichtung 20 Programmparameter
wie Befehle bzw. Anweisungen senden, und kann andere Befehle senden,
die erforderlich sind, um Neuprogrammierung bzw. Umprogrammierung
der IMD 12 über
die Telemetrieeinrichtung zu bewirken. Die IMD 12 empfängt und
dekodiert die Befehle und speichert die Programmparameter in Registern
oder dergleichen zum Verwenden beim Bestimmen der Neurostimmulation,
die an den Patienten 14 gemäß diesem Programm abgegeben wird.
Die Programmiereinrichtung 20 ist mit einem Telemetriekopf 26 über Kabel 28 gekoppelt
und der Kopf 26 ist in der Nähe der IMD 12 angeordnet,
um Telemetriekommunikation zwischen der Programmiereinrichtung 20 und
der IMD 12 zu vereinfachen.
-
Die
Programmiereinrichtung 20 sendet eine Anzahl von Befehlen
an die IMD 12, um die IMD 12 für jedes Programm, das während der
Programmiersession getestet wird, neu- bzw. umzuprogrammieren. In
konventionellen Systemen konnte, wenn IMD 12, Kabel 28 oder
Telemetriekopf 26 während
der Übertragung
von Befehlen ausgefallen waren, die notwendig ist, um die IMD 12 zum
Testen eines Programms neu- bzw. umzuprogrammieren, die IMD 12 in
einem unerwünschten
oder potentiell gefährlichen Zustand
verbleiben, zum Beispiel konnte sie unerwünschte oder potentiell gefährliche
Neurostimulation gemäß einem
unvollständigen
Programm abgegeben. Außerdem,
in konventionellen Systemen, da die IMD 12, das Kabel 28 oder
der Kopf 26 ausgefallen waren, konnte der Kliniker/Arzt
und/oder Patient 14 mit keinen unmittelbaren Mitteln verbleiben,
um die IMD 12 aus dem unerwünschten oder potentiell gefährlichen
Zustand zu entfernen.
-
Das
System 10 umfasst gemäß der Erfindung
eine Überwachungseinheit
(nicht dargestellt). Die Überwachungseinheit
und die Programmiereinrichtung 20 stellen fehlersichere
Programmierung der IMD 12 zur Verfügung, wie detaillierter unten
beschrieben werden wird. Die Überwachungseinheit kann
als eine Hardware-Einrichtung bzw. ein Hardware-Gerät, als ein
Software-Algorithmus, der in einem computerlesbaren Medium gespeichert
und mittels eines Prozessors ausgeführt wird, oder als eine Kombination
von Hardware und Software ausgeführt sein.
-
Die Überwachungseinheit
kann zum Beispiel innerhalb des Telemetriekopfes 26 oder
an bzw. entlang dem Kabel 28 angeordnet werden. In einigen Ausführungsformen
kann die Überwachungseinheit das
Kabel 28 an den Kopf 26 koppeln. In anderen Ausführungsformen
ist die Überwachungseinheit
innerhalb der IMD 12 angeordnet oder durch die IMD 12 bereitgestellt.
-
2 zeigt
ein Blockdiagramm, das des Weiteren das System 10 gemäß einer
Ausführungsform
der Erfindung illustriert. Wie oben diskutiert wurde, umfasst das
System 10 die IMD 12 und die Programmiereinrichtung 20,
die an den Telemetriekopf 26 durch das Kabel 28 gekoppelt
ist. Das System 10 umfasst ferner eine Überwachungseinheit 40,
die in der illustrierten Ausführungsform
das Kabel 28 an den Kopf 26 koppelt.
-
Während einer
Programmiersession beaufschlagt eine Überwachungseinheit 40 einen Überwachungs-Timer.
Die Programmiereinrichtung 20 sendet über das Kabel 28 Stay-alive-Signale an die Überwachungseinheit 40,
um anzuzeigen, dass die Programmiereinrichtung 20 richtig
funktioniert, und die Überwachungseinheit 40 setzt
den Überwachungs-Timer
in Antwort auf jedes der Stay-alive-Signale zurück. In dem Ereignis, dass der
Empfang eines Stay-alive-Signals
durch die Überwachungseinheit 40 fehlschlägt, bevor
der Überwachungs-Timer abläuft, sendet
die Überwachungseinheit 40 einen oder
mehrere Befehle zur IMD 12 über den Telemetriekopf 26,
um einen Betriebsmodus der IMD 12 zu ändern, zum Beispiel um die
IMD 12 in einen bekannten, sicheren Zustand zu versetzen.
-
Zum
Beispiel kann die Überwachungseinheit 40 einen
Befehl zur IMD 12 senden, um die IMD 12 zu veranlassen,
die Therapieabgabe zu stoppen und/oder einen Power-On-Reset (POR)
auszuführen.
In einigen Ausführungsformen
speichert die Überwachungseinheit 40 oder
die IMD 12 ein bekanntes, sicheres Neurostimulationstherapieprogramm.
In solchen Ausführungsformen
kann die Überwachungseinheit 40 das
Programm an die IMD 12 bereitstellen, oder einen Befehl
an die IMD 12 senden, um die IMD 12 zu veranlassen,
das Programm für
die Abgabe einer Neurostimulationstherapie gemäß dem Programm aufzurufen.
-
Die
Programmeinrichtung 20 sendet periodisch ein Stay-alive-Signal
an die Überwachungseinheit 40,
derart, dass die Überwachungseinheit 40 ein Stay-alive-Signal
empfängt,
bevor der Überwachungs-Timer
abläuft.
In exemplarischen Ausführungsformen
umfassen die Stay-alive-Signale Übergänge an einer
oder mehreren Datenleitungen des Kabels 28, das die Programmiereinrichtung 20 an
die Überwachungseinheit 40 koppelt.
Durch die Notwendigkeit, dass Stay-alive-Signale aktive Übergänge an eine
oder mehrere Datenleitungen statt passive Hardware-Handshake-Leitungen
sind, kann die Überwachungseinheit 40 fehlerhaftes
Zurücksetzen des Überwachungs-Timers
in Situationen vermeiden, bei denen die Programmiereinrichtung 20 ausgefallen
ist, aber fortfährt,
das passive Signal zu erzeugen, zum Beispiel ist das Signal „locked
in" durch Ausfall
der Programmiereinrichtung 20. Die Programmiereinrichtung 20 kann
Stay-alive-Signale auf das Ausführen
von Instruktionen der Steuersoftware der Programmiereinrichtung 20 hin,
die für Übertragungen
von Programmierbefehlen zur IMD 12 verwendet wird, anstatt
eines Teils eines unabhängigen
Ablaufs oder Prozesses bereitstellen, so dass die Programmiereinrichtung 20 trotz
der Tatsache, dass die Steuersoftware ausgefallen ist, nicht damit
fortfährt,
zu signalisieren, dass sie richtig funktioniere.
-
Die Überwachungseinheit 40 empfängt Signale,
zum Beispiel Programmierbefehle von der Programmiereinrichtung 20 über das
Kabel 28 während einer
Programmierbetriebes, zum Beispiel einer Neuprogrammierung der IMD 12 mit
einem neuen Programm zum Testen während einer Programmiersession,
die an den Programmierkopf 26 zur Übertragung an die IMD 12 bereitgestellt
werden. In exemplarischen Ausführungsformen
sind die Signale Übergänge an eine
oder mehrere Datenleitungen des Kabels 28, das die Programmiereinrichtung 20 an
die Überwachungseinheit
koppelt. In einigen Ausführungsformen
setzt die Überwachungseinheit 40 den Überwachungs-Timer
bei Empfang von sowohl Programmiersignalen als auch Stay-alive-Signalen
zurück
und die Programmiereinrichtung 20 stellt dedizierte Stay-alive-Signale derart zur
Verfügung,
dass die Überwachungseinheit 40 entweder
ein Programmiersignal oder Stay-alive-Signal empfängt, bevor der Überwachungs-Timer
abläuft.
Die Pro grammiereinrichtung 20 kann Programmiersignale und Stay-alive-Signale
an gemeinsame oder getrennte Datenleitungen des Kabels 28 senden.
-
Wie
oben beschrieben, kann eine Programmiersession multiple Programmiervorgänge umfassen,
zum Beispiel kann die IMD 12 mehrmals neu programmiert
werden, um eine Anzahl von Programmen zu testen. Ferner kann die
Programmiersession eine Periode zwischen Programmiervorgängen enthalten,
wo un- bzw. nichtkritische Kommunikation, oder keine Kommunikation
zwischen der Programmiereinrichtung 20 und der IMD 12 stattfindet.
Um die Abgabe von Stay-alive-Signalen und die Beaufschlagung des Überwachungs-Timers
während
Perioden zwischen Programmiervorgängen zu vermeiden, zum Beispiel
unkritische Perioden, kann die Programmiereinrichtung 20 nur
Stay-alive-Signale während
Programmiervorgängen
abgeben, und kann die Anfänge
und Enden der Programmiervorgänge
an die Überwachungseinheit 40 signalisieren,
um die Überwachungseinheit 40 zu
veranlassen, den Überwachungs-Timer nur während der
Programmiervorgänge
zu beaufschlagen.
-
Wie
oben beschrieben, beaufschlagt die Überwachungseinheit 40 den Überwachungs-Timer, um
Hardware- oder Softwareausfälle
bzw. -fehler der Programmiereinrichtung 20 zu detektieren,
und die IMD 12 in einen sicheren Zustand in Antwort auf solch
einen Ausfall bzw. Fehler zu versetzen. Ferner, da der Überwachungs-Timer
auch ablaufen wird, wenn das Kabel 28 ausfällt, wird
die Überwachungseinheit 40 einen
Ausfall des Kabels 28 detektieren und die IMD 12 in
einen sicheren Zustand in Antwort auf solch einen Ausfall versetzen.
-
3 zeigt
ein Blockdiagramm, welches des Weiteren die Überwachungseinheit 40 gemäß einer Ausführungsform
der Erfindung illustriert. Wie in 2 illustriert,
umfasst die Überwachungseinheit 40 einen
Prozessor 50, der die Überwachungseinheit 40 steuert,
um die Funktionalität
bereitzustellen, die hier der Überwachungseinheit 40 zugeschrieben
wird. Der Prozessor 50 beaufschlagt den Überwachungs-Timer,
wie oben beschrieben, und empfängt Programmiersignale
und Stay-alive-Signale von der Programmiereinrichtung 20 über eine
oder mehrere Datenleitungen des Kabels 28.
-
Die Überwachungseinheit 40 kann
einen Telemetrie-Schaltkreis 52 umfassen, die Kommunikation
zwischen der Überwachungseinheit 40 und
der IMD 12 (1) ermöglicht. Bei Ablauf des Überwachungs-Timers
sendet der Prozessor 50 einen Befehl zur IMD 12 über den Telemetrie-Schaltkreis 52 und den
Telemetriekopf 26 (1), um einen
Betriebsmodus der IMD 12 zu ändern, zum Beispiel die IMD 12 in
einen bekannten, sicheren Zustand zu versetzen. Wie oben beschrieben,
kann der Befehl die IMD 12 veranlassen, die Therapieabgabe
zu unterdrücken
bzw. einzustellen, einen POR auszuführen und/oder ein gespeichertes
Programm aufzurufen. In einigen Ausführungsformen, bei Ablauf des Überwachungs-Timers,
sendet der Prozessor 50 ein Programm, das in einem Speicher 54 gespeichert
ist, zur IMD 12 über
den Telemetrie-Schaltkreis 52 und den Kopf 26,
um die IMD 12 zu veranlassen, Therapie gemäß dem Programm
abzugeben. Während „normalem" Betrieb, zum Beispiel,
wenn der Überwachungs-Timer
nicht abgelaufen ist, sendet der Prozessor 50 die von der
Programmiereinrichtung 20 empfangenen Programmiersignale
zur IMD 12 über den
Telemetriekopf 26.
-
In
exemplarischen Ausführungsformen
empfängt
die Überwachungseinheit 40 Energie
bzw. Strom für
den Betrieb der Programmiereinrichtung 20 über das
Kabel 28. In solchen Ausführungsformen kann die Überwachungseinheit 40 auch
eine Hilfsenergie- bzw. Hilfsstromquelle 56 umfassen. In
dem Fall, dass der Prozessor 50 einen Ausfall in der Energie-
bzw. Stromversorgung von der Programmiereinrichtung 20 detektiert,
welcher durch einen Hardwareausfall bzw. -fehler der Einrichtung 20 oder
eines Ausfalls bzw. -fehlers des Kabels 28 verursacht werden
kann, kann der Prozessor 50 die Hilfsenergiequelle 56 aktivieren
und einen Befehl zur IMD 12 über den Telemetrie-Schaltkreis 54 senden,
um einen Betriebsmodus der IMD 12 zu ändern.
-
Die
Hilfsenergiequelle 56 kann zum Beispiel eine aufladbare
Batterie oder ein kapazitives Element sein. In einigen Ausführungsformen
braucht die Hilfsenergiequelle nur genug Energie bzw. Strom speichern,
um dem Prozessor 50 zu gestatten, einen Befehl zur IMD 12 zu
senden, um die IMD 12 in einen bekannten, sicheren Zustand
zu versetzen. Ferner ist die Erfindung nicht auf Ausführungsformen
beschränkt,
bei denen die Überwachungseinheit 40 primär Energie
von der Programmiereinrichtung 20 empfängt, aber stattdessen Ausführungsformen
umfasst, bei denen die Überwachungseinheit 40 eine Primärenergie-
bzw. Primärstromquelle
unterbringt, wie eine aufladbare oder nicht-aufladbare Batterie.
-
In
einigen Ausführungsformen
stellt die Überwachungseinheit 40 einen
Notfall-Abschalt-Schaltkreis 58 zur
Verfügung,
der durch einen Anwender aktiviert werden kann, wie dem Kliniker/Arzt
oder Patient 14 (1). Bei
Aktivierung des Notfall-Abschalt-Schaltkreises 58 sendet
der Prozessor 50 einen Befehl zur IMD 12 über den
Telemetrie-Schaltkreis 52, um die IMD 12 zu veranlassen, beispielsweise
die Therapieabgabe zu unterdrücken bzw.
einzustellen. Der Notfall-Abschalt-Schaltkreis 58 kann
zum Beispiel einen Schalter umfassen, der durch den Anwender aktiviert
wird, indem ein Button gedrückt
wird, der an einem Gehäuse
der Überwachungseinheit 40 angeordnet
ist.
-
Der
Prozessor 50 kann einen oder mehrere von einem Mikroprozessor,
einem Controller, einem digitalen Signalprozessor (DSP), einem integrierten Schaltkreis
für bestimmte
Funktionen (ASIC), einer feldprogrammierbaren Gatteranordnung (FPGA), diskreten
Logikschaltkreisen oder dergleichen umfassen. Der Speicher 54 kann
Programmbefehle speichern, die den Prozessor 50 veranlassen,
die ihm hierin zugeschriebene Funktionalität bereitzustellen. Der Speicher 54 kann
ein oder mehrere flüchtige,
nichtflüchtige,
magnetische, optische oder elektrische Medien wie Festwertspeicher
bzw. Lesespeicher (ROM), Speicher mit wahlfreiem Zugriff bzw. Schreib-/Lesespeicher
(RAM), elektrisch löschbarer programmierbarer
ROM (EEPROM), nichtflüchtigen RAM
(NVRAM), Flash-Speicher oder dergleichen umfassen. Der Speicher 54 kann
sowohl On-Board- als auch Off-Board-Komponenten umfassen.
-
4 zeigt
ein Blockdiagramm, welches die IMD 12 gemäß einer
Ausführungsform
der Erfindung illustriert, in welcher die IMD 12 eine Überwachungseinheit 60 umfasst.
Wie die Überwachungseinheit 40 empfängt die Überwachungseinheit 60 Stay-alive-Signale
von der Programmiereinrichtung 20, setzt einen Überwachungs-Timer
in Antwort auf den Empfang von Stay-alive-Signalen zurück und ändert einen
Betriebsmodus der IMD 12 in Antwort auf den Ablauf des Überwachungs-Timers.
Die Überwachungseinheit 60,
die innerhalb der IMD 12 angeordnet ist, kann den Ausfall
des Telemetriekopfes 26 (1), den
Verlust der RF Telemetrieverbindung zwischen der Programmiereinrichtung 20 und
der IMD 12 und den Ausfall eines Telemetrie-Schaltkreises 62 der
IMD 12, zusätzlich
zu Hardware- oder Softwareausfällen
der Programmiereinrichtung 20 und den Ausfall des Kabels 28 (1)
detektieren.
-
Die
IMD 12 gibt Neurostimulationstherapie über Elektroden 64A-D
von Leitungen 16A und Elektroden 64E-H von Leitungen 16B (gemeinsam „Elektroden 64") ab. Die Elektroden 64 können Ringelektroden
sein. Die Konfiguration, Typ bzw. Art und Anzahl der Elektroden 64,
die in 2 illustriert sind, sind nur exemplarisch.
-
Die
Elektroden 64 sind elektrisch an einen Therapieabgabe-Schaltkreis 66 über Leitungen 16 gekoppelt.
Der Therapieabgabe-Schaltkreis 66 kann zum Beispiel einen
oder mehrere Ausgangspulsgeneratoren, zum Beispiel kapazitive Elemente
und Schalter, die mit einer Strom- bzw. Energiequelle, wie einer Batterie
gekoppelt sind, umfassen. Der Therapieabgabe-Schaltkreis 66 gibt elektrische
Pulse an den Patienten 14 über zwei oder mehrere der Elektroden 64 unter
der Steuerung eines Prozessors 68 ab.
-
Wie
oben beschrieben, steuert der Prozessor 68 den Therapieabgabe-Schaltkreis 66,
um Neurostimulationstherapie gemäß einem
Programm abzugeben. Insbesondere kann der Prozessor 68 den Schaltkreis 66 steuern,
um elektrische Pulse mit den Amplituden und Breiten und bei Raten,
die durch das Programm spezifiziert sind, abzugeben. Der Prozessor 68 kann
auch den Schaltkreis 66 steuern, um die Pulse über eine
ausgewählte
Kombination von Elektroden 64, wie durch das Programm spezifiziert,
abzugeben.
-
Wie
oben beschrieben, kann die IMD 12 mehrmals während einer
Programmiersession neu programmiert werden, um eine Anzahl von Programmen
zu testen. Für
jedes getestete Programm empfängt
die IMD 12 eine Anzahl von Befehlen, die die Programmparameter
umfassen, von der Programmiereinrichtung 20 über den
Telemtrie-Schaltkreis 62 und die Überwachungseinheit 60.
Die Programmparameter werden in einem Speicher 70 gespeichert, wie
das Programm, das von dem Prozessor 68 verwendet wird,
um die Neurostimulationsabgabe zu steuern.
-
Die
Programmiereinrichtung 20 sendet auch Stay-alive-Signale über die
RF Telemetrievorrichtung, die von der Überwachungseinheit 60 über den Telemetrie-Schaltkreis 62 empfangen
werden. Die Überwachungseinheit 60 kann
den Überwachungs-Timer
bei Empfang von jedem Stay-alive-Signal zurückstellen und kann auch den Überwachungs-Timer
bei Empfang von Programmierbefehlen von der Programmiereinrichtung 20 zurückstellen.
In einigen Ausführungsformen
empfängt
die Überwachungseinheit 60 auch
Signale, die den Anfang und das Ende eines Programmiervorgangs von der
Programmiereinrichtung 20 anzeigt, und beaufschlagt den Überwachungs-Timer
nur während
des angezeigten Programmiervorgangs.
-
Die Überwachungseinheit ändert einen
Betriebsmodus der IMD 12, zum Beispiel versetzt sie die
IMD 12 bei Ablauf des Überwachungs-Timers
in einen bekannten, sicheren Zustand. Die Überwachungseinheit 60 kann
zum Beispiel die IMD 12 veranlassen, die Therapieabgabe
zu unterdrücken,
einen POR auszuführen
und/oder ein bekanntes, sicheres Programm, das in dem Speicher 70 gespeichert
ist, zu aktivieren. Die Funktionalität, die der Überwachungseinheit 60 hier
zugeschrieben wird, kann durch den Prozessor 68 oder durch
einen separaten Prozessor zur Verfügung gestellt werden. Wo die Überwachungseinheit 60 in
einem separaten Prozessor ausgeführt
ist, kann die Überwachungseinheit 60 den
Ablauf des Überwachungs-Timers an den Prozessor 68 signalisieren,
um den Prozessor 68 zu veranlassen, einen Betriebsmodus
der IMD 12 auf irgendeinen der oben bezeichneten Wege zu ändern.
-
Der
Prozessor 68 und die Überwachungseinheit 60 können einen
oder mehrere von einem Mikroprozessor, einem Controller, einem DSP,
einem ASIC, einem FPGA, diskreten Logikschaltkreis oder dergleichen
umfassen. Der Speicher 70 kann Programmbefehle umfassen,
die, wenn von dem Prozessor 68 und der Überwachungseinheit 60 ausgeführt, den
Prozessor 68 und die Überwachungseinheit 60 veranlassen,
die hier dem Prozessor 68 und der Überwachungseinheit 60 zugeschriebenen
Funktionen durchzuführen.
Der Speicher 70 kann einen oder mehrere flüchtige,
nichtflüchtige,
magnetische, optische oder elektrische Medien wie RAM, ROM, NVRAM,
EEPROM, Flash-Speicher oder dergleichen umfassen. Der Speicher 70 kann
On-Board- und/oder Off-Board-Komponenten umfassen.
-
5 zeigt
ein Blockdiagramm, welches die Programmiereinrichtung 20 detaillierter
illustriert. Die Programmiereinrichtung 20 umfasst einen
Prozessor 80 und ein User-Interface bzw. eine Benutzerschnittstelle 82,
die einem Anwender/Benutzer wie dem Kliniker/Arzt oder Patienten 14 ermöglichen,
mit dem Prozessor 80 zu interagieren. Das User-Interface 82 kann
ein Display 22 und ein Tastenfeld 24 (1) umfassen,
und dem Anwender zum Beispiel ermöglichen, Programme zum Testen
während
einer Programmiersession auszuwählen.
-
Der
Prozessor 80 kann Programmiersignale, zum Beispiel Befehle,
zur IMD 12 über
einen Telemetrie-Schaltkreis 84 und einen Telemetriekopf 26 (1) übertragen.
Der Prozessor 80 stellt auch, wie oben beschrieben, Stay-alive-Signale
an eine Überwachungseinheit 40 über eine
Datenleitung des Kabels 28 (1), oder
an eine Überwachungseinheit 60 über den
Telemetrie-Schaltkreis 84 und den Telemetriekopf 26 zur
Verfügung.
Der Prozessor 80 sendet die Stay-alive-Signale periodisch,
derart, dass die Überwachungseinheit 40, 60 ein
Stay-alive-Signal empfängt, bevor
der Überwachungs-Timer
abläuft.
-
In
einigen Ausführungsformen
setzt die Überwachungseinheit 40, 60,
wie oben beschrieben, den Überwachungs-Timer
bei Empfang von sowohl Programmiersignalen als auch Stay-alive-Signalen zurück, und
der Prozessor 80 stellt dedizierte Stay-alive-Signale derart
zur Verfügung,
dass die Überwachungseinheit 40, 60 mit
einem Programmiersignal oder Stay-alive-Signal empfängt, bevor der Überwachungs-Timer
abläuft.
In exemplarischen Ausführungsformen
stellt der Prozessor 80 Stay-alive-Signale bei Ausführung von
Befehlen der Steuersoftware der Programmiereinrichtung 20 zur
Verfügung.
Ferner; um die Abgabe von Stay-alive-Signalen
während
der Periode, bei der es keine Kommunikation oder nicht-kritische
Kommunikation mit der IMD 12 gibt, zu vermeiden, kann der
Prozessor 80 Signale an die Überwachungseinheit 40, 60 senden, die
den Beginn und das Ende von Programmiervorgängen in einer Programmiersession
anzeigt, und kann Stay-alive-Signale nur während der Programmiervorgänge senden.
-
Der
Prozessor 80 kann einen Mikroprozessor, einen Controller,
einen DSP, einen ASIC, einen FPGA, diskrete Logikschaltkreise oder
dergleichen umfassen. Ein Speicher 86 kann Programmbefehle umfassen,
die, wenn durch den Prozessor 80 ausgeführt, die Programmiereinrichtung 20 veranlassen, die
hier der Programmiereinrichtung 20 zugeschriebenen Funktionen
auszuführen.
Der Speicher 86 kann irgendein flüchtiges, nichtflüchtiges,
festes, entfernbares, magnetisches, optisches oder elektrisches
Medium wie einen RAM, ROM, CD-ROM, Festplatte, Wechsel-Magnetplatte,
Speicherkarten oder -sticks, NVRAM, EEPROM, Flash-Speicher und dergleichen
umfassen.
-
6 zeigt
ein Flussdiagramm, welches exemplarisch den Betrieb bzw. den Vorgang
der Programmiereinrichtung 20 illustriert, um die fehlersichere
Programmierung der IMD 12 zu vereinfachen. Die Programmiereinrichtung 20 sendet
ein Signal, welches den Beginn eines Programmiervorgangs an eine Überwachungseinheit 40, 60 (90)
anzeigt. Während
des Programmiervorgangs sendet die Programmiereinrichtung 20 periodisch
Stay-alive-Signale an die Überwachungseinheit 40, 60,
um die Überwachungseinheit
zu veranlassen, einen Überwachungs-Timer
(92) zurückzusetzen.
In einigen Ausführungsformen
kann die Programmiereinrichtung 20 nur dedizierte Stay-alive-Signale
senden, wenn kein Programmiersignal rechtzei tig gesendet wurde,
um die Überwachungseinheit 40, 60 zu
veranlassen, den Überwachungs-Timer zurückzusetzen.
Wenn die Programmiereinrichtung 20 feststellt bzw. ermittelt, dass
der Programmiervorgang ausgeführt
wurde (94), sendet die Programmiereinrichtung 20 ein
Signal an die Überwachungseinheit 40, 60,
die das Ende der Programmiervorgangs (96) anzeigt.
-
7 zeigt
ein Flussdiagramm, welches exemplarisch den Betrieb der Überwachungseinheit 40 illustriert,
um die fehlersichere Programmierung der IMD 12 zu vereinfachen.
Obwohl 7 den Betrieb der Überwachungseinheit 40 illustriert,
versteht sich, dass die Überwachungseinheit 60,
wie oben beschrieben, verschiedene von den Funktionen der Überwachungseinheit 40 ausführen kann.
-
Die Überwachungseinheit 40 empfängt ein Signal,
welches den Start eines Programmiervorgangs von der Programmiereinrichtung 20 über ein oder
mehrere Datenleitungen des Kabels 28 anzeigt (100),
und einen Überwachungs-Timer
in Antwort auf das Signal initialisiert (102). Die Überwachungseinheit 40 überwacht
den Ausfall der Stromversorgung von der Programmiereinrichtung 20 (104),
die Aktivierung eines Notfall-Abschalt-Schaltkreises 58 durch
einen Anwender (106), ein Signal, welches das Ende des
Programmiervorgangs von der Programmiereinrichtung 20 anzeigt
(108), und Stay-alive-Signale von der Programmiereinrichtung 20 während des
Programmiervorgangs (110). Jedes Mal, wenn die Überwachungseinheit 40 ein
Stay-alive-Signal und in einigen Ausführungsformen ein Programmiersignal
von der Programmiereinrichtung 20 empfängt, bevor der Überwachungs-Timer
abläuft,
setzt die Überwachungseinheit 40 den Überwachungs-Timer zurück (112).
-
Wenn
die Überwachungseinheit 40 ein Stay-alive-Signal
oder Programmiersignal von der Programmiereinrichtung 20 nicht
empfängt,
bevor der Überwachungs-Timer
abläuft
(110), sendet die Überwachungseinheit
ein Signal an die IMD 12 über den Telemetriekopf 26,
um die IMD 12 in einen bekannten, sicheren Zustand zu versetzen
(116). Das Signal kann die IMD 12 veranlassen,
zum Beispiel die Therapieabgabe zu unterdrücken bzw. einzustellen, einen
POR auszuführen,
und/oder ein bekanntes, sicheres Therapieprogramm aufzurufen. Die Überwachungseinheit
sendet auch solch ein Signal an die IMD 12 (126),
wenn ein Anwender den Notfall-Abschalt-Schaltkreis 58 aktiviert
(106). In Ausführungsformen,
bei denen die Überwachungseinheit 40 Primärenergie
bzw. -strom von der Programmiereinrichtung 20 empfängt, aktiviert
die Überwachungseinheit 40 eine
Hilfsenergiequelle bzw. -stromquelle 56 (114)
und sendet das Signal an die IMD 12 (116) bei
Detektion eines Ausfalls der Energieversorgung durch die Programmiereinrichtung 20 (104).
Wenn die Überwachungseinheit 40 ein
Signal von der Programmiereinrichtung 20 empfängt, welches
das Ende des Programmiervorgangs anzeigt (108), kann die Überwachungseinheit 40 die
Beaufschlagung des Überwachungs-Timers
stoppen.
-
Verschiedene
Ausführungsformen
der Erfindung sind beschrieben worden. Jedoch werden Fachleute die
verschiedenen Modifikationen, die an den beschriebenen Ausführungsformen
gemacht werden können,
erkennen. Zum Beispiel ist die Erfindung nicht auf das Programmieren
von Rückenmark-Stimulations-(SCS)-Therapie,
oder sogar auf das Programmieren von Neurostimulationstherapie begrenzt.
Die fehlersicheren bzw. ausfallsicheren Programmiertechniken, wie
hier beschrieben, können
zum Programmieren von irgendeiner implantierbaren medizinischen
Vorrichtung, wie Schrittmacher und implantierbaren Pumpen angewandt
werden. Außerdem
ist die Erfindung nicht auf das fehlersichere bzw. ausfallsichere
Programmieren von implantierbaren medizinischen Vorrichtungen, die
Therapie abgeben, begrenzt, sondern kann fehlersicheres bzw. ausfallsicheres
Programmieren von implantierbaren medizinischen Vorrichtungen umfassen,
die zum Überwachen
von Patienten verwendet werden, wie implantierbare haemodynamische Überwachungen oder
Loop-Rekorder.
-
Ferner,
obwohl eine Programmiereinrichtung hier primär als ein Klinik/Arztprogrammierer,
verwendet zum Programmieren von Therapie während einer Programmiersession,
beschrieben worden ist, ist die Erfindung darauf nicht begrenzt.
Eine Programmiereinrichtung, die fehlersicheres Programmieren von einer
implantierbaren medizinischen Vorrichtung vereinfacht, kann ein
Patienten-Programmierer sein, verwendet zum Steuern der Therapieabgabe
durch eine implantierbare medizinische Vorrichtung in einer ambulanten
Einstellung. Zum Beispiel kann ein Patienten-Programmierer verwendet
werden, um Programmparameter für
die Abgabe von Neurostimulationen mittels einer implantierbaren
medizinischen Vorrichtung einzustellen.
-
Zusätzlich kann
in einigen Ausführungsformen
die Erfindung die Form eines Computerprogrammprodukts einnehmen,
das einen programmierbaren Prozessor veranlasst, irgendein der hier
beschriebenen Verfahren auszuführen.
Zum Beispiel kann das Computerprogrammprodukt gemäß einigen Ausführungsformen
der Erfindung einen programmierbaren Prozessor veranlassen, Stay-alive-Signale
von einer Programmiereinrichtung während dem Verlauf einer kabellosen
Telemetriesession zwischen der Programmiereinrichtung und einer
implantierbaren medizinischen Vorrichtung zu empfangen, einen Überwachungs-Timer
in Antwort auf den Empfang von jedem der Stay-alive-Signale zurückzusetzen und
einen Betriebsmodus der implantierbaren medizinischen Vorrichtung
in Antwort auf den Ablauf des Überwachungs-Timers zu ändern.