Neue Leitung für MEDISTAR

Zum 1.10. hat der langjährige MEDISTAR-Geschäftsführer zusammen mit dem Leiter der Entwicklungsabteilung das Unternehmen überraschend verlassen. Die Hintergründe sind mir nicht bekannt.

Allerdings macht man sich so seine Gedanken und es fallen mir viele mögliche Gründe ein, warum es dazu kommen konnte. Aus Anwendersicht hat man seit der Übernahme der Firma durch die CompuGroup Medical AG vor nun mehr als 10 Jahren den Eindruck, dass die Dinge nicht gut laufen. Die CGM-Leitung möchte als Besitzerin verschiedener Arztsoftwareprodukte und weiterer Software für andere Gesundheitssparten verständlicherweise Synergieeffekte nutzen. Daher haben die von ihr als „Plattformprodukte“ bezeichneten Programme, d.h. Software, die von den verschiedenen Arztsoftwareprodukten (MEDISTAR, TurboMed, Albis, M1, usw.) gemeinsam genutzt werden können, in den letzten Jahren höchste Priorität gehabt. Die Entwicklung und Anbindung dieser Produkte an MEDISTAR hat viel Manpower geschluckt. Herausgekommen sind für den Anwender im besten Fall nette Schmankerln wie der Online-Terminkalender. Andere Erzeugnisse wie z.B. das Doc-Portal haben dagegen viele Anwender in Rage gebracht.

