Ermittlung der Anzahl der Zeichen in Dokumenten
fr Microsoft Word basierte Schreibsysteme

Für unterschiedliche Fragestellungen werden immer wieder die Anzahl der Anschläge oder die Anzahl der Zeichen eines Dokumentes benötigt. Sei es im Rahmen einer Personalbedarfsermittlung oder für die Ermittlung der Kosten der Schriftguterstellung.

In vielen Krankenhausinformationssystemen werden diese Daten jedoch nicht abgespeichert, so dass eine Auswertung nicht möglich ist. Es bleibt nichts anderes übrig, als eine möglichst repräsentative Stichprobe von Hand auszuzählen.

Im folgenden Artikel wird beschrieben, wie die Daten, bei einem auf Microsoft Word basierten System, elektronisch ausgeleitet werden können.

Grundlage ist ein Visual Basic for Application (VBA) Script. Dieses ermittelt die Anzahl der Zeichen und speichert die Informationen zusammen mit anderen Daten (z.B. der DokumentenID, Fachabteilung oder Patientenname) in einer Textdatei.

Um das folgende Script einzubinden, sind Kentnisse in Microsoft Word und VBA zwingend erforderlich. Daneben bedarf es der notwendigen Rechte um die Formatvorlagen anpassen zu können.  

Die einzelnen Schritte

Folgende Schritte sind notwendig, um die Daten auszuleiten:

  1. Einbinden des Moduls in die Formatvorlage (ggf. zentrale Formatvorlage)
  2. Anpassen der Einstellungen im Modul gobStatistik
  3. Einbinden des Funktionsaufrufs saveStats (z.B. beim Druck)

Die Funktionsweise

Wird die Routine saveStats aufgerufen, werden die Zeichen des aktuell geöffneten Dokuments ermittelt und die Daten in eine Textdatei geschrieben. Der Routine saveStats kann als Parameter eine beliebiger Text (z.B. eine DokumentenID, die Fachabteilung oder der Patientenname, etc.) übergeben werden. Dieser Text wird zusammen mit der Anzahl der Zeichen in der Textdatei gespeichert. Damit können später die Zeichen den Dokumenttypen zugeordnet werden.

Die Ausgabe in der Textdatei wird im CSV-Format formatiert und kann später mit Excel oder mit dem Schreibdienstmodul im GOBnet ausgewert werden.

Das Modul 

Das Modul gobStatistik gilt es in die Formatvorlage einzubinden.

Option Explicit

' ==============================================================================================
' Autor: Maik Tauch, GOB (c)
'         Gütersloher Organisationsberatung
'         Telefon: 05241 54404
'         Internet: www.gob-tauch.de
'
' Datum:  20. November 2012
'
' Version: 1.0
' Das Modul speichert die Anzahl der Zeichen eines Dokuments mit der DokumentenID zentral in einer Datei
'
' ==============================================================================================

' Einstellung:
' ----------------------------------------------------------------------------------------------
' Pfad/Datei in die die Daten geschriebenw werden sollen.
' Es können folgende Variablen genutzt werden:
'    #MONAT#      => aktueller Monat
'    #JAHR#       => aktuelles Jahr
' Die Pfadangabe sollte auf einen Server verweisen, für den alle Nutzer schreibrechte besitzen.
'
' Beispiele:
'   "H:\server\#MONAT#_statistik.csv"     => H:\server\12_statistik.csv
'   "H:\server\#JAHR#\statistik.csv"      => H:\server\2012\statistik.csv
Private Const filePath As String = "H:\#JAHR#_gob_statistik.csv"

' Maximale Anzahl an versuchen (ggf. ist die Datei aufgrund paralleler Zugriffe gesperrt)
Private Const intMaxVersuche As Integer = 4

' Debugging deb = true                    => Fehlerausgabe
Private Const deb As Boolean = False

Sub saveStats(DokumentID As String)
    Dim intFile As Integer
    Dim intVersuche As Integer
    Dim Fehler As Boolean
    Dim Zeichen As Variant
    Dim File As String
   
    File = filePath
    File = Replace(File, "#MONAT#", Month(Now))
    File = Replace(File, "#JAHR#", Year(Now))
   
    Zeichen = ActiveDocument.BuiltInDocumentProperties(wdPropertyCharsWSpaces)
    intVersuche = 0
   
    On Error Resume Next
    Do
        Err.Clear
        intFile = FreeFile
        Open File For Append As #intFile
        If deb Then
            If Err.Number > 0 Then
                MsgBox "Fehler: " & Err.Number & " " & Err.Description
            End If
        End If
        ' Schreibkonflikt (z.B. Datei gesperrt durch andere(n) Operation/Benutzer)
        If Err.Number = 55 Then
            Fehler = True
            intVersuche = intVersuche + 1
            ' Max. Anzahl an Versuchen? breche ab!
            If intVersuche = intMaxVersuche Then
                Fehler = False
            End If
        Else
            Fehler = False
            Print #intFile, DokumentID & ";" & Zeichen
            Close #intFile
        End If
    Loop Until Fehler = False
