Update auf Ungrad 2018

Das Update auf Elexis Ungrad2018 (kompatibel mit Elexis 3.4) ist zwingend, wegen neuer Zahlunsinformations-Strukturen und der neuen Tarmed-Version. Beides wird nicht für ältere Versionen verfügbar sein. Ungrad2016 wird nicht mehr unterstützt und nicht mehr weiterentwickelt.

Das Vorgehen ist für Standard-Elexis und Elexis Ungrad dasselbe:

Falls Sie von einer Version vor 3.1 aus upgraden, ist es unbedingt empfehlenswert, zunächst auf Elexis 3.1 oder Elexis Ungrad upzudaten.

Beachten Sie bitte auch Niklaus Gigers Notizen zum Update-Prozess: https://wiki.elexis.info/Release-Notes-3.4.0#Elexis_OpenSource_3.4.0_neu_installieren

1. Backup erstellen.

Machen Sie unbedingt als erstes ein Backup Ihrer Elexis-Datenbank und mindestens eines Ihrer Elexis-Clients. Prüfen Sie, ob das Backup funktioniert. Sie können nachher nicht mehr ohne Weiteres zurück, wenn Sie kein Backup zur Hand haben!

2. Datenbank isolieren

Achten Sie darauf, dass ALLE Elexis-Instanzen, die mit der Datenbank verbunden sind oder sein könnten geschlossen sind. Das gilt auch für allfällige Fernzugriffs-Stationen.

3. Datenbank vorbereiten (MySQL/MariaDB)

Leider wird Gross/Kleinscheibung bei Tabellennamen in den Update-Scripts und dem Programmcode nicht immer konsequent durchgehalten. Vermutlich arbeiten die Hauptentwickler mit Computern, bei denen nicht zwischen Gross/Kleinschreibung unterschieden wird. Wenn Sie Linux oder ein Mac-Dateisystem mit Gross/Kleinschreibung verwenden, kann das zu subtilen Fehlern beim Datenbankupdate führen.

Ich empfehle, den Linux-Server so einzustellen, dass er alle Datenbankoperationen grundsätzlich auf kleingeschriebenen Tabellen ausführt. Das geht in zwei Schritten:

  1. Umbenennung aller Tabellen in reine Kleinschreibung

  2. Fügen Sie in /etc/mysql/my.cnf bzw. /etc/mysql/mysql.conf.d/mysqld.cnf unter dem Abschnitt [mysqld] folgende Zeile ein: lower_case_table_names=1

  3. Starten Sie den Server neu: sudo systemctl restart mysql

4. Datenbank update

Zwar führt Elexis beim Start automatisch ein Datenbankupdate durch, aber die Fehlermeldungen rauschen dann so schnell vorbei, dass Sie sie nicht mitkriegen werden. Ausserdem können Fehler bei einem Schritt zu schwer auffindbaren Folgefehlern bei weiteren Schritten führen. Ich empfehle daher für dieses Update ausnahmnsweise den etwas mühsameren Weg, die Datenbank selbst auf den neuesten Stand zu bringen.

  • Finden Sie die Version Ihrer Datenbank heraus: SELECT wert from config where param=‘dbversion’;

  • Laden Sie die Datei ch.elexis.core.data/src/ch/elexis/core/data/util/DBUpdate.java in einen Editor und suchen Sie die erste neuere Version auf. Führen Sie dann die entsprechenden Änderungen manuell in einer mysql Konsole aus. Ich zeige hier den Update von dbversion 3.2.1 aus:

alter table reminders add priority char(1);
alter table reminders add actionType char(2);
alter table reminders add subject varchar(160);
  • Die späteren Updates sind in separate Scripts ausgelagert, welche sich in ch.elexis.core.data/rsc/dbScripts befinden.

Ich empfehle Ihnen, in jedem Script Schritt für Schritt jede Anweisung einzeln per copy/paste in die mysql Konsole einzufügen, und auf Fehlermeldungen zu achten. Im Fall von Fehlermeldungen müssen Sie überprüfen, ob die Tabelle wirklich so aussieht, wie sie vom Script erwartet wird und ggf. manuell anpassen.

Es sind dies:

3_2_4_mysql.sql, 3_2_5_mysql.sql, 3_2_6_mysql.sql

Beim nächsten, 3_2-7_mysql.sql, war bei mir eine manuelle Änderung nötig, damit es fehlerfrei durch lief:

CREATE TABLE ZUSATZADRESSE (
	ID              VARCHAR(41) NOT NULL,
 	LASTUPDATE BIGINT DEFAULT NULL,
  	DELETED CHAR(1) DEFAULT '0',
	Kontakt_ID VARCHAR(25) NOT NULL,
	STRASSE1 VARCHAR(255),
	STRASSE2 VARCHAR(255),
	PLZ VARCHAR(6),		
	ORT VARCHAR(255),
	LAND CHAR(3),			
	TYP CHAR(4) DEFAULT '0',
	Anschrift TEXT,
	PRIMARY KEY (ID)
);

Dann 3_4_0.sql, 3_4_1_mysql.sql, ch.elexis.data.Role.sql, ch.elexis.data.User.sql, ch.elexis.data.views.InvoiceBillState.sql

  • Wenn das alles geklappt hat, müssen Sie die Versionsangaben manuell anpassen:
update config set wert='3.4.1' where param='dbversion';
update config set wert='3.4.0' where param='ElexisVersion';