Die Kernprobleme bei MEDISTAR wurden dagegen vernachlässigt. Zum einen, weil Datenbankumstellung und gesetzliche Vorgaben Kapazitäten gebunden haben, aber auch weil die Entwickler mit der Programmierung von Junk-Software beschäftigt wurden. Liegen gebliebene und dringend zu erledigende Aufgaben sind zum Beispiel:

  1. Die Beseitigung nicht-graphischer Formularprogramme: Viele Anwender erledigen zwangsweise noch heute – fast 20 Jahre nach Einführung von Windows 95 – wichtige Schritte der Praxistätigkeit mit MEDISTAR-Software, die keine Mausbedienung zulässt!
  2. Überarbeitung der integrierten Textverarbeitung („Brieftext“): Die Brieftext-Funktion in MEDISTAR ist für den geübten Anwender schnell zu bedienen und deshalb beliebt. Allerdings ist die Bedienung ebenfalls über 20 Jahre alt und einem Junganwender nicht mehr zu vermitteln.
  3. Die Konfiguration von Druckern innerhalb der MEDISTAR-Software ist eine Zumutung und überhaupt nicht Windows-konform. Auch hier ist eine gründliche Modernisierung vonnöten.
  4. Der Unterbau von MEDISTAR, das Qt-Framework ist veraltet und möglicherweise für moderne bzw. kommende Windows-Betriebssysteme nicht mehr kompatibel, zumal der Support seitens des Herstellers beendet wurde. Die dringend erforderliche Umstellung auf eine neue Version wird einigen Aufwand kosten, für den genügend Entwicklungskapazität zur Verfügung gestellt werden muss. Dazu werden auch umfangreiche Tests gehören, bevor eine neue Version ausgegeben werden kann. Gleichzeitig erleichtert die Umstellung die Einbindung einer modernen Textverarbeitungsfunktion, weil in neueren Qt-Versionen eine vorbereitete Komponente zur Verfügung steht.
  5. Die Einblendung von Medikamentenwerbung im Rezeptformular ist für eine seriöse Software nicht hinnehmbar. Das Argument, dass die Verordnungskomponente (ehemals „Pharmastar“) den Anwendern kostenlos zu Verfügung gestellt wird, war schon immer blöd. Das Verordnen von Medikamenten ist nun mal eine Kernfunktion einer Arztsoftware. Ein Anwender, der viel Geld für seine Praxis-EDV ausgibt, aber ständig mit Werbung attackiert wird, fühlt sich verschaukelt. Hallo CGM-Manager, bitte versteht „Synchronizing Healthcare“ nicht so, dass ihr eure Ärzte an die Pharma-Industrie verkauft!
  6. Seit einiger Zeit erfolgt die Medikamentenverordnung in den CGM-Programmen mit Hilfe des eigenständigen Programms „ifap-Praxiscenter“. Ich verstehe nicht, warum es einem großen Software-Unternehmen nicht möglich ist, die Daten den einzelnen Tochterfirmen so anzubieten, dass diese sie unter ihrer Programmoberfläche anzeigen können. Der ständige Wechsel zu einer Software mit anderer Oberfläche und Bedienungslogik erzeugt keinen professionellen Eindruck.
  7. Das Bild- und Dokumenten-Management-System MOVIESTAR könnte eigentlich ein Bestandteil von MEDISTAR sein. Ein modernes AIS kann m.E. nicht ohne eine vernünftige Bild- und Dokumentendatenbank bestehen. Die Entwicklung von MOVIESTAR sollte daher in MEDISTAR integriert werden. Das Programm könnte doch wunderbar die Oracle-Datenbank mitnutzen.
  8. MEDISTAR war in früheren Jahren die bevorzugte Software von Ärzten, die ihre Software gern selbst ausbauen und administrieren wollten. Es war durch Anwenderintelligenz oftmals möglich, für individuelle Praxisprobleme eigeständige Lösungen zu finden. In dieser Hinsicht unbedarfte Ärzte kauften MEDISTAR ebenfalls, weil die Computerfreaks auf MEDISTAR standen und bereit waren, ihr Know-how zu teilen. Leider wird dieser Aspekt seit Jahren nicht mehr gefördert. Zum Beispiel sind die neuen graphischen Formularprogramme durch den Anwender nicht mehr veränderbar. Vorstellbar ist aber, dass Anwendern ein Baukastensystem oder ein Skript-Interface für einfache Formularprogramme zur Verfügung gestellt wird. Qt bietet Funktionen, auf die man aufbauen kann. Außerdem müsste interessierten Anwendern mehr Hilfe beim Umgang mit der Oracle-Datenbank zuteilwerden. Alle technischen Dokumente und Anleitungen, die den SPs zur Verfügung gestellt werden, müssten auch von Anwendern von der Webseite heruntergeladen werden können. Mutig wäre auch die Einrichtung eines Anwender-Forums im Internet.
  9. Bereits vor Jahren habe ich vorgeschlagen, eine „IntelliSense“-Funktion (Text- und Kürzel-Ergänzungshilfe) in MEDISTAR einzubauen. Das wurde abgelehnt, weil es schwer zu warten sei. Demnächst wird die neue Firma T2Med genau hiermit als Hauptfeature („Wörterbuch-Funktion“) werben. Diese Funktionalität würde gut zu MEDISTAR passen. Für die bei MEDISTAR vorhandenen Facharztentwickler, wäre es eine passende Aufgabe, den für Ihren Fachbereich spezifischen Wortstamm einzubringen oder zu kontrollieren. Das würde die Bedeutung ihrer Facharztmodule als Bestandteil des ganzen Systems aufwerten.
  10. Als MEDISTAR 4.0 entworfen wurde, hat man sich wegen der Möglichkeit, das Programm auf Linux portieren zu können, für Qt als Framework entschieden. Auch die Oracle-Datenbank steht einem Linux-Einsatz nicht im Weg. Da die CompuGroup bereits ein eigenständiges Linux-Programm pflegt, schlummert hier echtes Synergiepotential. Wobei sich natürlich die Frage stellen würde, ob man Data-Vital-Kunden nicht dazu bewegen könnte, auf „MEDISTAR für Linux“ umzusteigen. Für das Windows-MEDISTAR wäre die gewonnene Zukunftssicherheit ein Wettbewerbsvorteil: Jeder Kunde hätte dich Möglichkeit zu einem beliebigen Zeitpunkt das Betriebssystem zu wechseln. Außerdem käme die von vielen Anwendern gewünschte Anbindung von Open-Office nebenläufig zustande.

Wie man sieht, gibt es so viel Handlungsbedarf, dass das Management der CompuGroup massiv reagieren muss. Falls die Leitung nicht bereit ist, sich für ihre Kunden einzusetzen und weiterhin den Produktmanagern nebensächlicher Addons wie Privadis, Vita-X, iFox, eServices usw. erlaubt, eine vernünftige Priorisierung und Planung zu torpedieren, kann man nicht helfen. Aber es wäre schade, denn MEDISTAR enthält bei aller Kritik immer noch so viele Highlights und Alleinstellungsmerkmale (z.B. Makrofunktionalität, Patientenlisten, -marker, Sofortprüfung).

PS: Liebe CGMler: bitte ruft mich jetzt nicht an, um mir zu sagen, dass ich den Artikel aus dem Netz nehmen soll. Lest ihn stattdessen bitte noch einmal, reicht ihn nach oben weiter und bedankt euch für die Unternehmensberatung. Ich habe nicht gegen MEDISTAR geschrieben, sondern für MEDISTAR! Noch bin ich Mitaktionär.

