OPHTHALMOSTAR Web Log

12. Mai 2011

Gibt es geöffnete bzw. laufende MEDISTAR-Taks?

Das folgende Problem dürfte vielen MEDISTAR-Anwendern bekannt sein: In der Mittagpause soll eine Datensicherung erfolgen. Damit alle ISAM-Datenbanken gesichert werden können, müssen alle Tasks geschlossen sein.

Das folgende VB-Skript ermöglicht von einem beliebigen PC aus zu prüfen, ob es geöffnete Tasks im Netzwerk gibt. Dazu versucht es, die Datei «psync.ism» zu kopieren. Solange ein Task geöffnet ist, wird der Zugriff verweigert.

TaskTest.vbs
'Bitte in nachfolgender Zeile den Pfad anpassen.
testFile = "\\Server\d%\MEDISTAR\PDATEN\PSYNC.ISM"
strInfo = "Prüfung auf offene MEDISTAR-Tasks"
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objFS = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
If objFS.FileExists(testFile) Then
  Set objFile = objFS.GetFile(testFile)
  objFile.Copy(Left(objFile.Path,InStrRev(objFile.Path, "\")) & "PSYNC.BAK")
  If Err.Number > 0 Then  'Zugriff verweigert'
    MsgBox "Es ist noch mindestens ein Task geöffnet!", 48, strInfo
  Else
    WshShell.Popup "MEDISTAR wurde überall beendet.", 3, strInfo
  End If
Else
  MsgBox testFile & vbCrLf & "Die Datei wurde nicht gefunden.", 16, strInfo
End If

Kennen Sie eine andere Möglichkeit?

10. Mai 2011

MEDISTAR-SQL-Datensicherung automatisieren

Unter MEDISTAR-SQL gibt es einen Backup-Dienst, der automatisch eine Siche­rung der Datenbank erstellt und im Ordner …\MEDISTAR\Sicherung ablegt. Damit liegt aber keineswegs eine ausreichende Datensicherung vor. Schließlich befinden sich die Backupdateien noch auf der Festplatte, auf der MEDISTAR und Oracle-Datenbank installiert sind. Bei einem Crash wären Original und Backup futsch.

Man ist also selbst dafür verantwortlich, dass diese Dateien auf einem anderen Medium gesichert werden. Das lässt sich mit Windows-Bordmitteln ein­rich­ten. Hierzu lassen wir z.B. auf einem Arbeitsplatz-PC eine Batch-Datei laufen, die an jedem Wochentag einen anderen Ordner für die Sicherung verwendet.

MSBackup.cmd
@echo off
set Heading=MEDISTAR-Backup-Sicherung
title=%Heading%
 

:: Pfade bitte individuell anpassen!
set MSPath=\\Server\d%%\MEDISTAR
set BackupDrive=E:

:: Wochentag ermitteln. Geht nicht mit CMD-Befehlen, daher VBS.
echo Wscript.Echo WeekdayName(Weekday(now,0),false,0) > %~n0.vbs
FOR /F "usebackq" %%a IN (`cscript.exe %~n0.vbs //nologo`) DO set weekday=%%a
del %~n0.vbs

:: LogDatei nicht in BackupFolder speichern; ROBOCOPY würde sie löschen!
set BackupFolder=%BackupDrive%\%~n0%weekday%
set TmpFile=%BackupDrive%\%~n0%weekday%.tmp
set LogFile=%BackupDrive%\%~n0%weekday%.log
set Options=/MIR /R:1 /W:1 /NC /NDL /NP /NS /TEE /FFT /Log+:%TmpFile%

:: MEDISTAR-Backup um Makrodateien und Patientenlisten ergänzen.
xcopy /d /h /i /f /k %MSPath%\INST\*.mac    %MSPath%\Sicherung\INST\*.*
xcopy /d /i /y /f /k %MSPath%\PARA\PLPARA.* %MSPath%\Sicherung\PARA\*.*

:: LogDatei anlegen, ggfs. überschreiben. Synchronisieren mit ROBOCOPY.
echo %Heading% am %weekday%, den %date% um %time:~0,8% Uhr. > "%TmpFile%"
robocopy %MSPath%\Sicherung %BackupFolder% %Options%

:: ASCII (TmpFile) nach Unicode (LogFile) umwandeln. TmpFile entsorgen.
cmd /u /c type %TmpFile% > %LogFile%
del %TmpFile%

:: LogDatei anzeigen und Batchdatei beenden ohne zu warten.
start %LogFile%

Wenn die Batchdatei richtig eingerichtet ist, wollen wir das DOS-Fenster nicht mehr sehen – wir bekommen ja nach erfolgter Datensicherung die Logdatei angezeigt. Aus diesem Grund starten wir die Batchdatei ohne sichtbares Fenster mit einem kleinen VB-Skript.

MSBStart.vbs
‘ Dieses VisualBasic-Skript startet MSBackup ohne sichtbares Fenster.
‘ Bitte beachten Sie, dass das Skript nicht MSBackup.vbs heißen darf,
‘ weil MSBackup.vbs von der Batchdatei gleichen Namens gelöscht wird!
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "MSBackup.cmd", 0, False
WshShell.Popup "MSBackup wird ausgeführt. Bitte warten...", 3, "Info"

Der dritte Schritt besteht darin, dass die Datensicherung täglich 10 oder 15 Minuten nach der Backup-Erstellung durch den MEDISTAR-Backup-Dienst mit Hilfe der Windows-Aufgabenplanung automatisch startet. Damit das VB-Skript die Batchdatei findet, muss unter «Starten in (optional)» der Pfad angegeben werden. Administratorrechte («mit höchsten Privilegien») sind erforderlich.

Weitere Informationen zu robocopy finden Sie hier.

4. Mai 2011

Schneller Wechsel zwischen ein- und beidseitigem Drucken

In vielen Praxen steht ein Laserdrucker, der von allen Arbeitsplätzen erreichbar ist (Netzwerkdrucker). Moderne Drucker verfügen über eine Duplexeinheit, d.h. sie können Papier beidseitig bedrucken. Das ist ökologisch.

Um zwischen Duplexfunktion und einfachem Ausdruck schnell wechseln zu können, empfiehlt es sich den Drucker auf allen Arbeitsplätzen zweimal zu installieren. Anschließend wird die Voreinstellung bei einem Drucker auf «Duplex» und bei dem anderen auf «Einfach» gestellt.