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.

Arbeitszeiterfassung per BMAS-App – Auswertung und Archivierung

Das Bundesministerium für Arbeit (BMAS) bietet eine kosten­lose App („einfach erfasst“) zur Er­fassung und Über­mittlung von Arbeitszeiten.
Mit der App erfasst der Arbeit­nehmer seine Arbeits­zeiten. Die Daten werden auf seinem Smart­phone gespeichert und monatlich an eine in der App eingetragene Mail­adresse des Arbeitgebers versendet.

 

Was macht der Arbeitgeber mit den Daten, die er per E-Mail erhält?

Auf der Webseite des BMAS steht dazu: „Über gesetzte Sortierregeln im E-Mail-Programm kann der Arbeitgeber eine einfache und schnelle Ablage der E-Mails für seine Beschäftigten organisieren.“

Diese Empfehlung dürfte vielen Arbeitgebern nicht ausreichen. Häufig führen Arbeitgeber Excel-Tabellen, in die die Arbeitsstunden mühsam per Hand eingetragen werden. Dadurch hat man alle Daten in einem Dokument und kann zum Beispiel zusammenrechnen, wieviel Stunden im Jahr zusammen gekommen sind.

Mein bereits vorgestelltes Programm „Stunden- und Tagerechner“ verfügt ab Version 1.7 über eine Importfunktion für die BMAS-App-Mails. Die Daten lassen sich kumulativ erfassten, zum Beispiel für ein ganzes Jahr. Eine Nachbearbeitung ist leicht möglich und auch ein Export nach Excel. Damit bietet sich das Programm als Analyse und Archivierungstool für die mit der BMAS-App „einfach erfasst“ gesammelten Daten an.

Das Programm kann von der Webseite des Heise-Zeitschriftenverlags (c’t) oder von der Microsoft-Projektseite (Codeproject) heruntergeladen werden und kommt ohne Installation aus.

Zeiterfassungssoftware – einfach, intelligent, open-source

Die Erfassung von Arbeitszeiten ist ein Thema, mit dem praktisch jeder in Berührung kommt, sei es um eigene Arbeitszeit zu erfassen oder um zum Beispiel eine Haushaltshilfe zu entlohnen. Weil ich kein einfach zu bedienendes Programm gefunden habe, das meinen Vorstellungen entspricht, habe ich selbst eines geschrieben.

Arbeitsstunden innerhalb einer Woche, Überstunden in einem Monat und andere Zeitspannen lassen sich mit diesem Programm mühelos zusammenrechnen – sogar für mehrere Personen.

Die Software funktioniert wie eine für die Zeiterfassung optimierte Tabellenkalkulation. Sie ist auf maximale Bedienungsfreundlichkeit getrimmt. Zum Beispiel können Daten verkürzt eingegeben oder durch Drücken der Plus- bzw. Minustaste verändert werden.

Die Tabelle kann gespeichert werden. Durch Anlegen einer entsprechenden Verknüpfung ist es auch möglich, das Programm mit gespeicherten Werten zu starten und diese fortzuschreiben. Dazu kann aus dem Programm heraus eine Desktopverknüpfung angelegt werden.

Das Programm kann für die Aufzeichnungspflicht nach dem Mindestlohn-Gesetz (MiLoG) verwendet werden. Das Gesetzt verlangt für geringfügig Beschäftigte (Ausnahme: Minijobber im privaten Bereich), dass Beginn und Ende sowie Dauer der Arbeitszeit erfasst werden.

Sie können die Open-Source-Software von Microsofts Hosting-Website für quelloffene Programme herunterladen: http://timetool.codeplex.com.

Das Programm setzt das Microsoft .NET Framework ≥ 2.0 voraus, das standardmäßig auf jedem Windows-PC vorhanden ist.

Um das Programm auszuprobieren, ist keine Installation erforderlich. Kopieren Sie das Programm einfach in irgendeinen Ordner (zum Beispiel C:\Tools).

Damit Sie neu angelegten Dateien wiederfinden und weiter bearbeiten können, fragt das Programm beim ersten Speichern, ob es eine Desktop-Verknüpfung anlegen soll.

MEDISTAR-Patientenmarker mit Ampel-Funktionalität erweitern

