Springe zum Inhalt

2

Die aktuelle Uhrzeit und das aktuelle Datum werden im MEDISTAR-Makroeditor durch die Systemvariablen @SY_Datum und @SY_Uhrzeit zu Verfügung gestellt. Es gibt viele Situationen, in denen sie sich sinnvoll verwenden lassen. Im folgenden Beispiel soll ein Anwesenheitsformular per Makro mit sinnvollen Zeitangaben (von - bis) ausgefüllt werden.

Es mag gleich zu Anfang verwirrend sein, aber diese sogenannten Systemvariablen sind keine vollwertige Variablen.  Um mit ihnen rechnen zu können müssen sie deshalb in reguläre Variablen "verpackt" werden. Hierzu wird in unserem Beispiel die Systemzeit mit Hilfe der Set-Anweisung der benutzerdefinierten Variable "Variable_1" zugewiesen. Damit @SY_Uhrzeit als neuer Wert und nicht als Buchstabenfolge erkannt wird, muss der Name in „$“-Zeichen eingeschlossen werden. Zum grundsätzlichen Umgang mit Variablen sei auf einen früheren Blog-Beitrag verwiesen.

Set | | Variable_1=$@SY_Uhrzeit$

In den nächsten Schritten sollen zwei neue Uhrzeiten generiert werden (Zahl_1 und Zahl_2), erstens durch Subtraktion von 60 Minuten, zweitens durch Addition von ebenfalls 60 Minuten.

Set | | Variable_2=60
Set | | Zahl_1=$(Variable_1-Variable_2)$
Set | | Zahl_2=$(Variable_1+Variable_2)$

Die Von-Bis-Zeiten im Anwesenheitsformular sollen allerdings großzügig gehandhabt werden, d.h. es sollen ganze Stunden als Uhrzeit eingetragen werden.
Dazu müssen wir die Minutenangabe aus dem Uhrzeit-String entfernen. Das gelingt mit einer speziellen Funktion: der Textmustersuche:

Set | | Variable_2=*:
Set | | Vergleich_1=$re(Variable_2,Zahl_1)$
Set | | Vergleich_2=$re(Variable_2,Zahl_2)$

Sie weist der Variablen Vergleich_1 denjenigen Teil der Zeichenkette in Zahl_1 zu, der im Textmuster in Variable_1 durch den Platzhalter Stern * repräsentiert wird. Das Kürzel "re" steht vielleicht für "Replace". Mit dieser Funktion lässt sich die Stundenzahl extrahieren, indem man den Doppelpunkt als Begrenzung rechts vom Sternzeichen angibt.

Das (alte) Anwesenheitsformular weist die Besonderheit auf, dass es die Uhrzeit im Format "hh.mm" erwartet, also mit Punkt statt Doppelpunkt. Deshalb wird der gefundene Stundenwert mit dem String ".00" verkettet (verpackt in Variable_3).

Set | | Variable_3=.00
Set | | Zahl_1=$(Vergleich_1$Variable_3)$
Set | | Zahl_2=$(Vergleich_2$Variable_3)$

Das Einfügen in das Formular erfolgt übrigens über den Makrobefehl "VarText".

Hier nun das komplette Listing:

Nun noch ein Tipp aus einem anderen Beispiel,

bei dem die aktuelle Uhrzeit in die medizinischen Daten eingetragen werden soll. Bei einstelligen Stundenzahlen ergibt sich das Problem, dass ein unnötiges Leerzeichen eingefügt wird (" 8:38" statt "8:38").

Das Trimmen (Entfernen von Whitespace) gelingt mit der bereits erwähnten Re(place)-Funktion (Textmustersuche), weil das nackte Stern-Symbol vorausgehende und nachfolgende Leerzeichen ausschließt.

Zum Schluss noch Werbung für die eigene Sache: in OPHTHALMOSTAR 2.0 finden sich an vielen Stellen Makros, die diese Funktionen nutzen und dem Anwender lästige Arbeit abnehmen. Beispielhaft seien die Tropfenwirkzeiten von Mydriatika genannt, die als Notiz bei Wartelisteeinträgen Verwendung finden.

1

Ein Makros kann viele kleine, immer wieder kehrende Arbeitsschritte zusammenfassen. Darüber hinaus können MEDISTAR-Makros intelligente Funktionen enthalten. Das möchte ich an einem Beispiel demonstrieren:

Die in der Praxis wichtigste EBM-Ziffer ist die Grundpauschale. Abhängig vom Alter des Patienten gibt es für jede Fachgruppe drei unterschiedliche Ziffern. Wir wollen ein Makro erstellen, das altersabhängig automatisch die für den Patienten passende Ziffer in die L-Zeile einträgt. Im Beispiel werden die Pauschalen für die Gastroenterologie verwendet.

Wir benötigen mehrere Variablen, die zunächst einmal definiert werden müssen, um Speicherplatz zu reservieren. Eine Variable besteht aus einem Namen, der immer gleich bleibt und einem Wert, der verändert werden kann.

Das Makro vergleicht in den ersten beiden Zeilen die Altersgrenzen (Zahl_1/2) mit dem Alter des Patienten. Dieses findet sich in der Stammvariablen ‚@PS_Alter_in_Jahren‘. Bitte beachten Sie, dass nur Variablen verglichen werden können, d.h. Werte müssen verpackt sein. Die Makroaktion ‚Set‘ dient der Zuweisung von Werten. In der dritten und vierten Zeile erfolgt eine Wenn-dann-Verzweigung in Form eines ternären Operators (?:):
neuer Wert = Bedingung ? Wert, wenn wahr : Wert, wenn falsch

In der Variablen ‚weiter‘ wird die gefundene Leistungsziffer gespeichert. Durch die Aktion ‚VarText‘ wird der Wert dieser Variablen verwendet bzw. in die L-Zeile geschrieben. Normalerweise wird eine Variable dadurch erkannt, dass sie zwischen Dollarzeichen steht. In der VarText-Zeile ist dies nicht erforderlich, da die Makroaktion ‚VarText‘ bereits vorgibt, dass es sich um eine Variable handeln muss. Die Aktion ‚Key‘ fügt lediglich einen Bindestrich an die Leistungsziffer an, damit sogleich die nächste Ziffer eingegeben werden kann.

Die Beispiel-Makrodatei könnne Sie hier herunterladen: Demo.zip.

Es bieten sich übrigens noch einige Verbesserungen an: zum Beispiel ist es sinnvoll die Wertzuweisung erst innerhalb des Makros durchzuführen, um die Variablen auch für andere Zwecke nutzen zu können. Außerdem ist es durch die Aktion ‚GetText‘ möglich, die Werte aus einem (Konfigurations‑)Menü auszulesen. Und zweckmäßigerweise sollte der Makroknopf nur dann sichbar sein, wenn der Eingabecursor in einer L-Zeile steht.

Für Augenärzte gibt es das bereits. Sie sparen Zeit und gewinnen enorm an Effektivität, wenn Sie gleich OPHTHALMOSTAR erwerben und einsetzen. 😆