Skip to content

Latest commit

 

History

History
193 lines (131 loc) · 20.5 KB

Client.adoc

File metadata and controls

193 lines (131 loc) · 20.5 KB
logo

TI-Messenger-Client

1. Überblick

Im Kontext des TI-Messenger-Dienstes wird zwischen den folgenden Ausprägungen des TI-Messenger-Clients unterschieden:

  • TI-Messenger-Clients für Akteure und

  • TI-Messenger-Clients mit Administrationfunktionen.

Beide Arten von Clients basieren auf dem offenen Kommunikationsprotokoll Matrix und werden auf dem Endgerät eines Akteurs verwendet. In der folgenden Dokumentation werden die zwei Ausprägungen der Clients beschrieben.

Die Seite ergänzt die Spezifikation gemäß [gemSpec_TI-Messenger-Client], die als Grundlage für das Verständnis vorrausgesetzt wird.

2. TI-Messenger-Client für Akteure

Der TI-Messenger-Client für Akteure unterstützt die meisten aller, durch die Matrix-Spezifikation festgelegten Funktionalitäten eines Matrix-Messengers und weitere durch die gematik definierten Vorgaben. Die Funktionalität des TI-Messenger-Clients für Akteure kann in drei abstrakte Module unterteilt werden. In der folgenden Abbildung wird dies verdeutlicht.

I Client

2.1. Abstrakte Module

2.1.1. TI-Messenger Modul

Über das TI-Messenger Modul werden alle Funktionalitäten, die zur Ad-Hoc Kommunikation benötigt werden sowie der Administration der Freigabeliste eines Akteurs, durchgeführt. Hierfür werden am Messenger-Proxy zwei APIs vom TI-Messenger Modul des TI-Messenger-Clients angesprochen. Der TI-Messenger-Client kommuniziert mit dem Messenger-Proxy eines Messenger-Services über die [Matrix - Client-Server API], um Matrix-Events an den zuständigen Matrix-Homeserver auszutauschen. Für die Administration der Freigabeliste kommuniziert das TI-Messenger Modul mit der Schnittstelle I_TiMessengerContactManagement des Messenger-Proxy.

ℹ️
Der Aufruf der vom Matrix-Homeserver angebotenen Schnittstellen der [Matrix - Client-Server API] erfolgt immer über den Messenger-Proxy.

In den folgenden Kapiteln werden die vom TI-Messenger Modul zu verwendenen Schnittstellen sowie die vom TI-Messenger-Client bereitzustellenden Funktionen beschrieben.

2.1.1.1. Matrix - Client-Server API

Der Matrix-Homeserver muss die REST-Schnittstellen gemäß der Matrix [Client-Server API] für den TI-Messenger-Client zur Verfügung stellen. Diese müssen für die TI-Messenger-Clients aus dem Internet angeboten werden. Für die Verarbeitung der Matrix-Events muss der TI-Messenger-Client die in der [Matrix-Client-Server API] clientspezifischen Verhaltensweisen implementieren. Diese sind in der API mit dem Keyword behaviour gekennzeichnet. Unter folgendem Link ist ein Beispiel dargestellt.

Für ein Überblick und für Testzwecke der REST-Schnittstellen der [Matrix-Client-Server API] kann der von der Matrix Foundation bereitgestellte API Playground verwendet werden.

🔥
Der Playground bildet immer die aktuellste Version der Matrix-Spezifikation ab und stimmt somit ggf. nicht mit der aktuell von der gematik geforderten Version der Matrix-API überein.

Im Rahmen der Verwendung des Matrix-Protokolls im deutschen Gesundheitswesen ist es notwendig, dies um zusätzliche Vorgaben zu erweitern. Hierzu trifft die gematik die folgenden weiteren Festlegungen zum Umgang mit dem Matrix-Protokoll.

2.1.1.1.1. CreateRoom

Beim Anlegen eines Raumes über den /_matrix/client/v3/createRoom Endpunkt (siehe: createRoom) über die [Client-Server-API] ist darauf zu achten, dass im invite-Feld maximal eine Matrix-ID (MXID) eines einzuladenden Akteurs angegeben werden darf. Die Vorgabe muss eingehalten werden, damit diese bei der Proxy Berechtigungsprüfung validiert werden kann.

2.1.1.1.2. Custom Room Types