Mit der Patientenmarker-Funktion in MEDISTAR lassen sich Besonderheiten eines Patienten auf einen Blick erkennbar machen. Durch die Verknüpfungsmöglichkeit mit den Patientenlisten lassen sich Abfragen definieren, die automatisch zu einer bestimmten Anzeige führen.

In meiner Praxis sollen bestimmte Untersuchungen bzw. IGeL-Leistungen in regelmäßigen Abständen wiederholt werden. Mit Patientenmarkern lasse ich mich daran erinnern, den Patienten darauf hinzuweisen. Dazu benutze ich bei wichtigen Untersuchungen ein Ampel-System.

HRT-Ampel-2

Im folgenden Beispiel soll der Hintergrund des Patientenmarkers GRÜN sein, wenn die Untersuchung (HRT) innerhalb des letzten Jahres erfolgte. Der Hintergrund des Markers soll GELB sein, wenn die Untersuchung im Zeitraum von 1-2 Jahren erfolgte (s. Abb.). Ein ROTer Hintergrund signalisiert, dass die letzte vor mehr als 2 Jahren erfolgte.

Wir benötigen also 3 Patientlisten, die jeweils mit einem Marker verbunden werden. Das Beispiel geht davon aus, dass der betreffende Untersuchungsbefund in einer B1-Zeile gespeichert wird und dass dieser Zeilentyp ausschließlich für diesen Zweck verwendet wird. Selbstverständlich sind andere Gestaltungen möglich. Zum Beispiel könnte nach einen Schlüsselwort gesucht werden.

Erste Abfrage (GRÜN)

Bedingung von dynamisch > bis dynamisch >
A mdB1=* H-1J H
Verknüpfung: A

Zweite Abfrage (GELB)

Bedingung von dynamisch > bis dynamisch >
A mdB1=* H-2J H-1J
B mdB1=* H-1J H
Verknüpfung: A+-B

Dritte Abfrage (ROT)

Bedingung von dynamisch > bis dynamisch >
A mdB1=*
B mdB1=* H-2J H
Verknüpfung: A+-B

Als letzter Schritt erfolgt das Einrichten des Patientenmarkers, der mit der zugehörigen Patientenliste verknüpft wird.

HRT-Ampel-1

Makros für die Brieferstellung mit MEDISTAR und Microsoft Word

Für die MEDISTAR-Brieftextverarbeitung mit Word benutze ich seit  Jahren ein paar zusätzliche Makros:
MSTV2007_mod

Die Erweiterung besteht aus zwei Dateien:

OphStar.dotm enthält die neuen Makros. Diese sind nicht geschützt und können durch den Anwender verändert werden. Absolut sinnvoll ist das bei der Funktion „Text verbessern“. Dieses Makro erlaubt auf einfache Weise das Ersetzen von in Befundtexten enthaltenen Kürzeln, die ausgeschrieben im Brief erscheinen sollen. Kurzanleitung: Add-Ins – OphStar.dotm öffnen – zu OphtStar.dotm wechseln – Alt+F11 drücken – Module: modOphStar mit Doppelklick öffnen – Zeilen die mit „Call“ anfangen ersetzten. Neben dem Such- und Ersetzungstext können Sie jeweils angeben, ob das Ersetzen automatisch oder mit Sicherheitssabfrage erfolgen soll.

modOphStar

 

MSTV2007_mod.dotm ist eine modifizierte MEDISTAR-Makrodatei. Es wurden lediglich dem MEDISTAR-Ribbon ein paar Schaltflächen hinzugefügt, mit denen die Makros der Ophstar.dotm aufgerufen werden können. Das erspart einem das Öffnen des AddIn-Ribbons, in dem sich die gleichen Schaltflächen finden – als Bestandteil der Ophstar.dotm. Die Verwendung der MSTV2007_mod.dotm ist also nur eine zusätzliche Option beim Einsatz der Ophstar.dotm.

Die Dateien befinden sich in der Zip-Datei, die Sie hier herunterladen können: WordOphtStarAddIn.

Entpacken Sie die Dateien nach dem Download in  einen beliebigen Ordner. Neben den erwähnten Dateien sind drei Visual Basic-Skripte enthalten:

  1. ExploreWordStartup.vbs öffnet den Startup-Ordner Ihrer Word-Installation.
  2. InstallAllWordAddIns.vbs kopiert alle im gleichen Ordner enthalten Makrodateien in den Startup-Ordner. Bereits vorhandene Dateien werden umbenannt und gehen nicht verloren.
  3. ToggleMSTV2007_mod.vbs ermöglicht einen einfachen Wechsel zwischen Original und Erweiterung des MEDISTAR-Ribbons.

