TheraPi 2 ownCloud: Übertragung der Termine aus der Thera-Pi Datenbank in die ownCloud Datenbank. Ziel dieser Datenbankerweiterung ist es, die Termine, die in Thera-Pi eingetragen werden, über mobile Geräte (iPhone, iPad, Android-Geräte) oder einen Web-Browser abrufen zu können. So kann jeder Therapeut kurzfristige Änderungen seiner Termine erkennen ohne dass er dafür einen PC mit Thera-Pi benötigt. Hinweis: ownCloud ist ein frei verfügbares System, das Dateien, Termine und Kontakte (und mehr) verwaltet und über verschiedene Schnittstellen (Web-Browser, CalDav, CardDav, ownCloud-App) zugänglich macht. Ich verwende nur die Termin-Funktionen, die über eine calDav-Schnittstelle bereitgestellt werden und so mit mobilen Geräten oder z.B. dem Lightning Kalender (in Thunderbird) verwendet werden können. Einschränkungen und Voraussetzungen Da diese Erweiterung ausschließlich auf Datenbankebene arbeitet, muss sowohl Thera-Pi als auch ownCloud mit einer MySQL Datenbank eingerichtet sein. Außerdem müssen beide Datenbanken auf demselben Server installiert sein, damit die direkte Übertragung aus einer DB in die andere möglich ist. Schließlich, damit die mobilen Geräte ihre Daten regelmäßig aktualisieren können, muss der Server auf dem beide Datenbanken installiert sind öffentlich sichtbar (also über das Internet erreichbar) sein (z.B. ein virtueller Server bei einem Internet-Provider oder eine DynDNS-Registrierung). ACHTUNG - Wichtig: Die Synchronisierung findet nur in eine Richtung statt, also von Thera-Pi zur ownCloud. Eine Übertragung zurück, von ownCloud nach Thera-Pi ist wegen der Struktur des Thera-Pi Terminkalenders nicht ohne weiteres möglich und ist deshalb zur Zeit nicht geplant. nochmal ACHTUNG: In den ownCloud Kalender können zwar beliebige Termine von Hand eingetragen oder geändert werden, diese Änderungen werden aber nie in Thera-Pi ankommen! Nun endlich zur Installation:

Da für diese Funktion keine Programmänderungen in Thera-Pi durchgeführt werden, muss leider einiges direkt in den Datenbanken "herumgeschraubt" werden. Wer sich damit nicht auskennt, frage am besten einen solchen (oder die Gelben Seiten ;-) ).