Das Matrix-Protokoll erlaubt während der Erstellung eines Chatraumes einen eigene Raumtyp (Custom Room Type) für diesen mit Hilfe einer Typinitialisierung im /createRoom-Endpunkt zu definieren, um spezielle Raumeigenschaften (Room State Events) für diesen Custom Room Type zu verwenden. Die gematik definiert für föderierte und fallbezogene Kommunikation die folgenden Raumtypen.

  • de.gematik.tim.roomtype.default.v1

  • de.gematik.tim.room.casereference.v1

Es ist vorgesehen den Raumtyp de.gematik.tim.roomtype.default.v1 für alle föderierten Kommunikation beim Anlegen entsprechend zu setzen. Der Raumtyp de.gematik.tim.room.casereference.v1 ist für die spätere Verwendung im Context von Fallbezogenen Kommunikationen vorgesehen.

💡
Weitere Informationen mit den Umgang der Raumtypen können in [gemSpec_Ti-Messenger-Client#5.4.17] und [gemSpec_Ti-Messenger-Client#5.4.16] nachgelesen werden.
ℹ️
In der veröffentlichten und zulassungsrelevanten Spezifikationsversion v1.1.1 wird die produktive Verwendung der Custom Room Types aktuell nicht gefordert, da die notwendigen Vorbedingungen für den produktiven Einsatz seitens des Matrix-Protokolls noch nicht vollständig erfüllt sind.
2.1.1.1.3. Custom State Events

Das Matrix-Protokoll erlaubt die Eigenschaften eines Chatraumes mit State Events zu erweitern bzw. zu ändern. Typische State Events, die ein Room State definieren und die durch das Matrix-Protokoll definiert sind, sind zum Beispiel m.room.name oder m.room.topic. Das Matrix-Protokoll erlaubt auch benutzerdefinierte State Events (Custom State Events) zu verwenden. In der vorliegenden Dokumentation werden bereits erste Custom Room Types sowie Custom State Events mit von der gematik definierten Event Types und Event Content definiert.

  • de.gematik.tim.room.name

  • de.gematik.tim.room.topic

  • de.gematik.tim.room.default.v1

  • de.gematik.tim.room.casereference.v1

Für die fallbezogene Kommunikation sind die beiden Custom State Events de.gematik.tim.room.name und de.gematik.tim.room.topic vorgesehen, um eine verschlüsselte Abbildung der beiden Standardfelder m.room.name und m.room.topic zu realisieren, da in dieser spezifischen Kommunikation hohe Datenschutzanforderungen bestehen. Im Kontext der fallbezogenen Kommunikation ist es notwendig, zusätzliche patientenbezogene Informationen bereitzustellen. Hierfür ist das Custom State Event de.gematik.tim.room.casereference.v1 vorgesehen, um in diesem den folgenden FHIR-Datensatz zu hinterlegen.

Das Custom State Event de.gematik.tim.room.default.v1 ist vorgesehen, um verschlüsselte Information im Kontext von föderierter und intersektoraler Kommunikation zu ermöglichen. In diesem Fall sind die Informationen zu "Name" und "Topic" des Raumes ebenfalls über die Events de.gematik.tim.room.topic und de.gematik.tim.room.name abzubilden.

💡
Weitere Informationen zu den Custom State Events können in [gemSpec_Ti-Messenger-Client]#5.4.17 und [gemSpec_Ti-Messenger-Client#5.4.16] nachgelesen werden.
ℹ️
In der veröffentlichten und zulassungsrelevanten Spezifikationsversion v1.1.1 wird die produktive Verwendung der Custom State Events aktuell nicht gefordert, da die notwendigen Vorbedingungen für den produktiven Einsatz seitens des Matrix-Protokolls noch nicht vollständig erfüllt sind.
2.1.1.2. I_TiMessengerContactManagement

Über die vom Messenger-Proxy bereitgestellte Schnittstelle I_TiMessengerContactManagement wird die für einen Akteur im Proxy vorgehaltene Freigabeliste administriert. Die Freigabeliste wird bei der Einladung von Akteuren außerhalb einer Organisation benötigt, wenn zwei Akteure ihre Kontaktdaten mittels QR-Scan austauschen möchten. Weitere Informationen zu der Schittstelle sind hier zu finden.

2.1.2. VZD-FHIR-Directory Modul

Über das VZD-FHIR-Directory Modul wird die Suche und die Pflege von Einträgen im FHIR-Directory ermöglicht. Hier werden die folgenden Endpunkte der Teilkomponenten Auth-Services und FHIR-Proxy des VZD-FHIR-Directory vom VZD-FHIR-Directory Modul des TI-Messenger-Clients angesprochen:

  • Auth-Service

    • /tim-authenticate

    • /owner-authenticate

  • FHIR-Proxy

    • /search

    • /owner

Für den Aufruf der beiden Endpunkte /search und /owner am FHIR-Proxy für die Suche und Pflege von Einträgen werden Zugriffstoken benötigt, um die Berechtigung für den Zugriff nachzuweisen. Daher muss der TI-Messenger-Client zuvor am Auth-Service des VZD-FHIR-Directory die notwendigen Token anfragen. Im folgenden werden die Aufrufe der Endpunkte weiter beschrieben.

2.1.2.1. Auth-Service

Der Auth-Service des VZD-FHIR-Directory bietet die zwei Endpunkte an, die die beiden Zugriffstoken (search-accesstoken und owner-accesstoken) ausstellen. Die zwei Endpunkte werden in den folgenden Kapiteln weiter beschrieben.

2.1.2.1.1. /tim-authenticate

Für den Zugriff auf die Suchfunktionalität von FHIR-Ressourcen (/search-Endpunkt) authentisiert sich der TI-Messenger-Client gegenüber dem VZD-FHIR-Directory mit einem 3rd-Party-Token (Matrix-OpenID Token), das er von seinem Matrix-Homeserver anfordern kann (siehe Matrix OpenID Token). Dieses 3rd-Party-Token benötigt der TI-Messenger-Client, um es beim /tim-authenticate-Endpunkt des VZD-FHIR-Directory gegen ein search-accesstoken einzutauschen. Bei Aufruf des Endpunktes /tim-authenticate ist es erforderlich, das 3rd-Party-Token (Matrix-OpenID-Token) im Header sowie die URL des Matrix-Homeservers im Parameter MXID zu übergeben. Der Aufruf des /tim-authenticate-Endpunktes ist hier beschrieben.

2.1.2.1.2. /owner-authenticate

Für die Pflege von FHIR-Ressourcen (/owner-Endpunkt) authentisiert sich der TI-Messenger-Client gegenüber dem VZD-FHIR-Directory, um ein owner-accesstoken vom Auth-Service zu erhalten. Hierbei gibt es zwei Fälle:

  1. Ein Nutzer in der Rolle User-HBA möchte seinen eigenen Practitioner-Datensatz im VZD-FHIR-Directory ändern. Hierzu authentisiert er sich mittels Smartcard (HBA) gegen den von der gematik bereitgestellten zentralen IDP-Dienst. Für die Interaktion zwischen Smartcard und dem zentralen IDP-Dienst ist der gematik Authenticator vorgesehen. Es können aber auch eigene Authenticator-Lösungen verwendet werden. Der durchzuführende Authorization Code Flow ist hier beschrieben.

  2. Ein Nutzer in der Rolle Org-Admin möchte den HealthcareService-Datensatz seiner Organisation ändern. Hierzu authentisiert er sich über die Schnittstelle I_requestToken gegen den Registrierungs-Dienst um ein RegService-OpenID-Token zu erhalten. Die Schnittstelle I_requestToken wird von der gematik nicht näher spezifiziert und obliegt dem jeweiligen TI-Messenger-Anbieter.

2.1.2.2. FHIR Proxy

Der FHIR-Proxy bietet zwei Endpunkte zur Suche und Pflege von FHIR-Ressourcen an, die nur unter Verwendung eines gültigen Zugriffstoken aufgerufen werden können. Die zwei Endpunkte werden in den folgenden Kapiteln weiter beschrieben.

Der FHIR-Proxy bietet über die Schnittstelle FHIRDirectorySearchAPI den Endpunkt /search an, um FHIR-Ressourcen zu suchen. Um diesen Endpunkt aufrufen zu können, wird ein search-accesstoken im Authorization Header benötigt. Eine beispielhafte Verwendung der Schnittstelle für die Suche von FHIR-Ressourcen ist in search API examples beschrieben.

2.1.2.2.2. /owner

Der FHIR-Proxy bietet über die Schnittstelle FHIRDirectoryOwnerAPI den Endpunkt /owner an, um FHIR-Ressourcen zu suchen und eigene Einträge zu pflegen. Um diesen Endpunkt aufrufen zu können, wird ein owner-accesstoken im Authorization Header benötigt. Eine beispielhafte Verwendung der Schnittstelle zur Pflege der FHIR-Ressourcen ist in owner API examples beschrieben.

2.1.3. Auth Modul

Über das Auth Modul wird die Kommunikation mit Smartcards (HBA) realisiert, um diese zur Authentisierung am /owner-authenticate-Endpunkt zu ermöglichen. Im Folgenden wird der Prozess kurz skizziert, nachdem beim Aufruf des /owner-authenticate-Endpunktes das Auth Modul einen Redirect zum Authorization Endpoint des IDP-Dienstes vom Auth-Service erhalten hat.

2.1.3.1. Authorization Endpoint zentraler IDP-Dienst

Nach Erhalt des Redirects ruft das Auth Modul des TI-Messenger-Clients den {Authorization Endpoint} am zentralen IDP-Dienst auf, um das Challenge-Response-Verfahren durchzuführen und abschließend den AuthorizationCode sowie den Redirect zum /signin-gematik-idp-dienst-Endpunkt zu erhalten.

2.1.3.2. Signin-gematik-idp-dienst

An dem Endpunkt /signin-gematik-idp-dienst übergibt das Auth Modul des TI-Messenger-Clients den AuthorizationCode um sich ein owner-accesstoken ausstellen zu lassen. Der AuthorizationCode wird vom Auth-Service an den zentralen-IDP-Dienst weitergeleitet, um das für die passende Smartcard gehörende ID_TOKEN zu erhalten. Die darin enthaltenen TelematikID und ProfessionOID werden im Rahmen der Ausstellung des owner-accesstoken verwendet.

2.2. Bereitstellung weiterer Funktionalitäten

2.2.1. Sichbarkeit

TI-Messenger-Clients müssen über eine Funktion verfügen die die Sichtbarkeit eines Akteurs für den TI-Messenger-Dienst im Personenverzeichnis über den /owner-Endpunkt des VZD-FHIR-Directory ein bzw. ausschalten kann. Wenn ein Akteur den Status seines Endpunktes von active nach off ändert, muss der TI-Messenger-Client prüfen, ob diese MXID auch im Organisationsverzeichnis eingetragen ist. Wird die MXID ebenfalls im Organisationsverzeichnis gefunden und ist der hinterlegte Status in diesem Verzeichnis active, dann ist im TI-Messenger-Client dem Akteur ein entsprechender Hinweis anzuzeigen, dass eine Inkonsistenz in der hinterlegten Sichtbarkeit vorliegt.

Aus dem Hinweis muss hervorgehen, dass ein Kontaktieren des Administrators seiner Organisation notwendig ist, um die gewünschte Sichtbarkeit ebenfalls im Organisationsverzeichnis zu hinterlegen.

2.2.2. Kontaktdatenaustausch mit 2D-Barcode

Der TI-Messenger-Client muss eine Funktion bereitstellen, um Kontaktdaten mittels 2D-Barcodes austauschen zu können.

Hierbei muss der 2D-Code in eine QR-Code-Darstellung gemäß [ISO/IEC 18004:2006] kodiert werden. Im folgenden wird das zu verwendene vCard-Object dargestellt:

BEGIN:VCARD
  VERSION:4.0
  N:<Nachname>;<Vorname>;<zusätzliche Vornamen>;<Titel>;<Namenszusätze>
  FN:<Vorname><Nachname>
  IMPP:matrix://<MXID>
END:VCARD

Der Aufbau der Matrix-URI muss gemäß Matrix-Appendices gebildet werden.

💡
Bei dem gezeigten vCard-Object handelt es sich um die geforderte Mindestbefüllung, die Verwendung weiterer Felder ist zulässig.

Der TI-Messenger-Client muss den eingescannten 2D-Code gemäß [ISO/IEC 18004:2006] decodieren und mindestens den vollständigen Namen sowie die MXID aus den Parameter N und IMPP dem Akteur anzeigen, damit dieser die Aufnahme in die Freigabeliste bestätigen oder ablehnen kann.

2.2.3. Editierbarkeit von Displaynamen

Der TI-Messenger-Client muss bei der initialen Vergabe des Displayname die folgende Bildungsregel durchsetzen: [Name], [Vorname]. Der TI-Messenger-Client darf dem Akteur nach der initialen Vergabe des Displaynamen nicht die Möglichkeit anbieten, diesen zu ändern. Hierfür darf der TI-Messenger-Client nicht die REST-Schnittstelle /_matrix/client/v3/profile/{userId}/displayname der [Client-Server API] aufrufen.

🔥
Das Ändern des Displaynamens eines Akteurs ist nur mittels des TI-Messenger-Clients mit Administrationsfunktionen möglich.

3. TI-Messenger-Client mit Administrationsfunktionen

3.1. Überblick

Der TI-Messenger-Client mit Administrationsfunktionen ist ein Client für Akteure in der Rolle "Org-Admin" einer Organisation. Dieser wird im Kontext des TI-Messenger-Dienstes auch als Org-Admin-Client bezeichnet. Der Org-Admin-Client dient zur komfortablen Verwaltung der Messenger-Services bei einem TI-Messenger-Fachdienst. Die im folgenden beschriebenen Funktionalitäten für einen Org-Admin-Client können separat oder im TI-Messenger-Client für Akteure integriert sein. Hierbei ist darauf zu achten, dass separate User-Interfaces für die jeweilige Rolle (die gerade angemeldet ist) angeboten werden, die nur die relevanten Informationen für die Rolle bereitstellen.

3.2. Funktionalitäten

Mit dem Org-Admin-Client haben Administratoren einer Organisation die Möglichkeit Akteure und Endgeräte auf dem jeweiligen Messenger-Service der Organisation zu verwalten. Zu dem Funktionsumfag des Org-Admin-Clients gehören:

  • Benutzerverwaltung (Auflistung aller Akteure, Anlegen, Bearbeiten, Löschen),

  • Geräteverwaltung (Anzeigen, Abmelden, Löschen aller Geräte eines Messenger-Service seiner Organisation),

  • die Verwaltung von Einträgen im VZD-FHIR-Directory,

  • Systemmeldungen an Akteure eines Messenger-Services senden (z. B. Wartungsfenster bekannt machen) und

  • Einrichtung von Funktionsaccounts.

3.2.1. Organisationsressourcen im VZD-FHIR-Directory bearbeiten

Der Administrator einer Organisation (in der Rolle "Org-Admin") verwaltet mittels des Org-Admin-Clients die FHIR-Ressourcen für seine Organisation im VZD-FHIR-Directory.

Authentisierung

Für den Zugriff auf die /owner-Schnittstelle am FHIR-Proxy wird ein owner-accesstoken benötigt, das vom /owner-authenticate-Endpunkt des Auth-Service ausgestellt wird. Zur Authentisierung am Endpunkt fragt der Org-Admin-Client beim zuständigen Registrierungs-Dienst einen RegService-OpenID-Token an, welcher am /owner-authenticate-Endpunkt gegen ein owner-accesstoken ausgetauscht wird. Ein Beispiel für die Authentisierung ist hier zu finden.

Bearbeitung

Zur Pflege der FHIR-Ressourcen ist es erforderlich, dass der Org-Admin-Client den Endpunkt /owner unter Verwendung des owner-accesstoken (welches im Authorization Header mit übergeben werden muss) aufruft. Eine beispielhafte Verwendung der Schnittstelle zur Pflege der FHIR-Ressourcen ist in der owner API examples beschrieben. Der vom Org-Admin-Client angebotene Funktionsumfang ist:

3.2.2. Funktionsaccounts

Einrichtungen im Gesundheitswesen sind sehr unterschiedlich strukturiert und wollen hinsichtlich ihrer Erreichbarkeit flexibel eigene Strukturen abbilden können. Daher sind beim TI-Messenger-Dienst Funktionsaccounts notwendig, die es ermöglichen, Akteure unterhalb der Struktur erreichbar zu machen. Hierfür ist es erforderlich das über den Org-Admin-Client ein Endpoint im FHIR-Directory angelegt wird.

💡
Für den Endpoint sollte ein sprechender Name verwendet werden. Sprechende Namen wären zum Beispiel Kardiologie für eine Abteilung oder Krankenhaus am Feld für ein Krankenhaus.

Wenn der Funktionsaccount über ein Chatbot realisiert wird, ist folgende Bildungsregel für den Displaynamen zu verwenden:
[Name des Funktionsaccounts] (Chatbot).