-
Die vorliegende Erfindung betrifft
im Allgemeinen die "aktiven
medizinischen Vorrichtungen".
Es kann sich um implantierbare Vorrichtungen handeln, wie z. B.
definiert durch die Direktive 90/385/CEE vom 20. Juni 1990 des Rates
der Europäischen
Gemeinschaft – Herzschrittmacher,
Defibrillatoren und/oder Kardioverter, neurologische Apparate, Diffusionspumpen
für medizinische
Substanzen, kochleäre
Implantate usw. – oder nicht
implantierbare, d. h. getragen durch den Patienten – insbesondere
die Holter-Aufzeichnungsvorrichtungen, d. h. Vorrichtungen, welche
es erlauben, kontinuierlich und über
eine lange Periode Signale aufzuzeichnen, die mittels implantierter
Elektroden oder externer Elektroden aufgenommen werden.
-
In diesen Vorrichtungen, wie bei
vielen anderen elektronischen Vorrichtungen, ist es nötig, eine
bestimmte Anzahl von Funktionsparametern zu regeln und zu speichern.
-
Unter diesen Parametern findet man
zuallererst Parameter technischer Natur, im Allgemeinen eingestellt
bei der Produktion im Moment der Kalibrierung der Vorrichtung (Spannungs-
oder Stromreferenzwerte, Frequenz eines Oszillators, Verstärkerfaktor,
usw.). Tatsächlich
erfordert es die Konzeption der Schaltungen der Vorrichtung häufig, dass
das Funktionieren der Hardware-Schaltungen eingestellt wird, um
ein optimales Verhalten zu erhalten. Diese Einstellungen können realisiert
werden auf diverse Weisen, z. B. durch Einstellung von Widerständen durch
Sandstrahlen oder Laser-Gravur; häufiger hat die Verallgemeinerung
der Elektronik mit geschalteten Kapazitäten und mit digitaler Verarbeitung
das Problem der Einstellung mit dem Erhalten eines numerischen Codes
auf N Bits mit sich gebracht, welcher, wenn er einmal erhalten ist,
verwendet wird über
Digital/Analog-Konverter oder auch um logische Schalter einer Leiter
von Kapazitäten zu
bedienen, oder auch als Variable in einer Software. Eine derartige
Technik ist z. B. offenbart in der EP-A-0 661 657 (ELA Medical).
-
Andere Parameter werden später eingestellt.
-
In dem besonderen Fall einer implantierbaren
aktiven medizinischen Vorrichtung können bestimmte Parameter so
eingestellt werden nach Implantation durch den Arzt, z. B. um die
Prothese an dem Patienten unter einem physiologischen Aspekt anzupassen.
Diese Parameter werden das Verhalten der diversen Algorithmen der
Steuerungssoftware der medizinischen Vorrichtung konditionieren,
z. B. für
die Abgabe von Stimulationsimpulsen oder Defibrillationsschocks
im Fall einer Herzprothese.
-
Diese diversen Parameter haben als
gemeinsame Eigenschaft, permanente Parameter zu sein (d. h. einmal
eingestellt für
alle Zeiten) oder quasi-permanente und definiert zu sein in Form
digitaler Codes über
N Bits (wobei die Zahl N von Bits variieren kann in Abhängigkeit
des betrachteten Parameters).
-
Diese numerischen Codes werden also
gespeichert in Permanent-Speichern, die vom Typ Einbrenn-ROM, EPROM,
E2PROM, Flash oder auch gesicherte RAM sein
können.
Jeder dieser Speichertypen besitzt seine eigenen Vorteile und Nachteile
und vor allem eine mehr oder weniger große Fähigkeit, die Information dauerhaft
zu speichern. Der RAM, der die größte Eignung zum Beschreiben
besitzt, weist auch ein größeres Risiko
des Verlusts oder der Verfälschung
der Information auf seltene Ereignisse hin auf, wie z. B. den Schwerioneneinfall,
wie die Alpha-Teilchen oder elektrische parasitäre Effekte, die erzeugt werden
können
z. B. in der Folge einer Aussetzung gegenüber einem elektromagnetischen
Impulsstrahlungsfeld starker Intensität.
-
Die Speicher vom Typ ROM, EPROM,
E2PROM oder Flash sind von Haus aus gut
geschützt
gegen diese Risiken der Veränderung,
aber sie weisen für
eine aktive medizinische Vorrichtung einen zweifachen Nachteil auf:
-
- – einerseits,
vom Gesichtspunkt der Topologie der Schaltungen, sind diese Speicher
physisch nicht lokalisiert dort, wo der Wert, den sie speichern,
verwendet wird, und nebenbei bemerkt sind sie architektonisch organisiert
in einer allgemeinen Weise im Speicherplan, welcher den individuellen
Zugriff verbietet, direkt und permanent auf die Information, während die
eingestellte analoge Funktion diese Information permanent benötigt;
- – andererseits
verbraucht das Lesen dieser Speicher Energie, ein kritischer Parameter
für implantierbare Prothesen,
und, viel allgemeiner, für
die Vorrichtungen, welche durch eine Batterie versorgt werden, welche einen
permanenten Zugriff auf die Einstellinformation der analogen Funktion
verhindert, welche in diesen Speichern gespeichert ist, aus offensichtlichen
Energieverbrauchsgründen.
-
Diese Schwierigkeiten haben dazu
geführt,
die fraglichen Informationen in Registern des Typs RAM oder logischen
elektronischen Kippschaltungen zu speichern, die im Inneren des
Moduls lokalisien sind, welches sie verwendet, somit topologisch
nahe bei dem Ort der Funktion, welche sie abgleichen, und permanent sowie
mit sehr geringem Verbrauch lesbar.
-
Weil diese Register von Natur aus
flüchtige
Register sind, muss man dem Risiko der zufälligen Löschung der Daten Rechnung tragen,
mit zwei Problemen:
-
- – Überwachung
der gespeicherten Information in den Registern, um davon die Integrität zu kontrollieren, und
dies mit einem vernachlässigbaren
Verbrauch sowie in sofortiger oder quasi-sofortiger Weise; und
- – Korrektur,
gleichermaßen
sofort oder quasi sofort der beschädigten Daten im Falle einer
zufälligen
Veränderung.
-
Es sind viele Systeme vorgeschlagen
worden, die auf einer redundanten Kodierung und/oder Auto-Korrektur
der Information beruhen, z. B. des Typs CRC oder analog, siehe z.
B. das Dokument US-A-5,792,201. Jedoch weist diese Technik den doppelten
Nachteil auf, ein quasi-permanentes Durchgehen oder Analyse der
Information zu benötigen,
was somit einen bedeutenden Energieverbrauch nach sich zieht, und
andererseits das Auftreten eines unbestimmten Zustands der Information
während
der Zeit, welche die Detektion des Fehlers und seine Korrektur trennt,
ein Nachteil, der nicht zulässig
ist im Fall von aktiven medizinischen Vorrichtungen, wie z. B. Herzschrittmacher,
bei welchen die Kontinuität
einer korrekten Funktion in allen Umstanden gewährleistet sein muss.
-
Die Erfindung stellt eine Lösung für diese
Probleme bereit, indem sie eine aktive medizinische Vorrichtung
vorschlägt,
welche zumindest ein Modul aufweist für das Bereitstellen einer Funktion
der Vorrichtung, wobei dieses Modul eine spezifische Schaltung umfasst
für die
Funktion und deren einer Parameter einstellbar ist in Form eines
digitalen Wortes von N Bits, wobei die Vorrichtung dadurch gekennzeichnet
ist, dass jedes der Module umfasst: zumindest drei Register des
flüchtigen
Typs von N Bits, wobei jedes das digitale Wort speichert; eine größere Schaltung,
welche am Eingang die Inhalte der Register empfängt und am Ausgang der spezifischen
Schaltung den resultierenden Wert als Einstellparameter abliefert;
Komparatormittel, um die jeweiligen Inhalte der Register zu vergleichen
und ein Anomalie-Signal zu produzieren im Fall der Diskordanz zwischen
diesen Inhalten.
-
Wenn die aktive medizinische Vorrichtung
eine Vorrichtung mit Mikrocontroller ist, kann das Anomalie-Signal
ein Interrupt-Signal sein, welches dem Mikrocontroller zugeführt wird;
Im Fall einer Mehrzahl von Modulen werden die jeweiligen Interrupt-Signale
dem Mikrocontroller über
Mittel zum Multiplexen, Kodieren und Verwalten der Prioritäten dieser
Interrupts zugeführt.
-
Sehr vorteilhafterweise sind des
Weiteren Mittel vorgesehen zum Wiederherstellen des Inhalts des oder
der veränderten
Register im Fall der Diskordanz, detektiert durch die Komparatormittel.
Diese Mittel können
insbesondere Mittel sein zum Suchen eines übereinstimmenden Werts unter
einer Mehrzahl von Registern und Zurückkopieren dieses Werts in
das veränderte
Register, oder auch, wenn der Wert des Parameters gleichermaßen gespeichert
wird in einem nicht-flüchtigen
Speicher außerhalb
des Moduls, Mittel zum Zurückkopieren
in das veränderte
Register oder auch in alle Register, des gelesenen Werts in diesen
externen nichtflüchtigen
Speicher.
-
Nunmehr wird ein Ausführungsbeispiel
der Erfindung beschrieben unter Bezugnahme auf die beigefügten Zeichnungen.
-
1 repräsentiert,
in Form eines Blockschemas, die prinzipiellen Elemente einer aktiven
medizinischen Vorrichtung, welche die Korrektur- und Überwachungsschaltung
gemäß der Erfindung
beinhaltet.
-
2 zeigt
detaillierter den Aufbau einer der Blöcke, referenziert mit 26 der 1.
-
Die aktive medizinische Vorrichtung
wird gebildet im Wesentlichen aus einem Mikrocontroller 10 und aus
einem ASIC 12, enthaltend die diversen Funktionen zum Konfigurieren
durch geschützte
Register.
-
Sie kann eventuell einen Speicher
zur nicht-flüchtigen
Speicherung 14 enthalten, wie z. B. einen E2PROM,
der extern sein kann, wie dargestellt, oder auch intern im Mikrocontroller 10.
-
Der Mikrocontroller 10 umfasst,
in herkömmlicher
Weise, einen Festspeicher ROM 16 und einen lebendigen Speicher
RAM 18, und er kommuniziert mit dem ASIC 12, und,
sofern zutreffend, mit dem E2PROM 14 über einen
Adressen- und Datenbus 20. Er verfügt des Weiteren über einen
Eingang ITin 22, dessen Rolle später erklärt werden
wird.
-
Der ASIC 12 umfasst eine
bestimmte Anzahl von Modulen 24, dessen jedes einer bestimmten
Funktion entspricht, deren Parameter einstellbar ist, z. B.:
-
- – Verstärker mit
einstellbarer Verstärkung,
- – Oszillator
mit einstellbarer Frequenz,
- – Verarbeitungszug
der Beschleunigung, im Fall einer Servo-Vorrichtung,
- – Stimulationsstufe
mit programmierbarer Konfiguration (Konfiguration der Elektroden
für einen
Mehrstellen-Stimulator, Konfiguration der zu applizierenden Stöße für einen
Defibrillator).
-
Man kann ebenso in gleicher Weise
Daten speichern, die kritisch sind für das Funktionieren der Vorrichtung,
z. B. die Modellnummer, die eine unverzichtbare Größe ist,
insbesondere für
die Wiedererkennung der Vorrichtung durch einen externen Programmierer.
-
Diese diversen Module 24 sind
jedes verbunden mit einem Block 26, welcher die N Bits
speichert (wobei N eine variable Zahl ist gemäß der betrachteten Funktion),
die notwendig sind für
die Einstellung des Moduls 24.
-
Die Einstellungsbits, organisiert
in Worten von N Bits, werden gespeichert in dreifacher Weise in
identischen Registern 28, deren Architektur identisch ist
von einem Block 26 zu dem anderen, welche sich aber unterscheiden
in der Größe gemäß der Zahl
N von Einstellungsbits entsprechend dem assoziierten Modul 24 (die 2 illustriert also ein Beispiel
des Blocks 26 in dem Fall, dass N = 4).
-
Die Zahl drei als die Zahl der Register 28 ist
nicht limitierend, und eine größere Zahl
kann in Betracht gezogen werden, vorzugsweise (aber nicht notwendigerweise)
eine ungerade Zahl.
-
Ursprünglich und unter normalen Funktionsbedingungen
speichern die drei Register 28 eines selben Blocks 26 dieselbe
Information.
-
Jedes der Bits jedes der drei Register 28 eines
selben Blocks 26 wird zugeführt, einerseits, einem der drei
Eingänge
einer jeweiligen Mehrheitsschaltung 30 und, andererseits,
an den einen der drei Eingänge
eines jeweiligen Gatters 32, welches die Funktion (DIFFERENZ)
realisiert (Ausgang "falsch" dann und nur dann, wenn
die drei Eingänge
identisch sind (alle "0" oder alle "1") und Ausgabe "wahr" im
gegenteiligen Fall).
-
Zur Gedächtnisstütze ist die Wahrheitstabelle
einer Mehrheitsschaltung mit drei Eingängen A, B und C die folgende:
-
Die Wahrheitstabelle einer DIFFERENZ-Schaltung
mit drei Eingängen
A, B und C ihrerseits ist die folgende:
-
Die Ausgänge der Mehrheitsschaltungen 30 werden
einem Register Reg Adj 34 zugeführt, welches die Einstellung
der Funktion des Moduls 24 erlaubt, welches den betrachteten
Block 26 zugeordnet ist. Wenn somit eine Veränderung
auftritt in einem der drei Register 28, wird keine Konsequenz
gesehen durch die eingestellte Funktion.
-
Diese Mehrheitsschaltungen garantieren
somit die Integrität
des Systems, selbst wenn eines der Register gerade verändert wurde,
denn in diesem Fall werden die beiden anderen Register identisch
verbleiben, und ihr Wert wird durch den Mehrheitsschaltkreis 30 zur
Kenntnis genommen, derart, dass keine Konsequenz der eingetretenen
Veränderung
durch die eingestellte Funktion gesehen wird.
-
Die DIFFERENZ-Gatter 32,
indem sie Bit für
Bit die drei Register 28 vergleichen, überwachen, dass diese drei
Register 28 immer identisch sind. Wenn dieses der Fall
ist (normale Situation), sind die Gatter 32 im inaktiven
Zustand (der Verbrauch ist somit null, obwohl die Überwachung
permanent ist); im Fall, dass eine Differenz auftritt zwischen den
drei Registern auf einem der Bits, tritt das entsprechende DIFFERENZ-Gatter 32 in
den aktiven Zustand, was somit die Veränderung eines der Register
ans Licht bringt.
-
Die Schaltung wird die Detektion
einer derartigen Veränderung
in der folgenden Weise behandeln.
-
Die Ausgänge der DIFFERENZ-Gatter 32 jedes
Blocks 26 sind verbunden mit den einen der Eingänge eines
gemeinsamen ODER-Gatters 36 mit N Eingängen (so viele Eingänge wie
in jedem der Register 28), welches am Ausgang ein Signal
produziert, welches erlaubt, eine Interrupt-Anforderung in Richtung
des Mikrocontrollers zu schicken.
-
Somit ist für jede Funktion eine einzige
Leitung notwendig, um eine Interrupt-Anforderung zu schicken, die für die Einstellung
des entsprechenden Moduls eigen ist, welches Bit auch immer in den
drei Registern 28 geändert
worden ist.
-
Die Gesamtheit der Interrupt-Anforderungen
IT1, IT2, ... wird
zusammengefasst und verarbeitet durch zwei Funktionen:
-
- – ein
ODER-Gatter 38 mit k Eingängen fasst alle Interrupt-Anforderungen
zusammen und sein Ausgang ist schnittstellenmäßig verbunden mit dem Interrupt-Eingang 22 des
Mikrocontrollers 10;
- – ein
Block 40 mit k Eingängen
hat als Funktion, die Zahl des Interrupts zu berechnen, der hergestellt
wurde, und ihn in ein Register Reg Num 42 zu schreiben,
auf welches in Lesezugriff zugegriffen werden kann in dem globalen
System über
den Bus 20; wenn mehrere Interrupts zur selben Zeit erzeugt
werden, speichert der Block 40 jede der Anfragen und schreibt
in das Register 42 die Zahl des zu verarbeitenden Interrupts ein,
abhängig
von vordefinierten Prioritäten.
-
Der Mikrocontroller 10 führt auf
Empfang einer Interrupt-Anforderung ITin22
dann ein spezifisches Programm durch, welches in dem ROM 16 oder
dem RAM 18 enthalten sein kann, um das Beschädigungsproblem des
Registers zu behandeln, welches gerade entstanden ist. Um zu wissen,
welche Einstellung gerade verrändert
wurde, genügt
es ihm, das Register Reg Num 42 zu lesen, um seine Nummer
und somit die Adresse des (der) veränderten Registers) 28 zu
erhalten.
-
Zwei Betriebsweisen können vorgesehen
sein, je nach dem, ob das System eine nicht-flüchtige Speicherungseinheit 14 besitzt
oder nicht, in welcher sich ebenso die Werte der Einstellungsparameter
gespeichert finden.
-
In einem ersten Fall, in Abwesenheit
einer nicht-flüchtigen
Speicherungseinheit, d. h., wenn die Werte der Parameter ausschließlich in
den Registern 28 gespeichert werden, liest der Mikrocontroller
die drei Register 28 entsprechend der Interrupt-Zahl, die durch das
Register 42 angegeben wird, und überprüft, dass mindestens eines der
Register 28 von dreien identisch ist. Er schreibt in diesem
Fall das dritte Register, welches identisch mit den beiden anderen
ist, wieder; wenn die drei Register verschieden sind, wird ein Kompromisswert
in die drei Register eingeschrieben.
-
Wenn dagegen der Einstell-Parameter
eingeschrieben wird in einen nichtflüchtigen Speicher, wie z. B. 14,
dann liest der Mikrocontroller den Einstell-Referenzwert, der durch seine Interrupt-Zahl
signalisiert wird, in diesem nichtflüchtigen Speicher und schreibt
diesen Wert wiederum in die drei betreffenden Register 28 (man sieht
in diesem Fall einen maskierbaren Interrupt vor).
-
In einer Variante, anstatt spezifisch
dasjenige der Register zu korrigieren, welches verändert worden ist,
kann man die Gesamtheit der Register 28 jedes Mal von neuem
schreiben, wenn eine Änderung
detektiert worden ist. Diese Art vorzugehen vermeidet den Rückgriff
auf Schaltungen zur Kodierung der Interrupts und zur Verwaltung
der Prioritäten 40 und 42;
es ist jedoch notwendig, in diesem Fall, einen maskierbaren Interrupt während der
gesamten Dauer der Korrektur vorzusehen.
-
Nebenbei sei bemerkt, dass, wenn
man in einem nicht-flüchtigen
Speicher die Einstellparameter konserviert, das System nicht nur
die Verfälschung
der Daten durch parasitäre
Phänomene
behandeln kann, sondern auch die transienten Versorgungsverluste.
-
Wenn der Mikrocontroller den Korrekturschritt
erreicht hat, stellt er die Überwachung
des Systems wieder her unter von neuem Freigeben der Interrupt-Leitung 22,
die für
den Schutz der Einstellungen beeinträchtigt ist. Wenn mehrere Anforderungen
simultan gespeichert worden wären,
nachdem der Mikrocontroller die prioritäre Anfrage verarbeitet hat,
erzeugt das Schutzsystem seit der Wiederfreigabe von neuem eine
Anforderung mit einer unterschiedlichen Zahl in dem Register Reg
Num 42.
-
Wie man verstanden haben wird, wird
diese Korrektur, verwaltet durch einen einfachen Interrupt (prioritär) des Mikroprozessors,
sehr schnell bedient, typischerweise in einigen Millisekunden, eine
sehr kurze Zeit, welche es erlaubt, das physiologische Verhalten
der aktiven medizinischen Vorrichtung nicht zu beeinträchtigen.
-
Es sei des Weiteren angemerkt, dass
die Integrität
des Systems garantiert ist selbst während der (sehr kurzen) Phase
der Korrektur durch den Mikroprozessor der verfälschten Daten, dank der Mehrheitsschaltung 30,
welche weiterhin dem Modul 24 den korrekten Wert zuführt, der
in den nicht veränderten
Registern enthalten ist.