Bitte beachten Sie, dass es für die Verwendung keinen Support seitens der MEDISTAR-Hotline gibt. Die Nutzung geschieht wie immer auf eigene Gefahr. Aber wie bereits gesagt: in meiner Praxis wird das Add-In seit Jahren täglich benutzt. Über Rückmeldungen freue ich mich…

Computernamen des MEDISTAR-Servers ändern

Grundsätzlich ist es möglich eine Neu- bzw. Zweitinstallation, durch Kopieren der beiden Ordner D:\Oracle und D:\Medistar auf den identischen Stand zu bringen, da sowohl MEDISTAR wie auch Oracle ihre wichtigen Einstellungen innerhalb dieser Ordner speichern und nicht in der Registry. Das erspart einem das Nachinstallieren von Updates und das Importieren der Praxisdaten. Voraussetzung für das erfolgreiche Kopieren ist natürlich, dass zuvor eine reguläre Installation stattgefunden hat und dass die Dienste heruntergefahren sind. Als Zwischenmedium verwendet man am besten eine FAT32-formatierte USB-Festplatte. Man hat dann keinen Ärger mit den Benutzerrechten irgendwelcher Dateien, wie es bei NFTS vorkommen kann.

Falls in diesem Szenario die Computernamen differieren, wird es allerdings zu Problemen kommen. Deshalb möchte ich hier kurz das Vorgehen für die Umstellung des Namens beschreiben:
Um den Namen zu ändern drücken Sie <Windows-Taste + Pause-Taste>. Das weitere Vorgehen ergibt sich aus der Abbildung. Eine Änderung wird erst nach einem Neustart wirksam.

Screenshot (Sytemsteuerung - System)

Screenshot (Systemsteuerung – Systemeigenschaften)

Falls ein anderer Name als in der Quelle verwendet wird, müssen Sie vor dem Neustart die entsprechenden Einträge in folgenden Dateien korrigieren:

  • D:\MEDISTAR\inst\sql.ini
  • D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
  • D:\oracle\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
Ausschnittt aus listener.ora

Ausschnittt aus listener.ora

Abfrage der aktiven Computer bzw. Sessions in MEDISTAR-SQL

Gut versteckt findet sich in MEDISTAR ein Dialogfenster für die Eingabe von SQL-Anfragen. Nützlich ist dieser Programmbestandteil durch seine Makrofähigkeit. Ich habe mir ein Makro gebaut, dass sich nach nur einem Klick zu diesem Dialog durchhangelt und abfragt, welche Benutzer bzw. Arbeitsplätze gerade MEDISTAR verwenden. Das ist nützlich vor irgendwelchen Arbeiten an der Datenbank (z.B. Updates, Backups, etc.), um noch geöffnete Tasks zu finden.

Sie gelangen zu dem Abfragefenster durch Eingabe der folgenden Befehle:

  • PSH“ um das Systemkommandofenster zu öffnen.
  • Dort führen Sie den Befehl „swrp sqlexec“ aus.
  • Nach Eingabe des Master-Passworts öffnet sich das SQL-Anfragefenster.
  • select distinct machine from v$session where username='MSUSER'” entlockt dem System die gewünschte Information.

PS: In OPHTHALMOSTAR 2.0 (coming soon!) sind die Makros natürlich eingebaut.

SQL-Anfrage

NetRadio – Radiohören am PC

Als Hobbyprogrammierer wünscht man sich, ein Programm zu schreiben, das eine größere Verbreitung findet. NetRadio ist eine Anwendung, die für jeden Windows-Benutzer interessant sein könnte.

netradio1Das Programm spielt Internet-Live­streams von Radiosendern und bietet eine einfache Verwaltung für bis zu 24 Stationen. Etwas Arbeit macht es, die eignen Lieblingssender ein­zu­pflegen. Aber die Mühe lohnt sich! Die bereits eingetragenen Sender sollen nur die Funktionsfähigkeit des Programms demonstrieren. Ersetzen Sie diese durch Ihre Favoriten!

NetRadio ist nicht nur Freeware son­dern auch Open-Source-Software. Das ausführbare Programm findet sich (neben dem Quellcode) auf CodePlex zum Download. Klicken Sie hier, um die Seite zu besuchen und klicken Sie dort auf den »download«-Button.