MEDISTAR einfach neu installieren und Oracle-DB optimieren

Eine Neuinstallation von MEDISTAR-SQL ist relativ einfach. Bei mir funktionierte folgender Workaround:

  1. MEDISTAR-SQL Neuinstallations-DVD bzw. Programm besorgen und installieren. Dabei wird in der Regel nicht die neueste MEDISTAR-Version installiert, was nicht weiter stört.
  2. Anschließend alle Dateien des bisherigen MEDISTAR-Ordners über die Neuinstallation kopieren mit Ausnahme folgender Ordner und Dateien:
    – D:\MEDISTAR\INST\sql.ini
    – D:\MEDISTAR\oradata
  3. Den Export-Dump der bisherigen Installation in die neue Datenbank importieren.

Der wesentliche Punkt ist, dass es meiner bescheidenen Erfahrung nach nicht erforderlich ist, Quartalsupdates nachzuinstallieren, um die Software auf den neuesten Stand zu bringen. Das geschieht einfach durch das Kopieren der Dateien und den Import des aktuellen Dumps.

Nach gelungener Neuinstallation sollte man aber noch einige Einstellungen ändern bzw. optimieren. Um die erforderlichen Befehle nicht jedes Mal von Hand eingeben zu müssen, habe ich ein PowerShell-Skript erstellt, dass man einmalig nach einer Neuinstallation (oder später) auf dem MEDISTAR-Server ausführen sollte. Es mehrmals auszuführen schadet nicht, verändert dann aber nichts mehr.

Das Skript führt mit Hilfe von SQLPlus folgende Änderungen durch:
Die Datenbank wird in den Archivelog Modus gesetzt, um Online-Backups mit RMAN (Oracle Recovery Manager) zu ermöglichen. Als Ablagebereich wird standardmäßig die Flash Recovery Area, kurz FRA, genutzt. Hierfür wird die Archivierung eingeschaltet.
alter database archivelog;
archive log list;

Initialisierungsparameter im SPFILE werden geändert, um die Anzahl möglicher Verbindungen zu erhöhen. Der Default-Wert für PROCESSES ist 100, der für SESSIONS (1.1 * PROCESSES) + 5 und für TRANSACTIONS (1.1 * SESSIONS).
alter system set processes=930 scope=spfile;
alter system set sessions=1028 scope=spfile;
alter system set transactions=1030 scope=spfile;

Der Wert für die Lebensdauer der Passwörter wird korrigiert. Bei Usern sys, system und msuser darf kein Expiry-Date stehen.
alter profile default limit password_life_time unlimited;

Mit Hilfe der RMAN-Konsole erfolgen folgende Änderungen:
Für einen Full-Restore ist ein Controlfile-Backup notwendig. Deshalb wird der Parameter CONTROLFILE AUTOBACKUP auf “ON” gesetzt:
configure controlfile autobackup on;

Durch den Aufruf des ADR Command Interpreters erfolgen nachfolgende Einstellungen:
Alte Logs und Traces im Automatic Diagnostic Repository (ADR) können nach einer bestimmten Zeit automatisch gelöscht werden. Zuständig hierfür sind zwei Paramter SHORTP_POLICY (default 30 Tage, neu: 1 Woche) und LONGP_POLICY (default ein Jahr, neu: 1 Monat). „Purge“ sorgt bei einer länger bestehenden Installation für das sofortige Löschen älterer Dateien.
set control \(SHORTP_POLICY=168\);
set control \(LONGP_POLICY=720\);

Sie können das Skript hier herunterladen: MSPostInstallOptimization.zip
Wie immer geschieht die Anwendung auf eigene Gefahr. Alle MEDISTAR-Tasks sollten zuvor geschlossen werden.

Get last active window resp. all windows in the Alt+Tab list

The Windows API does not provide a simple function to create a list of all top-level windows according to the Alt-Tab list. The EnumWindows function provides many more windows, as most programs have multiple windows. But at most one of them belongs in the Alt-Tab list. To find the right one, you have to go down the owner chain for each window until you find the root owner. If the tested window equals the LastActivePopup it additionally must meet certain criteria to be included in the Alt-Tab list. Thus you can create a list of window handles appearing in the Alt-Tab list and sorted by Z-order.

The following code demonstrates the procedure for C-Sharp. In this example the loop breaks as soon as the last active window is found. exclHwnd may be the handle of the form (this.Handle = ActiveHwnd) that uses the code.

private static ArrayList windowHandles = new ArrayList();
 