I) - Installation von ownCloud Vor der Installation von ownCloud muss auf dem Thera-Pi Server eine Datenbank angelegt werden. Für diese Datenbank sollte unbedingt derselbe Zeichensatz udn dieselbe Sortierung ("character set and collation") verwendet werden, wie auf der Thera-Pi Datenbank, andernfalls kann es bei der Übertragung von Terminen zu Fehlern kommen ("Illegal mix of collations"). Auf dem installierten ownCloud-System können jetzt Benutzer und Kalender nach belieben angelegt und verwendet werden. Die Verbindung von der ownCloud zu den Mobilen Geräten kann jetzt auch schon hergestellt werden (doch dazu später mehr). Als erstes sollte jetzt das Script für die ownCloud Datenbank ausgeführt werden. Dazu muss eine Verbindung zur ownCloud Datenbank geöffnet werden, z.B. mit phpMyAdmin in einem Browser. ... für die folgende Beschreibng gehe ich mal von phpMyAdmin aus ... II) - Installation der Erweiterung in ownCloud nach Auswahl der ownCloud Datenbank klicke auf "Importieren" - einer der "Reiter" am oberen Bildrand. Öffne mit Auswählen die zuvor heruntergeladene Datei "TheraPi 2 ownCloud (db ownCloud).sql" und starte das Script mit "OK". Normalerweise sollte dann am oberen Bildrand etwas stehen wie "Der Import wurde erfolgreich abgeschlossen, 2 Abfragen wurden ausgeführt. (TheraPi 2 ownCloud (db ownCloud).sql)". III) - Installation der Erweiterung in Thera-Pi Bevor jetzt die Trigger und Prozeduren in die Thera-Pi Datenbank eingestellt werden können, muss in der Script-Datei noch eine Änderung eingetragen werden. Öffne dazu die Datei "TheraPi 2 ownCloud (db THeraPi).sql" mit einem Texteditor (z.B. Notepad) und suche nach dem Text "" (3x vorhanden). Hier muss der echte Name der ownCloud-Datenbank eingetragen werden (auch die spitzen Klammern sind zu ersetzen, also z.B. MeineOwnCloudDB.tp_del_cloud_termin(...) ). Die Datei wieder Speichern und den Editor schießen. Nun muss (am besten im selben MySQL-Verwaltungsprogramm) die Verbindung zur Thera-Pi Datenbank hergestellt werden. Dort auf dieselbe Weise (Import, Datei wählen...) die Scriptdatei für die Thera-Pi Datenbank ausführen. Wenn alles gut läuft, erscheint das Erebnis "Der Import wurde erfolgreich abgeschlossen, 21 Abfragen wurden ausgeführt. (t2ot.sql)" Die TheraPi Datenbank enthält nun - zwei neue Tabellen: tp_termin und tp_2_owncloud. - drei neue Prozeduren: tp_set_termin, tp_force_set_termin und tp_Termine_Neu - fünf neue Trigger: bu_set_termin, tp_termin_ID, trg_Termin2Cloud_AfterDel, trg_Termin2Cloud_AfterIns und trg_Termin2Cloud_AfterUpd IV) - Eingabe der Einrichtungsdaten in die neuen Tabellen. Damit die Trigger wissen, in welche Kalender die Termine übertragen werden sollen, muss noch die manuelle Zuordnung der Behandler zu den ownCloud Kalendern erfolgen. Für jeden Behandler, der das System nutzt muss in ownCloud ein Kalender eingerichtet werden. Dabei können entweder alle Behandler mit derselben ownCloud Anmeldung arbeiten (eine Anmeldung, viele Kalender - Tipp: Der Kalender wird nach dem Behandler benannt), oder für jeden Behandler kann eine eigene Anmeldung mit je einem Kalender erzeugt werden. Beim Erzeugen erhält jeder Kalender eine eigene ID (fortlaufende Nummer). Diese muss für jeden Kalender notiert werden: im MySQL-Verwaltungsprogramm die ownCloud Datenbank öffnen und dort die Tabelle oc_clndr_calendars (anklicken in der Tabellenliste am linken Rand). In der Kalenderliste sind für uns nur drei Spalten wichtig: - "userid" - der Name des angemeldeten Benutzers in ownCloud - "displayname" - der Name des angelegten Kalenders in ownCloud - "id" - die Nummer des Kalenders. Diese ID brauchen wir, um die Verbindung in TheraPi einzurichten. Wechsle nun in die Thera-Pi Datenbank und öffne die Tabelle tp_2_ownCloud (anklicken in der Tabellenliste am linken Rand). Wenn alles richtig gelaufen ist, enthält diese Tabelle bereits für jeden Behandler einen Datensatz mit "BehandlerNr" - die Behandler-Nummer in Thera-Pi (im Feld "KALZEILE") "BehandlerName" - der Matchcode des Behandlers. Wird nur zum leichteren Wiederfinden verwendet. Für jeden Behandler, der die ownCloud Funktionen nutzen soll, muss jetzt die ID seines Kalenders in diese Tabelle eingesetzt werden. Klick dazu auf den "Bearbeiten" Link am Anfang der Zeile und ergänze die Daten. "KalenderID" - die soeben für den Behandler gefundene Kalendernummer in ownCloud "KalenderName" - Beliebige Bezeichnung zur wiedererkennung des Kalenders (z.B. ownCloud-User.Kaldender-Display-Name). "sync_days_back" und "sync_days_fwd" - siehe unten. Um den ownCloud Kalender mit Daten zu füllen kann jetzt die Prozedur "tp_Termine_Neu" verwendet werden. Diese verlangt die Behandlernummer (Kalzeile) als Parameter. Dann löscht sie zuerst alle Termineinträge dieses Behandlers (natürlich nur aus dem ownCloud-Kalender, NICHT in TheraPi!). Dann werden alle Termine im Zeitraum ()heute - sync_days_back) <= heute <= (heute + sync_days_fwd) für diesen Behandler neu eingetragen. Synchronisierung der Termine mit mobilen Geräten Auf iOs-Geräten ist die calDAV-Verbindung bereits vorhanden. Es muss lediglich ein neues Konto vom typ calDAV angelegt werden. Die Verbindungsdaten findet man am besten, indem man sich mit einem Web-Browser in der ownCloud anmeldet und den Kalender aufruft. In den Kalendereinstellungen (das Zahnrad rechts oben) ist die URL für die Einrichtung angegeben. Auf Android-Geräten hat man leider das Problem, dass Google offensichtlich so versessen auf jedermanns Termindaten ist, dass im Android keine calDav-Verbindung vorinstalliert ist. Es gibt aber ein paar calDAV-Connector Apps im Google Play Store. Gute Erfahrungen habe ich mit CalDAV-Sync von Marten Gajda gemacht, das aber leider Geld kostet (2,59€ je Gerät). Es wird ein neues Konto angelegt mit dem Typ calDAV. Diese beiden Lösungen (calDAV auf iOs oder Android) haben den Vorteil, dass die Termine nahtlos in den Kalender des Gerätes übernommen werden. Will man aber nur ab und zu die Termine kontrollieren, so geht das auch über die Webseiten von ownCloud. Funktionsweise: Bei jeder Terminänderung in der Thera-Pi Tabelle "flexkc" führt der Trigger "bu_set_termin" die Prozedur "tp_set_termin" für jeden Termineintrag eines Tages aus. Die Prozedur tp_set_termin erzeugt, aktualisiert oder löscht einen Datensatz in der Tabelle "tp_termin". Wenn die Terminart (Feld N) "@Frei" ist, oder der Titel des Termins leer (""), wird ein evtl. vorhandener Termin gelöscht. Andernfalls wird geprüft, ob bereits ein Termin für den Tag, den Behandler und die Termin-Nummer (aus flexkc, 1 bis 60) vorhanden ist. Wenn ja, wird der vorhandene Termin angepasst, wenn nicht, wird ein neuer Termin eingefügt. Zusätzlich versucht die Prozedur, aus der Terminart (Feld N) das Rezept für den Termin zu ermitteln und darus die Telefonnummer des Patienten. Diese wird, wenn vorhanden als "Ort" eingetragen. Die Tabelle tp_set_termin enthält ein weiters Feld "Beschreibung", das zur Zeit nicht gefüllt wird. Es wird aber bei jeder Änderung als Terminbeschreibung an die ownCloud-Datenbank übertragen. Die Tabelle tp_termin enthält wiederum drei Trigger: Einfügen, Ändern, Löschen. Alle Trigger prüfen zuerst, ob es für den Behandler, dessen Termin geändert wurde eine gültige Kalenderzuordnung gibt: Wenn in der Tabelle tp_2_ownCloud eine Kalendernummer für den Behandler eingetragen ist, wird eine Prozedur in der ownCloud-Datenbank aufgerufen. Bei Einfügen und Ändern wird für den geänderten Termin die Prozedur "tp_set_cloud_termin" in der OwnCloud-Datenbank ausgeführt. Wurde ein Termin gelöscht, wird die Prozedur "tp_del_cloud_termin" in der OwnCloud-Datenbank ausgeführt. Weitere Planung / Ideen Als nächste kleine Erweiterung sollen die Trigger der tp_Termin Tabelle erweitert werden, so dass alle Termine, die ein "Verfallsdatum" erreicht haben (z.B. seit zwei Wochen vergangen) automatisch wieder gelöscht werden. Da alle Termine weiterhin in der flexkc Tabelle vorhanden sind, dürfen sie hier (in tp_termin) ohne weiteres gelöscht werden, und durch die Weitergabe an ownCloud wird das Übertragungsvolumen für die Synchronisation vermindert.