-------------------------------------------------- Dokumentation für das Programm gdt2pid Version 0.1 -------------------------------------------------- Stand: 19.07.2001 ------- Inhalt: ------- 1.) Zweck des Programms 2.) Konfigurationsdatei 3.) Aufruf und Programmablauf 4.) Konvertierungsstrategie 5.) Integration 6.) Systemanforderungen 7.) Autor, Bezugsquellen ----------------------- 1.) Zweck des Programms ----------------------- gdt2pid ist ein erweitertes Konvertierungsprogramm. Es stellt eine Verbindung zwischen einem Praxis-Management-Programm und AnyQuest for Windows in der Weise her, daß am Praxis-Management-Programm eine Befragung eines ausgewählten Patienten angefordert werden kann, worauf die Patientendaten an AnyQuest for Windows übertragen werden. Vor Beginn der Befragung werden dort die eingegangenen Patientendaten zur Bestätigung angezeigt und die Befragungsergebnisse später via anq2gdt wieder an das anfordernde Praxis-Management-Programm übermittelt. gdt2pid überträgt hierzu Patienten-Identifikationsdaten und/oder Untersuchungsanforderungen, die als *.GDT Datei vorliegen, in eine *.PID Datei, welche von AnyQuest for Windows für die externe Überprüfung, Bearbeitung und Gewinnung von Patienten-Identifikationsdaten verwendet wird. Es wird von AnyQuest automatisch im Rahmen der Gewinnung einer Patienten- Identifikation vor Beginn einer Befragung aufgerufen, kann dann auf das Eintreffen einer GDT-Datei warten oder eine vorhandene GDT-Datei abarbeiten. ----------------------- 2.) Konfigurationsdatei ----------------------- gdt2pid wird von einer Konfigurationsdatei gesteuert, deren Name standardmäßig gdt2pid.ini ist. Diese kann mit einem Text-Editor bearbeitet werden; ihre Einträge sind selbsterklärend und in der Datei gdt2pid.ini selbst näher erläutert. Derzeit können konfiguriert werden (mit Default-Werten): sourcedir= destdir= outfilename=PRAXLQRE expectfield8000satzidentifikation=6301,6302 expectfield8316gdtidsender=PRAX_EDV expectfield8315gdtidreceiver=LQRecord expectfield8402devicemethod=ALLG00 konvertCP437toANSI=True replaceCharsBelow32by128=True label3000=group/pid writeout3000pid=true label3104_3102_3100_3101_inline=name writeout3104titleinline=false writeout3102firstnameinline=true writeout3100nameprefixinline=true writeout3101lastnameinline=true label3100nameprefixseparate=nameprefix writeout3100nameprefixseparate=false label3101lastnameseparate=lastname writeout3101lastnameseparate=false label3102firstnameseparate=lastname writeout3102firstnameseparate=false label3104titleseparate=title writeout3104titleseparate=false label3103dob=date of birth writeout3103dob=true label3106zipcityinline=ZIP, City writeout3106zipinline=false writeout3106cityinline=false label3106zipseparate=ZIP writeout3106zipseparate=false label3106citiyseparate=City writeout3106citiyseparate=false label3107address=address writeout3107address=false label3105insurednumber=insurednumber writeout3105insurednumber=false label3108insuredtype=insuredtype writeout3108insuredtype=false label3110sex=sex writeout3110sex=false label3622size=size writeout3622size=false label3623weight=weight writeout3623weight=false label3628mothertongue=mothertongue writeout3628mothertongue=false label8402devicemethod=devicemethod writeout8402devicemethod=false label8410testident=testident writeout8410testident=false waitingtime=5000 foundwaitingtime=5000 debug=false displaywaitingmessage=true reducescreensize=true askforconfirmation=false deleteinfile=true errorwaitingtime=60000 ----------------------------- 3.) Aufruf und Programmablauf ----------------------------- Wenn das Programm ohne Parameter aufgerufen wird, erscheint eine Hilfe. Wenn das Programm mit korrekten Parametern aufgerufen wird, erzeugt es überhaupt keine Bildschirmausgabe und öffnet auch kein Fenster; auf Systemen ohne echtes Multitasking wird es (deshalb) wahrscheinlich unter Benutzung aller verfügbaren CPU-Zeit durchlaufen (was normalerweise nur wenige Sekunden dauern wird). Normalerweise wird das Programm automatisch von AnyQuest for Windows aufgerufen. Weitere Angaben hierzu sind in der AnyQuest on-line-Hilfe sowie im Abschnitt "Integration" dieser Dokumentation zu finden. Bitte beachten Sie, daß gdt2pid als Windows-Applikation nach seinem Aufruf parallel (!) zu einer aufrufenden Applikation oder DOS-Batch-Datei ausgeführt wird, sofern es auf einem System mit funktionierendem echten Multitasking läuft. Wenn während der Ausführung des Programms ein schwerwiegender Fehler auftritt, der den Zugriff auf Dateien betrifft, bricht es mit entsprechender Fehlermeldung (dafür wird ein Fenster geöffnet) und einem entsprechenden Rückgabecode ab. Dieser kann z.B. in einer Batch-Datei über dosexitcode ausgewertet werden. Mögliche Rückgabecodes sind: DOS Fehler beim Zugriff auf Dateien: 2 File not found 3 Path not found 5 Access denied 6 Invalid handle 8 Not enough memory 10 Invalid environment 11 Invalid format 18 No more files gdt2pid spezifische Fehler: 89..99 reserviert Sofern der Zugriff auf die Zieldatei möglich ist, wird diese sehr früh mit dem Wert (abort) in einigen Datenfeldern initialisiert, damit bei einem eventuellen Programmabbruch von gdt2pid.exe AnyQuest die begonnene Befragungssitzung nicht mit ungültigen Patientendaten weiterführt. Eine identische Zieldatei wird außerdem erzeugt, wenn gdt2pid während des Wartens auf eine eingehende GDT-Datei durch Druck auf die ESC-Taste oder mit Alt-F4 beendet wird. Bei einigen weniger schwerwiegenden Fehlern wird eine entsprechende Meldung angezeigt und eine Zieldatei mit dem Wert (reject) in einigen Datenfeldern erzeugt. Die Anzeige und die Anzeigedauer dieser Kategorie von Fehlermeldungen lassen sich über die Konfigurationsdatei gdt2pid.ini kontrollieren. Wenn das Programm zu Test- und Einrichtungszwecken von Hand gestartet werden soll, so ist zunächst einmal eine (auch leere) *.PID Datei herzustellen, damit deren Name beim Aufruf von gdt2pid übergeben werden kann. Das Ergebnis darin kann nach dem Ablauf z.B. mit type angeschaut werden. Auch eine *.GDT Datei mit den zu verarbeitenden Informationen wird benötigt. Deren automatisches Löschen während der Einrichtungsphase kann durch einen entsprechenden Parameter in gdt2pid.ini abgeschaltet werden, des weiteren sollte dort die Verkleinerung des Ausgabefensters deaktiviert und die Anzeige von Informationen zum Programmablauf (Debug-Modus) aktiviert werden. --------------------------- 4.) Konvertierungsstrategie --------------------------- gdt2pid untersucht das angegebene Quellverzeichnis zunächst periodisch auf irgendwelche Dateien, deren Dateiname (ohne Endung) der Einstellung in der Konfigurationsdatei entspricht (Default: PRAXLQRE.*). Sobald es findet, daß mindestens eine solche Datei existiert, bildet es vollständige Dateinamen, indem es als Suffix eine dreistellige Zahl zwischen 000 und 999 in aufsteigender Reihenfolge verwendet, und nach dem resultierenden Dateinamen im Verzeichnis sucht. Sobald ein Dateiname gefunden wird, (häufig wird der erste gefundene Dateiname PRAXLQRE.000 sein), wartet es für eine eingestellte Zeitspanne (foundwaitingtime), um dem Programm, welches diese Datei erzeugt (hat), sicher ausreichend Zeit zu geben, um sie vollständig zu schreiben. Dann prüft es, ob es auf diese Datei zugreifen kann. Wenn dies ebenfalls möglich ist, wird die Datei weiter verarbeitet. Falls keine passende Datei gefunden wurde oder geöffnet werden kann, wartet gdt2pid eine eingestellte Zeitspanne (waitingtime), bis es wieder zum Anfang des Ablaufs zurückkehrt. Durch diese Methode stellt gdt2pid sicher, daß bei relativ geringer Belastung des Dateisystems eingehende oder bereits vorhandene Dateien gefunden werden, wobei Dateien mit tieferen Suffixen früher verarbeitet werden als solche mit höheren Suffixen. Während der Wartezeit zeigt das Programm (über die Konfigurationsdatei kontrollierbar) eine entsprechende Meldung. Es läßt sich hier durch ESC oder ALT-F4 beenden und übergibt dann dem aufrufenden AnyQuest for Windows eine (abort)-Nachricht, worauf dieses die aktuell begonnene Befragungssitzung abbrechen wird. Sobald gdt2pid eine Quelldatei mit gültigem Namen öffnen kann, liest es diese Zeilenweise ein. Um eine Zeile zu interpretieren, trennt es zunächst die ersten 3 Zeichen ab und vergleicht die darin enthaltene Angabe zur Zeilenlänge mit der gefundenen Zeilenlänge. Bei abweichenden Werten wird die Zeile ignoriert. Ansonsten wird aus den folgenden 4 Zeichen die GDT-Feldkennung und aus dem verbleibenden Teil der GDT-Feldinhalt entnommen. Die Anzahl der verarbeiteten Zeichen wird zu einer fortlaufend geführten Summe addiert. Die GDT-Spezifikation erlaubt primär Zeichen aus dem Zeichensatz der IBM Codepage 437 mit Codes von einschließlich 032 bis 255; AnyQuest for Windows arbeitet dagegen mit dem Windows ANSI Zeichensatz. Deshalb werden nach dem Lesen alle Feldinhalte vom IBM CP 437 in den Windows ANSI Zeichensatz konvertiert. Die Konvertierungsfunktion wählt für nicht enthaltene Zeichen entweder ein ähnliches Zeichen oder das Zeichen 128, wenn kein geeignetes Zielzeichen existiert. Zeichen bis einschließlich Code 127, einschließlich aller Zeichen unterhalb von Code 032, werden von dieser Konvertierungsfunktion ohne Umsetzungen durchgereicht. Um jedoch entsprechend der GDT-Spezifikation Zielzeichen unterhalb des Codes von 032 nicht erscheinen zu lassen, werden diese von einer zweiten Konvertierungsfunktion durch das Zeichen 128 ersetzt. Beide Konvertierungsfunktionen können über die Konfigurationsdatei deaktiviert werden, wenn zum Beispiel sichergestellt ist, daß die Zielanwendung auch mit Zeichen unterhalb von 32 korrekt umgehen kann und deren Übertragung benötigt wird. Während und nach der Zeilenweisen Verarbeitung führt gdt2pid mehrere Prüfungen durch: Die erste Zeile muß die GDT-Feldkennung 8000 enthalten. Sofern in der Konfigurationsdatei erwartete Satzarten angegeben sind, muß die eingehende Satzart einer der angegebenen Satzarten entsprechen. Sofern in der Konfigurationsdatei eine erwartete GDT-Sender-ID angegeben ist, muß der eingehende Wert dieser entsprechen. Sofern in der Konfigurationsdatei eine erwartete GDT-Empfänger-ID angegeben ist, muß der eingehende Wert dieser entsprechen. Sofern die übertragene Satzart 6302 ist, und in der Konfigurationsdatei ein erwartetes Geräte- und Untersuchungsspezifisches Kennfeld angegeben ist, muß der eingehende Wert diesem entsprechen. Die eingehende angegebene Satzlänge muß auswertbar sein und der Anzahl der tatsächlich verarbeiteten Zeichen entsprechen. Schließlich müssen alle notwendigen Dateioperationen während der Umsetzung fehlerfrei ablaufen. Welche empfangenen GDT-Felder in welcher Weise in die erzeugte *.PID Datei übertragen werden, kann in der Konfigurationsdatei eingestellt werden. AnyQuest verarbeitet derzeit (Version 2.46) intern nicht alle Felder, die nach der GDT-Spezifikation definiert sind. Zur schlüssigen Anbindung von AnyQuest an ein Praxismanagement-System reicht grundsätzlich die zuverlässige Übermittlung der Patientennummer in beide Richtungen aus. Zur bequemen Identifikation der Patienten auf von AnyQuest erstellten Ausdrucken oder in von AnyQuest erstellten Ergebnisdateien besonders im praktischen klinischen Einsatz wird zusätzlich meist die Übermittlung von Vorname, Nachname und Geburtsdatum nützlich sein. Wenn ein korrektes Geburtsdatum übermittelt wurde, kann AnyQuest auch das Alter des Patienten zum Zeitpunkt der Untersuchung errechnen. Hierbei sind Gesichtspunkte des Datenschutzes besonders zu beachten. Vorname und Nachname werden von AnyQuest standardmäßig in einer Zeile mit dem Format "name: Vorname Nachname" erwartet, wobei das erste nach dem Vornamen auftretende Leerzeichen als Trennkriterium verwendet wird. Deshalb wird eine konfigurierbare zusätzliche Übermittlung von Titel oder Namenszusatz innerhalb desselben Parameters dazu führen, daß diese in AnyQuest entweder zum Vornamen oder zum Nachnamen hinzugezogen werden, und bei einer späteren Rückübermittlung der Daten z.B. via anq2gdt entsprechend verbunden übermittelt werden. In diesem Fall muß sichergestellt sein, daß das Zielprogramm die Datenzuordnung anhand des stabilen Kriteriums der Patientennummer oder in Zweifelsfällen manuell kontrolliert durchführt; in anq2gdt kann die Übermittlung des auch Namens deaktiviert werden. Hierbei müssen beide Konvertierungsprogramme gdt2pid, anq2gdt entsprechend der jeweils vorgefundenen Funktionalität des Praxis-Management-Programms sowie entsprechend der Parameter, die in der Ausgabedatei und im Ausdruck von AnyQuest auftreten sollen, konfiguriert werden. Zukünftige Versionen von AnyQuest werden bei Bedarf so erweitert werden, daß sie alle nach GDT möglichen Felder konsistent getrennt verarbeiten und durchreichen können, und dennoch weiterhin Ausgaben im bisher verwendeten Namensformat erzeugen können. Bitte beachten Sie: In der aktuellen Version kann gdt2pid GDT-Dateien, die mehrere GDT-Sätze enthalten, nicht korrekt verarbeiten. Sollte es eine solche Datei erkennen, zeigt es eine Fehlermeldung und bricht ab. Die GDT-Datei, die zu dem Fehler führte, wird dabei nicht gelöscht, ihr Name kann der Fehlermeldung entnommen werden. Sie kann dann eventuell manuell untersucht und anschließend gelöscht werden, ansonsten wird sie bei jedem folgenden Aufruf von gdt2pid den gleichen Verlauf auslösen. Praktisch ist dies von geringer Bedeutung, da es zur Anforderung einer Patientenbefragung nur notwendig ist, einen einzelnen GDT-Satz zu übertragen. Da die Anforderung manuell in größeren Zeitabständen ausgelöst wird, sollten GDT-Dateien mit mehreren GDT-Sätzen je Datei somit nicht auftreten. --------------- 5.) Integration --------------- gdt2pid kann von AnyQuest for Windows vor Beginn einer Befragung automatisch aufgerufen werden. Hierzu wird es wie folgt in die verwendete Konfigurationsdatei von AnyQuest for Windows, z.B. anyquin.ini, eingetragen: [External applications] check_after_PID_collected=c:\anyquin\gdt\gdt2pid.exe check_after_PID_collected_wait=True Mit den folgenden Optionen, in der die auch über Menüs in AnyQuest for Windows gesetzt werden können, werden außerdem die eigenen Dialoge in AnyQuest zur Frage nach der Patienten-Identifikation abgeschaltet, und ein abschließender Dialog zur Bestätigung der importierten Patienten-Identifikation eingeschaltet: [Options] AskForNumericPatientID=False AskForFirstName=False AskForLastName=False AskForDOB=False AskForCompany=False AskForPosition=False AskForName=False AskForAddress=False AskForZIP=False AskForCity=False AskForPhone=False AskForFax=False AskForInitials=False AskForFinalConfirmationSmall=True AskForFinalConfirmationLarge=False Mit den folgenden Optionen kann AnyQuest for Windows dabei weiter gegen unerwünschte Benutzung abgesichert werden (die meisten dieser Konfigurationspunkte lassen sich nur in der *.ini-Datei setzen): [Options] DisableLoadSaveMenus=False DisableEditMenus=False DisablePlayInSetupMode=True DisableNaviSetupButton=False DisableNaviHelpButton=False DisableNaviExitButton=False Alternativ oder ergänzend läßt sich AnyQuest auch in eine Art Kiosk-Modus versetzen (dieser Punkt ist über Menüs verfügbar): [Options] EndlessAskingQuestions=True In diesem Kiosk-Modus kann nach dem Starten der Befragung nicht mehr zum Navigations-Dialog zurückgekehrt werden. Stattdessen wird nach jeder beendeten oder abgebrochenen Befragungssitzung sofort die nächste eingeleitet. AnyQuest for Windows übergibt beim automatischen Aufruf den Namen der zu verwendenden *.PID Datei an gdt2pid, und dieses trägt darin die Patientendaten aus der nächsten eingehenden oder bereitstehenden GDT-Datei ein, die im Quellverzeichnis gefunden wird, das in anq2gdt.ini angegeben ist. Sofern AnyQuest im Kiosk-Modus läuft, kann damit eine Befragungssitzung direkt aus dem Praxis-Management-Programm initiiert werden. Dieser vollautomatische Betrieb ist praktikabel,... - wenn entweder nur ein einziger Satz von Fragebogen für alle Befragten präsentiert werden soll, - oder wenn eine etwas komplexere interaktive Konfiguration mit mehreren automatisch ausgewählten Fragebögen vorbereitet wurde, - oder wenn mehrere Instanzen von AnyQuest parallel im Kiosk-Modus laufen und über mehrere parallel angelegte GDT-Schnittstellen mit unterschiedlichen Dateinamen oder Kommunikationsverzeichnissen angebunden sind. Wenn mehrere verschiedene Fragebögen, oder Fragebogen-Sets, oder verschiedene Sprachversionen ohne eine vorbereitende aufwendigere Konfiguration in häufigem Wechsel präsentiert werden sollen, dann ist eine der folgenden Arbeitsweisen möglich: - Im Praxis-Management-Paket die LQ-Messung anfordern, - danach am LQ-Recorder AnyQuest mit der passenden Konfiguration starten und die Befragung mit "GO!" beginnen, - falls diese Konfiguration von AnyQuest nicht gleich wieder benötigt wird, AnyQuest beenden. oder - Am LQ-Recorder alle in Frage kommenden Konfigurationen von AnyQuest starten und diese mit angezeigtem Navigationsfenster belassen, - Im Praxis-Management-Paket die LQ-Messung anfordern, - am LQ-Recorder aus den schon geladenen Konfigurationen die gewünschte (z.B. per Alt-TAB) auswählen und darin die Befragung mit "Go!" beginnen. Die erste Arbeitsweise bedingt weniger gleichzeitig laufende Kopien von AnyQuest am LQ-Recorder und somit möglicherweise etwas mehr Übersichtlichkeit, die zweite Arbeitsweise ist schneller, weil die Ladezeiten beim Starten von AnyQuest entfallen. Beide können auch gemischt werden, indem zum Beispiel häufig benötigte Konfigurationen geladen bleiben und selten benötigte Konfigurationen nach Gebrach wieder per "Exit" verlassen werden. Für beide Arbeitsweisen ist keine zusätzliche Konfiguration notwendig, weil alle in Frage kommenden AnyQuest/gdt2pid-Konfigurationen so eingestellt bleiben, daß sie über dasselbe Verzeichnis und dieselben Dateinamen mit dem Praxis-Management-Programm kommunizieren. Jeweils beim Beginnen der Befragung mit "Go!" liest AnyQuest die vom Praxis-Management- Programm inzwischen gesendete GDT-Datei ein und verwendet die dort gefundenen Patientendaten, um sein eingestelltes Set von Fragebögen zu präsentieren. Eine Alternative, die auch unterschiedliche Fragebogen-Konfigurationen vollautomatisch steuern kann, könnte man wie folgt einrichten: Für jede mögliche Konfiguration wird im Praxis-Management-Programm die entsprechende GDT-Schnittstelle mit entsprechenden Parametern definiert. Dabei wird entweder der zur Kommunikation verwendete GDT-Dateiname oder das zur Kommunikation verwendete GDT-Verzeichnis für jede Konfiguration individuell eingestellt. Auf dem LQ-Recorder ruft jede individuell anzusprechende Konfiguration von AnyQuest "ihr" gdt2pid mit ebenfalls individuelle eingestelltem GDT-Dateinamen oder GDT-Verzeichnis auf. Jede benötigte AnyQuest- Konfiguration wird im Kiosk-Modus gestartet, sobald "ihr" gdt2pid eine passende eintreffende GDT-Datei im eingestellten GDT-Verzeichnis findet, wird es diese einlesen, und das zugehörige AnyQuest wird den Focus erhalten, und somit automatisch im Vordergrund erscheinen. Allerdings sollte man es hier vermeiden, während einer laufenden Befragung eine weitere Untersuchung mit einem anderen Fragebogen vom Praxis-Management-Paket aus anzufordern, sonst wird der gerade befragt werdende Patient bei der Arbeit gestört. In jedem Fall können die Befragungsergebnisse auch automatisch wieder ins Praxis-Management-Programm übernommen werden, sofern anq2gdt ebenfalls konfiguriert ist, Bei fehlerfreier Konfiguration und fehlerfreiem Ablauf können alle Schritte ohne Anwenderinteraktion und quasi unbemerkt ablaufen. Bei Bedarf können zukünftige Versionen von AnyQuest so erweitert werden, daß sie über das per GDT übermittelbare geräte- und methodenspezifische Kennfeld oder die ebenfalls übermittelbare Muttersprache des Patienten zwischen verschiedenen Konfigurationen auswählen können. ----------------------- 6.) Systemanforderungen ----------------------- gdt2pid ist eine 16-Bit Windows-Applikation. Dies hat gegenüber einer Implementation als MS-DOS-Programm den Vorteil, daß es beim automatischen Aufruf von AnyQuest for Windows aus kein eventuell störendes DOS-Fenster öffnen muß. Es sollte auf allen MS-Windows-Systemen mit einer CPU ab 80286 sowie auf allen entsprechenden Emulatoren funktionieren. Es versteht auf den meisten Systemen nur Dateinamen und Pfade im MS-DOS 8.3-Format. Auf Wunsch kann bei Bedarf eine Version für MS-DOS erzeugt und bereitgestellt werden, die Windows nicht benötigt. Die Ausführungsgeschwindigkeit kann bei Bedarf etwas erhöht werden, wenn aus der Konfigurationsdatei die Kommentare entfernt werden - das sollte aber im praktischen Betrieb nie notwendig sein. ------------------------ 7.) Autor, Bezugsquellen ------------------------ Dr. Jörg Sigle, http://www.jsigle.com (Ende der Konfigurations-/Dokumentationsdatei.)