End Sub

Schritt 1: Einbinden des Moduls in die Formatvorlage

Zunächst ist die Formatvorlage, in die das Modul eingebunden werden soll, in Microsoft Word zu öffnen.

Dabei kann es sich sowohl um eine zentrale Formatvorlage handeln, die bei jedem Dokument mitgeladen wird, als auch um die Formatvorlage des jeweiligen Dokuments (Entlassungsbrief, OP-Bericht, ...).

Ist die Formatvorlage in Word geöffnet, so öffnet die Tastenkombination ALT+F11 den VBA-Editor. In der linken oberen Ecke befindet sich der Projekt-Explorer. Das Modul kann in die Formatvorlage importiert werden. Rechts-Klick mit der Maus auf die Formatvorlage / Datei importieren.

VBA-Editor

Im folgenden Dialog ist das Modul "gobStatistik.bas" auszuwählen. Dieses wird als neues Modul der Formatvorlage hinzugefügt. 

Schritt 2: Anpassen der Einstellungen

Durch einen Doppelklick auf das Modul "gobStatistik" wird der Quellcode im Editor geladen. Oberhalb der Routine befinden sich die folgenden Einstellungen.

Variable Wert Beschreibung
filePath "H:\#JAHR#_gob_statistik.csv"

Die Datei inkl. Pfad in der die Informationen gespeichert werden sollen. Es empfiehlt sich ein Netzlaufwerk auf dem alle Anwender Schreibrechte besitzen. In der Angabe können zwei Platzhalter verwendet werden:

#JAHR# wird durch das aktuelle Jahr ersetzt.

#MONAT# wird durch den aktuellen Monat ersetzt.

Die Angaben können sowohl im Dateinamen als auch im Verzeichnis auftauchen. Das Verzeichnis wird jedoch nicht automatisch angelegt.

intMaxVersuche 4

Maximale Anzahl an Schreibversuchen.

Beim Schreiben der Daten in die Datei wird diese für den Zugriff durch andere gesperrt. Versucht ein zweiter Computer zeitgleich Daten in die Datei zu schreiben, so ist dies nicht möglich. Der Computer versucht es erneut, bis die maximale Anzahl an Versuchen erreicht ist. Gelingt es bis dahin nicht, werden die Daten nicht gespeichert.

deb False Zur Fehlerbehebung kann die Ausgabe von Kontrollmeldungen aktiviert werden. In diesem Fall ist die Variable auf True zu setzen. ACHTUNG: Nicht im Produktivbetrieb! 

In der folgenden Abbildung sind die Einstellungen im Editor-Fenster noch einmal abgebildet:

VBA-Editor

Schritt 3: Einbinden des Funktionsaufrufs

Im letzten Schritt muss die Routine saveStats aufgerufen werden. Dazu ist der Aufruf mit einem Ereignis zu verbinden. Dies kann z.B. mit dem Drucken des Dokuments erfolgen.

In aller Regel ist bereits eine eigene Seriendruckfunktion hinterlegt. Der Aufruf von saveStats kann hier an geeigneter Stelle eingefügt werden.

Sollte keine eigene Seriendruckfunktion vorhanden sein, so kann der Aufruf von saveStats auch mit dem Druck-Ereignis aus Word verknüpft werden. Dazu sind zwei weitere Module in die Formatvorlage einzubinden. Werden die Module initWordApp und cls_oApp eingebunden, so wird die Funktion saveStats automatisch mit dem Aufrufen der Druckfunktion aus Microsoft Word gestartet.

Zuvor sollte jedoch ein Blick in das Modul cls_oApp geworfen werden. Die Funktion saveStats wird mit dem Text "DokumentID" aufgerufen. Dieser ist durch die DokumentenID oder durch andere Angaben, wie die Fachabteilung oder den Patientenname zu ersetzen.

Fazit

Mit ein wenig Aufwand lassen sich automatisiert die benötigten Daten erheben. Aufbauend auf den Informationen können z.B. die Kosten der Schriftguterstellung valider ermittelt werden.

Wenn Sie Hilfe bei der Einbindung benötigen, stehen wir Ihnen gerne zur Verfügung.