MEDISTAR-Makroprogrammierung: Mit Uhrzeiten rechnen

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.

2 Gedanken zu „MEDISTAR-Makroprogrammierung: Mit Uhrzeiten rechnen“

  1. Hallo Dr. Happe, ich möchte einen „Eingangsstempel“ als Makro programmieren. Zeit lässt sich unter:
    Aktion Ziel Wert
    ActionActivate aCmdTime
    aktivieren. Wie könnte man das Datum integrieren? aCmdDate nimmt er nicht…
    MFG TJ

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.