
Runscript ist eine Laufzeitversion der Skript-Engine, die es Ihnen ermöglicht, sowohl MCDMS als auch eigenständige Skripte unabhängig von der Anwendung auszuführen. Dabei bietet sie Ihnen vielfältige und leistungsstarke Funktionen, insbesondere für Automatisierungen und flexible Schnittstellen. In Kombination mit unserer umfangreichen Skriptsprache lassen sich so beispielsweise mithilfe der Windows Aufgabenplanung nahezu jede Schnittstelle realisieren.
Ausführung von Runscript.exe
Führen Sie RunScript ohne einen Parameter aus, erhalten Sie folgende Meldungen:


Die meisten Parameter sind optional; verpflichtend ist nur der Parameter Scriptfile1. Da einige Parameter sich gegenseitig beeinflussen, werden sie in ihrer optimalen Reihenfolge erläutert:
Die Parameter von RunScript.exe
ScriptFile1;[ScriptFile2]… (Bitte immer als erstes übergeben!)
Der Runscript-Befehl benötigt mindestens den Parameter ScriptFile1. Sie können jedoch mehrere Skripte durch Semikolon getrennt übergeben. Dies ist nur erforderlich, wenn die Skripte unabhängig voneinander sind, da Sie innerhalb der Skripte mit der Funktion RUN{ScriptFilename… jederzeit weitere Skripte laden und ausführen können.
Beispiel: RUNSCRIPT.EXE {APPPATH}\CONFIG\SCRIPTS\TEST.MCFSCR
Hinweis: In der Übergabe können Sie die Variable {APPPATH} verwenden, um den Basis-Pfad der MCDMS-Installation zu übergeben. Alle anderen Variablen, die Sie aus Skripten oder von MCDMS/MCHOME übergeben möchten, müssen in der jeweiligen Anwendung zuerst initialisiert werden. In MCHOME erfolgt dies im Script MAIN-HOME.MCFSCR. Sie können diese Variablen mit Namen und Inhalt über SetVars übergeben.
/PATIENTID=XXX
Dieser optionale Parameter ist aus Kompatibilitätsgründen enthalten und kann ebenfalls über den Parameter SETVARS= übergeben werden, z. B. /SETVARS=PATIENTID=494542|…
/WATCH_AUFTRAG_FILENAME oder /FILENAME= (Aus Kompatibilitätsgründen ist beides möglich.)
Übergibt einen Dateinamen oder ein Verzeichnis mit Dateiendungen an das zu startende Skript (bitte nur ein Skript übergeben). Unabhängig vom übergebenen Parameter steht im Skript die Variable WATCH_AUFTRAG_FILENAME zur Verfügung, die dort weiterverarbeitet werden kann. Zudem können Sie im Skript die Variable {RUNSCRIPT_SCRIPTFILENAME} verwenden, um eine Schleife über Runscript.exe zu erzeugen.
Beispiele für die Übergabe:
In diesem Beispiel wird das Dokument MEINDOKUMENT.DOC an das Script übergeben und im Script können Sie auf die Variable WATCH_AUFTRAG_FILENAME reagieren um zum Besipiel das Dokument in die Akte zu importieren.
RUNSCRIPT.EXE MeinScriptFile.MCFSCR /FILENAME=C:\DOKUMENTE\MEINDOKUMENT.DOC
Dieses Beispiel übergibt FILENAME nicht als Dateiname, sondern als Pfad. Im Skript wird dann die erste Datei im angegebenen Verzeichnis mit der Erweiterung (*.HL7) an WATCH_AUFTRAG_FILENAME übergeben. Sie müssen im Skript darauf reagieren, um das gesamte Verzeichnis auszulesen.
Um die nächste Datei zu verarbeiten, rufen Sie einfach im Skript mit Execute Runscript erneut auf.
RUNSCRIPT.EXE MeinScriptFile.MCFSCR /FILENAME=C:\IMPORT\HL7*.HL7 oder
RUNSCRIPT.EXE MeinScriptFile.MCFSCR /WATCH_AUFTRAG_FILENAME =C:\IMPORT\HL7*.HL7
Beispiel:
Sie finden dieses Grundgerüst für den Import am Beispiel von HL7 Dateien auch im Ordner MCDMS\CONFIG\SCRIPTS\RUNSCRIPT_IMPORTS\SAMLE_IMPORT_HL7_ADT.MCFSCR
//SCRIPT :SAMLE_IMPORT_HL7_ADT.MCFSCR
//DATUM :25.02.2026
//ANSI-HELPER="ÄÖÜäöüß"
//Beschreibung:
// Importieren Sie über Runscript.exe ein Verzeichnis, bis es vollständig abgearbeitet ist.
// Starten Sie dieses Skript mit einem Pfad, den Sie im Kopf festlegen, in welchem sich Ihre HL7-Nachrichten befinden.
// Setzen Sie den Pfad auch hier als IMPORTPFAD ein oder lesen Sie diesen Pfad aus der ersten Datei ein, die ermittelt wird.
// Der Startparameter von RUNSCRIPT.EXE wäre somit:
//
// RUNSCRIPT.EXE RUNScript.exe {APPPATH}\CONFIG\Scripts\RUNSCRIPT_IMPORTS\SAMLE_IMPORT_HL7_ADT.MCFSCR /WATCH_AUFTRAG_FILENAME="C:\USERS\TEST\DESKTOP\HL7TEMP\*.HL7"
// Den Importpfad aus der ersten Datei herauslesen, der dem Runscript über den übergebenen Pfad übermittelt wurde.
// WATCH_AUFTRAG_FILENAME="C:\USERS\TEST\DESKTOP\HL7TEMP\*.HL7"
// Feste Übergabe einer Datei nur beim Test im Skript-Editor.
// WATCH_AUFTRAG_FILENAME="C:\Users\Bernd\Desktop\HL7TEMP\092014.HL7"
IFBLOCK{WATCH_AUFTRAG_FILENAME=}
RES=EXITSCRIPT{}
ENDIF
IMPORT_PFAD=PATHFROMFILE{{WATCH_AUFTRAG_FILENAME}}
IMPORT_FILE=FILEFROMPATH{{WATCH_AUFTRAG_FILENAME}}
ERROR_PFAD={IMPORT_PFAD}\ERRORCACHE
VERARBEITET_PFAD={IMPORT_PFAD}\VERARBEITET
EXISTSERROR=IFEXISTSDIR{{ERROR_PFAD}}
IFBLOCK{EXISTSERROR=False}
RES=CREATEDIR{{ERROR_PFAD}}
RES=CREATEDIR{{VERARBEITET_PFAD}}
ENDIF
ANZHL7=HL7.GETHL7FILE{HL7DTA,{WATCH_AUFTRAG_FILENAME}}
AKTMSG={HL7DTA_EVN_0_1_0}
// Nachrichten Verarbeiten *******************************************************************************
IFBLOCK{AKTMSG=A01}
// An dieser Stelle Code zum Verarbeiten der A01 einfügen und nach dem Verarbeiten Datei verschieben
// Bei einem Fehler springen Sie in Ihrem Code zum Marker ERRCOPY:
//......
//......
// Wenn korrekt verarbeitet Datei Verschieben nach VERARBEITET_PFAD
RES=COPYFILE{{WATCH_AUFTRAG_FILENAME},{VERARBEITET_PFAD}\{IMPORT_FILE}}
RES=DELETEFILE{{WATCH_AUFTRAG_FILENAME}}
// Nun folgt der entscheidende Teil: Das Skript wird beendet und ruft sich selbst mit "Runscript" erneut auf.
// Die Variable {RUNSCRIPT_SCRIPTFILENAME} gibt das aktuell laufende Skript zurück.
RES=EXECUTE{{APPPATH}\RUNSCRIPT.EXE {RUNSCRIPT_SCRIPTFILENAME} /FILENAME={IMPORT_PFAD}\*.HL7,False}
ELSEIF{AKTMSG=A08}
// An dieser Stelle Code zum Verarbeiten der A08 einfügen und nach dem Verarbeiten Datei verschieben
// Bei einem Fehler springen Sie in Ihrem Code zum Marker ERRCOPY:
//......
//......
// Wenn korrekt verarbeitet Datei Verschieben nach VERARBEITET_PFAD
RES=COPYFILE{{WATCH_AUFTRAG_FILENAME},{VERARBEITET_PFAD}\{IMPORT_FILE}}
RES=DELETEFILE{{WATCH_AUFTRAG_FILENAME}}
// Nun folgt der entscheidende Teil: Das Skript wird beendet und ruft sich selbst mit "Runscript" erneut auf.
// Die Variable {RUNSCRIPT_SCRIPTFILENAME} gibt das aktuell laufende Skript zurück.
RES=EXECUTE{{APPPATH}\RUNSCRIPT.EXE {RUNSCRIPT_SCRIPTFILENAME} /FILENAME={IMPORT_PFAD}\*.HL7,False}
ELSE
// Wenn es keine gültige Nachricht ist, dann in den Error-Cache verschieben.
GO{ERRCOPY}
ENDIF
RES=EXITSCRIPT{}
// Ende der Nachrichtenverarbeitung. *********************************************************************
ERRCOPY:
// Wenn ein Fehler auftritt, dann Nachricht in den ERROR_PFAD kopieren.
RES=COPYFILE{{WATCH_AUFTRAG_FILENAME},{ERROR_PFAD}\{IMPORT_FILE}}
RES=DELETEFILE{{WATCH_AUFTRAG_FILENAME}}
// Nun folgt der entscheidende Teil: Das Skript wird beendet und ruft sich selbst mit "Runscript" erneut auf.
// Die Variable {RUNSCRIPT_SCRIPTFILENAME} gibt das aktuell laufende Skript zurück.
// Wenn der Prozess hier beendet werden soll, dann die nächste Zeile auskommentieren!
RES=EXECUTE{{APPPATH}\RUNSCRIPT.EXE {RUNSCRIPT_SCRIPTFILENAME} /FILENAME={IMPORT_PFAD}\*.HL7,False}
RES=EXITSCRIPT{}
/SETVARS=VARIABLE1=WERT|VARIABLE2=WERT|VARIABLE3=WERT3….usw.
Mit Setvars übergeben Sie Variablen an das zu startende Skript. Diese Variablen können Sie anschließend innerhalb des Skripts ganz normal verwenden.
Beispiel: RUNSCRIPT.EXE {APPPATH}\CONFIG\SCRIPTS\SAVE-FORMULAR-TO-PDF.MCFSCR /PATIENTID={PATIENTID} /SETVARS=MATCHCODE=SONOBEF|USERNAME=MCADMIN|ZIELFILENAME={SYSDIR_DESKTOP}\TEMP-SONO.PDF
Umleitung von Runscript.exe-Aufrufen in eine Jobliste
Mit den Parametern /ADDJOB=, /JOBMODE= und /JOBKATEGORY steuern Sie die Weiterleitung bestimmter Skriptaufrufe in die private oder öffentliche Auftragsliste. Nach der Umleitung wird der Button zur Abarbeitung der Jobliste aktiviert beziehungsweise rot blinkend hervorgehoben.

/ADDJOB
Name des Jobs und Titel in der Auftragsliste
/JOBKATEGORY
Setzt die Kategorie des Jobs zur Kategorisierung für den Anwender in der Jobliste. Diese Funktion ist in MCDMS Version 2026.1 noch ohne Wirkung.
/JOBMODE
Bestimmt, in welche der Joblisten der Job eingetragen wird: PUBLIC oder USER
In der Job liste escheinen danach die Aufträge und Jobs

/NOINIT
Dieser Parameter wird ohne Wert übergeben und dient als Schalter, ob Standardskripte und Variablen vor der Ausführung gesetzt werden. Wird dieser Schalter übergeben, wird das Skript vollständig ohne Initialisierung (ohne Ausführung der Standardskripte) ausgeführt.