Überprüfen Sie dann, ob die beim Update erstellten Foreign Keys wirklich korrekt angekommen Sind (Ein Fehlen kann zu spät bemerkten und schwer auffindbaren Fehlern führen, wenn der Programmcode sich darauf verlässt, dass sie vorhanden sind)

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME  FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA IS NOT NULL;


+--------------+------------------+-------------+-----------------------------------+
| TABLE_SCHEMA | TABLE_NAME       | COLUMN_NAME | CONSTRAINT_NAME                   |
+--------------+------------------+-------------+-----------------------------------+
| elexis       | bestellung_entry | BESTELLUNG  | FK_BESTELLUNG_ENTRY_BESTELLUNG_ID |
| elexis       | stock_entry      | STOCK       | FK_STOCK_ENTRY_STOCK_ID           |
| elexis       | zusatzadresse    | Kontakt_ID  | FK_ZUSATZADRESSE_KONTAKT_ID       |
+--------------+------------------+-------------+-----------------------------------+
3 rows in set (0.03 sec)

Troubleshoot

Wenn Sie ein “alter” Elexiker sind (und davon gehe ich aus, wenn Sie das hier manuell machen :-)), dann entspricht Ihre Datenbank möglicherweise nicht der, die von den Updatescripts erwartet wird. Wenn es verständliche Fehlermeldungen gibt, kann man es leicht korrigieren. Aber bei den Foreign Key-Anweisungen gibt es meist unverständliche Fehlermeldungen wie

ERROR 1005 (HY000): Can't create table `elexis`.`#sql-5c5_6` (errno: 150 "Foreign key constraint is incorrectly formed")

Geben Sie dann show warnings; ein, das wird den Fehler etwas eingrenzen. Oft wird die Tabellenspalte, die als Foreign Key deklariert wird, nicht exakt gleich sein, wie die entsprechende Spalte in der Zieltabelle. Sie muss in Datentyp, Länge und Zeichensatz identisch sein.

Den Zeichensatz einer Spalte können Sie so herausfinden:

select character_set_name from information_schema.`COLUMNS` where table_schema="elexis" and table_name="bestellungen" and column_name="id";

Ändern können Sie den Zeichensatz wie folgt:

alter table bestellungen modify column id varchar(80) character set utf8mb4;

5. Elexis starten

Erst jetzt “dürfen” Sie Elexis 3.4 das erste Mal starten. Laden Sie die für Ihr Betriebssystem passende Version hier herunter:

Wenn Sie schon eine frühere Elexis-Version auf diesem Computer laufen hatten, wird es sich automatisch verbinden. Bei der ersten Verbindung wird es einige weitere Updates der Datenbank geben.

Achtung: Falls Sie einen Login-Namen mit Gross/Kleinschreibung haben, müssen Sie das jetzt beim ersten Login genau so eingeben.

Gehen Sie dann auf Hilfe/Neue Software installieren, und wählen Sie

  • Bei Elexis Ungrad:
  • Bei Elexis Classic: “Elexis 3 base aus Zweig 3.4”

als Installationsquelle. Installieren Sie alle benötigten Plugins (Im Minimum benötigen Sie, falls Sie eine Arztpraxis in der Schweiz betreiben, das “Elexis Swiss OpenSource Feature” aus der Gruppe “Basispakete”) und starten Sie Elexis neu.

6. Tarmed importieren

Per 1.1.2018 gibt es zwei verschiedene Tarmed-Varianten:

  • Für UVG, IV und MV Fälle den bisherigen Tarif 1.08BR (Dies voraussichtlich bis 31.3.2018)

  • Für KVG Fälle den neuen Tarif 1.09BR.

Starten Sie Elexis, öffnen Sie die codes-Perspektive, dort den Tarmed-Reiter und das Import-Menü. Importieren Sie zuerst den UVG/MV/IV Code, lassen Sie “Gesetz des Datensatzes” leer, markieren Sie aber “Alle ID Einträge neu schreiben”. Importieren Sie und starten Sie dann Elexis neu.

Importieren Sie jetzt den KVG Code, geben Sie diesmal bei “Gesetz des Datensatzes” KVG an und lassen Sie “Alle ID Einträge neu schreiben” leer. Starten Sie anschliessend Elexis neu.

7. Artikelstamm importieren.

Besorgen Sie sich die neueste Version des Artikelstamms von https://artikelstamm.elexis.info/v5/

Gehen Sie auf die Artikel-Perspektive und dort auf den Reiter “Artikel”. Öffnen Sie das Import-Menü und importieren Sie den eben heruntergeladenen Stamm.

Starten Sie Elexis dann neu

8. Tarif verwenden und Blöcke anpassen

Zum Verrechnen müssen Sie je nach Falltyp die korrekten Varianten des Tarmed verwenden. Auch vorhandene Blöcke müssen entsprechend angepasst werden, eventuell brauchen Sie zwei Varianten für UVG und KVG Fälle. Im Moment gibt es noch keine automatische Lösung, und auch das Umrechnen einer Konsultation von KVG auf UVG und umgekehrt kann leider nicht mehr ohne Weiteres automatisch erfolgen. Solange nicht klar ist, wie der UVG Tarif ab 1.4.2018 aussehen wird, macht es auch nicht viel Sinn, hier viel Arbeit zu investieren.