Patientenreminder
Transcription
Patientenreminder
Preprint 02 – 06 Patientenreminder Bernd Dusemund Thomas Engel Christoph Meinel ISSN 1433-8106 Institut für Telematik e.V., Bahnhofstr. 30-32, D-54292 Trier, Telefon +49 (0)651-97551 0. Die Verarbeitung oder Vervielfältigung der Inhalte/Daten in jedweder Form ist ausschließlich mit schriftlicher Zustimmung des Instituts für Telematik gestattet. Die Wiedergabe von Inhalten ist nur bei Nennung der Quelle erlaubt. 2002 Institut für Telematik e.V. Preprint Patientenreminder Author Bernd Dusemund Dr. rer. nat. Thomas Engel Prof. Dr. rer. nat. Christoph Meinel Univ. –Prof. Dr. sc. Copyright © 2002 Institut für Telematik e.V., Trier Trademarks All terms that are mentioned in this paper that are known to be trademarks or service marks have been appropriately capitalised. Use of a term in this paper should not be regarded as affecting the validity of any trademark and service mark. The product or brand names are trademarks of their respective owners. Printing Document status 10/2002 Version 1.0 (10.2002) Printed in Germany All rights reserved The documentation was accomplished through the Institut für Telematik. The information contained in this document represents the current view of the authors on the issues discussed as of the date of publication. Because the present methodology must respond to changing research conditions, the results of this paper should not be interpreted to be a commitment on the part of the authors. Any information presented after the date of publication are subject to change. The right to copy this documentation is limited by copyright law. Making unauthorised copies, adaptations or compilation works without permission of the authors or institutions mentioned above is prohibited and constitutes a punishable violation of the law. 2 Preprint Patientenreminder 3 Inhaltsverzeichnis 1. Abstract ................................................................................................ 4 2. Einleitung ............................................................................................. 4 3. Soft- und Hardwarebausteine ............................................................ 5 3.1 Betriebssystem ............................................................................................................5 3.2 Grafik-Bibliothek .........................................................................................................5 3.3 Kartenleser..................................................................................................................6 3.4 Krankenkassenkarte ....................................................................................................6 3.5 Einwahlprogramm.......................................................................................................7 4. Hauptfenster – Funktionen ................................................................. 8 5. Interne Datenspeicherung................................................................... 9 6. Zusammenfassung und Ausblick ...................................................... 11 Referenzen ............................................................................................... 12 Preprint Patientenreminder 4 1. Abstract Ein automatisches Patientenerinnerungssystem ist mit dem Software Projekt Patientenreminder verwirklicht. Es ist für Arztpraxen konzipiert, um Patienten über SMS Nachrichten auf ihr Handy an Impf- und Untersuchungstermine zu erinnern. Die Patienten werden mit Hilfe ihren Krankenkassenkarte registriert. Das Programm, geschrieben mit Hilfe von Open Source Software gliedert sich in drei Hauptschwerpunkte. Ein Teil beschäftigt sich mit der Handhabung und Ansteuerung eines Kartenlesers, der Versichertenkarten ausliest, und die Daten abspeichert. Ein weiterer Teil sorgt für das Einwählen in das Netz, jeweils abhängig vom verwendeten Telefonanschluss (analog, digital), und das Versenden der Nachrichten mit Hilfe eines integrierten e-mail Clients. Ein dritter Teil ist für das Verwalten der Daten in einer geeigneten Datenbank verantwortlich und das Ermitteln der anstehenden Benachrichtigung abhängig vom Alter, Geschlecht, vorher bereits durchgeführten Untersuchungen und versendeter Benachrichtigungen. Alle Laufzeitanforderungen sind unter einer grafischen Benutzeroberfläche integriert, die prinzipiell geeignet ist, auch auf Systemen mit beschränkten Ressourcen zu funktionieren. 2. Einleitung Um die verwendete Technik und das Aussehen des Programms Patientenreminder zu verstehen ist es hilfreich sich die Entwicklungsgeschichte zu betrachten. Im Herbst 2001 wurde die Idee geboren ein automatisches Patienteninformationssystem zu entwickeln. Viele miniaturisierte Computer kamen neu auf den Markt, Handhelds und Palms waren und sind bis heute in Mode. Hier versprach ein kleines, preiswertes System geeignet zu sein, um als Träger obiger Produktidee in Arztpraxen Einzug zu halten. Enge preisliche Vorgaben machten es nötig nach wirklich innovativen neuen Hard- und Softwarebausteinen zu suchen. Als zur damaligen Zeit einziges Gerät erfüllte der Handheld-Computer "agenda"1 diese Bedingungen. Mit seinem Touchscreen und seiner vorbereiteten e-mail Funktionalität schien er technisch geeignet, und durch die Verwendung von open-source Software erfüllte es die finanziellen Rahmenbedingungen. Als erstes sollte die Ansteuerung eines Kartenlesers verwirklicht werden. Das Überspielen und Compilieren der Treiber-Sourcen gelang, nur beim praktischen Ansteuern des Kartenlesers hat sich auch nach vielen Versuchen ein Hindernis bei der seriellen Schnittstelle ergeben, sodass Daten gesendet, aber nicht Empfangen werden konnten. Die Entwicklung und das Testen des Programms wurde dann auf einen PC verlagert mit der Hoffnung in einer späteren Version des Kleingerätes das Programm darauf zu installieren. Vorteilhaft war, dass hier eine grafische Bibliothek (FLTK) 2 verwendet wurde, die von ihrer Größe und Ausführungsgeschwindigkeit prädestiniert war auf Handhelds zum Einsatz zu kommen. Später zeigte es sich, dass die Bibliothek auch unter dem Windows Betriebssystem eingesetzt werden kann. "FLTK is designed to be small and modular enough to be statically linked - the "hello" program is only 97k when compiled on an x86 Linux system!"[3] Unter Linux gibt es das Programm "wvdial", welches das Einwählen an einen Internet-Provider und den Aufbau einer ppp-Verbindung ermöglicht. Unter Einsatz des Quellcodes von "wvdial" ist intern eine Einwahlprozedur erzeugt worden, mit deren Hilfe fast jedes externe Modem angesteuert werden kann. Später wurde das optionale Einwählen mit einer ISDN Karte integriert. Das Versenden der SMS ist direkt nicht möglich, da Provider über eine Seite normalerweise Username und Passwort abfragen, was einer Automatisierung im Wege stand. Hier war von Anfang an vorgesehen, alle SMS in eine e-mail zu packen und erst bei einer speziell ausgesuchten Partnerfirma, sie zu entpacken und von dort zu versenden. Jetzt konnte das Programm sich bei einem beliebigen Provider einwählen und die Nachrichten versenden. Da aber die Provider nur e-mails weitersenden von Nutzern, die bei Ihnen auch einen e-mail Account besitzen, musste die Lösung auf die Verwendung eines "sendmail" Programms verzichten, das die mails automatisch an die richtige Stelle weiterleitet. Das machte die Erstellung eines eigenen e-mail SMPT Clients erforderlich. Hier wäre es für die Zukunft denkbar den notwendigen Verbindungsaufbau mit eine verschlüsselten Variante zu ersetzen. 1 http://www.agendacomputing.de/home/index-d.htm 2 http://www.fltk.org/ Preprint Patientenreminder 5 Für verschiedene Ärzte gibt es unterschiedliche Anforderungen an den Versenderythmus und den Versendetext der Patienten. Das Programm liest aus einer Datei, die Versenderythmen, Arztdaten und weitergehende Informationen aus, um die Patienten geeignet zu informieren. Bereits vorbereitet ist das Erinnern an Impfterminen, das durch die relativen Zeiten zu etwaigen früheren Impfungen umfangreicher in der Programmausführung war. Das Speichern der Patienten erfolgt in einer API- angesteuerten Datenbank.3 "Berkeley DB is a programmatic toolkit that provides fast, reliable, scalable, and mission-critical database support to software developers."[4] In Hinblick auf den Einsatz des Programms auf einem Handheld kam eine Datenbank Server basierte Lösung nicht in Frage. Die direkte Ansteuerung, komplexer in der Programmierung, ist im Betrieb einfacher zu handhaben und reduziert die Möglichkeit von Fehlerquellen, wie Schwierigkeiten des Startes oder des Ausfalles eines Servers. 3. Soft- und Hardwarebausteine 3.1 Betriebssystem Entwickelt wurde der Patientenreminder auf einem Pentium PC mit Suse Linux 7.0. Es konnte bislang auf Suse Linux 7.3 und RedHat 7.0 portiert werden. Bei Verwendung einer ISDN Karte muss zusätzlich ein Software Paket von AVM FritzCard PCI 2.0 oder je nach Fall AVM FritzCard PCMCIA 2.0 installiert werden. Bei der Installation der Software muss darauf geachtet werden, dass die C und C++ Entwicklungsumgebung mit installiert wird. 3.2 Grafik-Bibliothek Zur Erstellung einer grafischen Benutzeroberfläche kam die "Fast Light Toolkit (FLTK) -Bibliothek" zum Einsatz. Die zuletzt verwendete Version war FLTK 1.1.0rc6. Nach dem Laden auf den Rechner, muss das Paket entpackt und als root mit "make install" installiert werden. Näheres findet sich in der beigefügten "README" Datei. Die FLTK Bibliothek hat den rechtlichen Status von Library General Public License (LPGL) mit Ausnahmen. Hierzu finden sich nähere Informationen unter http://www.fltk.org /COPYING.php. Meiner Auffassung ist die Anbindung der Bibliothek und die Verwendung im Projekt Patientenreminder zulässig auch für eine kommerzielle Verwendung. Während der Installation der Bibliothek wird zusätzlich eine grafische Benutzerumgebung "fluid" auf den Rechner kopiert. Mit ihrer Hilfe lässt sich die Oberfläche intuitiv erstellen und das Ergebnis als C++ Code ausgeben. Wie in der Einleitung bereits erwähnt, besitzt diese grafische Bibliothek den Vorteil, dass sie trotz Bereitstellung vieler „Widgets“ minimalistische Ziele verfolgt. So ist der letztlich erzeugte Code so klein, dass er in aller Regel statisch an ein Programm angebunden kann. Eine einfache event-Behandlung reduziert viel prgrammtechnischen Overhead und schafft eine enorme Stabilität während der Ausführung. Aufgrund der Kompaktheit ist FLTK schnell in der Ausführungsgeschwindigkeit und deshalb auf Systemen mit eingeschränkter Leistung (wie PDA) ideal einsetzbar. Über das Projekt Patientenreminder hinausgehend sei hier erwähnt, dass FLTK 3D-Grafik mit OpenGL Software unterstützt. Es ist konzipiert für X (UNIX®), MacOS® und Microsoft® Windows®. 3 http://www.sleepycat.com/ Preprint Patientenreminder 6 3.3 Kartenleser Als Kartenleser kam der serielle Towitoko CHIPDRIVE extern4[5] zum Einsatz. Der Kartenleser war aus anderen Projekten bekannt und besitzt eine Unterstützung für Linux/Unix basierte Systeme. Um den Kartenleser anzusprechen, muss eine Treibersoftware verwendet werden. Zum Einsatz kam das Paket towitoko2.0.4. Es beinhaltet den Quellcode für den Treiber, make- Dateien und ein Beispielprogramm. Um die Funktionalität des Paketes zu verstehen, werden hier Auszüge der beigefügten README - Datei wiedergegeben: An application can access the reader via several standard smartcard interfaces, such as CT-API/CT-BCS and PC/SC IFD-handler. CT-API/CT-BCS is intended to be used by applications running on the machine to which the smartcard reader is attached and the PC/SC IFD-handler feet into the MUSCLE PC/SC Lite resource manager, which provides distributed management of several smartcard readers of distinct manufacturers. WHICH READERS WORKS WITH THIS DRIVER? The driver understands the protocol for communicating to any Towitoko reader labelled as "Chipdrive". This includes Chipdrive Micro, Chipdrive Extern, Chipdrive Extern II, Chipdrive Intern, and Chipdrive Twin. WHICH SMARTCARDS CAN I USE WITH THIS DRIVER? The driver works with processor cards with direct or inverse convention, and with memory cards that uses the I2C bus protocol, 2 wire protocol or 3 wire protocol. Access to memory cards is provided via the Interindustry Commands described in the MCT v09 part 7 spec. APPLICATIONS A sample tester application is distributed within this package that uses the CT-API/CT-BCS interface to issue some commands to a memory or processor card. This program is for testing purposes only and wont help you much in most cases. If you are looking for real world applications visit the M.U.S.C.L.E (Movement For The Move Of Smart Cards In A Linux Environment) web site5. Die Version 2.0.4 des Treibers hat keine USB - Unterstützung. In der zur Zeit aktuellsten Version 2.0.6 wird auch die USB Variante des Kartenlesers unterstützt. Um eine einfache Portierung auf PDA's zu Gewährleistung wurden im Projekt Patientenreminder die benötigten Source-Routinen mit eingebunden und somit fest in das Programm integriert. 3.4 Krankenkassenkarte Zum Auswerten der ausgelesenen Daten aus dem Kartenleser ist frei zugängliche Software aus dem Internet als Basis verwendet worden. David van Gorkom [9] hat auf seiner Internetseite geradezu lehrbuchhaft den Aufbau von verschiedenen Speicherkarten beschrieben. Teile seines Sotwarepaketes wurden verwendet. um in neuer Form im Projekt Patientenreminder die Informationen auszuwerten. Um ein Verständnis für die Krankenkassenkarte zu bekommen wird hier ein Auszug aus seiner Seite gegeben [9]. Chip: Bei der KV-Karte handelt es sich um eine synchrone 256-Byte Speicherkarte. Die verwendeten Protokolle können unterschiedlich sein. Besonders oft in diese Chipkarten eingesetzt werden gewöhnliche I2C-EEPROM ICs - fast jeder Hersteller hat solche schon seit langem in seinem Sortiment und kann sie so in grossen Mengen und als konsequenz davon, vor allem billig abgeben. Die Standardbezeichnung für den (CMOS-) Typ lautet "24C02". Im weiteren werden auch 2-wire Karten verwendet (ISO Protokoll S=10, nicht zu verwechseln mit dem oben genannten "Standard I2C 2-wire Protokoll"). Zu nennen wären hier beispielsweise der Typ PCB 2032 von Philips Semiconductors und der baugleiche Typ SLE 4432 von Siemens Semiconductors. Für die Verwendung zugelassen sind schließlich noch 3-wire Karten. Speicher - Organisation: Die (relevanten) Daten stehen bei einer KVK ab der Adresse $1E. Dort steht dann auf alle Fälle $60. Mit dem nächsten Byte berechnet man dann den Start der Datensätze. Leider habe ich hierzu keine gesicherten Informationen - die vorläufige Lösung ist im Source einsehbar und funkti4 5 http://www.towitoko.de/hpneu/prod_extern.htm MUSCLE http://www.linuxnet.com/ Preprint Patientenreminder 7 oniert anscheinend hervorragend! Alle weiteren Bytes werden nun auf Marken (Tags) abgesucht (sind >= $80), die eine bestimmte Bedeutung haben (siehe Tabelle Anm. siehe dazu [9]). Ihnen folgt ein 2. Byte, dass die Größe des jeweiligen Datensatzes angibt und danach kommt der Datensatz selbst. Das wiederholt sich bis zibt die Anzahl der Leerzeichen ($20) an , die bis zum vorletzten Byte benötigt werden, um den verbleibenden Speicher "aufzufüllen". Das letzte Byte (Adresse $FF) hat den Wert $00 und ist der Schluss. 3.5 Einwahlprogramm 3.5.1 analoge Telefonverbindung Soll der Rechner, auf dem das Programm Patientenreminder zum Einsatz kommt, an eine analoge Telefonleitung angeschlossen werden, so ist ein externes Modem erforderlich. Zur Verwendung während der Entwicklungszeit kam das 3Com U.S.Robotics 56K Faxmodem. Aber alle externen Modems können prinzipiell eingesetzt werden. Sogar Handys mit Modem-Funktionalität wie das Siemens SI45 konnten eingesetzt werden. Auf dem PC sollte das Softwarepaket "wvdial"6 installiert sein. Obwohl der Quellcode in das Programm Patientenreminder integriert wurde, besitzt dieses Softwarepaket eine Zusatzkomponente, die das leichte Konfigurieren neuer Modems ermöglicht. wvdial lädt während der Ausführung die Datei /etc/wvdial.conf. Dort werden alle zum Verbindungsaufbau relevanten Daten vorgehalten. Bei der Konfiguration der ppp-Verbindung mit Hilfe von yast, wird letztlich auch diese Datei angepasst. Damit die Authentisierung beim Verbindungsaufbau erfolgreich durchgeführt werden kann, müssen die Rechte folgender Dateien auf 766 verändert werden: /etc/wvdial.conf /etc/ppp/pap-secrets /etc/ppp/chap-secrets 3.5.2 digitale Telefonleitung Zum Anschluss an eine digitale (ISDN) Leitung muss eine ISDN Karte installiert werden. mit einem aktuellen Treiber. Konkret ist das Programm getestet unter der FritzCard PCIv2.0 bzw. unter der FritzCard PCMCIA 2.0 7.[8]. Diese Karten benutzen abweichen von der in der Suse Linux Version 7.0 vorgegebene ISDN Treiber einen neuen CAPI Treiber CAPI 2.0-Treiber (/latest CAPI 2.0 Driver Linux - Kernel 2.4.184GB). Um die Karten zu aktivieren muss der Treiber vorher geladen werden. Nach dem Laden des Programms finden sich in der Datei aktuell „install_passive.de“ nähere Installationsanweisungen. Zu bemerken gilt, dass auch hier wie bei der analogen Verbindung die Rechte der Dateien „/etc/ppp/papsecrets“ und „/etc/ppp/chap-secrets“ zu ändern sind. 6 http://open.nit.ca/wvdial/ 7 http://www.avm.de/de/FRITZ/ Preprint Patientenreminder 8 4. Hauptfenster – Funktionen Das folgende Bild zeigt die grafische Benutzeroberfläche des Programms Patientenreminder. Fig.1 Hauptfenster, Bsp Variante GynCall Es dient dazu die Patientendaten anzuzeigen (bei Kartenlesereingabe) oder einzugeben bei der manuellen Eingabe und die Funktionalitäten zu steuern Im normalen Praxisbetrieb werden die Daten vom Kartenleser eingelesen. Um den Kartenleser zu aktivieren muss der Button "Kartenleser aktivieren" gedrückt werden. Im Feld "Meldung" erscheint dann eine Rückmeldung, ob der Kartenleser bereit ist. Bei erfolgreichem Start bleibt der Button "Kartenleser aktivieren" gedrückt, bis der Kartenlesemodus mittels des Buttons "deaktivieren" beendet wird. Wird eine Krankenkassenkarte in den Kartenleser gesteckt, so wird diese registriert und ausgelesen. Die Daten werden in den Feldern angezeigt. Sind die Personendaten des Patienten dem System bereits bekannt, so wird der Button "untersucht" aktiviert. Es wird davon ausgegangen, dass die Informationen nicht geändert werden sollen. Drücken von "untersucht" speichert den Tag als Untersuchungstag ab. (Hier nicht sichtbar und bereits implementiert ist die Möglichkeit aus verschiedenen Untersuchungstypen zu selektieren.) Sollen doch die Personendaten verändert werden, so muss der nun aktive Button "Korrektur" gedrückt werden. Die Felder "Handy-Nummer" und "mail-Adresse" sind nun bereit editiert zu werden und das Geschlecht kann verändert werden. Jetzt ist auch der Button "speichern" aktiv, der beim Betätigen die Daten neu abspeichert. Soll ein Patient ohne Krankenkassenkarte eingeben werden, so muss der Button "neuer Patient" gedrückt werden. Jetzt müssen alle Felder von Hand eingegeben werden, um eine Speicherung zu ermöglichen. Ist der Patient bereits registriert, so kann er mittels Pressen des Knopfes "Datenbank" selektiert werden. Insbesondere das Feld Geburtstag wird vor dem Speichern auf Richtigkeit überprüft. Das Format sollte wie folgt aussehen: tt.mm.jjjj. Zu bemerken ist, dass die Felder "Titel", "Vorname", "Name" und "Geburtstag" im Fall der Kartenleseeingabe nur lesbar aber nicht editierbar sind. Preprint Patientenreminder 9 Soll der SMS -Versand aktiviert werden, so muss auf die richtige Hardware-Anpassung geachtet sein. Der Kartenlesemodus muss deaktiviert sein. Ein einfaches Betätigen des Buttons "SMS Versand aktivieren" ist dann ausreichend, um alle nötigen Schritte (einwählen und SMS -Versand) zu starten. 5. Interne Datenspeicherung Im folgenden wird die Datenspeicherung beschrieben wie sie in der Version Patientenreminder 1.2 realisiert ist, in der keine Trennung zwischen manuell und aus Karten eingelesenen Daten vorgenommen wird. Sie ist einem vorhergehenden Modell sehr verwandt, denn außer der Zusammenlegung hat sich an der eigentlichen Struktur nichts verändert. (Die vormals getrennte Funktionalität macht sich in hier nicht sichtbaren Details im Quellcode bemerkbar.) Trotz aufgehobener Trennung gibt es dennoch zwei Datensätze. Ein Datensatz enthält die sogenannten Stammdaten in der direkt nur selten zu veränderten Größen wie Name, mail Adresse gespeichert werden. Ein weiterer Datensatz (variable Daten) enthält Informationen über versendete SMS und wahrgenommene Untersuchungs- und Impftermine. In der Programmversion Patientenreminder 1.2 sind Impfungen nicht vorgesehen, das Programm ist aber prinzipiell auch dafür ausgelegt. In der Beschreibung soll dies nun mit verfolgt werden. 1. Stammdaten: Im folgenden wird der Struct-wiedergegeben in denen die Stammdaten gespeichert sind. typedef struct { char KraKaNr[12]; // Krankenkassen-Nummer char VKNR[8]; // Krankenkassen-Name char VersNr[12]; // Versichertennummer char VersStat[6]; // Versicherten-Status char StatErg[3]; // Status- Ergänzung char Titel[10]; char Vorname[30]; char NameZus[30]; // Name-Zusatz char Name[30]; char GebDatum[9]; char PLZ[8]; char Strasse[60]; char Ort[60]; char Guelt[5]; // Gültigkeit char mail_adr[50]; // Mail-Adresse char HandyNr[50]; // Handy-Nummer bool maskulin; // Geschlecht bool manuell; // Info ob manuelle oder Kartenlesereingabe unsigned index; // Laufindex (erhöht sich um ins bei jedem neuen Patienten) } patient; Werden die Daten vom Kartenleser eingelesen, so sind alle Elemente des Struktes mit Werten gefüllt. Bei manueller Eingabe ist das nicht der Fall. Es werden nur Titel, Vorname, Name, Geburtsdatum, Geschlecht, Handy-Nummer und Mail-Adresse gespeichert. Zusätzlich wird ein Laufindex erzeugt, der sich bei jedem neuen Eintrag um eins erhöht. Die Speicherung aller Daten im Fall der Kartenlesereingabe hat den Sinn sich auf mögliche Erweiterungen der Programmfunktionen bereits vorzubereiten, wie zum Beispiel eine Erinnerung mit Postkarten (Speicherung der Adresse) vornehmen zu können. 2. variable Daten In den variablen Daten sind Informationen über die Patienten abgespeichert, die sich während der Ausführung des Programms mit der Zeit ändern. Die Daten sind in folgender C- Struktur geordnet. Preprint Patientenreminder 10 typedef struct { char LetzUntersu[9]; char ImpfStr[20*(5+5*8)+1]; char ImpfStrSMS[20*(5+1+8)+1]; char VorsStrSMS[10*(5+1+8)+1]; char VorsStr[10*(5+1+8)+1]; } patientReg; Das Programm ist ausgelegt, um mit verschiedenen Impf- und Untersuchungstypen umgehen zu können. Insgesamt können bis zu 20 verschiedene Impfungsarten mit maximal fünf Impfterminen verarbeitet werden. Zusätzlich ist vorgesehen, dass bis zu 10 Untersuchungstypen gespeichert werden. Die Informationen sind in Strings vom Typ array of char gespeichert. Dabei unterteilen sich die zwei Typen Untersuchungund Impftypes wiederum in zwei Speicherstrings. Einer gibt Informationen über die wahrgenommen Untersuchung/Impfung, der andere gibt Auskunft über die versendete SMS zu einem anstehenden Untersuchungs-/Impftermin. Im folgenden werden die einzelnen Strings in ihrer Bedeutung beschrieben. Felder die Datumsangaben beinhalten speichern diese im Format ddmmjjjj (8 byte lang) ab. char LetzUntersu[9]: speichert das Datum der letzten Untersuchung ab. char ImpfStr[20*(5+5*8)+1]: Speichert Daten für 20 Impfungen zu maximal fünf Terminen ab. Ein Speicherbereich für eine Impfung setzt sich zusammen aus eine 5-byte großen Impfkennung und weiteren fünf Feldern zu je 8 byte, die Platz haben, um die Datume abzuspeichern für die aufgesuchten Impftermine. Die letzte 1 in dem Feld "20*(5+5*8)+1" schafft Platz für eine abschließende Null. char ImpfStrSMS[20*(5+1+8)+1]: ähnlich wie ImpfStr nur werden hier die Daten der versendeten SMS zu max. 20 verschiedenen Impfungen gespeichert. Ein Speicherbereich für eine Impfung setzt sich zusammen aus 5 byte für die Impfkennung, einem byte für die Zahl der versendeten SMS für einen Termin und 8 byte für das Datum der letzten versendeten SMS. Die letzte 1 in dem Feld "20*(5+5*8)+1" schafft Platz für eine abschließende Null. char VorsStr[10*(5+1+8)+1]: speichert Daten für bis zu 10 Vorsorgetypen ab. Der Speicherbereich für einen Vorsorgetyp besteht aus 5 byte für die Kennung einer Vorsorge, einem byte für die Zahl der aufgesuchten Termine zu einem Vorsorgetyp und 8 byte für das letzte Datum der aufgesuchten Vorsorgeuntersuchung. char VorsStrSMS[10*(5+1+8)+1]; speichert Daten für den SMS Versand für max. 10 Untersuchungstypen. Der Aufbau eines Speicherbereichs zugeordnet eines Untersuchungstyps ist identisch mit dem im VorsStr- String, nur beziehen sich hier die Angaben auf die zuletzt versendete SMS anstatt auf den zuletzt aufgesuchten Untersuchungstermin. In der Anordnung der einzelnen Imp- bzw. Untersuchungstypen gilt es einen Unterschied zu beachten. Im Fall der Impfung kann die Reihenfolge in der die Impftypen im ImpfStr und ImpfStrSMS angeordnet sind variieren. Während der Programmausführung untersucht ein spezieller Algorithmus beide Strings und produziert eine Zuordnungstabelle damit SMS und Impftermin aufeinander passen. Dieser Freiheitsgrad in der Anordnung ist vorgesehen, um es einer evt. nachfolgenden Version zu erleichtern bereits vergebene Impftermine ohne Umständlichkeit in den Impfstring einzutragen. Es wird einfach der nächste freie Platz genommen. Außerdem können insgesamt mehr als 20 Impfungen zur Speicherung zur Verfügung stehen, nur für einen Patienten ist die Zahl aus speichertechnischen Gründen begrenzt. Im Fall der Vorsorgeuntersuchung ist die Reihenfolge der Typen gleich. Die ersten (5+1+8) byte gehören bei dem VorsStr und dem VorsStrSMS String zum gleichen Typus. Man kann hier den Einwand erheben, dass die Information über den Typ dann einmal unnötig gespeichert ist, was mit ja zu beantworten ist. Hier zeigt sich, dass die Konzeption während des Entwickelns mehrmals verändert und neuen Überlegungen angepasst wurde und es in der Ausführung nicht vollständig in optimaler Form umgesetzt ist. Preprint Patientenreminder 11 6. Zusammenfassung und Ausblick In oben stehenden Kapiteln wurde die Funktionsweise des Patientenreminders und seine wesentlichen Datenstrukturen beschrieben. Weitere technische Details lassen sich entnehmen aus [1]. Bislang ist das Programm von keiner Anwendungsseite nachhaltig getestet und muss somit als Beta-Version angesehen werden. Zur Zeit der Drucklegung hat sich herausgestellt, dass mit neuen Linux – Versionen Anpassungen an dem Quelltext vorgenommen werden müssen, um mit neuen Compilern das Projekt auf dem neuesten Stand zu halten. Auch erscheint ein Wechsel der Datenbank von der zur Zeit verwendeten Berkeley Version zu „gdbm“ sinnvoll, da es sich als Standard durchsetzt und für diese Verwendung vollkommen ausreichend ist. Eine Variante mit Unterstützung von USB – Kartenlesern wäre sicherlich ein weitere Schritt zur Modernisierung. Wie es sich zeigt werden nun mit der Versionen Linux 8.1 interne Modems unterstützt. Hier könnte eine Anpassung geschehen. Für ein Forschungsprojekt wichtiger wäre die Entwicklung einer von Anfang an verschlüsselten Datenverbindung nach außen. Damit wäre auch ein Grundstein gelegt, Teile der Anwendung zum Versenden von Arztbriefen und anderen sicherheitsrelevanten Informationen zu verwenden. Zertifikate, ausgestellt vom institutseigenen Trustcenter, könnten hier einen sinnvollen Beitrag liefern. Preprint Patientenreminder 12 Referenzen [1] Bernd Dusemund, Christoph Meinel. Patientenreminder – Eine Technische Beschreibung, internes Papier „Institut für Telematik“, 2002 [2] http://www.agendacomputing.de/home/index-d.htm [3] http://www.fltk.org/ [4] http://www.sleepycat.com/ [5] http://www.towitoko.de/hpneu/prod_extern.htm [6] MUSCLE http://www.linuxnet.com/ [7] http://open.nit.ca/wvdial [8] http://www.avm.de/de/FRITZ/ [9] David van Gorkom, Die Chipcard Technology Site http://stud-gis.htw-saaland.de/ ~ofourman/projekte/campuscard/doc/anhang/smartcard/Die%20Chipcard%20Technology%20Sit e.html