public static IntPtr GetLastWinHandle(IntPtr exclHwnd)
{
    IntPtr indexHwnd = IntPtr.Zero;
    IntPtr ownerHwnd = IntPtr.Zero;
    IntPtr foundHwnd = IntPtr.Zero;
    windowHandles.Clear();
    EnumWindows(new EnumWindowsCallback(EnumCallback), 0);
    foreach (int i in windowHandles)
    {
        indexHwnd = new IntPtr(i);
        if (IsWindowVisible(indexHwnd) && indexHwnd != exclHwnd)
        {
            ownerHwnd = indexHwnd;
            do
            {
                ownerHwnd = GetWindow(ownerHwnd, GW_OWNER);
            } while (!IntPtr.Zero.Equals(GetWindow(ownerHwnd, GW_OWNER)));
            ownerHwnd = ownerHwnd != IntPtr.Zero ? ownerHwnd : indexHwnd;
            if (GetLastActivePopup(ownerHwnd) == indexHwnd)
            {
                int es = GetWindowLongPtr(indexHwnd, GWL_EXSTYLE);
 if ((!(((es & Win32andMore.WS_EX_TOOLWINDOW) == Win32andMore.WS_EX_TOOLWINDOW) && ((es & Win32andMore.WS_EX_APPWINDOW) != Win32andMore.WS_EX_APPWINDOW))) && !IsInvisibleWin10BackgroundAppWindow(indexHwnd))
                {
                    foundHwnd = indexHwnd;
                    break;
                }
            }
        }
    }
    return foundHwnd;
}
 
private static bool EnumCallback(int hWnd, int lParam)
{
    windowHandles.Add(hWnd);
    return true;
}
 
private bool IsInvisibleWin10BackgroundAppWindow(IntPtr hWindow)
{
    int cloakedVal;
    int hr = Win32andMore.DwmGetWindowAttribute(hWindow, Win32andMore.DWMWA_CLOAKED, out cloakedVal, sizeof(int));
    if (hr != 0) // returns S_OK (which is zero) on success. Otherwise, it returns an HRESULT error code
    {
         cloakedVal = 0;
    }
    return cloakedVal != 0 ? true : false;
}

Downloads

This demo application shows all window titles in a listview and allows to toggle between the last two windows by tapping the Right Windows Key. Read the „WinCycle.Readme.txt“ if you want to use a different key.

License

This article, along with any associated source code and files, is licensed under the BSD License.

MEDISTAR auf Windows 8.1 bzw. Windows Server 2012 R2

Ein Grund, warum ich hier schon lange nichts mehr geschrieben habe, ist die Beschäftigung mit der Umstellung meiner Praxissoftware auf einen neuen Server Anfang dieses Jahres. Der Hauptrechner ist nach c’t-Anleitung selbst gebaut. Als Betriebssystem habe ich Windows 8.1 gewählt. Das Server-Betriebssystem 2012 R2 hatte ich als Preview probeinstalliert – schien mir aber zu kompliziert und ohne Vorteile für mein kleines Netzwerk.
Um MEDISTAR selbst installieren zu können, habe ich mir das MEDISTAR-Paket für Neuinstallationen besorgt. Dieses hatte den Stand April 2013, so dass ich anschließend alle Updates installieren musste. Erst danach habe ich die vorhandenen Praxisdaten importiert und die ISAM-Dateien rüber kopiert. Das ging alles weitgehend problemlos. Professionelle Hilfe habe ich für die Geräteanbindung des automatischen Scheitelbrechwertmessers über eine serielle Schnittstelle benötigt. Gut dass die Schnittstelle ausstirbt. Sehr nervig ist und war auch die Druckereinrichtung an den einzelnen Arbeitsplätzen, an denen es zu Änderungen gekommen ist. Mittlerweile läuft alles rund. Gut funktioniert auch die automatische Anruferzuordnung in MEDISTAR in Zusammenarbeit mit der neuen Fritz!Box.
Leider funktioniert auch nach dem März-Update immer noch nicht die zum Online-Terminkalender gehörende Software. Die Vita-X-Clients auf den Arbeitsplätzen finden den Server nicht, obwohl auf diesem der Vita-X-Dienst regelrecht läuft. Merkwürdigerweise funktioniert dies aber nach einer Neuinstallation des Dienstes solange bis der Server neu gestartet wird. Mein Workaround sieht nun so aus, das das PowerShell-Sicherungsskript, welches den Server herunterfährt, zuvor den Dienst deinstalliert. Bei einem Neustart des Rechners installiere ich den Dienst durch ein Skript automatisch neu, bevor MEDISTAR vom gleichen Skript gestartet wird.