Das Programm ist eigentlich selbsterklärend. Trotzdem ist es sinnvoll, die »Documentation« zu lesen. Dort finden sich auch Tipps, wie man an die richtigen Streaming-URLs gelangt.

Viel Spaß!

Fortlaufende Rechnungsnummern in Word-Dokumenten

In der Praxis kommt es oft vor, dass IGeL-Rechnungen mit identischen Beträgen erstellt werden müssen. Da bietet es sich an, eine Word-Vorlage zu erstellen, die nur noch Name und Anschrift automatisiert übernimmt. Allerdings müssen Rechnungen eine fortlaufende Nummer enthalten.
Zu diesem Zweck erhält die Vorlage ein »AutoNew«-Makro, das beim Erstellen eines neuen Dokuments ausgelöst wird. Die aktuelle Rechnungsnummer wird in einer INI-Datei im Vorlagenordner gespeichert, so dass sie bei der nächsten Verwendung der Vorlage (oder einer anderen mit dem selben Makro) ausgelesen werden kann.

' Increment Invoice Number to New Form Document
Sub AutoNew()
 
  ' Create variables
  Dim fieldName As String
  Dim invNumber As String
  Dim iniFileName As String
  Dim templatePath As String
 
  fieldName = "InvoiceNumber"
  iniFileName = "Rechnungen.ini"
  templatePath = ActiveDocument.AttachedTemplate.Path
 
  ' Read value from INI-file
  invNumber = System.PrivateProfileString(templatePath & _
    "\" & iniFileName, fieldName, "invNumber")
 
  ' Increment invoice number
  If invNumber = "" Then
    invNumber = 1
  Else
    invNumber = invNumber + 1
  End If
 
  ' Update Invoice Number in active document
  ActiveDocument.FormFields(fieldName).Result = invNumber
 
  ' (Over)Write new value to INI-File
  System.PrivateProfileString(templatePath & "\" & _
    iniFileName, "InvoiceNumber", "invNumber") = invNumber
 
End Sub

Das Makro erwartet in der Vorlagedatei ein Textformularfeld mit folgenden Eigenschaften:

TextFormularFeld

Downloads:

Rechnung_HRT-Unters.dot (in Word <Alt + F11> drücken, um den Code zu sehen)

AutoNew.bas (in Word <Alt + F11> drücken, im VBA-Editor „Datei importieren“ wählen)

Fehlende elektronische Gesund­heits­karte – was tun?

Die Ablösung der „alten“ Krankenversichertenkarte durch die elektronische Gesund­heits­karte (eGK) mit Beginn des neuen Jahres, wird von verschärften Regeln für den Fall des Fehlens der Karte begleitet. Das führt zu Mehrarbeit und erinnert an die ungeliebte Praxisgebühr.

Falls ein Patient ohne eGK zur Behandlung kommt, wird er aufgefordert innerhalb von zehn Tagen eine gültige Karte nachzureichen. Andernfalls erhält er eine Privatrechnung. Während dieser Zeit erfolgen Verordnungen auf dem Privatrezept mit dem Vermerk „ohne Ver­siche­rungs­nachweis“. Wird die eGK bis Quartalsende nachgereicht oder bestätigt seine Kranken­kasse, dass zum Zeitpunkt der Behandlung ein Leistungsanspruch bestand, erhält er das Geld zurück.

Ich halte es für sinnvoll, sich vom Patienten unterschreiben zu lassen, dass er die nötigen Informationen über diese Regelung erhalten hat. Zu diesem Zweck habe ich ein (nicht-grafisches) MEDISTAR-Formular umprogrammiert. Es ermöglicht den Ausdruck eines in­dividuellen Bestätigungsschreibens und dokumentiert den Vorgang in den med. Daten.

Zur Installation kopieren Sie die drei Dateien in den Ordner MEDISTAR\FORM und rufen anschließend in MEDISTAR den Formular-Assembler auf (Kommando „PSH“, dann „FASM“). Installieren Sie das Programm auf einen freien Platz und tragen Sie in den Einstellungen (s. Abb.) Ihre Praxisdaten ein.

Der Patient erhält zum Mitnehmen das Informationsblatt der KBV, das man am besten ausgedruckt bereithält.

eGKInfo