Ich habe nun ein Performance-Test-Script auf Python Basis geschrieben, das mir aus einem CSV immer acht gleiche Patienten (ein Paar einfache und mittlere Patienten, auch mal ein richtig kranker mit vielen Einträgen, siehe rote Linie) per ID liest, diese automatisiert in Tomedo aufruft und dann jeweils die Medikamentenliste öffnet. Es werden dabei die Ladezeiten bis die Kartei des Patienten komplett geladen wurde sowie die Zeit bis die Medikamentenliste geladen wurde gemessen.
Testaufbau:
Ich habe die lokale Datenbank zu Beginn manuell einmalig gelöscht und das Skript anschliessend einmalig durchlaufen lassen, damit alle Patienten in den lokalen Cache geladen wurden. Nach 19 Durchgängen habe ich dies dann nochmals gemacht, um den 20. Durchgang zu messen.
Hier nun meine Ergebnisse nach 20 Durchgängen von immer den acht identischen Patienten. Alle Test liefen jeweils im Abstand von rund 1 Minute bei geschlossener Praxis auf einem MacBook Pro M4 mit 64 GB RAM. Es wurde immer die gleiche Reihenfolge der Patienten-IDs verwendet (siehe Legende).
Ergebnisse:

Man sieht über die Zeit eine deutliche Zunahme der Kartei-Ladezeiten, obwohl die Patienten bereits in der lokalen Datenbank vorhanden sind. Sehr schön zu sehen ist der massive Abfall aller Ladezeiten, wenn die lokale Datenbank gelöscht wurde.

Das gleiche ist zu sehen, wenn man dann bei den Patienten nach dem Aufrufen der Kartei anschliessend die Medikamentenliste öffnet. Auch hier wird die Performance immer schlechter über die Zeit. Ebenfalls ist eine deutliche Verbesserung der Ladezeiten zu sehen, wenn die lokale Datenbank gelöscht wurde.
Diskussion:
Wenn man sich nun die Trends der Ladezeiten anschaut, so wächst nach nur 19 Aufrufen der acht immer gleichen Patienten die Ladezeit der Kartei exponentiell und die der Medikamentenliste linear an. Alleine bei der Medikamentenliste ist es ein Zuwachs von durchschnittlich gut 2 Sekunden pro 20 Aufrufe. Ein Datenbankreset bewirkt erhebliche Besserung.
Wenn wir dies nun auf unsere über 250 Patientenaufrufe pro Tag pro Empfangsarbeitsplatz hochrechnen, dann ist recht einfach zu sehen, warum man spätestens zur Mittagspause die lokale DB wieder löschen muss, damit man nicht stundenlang den Beachball anstarren muss und die Stimmung in den Keller sinkt...
Ich hoffe, hiermit konnte ich nun klar zeigen, dass es NICHT am Server, RAM, Client, einem komischen Connector oder Virenscanner oder was auch sonst noch als Ursache genannt wurde, liegt.
Fazit:
Der Ball liegt nun bei den Entwicklern, die sich der Sache dringend annehmen sollten, denn Tomedo ist super, aber sollte auch weiterhin Spass und nicht Frust beim Arbeiten machen!
PS: Wer Interesse hat, dem gebe ich gerne den Python-Code zum selber Testen :-)