diff --git a/.github/actions/lint-jsonschema/action.yml b/.github/actions/lint-jsonschema/action.yml new file mode 100644 index 00000000..22aa6698 --- /dev/null +++ b/.github/actions/lint-jsonschema/action.yml @@ -0,0 +1,52 @@ +name: Lint JSON Schema + +runs: + using: "composite" + steps: + - name: Set up check-jsonschema + shell: bash + run: | + pip install check-jsonschema + + - name: Set up environment + shell: bash + run: | + # Sadly, composite actions currently don't support environment variables so we freestyle a replacement + echo 'SCHEMAS_ROOT=src/schema' >> .gha-env + echo 'EXAMPLES_ROOT=src/schema/examples' >> .gha-env + + - name: Verify schemas + shell: bash + run: | + source .gha-env + + # We handle the return code ourselves to prevent the action from exiting on the first error + rc=0 + + while read -r file; do + echo "Validating $file" + if ! check-jsonschema --check-metaschema "$file"; then + rc=1 + fi + done < <(find "$SCHEMAS_ROOT" -name "*.json" -maxdepth 1) + + exit $rc + + - name: Verify examples + shell: bash + run: | + source .gha-env + + # We handle the return code ourselves to prevent the action from exiting on the first error + rc=0 + + while read -r file; do + schema=$(basename "$file") + schema=$SCHEMAS_ROOT/${schema%%.*}.json + echo "Validating $file against $schema" + if ! check-jsonschema --schemafile "$schema" "$file"; then + rc=1 + fi + done < <(find "$EXAMPLES_ROOT" -name "*.json") + + exit $rc diff --git a/.github/actions/lint-links/action.yml b/.github/actions/lint-links/action.yml new file mode 100644 index 00000000..a57b2930 --- /dev/null +++ b/.github/actions/lint-links/action.yml @@ -0,0 +1,64 @@ +name: Lint Links + +runs: + using: "composite" + steps: + - name: Verify links + shell: bash + run: | + function warn { + >&2 echo -e "\033[0;33m$@\033[0m" + } + + function err { + >&2 echo -e "\033[0;31m$@\033[0m" + } + + rc=0 + + while read -r file; do + echo "Checking $file" + + pushd "$(dirname "$file")" > /dev/null + + while read -r location; do + echo "Checking location $location" + + if [[ "$location" == http* ]]; then + if ! curl -X OPTIONS --silent --fail "$location" 2>&1 > /dev/null; then + if ! curl --head --silent --fail "$location" 2>&1 > /dev/null; then + if ! curl --silent --fail "$location" 2>&1 > /dev/null; then + # Some URLs are examples or the endpoints helpfully support neither OPTIONS nor HEAD + if [[ "$location" = *example* ]] || \ + [[ "$location" = https://idp-ref.app.ti-dienste.de/auth* ]] || \ + [[ "$location" = https://idp.app.ti-dienste.de/auth* ]] || \ + [[ "$location" = https://idp-ref.app.ti-dienste.de/token* ]] || \ + [[ "$location" = https://idp.app.ti-dienste.de/token* ]] || \ + [[ "$location" = https://idp-ref.app.ti-dienste.de ]]; + then + warn "$file references non-verifiable location $location" + else + err "$file references non-existent location $location" + rc=1 + fi + fi + fi + fi + else + # Strip fragments and prefix absolute paths with repo root + path=${location/\#*/} + if [[ "$path" == /* ]]; then + path=$(git rev-parse --show-toplevel)/$path + fi + + if [[ ! -e "$path" ]]; then + err "$file references non-existent location $location" + rc=1 + fi + fi + done < <(grep -hoE 'link:[^\[]*|image::?[^\[]*|https?://[^\["[:space:]]*' "$(basename "$file")" | grep -v '^image:' | sed -E "s/^link:+//g") + + popd > /dev/null + done < <(find . -type f -name "*.adoc") + + exit $rc diff --git a/.github/workflows/GeneratePlantumlImages.yml b/.github/workflows/GeneratePlantumlImages.yml deleted file mode 100644 index 88b11ee5..00000000 --- a/.github/workflows/GeneratePlantumlImages.yml +++ /dev/null @@ -1,105 +0,0 @@ -name: GeneratePlantumlImages - -on: - push: - branches: - - '**' - paths: - - 'src/plantuml/**' - - 'src/drawio/**' - - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - - # Installs Java distribution for running the plantUML jar - - name: Install Java - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: '11' - check-latest: true - - # Install graphviz for plantuml - - name: Setup Graphviz - uses: ts-graphviz/setup-graphviz@v1 - - # Download plantUML jar - - name: Download plantuml file - run: | - wget -O plantuml.jar "https://github.com/plantuml/plantuml/releases/download/v1.2023.10/plantuml-1.2023.10.jar" - - # Runs a single command using the runners shell - - name: Generate images - run: | - imagedir=images/diagrams - mkdir -p $imagedir - rm -rf images/diagrams/* - for fullname in $(find src/plantuml/ -type f -name '*.puml') - do - echo "Fullname: ${fullname}" - base=$(basename "${fullname}" .puml) - dir=$(dirname $fullname) - echo "Basename: ${base}" - outdir=$(dirname $fullname | sed s+src/plantuml+${imagedir}+) - echo "Outdir: ${outdir}" - mkdir -p $outdir - plantoutdir="${PWD}/${outdir}" - echo "PlantOutdir: ${plantoutdir}" - - # PlantUML arguments: - # -v for verbose output (Debugging) - # -checkmetadata checks whether the target png/svg has the same source - # and if there are no changes, doesn't regenerate the image file - # -o sets the output folder for the png/svg files - plantargs="-v -checkmetadata -o ${plantoutdir} ${fullname}" - - # separate calls are needed, because only one file type can be set - # per call - java -jar plantuml.jar -tpng ${plantargs} - java -jar plantuml.jar -tsvg ${plantargs} - - # method with pipes - #cat "${fullname}" | java -jar plantuml.jar -p -tpng -checkmetadata > "${outdir}/${base}.png" - #cat "${fullname}" | java -jar plantuml.jar -p -tsvg -checkmetadata > "${outdir}/${base}.svg" - done - tree ./images - - # creates png files from draw io image files - - name: Export drawio files as png - uses: rlespinasse/drawio-export-action@v2 - with: - path: ./src/drawio/ - output: . - format: png - action-mode: all - - # creates svg files from draw io image files - - name: Export drawio files - uses: rlespinasse/drawio-export-action@v2 - with: - path: ./src/drawio/ - output: . - format: svg - action-mode: all - - # copies the created png & svg files to the images/diagrams folder and deletes the drawio files - - name: Copy draw io - run: | - imagedir=images/diagrams - cp -RT ./src/drawio $imagedir - find $imagedir -name '*.drawio' -exec rm -rv {} \; - tree ./images - - # add and commit the new generated files - - name: Add & Commit - uses: EndBug/add-and-commit@v9 - with: - add: 'images/diagrams/' diff --git a/.github/workflows/generate-images.yml b/.github/workflows/generate-images.yml new file mode 100644 index 00000000..7b89cac7 --- /dev/null +++ b/.github/workflows/generate-images.yml @@ -0,0 +1,20 @@ +name: Generate images + +on: + push: + branches: + - '**' + paths: + - '.github/workflows/generate-images.yml' + - 'images/generated/**' + - '**.drawio' + - '**.puml' + workflow_dispatch: + +jobs: + generate: + uses: gematik/github-image-actions/.github/workflows/generate-images.yml@0.1.0 + with: + srcdir: src/images + outdir: images/generated + ref: 0.1.0 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..de9d9fdf --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,59 @@ +name: Lint + +on: + pull_request: + push: + branches: + - main + workflow_dispatch: + +jobs: + asciidoc-images: + runs-on: ubuntu-latest + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Lint + uses: gematik/github-image-actions/.github/actions/lint-asciidoc@0.1.0 + + asciidoc-links: + runs-on: ubuntu-latest + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Lint + uses: ./.github/actions/lint-links + + drawio: + runs-on: ubuntu-latest + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Lint + uses: gematik/github-image-actions/.github/actions/lint-drawio@0.1.0 + + jsonschema: + runs-on: ubuntu-latest + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Lint + uses: ./.github/actions/lint-jsonschema + + plantuml: + runs-on: ubuntu-latest + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Lint + uses: gematik/github-image-actions/.github/actions/lint-plantuml@0.1.0 diff --git a/.gitignore b/.gitignore index ec075869..0f9e309c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ *.dtmp src/fhir/input-cache -.idea \ No newline at end of file +.idea +target/ +.DS_Store diff --git a/README.adoc b/README.adoc index a28acdf5..9712d517 100644 --- a/README.adoc +++ b/README.adoc @@ -14,10 +14,13 @@ ifndef::env-github[:source-style: source] image::meta/gematik_logo.svg[gematik,width="70%"] -image:https://img.shields.io/badge/Release%20Notes-v1.1.1‐4-red?style=plastic&logo=github&logoColor=red[link="ReleaseNotes.md"] + -image:https://img.shields.io/badge/I_TiMessengerContactManagement-v1.0.2-blue?style=plastic&logo=github&logoColor=blue[link=/src/openapi/TiMessengerContactManagement.yaml"] + -image:https://img.shields.io/badge/TiMessengerTestDriver-v0.9.4-purple?style=plastic&logo=github&logoColor=purple[link="/src/openapi/TiMessengerTestTreiber.yaml"] -image:https://img.shields.io/badge/TiMessengerTestSuite-v0.9.7-purple?style=plastic&logo=github&logoColor=purple[link="https://github.com/gematik/TI-Messenger-Testsuite"] + +image:https://github.com/gematik/api-ti-messenger/actions/workflows/lint.yml/badge.svg[link="https://github.com/gematik/api-ti-messenger/actions/workflows/lint.yml"] +image:https://github.com/gematik/api-ti-messenger/actions/workflows/generate-images.yml/badge.svg[link="https://github.com/gematik/api-ti-messenger/actions/workflows/generate-images.yml"] + +image:https://img.shields.io/badge/Release%20Notes-v1.1.1-red?style=plastic&logo=github&logoColor=red[link="ReleaseNotes.md"] + +image:https://img.shields.io/badge/I_TiMessengerContactManagement-v1.0.1-blue?style=plastic&logo=github&logoColor=blue[link=/src/openapi/TiMessengerContactManagement.yaml"] + +image:https://img.shields.io/badge/TiMessengerTestDriver-v0.9.2-purple?style=plastic&logo=github&logoColor=purple[link="/src/openapi/TiMessengerTestTreiber.yaml"] +image:https://img.shields.io/badge/TiMessengerTestSuite-v0.9.2-purple?style=plastic&logo=github&logoColor=purple[link="https://github.com/gematik/TI-Messenger-Testsuite"] + image:https://img.shields.io/badge/TI‐Messenger‐Dienst-v1.1.1-green?style=plastic&logo=github&logoColor=green[link="https://fachportal.gematik.de/fachportal-import/files/gemSpec_TI-Messenger-Dienst_V1.1.1.pdf"] image:https://img.shields.io/badge/TI‐Messenger‐FD-v1.1.1-green?style=plastic&logo=github&logoColor=green[link="https://fachportal.gematik.de/fachportal-import/files/gemSpec_TI-Messenger-FD_V1.1.1.pdf"] image:https://img.shields.io/badge/TI‐Messenger‐Client-v1.1.1-green?style=plastic&logo=github&logoColor=green[link="https://fachportal.gematik.de/fachportal-import/files/gemSpec_TI-Messenger-Client_V1.1.1.pdf"] + @@ -46,13 +49,9 @@ Für die Dokumentation des *TI-Messenger-Dienstes* werden in GitHub die folgende == Systemübersicht Die folgende Abbildung gibt einen Überblick über die Systemarchitektur des *TI-Messenger-Dienst* v1.1.1 insbesondere auf die Schnittstellen zwischen den Komponenten, die in den folgenden Kapiteln weiter betrachtet werden. -++++ -

- -

-++++ +image::System_overview.png[width="100%"] -TIP: Auf die Schnittstellen zur Autentisierung am *Auth-Service* des *VZD-FHIR-Directory* wird in der oben gezeigten Abbildung verzichtet. Die Informationen hierzu können in dem entsprechenden Kapitel für das *VZD-FHIR-Directory* link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.1/docs/FHIR_VZD_HOWTO_Authenticate.adoc#2-fhirdirectoryauthenticationapis[hier] nachgelesen werden. +TIP: Auf die Schnittstellen zur Autentisierung am *Auth-Service* des *VZD-FHIR-Directory* wird in der oben gezeigten Abbildung verzichtet. Die Informationen hierzu können in dem entsprechenden Kapitel für das *VZD-FHIR-Directory* link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Authenticate.adoc#fhirdirectoryauthenticationapis[hier] nachgelesen werden. link:docs/Fachdienst/Fachdienst.adoc[*TI Messenger-Fachdienst*] @@ -69,9 +68,9 @@ link:docs/Client/Client.adoc[*TI Messenger-Client*] + * Der *TI-Messenger-Client* basiert auf der `Matrix-Client-Server API`. Er wird durch weitere Funktionsmerkmale erweitert und ruft die Schnittstellen am *TI-Messenger-Fachdienst* sowie am *VZD-FHIR-Directory* auf. -link:docs/FHIR-Directory/FHIR-Directory.adoc[*VZD-FHIR-Directory*] + +link:https://github.com/gematik/api-vzd/blob/main/docs/Fachkonzept_FHIR-Directory.adoc[*VZD-FHIR-Directory*] + -* Beim *VZD-FHIR-Directory* handelt es sich um einen zentralen Verzeichnisdient der TI, der die deutschlandweite Suche von Organisationen und Akteuren des *TI-Messenger-Dienstes* ermöglicht. Das *VZD-FHIR-Directory* basiert auf dem FHIR-Standard und bietet für den *TI-Messenger-Dienst* relevante Schnittstellen an. Die Schnittstelle `FHIRDirectoryTIMProviderAPI` wird vom *Registrierungs-Dienst* aufgerufen, um eine Föderationsliste herunterzuladen. Die Schnittstellen `FHIRDirectorySearchAPI` und `FHIRDirectoryOwnerAPI` werden von den *TI-Messenger-Clients* aufgerufen, um eine Suche bzw. einen Eintrag im *FHIR-Directory* zu ermöglichen. +* Beim *VZD-FHIR-Directory* handelt es sich um einen zentralen Verzeichnisdient der TI, der die deutschlandweite Suche von Organisationen und Akteuren des *TI-Messenger-Dienstes* ermöglicht. Das *VZD-FHIR-Directory* basiert auf dem FHIR-Standard und bietet neben der Suche (`FHIRDirectorySearchAPI`) für den *TI-Messenger-Dienst* Schnittstellen zur Administration der link:docs/Foederationsliste/Foederationsliste.adoc[*Föderationsliste*] an (`FHIRDirectoryTIMProviderAPI`). Zusätzlich existiert für Organisaitonen und Practitioner eine Schnittstelle (`FHIRDirectoryOwnerAPI`), über die die Verwaltung des eigenen Eintrages im *VZD-FHIR-Directory* möglich ist. Details sind dem link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/gemILF_VZD_FHIR_Directory.adoc[*Implementierungsleitfaden*] des *VZD-FHIR-Directory* zu entnehmen. link:docs/IDP/idp.adoc[*Zentraler IDP-Dienst*] + @@ -90,22 +89,22 @@ TI-Messenger Dokumentation ├─ link:docs[docs] (weiterführende Informationen) | ├──── link:docs/Authenticator[Authenticator] | ├──── link:docs/Client[Client] -| ├──── link:docs/FHIR-Directory[FHIR-Directory] +| ├──── link:docs/Foederationsliste[Föderationsliste] | ├──── link:docs/Fachdienst[Fachdienst] | ├──── link:docs/IDP[IDP] | ├──── link:docs/Primaersystem[Primaersystem] | ├──── link:docs/anwendungsfaelle[Anwendungsfälle] +| ├──── link:docs/anwendungsfaelle/COM-chatbot.adoc[Chatbot] +| ├──── link:docs/Test/Test.adoc[Testkonzept] | └──── link:docs/FAQ[FAQ] ├─ link:images[images] (Bildarchiv) -│ └──── link:images/diagrams[diagrams] (gerenderte Diagramme) -│ └── link:images/diagrams/TI-Messenger-Dienst/Ressourcen[Ressourcen] (plantuml-gerenderte Bilder) +│ └──── link:images/generated[generated] (draw.io & PlantUML gerenderte Bilder) ├─ link:samples[samples] (Codebeispiele, Postman Collections, etc) ├─ link:src[src] (Quellen) -│ ├──── link:src/drawio[drawio] (Quellen der drawio-Diagramme) -│ ├──── link:src/openapi[openapi] (Schnittstellenbeschreibungen) -│ │ ├── link:src/openapi/TiMessengerContactManagement.yaml[TiMessengerContactManagement.yaml] (API-Beschreibung der Freigabeliste) -│ │ └── link:src/openapi/TiMessengerTestTreiber.yaml[TiMessengerTestTreiber.yaml] (API-Beschreibung der TestTreiber-Schnittstelle) -│ └──── link:src/plantuml[plantuml] (Quellen der plantuml-Diagramme) +│ ├──── link:src/images[images] (Quellen der draw.io- und PlantUML-Diagramme) +│ └──── link:src/openapi[openapi] (Schnittstellenbeschreibungen) +│ ├── link:src/openapi/TiMessengerContactManagement.yaml[TiMessengerContactManagement.yaml] (API-Beschreibung der Freigabeliste) +│ └── link:src/openapi/TiMessengerTestTreiber.yaml[TiMessengerTestTreiber.yaml] (API-Beschreibung der TestTreiber-Schnittstelle) ├── link:README.adoc[README.adoc] ├── link:CODE_OF_CONDUCT.md[CODE_OF_CONDUCT.md] ├── link:CONTRIBUTING.md[CONTRIBUTING.md] @@ -130,30 +129,26 @@ Die nachfolgende Tabelle enthält die in der vorliegenden Online Dokumentation r |=== == 💡 Onboarding -Hersteller und Anbieter eines *TI-Messenger-Dienstes* können das von der gematik bereitgestellte https://fachportal.gematik.de/fileadmin/Fachportal/Anwendungen/TI-Messenger/Welcome_Package_TI-Messenger_V1.1.0.pdf[Welcome Package] zum Onboarding nutzen. Dieses Welcome Package ist als "Schritt-für-Schritt"-Anleitung gedacht, um Hersteller und Anbieter beim Onboarding des *TI-Messenger-Dienstes* zu unterstützen. +Hersteller und Anbieter eines *TI-Messenger-Dienstes* können das von der gematik im https://fachportal.gematik.de/anwendungen/ti-messenger[Fachportal] bereitgestellte Welcome Package zum Onboarding nutzen. Dieses Welcome Package ist als "Schritt-für-Schritt"-Anleitung gedacht, um Hersteller und Anbieter beim Onboarding des *TI-Messenger-Dienstes* zu unterstützen. == Weiterführende Seiten -*Anwendungsfälle* + -link:docs/anwendungsfaelle/TI-Messenger-Anwendungsfaelle.adoc[- Anwendungsfälle] - *Produkttypen* + link:docs/Fachdienst/Fachdienst.adoc[- TI-Messenger-Fachdienst] + link:docs/Client/Client.adoc[- TI-Messenger-Client] + -link:docs/FHIR-Directory/FHIR-Directory.adoc[- VZD-FHIR-Directory] + +link:https://github.com/gematik/api-vzd/blob/main/docs/Fachkonzept_FHIR-Directory.adoc[- VZD-FHIR-Directory] + link:docs/IDP/idp.adoc[- Zentraler IDP-Dienst] + *Leitfaden für Primärsystemhersteller* + link:docs/Primaersystem/Primaersystem.adoc[- Primärsystem] + *Diverses* + -https://fachportal.gematik.de/fileadmin/Fachportal/Anwendungen/TI-Messenger/Welcome_Package_TI-Messenger_V1.1.0.pdf[- Welcome Package [DE]] + -https://fachportal.gematik.de/fileadmin/Fachportal/Anwendungen/TI-Messenger/Welcome_Package_TI-Messenger_V1.1.0_EN.pdf[- Welcome Package [EN]] + -https://gematikde.sharepoint.com/sites/EXTAuthenticator/Freigegebene%20Dokumente/Forms/AllItems.aspx?id=%2Fsites%2FEXTAuthenticator%2FFreigegebene%20Dokumente%2FVer%C3%B6ffentlichte%20Version%20%2D%20gematik%20Authenticator&p=true&ga=1[- gematik Authenticator] + +https://fachportal.gematik.de/anwendungen/ti-messenger[- TI-Messenger im gematik Fachportal] +https://fachportal.gematik.de/hersteller-anbieter/komponenten-dienste/authenticator[- Authenticator im gematik Fachportal] + https://github.com/gematik/TI-Messenger-Testsuite[- TI-Messenger-Testsuite] + link:docs/FAQ/FAQ.adoc[- Fragen und Antworten zur aktuellen Spezifikation [FAQ]] *Referenz-Implementierungen* + -- [coming soon] +- [comming soon] == Lizenzbedingungen Copyright (c) 2023 gematik GmbH diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 31e8196f..a282a608 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -2,6 +2,17 @@ # Release Notes api-ti-messenger +## tim-pro-1.0.0 + +### added + +- TiMessengerInformation Rest interface +- Group exceptions in permissionConfig_V1 for TI-M Pro + +### changed + +- Separate permissionConfig_V1 for TI-M Pro & ePA + ## Hotfix 1.1.1-9 ### removed diff --git a/docs/Authenticator/authenticator.adoc b/docs/Authenticator/authenticator.adoc index 99eb3fac..5bdacc4e 100644 --- a/docs/Authenticator/authenticator.adoc +++ b/docs/Authenticator/authenticator.adoc @@ -7,7 +7,6 @@ ifdef::env-github[] endif::[] :imagesdir: ../../images -:docsdir: ../docs :toc: macro :toclevels: 6 :toc-title: Table of Contents @@ -26,7 +25,7 @@ Für die Authentifizierung mittels Smartcard stellt die gematik einen eigenen *A Die Aufgabe des *Authenticators* ist, dass von der *Relying Party* benötigte `ID_TOKEN` mit Zustimmung des Akteurs und nach eingehender Überprüfung dessen Identität am `Authorization-Endpunkt` des *IDP-Dienstes* zu beantragen. Die für die Beantragung des `ID_TOKEN` notwendigen Informationen bekommt der *Authenticator* von der *Relying Party* in der `Authorization Request URL` übergeben. Der von der gematik bereitgestellte *Authenticator* bezieht die Informationen für die notwendige elektronische Signatur im Challenge-Response-Verfahren zum Signieren des `CHALLENGE_TOKEN` von der Smartcard und fordert hierbei den Akteur zur PIN-Eingabe auf. Hierfür nutzt der *Authenticator* die notwendigen Operationen vom Konnektor. Der *Authenticator* fordert im Zusammenhang mit der PIN-Abfrage im selben Dialog die Consent-Freigabe des `USER_CONSENT` durch den Akteur ein, damit dieser durch die PIN-Eingabe seine Willenserklärung abgibt und der Verwendung seiner Daten in diesen `claims` zustimmt. == Download und Konfiguration des Authenticators -Die gematik stellt einen https://gematikde.sharepoint.com/sites/EXTAuthenticator/Freigegebene%20Dokumente/Forms/AllItems.aspx?id=%2Fsites%2FEXTAuthenticator%2FFreigegebene%20Dokumente%2FVer%C3%B6ffentlichte%20Version%20%2D%20gematik%20Authenticator&p=true&ga=1[Authenticator] gemäß *[gemSpec_IDP_Frontend]* bereit, der die Authentisierung eines Akteurs am zentralen *IDP-Dienst* unter Verwendung einer Smartcard (SMC-B / HBA) - in Kombination mit einem Konnektor und einem eHealth-Kartenterminal - ermöglicht. +Die gematik stellt einen https://fachportal.gematik.de/hersteller-anbieter/komponenten-dienste/authenticator[Authenticator] gemäß *[gemSpec_IDP_Frontend]* bereit, der die Authentisierung eines Akteurs am zentralen *IDP-Dienst* unter Verwendung einer Smartcard (SMC-B / HBA) - in Kombination mit einem Konnektor und einem eHealth-Kartenterminal - ermöglicht. CAUTION: Voraussetzungen für die Nutzung des von der gematik bereitgestellten *Authenticators* sind: + - Konnektor, + @@ -50,6 +49,6 @@ WARNING: Der Parameter `cardType` wird erst mit dem Authenticator 4.4 unterstüt TIP: Sollten sich in den Konnektor-Terminals mehrere SMC-Bs befinden, erfolgt ab Version 4.0.0 des *Authenticators* keine Fehlermeldung mehr, sondern es erscheint ein Auswahldialog mit den vorhandenen SMC-Bs und detaillierten Informationen wie z.B. Kartenhalter und iccsn. Der Benutzer hat nun die Möglichkeit eine SMC-B Karte für den weiteren Auth.-Flow auszuwählen oder diesen durch 'Abbrechen' komplett zu beenden. == Entwickleroption -Innerhalb der link:https://gematikde.sharepoint.com/sites/EXTAuthenticator/Freigegebene%20Dokumente/Forms/AllItems.aspx?ga=1&id=%2Fsites%2FEXTAuthenticator%2FFreigegebene%20Dokumente%2FVer%C3%B6ffentlichte%20Version%20%2D%20gematik%20Authenticator%2FMockvariante%20Alpha%2DVersion%20%28TEST%2DONLY%29&viewid=19543cfb%2D531c%2D4ed7%2Da8c1%2D1fbd4aa0d244[Entwicklervariante] des *Authenticators* ist ein Mockmodus integriert, der die Verwendung eines Konnektors simulieren kann. Somit können Funktionstests auch ohne physisch vorhandenen Konnektor durchgeführt werden. Diese Funktion soll die Entwicklung mit dem *Authenticator* vereinfachen, da sie neben einem speziellen Mockmodus auch mehr Logging-Möglichkeiten zur Verfügung stellt. Eine Anleitung für den Mockmodus ist link:https://wiki.gematik.de/display/GAKB/Gematik+Authenticator+-+Entwicklervariante+mit+Mockmodus[hier] zu finden. +Innerhalb der Entwicklervariante des https://fachportal.gematik.de/hersteller-anbieter/komponenten-dienste/authenticator[Authenticators] ist ein Mockmodus integriert, der die Verwendung eines Konnektors simulieren kann. Somit können Funktionstests auch ohne physisch vorhandenen Konnektor durchgeführt werden. Diese Funktion soll die Entwicklung mit dem *Authenticator* vereinfachen, da sie neben einem speziellen Mockmodus auch mehr Logging-Möglichkeiten zur Verfügung stellt. Eine Anleitung für den Mockmodus ist link:https://wiki.gematik.de/display/GAKB/Gematik+Authenticator+-+Entwicklervariante+mit+Mockmodus[hier] zu finden. Hersteller die den gematik *Authenticator* für eine smartcardbasierte Authentisierung an ihrer Fachanwendung bzw. ihren Fachdienst anbinden möchten, können die link:https://wiki.gematik.de/display/GAKB/Gematik+Authenticator+SDK+Dokumentation[SDK-Dokumentation] der gematik verwenden. Zusätzlich ist der Quellcode des *Authenticator* link:https://github.com/gematik/app-Authenticator[hier] einsehbar. diff --git a/docs/Client/Client.adoc b/docs/Client/Client.adoc index 4e401caf..b23272f7 100644 --- a/docs/Client/Client.adoc +++ b/docs/Client/Client.adoc @@ -24,18 +24,14 @@ Im Kontext des *TI-Messenger-Dienstes* wird zwischen den folgenden Ausprägungen * *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. +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. IMPORTANT: Die Seite ergänzt die Spezifikation gemäß link:https://fachportal.gematik.de/fachportal-import/files/gemSpec_TI-Messenger-Client_V1.1.1.pdf[[gemSpec_TI-Messenger-Client]], die als Grundlage für das Verständnis vorrausgesetzt wird. == 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. -++++ -

- -

-++++ +image::I_Client.png[align="center",width="90%"] === Abstrakte Module ==== TI-Messenger Modul @@ -43,7 +39,7 @@ Der *TI-Messenger-Client* für Akteure unterstützt die meisten aller, durch die NOTE: 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. +In den folgenden Kapiteln werden die vom _TI-Messenger Modul_ zu verwendenen Schnittstellen sowie die vom *TI-Messenger-Client* bereitzustellenden Funktionen beschrieben. ===== Matrix - Client-Server API Der *Matrix-Homeserver* muss die REST-Schnittstellen gemäß der Matrix https://spec.matrix.org/v1.3/client-server-api/[[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 https://spec.matrix.org/v1.3/client-server-api/#client-behaviour-21[Link] ist ein Beispiel dargestellt. @@ -55,7 +51,7 @@ CAUTION: Der Playground bildet immer die aktuellste Version der Matrix-Spezifika 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. ====== CreateRoom -Beim Anlegen eines Raumes über den `/_matrix/client/v3/createRoom` Endpunkt (siehe: link:https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3createroom[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 link:../../docs/anwendungsfaelle/MS-stufen-berechtigungspruefung.adoc#stufe-1-pr%C3%BCfung-der-ti-f%C3%B6derationszugeh%C3%B6rigkeit[Proxy Berechtigungsprüfung] validiert werden kann. +Beim Anlegen eines Raumes über den `/_matrix/client/v3/createRoom` Endpunkt (siehe: link:https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3createroom[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. ====== 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. @@ -87,7 +83,7 @@ TIP: Weitere Informationen zu den _Custom State Events_ können in *[gemSpec_Ti- NOTE: 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. ===== 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 in link:/docs/anwendungsfaelle/COM-AF10061-einladung-ausserhalb.adoc[AF10061 - 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 link:../../docs/Fachdienst/MessengerService.adoc#i_timessengercontactmanagement[hier] zu finden. +Ü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 link:../../docs/Fachdienst/MessengerService.adoc#i_timessengercontactmanagement[hier] zu finden. ==== 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: @@ -99,32 +95,31 @@ NOTE: In der veröffentlichten und zulassungsrelevanten Spezifikationsversion v1 - `/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. +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. ===== 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. ====== /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 link:https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3useruseridopenidrequest_token[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 link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.0/docs/FHIR_VZD_HOWTO_Authenticate.adoc#21-authenticate-for-the-search-endpoint[hier] beschrieben. +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 link:https://spec.matrix.org/v1.3/client-server-api/#post_matrixclientv3useruseridopenidrequest_token[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 link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Authenticate.adoc#authenticate-for-the-search-endpoint[hier] beschrieben. ====== /owner-authenticate -Für die Pflege von FHIR-Ressourcen (`/owner`-Endpunkt) authentisiert sich der *TI-Messenger-Client* gegenüber dem *VZD-FHIR-Directory* unter Verwendung einer Smartcard (HBA), um ein `owner-accesstoken` vom *Auth-Service* zu erhalten. Für die Authentisierung mittels Smartcard ist der von der gematik bereitgestellte link:/docs/IDP/idp.adoc[zentrale IDP-Dienst] zu verwenden. Details sind dem Anwendungsfall link:/docs/anwendungsfaelle/VZD-AF10058-practitioner-hinzufuegen.adoc[AF10058 - Akteur (User-HBA) im Verzeichnisdienst hinzufügen] zu entnehmen. Nach erfolgreicher Authensierung erhält der *TI-Messenger-Client* vom *Auth-Service* ein `owner-accesstoken`. Der Aufruf des `/owner-authenticate`-Endpunktes ist link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.0/docs/FHIR_VZD_HOWTO_Authenticate.adoc#24-authenticate-for-the-owner-endpoint-as-an-user[hier] beschrieben. +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: -TIP: Für die Interaktion mit den Smartcards und dem *zentralen IDP-Dienst* ist der link:https://fachportal.gematik.de/hersteller-anbieter/komponenten-dienste/authenticator[gematik authenticator] vorgesehen. Es können auch eigene Authenticator-Lösungen verwendet werden. - -Der durchzuführende Authorization Code Flow ist link:/docs/IDP/idp.adoc#4-authorization-code-flow[hier] beschrieben. +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 link:/docs/IDP/idp.adoc[zentralen IDP-Dienst]. Für die Interaktion zwischen Smartcard und dem *zentralen IDP-Dienst* ist der link:https://fachportal.gematik.de/hersteller-anbieter/komponenten-dienste/authenticator[gematik Authenticator] vorgesehen. Es können aber auch eigene Authenticator-Lösungen verwendet werden. Der durchzuführende Authorization Code Flow ist link:/docs/IDP/idp.adoc#4-authorization-code-flow[hier] beschrieben. +1. 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. ===== 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. ====== /search -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 link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.0/docs/FHIR_VZD_HOWTO_Search.adoc[search API examples] 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 link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Search.adoc[search API examples] beschrieben. ====== /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 link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.0/docs/FHIR_VZD_HOWTO_Owner.adoc[owner API examples] beschrieben. +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 link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Owner.adoc[owner API examples] beschrieben. ==== Auth Modul -Über das _Auth Modul_ wird die Kommunikation mit Smartcards (HBA) realisiert, um diese zur Authentisierung am `/owner-authenticate`-Endpunkt zu ermöglichen. Dies wird als Grundlage für den Anwendungsfall link:/docs/anwendungsfaelle/VZD-AF10058-practitioner-hinzufuegen.adoc[AF_10058 Akteur(User-HBA) im Verzeichnisdienst hinzufügen] benötigt. 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. +Ü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. ===== 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. @@ -134,7 +129,7 @@ An dem Endpunkt `/signin-gematik-idp-dienst` übergibt das _Auth Modul_ des *TI- === Bereitstellung weiterer Funktionalitäten ==== 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` link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.0/docs/FHIR_VZD_HOWTO_Owner.adoc#232-update-endpoint-put[ä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. +*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` link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Owner.adoc#update-endpoint-put[ä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. IMPORTANT: Aus dem Hinweis muss hervorgehen, dass ein Kontaktieren des Administrators seiner Organisation notwendig ist, um die gewünschte Sichtbarkeit ebenfalls im Organisationsverzeichnis zu hinterlegen. @@ -155,7 +150,7 @@ Der Aufbau der `Matrix-URI` muss gemäß link:https://spec.matrix.org/v1.3/appen TIP: 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 (siehe link:/docs/anwendungsfaelle/COM-AF10061-einladung-ausserhalb.adoc[AF_10061 - Einladung von Akteuren außerhalb einer Organisation]). +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. ==== 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. @@ -176,18 +171,18 @@ Mit dem *Org-Admin-Client* haben Administratoren einer Organisation die Möglich * Einrichtung von Funktionsaccounts. ==== 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* (siehe link:/docs/anwendungsfaelle/VZD-AF10059-organisation-hinzufuegen.adoc[AF_10059 - Organisationsressourcen im Verzeichnisdienst hinzufügen]). +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 link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.0/docs/FHIR_VZD_HOWTO_Authenticate.adoc#231-authenticate-with-an-regservice-openid-token[hier] zu finden. +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 link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Authenticate.adoc#authenticate-with-an-regservice-openid-token[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 link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.0/docs/FHIR_VZD_HOWTO_Owner.adoc[owner API examples] beschrieben. Der vom *Org-Admin-Client* angebotene Funktionsumfang ist: +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 link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Owner.adoc[owner API examples] beschrieben. Der vom *Org-Admin-Client* angebotene Funktionsumfang ist: -* Verwaltung von link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.0/docs/FHIR_VZD_HOWTO_Owner.adoc#22-administration-of-resource-healthcareservice[HealthcareServices] und -* Verwaltung von link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.0/docs/FHIR_VZD_HOWTO_Owner.adoc#23-administration-of-resource-endpoint--metatagoriginowner[Endpoints]. +* Verwaltung von link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Owner.adoc#administration-of-resource-healthcareservice[HealthcareServices] und +* Verwaltung von link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Owner.adoc#administration-of-resource-endpoint-meta-tag-originowner[Endpoints]. ==== 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. diff --git a/docs/FHIR-Directory/FHIR-Directory.adoc b/docs/FHIR-Directory/FHIR-Directory.adoc deleted file mode 100644 index fdc29f49..00000000 --- a/docs/FHIR-Directory/FHIR-Directory.adoc +++ /dev/null @@ -1,100 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images -:toc: macro -:toclevels: 5 -:toc-title: Table of Contents -:numbered: - -image:meta/gematik_logo.svg[width=70%] - -toc::[] - -= VZD-FHIR-Directory -Beim *VZD-FHIR-Directory* handelt es sich um einen zentralen Verzeichnisdient der TI. Im Rahmen des *TI-Messenger-Dienstes* wird das *VZD-FHIR-Directory* für die deutschlandweite Suche von Organisationen und Akteuren verwendet. Zusätzlich stellt das *VZD-FHIR-Directory* Funktionalitäten bereit, um die in den *Messenger-Proxy* implementierten link:/docs/anwendungsfaelle/MS-stufen-berechtigungspruefung.adoc[Berechtigungsstufen] zu unterstützen. - -Dabei besteht das *VZD-FHIR-Directory* aus den Teilkomponenten: - -* FHIR-Directory, -* OAuth-Service, -* Auth-Service und -* FHIR-Proxy - -die benötigt werden, um alle Funktionsmerkmale abbilden zu können. - -In der folgenden Abbildung sind die Teilkomponenten sowie deren Schnittstellen und die für deren Zugriff benötigten Zugriffstoken dargestellt: - -++++ -

- -

-++++ - -== FHIR-Directory / Verzeichnistypen -Das *FHIR-Directory* basiert auf link:https://hl7.org/fhir/R4/[FHIR R4] und stellt die zwei Verzeichnisse `HealthcareServiceDirectory`- und `PractitionerRoleDirectory` bereit. Die Profilierung der FHIR-Ressourcen ist im link:https://simplifier.net/vzd-fhir-directory[Simplifier] aufrufbar. - -Im folgenden sind die beiden Verzeichnisse mit deren Struktur beispielhaft dargestellt: - -* `HealthcareService` - -++++ -

- -

-++++ - -* `PractitionerRole` - -++++ -

- -

-++++ - -Im Rahmen des *TI-Messenger-Dienstes* sollen die folgenden Attribute eines `Endpoints` eines `HealthcareService` oder einer `PractitionerRole` wie folgt gesetzt werden: - -[options="header"] -|================================================================================================================= -| Attribut | Wert | Beschreibung -| `endpoint.status` | `active` | Sichtbarkeit des Endpunktes im Verzeichnisdienst -| `endpoint.connectionType` | `tim` | Gibt an, um welche Anwendung es sich handelt -| `endpoint.name` | `` | Identifier des Endpoints -| `endpoint.PayloadType` | `tim-chat` | Kennung der Übertragenen Inhalte -| `endpoint.address` |`` | Matrix-UserID eines Akteurs -|================================================================================================================= - -Beispiel: * `HealthcareService.endpoint.address = ` - -Weitere Informationen zu den Verzeichnistypen können link:https://github.com/gematik/api-vzd/blob/main/docs/Fachkonzept_FHIR-Directory.adoc#datenstruktur-im-fhir-directory[hier] nachgelesen werden. - -== OAuth-Service -Der *OAuth-Service* stellt ein `ti-provider-accesstoken` aus, welches am `/ti-provider-authenticate`-Endpunkt übergeben werden muss. Hierfür muss sich ein Anbieter eines *TI-Messenger-Fachdienstes* mittels seiner link:/docs/Fachdienst/Fachdienst.adoc#214-beantragung-der-ti-provider-credentials-am-vzd-fhir-directory[Zugangsdaten] am OAuth-Service authentisieren. -Der Aufruf des Endpunktes kann https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.1/docs/FHIR_VZD_HOWTO_Authenticate.adoc#22-authenticate-for-the-provider-api[hier] nachgelesen werden. - -== Auth-Service -Der *Auth-Service* stellt Zugriffstoken aus, die für den Zugriff auf die Endpunkte am *FHIR-Proxy* benötigt werden. Der Aufruf der Endpunkte am *Auth-Service* ist link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.1/docs/FHIR_VZD_HOWTO_Authenticate.adoc#2-fhirdirectoryauthenticationapis[dort] beschrieben. - -== FHIR-Proxy -Der *FHIR-Proxy* gibt Zugriff auf das *FHIR-Directory* unter Vorlage eines validen `ACCESS_TOKEN` und somit auf die FHIR-Ressourcen. Die vom *FHIR-Proxy* zur Verfügung gestellten Endpunkte werden für die Suche und Pflege von FHIR-Ressourcen verwendet sowie zur Pflege eigener TIM Provider Einträge. Der Aufruf der Endpunkte am *FHIR-Proxy* sind der folgenden Aufzählung zu entnehmen: - -* https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.1/docs/FHIR_VZD_HOWTO_Provider.adoc#2-fhirdirectoryproviderapi[/tim-provider-services] - -* https://github.com/gematik/api-vzd/blob//1.0.1/docs/FHIR_VZD_HOWTO_Search.adoc#21-fhirdirectorysearchapi-search-for-practitioners-and-organizations[/search] - -* https://github.com/gematik/api-vzd/blob//1.0.1/docs/FHIR_VZD_HOWTO_Owner.adoc#2-fhirdirectoryownerapi[/owner] - -TIP: Die Anbieter eines *TI-Messenger-Fachdienstes* nutzen die Schnittstelle `/tim-provider-services`, um die Föderationsliste des *TI-Messenger-Dienstes* abzufragen und um die Domains der von ihnen betriebenen *Messenger-Services* als Teil der TI-Messenger Föderation zu verwalten. - -IMPORTANT: Die Volltextsuche über die Schnittstellen `/search` und `/owner` wird aktuell nicht vom *VZD-FHIR-Directory* unterstützt. Hierfür können die folgenden RegEx *_text* and *_content* verwendet werden. Für mehr Informationen kann die folgende link:http://hl7.org/fhir/R4/search.html#content[Dokumentation] verwendet werden. - - - - - - diff --git a/docs/Fachdienst/Fachdienst.adoc b/docs/Fachdienst/Fachdienst.adoc index 95457fcc..e204bae3 100644 --- a/docs/Fachdienst/Fachdienst.adoc +++ b/docs/Fachdienst/Fachdienst.adoc @@ -23,11 +23,7 @@ IMPORTANT: Die Seite ergänzt die Spezifikation gemäß link:https://fachportal. Der *TI-Messenger-Fachdienst* besteht aus unterschiedlichen Teilkomponenten und Schnittstellen. Die nachfolge Abbildung verdeutlicht den Zusammenhang zwischen den Komponenten und den Kommunikationsschnittstellen. -++++ -

- -

-++++ +image::I_Fachdienst.png[width="100%"] Der *TI-Messenger-Fachdienst* besteht aus den folgenden Teilkomponenten : @@ -49,10 +45,10 @@ Die gematik stellt ein IT Service Management System für die TI-Anbieter zur Ver * für die Beantragung der `TI-Provider-Credentials` für die Anbieterschnittstelle des *VZD-FHIR-Directory* und + * die Registrierung des *Registrierungs-Dienstes* beim zentralen *IDP-Dienst* der gematik. -Hierfür ist es erforderlich, dass sich ein Anbieter eines *TI-Messenger-Dienstes* beim TI-ITSM-System ongeboardet wird. Weitere Information sind im https://gematikde.sharepoint.com/:w:/s/PTNeo/EczX7AFGfBdNrCYghzGsHz4BbSoYhV63QMmDCdz7x9zLpg?e=7wG3c[Welcome Package] Schritt 4 zu finden. Das TI-ITSM-System ist unter der folgenden Internetseite erreichbar: https://www.ti-itsm.de +Hierfür ist es erforderlich, dass sich ein Anbieter eines *TI-Messenger-Dienstes* beim TI-ITSM-System ongeboardet wird. Weitere Information können dem im https://fachportal.gematik.de/anwendungen/ti-messenger[Fachportal] bereitgestelltem Welcome Package (Schritt 4) entnommen werden. Das TI-ITSM-System ist unter der folgenden Internetseite erreichbar: https://www.ti-itsm.de ==== Zugang zum PKI-Management-System (PMS) -Um das Signaturzertifikat (welches für die Signatur des `RegService-OpenID-Token` benötigt wird) abrufen zu können, müssen vorher ein Benutzeraccount und Berechtigungen über weitere Service-Requests für die Organisation und den Benutzer (nur Root-User) im TI-ITSM-System beantragt werden. Weitere Informationen sind im link:https://gematikde.sharepoint.com/:w:/s/PTNeo/EczX7AFGfBdNrCYghzGsHz4BbSoYhV63QMmDCdz7x9zLpg?e=7wG3c[Welcome Package] Schritt 6 zu entnehmen. +Um das Signaturzertifikat (welches für die Signatur des `RegService-OpenID-Token` benötigt wird) abrufen zu können, müssen vorher ein Benutzeraccount und Berechtigungen über weitere Service-Requests für die Organisation und den Benutzer (nur Root-User) im TI-ITSM-System beantragt werden. Weitere Information können dem im https://fachportal.gematik.de/anwendungen/ti-messenger[Fachportal] bereitgestelltem Welcome Package (Schritt 6) entnommen werden. Zugang zum PMS: @@ -60,7 +56,7 @@ Zugang zum PMS: * PU: https://auth.ti-dienste.de/my.policy ==== Erstellung des Signaturzertifikates für den Anbeiter -Für die Signierung eines `RegService-OpenID-Token` durch den *Registrierungs-Dienst* eines *TI-Messenger-Fachdienstes* wird ein Signaturzertifikat der PKI der Telematikinfrastruktur benötigt. Das Zertifikat muss den Typ `C.FD.SIG` und die technische Rolle `oid_tim` haben. Die Beantragung des Signaturzertifikates erfolg über das TI-ITSM-System und ist anschließend über das PMS abrufbar (siehe hierzu https://gematikde.sharepoint.com/:w:/s/PTNeo/EczX7AFGfBdNrCYghzGsHz4BbSoYhV63QMmDCdz7x9zLpg?e=7wG3c[Welcome Package] Schritt 6) +Für die Signierung eines `RegService-OpenID-Token` durch den *Registrierungs-Dienst* eines *TI-Messenger-Fachdienstes* wird ein Signaturzertifikat der PKI der Telematikinfrastruktur benötigt. Das Zertifikat muss den Typ `C.FD.SIG` und die technische Rolle `oid_tim` haben. Die Beantragung des Signaturzertifikates erfolg über das TI-ITSM-System und ist anschließend über das PMS abrufbar. Weitere Information können dem im https://fachportal.gematik.de/anwendungen/ti-messenger[Fachportal] bereitgestelltem Welcome Package (Schritt 6) entnommen werden. ==== Beantragung der TI-Provider-Credentials am VZD-FHIR-Directory @@ -68,6 +64,6 @@ Initial muss der Anbieter eines *TI-Messenger-Dienstes* `TI-Provider-Credentials === Bekanntmachung des Registrierungs-Dienstes am zentralen IDP-Dienst -Es besteht bereits eine abgeschlossene Scope-Registrierung am zentralen *IDP-Dienst* für den *TI-Messenger-Dienst*. Daher ist es nur erforderlich ber der gematik eine `client_id` für den *Registrierungs-Dienst* zu beantragen. Hierfür benötigt die gematik im Registrierungsformular die `redirect_uri` des *Registrierungs-Dienstes*, die zu der `client_id` registriert wird. Das Registrierungsformular kann unter idp-registrierung@gematik.de angefragt werden. Nach der Registrierung erhält der Anbieter die registrierte `client_id` sowie den Download-Endpunkt des Discovery Documentes des zentralen *IDP-Dienstes*. Weitere Informationen sind im https://gematikde.sharepoint.com/:w:/s/PTNeo/EczX7AFGfBdNrCYghzGsHz4BbSoYhV63QMmDCdz7x9zLpg?e=7wG3c[Welcome Package] Schritt 5 zu finden. +Es besteht bereits eine abgeschlossene Scope-Registrierung am zentralen *IDP-Dienst* für den *TI-Messenger-Dienst*. Daher ist es nur erforderlich ber der gematik eine `client_id` für den *Registrierungs-Dienst* zu beantragen. Hierfür benötigt die gematik im Registrierungsformular die `redirect_uri` des *Registrierungs-Dienstes*, die zu der `client_id` registriert wird. Das Registrierungsformular kann unter idp-registrierung@gematik.de angefragt werden. Nach der Registrierung erhält der Anbieter die registrierte `client_id` sowie den Download-Endpunkt des Discovery Documentes des zentralen *IDP-Dienstes*. Weitere Information können dem im https://fachportal.gematik.de/anwendungen/ti-messenger[Fachportal] bereitgestelltem Welcome Package (Schritt 5) entnommen werden. diff --git a/docs/Fachdienst/MessengerService.adoc b/docs/Fachdienst/MessengerService.adoc index 62ef21b7..dd5ef495 100644 --- a/docs/Fachdienst/MessengerService.adoc +++ b/docs/Fachdienst/MessengerService.adoc @@ -18,47 +18,49 @@ image:meta/gematik_logo.svg[width=70%] toc::[] = Messenger-Service +Die folgende Seite gibt einen kurzen Überblick über die Funktionalitäten und Komponeten des *Messenger-Service* und beschreibt die Unterschiede des *Messenger-Service* für die unterschiedlichen Produktausprägungen des *TI-Messengers*. Details sind den Spezifikationen auf den link:https://gemspec.gematik.de/[gemspec Pages] der gematik zu entnehmen. + == Überblick -Ein *Messenger-Service* besteht immer aus den zwei Teilkomponenten *Messenger-Proxy* und *Matrix-Homeserver*. Der *Messenger-Proxy* dient als Prüfinstanz und leitet alle Anfragen an den *Matrix-Homeserver* weiter. Der *Matrix-Homeserver* basiert auf dem offenen Kommunikationsprotokoll link:https://spec.matrix.org/v1.3/[Matrix]. Welche Schnittstellen der *Messenger-Service* nutzt und anbietet ist in der folgenden Abbildung dargestellt: +Der *Messenger-Service* ist eine Teilkomponente des *TI-M Fachdienstes* und wird für Organisationen des Gesundheitswesens (z. B. Arztpraxis, Krankenhaus, Krankenkasse, Apotheke, Verband, Kostenträger etc.) bereitgestellt. Der *Messenger-Service* besteht aus einem *Matrix-Homeserver* (basierend auf dem Matrix-Protokoll) und einem *Messenger-Proxy*. Dieser stellt sicher, dass eine Kommunikation mit anderen Messenger-Services, als Teil des *TI-M Dienstes*, nur innerhalb der gemeinsamen *TI-Föderation* erfolgt. Der *Matrix-Homeserver* basiert auf dem offenen Kommunikationsprotokoll link:https://spec.matrix.org/[Matrix]. Welche Schnittstellen der *Messenger-Service* nutzt und anbietet ist in der folgenden Abbildung dargestellt: + +image::generated/TI-M_Basis/API-Messenger-Service.svg[align="center",width="55%"] -++++ -

- -

-++++ +==== Authentifizierungsverfahren +*Messenger-Services* können den Akteuren unterschiedliche Authentifizierungsverfahren anbieten. Dabei können diverse Authentifizierungsmechanismen durch eine Organisation für Ihre Akteure bereitgestellt werden. Die Organisation und der von ihr gewählte *TI-Messenger-Anbieter* vereinbaren das zur Anwendung kommende Authentifizierungsverfahren bilateral und stimmen sich über die technische Realisierung der dafür notwendigen Anbindung ab. == Messenger-Proxy -=== Schnittstellen -==== Matrix Client-Server / Server-Server API +Der *Messenger-Proxy* agiert neben der Funktion als Proxy zur Weiterleitung aller Server-Server-API- und Client-Server-API-Aufrufe an den *Matrix-Homeserver* als Kontrollinstanz zur Prüfung der für die Kommunikation notwendigen Rechte. Hierfür muss der *Messenger-Proxy* für alle Server-Server- und Client-Server-API-Endpunkte genutzt werden und ist für die Regelung der gemäß Matrix Client-Server-API und Matrix-Server-Server-API geltenden Aufrufe zuständig. + +==== Client-Server Prüfungen Der *Messenger-Proxy* als Prüfinstanz aller eingehenden, sowie ausgehenden Anfragen zum *Matrix-Homeserver* ist für die Regelung der gemäß Matrix-Client-Server-API und Matrix-Server-Server-API geltenden Aufrufe zuständig. Daher ist es erforderlich, dass der *Messenger-Proxy* für jeden *Messenger-Service* als Forward- sowie Reverse-Proxy bereitgestellt wird. Die folgende Abbildung verdeutlicht die beide gerade skizzierten Funktionsweisen. -++++ -

- -

-++++ -Bei Aufruf der Client-Server-API durch einen *TI-Messenger-Client* aus dem Internet fungiert der *Messenger-Proxy* als Reverse-Proxy. Beim Aufruf der Server-Server-API im Rahmen einer Server-To-Server Kommunikation fungiert der *Messenger-Proxy* als Forward-, sowie als Reverse-Proxy. -CAUTION: Der *Messenger-Proxy* routet gültige Anfragen zum *Matrix-Homeserver* und muss nicht selbst das Matrix-Protokoll implementieren. +image::generated/TI-M_Basis/Pruefungen_Messenger_Proxy.svg[width="100%"] -==== Authentifizierungsverfahren -Diese von der gematik nicht normativ vorgegebene Schnittstelle wird benötigt, um die geforderte 2-Faktor-Authentifizierung zu realisieren, da diese Funktionalität aktuell von keinem *Matrix-Homeserver* angeboten wird (siehe link:https://github.com/matrix-org/matrix-spec-proposals/pull/1998[MSC1998]). Hierfür muss der *Messenger-Proxy* die Möglichkeit bieten, mit externen Authentisierungsdiensten zu interagieren. +Bei Aufruf der Client-Server-API durch einen *TI-Messenger-Client* aus dem Internet fungiert der *Messenger-Proxy* als Reverse-Proxy. Beim Aufruf der Server-Server-API im Rahmen einer Server-To-Server Kommunikation fungiert der *Messenger-Proxy* als Forward-, sowie als Reverse-Proxy. -TIP: Mit der zukünftigten Unterstützung von link:https://areweoidcyet.com[OIDC] durch die *Matrix-Homeserver*, wird die geforderte Unterstützung durch den *Messenger-Proxy* nicht mehr benötigt. +Die folgenden Prüfungen sind durch den *Messenger-Proxy* durchzuführen: +- Der *Messenger-Proxy* muss sicherstellen, dass beim Anlegen eines Raumes das Attribut `invite` mit maximal einer *MXID* befüllt ist. +- Bei jedem `Invite-Event` muss der *Messenger-Proxy* prüfen, ob die in der Anfrage enthaltenen Matrix-Domains zur *TI-Föderation* gehören. +- Der *Messenger-Proxy* muss bei eingehender Kommunikation auf die Medien-Endpunkte die Pfadkomponente {serverName} auf Föderationszugehörigkeit prüfen -==== I_TiMessengerContactManagement -Der *Messenger-Proxy* muss die Schnittstelle `I_TiMessengerContactManagement` als REST-Webservice über HTTPS gemäß link:/src/openapi/TiMessengerContactManagement.yaml[TiMessengerContactManagement.yaml] umsetzen, um den *TI-Messenger-Clients* die Verwaltung einer persönlichen Freigabeliste zu ermöglichen. -Die Schnittstelle findet u.a. Verwendung in link:/docs/anwendungsfaelle/COM-AF10061-einladung-ausserhalb.adoc[AF_10061 - Einladung von Akteuren außerhalb einer Organisation]. +==== Server-Server Prüfungen +In der Funktion als Server-Server Proxy prüft der Messenger-Proxy alle ausgehenden sowie eingehenden Events. Damit fungiert der Server-Server Proxy sowohl als Forward als auch als Reverse-Proxy. +Die folgenden Prüfungen sind durch den *Messenger-Proxy* durchzuführen: +- Bei jedem Event muss der *Messenger-Proxy* die Föderationszugehörigkeit der im Event enthaltenen Matrix-Domains prüfen. +- Ist auf einem eingehenden Request, im *Authorization-Header* das Attribut `origin` gesetzt, so muss der *Messenger-Proxy* den enthaltenen Servernamen auf Föderationszugehörigkeit prüfen. +- Ist auf einem ausgehenden Request, im *Authorization-Header* das Attribut `destination` gesetzt, so muss der *Messenger-Proxy* den enthaltenen Servernamen auf Föderationszugehörigkeit prüfen. +- Der *Messenger-Proxy* muss bei ausgehender Kommunikation zum Endpunkt `/.well-known/matrix/server` den im Host-Header enthaltenen Servernamen auf Föderationszugehörigkeit prüfen. +- Der *Messenger-Proxy* muss bei ausgehender Kommunikation auf die Medien-Endpunkte die Pfadkomponente {serverName} auf Föderationszugehörigkeit prüfen -=== Berechtigungsprüfung -Die Berechtigungsprüfung findet bei der Client-Server Kommunikation sowie bei der Server-Server Kommunikation statt (siehe link:/docs/anwendungsfaelle/MS-stufen-berechtigungspruefung.adoc[Stufen der Berechtigungsprüfung]). +=== HTTPS-Forwarding +Die Kommunikation des *Matrix-Homeservers* in das Internet muss immer über den eigenen *Messenger-Proxy* (in der Funktion als Forward-Proxy) erfolgen. + +==== Ausnahmeregeln definieren +Für bestimmte Funktionalitäten ist es notwendig, dass Anfragen nicht durch die Berechtigungsprüfung des *Messenger-Proxys* abgelehnt werden. So muss eine Anfrage des *VZD-FHIR-Directory* an die link:https://spec.matrix.org/v1.11/server-server-api/#getwell-knownmatrixserver[.well-known] Datei erlaubt sein, um einen eigenen Port für Anfragen des *VZD-FHIR-Directoy* zu hinterlegen, um später über diesen Port den `/_matrix/federation/v1/openid/userinfo`-Endpunkt aufzurufen. Hierzu muss der *Messenger-Proxy* ebenfalls den Zugriff erlauben, damit das *VZD-FHIR-Directory* einen `Matrix-OpenID-Token` prüfen lassen kann. -=== Betriebliche Aspekte ==== Abruf und Signaturprüfung der Föderationsliste Eine aktuelle Version der Föderationsliste wird vom *Messenger-Proxy* über die Schnittstelle `I_internVerification` abgerufen. Der Abruf erfolgt entweder zyklisch über ein vom Anbieter definiertes Intervall oder im Rahmen der Föderationsprüfung, wenn eine Domain in der aktuell vorliegenden Liste nicht enthalten ist. -Der *Messenger-Proxy* muss sicherstellen, dass die vom *Registrierungs-Dienst* bereitgestellte Föderationsliste valide ist. Hierzu muss der *Messenger-Proxy* die Signatur der Föderationsliste unter Verwendung des mitgelieferten Signaturzertifikates (`x5c`-Header) überprüfen (siehe link:/docs/anwendungsfaelle/MS-aktualisierung-foederationsliste.adoc[Aktualisierung der Föderationsliste]). - -==== .well-known & userinfo -Für bestimmte Funktionalitäten ist es notwendig, dass Anfragen nicht durch die Berechtigungsprüfung des *Messenger-Proxys* abgelehnt werden. So muss eine Anfrage des *VZD-FHIR-Directory* an die link:https://spec.matrix.org/v1.3/server-server-api/#getwell-knownmatrixserver[.well-known] Datei erlaubt sein, um einen eigenen Port für Anfragen des *VZD-FHIR-Directoy* zu hinterlegen, um später über diesen Port den `/_matrix/federation/v1/openid/userinfo`-Endpunkt aufzurufen. Hierzu muss der *Messenger-Proxy* ebenfalls den Zugriff erlauben, damit das *VZD-FHIR-Directory* einen `Matrix-OpenID-Token` prüfen lassen kann. +Der *Messenger-Proxy* muss sicherstellen, dass die vom *Registrierungs-Dienst* bereitgestellte Föderationsliste valide ist. Hierzu muss der *Messenger-Proxy* die Signatur der Föderationsliste unter Verwendung des mitgelieferten Signaturzertifikates (`x5c`-Header) überprüfen. ==== logische Mandantentrennung Werden durch einen Anbieter eines *TI-Messenger-Fachdienstes* mehrere Matrix-Domains in einem gemeinsamen *Messenger-Service* betrieben, so muss die logische Trennung der Matrix-Domains sichergestellt werden. Die Art der Umsetzung bleibt dem Hersteller eines *TI-Messenger-Fachdienstes* überlassen. @@ -67,14 +69,43 @@ TIP: Empfehlung der gematik ist eine Mandantentrennung über seperate *Messenger Eine mögliche Umsetzung wäre die Mandantentrennung über einen Matrix-Server zu realisieren, der mehrere Domains unterstützt. Diese Funktionalität wird aktuell von keinem Matrix-Server angeboten. -CAUTION: Bei einer logischen Mandantentrennung muss sichergestellt werden, dass die Prüfung der Föderationszugehörigkeit (Zuordnung SMC-B zu Domain) sichergestellt ist und jeder mandantenübergreifende Zugriff verhindert wird. +CAUTION: Bei einer logischen Mandantentrennung muss sichergestellt werden, dass die Prüfung der Föderationszugehörigkeit (Zuordnung SM\(C)-B zu Domain) sichergestellt ist und jeder mandantenübergreifende Zugriff verhindert wird. == Matrix-Homeserver -Der *Matrix-Homeserver* muss die link:https://spec.matrix.org/v1.3/server-server-api/[Server-Server API] und link:https://spec.matrix.org/v1.3/client-server-api/[Client-Server API] gemäß der Matrix-Spezifikationen in der Version v1.3 umsetzen. +Der *Matrix-Homeserver* ist die zentrale Komponente für die Kommunikation zwischen den Akteuren und stellt den *TI-M Clients* die in der Matrix Spezifikation definierten Endpunkte zur Verfügung. Der Matrix-Homeserver verwaltet die Akteure selbst oder bietet eine Schnittstelle für einen externen Identity Provider an, um das Authentifizierungsverfahren der Organisation nachnutzen zu können. + +TIP: Als Referenz für einen Homeserver wird die link:https://github.com/element-hq/synapse[synapse Referenzimplementierung] empfohlen. + +=== Matrix-Version +Der *Matrix-Homeserver* muss die + +- Client-Server API +- Server-Server API +- Matrix Appendices + +in der Version 1.11 der Matrix-Spezifikation unterstützen. + +TIP: Von der gematik wurden Anpassungen an der 1.11 Spezifikation vorgenommen, die den Spezifikationen auf den link:https://gemspec.gematik.de/[gemspec Pages] der gematik zu entnehmen sind. + +CAUTION: Die momentan in der Zulassung referenzierte Version 1.3 der Matrix-Spezifikation wird als `deprecated` gesetzt und ein zeitnaher Umstieg allen Zulassungsnehmern empfohlen. + += TI-M Pro Besonderheiten +== Auflösen der IK-Nummer zu einer Domain +Damit ein Akteur in der Rolle *User* den *TI-M Client Pro* nutzen kann, um die MXID mit Hilfe von vorliegenden Stammdaten (KVNR und IK-Nummer) zu generieren, ist es notwendig eine Schnittstelle zu schaffen, die Auskunft über die Domain liefert, auf der Versicherte mit einer bestimmten IK-Nummer ihren Account haben. + +Des Weiteren muss der *TI-M Client Pro* in der Lage sein zu bestimmen ob eine MXID zu einem TI-M ePA Fachdienst für Versicherte gehört damit das Berechtigungskonzept clientseitig durchgesetzt werden kann. Hierfür bedarf es einer Schnittstelle mittels welcher festgestellt werden kann ob ein Matrix Servername einen Versichertenserver darstellt. + +Um diese Auflösung zu ermöglichen wurde die API link:../../src/openapi/TiMessengerInformation.yaml[TiMessengerInformation] geschaffen. -Der *Matrix-Homeserver* eines *Messenger-Services*: += TI-M ePA Besonderheiten +== Authentifizierungsverfahren +Der *Messenger-Service* muss für die Authentifizierung der Akteure in der Rolle *Versicherter* an den *sektoralen IDP* angeschlossen werden. Hierfür ist es notwendig, dass der *TI-Messenger Service für ePA* für die Registrierung eines neuen Accounts und für das Login eines Akteurs in der Rolle *Versicherter* den *OIDC authorization code flow mit pushed authorization requests* am *sektoralen IDP* unterstützt. - - muss Anfragen vom eigenen *Messenger-Proxy* akzeptieren und - - Anfragen anderer *Messenger-Proxies* NICHT akzeptieren. +== Unterbindung der Versichertenkommunikation +Ein *TI-M Messenger-Service ePA* soll verhindern, dass ein User in der Rolle *Versicherter* einen anderen *Versicherten* einladen kann. Die Prüfung der Einladung ist sowohl an der *Client-Server-API*, als auch an der *Server-Server-API* zu realisieren. -TIP: Als Referenz für einen Homeserver wird die link:https://github.com/matrix-org/synapse/[synapse Referenzimplementierung] empfohlen. +== Ergänzungen/Einschränkungen zur Matrix Spezifikation +- Der *Matrix-Homeserver* muss die Anlage öffentlicher Räume durch einen Akteur in der Rolle Versicherter unterbinden. +- Der *TI-M Fachdienst ePA* muss Requests zu den Endpunkten für die Profilinformationen mit einer HTTP 403 Response ablehnen, sofern der anfragende Nutzer keine gemeinsamen Räume mit dem angefragten Nutzer hat. +- Der *TI-M Fachdienst ePA* darf über die user directory search *KEINE* Profile von Nutzern ausliefern, die keine gemeinsamen Räume mit dem anfragenden Nutzer haben. +- Der *TI-M Fachdienst ePA* muss in regelmäßigen Abständen (konfigurierbares Intervall) lokale Nutzer aus Räumen entfernen, in denen sich nur Versicherte befinden. \ No newline at end of file diff --git a/docs/Fachdienst/Registrierungsdienst.adoc b/docs/Fachdienst/Registrierungsdienst.adoc index b710573b..458350f1 100644 --- a/docs/Fachdienst/Registrierungsdienst.adoc +++ b/docs/Fachdienst/Registrierungsdienst.adoc @@ -7,7 +7,6 @@ ifdef::env-github[] endif::[] :imagesdir: ../../images -:docsdir: ../../docs :toc: macro :toclevels: 5 :toc-title: Inhaltsverzeichnis @@ -19,177 +18,43 @@ toc::[] = Registrierungs-Dienst == Überblick -Der *Registrierungs-Dienst* gibt dem Anbieter eines *TI-Messenger-Fachdienstes* die Möglichkeit, *Messenger-Services* automatisch authentifizierten Organisationen zur Verfügung zu stellen und die Matrixdomäne der *Messenger-Services* in die Föderationsliste des *VZD-FHIR-Directory* aufzunehmen. Als weitere Funktion bietet der *Registrierungs-Dienst* eines *TI-Messenger-Fachdienstes* die Bereitstellung einer Föderationsliste für die *Messenger-Proxies* seiner *Messenger-Services* an. - -Das folgende Bild zeigt die Schnittstellen des *Registrierungs-Dienstes*, die in den folgenden Kapiteln weiter beschrieben werden. - -++++ -

- -

-++++ +Die folgende Seite gibt einen kurzen Überblick über die Funktionalitäten des *Registrierungs-Dienstes* und beschreibt die Unterschiede für den *Registrierungs-Dienst* in unterschiedlichen Produktausprägungen des *TI-Messengers*. Details sind den Spezifikationen auf den link:https://gemspec.gematik.de/[gemspec Pages] der gematik zu entnehmen. == Schnittstelle: I_Registration -Die abstrakte Schnittstelle `I_Registration` muss die folgenden Funktionalitäten anbieten: +Über die Schnittstelle `I_Registration` werden 2 Funktionen bereitgestellt. Zum einen kann die eigene Organisation (z. B. per SM\(C)-B) registriert werden, um einen Admin-Account zu erhalten. Zum anderen können anschließend über die Schnittstelle neue *Messenger-Services* bereitgestellt werden. Die Ausgestaltung des Frontends sowie der Schnittstelle `I_Registration` ist dem jeweiligen TI-Messenger-Hersteller überlassen. -* Die Authentisierung einer Organisation am *TI-Messenger-Dienst* (siehe link:{docsdir}/anwendungsfaelle/MS-AF10103-authentisieren-organisation.adoc[AF_10103]) und -* Die Möglichkeit der Bereitstellung eines *Messenger-Services* für eine Organisation (siehe link:{docsdir}/anwendungsfaelle/MS-AF10060-bereitstellung-messenger-service.adoc[AF_10060]) +=== Authentisieren einer Organisation +Die abstrakte Schnittstelle `I_Registration` muss es einer Organisation ermöglichen sich mittels der SM\(C)-B der Organisation zu authentisieren. Der *Registrierungs-Dienst* kann hierfür einen Prozess mittels OpenID-Connect oder KIM anbieten. -CAUTION: Für die initiale Registrierung einer Organisation am *TI-Messenger-Fachdienst* ist die Verwendung der SMC-B notwendig und somit die Verwendung von einem Konnektor und Kartenterminal Voraussetzung. +=== Bereitstellung eines Messenger-Service +Nach erfolgreicher Authentifizierung einer Organisation am *Registrierungs-Dienst* wird ein Admin-Account für die Organisation auf dem Registrierungs-Dienst angelegt. Unter Verwendung des bereitgestellten Admin-Kontos können *Messenger-Services* für die Organisation erstellt werden. Um einen neuen *Messenger-Service* zu erstellen, muss ein *Registrierungs-Dienst*: -Im folgenden werden die umzusetzenden Funktionalitäten der Schnittstelle beschrieben. +. sich gegenüber dem Endpunkt `/tim-provider-services` gemäß https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Authenticate.adoc#authenticate-for-the-provider-api[Authentisierung für die Anbieter-API] authentisieren und +. die neue Domäne zur Föderationsliste https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Provider.adoc#add-own-domain[hinzufügen]. -=== Bereitstellung von Webschnittstellen -Die von der abstrakten Schnittstelle `I_Registration` angebotene Funktionalität soll als Webschnittstelle bereitgestellt werden, die von einem Akteur über einen Webclient (*Frontend des Registrierungs-Dienstes*) genutzt wird. Diese muss für alle Akteure im Internet verfügbar sein. +TIP: +Wenn für die Auflösung der Matrix Domains Redirects verwendet werden, dann müssen diese ebenfalls in der Föderationsliste hinterlegt werden. Sonst kann der Zugriff auf den `/getInfo` Endpunkt durch das *VZD-FHIR-Directory* nicht gewährleistet werden. (Die Firewall des *VZD-FHIR-Directorys* blockiert sonst den Zugriff auf die Redirect Domains, wenn diese nicht in der "Allowlist" hinterlegt werden. Das Hinterlegen für die Firewall erfolgt automatisch, wenn die Redirects in der Föderationsliste hinterlegt werden) -=== Authentisieren einer Organisation -Die abstrakte Schnittstelle `I_Registration` muss es einer Organisation ermöglichen sich mittels der SMC-B der Organisation zu authentisieren. Der *Registrierungs-Dienst* kann hierfür einen Prozess mittels OpenID-Connect oder KIM anbieten. In beiden Varianten muss der *Registrierung-Dienst* die `TelematikID` und auch die `ProfessionOID` der Organisation validieren & speichern. Nach erfolgreicher Authentifizierung durch den *Registrierungs-Dienst* wird ein Administratorkonto für die Organisation bereitgestellt. Weitere Details finden Sie unter link:{docsdir}/anwendungsfaelle/MS-AF10103-authentisieren-organisation.adoc[AF_10103]. +== Schnittstelle: I_Admin +Über die Schnittstelle `I_Admin` stellt der *Registrierungs-Dienst* dem Akteur in der Rolle *Org-Admin* Funktionen zur Verwaltung der eigenen *Messenger-Services* zur Verfügung. -=== Bereitstellung eines Messenger-Service -Nach dem Authentifizierungsvorgang muss das bereitgestellte Admin-Konto verwendet werden, um *Messenger-Services* für die Organisation zu erstellen. Um einen neuen *Messenger-Service* zu erstellen, muss ein *Registrierungs-Dienst*: +== Schnittstelle: I_internVerification +Über die Schnittstelle `I_internVerification` stellt der *Registrierungs-Dienst* den angeschlossenen *Messenger-Proxies* Funktionen bereit um Verwaltungsaufgaben an der Schnittstelle `I_VZD_TIM_Provider_Services` des *VZD-FHIR-Directory* durchzuführen. -. sich gegenüber dem Endpunkt `/tim-provider-services` gemäß https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.1/docs/FHIR_VZD_HOWTO_Authenticate.adoc#22-authenticate-for-the-provider-api[Authentisierung für die Anbieter-API] authentisieren und -. die neue Domäne zur Föderationsliste https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.1/docs/FHIR_VZD_HOWTO_Provider.adoc#24-add-own-domain[hinzufügen]. += TI-M Pro Besonderheiten +Dieser Abschnitt beschreibt die besonderen Eigenschaften die für einen *TI-M Pro Registrierungs-Dienst* gelten. == Schnittstelle: I_requestToken -Die abstrakte Schnittstelle `I_requestToken` wird vom *Registrierungs-Dienst* zur Verfügung gestellt, um ein `RegService-OpenID-Token` anzufordern, das gegen ein `owner-accesstoken` am *Auth-Service* des *VZD-FHIR-Directory* ausgetauscht werden kann. Die Schnittstelle ist nur für Akteure in der Rolle "Org-Admin" zugänglich, um im Anschluß die FHIR-Ressourcen der Organisation im *VZD-FHIR-Directory* verwalten zu können. - -=== Vorbedingungen -Damit der *Registrierungs-Dienst* in die Lage versetzt wird, `RegService-OpenID-Token` ausstellen zu können, müssen die folgenden Vorbedingungen erfüllt werden. - -* link:{docsdir}/Fachdienst/Fachdienst.adoc#213-erstellung-des-signaturzertifikates-f%C3%BCr-den-anbeiter[Bekanntmachung des Registrierungs-Dienstes] beim Anbieter des *VZD-FHIR-Directory* und -* Sicherung der `TelematikID` und der `ProfessionOID` der Organisation im Rahmen der link:{docsdir}/Fachdienst/Registrierungsdienst.adoc#authentisieren-einer-organisation[Bestellung des TI-Messenger-Dienstes] - -=== Aufbau des RegService-OpenID-Token -Das `RegService-OpenID-Token` ist ein JWT und mit den folgenden Inhalten zu füllen: -[source,json] ----- -{ - "alg": "BP256R1", - "typ": "JWT" - "x5c": [ - "" ] -} -{ - "sub": "1234567890", - "iss": "", - "aud": "", - "professionOID": "", - "idNummer": "", - "iat": "1516239022", - "exp": "1516239022" -} ----- - -Für die Signatur des `RegService-OpenID-Token` ist der private Schlüssel des link:{docsdir}/Fachdienst/Fachdienst.adoc#213-erstellung-des-signaturzertifikates-f%C3%BCr-den-anbeiter[beantragten Signaturzertifikates] zu verwenden. - -TIP: *VZD-FHIR-Directory* Endpunkte: + +Über die Schnittstelle `I_requestToken` stellt der *Registrierungs-Dienst* `RegService-OpenID-Token` aus. Das Token wird für die Authentifizierung am *FHIR-Proxy* des *VZD-FHIR-Directory* benötigt, damit ein Akteur in der Rolle *Org-Admin* Organisationseinträge ändern kann. Das Token muss signiert werden, damit das *VZD-FHIR-Directory* dem Aussteller vertraut. Hierzu ist ein Zertifikat über einen *TI-ITSM Service Request* zu link:Fachdienst.adoc#213-erstellung-des-signaturzertifikates-f%C3%BCr-den-anbeiter[beantragen], welches im Anschluss für die Signatur genutzt werden kann. Weitere Details z.B. zum Aufbau und Inhalt des Tokens sind in link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.2.2/docs/FHIR_VZD_HOWTO_Authenticate.adoc#authenticate-with-an-regservice-openid-token[Authentisierung RegService-OpenID-Token] beschrieben. + +TIP: *VZD-FHIR-Directory* Endpunkte für den Austausch von `RegService-OpenID-Token` gegen ein `owner-accesstoken`: + - TU: https://fhir-directory-test.vzd.ti-dienste.de/owner-authenticate + - RU: https://fhir-directory-ref.vzd.ti-dienste.de/owner-authenticate + -- PU: https://vzd-fhir-directory.vzd.ti-dienste.de/owner-authenticate +- PU: https://fhir-directory.vzd.ti-dienste.de/owner-authenticate -=== Austausch des RegService-OpenID-Token -Das `RegService-OpenID-Token` kann am `/owner-authenticate`-Endpunkt des *Auth-Service* gegen ein `owner-accesstoken` eingetauscht werden. -Weitere Details sind in link:https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.1/docs/FHIR_VZD_HOWTO_Authenticate.adoc#231-authenticate-with-an-regservice-openid-token[Authentisierung RegService-OpenID-Token] beschrieben. -== Schnittstelle: I_internVerification -Bei der Schnittstelle `I_internVerification` handelt es sich um eine abstrakte Schnittstelle, deren Ausgestaltung dem Hersteller obliegt. - -Die Schnittstelle muss die folgenden Funktionalitäten bereitstellen: - -* Bereitstellung und Aktualisierung der Föderationsliste und -* Berechtigungsprüfung - Stufe 3 gemäß link:../anwendungsfaelle/MS-stufen-berechtigungspruefung.adoc[Berechtigungskonzept] - -TIP: Die geforderten Funktionalitäten dürfen auch über seperate Schnittstellen zur Verfügung gestellt werden. - -Die umzusetzenden Funktionalitäten werden im folgenden beschrieben. - -=== Bereitstellung und Aktualisierung der Föderationsliste. -Um die Zugehörigkeit zur TI-Messenger-Föderation zu verifizieren, muss der *Registrierungs-Dienst* den *Messenger-Proxies* über die abstrakte Schnittstelle `I_internVerification` eine aktuelle Föderationsliste zur Verfügung stellen. Dazu muss der *Registrierungs-Dienst* die Operation `/tim-provider-services/getFederationList` am *FHIR-Proxy* des *VZD-FHIR-Directory* aufrufen, um eine aktuelle Föderationsliste zu erhalten. Diese Schnittstelle ist am *VZD-FHIR-Directory* durch einen `ACCESS_TOKEN` geschützt (https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.1/docs/FHIR_VZD_HOWTO_Authenticate.adoc#22-authenticate-for-the-provider-api[provider-accesstoken]). Nach Erhalt des `provider-accesstokens` muss dieses im Authorization Header genutzt werden, um über die Operation https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.1/docs/FHIR_VZD_HOWTO_Provider.adoc#22-query-federationlist[getFederationList] eine aktuelle Föderationsliste abzufragen. - -TIP: Der Ablauf des Anwendungfalls zur Aktualisierung und Bereitstellung kann im Detail link:../anwendungsfaelle/MS-aktualisierung-foederationsliste.adoc[hier] nachvollzogen werden. - -Die aktuelle Struktur der Föderationsliste ist https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.1/src/schema/FederationList.json[hier] hinterlegt. - -Im folgenden ist ein Beispiel für den Aufbau der Föderationsliste gezeigt: - -*Struktur der Föderationsliste* -|==== -a| -[source, yaml] ----- -{ - "$id": "/schemas/FederationList", - "title": "Structure of FederationList", - "type": "object", - "properties": - { - "version": { - "description": "The version of the federation list", - "type": "integer", - "readOnly": true - }, - "domainList": { - "description": "The list of TI-Messenger domain names", - "type": "array", - "items": { - "domain": { - "description": "The TI-Messenger domain", - "type": "string" - }, - "telematikID": { - "description": "The telematikID of the organization ...", - "type": "string" - }, - "isInsurance": { - "description": "Indicates if it is ...", - "type": "boolean", - "default": false, - "example": false - }, - "timProvider": { - "description": "The Zuweisungsgruppe im...", - "type": "string" - }, - "required": ["domain", "telematikID", "isInsurance", "timProvider"] - } - } - } - } ----- -|==== - -=== Berechtigungsprüfung - Stufe 3 -Der *Registrierungs-Dienst* muss den *Messenger-Proxies* über die abstrakte Schnittstelle `I_internVerification` eine Funktion anbieten, mit der die Überprüfung auf `MXID`-Einträge im *VZD-FHIR-Directory* möglich ist. Zur Prüfung muss der *Registrierungs-Dienst* die Operation `whereIs (GET /tim-provider-services/localization)` am *FHIR-Proxy* des *VZD-FHIR-Directory* verwenden. Ein Beispielaufruf ist https://github.com/gematik/api-vzd/blob/gemILF_VZD_FHIR_Directory/1.0.1/docs/FHIR_VZD_HOWTO_Provider.adoc#query-mxid-location[hier] zu finden. - -TIP: Es kann nur eine `MXID` im URL Format beim Aufruf der Operation `whereIs` übergeben werden. - -_Hinweis: Die Funktionalität wird von den *Messenger-Proxies* benötigt, um bei einem `Invite`-Event die Berechtigungsstufe 3 erfolgreich prüfen zu können._ - -Response Aufbau des *FHIR-Proxies*: - -*Response Aufbau* -|==== -a| -[source, yaml] ----- -responses: - 200: - description: OK - content: - application/json: - schema: - type: string - enum: [org, pract, orgPract, none] - example: org | - *description:* + - Returns in which part of the directory the MXID (the request contains the hash of the MXID) is located: - - - `org`: Located in the Organization part + - - `pract`: Located in the Practitioner part + - - `orgPract`: Located in the Organization and Practitioner part + - - `none`: Not found in any part -|==== - -Das Prüfergebnis muss an die anfragenden *Messenger-Proxies* weitergereicht werden. += TI-M ePA Besonderheiten + +== Bereitstellung eines Messenger-Service für eine Organisation +Der *Registrierungs-Dienst* des *TI-M ePA Fachdienstes* darf nur Usern in der Rolle *Org-Admin* einen *Messenger-Service* bereitstellen, die sich mit einer SM\(C)-B für Kostenträger (professionOID 1.2.276.0.76.4.59) authentisiert haben. diff --git a/docs/Foederationsliste/Foederationsliste.adoc b/docs/Foederationsliste/Foederationsliste.adoc new file mode 100644 index 00000000..f0e81e5e --- /dev/null +++ b/docs/Foederationsliste/Foederationsliste.adoc @@ -0,0 +1,48 @@ +ifdef::env-github[] +:tip-caption: :bulb: +:note-caption: :information_source: +:important-caption: :heavy_exclamation_mark: +:caution-caption: :fire: +:warning-caption: :warning: +endif::[] + +:imagesdir: ../../images +:toc: macro +:toclevels: 5 +:toc-title: Table of Contents +:numbered: + +image:meta/gematik_logo.svg[width=70%] + +toc::[] + += Föderationsliste + +Um nicht zum TI-M Dienst gehörende Messenger-Services ausschließen zu können, werden die Domainnamen der Messenger-Services in einer Föderationsliste zusammengefasst. Diese wird durch das [gemSpec_VZD_FHIR_Directory] bereitgestellt und kann über die Schnittstelle `/tim-provider-services` von zugelassenen Anbietern verwaltet werden. In der Föderationsliste werden die folgenden Informationen zu den Messenger-Services gespeichert: + +[options="header"] +|================================================================================================================= +| Attribut | Beschreibung +| `domain` | The TI-Messenger domain +| `telematikID` | The telematikID of the organization that uses the TI-Messenger domain +| `isInsurance` | Indicates if it is a domain of a health insurance for insured persons +| `timProvider` | The Zuweisungsgruppe im TI-ITSM-System of the TI-Messenger Provider, who added the domain +|================================================================================================================= + +Das folgenden Beispiel zeigt exemplarisch die Einträge der gematiker Krankenkasse, die einen *TI-M FD ePA* für die Versicherten und einen *TI-M FD Pro* für die eigenen Mitarbeiter betreibt: +---- +{ + "domain": "versicherte.tim.gematiker-kk.de", + "telematikID": "4711-gem", + "timAnbieter": "GEM-0815", + "isInsurance": yes + }, + { + "domain": "mitarbeiter.tim.gematiker-kk.de", + "telematikID": "4711-gem", + "timAnbieter": GEM-0815, + "isInsurance": false + }, +} +---- + diff --git a/docs/IDP/idp.adoc b/docs/IDP/idp.adoc index 40934010..3b5e185a 100644 --- a/docs/IDP/idp.adoc +++ b/docs/IDP/idp.adoc @@ -7,7 +7,6 @@ ifdef::env-github[] endif::[] :imagesdir: ../../images -:docsdir: ../docs :toc: macro :toclevels: 6 :toc-title: Table of Contents @@ -22,15 +21,10 @@ toc::[] == Überblick Der zentrale *IDP-Dienst* der gematik (*[gemSpec_IDP_Dienst]*) ermöglicht die sichere Identifikation der Akteure anhand der ihnen bereitgestellten Identifikationsmittel einer Smartcard (SMC-B / HBA). Hierfür fasst der *IDP-Dienst*, die im AUT-Zertifikat befindlichen Attribute in signierten JSON Web Token (`ID_TOKEN`) zusammen und stellt diese der anfragenden *Relying Party* aus. Im Kontext des *TI-Messenger-Dienstes* übernimmt der *Registrierungs-Dienst* eines *TI-Messenger-Fachdienstes* sowie der *Auth-Service* des *VZD-FHIR-Directory* die Rolle der *Relying Party*, welche einen `ID_TOKEN` beim *IDP-Dienst* anfragt. -Der zentrale *IDP-Dienst* der gematik wird im Rahmen des *TI-Messenger-Dienstes* in den folgenden Anwendungsfällen benötigt: - -* link:https://github.com/gematik/api-ti-messenger/blob/main/docs/anwendungsfaelle/MS-AF10103-authentisieren-organisation.adoc[AF_10103 - Authentisieren einer Organisation am TI-Messenger-Dienst] -* link:https://github.com/gematik/api-ti-messenger/blob/main/docs/anwendungsfaelle/VZD-AF10058-practitioner-hinzufuegen.adoc[AF_10058 - Akteur (User-HBA) im Verzeichnisdienst hinzufügen] - -In den folgenden Kapiteln werden die notwendigen Maßnahmen / Abläufe beschrieben, um die in den Anwendungsfällen geforderte Authentifizierung via OpenID Connect durchführen zu können. +In den folgenden Kapiteln werden die notwendigen Maßnahmen / Abläufe beschrieben, um die in der Spezifikation geforderte Authentifizierung via OpenID Connect durchführen zu können. == Registrierung der Relying Party am IDP-Dienst -Im Rahmen des *TI-Messenger-Dienstes* ist es notwendig, dass der *TI-Messenger-Anbieter* einer *Relying Party* (*Registrierungs-Dienst*) diesen beim zentralen *IDP-Dienst* der gematik registriert, um von diesem `ID_TOKEN` ausgestellt zu bekommen. Die Registrierung der *Relying Party* erfolgt hierbei als organisatorischer Prozess (siehe bitte https://gematikde.sharepoint.com/:w:/s/PTNeo/EczX7AFGfBdNrCYghzGsHz4BbSoYhV63QMmDCdz7x9zLpg?e=7wG3c[Welcome Package] 5. Schritt). +Im Rahmen des *TI-Messenger-Dienstes* ist es notwendig, dass der *TI-Messenger-Anbieter* einer *Relying Party* (*Registrierungs-Dienst*) diesen beim zentralen *IDP-Dienst* der gematik registriert, um von diesem `ID_TOKEN` ausgestellt zu bekommen. Die Registrierung der *Relying Party* erfolgt hierbei als organisatorischer Prozess. Weitere Information können dem im https://fachportal.gematik.de/anwendungen/ti-messenger[Fachportal] bereitgestelltem Welcome Package (Schritt 5) entnommen werden. Bei der Registrierung der *Relying Party* muss der *TI-Messenger-Anbieter* die Adresse(n) (`redirect_uri`) der gematik mitteilen. Zu der `redirect_uri` wird eine `client_id` für die *Relying Party* registriert. Die `client_id` wird von der gematik vergeben und nach Abschluss der Registrierung dem *TI-Messenger-Anbieter* mitgeteilt.  @@ -117,7 +111,7 @@ PU: https://idp.app.ti-dienste.de/auth RU: https://idp-ref.app.ti-dienste.de/token + PU: https://idp.app.ti-dienste.de/token -In den folgenden Unterkapiteln werden die Endpunkte weiter beschrieben. +In den folgenden Unterkapiteln werden die Endpunkte weiter beschrieben. ==== Discovery-Endpunkt Das Discovery Dokument ist ein Base64 kodiertes Metadatendokument, das den Großteil der Informationen enthält, die für eine Anwendung zum Durchführen einer Anmeldung erforderlich sind. Hierzu gehören Informationen wie z. B. die zu verwendenden Schnittstellen und der Speicherort der öffentlichen Signaturschlüssel des *IDP-Dienstes*. @@ -321,15 +315,10 @@ TIP: Der Token-Endpunkt DARF `ID_TOKEN` mit einer Gültigkeitsdauer von mehr als Im ersten Schritt entschlüsselt die *Relying Party* das `ID_TOKEN` mit seinem selbst erzeugten 256-Bit AES-Schlüssel (`Token-Key`). Anschließend erfolgt die Signaturprüfung mit dem `PuK_IDP_SIG` des *IDP-Dienstes*. == Authorization Code Flow -In dem folgenden Sequenzdiagramm ist beispielhaft der Ablauf des Authorization Code Flow für den Anwendungsfall link:https://github.com/gematik/api-ti-messenger/blob/main/docs/anwendungsfaelle/MS-AF10103-authentisieren-organisation.adoc[AF_10103 - Authentisieren einer Organisation am TI-Messenger-Dienst] dargestellt. Im Kontext des *TI-Messenger-Dienstes* ist der *Registrierungs-Diens* die *Relying Party*. Als *Authenticator* wird der von der gematik bereitgestellte *Authenticator* verwendet. +In dem folgenden Sequenzdiagramm ist beispielhaft der Ablauf des Authorization Code Flow beim Authentisieren einer Organisation am TI-Messenger-Dienst dargestellt. Im Kontext des *TI-Messenger-Dienstes* ist der *Registrierungs-Diens* die *Relying Party*. Als *Authenticator* wird der von der gematik bereitgestellte *Authenticator* verwendet. -CAUTION: Der von der gematik bereitgestellte Authenticator wird nicht in Verbindung mit einer Web-Anwendung empfohlen, da vom Authenticator ein neuer Browser Tab geöffnet wird. Entsprechend der Fachanwendung wird im Browser eine HTML-Seite oder ein Json-Objekt(VZD-FHIR Response) angezeigt. +CAUTION: Der von der gematik bereitgestellte Authenticator wird nicht in Verbindung mit einer Web-Anwendung empfohlen, da vom Authenticator ein neuer Browser Tab geöffnet wird. Entsprechend der Fachanwendung wird im Browser eine HTML-Seite oder ein Json-Objekt(VZD-FHIR Response) angezeigt. Die Abbildung zeigt die Verwendung des *Authenticators* mit der Auto-Redirect Funktion (`callback=DIRECT`) bei der die `redirect_uri` direkt vom Authenticator aufgerufen wird und der Browserclient über Polling beim Fachdienst den Status des Austausches des Tokens abfragt. Details zur Interaktion mit dem *Authenticator* sind in Kapitel _Interaktion mit der Fachanwendung_ beschrieben. Alternativ könnte der *Authenticator* beim Aufruf der `redirect_uri` eine nutzerfreundliche Webseite der *Relying Party* in einem neuen Browsertab öffnen. -++++ -

- -

-++++ - +image::generated/Other/idp.svg[width="100%"] diff --git a/docs/Primaersystem/Primaersystem.adoc b/docs/Primaersystem/Primaersystem.adoc index 675ff22e..6829b855 100644 --- a/docs/Primaersystem/Primaersystem.adoc +++ b/docs/Primaersystem/Primaersystem.adoc @@ -7,7 +7,6 @@ ifdef::env-github[] endif::[] :imagesdir: ../../images -:docsdir: ../docs :toc: macro :toclevels: 6 :toc-title: Table of Contents diff --git a/docs/Test/Test.adoc b/docs/Test/Test.adoc new file mode 100644 index 00000000..77a9bed7 --- /dev/null +++ b/docs/Test/Test.adoc @@ -0,0 +1,158 @@ +ifdef::env-github[] +:tip-caption: :bulb: +:note-caption: :information_source: +:important-caption: :heavy_exclamation_mark: +:caution-caption: :fire: +:warning-caption: :warning: +endif::[] + +:imagesdir: ../../images +:toc: macro +:toclevels: 6 +:toc-title: Table of Contents +:numbered: +:sectnumlevels: 6 + +image:meta/gematik_logo.svg[width=70%] + += Testkonzept TI-Messenger-Dienst +gematik +| Version 1.0 | Stand: 26.03.2024 + +Dokumentenhistorie +[cols='10%,10%,10%,60%,10%'] +|=== +| *Version* |*Stand* | *Kap.* | *Grund der Änderung, besondere Hinweise* | *Bearbeiter* +| 1.0 | 26.03.2024 | | initiale Erstellung | gematik +|=== + +toc::[] + +== Test und Zertifizierung der TI-Messenger +Für die Produkt- und die Anbieter-Zulassung MÜSSEN die TI-Messenger-Fachdienste (TI-M FD) und TI-Messenger-Clients (TI-M Client) bereitgestellt werden, um einen automatisierten Test für den TI-Messenger-Dienst (TI-M Dienst) zu ermöglichen, MUSS die Test-App des TI-M Clients zusätzlich ein Testtreiber-Modul intern oder extern zur Verfügung stellen. Dieses MUSS die Funktionalitäten der produktspezifischen Schnittstelle des TI-M Clients über eine standardisierte Schnittstelle von außen zugänglich machen und einen Fernzugriff ermöglichen. Das Testtreiber-Modul MUSS die Ausgaben des TI-M Clients gemäß der technischen Schnittstelle aufarbeiten, aber DARF NICHT die Inhalte verfälschen. + +=== Testvorgehen + +Das Testvorgehen für TI-Messenger ePA (TI-M ePA) und TI-Messenger Pro (TI-M Pro) setzt auf das Testvorgehen des TI-M Dienst 1.1.1-1 [gemSpec_TI-Messenger-Dienst] auf. Die existierende Testtreiberschnittstelle und Testsuite wird entsprechend erweitert. Alle Tests innerhalb der Testsuite sind separat ausführbar. Somit ist es möglich, die TI-M Pro und das TI-M ePA-FdV zusammen oder einzeln zu testen. Die erweiterte Testtreiberschnittstelle link:../../src/openapi/TiMessengerTestTreiber.yaml[Testtreiber API] und die Testsuite https://github.com/gematik/TI-Messenger-Testsuite[TI-Messenger-Testsuite] werden auf github veröffentlicht und sind für alle Hersteller zugänglich. Während der Zulassungstests werden genau die veröffentlichten Testfälle geprüft. Die Testfälle bilden die definierten Anwendungsfälle aus der Spezifikation ab. Produkttests zur Sicherstellung der Konformität mit der Spezifikation liegen vollständig in der Verantwortung der Anbieter/Hersteller. Die gematik konzentriert sich bei der Zulassung auf das Zusammenspiel der Produkte durch E2E- und IOP-Tests. + +=== Testtreiber Modul +Um einen automatisierten Test für den TI-Messenger-Dienst zu ermöglichen, MUSS die Test-App des TI-M Clients zusätzlich ein Testtreiber-Modul intern oder extern zur Verfügung stellen. Das Testtreiber-Modul MUSS die Funktionalitäten der produktspezifischen Schnittstellen des TI-M Clients über eine standardisierte Schnittstelle von außen zugänglich machen und einen Fernzugriff ermöglichen. Das Testtreiber Modul wird vom Hersteller entwickelt und betrieben. + +Dieses Testtreiber-Module MUSS Bestandteil der Test-APP sein (internes Testtreiber-Modul) oder einen Zugang zum Test-Environment des Herstellers gewährleisten (externes Testtreiber-Modul). Die Schnittstelle wird gemäß link:../../src/openapi/TiMessengerTestTreiber.yaml[Testtreiber API] durch die gematik spezifiziert und bereitgestellt. Das Testtreiber-Modul MUSS die durch den TI-M Client über eine produktspezifische Schnittstelle angebotene Funktionalität nutzen, um die Operationen des TI-M Clients umzusetzen. Für die Ausführung der Tests werden Organisationen und Messenger-Services benötigt. Diese Organisationen und Messenger-Services MÜSSEN von den Herstellern vor Beginn der Testphase eingerichtet und die Daten (Organisationsnamen usw.) MÜSSEN an die gematik übermittelt werden. In den folgenden Abbildungen wird das interne sowie das externe Testtreiber-Modul dargestellt. Wenn ein Client in mehreren Ausprägungen zur Verfügung gestellt wird, wird für jede Ausprägung eine Zulassung mit einem eigenen Testtreiber-Modul benötigt. + + +*Cert bereitstellen* + +==== internes Testtreiber-Modul +Bei einem internen Testtreiber-Modul wird die REST-Schnittstelle in die Test-App integriert (der Zugriff erfolgt hierbei direkt über das Endgerät). + +.Abbildung{counter:abbildung: 1}: internes Testtreiber Modul +image:generated/Other/Test/testtreiber-internes-Modul.svg[align="left",width="100%", title="internes Testtreiber Modul"] + +==== externes Testtreiber-Modul +Bei einem externen Testtreiber-Modul erhält die REST-Schnittstelle Zugang zum Test-Environment des Herstellers. + +.Abbildung{counter:abbildung: 1}: externes Testtreiber Modul +image:generated/Other/Test/testtreiber-externes-Modul.svg[align="left",width="100%", title="externes Testtreiber Modul"] + +=== TI-Messenger Testtreiber Anschaltung + +Das folgende Bild zeigt die Anschaltung der Testtreiber Clients. Die Clients können über eine externe oder interne Testtreiber-Schnittstelle mit der Testsuite remote oder local verbunden werden. Diese Leistung MUSS von jedem Hersteller erbracht werden. Welche Clients eingesetzt werden, können die Hersteller selbstständig entscheiden. Es werden nur bereitgestellte Clients zugelassen. Clients mit den gleichen Eigenschaften werden unter einer URL zusammengefasst. Diese URL wird dann in die Konfigurationsdatei 'combine_items.json' eingetragen. In dieser Datei werden alle Testobjekte verwaltet. + +.Abbildung{counter:abbildung: 1}: Anschaltung der Testtreiber Clients +image:generated/Other/Test/Anschaltung der Testtreiber Clients.svg[align="left",width="100%", title="Anschaltung der Testtreiber Clients"] + +Die unterschiedlichen Testtreibeschnittstellen werden mit mTLS gesichert. Die gematik stellt für den zugriff auf die Schnittstelle entsprechende Zertifikate bereit. Weiterführende Informationen zur Testsuite und zur Testtreiber-Schnittstelle findet man in der +https://github.com/gematik/TI-Messenger-Testsuite/blob/main/doc/userguide/Testsuite.adoc[Testsuite TI-M Dienst Release 1.1.1]. + +== Test der Hersteller + +=== Herstellerverantwortung +Produkttests zur Sicherstellung der Konformität mit der Spezifikation sind vollständig in der Verantwortung der Anbieter/Hersteller des TI-Messenger-Clients (TI-M Client). Die gematik konzentriert sich bei der Zulassung auf das Zusammenspiel der Produkte durch E2E- und IOP Tests. + +Die eigenverantwortlichen Produkttests bei den Industriepartnern umfassen: + + Testumgebung entwickeln, + Testfallkatalog erstellen (für eigene Produkttests) und + Produkttest durchführen und dokumentieren. + +Die Hersteller der TI-Messenger-Dienste (TI-M Dienst) MÜSSEN zusichern, dass die gematik die Produkttests der Industriepartner in Form von Reviews der Testkonzepte, der Testspezifikationen, der Testfälle und mit dem Review der Testprotokolle (Log- und Trace-Daten) überprüfen kann. + +Die gematik fördert eine enge Zusammenarbeit und unterstützt Industriepartner dabei, die Qualität der Produkte zu verbessern. Dies erfolgt durch die Organisation zeitnaher IOP-Tests, die Synchronisierung von Meilensteinen sowie regelmäßige industriepartnerübergreifende Test-Sessions. Die Test-Sessions umfassen gegenseitige IOP- und E2E Tests. + +Die gematik stellt eine TI-M Dienst Referenzimplementierung zur Verfügung. Zur Sicherstellung der Interoperabilität zwischen verschiedenen TI-Messenger-Fachdiensten (TI-M FD) und TI-M Clients MÜSSEN alle TI-M Dienste gegen diese Referenzimplementierung getestet werden. Der Sourcecode für die in der Referenzimplementierung verwendeten Artefakte wird regelmäßig von der gematik unter https://github.com/tim-ref[TI-Messenger [Referenzimplementierung] veröffentlicht. + +=== Referenz-Instanz + +Vor der Zulassung können sich die Hersteller eine Referenz-Instanz über die gematik bestellen. Die Referenz-Instanz hilft den Herstellern bei der Entwicklung neuer TI-M Clients, FdV und TI-M FD Versionen. Für die IOP-Tests zwischen den verschiedenen TI-Messenger-Anbietern bzw. -Herstellern können sowohl die Test-Instanzen als auch die Referenz-Instanzen genutzt werden. Die TI-M Dienste müssen gegen die Referenz-Instanz erfolgreich getestet werden. Die Testergebnisse sind der gematik vorzulegen. + +.Abbildung{counter:abbildung: 1}: Referenz-Instanz +image:generated/Other/Test/HerstellerInstanz.svg[align="left",width="100%", title="Referenz-Instanz"] + +=== Hersteller IOP Tests + +Alle Anbieter MÜSSEN bereits im Vorfeld diesen IOP- und E2E-Tests selbständig und eigenverantwortlich durchführen. Bei Problemen im Rahmen der Zulassung MÜSSEN die Anbieter bei der Analyse unterstützen. In der folgenden Abbildung ist eine Systemumgebung für Herstellertests dargestellt. + +.Abbildung{counter:abbildung: 1}: IOP Testumgebung Hersteller +image:generated/Other/Test/testumgebung-Hersteller.svg[align="left",width="100%", title="IOP Testumgebung Hersteller"] + +== Zulassung + +=== Zulassungstests durch die gematik +Die gematik testet im Rahmen der Zulassungsverfahren auf Basis von Anwendungsfällen. Hierbei wird versucht, möglichst viele Funktionsbereiche der Komponenten des TI-Messenger-Dienstes (TI-M Dienst) einzubeziehen. + +==== Tests gegen die Referenzimplementierung +Die Tests werden zunächst gegen die Referenzimplementierung der gematik durchgeführt. In diesem Schritt wird die Funktionalität des Zulassungsobjektes "TI-Messenger-Dienst" geprüft. + +==== Zulassung TI-Messenger Pro + +Die Hersteller von TI-M Diensten müssen wie zuvor erwähnt die Testtreiberschnittstelle und den Fachdienst bereitstellen. Bei Problemen im Rahmen der Zulassung müssen die Anbieter bei der Analyse unterstützen. In der folgenden Abbildung ist eine Systemumgebung für den Zulassungstest TI-Messenger Pro (TI-M Pro) dargestellt. + +.Abbildung{counter:abbildung: 1}: Zulassung TI-Messenger Pro +image:generated/Other/Test/Zulassung TIM-Basis.svg[align="left",width="100%", title="Zulassung TI-Messenger Pro"] + +==== Zulassung TI-Messenger ePA + +Die Hersteller von Versicherten-Frontends müssen ebenfalls das FdV, die Testtreiberschnittstelle und den Fachdienst für Versicherte bereitstellen. Bei Problemen im Rahmen der Zulassung müssen die Anbieter bei der Analyse unterstützen. In der folgenden Abbildung ist eine Systemumgebung für den Zulassungstest TI-Messerger ePA (TI-M ePA) dargestellt. + +.Abbildung{counter:abbildung: 1}: Zulassung TI-Messenger ePA +image:generated/Other/Test/Zulassung TIM-ePA.svg[align="left",width="100%", title="Zulassung TI-Messenger ePA"] + +=== IOP Tests zwischen Anbietern durch die gematik +Zusätzlich zu den bereits durchgeführten IOP- und E2E-Tests werden weitere Interoperabilitätstests verschiedener TI-Messenger-Lösungen vor und nach der Zulassung durch die gematik durchgeführt. Die folgende Abbildung zeigt die Nutzung der existierenden Testumgebung durch die gematik während der Zulassungs- und Interoperabilitätstests. + +.Abbildung{counter:abbildung: 1}: IOP Tests +image:generated/Other/Test/testumgebung-Gematik.svg[align="left",width="100%", title="IOP Tests"] + +IOP- und E2E-Tests für die Interoperabilität MÜSSEN zwischen den verschiedenen TI-Messenger-Anbietern nachgewiesen werden. Hierfür werden dann alle bereits zur Verfügung stehenden TI-M Dienste (die Test-Instanzen der einzelnen Hersteller) zusammengeschlossen und anschließend gegeneinander getestet. + +==== IOP Tests TI-Messenger Pro + +Im Anschluss der Zulassung wird mit den IOP- und E2E-Tests die Interoperabilität zwischen den verschiedenen TI-Messenger-Anbietern nachgewiesen. Hierfür werden dann alle bereits zur Verfügung stehenden TI-M Dienste (die Test-Instanzen der einzelnen Hersteller) zusammengeschlossen und anschließen gegeneinander getestet. Alle Anbieter MÜSSEN bereits im Vorfeld diesen IOP- und E2E-Tests selbständig und eigenverantwortlich durchführen. Bei Problemen im Rahmen der IOP Tests MÜSSEN die Anbieter bei der Analyse unterstützen. In der folgenden Abbildung ist eine Systemumgebung für Herstellertests TI-M Pro dargestellt. + +.Abbildung{counter:abbildung: 1}: IOP Test TI-Messenger Pro +image:generated/Other/Test/Testumgebung Basis.svg[align="left",width="100%", title="IOP Test TI-Messenger Pro"] + +Weiterhin wird ein dauerhaftes Continuous Testing eingeführt. Das Continuous Testing wird dann in der Folge erweitert Dadurch wird auch ein Test unterschiedlicher Messenger Versionen und Ausprägungen ermöglicht. + +==== IOP Tests TI-Messenger ePA + +Für den TI-M ePA gelten ebenso die im Kap. 3.2.1 beschriebenen Anforderungen an den IOP Test. In der folgenden Abbildung ist eine Systemumgebung für Herstellertests TI-M ePA dargestellt. Bei Problemen im Rahmen der IOP Tests MÜSSEN die Anbieter des Fachdienstes und des FdVs bei der Analyse unterstützen. + +.Abbildung{counter:abbildung: 1}: IOP Test TI-Messenger ePA +image:generated/Other/Test/Testumgebung ePA.svg[align="left",width="100%", title="IOP Test TI-Messenger ePA"] + +==== IOP Tests Pools + +Um eine größere Abdeckung zu erhalten werden die Hersteller in Pools eingeteilt. Somit können mehrere Hersteller gleichzeitig getestet werden. Anschließend werden die Pools erneut gemischt. + +.Abbildung{counter:abbildung: 1}: IOP Test Pools +image:generated/Other/Test/IOP Pools.svg[align="left",width="100%", title="Verpflichtung nach der Zulassung"] + +== Verpflichtung nach der Zulassung +Der TI-Messenger-Anbieter MUSS eine Referenz-Instanz und mindestens eine Test-Instanz des TI-Messenger-Fachdienstes (TI-M FD) und TI-Messenger-Clients (TI-M Client) bereitstellen und betreiben. Die Referenz-Instanz hat die gleiche Version wie die Produktionsumgebung. Weiterhin wird die Referenz-Instanz für die Reproduktion aktueller Fehler/Probleme aus der Produktionsumgebung genutzt. Der Zugriff auf die Referenz-Instanz MUSS für die gematik zur Fehleranalyse gewährleistet sein. Die Test-Instanz dient den Herstellern bei der Entwicklung neuer TI-M Clients und TI-M FD Versionen, bei den IOP-Tests zwischen den verschiedenen TI-Messenger-Anbietern und wird zudem von der gematik für die Zulassung genutzt. Der TI-Messenger-Anbieter MUSS die verschiedenen Benutzer der Referenz-Instanz und der Test-Instanz koordinieren (Verwaltung eines Test-/Nutzungsplans). Bei Bedarf (Entwicklung verschiedener Versionen, hoher Auslastung durch andere Hersteller oder durch die gematik) MUSS der TI-Messenger-Anbieter auch mehrere Test-Instanzen mit der gleichen oder mit verschiedenen Versionen bereitstellen und betreiben. + +.Abbildung{counter:abbildung: 1}: Verpflichtung nach der Zulassung +image:generated/Other/Test/nach_der_Zulassung.svg[align="left",width="100%", title="Verpflichtung nach der Zulassung"] + +Die Referenz-Instanz und die Test-Instanz wird auch im Anschluss der Zulassung weiter für IOP Test und Continuous Testing genutzt. \ No newline at end of file diff --git a/docs/anwendungsfaelle/COM-AF10057-anmeldung-am-messenger-service.adoc b/docs/anwendungsfaelle/COM-AF10057-anmeldung-am-messenger-service.adoc deleted file mode 100644 index 50190c61..00000000 --- a/docs/anwendungsfaelle/COM-AF10057-anmeldung-am-messenger-service.adoc +++ /dev/null @@ -1,50 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== AF_10057 - Anmeldung eines Akteurs am Messenger-Service -Mit diesem Anwendungsfall meldet sich ein Akteur an einem in der TI-Föderation zuständigen *Messenger-Service* an und registriert seinen *TI-Messenger-Client* als Endgerät. Der Akteur muss die Matrix-Domain des gewünschten *Messenger-Service* direkt im *TI-Messenger-Client* eingeben können. Die Eingabe kann dabei automatisiert oder durch andere Hilfsmittel wie beispielweise durch ein QR-Code-Scan unterstützt werden. Die Authentifizierung erfolgt hierbei nach den Vorgaben der jeweiligen Organisation. Nach der erfolgreichen Anmeldung eines Akteurs am *Messenger-Service* können die von ihm angebotenen Dienste verwendet werden. - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Anmeldung eines Akteurs am Messenger-Service -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Akteur* |Leistungserbringer, Mitarbeiter einer Organisation im Gesundheitswesen in der "Rolle User / User-HBA" -|*Auslöser* |Ein Akteur möchte sich mit seinem TI-Messenger-Client bei einem Messenger-Service anmelden. -|*Komponenten* a| - * TI-Messenger-Client, - * Messenger-Proxy, - * Messenger-Homeserver, - * FHIR-Proxy, - * FHIR-Directory. -|*Vorbedingungen* a| - * Der Akteur verfügt über einen vom Anbieter unterstützen TI-Messenger-Client. - * Der Akteur kennt die URL des Messenger-Services oder die URL ist bereits in seinem TI-Messenger-Client konfiguriert. - * Der Akteur kann sich durch ein beim Matrix-Homeserver unterstütztes Authentisierungsverfahren identifizieren. Wird durch die Organisation ein eigenes Authentifizierungsverfahren verwendet MUSS eine Anbindung an den Matrix-Homeserver erfolgt sein. - * Der verwendete Matrix-Homeserver ist in die Föderation integriert (valider Messenger-Service). -|*Eingangsdaten*|URL des Matrix-Homeservers -|*Ergebnis* | Es wurde ein TI-Messenger Account für einen Akteur in der Rolle "User / User-HBA" erzeugt. -|*Ausgangsdaten* |Matrix-ACCESS_TOKEN, MXID, device_id, Matrix-OpenID-Token, Status -|=== -==== -.Sequenzdiagramm -[%collapsible%open] -==== -++++ -

- -

-++++ -==== diff --git a/docs/anwendungsfaelle/COM-AF10061-einladung-ausserhalb.adoc b/docs/anwendungsfaelle/COM-AF10061-einladung-ausserhalb.adoc deleted file mode 100644 index aec036ec..00000000 --- a/docs/anwendungsfaelle/COM-AF10061-einladung-ausserhalb.adoc +++ /dev/null @@ -1,51 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== AF_10061 - Einladung von Akteuren außerhalb einer Organisation -In diesem Anwendungsfall wird ein Akteur außerhalb einer Organisation eingeladen. Für die Suche von Akteuren außerhalb der Organisation kann das *VZD-FHIR-Directory* verwendet werden. Ist die `MXID` des gesuchten Akteurs dort nicht vorhanden muss es die Möglichkeit geben, die Kontaktaufnahme auch auf andere Wege zu ermöglichen. Es muss mindestens die Kontaktaufnahme mit Hilfe eines QR-Code Scans angeboten werden. Weitere Optionen zur Eingabe der `MXID` (z. B. manuelle Eingabe) sind zulässig. Im Gegensatz zu einer Einladung von Akteuren innerhalb einer Organisation (link:/docs/anwendungsfaelle/COM-AF10104-einladung-innerhalb.adoc[AF_10104 - Einladung von Akteuren innerhalb einer Organisation]), prüft in diesem Anwendungsfall der *Messenger-Proxy* zusätzlich die in *[gemSpec_TI-Messenger-Dienst#3.5]* festgelegten Kriterien der Server-Server Kommunikation (Stufe 1 - 3). - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Einladung von Akteuren außerhalb einer Organisation -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Akteur* |Leistungserbringer, Mitarbeiter einer Organisation im Gesundheitswesen in der "Rolle User / User-HBA" -|*Auslöser* |Akteur A möchte mit Akteur B außerhalb einer Organisation einen gemeinsamen Chatraum einrichten. -|*Komponenten* a| - * TI-Messenger-Client A + B, - * Messenger-Proxy A + B, - * Messenger-Homeserver A + B, - * VZD-FHIR-Directory, - * Push-Gateway B -|*Vorbedingungen* a| - * Die Akteure verfügen über einen zugelassenen TI-Messenger-Client. - * Die Akteure kennen die URL ihres Messenger-Service oder die URL ist bereits in ihren TI-Messenger-Clients konfiguriert. - * Die Akteure sind am Messenger-Services angemeldet - * Die verwendeten Messenger-Services sind Bestandteile der TI-Messenger-Föderation. -|*Eingangsdaten* | Matrix Invite Event -|*Ergebnis* a|Actor A and actor B are both in a shared chat room. -Optionally, a notification is sent to actor B about the invitation to the chat room. -|*Ausgangsdaten* |status -|=== -==== -.Sequenzdiagramm -[%collapsible%open] -==== -++++ -

- -

-++++ -==== diff --git a/docs/anwendungsfaelle/COM-AF10062-events-ausserhalb.adoc b/docs/anwendungsfaelle/COM-AF10062-events-ausserhalb.adoc deleted file mode 100644 index 5557732e..00000000 --- a/docs/anwendungsfaelle/COM-AF10062-events-ausserhalb.adoc +++ /dev/null @@ -1,47 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== AF_10062 - Austausch von Events zwischen Akteuren außerhalb einer Organisation -In diesem Anwendungsfall können Akteure welche sich in einem gemeinsamen Raum befinden Nachrichten austauschen und andere durch die Matrix-Spezifikation festgelegte Aktionen ausführen. Dieser Anwendungsfall setzt ein erfolgreiches `Invite`-Event eines oder mehrerer beteiligter Akteure voraus. Die Prüfung auf Domainzugehörigkeit findet jedoch bei jedem `Event` der Server-Server Kommunikation statt. In diesem Anwendungsfall sind die beteiligten Akteure in einem gemeinsamen Chatraum und auf unterschiedlichen *Messenger-Services* verteilt. - -.AF_10062 Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Austausch von Events zwischen Akteuren außerhalb einer Organisation -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Akteur* |Leistungserbringer, Mitarbeiter einer Organisation im Gesundheitswesen in der Rolle "User / User-HBA" -|*Auslöser* |Alle Matrix-Events die zwischen Messenger-Services unterschiedlicher Organisationen ausgeführt werden. -|*Komponenten* a| - * TI-Messenger-Client A + B, - * Messenger-Proxy A + B, - * Messenger-Homeserver A + B, - * Push-Gateway B -|*Vorbedingungen* a| - * Beide Akteure sind Teilnehmer eines gemeinsamen Raumes - * Die Messenger Proxies verfügen über eine aktuelle Föderationsliste -|*Eingangsdaten* | Matrix-Event -|*Ergebnis* a|Matrix-Event wurde erfolgreich verarbeitet -|*Ausgangsdaten* data |Abhängig vom Matrix-Event, Status -|=== -==== -.Sequenzdiagramm -[%collapsible%open] -==== -++++ -

- -

-++++ -==== diff --git a/docs/anwendungsfaelle/COM-AF10063-events-innerhalb.adoc b/docs/anwendungsfaelle/COM-AF10063-events-innerhalb.adoc deleted file mode 100644 index 2541ab51..00000000 --- a/docs/anwendungsfaelle/COM-AF10063-events-innerhalb.adoc +++ /dev/null @@ -1,48 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== AF_10063 - Austausch von Events zwischen Akteuren innerhalb einer Organisation -Dieser Anwendungsfall ermöglicht es Akteuren, welche sich in einem gemeinsamen Raum innerhalb eines *Messenger-Service* befinden, Nachrichten auszutauschen und weitere durch die Matrix-Spezifikation festgelegte Aktionen (`Events`) auszuführen. - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Austausch von Events zwischen Akteuren innerhalb einer Organisation -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Aktuer* |Leistungserbringer, Mitarbeiter einer Organisation im Gesundheitswesen in der Rolle "User / User-HBA" -|*Auslöser* |Alle Matrix-Events die innerhalb eines Messenger-Service einer Organisation ausgeführt werden -|*Komponenten* a| - * TI-Messenger-Client A + B, - * Messenger-Proxy, - * Messenger-Homeserver, - * Push-Gateway -|*Vorbedingungen* a| - * Die Akteure sind am selben Messenger-Service angemeldet. - * Jeder Akteur hat einen zugelassenen TI-Messenger-Client. - * Die Teilnehmer sind einem gemeinsamen Raum beigetreten. -|*Eingangsdaten* | Matrix-Event -|*Ergebnis* a|Matrix-Event wurde erfolgreich verarbeitet -|*Ausgangsdaten* |Abhängig vom Matrix-Event -|=== -==== -.Sequenzdiagramm -[%collapsible%open] -==== -++++ -

- -

-++++ -==== diff --git a/docs/anwendungsfaelle/COM-AF10104-einladung-innerhalb.adoc b/docs/anwendungsfaelle/COM-AF10104-einladung-innerhalb.adoc deleted file mode 100644 index ef5766cd..00000000 --- a/docs/anwendungsfaelle/COM-AF10104-einladung-innerhalb.adoc +++ /dev/null @@ -1,49 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== AF_10104 - Einladung von Akteuren innerhalb einer Organisation -In diesem Anwendungsfall wird ein Akteur der zu einer gemeinsamen Organisation gehört in einen Raum eingeladen um Aktionen auszuführen. Für die Suche von Akteuren innerhalb einer gemeinsamen Organisation durchsucht ein *TI-Messenger-Client* das Nutzerverzeichnis seiner Organisation auf dem *Matrix-Homeserver*. In diesem Anwendungsfall prüft der *Messenger-Proxy* gemäß *[gemSpec_TI-Messenger-Dienst#3.5]* der Client-Server Kommunikation, ob die im `Invite`-Event enthaltenen Matrix-Domains Teil der TI-Föderation sind. Ist dies der Fall erfolgt die Weiterleitung an den *Matrix-Homeserver* des Einladenden. Dieser prüft ob die beteiligten Akteure bei ihm registriert sind. Ist dies nicht der Fall, handelt es sich bei dem einzuladenden Akteur nicht um einen Akteur innerhalb der Organisation und das `Invite`-Event wird für die externe Zustellung weitergeleitet. Der Anwendungsfall link:/docs/anwendungsfaelle/COM-AF10061-einladung-ausserhalb.adoc[AF_10061 - Einladung von Akteuren außerhalb einer Organisation] zeigt den sich daraus ergebenden Verlauf. - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Einladung von Akteuren innerhalb einer Organisation -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Akteur* |Leistungserbringer, Mitarbeiter einer Organisation im Gesundheitswesen in der Rolle "User / User-HBA" -|*Auslöser* |Akteur A möchte Akteur B seiner Organisation in einen gemeinsamen Raum einladen. -|*Komponenten* a| - * TI-Messenger-Client A + B, - * Messenger-Proxy, - * Messenger-Homeserver, - * Push-Gateway -|*Vorbedingungen* a| - * Die Akteure sind am selben Messenger-Service angemeldet. - * Jeder Akteur hat einen zugelassenen TI-Messenger-Client. - * Ein Chatraum wurde durch den Einladenden eingerichtet. -|*Eingangsdaten* | Matrix Invite-Event -|*Ergebnis* a| Akteur A und Akteur B sind beide in einem gemeinsamen Chatraum. - Optional erfolgt eine Benachrichtigung an Akteur B über die Einladung in den Chatraum. -|*Ausgangsdaten* |status -|=== -==== -.Sequenzdiagramm -[%collapsible%open] -==== -++++ -

- -

-++++ -==== diff --git a/docs/anwendungsfaelle/COM-chatbot.adoc b/docs/anwendungsfaelle/COM-chatbot.adoc new file mode 100644 index 00000000..5d3365e7 --- /dev/null +++ b/docs/anwendungsfaelle/COM-chatbot.adoc @@ -0,0 +1,60 @@ +ifdef::env-github[] +:tip-caption: :bulb: +:note-caption: :information_source: +:important-caption: :heavy_exclamation_mark: +:caution-caption: :fire: +:warning-caption: :warning: +endif::[] + +:imagesdir: ../../images + +image:meta/gematik_logo.svg[width=70%] + +=== Kommunikation mit einem Chatbot +Im Folgenden wird ein Beispiel für eine mögliche Zuordnung für die Abbildung von Funktionsaccounts mit Hilfe von Chatbots und eines Akteurs der stellvertretend für die Organisation auftritt. +Der Chatbot kann automatisiert Anfragen von Akteuren (z. B. für Terminanfragen, Medikationsentscheidung) bearbeiten oder bei Bedarf die zugeordneten und zu diesem Zeitpunkt verfügbaren Akteure in den Chatraum einladen. Die dem Chatbot zur Verfügung stehenden Akteure (in der Spalte "Akteur (MXID)") sind in der Konfiguration des Chatbots zu hinterlegen. Im letzte Beispiel in der Tabelle ist ein Akteur (natürliche Person) als Endpoint hinterlegt und tritt stellvertretend für die Organisation in den Chat ein. + +.Übersicht der Zuordnung von Funktionsaccounts und Akteuren +|=== +|Abteilung |Funktionsaccount |Endpoint.address |Akteur (MXID) |Displayname im Chatraum + +|Kardiologie |Labor_Kardiologie |@MXID_Bot01:.de |@MXID_01:.de @MXID_02:.de a| +* Empfang_Kardiologie (Chatbot) +* Dennert, Maltilde +* Fritsche, Sarah + +|Neurologie |Ambulanz_Neurologie |@MXID_Bot02:.de |@MXID_03:.de a| +* Ambulanz_Neurologie (Chatbot) +* Gotsch, Gerd + +|Radiologie |Empfang_Radiologie |@MXID_04:.de |- |Fruechtl, Wilfried +|=== + +=== Beispiel: Einladung durch einen Chatbot +Die folgende Grafik zeigt den Ablauf beim Kontaktieren eines Funktionsaccounts durch einen Akteur. Der Funktionsaccount wird durch den Chatbot repräsentiert. Der Chatbot kann automatisiert Anfragen von Akteuren bearbeiten oder bei Bedarf die zugeordneten und zu diesem Zeitpunkt verfügbaren Akteure in den Chatraum einladen. Die dem Chatbot zur Verfügung stehenden Akteure sind in der Konfiguration des Chatbots zu definieren. + +A. Vorbedingung: +* Die Organisation Klinikum X verfügt über einen TI-Messenger-Client mit Administrationsfunktion und einen Messenger-Service +* Chatbots stehen zur Verfügung und können vom Akteur in der Rolle "Org-Admin" verwaltet werden + +B. Konfiguration von Funktionsaccounts: +* Der Akteur in der Rolle "Org-Admin" legt einen Funktionsaccount (organisationsbezogene MXID) als einen Endpoint des gewünschten HealthcareService der Organisation an und ordnet dieser MXID einen Chatbot zu. +* Der Akteur in der Rolle "Org-Admin" weist zuständige Akteure der Organisation (personenbezogene MXIDs) dem Chatbot zu. +* Die Zuordnung von Akteuren zu einzelnen Anfragen innerhalb eines Funktionsaccounts (z. B. Terminanfragen, Medikationsentscheidung) erfolgt durch die Konfiguration im Chatbot. + +C. Beispielhafter Ablauf (siehe Abbildung "Kommunikation mit einem Chatbot"): +. Es liegt ein kardiologisches Problem vor und der Akteur sucht nach einer Organisation und/oder Unterstruktur dieser Organisation. (z. B. in seinem Krankenhaus die Abteilung Kardiologie) +. Der Akteur öffnet einen Chatraum mit dem Funktionsaccount der Abteilung Kardiologie. +. Der Chatbot des Funktionsaccounts der Abteilung Kardiologie betritt den Raum und erfragt das Anliegen vom Akteur (z. B. Terminanfrage, Rückfrage an Arzt etc.) abfragen. +. Der Akteur antwortet dem Chatbot. +. Der Chatbot lädt je nach Anliegen die ihm zugeordneten und verfügbaren Akteure in den Chatraum ein. +. Eingeladene Akteure betreten den Chatraum mit ihrem Displaynamen und kommunizieren mit dem Akteur. + +.Kommunikation mit einem Chatbot +[%collapsible%open] +==== +image:generated/Other/chatbot.svg[width="100%"] +==== + + + diff --git a/docs/anwendungsfaelle/MS-AF10060-bereitstellung-messenger-service.adoc b/docs/anwendungsfaelle/MS-AF10060-bereitstellung-messenger-service.adoc deleted file mode 100644 index db173387..00000000 --- a/docs/anwendungsfaelle/MS-AF10060-bereitstellung-messenger-service.adoc +++ /dev/null @@ -1,52 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== AF_10060 - Bereitstellung eines Messenger-Service für eine Organisation -Mit diesem Anwendungsfall wird einer zuvor am *Registrierungs-Dienst* authentifizierten Organisation ein *Messenger-Service* für diese Organisation durch einen Akteur in der Rolle "Org-Admin" bereitgestellt. Die Beantragung zur Bereitstellung eines *Messenger-Service* wird durch den Akteur in der Rolle "Org-Admin" am *Frontend des Registrierungs-Dienstes* vorgenommen. Dieser MUSS sich zuvor mit dem Admin-Account der Organisation am *Registrierungs-Dienst* anmelden. Für eine zeitnahe Adaption des *TI-Messenger-Dienstes* MUSS eine schnelle Bereitstellung von *Messenger-Services* gewährleistet sein. Anbieter eines *TI-Messenger-Fachdienstes* sind verpflichtet, Prozesse zu etablieren, damit *Messenger-Services* für Organisationen schnell und ggf. automatisiert bereitgestellt werden können. Nach erfolgreicher Bereitstellung eines *Messenger-Service* wird dieser in die Föderation des *TI-Messenger-Dienstes* aufgenommen. Werden mehrere *Messenger-Services* für eine Organisation benötigt kann dieser Anwendungsfall mehrfach ausgeführt werden. - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Bereitstellung eines Messenger-Service für eine Organisation -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Akteur* |Beauftragter Mitarbeiter einer Organisation in der Rolle "Org-Admin" -|*Auslöser* |Eine Organisation des deutschen Gesundheitswesen möchte am TI-Messenger-Dienst teilnehmen und benötigt die Bereitstellung eines oder mehrerer Messenger-Services -|*Komponenten* a| - * Frontend des Registrierungs-Dienstes, - * Registrierungs-Dienst, - * VZD-FHIR-Directory, - * Messenger-Service -|*Vorbedingungen* a| - * Es besteht ein Vertragsverhältnis mit einem TI-Messenger-Anbieter. - * Der Akteur verfügt über ein Frontend des Registrierungs-Dienstes für die Kommunikation mit dem Registrierungs-Dienst. - * Das verwendete Frontend des Registrierungs-Dienstes ist beim zentralen IDP-Dienst registriert. - * Die Organisation ist erfolgreich beim Registrierungs-Dienst authentifiziert und ein Admin-Account ist vorhanden. - * Der Registrierungs-Dienst kann sich beim VZD-FHIR-Directory Server für Schreibzugriffe mit OAuth2 authentisieren. -|*Eingangsdaten* |Admin-Account, Identität der Organisation (SMC-B) -|*Ergebnis* a| - * Der Messenger-Service für die Organisation wurde erstellt. - * Die Matrix-Domain des neuen Messenger-Services wurde als Endpunkt im VZD-FHIR-Directory eingetragen und in die Föderation aufgenommen. -|*Ausgangsdaten* |Neuer Messenger-Service für die Organisation, Status -|=== -==== -.Sequenzdiagramm -[%collapsible%open] -==== -++++ -

- -

-++++ -==== diff --git a/docs/anwendungsfaelle/MS-AF10064-foederation-pruefen.adoc b/docs/anwendungsfaelle/MS-AF10064-foederation-pruefen.adoc deleted file mode 100644 index 37bd7ac1..00000000 --- a/docs/anwendungsfaelle/MS-AF10064-foederation-pruefen.adoc +++ /dev/null @@ -1,43 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== AF_10064 - Föderationszugehörigkeit eines Messenger-Service prüfen -Dieser Anwendungsfall prüft gemäß *[gemSpec_TI-Messenger-Dienst#3.5]* die im Berechtigungskonzept festgelegten Kriterien für die Stufe 1 der Client-Server und Server-Server Kommunikation, ob ein *Messenger-Service* zugehörig zur TI-Messenger-Föderation ist und gilt für alle Anwendungsfälle, welche die Matrix-Domain eines *Messenger-Services* überprüfen müssen. Für die Prüfung der Zugehörigkeit der Matrix-Domain zur TI-Messenger-Föderation, verwendet der *Messenger-Proxy* eine Föderationsliste, die vom *Registrierungs-Dienst* seines *TI-Messenger-Fachdienstes* bereitgestellt wird. Die Speicherdauer der Föderationsliste des *Messenger-Proxies* ist limitiert. Die Aktualisierung der Föderationsliste erfolgt gemäß *[gemSpec_TI-Messenger-Dienst#8.2]*. - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Föderationszugehörigkeit eines Messenger-Service prüfen -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Akteur* |- -|*Auslöser* |Der Messenger-Proxy empfängt oder sendet ein Matrix-Event und MUSS die im Request enthaltenen MXIDs auf Domain-Zugehörigkeit zur TI-Messenger-Föderation prüfen. -|*Komponenten* a| - * Messenger-Proxy, - * Matrix-Homeserver -|*Vorbedingungen* a| keine -|*Eingangsdaten* |Matrix-Event -|*Ergebnis* a|Der Messenger-Proxy ermittelt mittels der Föderationsliste, ob die Matrix-Domain des anderen Messenger-Service Teil der TI-Messenger-Föderation ist. -|*Ausgangsdaten* |Status vom Matrix-Homeserver und Weiterleitung -|=== -==== -.Sequenzdiagramm -[%collapsible%open] -==== -++++ -

- -

-++++ -==== diff --git a/docs/anwendungsfaelle/MS-AF10103-authentisieren-organisation.adoc b/docs/anwendungsfaelle/MS-AF10103-authentisieren-organisation.adoc deleted file mode 100644 index 86832c96..00000000 --- a/docs/anwendungsfaelle/MS-AF10103-authentisieren-organisation.adoc +++ /dev/null @@ -1,59 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== AF_10103 - Authentisieren einer Organisation am TI-Messenger-Dienst -Mit diesem Anwendungsfall authentisiert ein Akteur, in der Rolle "Org-Admin", seine Organisation bei einem Anbieter eines *TI-Messenger-Dienestes*. Für die Authentisierung einer Organisation stellt der *TI-Messenger-Fachdienst* die Schnittstelle `I_Registration` an seinem *Registrierungs-Dienst* bereit. Diese wird über das *Frontend des Registrierungs-Dienstes* für die Authentisierung verwendet. Die Authentisierung der Organisation erfolgt individuell und nutzungsabhängig durch einen Akteur in der Rolle "Org-Admin". Durch die Authentifizierung MUSS der Besitz einer gültigen SMC-B nachgewiesen werden, da nur Organisationen des Gesundheitswesens berechtigt sind einen *Messenger-Service* zu erhalten. Als Nachweis MUSS eins der folgenden Verfahren verwendet werden. Für die Verifizierung der Organisation MUSS - -* Verfahren 1: bei der Authentisierung am *zentralen IDP-Dienst* eine freigeschaltete SMC-B verwendet werden oder -* Verfahren 2: eine KIM-Nachricht an die Adresse der Organisation mit der freigeschalteten SMC-B gesendet werden. - -Als Nachweis zur Prüfung auf eine gültige Organisation MUSS der *Registrierungs-Dienst* in beiden Verfahren prüfen, ob die `ProfessionOID` zu einer Organisation des Gesundheitswesens gehört. Bei erfolgreicher Verifizierung der Organisation wird ein Administrator-Account für die Organisation am *Registrierungs-Dienst* angelegt. Dies ermöglicht es einem Administrator *Messenger-Services* zu registrieren und seiner Organisation am *TI-Messenger-Dienst* teilzunehmen. - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Authentisieren einer Organisation am TI-Messenger-Dienst -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Akteur* |Beauftragter Mitarbeiter einer Organisation in der Rolle "Org-Admin" -|*Auslöser* |Eine Organisation des deutschen Gesundheitswesens möchte am TI-Messenger-Dienst teilnehmen und benötigt die Berechtigung einen Messenger-Service zu registrieren -|*Komponenten* a| - * Frontend des Registrierungs-Dienstes, - * Authenticator (Optional bei Verfahren 2), - * Konnektor, - * eHealth Kartenterminal mit gesteckter SMC-B, - * Registrierungs-Dienst, - * zentraler IDP-Dienst (Optional bei Verfahren 2) - * KIM-Clientmodul und Mailclient (Optional bei Verfahren 1) -|*Vorbedingungen* a| - * Der Akteur kann über ein Frontend des Registrierungs-Dienstes für die Kommunikation auf den Registrierungs-Dienst zugreifen. - * Verifizierung der Organisation: - ** Verfahren 1: Der Akteur kann den Authenticator verwenden sowie das verwendete Frontend des Registrierungs-Dienstes, welches beim zentralen IDP-Dienst registriert ist. - ** Verfahren 2: Der Anbieter des TI-Messenger verfügt über eine SMC-B Org und eine KIM-Adresse sowie ein eHealth Kartenterminal und einen Konnektor mit TI-Zugang. Der Akteur verfügt über eine SMC-B und eine KIM-Adresse sowie ein eHealth Kartenterminal und einen Konnektor mit TI-Zugang. - * Die im eHealth Kartenterminal gesteckte SMC-B ist freigeschaltet. -|*Eingangsdaten* |Identität der Organisation, SMC-B, Alternativ KIM-Adresse -|*Ergebnis* a|Die Organisation wurde am Registrierungs-Dienst des TI-Messenger-Fachdienstes verifiziert -|*Ausgangsdaten* |Admin-Account, Status -|=== -==== -.Sequenzdiagramm -[%collapsible%open] -==== -++++ -

- -

-++++ -==== - diff --git a/docs/anwendungsfaelle/MS-aktualisierung-foederationsliste.adoc b/docs/anwendungsfaelle/MS-aktualisierung-foederationsliste.adoc deleted file mode 100644 index 8b447bbe..00000000 --- a/docs/anwendungsfaelle/MS-aktualisierung-foederationsliste.adoc +++ /dev/null @@ -1,86 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== A 8.2 - Aktualisierung der Föderationsliste -Die folgende Sequenz beschreibt, wie der *Messenger-Proxy* seine lokal vorgehaltene Föderationsliste aktualisiert. Für die Aktualisierung der Föderationsliste MUSS der *Messenger-Proxy* diese beim *Registrierungs-Dienst* seines *TI-Messenger-Fachdienstes* anfragen. Die Häufigkeit der Anfrage einer neuen Liste wird durch den Anbieter festgelegt, Ziel sollte eine möglichst aktuelle Föderationsliste sein. Hierbei übergibt der *Messenger-Proxy* die durch ihn gespeicherte Version der Föderationsliste im Aufruf an den *Registrierungs-Dienst*. Bei Übereinstimmung der Version wird für den *Messenger-Proxy* keine neue Föderationsliste durch den *Registrierungs-Dienst* bereitgestellt. Ist die Version größer als die vom *Messenger-Proxy* übergebene, dann wird durch den *Registrierungs-Dienst* eine aktualisierte Föderationsliste zur Verfügung gestellt. Bei jeder Anfrage eines *Messenger-Proxys* beim *Registrierungs-Dienst* nach einer aktuellen Föderationsliste muss der *Registrierungs-Dienst* die Aktualität der durch ihn ausgelieferten Liste sicherstellen, indem er die von ihm gespeicherte Version der Föderationsliste im Bedarfsfall mit einer aktuelleren Version, die vom *FHIR-Proxy* bezogen wurde, überschreibt. Ein Download der Föderationsliste ist nur notwendig, wenn eine neuere Version auf dem *FHIR-Proxy* existiert. Die Struktur der Föderationsliste ist in https://github.com/gematik/api-vzd/blob/develop/src/schema/FederationList.json[JSON-Schemadefinition] beschrieben. Nach dem Abruf der Föderationsliste vom *Registrierungs-Dienst*, durch den *Messenger-Proxy*, muss dieser die Signatur der Föderationsliste prüfen. - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Aktualisierung der Föderationsliste -[%header, cols="1,2"] -|=== -| |Beschreibung -|*Akteur* |System -|*Auslöser* a| - * Scheduler - * Schnittstellenaufruf -|*Komponenten* a| - * Messenger-Proxy, - * Registrierungs-Dienst, - * FHIR-Proxy, - * Auth-Service -|*Vorbedingungen* a| keine -|*Eingangsdaten* | Versionsnummer -|*Ergebnis* | Der Messenger-Proxy erhält die Information eine aktuelle Liste zu besitzen oder eine neue Föderationsliste, sofern eine aktuellere Version vorliegt. -|*Ausgangsdaten* |status, Föderationsliste, x5c-Zertifikatsliste -|=== -==== - -.Sequenzdiagramm "Föderationsliste aktualisieren" -[%collapsible%open] -==== -++++ -

- -

-++++ -==== - -[caption=] -Variablen, die vom Registrierungsdienst unterstützt werden. -[%header, cols="1,1,2,1"] -|=== -|Name|Type|Beschreibung|Wertebereich -|`HealthState_VZD`|state|Hält den Gesundheitsstatus von Komponenten des VZD-FHIR-Directory in Abhängigkeit vom erhaltenen Antwortverhalten|[gesund, ungesund] -|`HealthStateCheck_VZD`|Counter|Hält die Anzahlt der Versuche den Gesundheitsstatus des VZD-FHIR-Directory zu ermitteln|0\<= `HealthStateCheck_VZD`\<=3 -|`Alter_Föderationsliste`|Time in s |Hält das aktuelle Alter der Föderationsliste in Sekunden seit der letzten erfolgreichen Aktualisierung. -|min: 0s -|`TTL_Föderationsliste`|Time in h|Beschreibt das maximal erlaubte Alter der Föderationsliste.|Fester Wert: 72h -|=== - -Das in der Abbildung "Laufzeitansicht - Aktualisierung der Föderationsliste" referenzierte -Sequenzdiagramm "Provider authentifizieren und Föderationsliste abrufen": - -.Sequenzdiagramm "Provider authentifizieren und Föderationsliste abrufen" -[%collapsible%open] -==== -++++ -

- -

-++++ -==== - -Das in der Abbildung "Laufzeitansicht - Aktualisierung der Föderationsliste" referenzierte -Sequenzdiagramm "Signatur der Föderationsliste prüfen": - -.Sequenzdiagramm "Signatur der Föderationsliste prüfen" -[%collapsible%open] -==== -++++ -

- -

-++++ -==== diff --git a/docs/anwendungsfaelle/MS-stufen-berechtigungspruefung.adoc b/docs/anwendungsfaelle/MS-stufen-berechtigungspruefung.adoc deleted file mode 100644 index 8bbb9272..00000000 --- a/docs/anwendungsfaelle/MS-stufen-berechtigungspruefung.adoc +++ /dev/null @@ -1,69 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== A 8.3 - Stufen der Berechtigungsprüfung -Die folgende Sequenz beschreibt, wie die Berechtigungsprüfung eingehender und ausgehender `Matrix-Events` am *Messenger-Proxy* erfolgen muss. Das Berechtigungskonzept basiert auf einer dreistufigen Prüfung. - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Stufen der Berechtigungsprüfung -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Akteur* |Messenger-Proxy -|*Auslöser* | Matrix-Event -|*Komponenten* a| - * TI-Messenger-Client - * Messenger-Proxy A+B, - * Matrix-Homeserver A+B, - * Registrierungs-Dienst, - * VZD-FHIR-Directory -|*Vorbedingungen* a| Der Akteur ist bei seinem Homeserver angemeldet. -|*Eingangsdaten* |Matrix Event -|*Ergebnis* a|Der TI-Messenger-Client erhält die Information, ob die Einladung erfolgreich prozessiert werden konnte. -|*Ausgangsdaten* |status -==== -.sequence diagram -[%collapsible%open] -==== -++++ -

- -

-++++ -==== - -== Ablauf -=== Prüfregeln Client-Server Kommunikation -==== Stufe 1 - Prüfung der TI-Föderationszugehörigkeit -* Bei der Client-Server Kommunikation prüft der *Messenger-Proxy* im `Invite`- und `createRoom`-Event enthaltene Matrix-Domains auf Föderationszugehörigkeit. Hierbei ist zu beachten, dass beim `createRoom`-Event das Attribut `invite` nur mit maximal einem Element befüllt sein darf. Nach erfolgreicher Prüfung wird das Event an den *Matrix-Homeserver* des Einladenden weitergeleitet. Der *Matrix-Homeserver* prüft daraufhin, ob die beteiligten Akteure auf demselben *Matrix-Homeserver* registriert sind. Ist dies nicht der Fall, wird das `Invite`-Event an den zuständigen *Messenger-Proxy* des Einzuladenden gerichtet, wobei die Regeln der Server-Server Kommunikation durchzuführen sind. - -=== Prüfregeln Server-Server Kommunikation -Der *Messenger-Proxy* muss Prüfregeln für Server-Server Anfragen unterstützen und bei jedem `Event` den Inhalt der Anfrage prüfen. Im Folgenden werden die Prüfregeln beschrieben. - -==== Stufe 1 - Prüfung der TI-Föderationszugehörigkeit -* In der 1. Stufe der Server-Server Kommunikation muss der *Messenger-Proxy* für alle `Events` eine Prüfung durchführen, die feststellt, ob die im `Event` enthaltenen Matrix-Domains zur TI-Föderation gehören. Zur Prüfung der Föderationszugehörigkeit muss der *Messenger-Proxy* im `Authorization-Header` die im Attribut `origin` enthaltene Domain (bei eingehender Kommunikation) und die im Attribut `destination` enthaltene Domain (bei ausgehender Kommunikation) gegen die Domains in der Föderationsliste prüfen. Bei erfolgreicher Prüfung erfolgt dann die Weiterverarbeitung gemäß der Stufe 2. - -==== Stufe 2 - Prüfung der Freigabeliste -* In dieser Stufe prüft der *Messenger-Proxy* des Einzuladenden auf eine vorliegende Freigabe. Hierbei handelt es sich um eine Lookup-Table, in der alle erlaubten Akteure hinterlegt sind, von denen man eine Einladung in einen Chatraum akzeptiert. Ist ein Eintrag vom einladenden Akteur vorhanden, dann muss die beabsichtigte Einladung des Akteurs zugelassen werden. Ist dies nicht der Fall, muss die weitere Überprüfung gemäß der 3. Stufe erfolgen. - -==== Stufe 3 - Prüfung auf existierenden VZD-FHIR-Directory Eintrag -* In der letzten Stufe erfolgt die Prüfung ausgehend von den Einträgen der beteiligten Akteure im *VZD-FHIR-Directory*. Die Einladung muss zugelassen werden, wenn: - -* die `MXID` des einzuladenden Akteurs im Organisationsverzeichnis hinterlegt und seine Sichtbarkeit in diesem Verzeichnis nicht eingeschränkt ist oder -* der einladende sowie der einzuladende Akteur im Personenverzeichnis hinterlegt sind und der einzuladende Akteur seine Sichtbarkeit in diesem Verzeichnis nicht eingeschränkt hat. - -Ist die Prüfung nicht erfolgreich, dann muss die beabsichtigte Einladung des Akteurs vom *Messenger-Proxy* abgelehnt werden. - - diff --git a/docs/anwendungsfaelle/TI-Messenger-Anwendungsfaelle.adoc b/docs/anwendungsfaelle/TI-Messenger-Anwendungsfaelle.adoc deleted file mode 100644 index 36c63ea9..00000000 --- a/docs/anwendungsfaelle/TI-Messenger-Anwendungsfaelle.adoc +++ /dev/null @@ -1,57 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images -:toc: macro -:toclevels: 3 -:toc-title: Inhaltsverzeichnis -:numbered: - -image:meta/gematik_logo.svg[width=70%] - -toc::[] - -= Anwendungsfälle -Die folgende Seite gibt einen Überblick über die Anwendungsfälle des *TI-Messenger-Dienstes* die in *[gemSpec_TI-Messenger-Dienst]* beschrieben sind. Neben einer Einleitung enthält jedes Kapitel einen Link zu einer detaillierten Anwendungsfallbeschreibung und einem Sequenzdiagramm, das die Interaktion zwischen den beteiligten Komponenten visualisiert. - -TIP: Die Serviceaufrufe in den Sequenzdiagrammen enthalten möglicherweise nicht alle für den Aufruf erforderlichen Parameter. Die Sequenzdiagramme umfassen möglicherweise auch nicht alle Fehlerfälle. Sie konzentrieren sich auf die häufigsten Fehler für jeden einzelnen Anwendungsfall. - -== Bereitstellung und Administration eines Messenger-Service -Um mit anderen Akteuren Nachrichten austauschen zu können, benötigt die Organisation einen *Messenger-Service* von einem Anbieter eines *TI-Messenger-Fachdienstes*. Die folgenden Anwendungsfälle erläutern die Bereitstellung eines: *Messenger-Service*, die Föderations-Prüfungen, die Verwaltung der Föderationsliste sowie die verschiedenen Ebenen der Berechtigungsprüfungen. - -* link:MS-AF10103-authentisieren-organisation.adoc[AF_10103 - Authentisieren einer Organisation am TI-Messenger-Dienst] - -* link:MS-AF10060-bereitstellung-messenger-service.adoc[AF_10060 - Bereitstellung eines Messenger-Service für eine Organisation] - -* link:COM-AF10057-anmeldung-am-messenger-service.adoc[AF_10057 - Anmeldung eines Akteurs am Messenger-Service] - -* link:MS-AF10064-foederation-pruefen.adoc[AF_10064 - Föderationszugehörigkeit eines Messenger-Service prüfen] - -* link:MS-aktualisierung-foederationsliste.adoc[A 8.2 - Aktualisierung der Föderationsliste] - -* link:MS-stufen-berechtigungspruefung.adoc[A 8.3 - Stufen der Berechtigungsprüfung] - -== Interaktion mit dem VZD-FHIR-Directory -Das *VZD-FHIR-Directory* ist das zentrale Adressbuch für Organisationen und Personen im deutschen Gesundheitswesen. In den folgenden Anwendungsfällen wird detailliert erläutert, was erforderlich ist, um die Organisations- oder Practitioner-Informationen im *VZD-FHIR-Directory* - im Kontext des *TI-Messenger-Dienstes* - zu ändern bzw. um FHIR-Ressourcen zu suchen. - -* link:VZD-AF10059-organisation-hinzufuegen.adoc[AF_10059 - Organisationsressourcen im Verzeichnisdienst hinzufügen] - -* link:VZD-AF10058-practitioner-hinzufuegen.adoc[AF_10058 - Akteur (User-HBA) im Verzeichnisdienst hinzufügen] - -* link:VZD-suche.adoc[A 8.1 - Einträge im VZD-FHIR-Directory suchen] - -== Interaktion zwischen Akteuren -Die folgenden Anwendungsfälle beschreiben den Anmeldevorgang, die Einladung anderer Akteure sowie den Austausch von Nachrichten. Sowohl die Einladungen als auch der Nachrichtenaustausch werden aus zwei Perspektiven erklärt. Die erste Perspektive konzentriert sich auf die Kommunikation innerhalb einer Organisation, die zweite Perspektive zeigt die Abläufe für eine Kommunikation mit mehr als einem beteiligten *Matrix-Homeserver*. - -* link:COM-AF10104-einladung-innerhalb.adoc[AF_10104 - Einladung von Akteuren innerhalb einer Organisation] - -* link:COM-AF10063-events-innerhalb.adoc[AF_10063 - Austausch von Events zwischen Akteuren innerhalb einer Organisation] - -* link:COM-AF10061-einladung-ausserhalb.adoc[AF_10061 - Einladung von Akteuren außerhalb einer Organisation] - -* link:COM-AF10062-events-ausserhalb.adoc[AF_10062 - Austausch von Events zwischen Akteuren ausserhalb einer Organisation] diff --git a/docs/anwendungsfaelle/VZD-AF10058-practitioner-hinzufuegen.adoc b/docs/anwendungsfaelle/VZD-AF10058-practitioner-hinzufuegen.adoc deleted file mode 100644 index 702d93d3..00000000 --- a/docs/anwendungsfaelle/VZD-AF10058-practitioner-hinzufuegen.adoc +++ /dev/null @@ -1,51 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== AF_10058 Akteur - (User-HBA) im Verzeichnisdienst hinzufügen -Mit diesem Anwendungsfall wird ein Akteur in der Rolle "User-HBA" für andere Akteure anderer *Messenger-Services* auffindbar und erreichbar. Dafür werden FHIR-Ressourcen mit ihrer jeweiligen `MXID` im Personenverzeichnis (`PractitionerRole`) des *VZD-FHIR-Directory* hinterlegt. Zusätzlich besteht die Möglichkeit die Sichtbarkeit für andere Akteure einzuschränken. Dieser Anwendungsfall kann direkt mit dem initialen Anmeldevorgang eines Akteurs am *Messenger-Service* (siehe Anwendungsfall: link:/docs/anwendungsfaelle/COM-AF10057-anmeldung-am-messenger-service.adoc[AF_10057 - Anmeldung eines Akteurs am Messenger-Service]) kombiniert werden. Hierfür wird der Akteur in der Rolle "User-HBA" während des Anmeldevorgangs durch den *TI-Messenger-Client* gefragt, ob dieser im Besitz eines HBAs ist. - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Akteur (User-HBA) im Verzeichnisdienst hinzufügen -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Akteur* |Leistungserbringer, Mitarbeiter einer Organisation im Gesundheitswesen in der Rolle "User-HBA" -|*Auslöser* |Ein Akteur in der Rolle "User-HBA" möchte sich im Personenverzeichnis erreichbar machen, indem er seine MXID im seinen Practitioner-Datensatz im VZD-FHIR-Directory hinterlegt. -|*Komponenten* a| - * TI-Messenger-Client, - * Authenticator, - * zentraler IDP-Dienst, - * FHIR-Proxy, - * Auth-service, - * VZD-FHIR-Directory, -|*Vorbedingungen* a| - * Der Akteur ist bei einem gültigen Messenger-Service angemeldet. - * Der Akteur verfügt über einen zugelassenen TI-Messenger-Client. - * Das VZD-FHIR-Directory ist beim zentralen IDP-Dienst registriert. - * Der Akteur kann sich am zentralen IDP-Dienst authentisieren. -|*Eingangsdaten* |HBA, FHIR-Practitioner-Ressourcen -|*Ergebnis* |FHIR-Practitioner-Ressourcen aktualisiert, Status -|*Ausgangsdaten* |aktualisierter Practitioner-Datensatz -|=== -==== -.Sequenzdiagramm -[%collapsible%open] -==== -++++ -

- -

-++++ -==== diff --git a/docs/anwendungsfaelle/VZD-AF10059-organisation-hinzufuegen.adoc b/docs/anwendungsfaelle/VZD-AF10059-organisation-hinzufuegen.adoc deleted file mode 100644 index 8f46e377..00000000 --- a/docs/anwendungsfaelle/VZD-AF10059-organisation-hinzufuegen.adoc +++ /dev/null @@ -1,51 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== AF_10059 - Organisationsressourcen im Verzeichnisdienst hinzufügen -Mit diesem Anwendungsfall macht ein Akteur in der Rolle "Org-Admin" Akteure seiner Organisation im *TI-Messenger-Dienst* für andere Akteure auffindbar und erreichbar. Dafür werden Endpoint-Ressourcen mit ihrer jeweiligen `MXID` im Organisationsverzeichnis (`HealthcareService`) des *VZD-FHIR-Directory* hinterlegt. Organisationen können mehrere FHIR-Ressourcen pro Organisation administrieren und somit eingehende Kommunikationsprozesse organisatorisch und thematisch strukturieren (siehe *[gemSpec_VZD_FHIR_Directory]*). - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Organisationsressourcen im Verzeichnisdienst hinzufügen -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Akteur* |Beauftragter Mitarbeiter einer Organisation in der Rolle "Org-Admin" -|*Auslöser* |Der Administrator der Organisation (Org-Admin) möchte seine Organisation erreichbar machen indem die MXIDs der Akteure der Organisation im VZD-FHIR-Directory hinterlegt werden. -|*Komponenten* a| - * TI-Messenger-Client (mit erweiterter Org-Admin Funktionalität), - * TI-Messenger Registrierungs-Dienst - * Auth-Service - * FHIR-Proxy - * FHIR-Directory -|*Vorbedingungen* a| - * Für die Organisation wurde ein Messenger-Service bereitgestellt und es existiert ein Eintrag der Organisation im FHIR-Directory. - * Der Administrator der Organisation verfügt über einen TI-Messenger-Client (mit erweiterter Org-Admin Funktionalität). - * Es existiert eine Vertrauensbeziehung zwischen dem TI-Messenger Registrierungs-Dienst und dem VZD-FHIR-Directory (Übergabe des Zertifikates) - * Der Administrator der Organisation wurde vom Registrierungs-Dienst authentifiziert. -|*Eingangsdaten* | Org-Admin-Credentials, zweiter Faktor, FHIR-Organisations-Ressourcen -|*Ergebnis* | FHIR-Organisations-Ressourcen aktualisiert, Status -|*Ausgangsdaten* | Aktualisierte VZD-FHIR-Directory-Datensätze -|=== -==== - -.Sequenzdiagramm -[%collapsible%open] -==== -++++ -

- -

-++++ -==== diff --git a/docs/anwendungsfaelle/VZD-suche.adoc b/docs/anwendungsfaelle/VZD-suche.adoc deleted file mode 100644 index 3422db2c..00000000 --- a/docs/anwendungsfaelle/VZD-suche.adoc +++ /dev/null @@ -1,52 +0,0 @@ -ifdef::env-github[] -:tip-caption: :bulb: -:note-caption: :information_source: -:important-caption: :heavy_exclamation_mark: -:caution-caption: :fire: -:warning-caption: :warning: -endif::[] - -:imagesdir: ../../images - -image:meta/gematik_logo.svg[width=70%] - -=== A 8.1 - Einträge im VZD-FHIR-Directory suchen -Die folgende Sequenz beschreibt, wie ein Akteur im *VZD-FHIR-Directory* nach `HealthcareService`- und `PractitionerRole`-Ressourcen sucht. Dies setzt eine erfolgreiche Anmeldung des Akteurs an einem *Messenger-Service* voraus. Der dargestellte Ablauf zeigt alle prinzipiell notwendigen Kommunikationsbeziehungen. Weitergehende Informationen zum Ablauf sind in der *[gemSpec_VZD_FHIR_Directory]* zu finden. Für die Prüfung des `Matrix-OpenID-Tokens` muss der Zugriff auf den Endpunkt `/_matrix/federation/v1/openid/userinfo` ermöglicht werden. - -.Anwendungsfallbeschreibung -[%collapsible%open] -==== -[caption=] -Einträge im VZD-FHIR-Directory suchen -[%header, cols="1,1"] -|=== -| |Beschreibung -|*Akteur* |Anwender in der Rolle "User/User-HBA" -|*Auslöser* |Ein Akteur in der Rolle "User"/"User-HBA" setzt eine Suche ab. -|*Komponenten* a| - * TI-Messenger-Client, - * Messenger-Proxy, - * Matrix-Homeserver - * FHIR-Proxy, - * Auth-Service, - * VZD-FHIR-Directory, -|*Vorbedingungen* a| - * Der Akteuer ist bei seinem Homeserver eingeloggt. - * Dem Matrix Homeserver wird vom VZD-FHR-Directory vertraut. - * Der Aktuer darf sich mit seinem Matrix-OpenID-Token authentisieren. - * Der Messenger-Proxy erlaubt dem VZD-FHIR-Directory Zugriff auf /_matrix/federation/v1/openid/userinfo, um den Token prüfen zu lassen. -|*Eingangsdaten* |Search, Matrix OpenID Token -|*Ergebnis* | Die gesuchten FHIR-Resourcen. -|*Ausgangsdaten* | FHIR Datensätze -|=== - -==== -.Sequenzdiagramm -[%collapsible%open] -==== -++++ -

- -

-++++ -==== diff --git a/images/diagrams/System_Overview-Allgemein.png b/images/diagrams/System_Overview-Allgemein.png deleted file mode 100644 index a161cf0e..00000000 Binary files a/images/diagrams/System_Overview-Allgemein.png and /dev/null differ diff --git a/images/diagrams/System_Overview-Allgemein.svg b/images/diagrams/System_Overview-Allgemein.svg deleted file mode 100644 index b0d68411..00000000 --- a/images/diagrams/System_Overview-Allgemein.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
VZD-FHIR-Directory
VZD-FHIR-Directory
TI-Messenger-Fachdienst
TI-Messenger-Fachdienst
Messenger-Service
Messenger-Service
Registrierungs-
Dienst
Registrierungs-...

TI-Messenger- Client
TI-Messenger- Cli...
Messenger-
Proxy
Messenger-...
Push-
Gateway
Push-...
FHIR-Directory
FHIR-Directory
FHIR-Proxy
FHIR-Proxy
IDP-
Dienst
IDP-...
OAuth
OAuth
Matrix-
Homeserver
Matrix-...
Auth-Service
Auth-Service
Messenger-Service
Messenger-Service
Messenger-
Proxy
Messenger-...
Matrix-
Homeserver
Matrix-...
R
R
R
R
R
R
R
R
R
R
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Client/System_Overview-Client.png b/images/diagrams/TI-Messenger-Client/System_Overview-Client.png deleted file mode 100644 index 01fc77d3..00000000 Binary files a/images/diagrams/TI-Messenger-Client/System_Overview-Client.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Client/System_Overview-Client.svg b/images/diagrams/TI-Messenger-Client/System_Overview-Client.svg deleted file mode 100644 index 13cce1a9..00000000 --- a/images/diagrams/TI-Messenger-Client/System_Overview-Client.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
VZD-FHIR-Directory
VZD-FHIR-Directory
TI-Messenger-Fachdienst
TI-Messenger-Fachdienst
Messenger-Service
Messenger-Service
Registrierungs-
Dienst
Registrierungs-...

TI-Messenger- Client
TI-Messenger- Cli...
Messenger-
Proxy
Messenger-...
Push-
Gateway
Push-...
FHIR-Directory
FHIR-Directory
FHIR-Proxy
FHIR-Proxy
IDP-
Dienst
IDP-...
OAuth
OAuth
Matrix-
Homeserver
Matrix-...
Auth-Service
Auth-Service
Messenger-Service
Messenger-Service
Messenger-
Proxy
Messenger-...
Matrix-
Homeserver
Matrix-...
R
R
R
R
R
R
R
R
R
R
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10057_Seq.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10057_Seq.png deleted file mode 100644 index 4cc0a8d5..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10057_Seq.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10057_Seq.svg b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10057_Seq.svg deleted file mode 100644 index 0fbcc879..00000000 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10057_Seq.svg +++ /dev/null @@ -1 +0,0 @@ -Messenger-Service VZD-FHIR-Directory Akteur in der RolleUser / User-HBAAkteur in der RolleUser / User-HBATI-Messenger-ClientTI-Messenger-ClientMessenger ProxyMessenger ProxyMatrix-HomeserverMatrix-HomeserverAuth-ServiceAuth-ServiceEingabe Messenger-ServiceGET /_matrix/client/loginTLS-Terminierungprüfe client_idalt[TI-Messenger Client wird vom Anbieter nicht unterstützt (kein gültiges client_secret)]HTTP 401 UnauthroizedAnmeldungnicht erfolgreich[TI-Messenger Client wird vom Anbieter unterstützt (gültiges client_secret)]HTTP(S) ForwardDie Authentifizierungsverfahren werden für jedenMessenger-Service durch die Organisation festgelegtunterstützteAuthentifizierungs-verfahrenHTTP(S) ForwardZeigeAuthentifizierungsmaskeStarte AuthentifizierungAnmeldungPOST /_matrix/client/loginHTTP(S) ForwardprüfeClient-Credentialsopt[Abbruch]FehlerhafteAnmeldedatenHTTP(S) ForwardAnmeldedatensind nicht korrektDie Überprüfung ist abhängig vomgewählten AuthentifizierungsverfahrenerstelleMatrix-ACCESS_TOKEN,device_id,MXIDMatrix-ACCESS_TOKEN,device_ID, MXIDHTTP(S) ForwardSpeichereMatrix-ACCESS_TOKENPOST /_matrix/client/user/{userId}/openid/request_tokenHTTP(S) ForwardErstelleMatrix-OpenID-TokenMatrix-OpenID-TokenHTTP(S) ForwardGET /tim-authenticate (Matrix-OpenID-Token)Prüfung, obMatrix-Domainin Föderationenthalten istalt[nicht valider Messenger-Service, da Matrix-Homeserver nicht in der Föderations enthalten ist]HTTP 401UnauthorizedAbmelden SessionMatrix-ACCESS_TOKENlöschenAnmeldungnicht erfolgreich[valider Messenger-Service, da Matrix-Homeserver in der Föderation enthalten ist]HTTP 200Anmeldungerfolgreich \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10059_Seq.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10059_Seq.png deleted file mode 100644 index 99afdfa2..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10059_Seq.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10059_Seq.svg b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10059_Seq.svg deleted file mode 100644 index 8a3bc1a0..00000000 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10059_Seq.svg +++ /dev/null @@ -1 +0,0 @@ -Endgerät VZD-FHIR-Directory Ti-Messenger-Fachdienst Akteur in der RolleOrg-AdminAkteur in der RolleOrg-AdminTI-Messenger-Clientmit Org-AdminFunktionalitätTI-Messenger-Clientmit Org-AdminFunktionalitätFHIR-ProxyFHIR-ProxyAuth-ServiceAuth-ServiceFHIR-DirectoryFHIR-DirectoryRegistrierungs-DienstRegistrierungs-DienstDie Organisation hat einen Messenger-Servicebereitgestellt bekommen, der Teil der Föderation istFHIR Ressourcen imVZD-FHIR-DirectoryhinzufügenPrüfung, ob gültigesowner-accesstokenvorliegtalt[kein gültiges owner-accesstoken vorhanden]alt[Akteur ist nicht am Registrierungs-Dienst angemeldet]Mit Admin-Accountam Registrierungs-DienstanmeldenLogin mit Client-Credentials + 2.FaktorSchnittstelle wird nichtdurch die gematik spezifiziertprüfe Client-Credentialsund 2. FaktorstatusErfolgreich angemeldetRegService-OpenID-Token anfragen (z. B. GET /regserv/request_Token)Schnittstelle wird nichtdurch die gematik spezifiziertVerifizierung desangemeldeten AkteursRegService-OpenID-Token {telematikID, professionOID, Signaturzertifikat (x5c)}GET /owner-authenticate (Auth Header mit RegService-OpenID-Token)Prüfung des TokenDie Prüfschritte sind dergemSpec_VZD_FHIR_Directoryzu entnehmenopt[Abbruch]Tokenprüfung fehlgeschlagenkeine Berechtigungerzeugeowner-accesstokenowner-accesstokenFHIR-Directory Eintrag erstellenFHIR-Ressource der Organisation anzeigenFHIR-Operation um eigenen Datensatz anzuzeigenAuthorization Bearer owner-accesstokenprüfeowner-accesstokenHTTPS ForwardEintrag suchenFHIR BundleHTTPS ForwardFHIR-Ressource der Organisation erstellen/ändernFHIR-Operationen um eigenen Datensatz zu bearbeitenAuthorization Bearer owner-accesstokenprüfeowner-accesstokenHTTPS ForwardEintrag bearbeitenStatusHTTPS Forwardstatus \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10061_Seq.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10061_Seq.png deleted file mode 100644 index e54b9a4e..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10061_Seq.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10061_Seq.svg b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10061_Seq.svg deleted file mode 100644 index dac15baf..00000000 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10061_Seq.svg +++ /dev/null @@ -1 +0,0 @@ -Messenger-Service A Messenger-Service B  Akteur - A in der RolleUser / User-HBA  Akteur - A in der RolleUser / User-HBA TI-Messenger-ClientTI-Messenger-ClientMessenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-HomeserverMessenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-HomeserverPush-GatewayPush-GatewayTI-Messenger-ClientTI-Messenger-Client Akteur - B in der RolleUser / User-HBA  Akteur - B in der RolleUser / User-HBA  Der Akteur A ist erfolgreich beim Messenger Service A angemeldet  Der Akteur B ist erfolgreich beim Messenger Service B angemeldet alt[Suche über VZD-FHIR-Directory]refAnhang B - Einträge im VZD-FHIR-Directory suchen [Direktaustausch über QR-Code Scan] Akteur A und Akteur B treffen sich persönlich 1QR-Code teilen2QR-Code scannen3GET /scan4MXID von Akteur AMXID in Freigabeliste eintragen5POST /tim-contact-mgmt/createContactSetting(MXID, start, end, Matrix-OpenID-Token)6GET /openid/userinfo/?Matrix-OpenID-Token7prüfeMatrix-OpenID-Token8status9MXID von Akteur Ain Freigabelistefür Akteur Baufnehmen10status11QR-Code teilen12QR-Code scannen13GET /scan14MXID von Akteur BMXID in Freigabeliste eintragen15POST /tim-contact-mgmt/createContactSetting(MXID, start, end, Matrix-OpenID-Token)16GET /openid/userinfo/?Matrix-OpenID-Token17prüfeMatrix-OpenID-Token18status19MXID von Akteur Bin Freigabelistefür Akteur Aaufnehmen20status Ein Chatraum wurde bereits durch den Akteur A eingerichtet. 21POST /_matrix/client/r0/rooms/{roomId}/inviterefAF_10064-Föderationszugehörigkeit eines        Messenger-Service prüfen Stufe 1 - Prüfung gemäßClient-Server Kommunikationbreak[Abbruch]22HTTP 403Forbidden23Einladung nichterfolgreich24HTTP(S) Forward25Invite verarbeiten26POST /_matrix/federation/v1/invite/{roomId}/{eventId}refAF_10064-Föderationszugehörigkeit eines        Messenger-Service prüfen Stufe 1 - Prüfung gemäßServer-Server Kommunikation27HTTP(S) ForwardStufe 1 - Prüfung gemäßServer-Server KommunikationrefAF_10064-Föderationszugehörigkeit eines        Messenger-Service prüfen break[Abbruch]28HTTP 403Forbidden29HTTP(S) forward30Einladung nichterfolgreichrefAnhang B - Stufen der Berechtigungsprüfung Stufe 2 und 3 31HTTP(S) Forward32Invite verarbeitenopt[Pushbenachrichtigung]33POST /_matrix/push/notify34Notification35Status36Invite Request37HTTP(S) Forward38Einladung anzeigen39Einladung bestätigen40commit41TLS Terminierung42HTTP(S) Forward43Invite auslösen44Status45Status46Nutzer ist demRaum beigetreten47Status48Nutzer in denRaum hinzugefügt \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10062_Seq.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10062_Seq.png deleted file mode 100644 index b721bc26..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10062_Seq.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10062_Seq.svg b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10062_Seq.svg deleted file mode 100644 index 82d838ab..00000000 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10062_Seq.svg +++ /dev/null @@ -1 +0,0 @@ -Messenger-Service A Messenger-Service B  Akteur - A in der RolleUser / User-HBA  Akteur - A in der RolleUser / User-HBA TI-Messenger-ClientTI-Messenger-ClientMessenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-HomeserverMessenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-HomeserverPush-GatewayPush-GatewayTI-Messenger-ClientTI-Messenger-Client Akteur - B in der RolleUser / User-HBA  Akteur - B in der RolleUser / User-HBA  Die Akteure sind auf dem selben Messenger-Service angemeldet und im Besitz eines zugelassenen TI-Messenger-Clients.Ebenfalls sind beide Akteure einem gemeinsamen Raum beigetreten. Akteur A löstMatrix-Event ausMatrix-RequestHTTP(S) ForwardEventverarbeitenMatrix-RequestrefAF_10064-Föderationszugehörigkeit eines        Messenger-Service prüfen Stufe 1 - Prüfung gemäßServer-Server KommunikationHTTP(S) ForwardrefAF_10064-Föderationszugehörigkeit eines        Messenger-Service prüfen Stufe 1 - Prüfung gemäßServer-Server KommunikationHTTP(S) FowardEventverarbeitenopt[Pushbenachrichtigung]POST /_matrix/push/notifyNotificationStatusMatrix-Requestan Client-B)HTTP(S) ForwardEvent verarbeitenStatusHTTP(S) Forward(Status Client-B)Status (Matrix-Request)HTTP(S) ForwardStatusHTTP(S) ForwardStatus \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10063_Seq.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10063_Seq.png deleted file mode 100644 index 09a89ece..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10063_Seq.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10063_Seq.svg b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10063_Seq.svg deleted file mode 100644 index d9571ee4..00000000 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10063_Seq.svg +++ /dev/null @@ -1 +0,0 @@ -Messenger-Service Akteur - A in der RolleUser / User-HBAAkteur - A in der RolleUser / User-HBATI-Messenger-Client ATI-Messenger-Client AMessenger-ProxyMessenger-ProxyMatrix-Homeserver(inklusive Nutzerverzeichnis)Matrix-Homeserver(inklusive Nutzerverzeichnis)Push-GatewayPush-GatewayTI-Messenger-Client BTI-Messenger-Client BAkteur - B in der RolleUser / User-HBAAkteur - B in der RolleUser / User-HBA Die Akteure sind auf dem selben Messenger-Service angemeldet und im Besitz eines zugelassenen TI-Messenger-Clients.Ebenfalls sind beide Akteure einem gemeinsamen Raum beigetreten. Akteur A löstMatrix-Event ausMatrix-RequestHTTP(S) FowardEventverarbeitenopt[Pushbenachrichtigung]POST /_matrix/push/notifyNotificationStatusMatrix-Requestan Client-BHTTP(S) ForwardEventverarbeitenStatusHTTP(S) Forward(Status Client-B)Status (Matrix-Request)HTTP(S) ForwardStatusHTTP(S) ForwardStatus \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10064_Seq.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10064_Seq.png deleted file mode 100644 index 94d95b8c..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10064_Seq.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10103_Seq.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10103_Seq.png deleted file mode 100644 index 19632e5b..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10103_Seq.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10103_Seq.svg b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10103_Seq.svg deleted file mode 100644 index c847b51b..00000000 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10103_Seq.svg +++ /dev/null @@ -1 +0,0 @@ -Endgerät Akteur in der RolleOrg-AdminAkteur in der RolleOrg-AdminFrontend desRegistrierungs-DienstesFrontend desRegistrierungs-DienstesAuthenticatorAuthenticatorKonnektorKonnektorRegistrierungs-DienstRegistrierungs-DienstzentralerIDP-DienstzentralerIDP-Dienstalt[Organisation nicht am Registrierungs-Dienst authentisiert]1Organisation verifizieren(Verfahren auswählen)alt[OpenID Connect]2POST I_RegistrationSchnittstelle wird nichtdurch die gematik spezifiziert3Erzeuge PKCE Codefür verifier und challenge4Redirect to IDP Authorization Endpoint5Deeplink authenticator://...6GET {authorization_endpoint}7Authentication challenge8ExternalAuthenticate9ExternalAuthenticateResponse10Authentication challenge response11HTTP 302 Redirect(auth_code)12{client_callback_uri}(Redirect + auth_code)13POST I_Registration(auth_code)14POST {token_endpoint}(auth_code, verifier)15id_token16ID_TOKEN validieren(id_token)17enthalteneProfessionOID aufgültige Organisationprüfen[KIM - Verfahren]18KIM-Adresse in Eingabemaske eintragen (POST I_Registration)19Abfrage des LDAP-DirectoryEintrags zur KIM-Adresse20Speicherung der telematikIdund der professionOID21ProfessionOID aufgültige Organisationprüfen22KIM Nachricht mit URL23URL in KIM-Nachricht öffnenbreak[keine gültige ProfessionOID gefunden]24Fehlernachricht "keine gültige ProfessionOID gefunden"25Fehlernachricht"Authentifizierung fehlgeschlagen"26Organisationauthentifizieren27Prüfung auf existierenden Admin Accountbreak[Organisation bereits authentifiziert UND ein Admin-Account existiert bereits]28Fehlernachricht "Account existiert bereits"29Fehlernachricht"Account existiert bereits"30Status31Verifizierung erfolgreich32Admin Account anlegen(Passwort + 2. Faktor)33POST I_Registration (Admin-Account Credentials + 2. Faktor)Schnittstelle wird nichtdurch die gematik spezifiziert34Credentials-Policy prüfen35Org-Admin Accountfür die Organisationanlegen36Status37Account angelegt \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10104_Seq.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10104_Seq.png deleted file mode 100644 index 4335cf1d..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10104_Seq.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10104_Seq.svg b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10104_Seq.svg deleted file mode 100644 index b7ac0137..00000000 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10104_Seq.svg +++ /dev/null @@ -1 +0,0 @@ -Messenger-Service Akteur - A in der RolleUser / User-HBAAkteur - A in der RolleUser / User-HBATI-Messenger-Client ATI-Messenger-Client AMessenger-ProxyMessenger-ProxyMatrix-Homeserver(inklusive Nutzerverzeichnis)Matrix-Homeserver(inklusive Nutzerverzeichnis)Push-GatewayPush-GatewayTI-Messenger-Client BTI-Messenger-Client BAkteur - B in der RolleUser / User-HBAAkteur - B in der RolleUser / User-HBA Die Akteure sind auf dem selben Messenger-Service angemeldet und im Besitz eines zugelassenen TI-Messenger-Clients.Ein Chatraum wurde durch den Einladenen eingerichtet. opt[Akteur suchen]Suche Akteur BPOST /_matrix/client/user_directory/searchTLS-TerminierungHTTP(S) ForwardNutzerverzeichnisdurchsuchenMXIDHTTP(S) ForwardAkteur B einladenPOST /_matrix/client/r0/rooms/{roomId}/invite (roomId)refAF_10064- Föderationszugehörigkeit eines Messenger-Service prüfen alt[Matrix-Domain nicht in der Föderation enthalten]HTTP 401UnauthorizedAbmeldung der SessionAnmeldung nichterfolgreich[Matrix-Domain in der Föderation enthalten]HTTP(S) FowardInvite verarbeitenopt[Pushbenachrichtigung]POST /_matrix/push/notifyNotificationStatusInvite RequestHTTP(S) ForwardEinladung anzeigenEinladung bestätigencommitTLS TerminierungHTTP(S) ForwardInvite auslösenStatusStatusNutzer in denRaum hinzugefügtStatusNutzer ist demRaum beigetreten \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Approvel_List_Seq.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Approvel_List_Seq.png deleted file mode 100644 index 186c4f22..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Approvel_List_Seq.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Approvel_List_Seq.svg b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Approvel_List_Seq.svg deleted file mode 100644 index 4bc5ce10..00000000 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Approvel_List_Seq.svg +++ /dev/null @@ -1 +0,0 @@ -Messenger-Service Messenger-Service TI-Messenger-ClientTI-Messenger-ClientMessenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-HomeserverMessenger-ProxyMessenger-ProxyRegistrierungs-DienstRegistrierungs-DienstMatrix-HomeserverMatrix-HomeserverVZD-FHIR-DirectoryVZD-FHIR-DirectoryInvite-EventBerechtigungskonzept - Stufe 1 refAF_10064-Föderationszugehörigkeit eines        Messenger-Service prüfen Stufe 1 - Prüfung gemäßClient-Server Kommunikationalt[Matrix-Domain nicht in der Föderation enthalten]HTTP 403ForbiddenAbmeldung der SessionHTTP(S) ForwardPrüfung aufOrganisationszugehörigkeitalt[Akteure gehören einer gemeinsamen Organisation an]Invite wirdverarbeitetstatusstatus[Akteure gehören nicht einer gemeinsamen Organisation an]Matrix-Invite-Eventwird weitergeleitetrefAF_10064-Föderationszugehörigkeit eines        Messenger-Service prüfen Stufe 1 - Prüfung gemäßServer-Server KommunikationMatrix-Invite-Eventwird weitergeleitetBerechtigungskonzept - Stufe 1  refAF_10064-Föderationszugehörigkeit eines        Messenger-Service prüfen Stufe 1 - Prüfung gemäßServer-Server Kommunikationalt[Matrix-Domain nicht in der Föderation enthalten]HTTP 403ForbiddenHTTP(S) forwardAbmeldung der SessionBerechtigungskonzept - Stufe 2   Prüfung, ob MXIDdes Einladendenin der Freigabelisteenthalten istalt[MXID des Einladenden ist in der Freigabeliste enthalten]HTTP(S) Forward[MXID des Einladenden ist nicht in der Freigabeliste enthalten]Berechtigungskonzept - Stufe 3   Prüfung, ob MXIDder Akteure imVZD-FHIR-Dirctoryenthalten istPOST /tim-provider-services/whereIsSucheErgebnis, statusPrüfungErgebnis, statusalt[MXID ist im VZD-FHIR-Directory und Ergebnis == true]HTTP(S) Forward[MXID ist nicht im VZD-FHIR-Directory enthalten]Abbruch,Verbindung wirdabgelehntInvite-Eventverarbeitenstatusstatusstatus \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Directory_search_Seq.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Directory_search_Seq.png deleted file mode 100644 index 197f030a..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Directory_search_Seq.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Directory_search_Seq.svg b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Directory_search_Seq.svg deleted file mode 100644 index 8cdc5c32..00000000 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Directory_search_Seq.svg +++ /dev/null @@ -1 +0,0 @@ -VZD-FHIR-Directory Akteur in der RolleUser / User-HBAAkteur in der RolleUser / User-HBATI-Messenger-ClientTI-Messenger-ClientMessenger ProxyMessenger ProxyMatrix-HomeserverMatrix-HomeserverFHIR-ProxyFHIR-ProxyAuth-ServiceAuth-ServiceFHIR-DirectoryFHIR-Directory Der Akteur ist erfolgreich beim Messenger-Service angemeldet 1Suchparameter fürFHIR-Ressourceneingeben2prüfe ob noch gültigessearch-accesstokenvorliegtalt[kein gültiges search-accesstoken vorhanden]3GET /_matrix/client/user/{userId}/openid/request_token4HTTP Forward5Matrix-OpenID-Token6HTTP(S) Forward7GET /tim-authenticate?mxId=... (Auth Header mit Matrix-OpenID-Token)8Prüfe obMatrix Server Name inder Föderation enthalten istopt[Abbruch]9Matrix Server Name nicht in der Föderation enthalten10GET /openid/userinfo?access_token=Matrix-OpenID-Token11HTTP(S) Forward12prüfe Matrix-OpenID-Token13MXID des Nutzers14HTTP(S) Forward15erzeugesearch-accesstoken16search-accesstoken17POST /search?... (Auth Header mit search-accesstoken)18prüfe search-accesstokenopt[Abbruch]19kein gültiges search-accesstokenalt[HealthcareService-Einträge werden gesucht]20POST /search/HealthcareService/?Finde Datensatz für TelematikID21Suchergebnis (FHIR Bundle)alt[PractitionerRole-Einträge werden gesucht]22POST /search/PractitionerRole/?Finde Datensatz für MXID23Suchergebnis (FHIR Bundle)24Suchergebnis (FHIR Bundle)25Suchergebnis (FHIR Bundle) \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_SignCheck.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_SignCheck.png deleted file mode 100644 index 333f1acb..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_SignCheck.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_org_admin.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_org_admin.png deleted file mode 100644 index 713f794d..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_org_admin.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_org_admin.svg b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_org_admin.svg deleted file mode 100644 index cc176b14..00000000 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_org_admin.svg +++ /dev/null @@ -1 +0,0 @@ -RolleAnwendungsfälleOrg-Admin«AF_10103» Authentisieren einer Organisationam TI-Messenger-Dienst«AF_10060» Bereitstellung eines Messenger-Servicefür eine Organisation«AF_10059» Organisationsressourcen imVerzeichnisdienst hinzufügenz. B. Beauftragter Mitarbeiter in einerOrganisation \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_user_HBA.png b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_user_HBA.png deleted file mode 100644 index 42da8c81..00000000 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_user_HBA.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_user_HBA.svg b/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_user_HBA.svg deleted file mode 100644 index 1b243987..00000000 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_user_HBA.svg +++ /dev/null @@ -1 +0,0 @@ -RolleAnwendungsfälleUser / User-HBA«AF_10057» Anmeldung eines Akteurs amMessenger-Service«AF_10058» Akteur (User-HBA) imVerzeichnisdienst hinzufügen«AF_10104» Einladung von Akteureninnerhalb einer Organisation«AF_10063» Austausch von Eventszwischen Akteureninnerhalb einer Organisation«AF_10061» Einladung von Akteurenaußerhalb einer Organisation«AF_10062» Austausch von Eventszwischen Akteurenaußerhalb einer Organisationz. B. Leistungserbringer im Besitzeines HBAs \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Fachdienst/API-Messenger-Service-API-Messenger-Service.png b/images/diagrams/TI-Messenger-Fachdienst/API-Messenger-Service-API-Messenger-Service.png deleted file mode 100644 index decb92f8..00000000 Binary files a/images/diagrams/TI-Messenger-Fachdienst/API-Messenger-Service-API-Messenger-Service.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Fachdienst/API-Messenger-Service-API-Messenger-Service.svg b/images/diagrams/TI-Messenger-Fachdienst/API-Messenger-Service-API-Messenger-Service.svg deleted file mode 100644 index b925f168..00000000 --- a/images/diagrams/TI-Messenger-Fachdienst/API-Messenger-Service-API-Messenger-Service.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -

extern

extern

extern

extern

intern

intern
Messenger-Service
Messenger-Service
Matrix- Homeserver
Matrix- Homese...
Messenger-
Proxy
Messenger-...

Matrix - Server

Server API

Matrix - Serve...
R
R
R
R

Matrix - Server

Server API

Matrix - Serve...
R
R
R
R

Matrix - Server

Server API

Matrix - Serve...

Matrix - Client

Server API

Matrix - Clien...
R
R
R
R

TiMessengerContactManagement

TiMessengerContactManagement

Matrix - Client

Server API

Matrix - Clien...
R
R

Authentifizierungsverfahren

Authentifizierungsverfahren
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Fachdienst/Schnittstellen_am_Registrierungs-Dienst-Registrierungs-Dienst.png b/images/diagrams/TI-Messenger-Fachdienst/Schnittstellen_am_Registrierungs-Dienst-Registrierungs-Dienst.png deleted file mode 100644 index 6b1fc55f..00000000 Binary files a/images/diagrams/TI-Messenger-Fachdienst/Schnittstellen_am_Registrierungs-Dienst-Registrierungs-Dienst.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Fachdienst/Schnittstellen_am_Registrierungs-Dienst-Registrierungs-Dienst.svg b/images/diagrams/TI-Messenger-Fachdienst/Schnittstellen_am_Registrierungs-Dienst-Registrierungs-Dienst.svg deleted file mode 100644 index 4e2544c6..00000000 --- a/images/diagrams/TI-Messenger-Fachdienst/Schnittstellen_am_Registrierungs-Dienst-Registrierungs-Dienst.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Ausstellung von RegService-OpenID-Token
Ausstellung von RegSe...
Registrierungs-
Dienst
Registrierungs-...
Administration
Administration
Messenger-Service in die TI-Föderation aufnehmen
Messenger-Service in die...
I_Registration
I_Registratio...
I_internVerification
I_internVerificat...
VZD-FHIR-Directory
VZD-FHIR-Directory
Messenger-Proxy
Messenger-Proxy
Frontend des
Registrierungs-Dienstes
Frontend des...
Authentifizierung am
VZD-FHIR-Directory
Authentifizierung am...
OAuth / Auth-Service
(/token,
/ti-provider-authenticate)
OAuth / Auth-Service...
I_requestToken
I_requestToken
Org-Admin-Client
Org-Admin-Client
R
R
I_VZD_TIM_Provider_Services
(/tim-provider-services)
I_VZD_TIM_Provider_Services...
R
R
Bereitstellung der Föderationsliste und
Berechtigungsprüfung – Stufe 3
Bereitstellung der Föderationsli...
R
R
R
R
R
R
Internet
Internet
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Fachdienst/System_Overview-Fachdienst.png b/images/diagrams/TI-Messenger-Fachdienst/System_Overview-Fachdienst.png deleted file mode 100644 index cd1f7283..00000000 Binary files a/images/diagrams/TI-Messenger-Fachdienst/System_Overview-Fachdienst.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Fachdienst/System_Overview-Fachdienst.svg b/images/diagrams/TI-Messenger-Fachdienst/System_Overview-Fachdienst.svg deleted file mode 100644 index b5911841..00000000 --- a/images/diagrams/TI-Messenger-Fachdienst/System_Overview-Fachdienst.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
VZD-FHIR-Directory
VZD-FHIR-Directory
TI-Messenger-Fachdienst
TI-Messenger-Fachdienst
Messenger-Service
Messenger-Service
Registrierungs-
Dienst
Registrierungs-...

TI-Messenger- Client
TI-Messenger- Cli...
Messenger-
Proxy
Messenger-...
Push-
Gateway
Push-...
FHIR-Directory
FHIR-Directory
FHIR-Proxy
FHIR-Proxy
IDP-
Dienst
IDP-...
OAuth
OAuth
Matrix-
Homeserver
Matrix-...
Auth-Service
Auth-Service
Messenger-Service
Messenger-Service
Messenger-
Proxy
Messenger-...
Matrix-
Homeserver
Matrix-...
R
R
R
R
R
R
R
R
R
R
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Fachdienst/funktionalitaet_proxy-Proxy.png b/images/diagrams/TI-Messenger-Fachdienst/funktionalitaet_proxy-Proxy.png deleted file mode 100644 index cd31de6d..00000000 Binary files a/images/diagrams/TI-Messenger-Fachdienst/funktionalitaet_proxy-Proxy.png and /dev/null differ diff --git a/images/diagrams/TI-Messenger-Fachdienst/funktionalitaet_proxy-Proxy.svg b/images/diagrams/TI-Messenger-Fachdienst/funktionalitaet_proxy-Proxy.svg deleted file mode 100644 index 1c603348..00000000 --- a/images/diagrams/TI-Messenger-Fachdienst/funktionalitaet_proxy-Proxy.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Client
Client
Server
Server
Forward-
Proxy
Forward-...
Internet
Internet
Reverse-
Proxy
Reverse-...
In das Internet
 ausgehende Kommunikation
In das Internet...
Aus dem Internet
eingehende Kommunikation
Aus dem Internet...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/Other/Test/Anschaltung der Testtreiber Clients.png b/images/generated/Other/Test/Anschaltung der Testtreiber Clients.png new file mode 100644 index 00000000..2a5c7125 Binary files /dev/null and b/images/generated/Other/Test/Anschaltung der Testtreiber Clients.png differ diff --git a/images/generated/Other/Test/Anschaltung der Testtreiber Clients.svg b/images/generated/Other/Test/Anschaltung der Testtreiber Clients.svg new file mode 100644 index 00000000..a2d4897f --- /dev/null +++ b/images/generated/Other/Test/Anschaltung der Testtreiber Clients.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/Test/HerstellerInstanz.png b/images/generated/Other/Test/HerstellerInstanz.png new file mode 100644 index 00000000..10b93efd Binary files /dev/null and b/images/generated/Other/Test/HerstellerInstanz.png differ diff --git a/images/generated/Other/Test/HerstellerInstanz.svg b/images/generated/Other/Test/HerstellerInstanz.svg new file mode 100644 index 00000000..c6beec7a --- /dev/null +++ b/images/generated/Other/Test/HerstellerInstanz.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/Test/IOP Pools.png b/images/generated/Other/Test/IOP Pools.png new file mode 100644 index 00000000..9a7e9751 Binary files /dev/null and b/images/generated/Other/Test/IOP Pools.png differ diff --git a/images/generated/Other/Test/IOP Pools.svg b/images/generated/Other/Test/IOP Pools.svg new file mode 100644 index 00000000..ab356bc9 --- /dev/null +++ b/images/generated/Other/Test/IOP Pools.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/Test/Testumgebung Basis.png b/images/generated/Other/Test/Testumgebung Basis.png new file mode 100644 index 00000000..10e9e229 Binary files /dev/null and b/images/generated/Other/Test/Testumgebung Basis.png differ diff --git a/images/generated/Other/Test/Testumgebung Basis.svg b/images/generated/Other/Test/Testumgebung Basis.svg new file mode 100644 index 00000000..d9510a08 --- /dev/null +++ b/images/generated/Other/Test/Testumgebung Basis.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/Test/Testumgebung ePA.png b/images/generated/Other/Test/Testumgebung ePA.png new file mode 100644 index 00000000..7ae4b25d Binary files /dev/null and b/images/generated/Other/Test/Testumgebung ePA.png differ diff --git a/images/generated/Other/Test/Testumgebung ePA.svg b/images/generated/Other/Test/Testumgebung ePA.svg new file mode 100644 index 00000000..4fbef307 --- /dev/null +++ b/images/generated/Other/Test/Testumgebung ePA.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/Test/Zulassung TIM-Basis.png b/images/generated/Other/Test/Zulassung TIM-Basis.png new file mode 100644 index 00000000..a2926c4a Binary files /dev/null and b/images/generated/Other/Test/Zulassung TIM-Basis.png differ diff --git a/images/generated/Other/Test/Zulassung TIM-Basis.svg b/images/generated/Other/Test/Zulassung TIM-Basis.svg new file mode 100644 index 00000000..a7066303 --- /dev/null +++ b/images/generated/Other/Test/Zulassung TIM-Basis.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/Test/Zulassung TIM-ePA.png b/images/generated/Other/Test/Zulassung TIM-ePA.png new file mode 100644 index 00000000..f8a96abc Binary files /dev/null and b/images/generated/Other/Test/Zulassung TIM-ePA.png differ diff --git a/images/generated/Other/Test/Zulassung TIM-ePA.svg b/images/generated/Other/Test/Zulassung TIM-ePA.svg new file mode 100644 index 00000000..40ed7ae0 --- /dev/null +++ b/images/generated/Other/Test/Zulassung TIM-ePA.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/Test/nach_der_Zulassung.png b/images/generated/Other/Test/nach_der_Zulassung.png new file mode 100644 index 00000000..599d9637 Binary files /dev/null and b/images/generated/Other/Test/nach_der_Zulassung.png differ diff --git a/images/generated/Other/Test/nach_der_Zulassung.svg b/images/generated/Other/Test/nach_der_Zulassung.svg new file mode 100644 index 00000000..75edda79 --- /dev/null +++ b/images/generated/Other/Test/nach_der_Zulassung.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/Test/testtreiber-externes-Modul.png b/images/generated/Other/Test/testtreiber-externes-Modul.png new file mode 100644 index 00000000..efde165e Binary files /dev/null and b/images/generated/Other/Test/testtreiber-externes-Modul.png differ diff --git a/images/generated/Other/Test/testtreiber-externes-Modul.svg b/images/generated/Other/Test/testtreiber-externes-Modul.svg new file mode 100644 index 00000000..438a3e40 --- /dev/null +++ b/images/generated/Other/Test/testtreiber-externes-Modul.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/Test/testtreiber-internes-Modul.png b/images/generated/Other/Test/testtreiber-internes-Modul.png new file mode 100644 index 00000000..4f2aba04 Binary files /dev/null and b/images/generated/Other/Test/testtreiber-internes-Modul.png differ diff --git a/images/generated/Other/Test/testtreiber-internes-Modul.svg b/images/generated/Other/Test/testtreiber-internes-Modul.svg new file mode 100644 index 00000000..f6d28656 --- /dev/null +++ b/images/generated/Other/Test/testtreiber-internes-Modul.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/Test/testumgebung-Gematik.png b/images/generated/Other/Test/testumgebung-Gematik.png new file mode 100644 index 00000000..6e4e525f Binary files /dev/null and b/images/generated/Other/Test/testumgebung-Gematik.png differ diff --git a/images/generated/Other/Test/testumgebung-Gematik.svg b/images/generated/Other/Test/testumgebung-Gematik.svg new file mode 100644 index 00000000..439a7f20 --- /dev/null +++ b/images/generated/Other/Test/testumgebung-Gematik.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/Test/testumgebung-Hersteller.png b/images/generated/Other/Test/testumgebung-Hersteller.png new file mode 100644 index 00000000..01725dff Binary files /dev/null and b/images/generated/Other/Test/testumgebung-Hersteller.png differ diff --git a/images/generated/Other/Test/testumgebung-Hersteller.svg b/images/generated/Other/Test/testumgebung-Hersteller.svg new file mode 100644 index 00000000..0be69f60 --- /dev/null +++ b/images/generated/Other/Test/testumgebung-Hersteller.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/images/generated/Other/UC_Directory_search_Seq.png b/images/generated/Other/UC_Directory_search_Seq.png new file mode 100644 index 00000000..ce6a85e7 Binary files /dev/null and b/images/generated/Other/UC_Directory_search_Seq.png differ diff --git a/images/generated/Other/UC_Directory_search_Seq.svg b/images/generated/Other/UC_Directory_search_Seq.svg new file mode 100644 index 00000000..483e6fb8 --- /dev/null +++ b/images/generated/Other/UC_Directory_search_Seq.svg @@ -0,0 +1 @@ +VZD-FHIR-Directory Akteur in der RolleUserAkteur in der RolleUserTI-Messenger-ClientTI-Messenger-ClientMessenger ProxyMessenger ProxyMatrix-HomeserverMatrix-HomeserverFHIR-ProxyFHIR-ProxyAuth-ServiceAuth-ServiceFHIR-DirectoryFHIR-Directory Der Akteur ist erfolgreich beim Messenger-Service angemeldet 1Suchparameter fürFHIR-Ressourceneingeben2prüfe ob noch gültigessearch-accesstokenvorliegtalt[kein gültiges search-accesstoken vorhanden]3GET /_matrix/client/user/{userId}/openid/request_token4HTTP Forward5Matrix-OpenID-Token6HTTP(S) Forward7GET /tim-authenticate?mxId=... (Auth Header mit Matrix-OpenID-Token)8Prüfe obMatrix Server Name inder Föderation enthalten istbreak[Matrix Server Name nicht in der Föderation enthalten]9Fehlermeldung10GET /openid/userinfo?access_token=Matrix-OpenID-Token11HTTP(S) Forward12prüfe Matrix-OpenID-Token13MXID des Nutzers14HTTP(S) Forward15erzeugesearch-accesstoken16search-accesstoken17POST /search?... (Auth Header mit search-accesstoken)18prüfe search-accesstokenbreak[kein gültiges search-accesstoken]19HTTP 401 Fehlermeldungalt[HealthcareService-Einträge werden gesucht]20POST /search/HealthcareService/?Finde Datensatz für TelematikID21Suchergebnis (FHIR Bundle)alt[PractitionerRole-Einträge werden gesucht]22POST /search/PractitionerRole/?Finde Datensatz für MXID23Suchergebnis (FHIR Bundle)24Suchergebnis (FHIR Bundle)25Suchergebnis (FHIR Bundle) \ No newline at end of file diff --git a/images/generated/Other/chatbot.png b/images/generated/Other/chatbot.png new file mode 100644 index 00000000..df4692da Binary files /dev/null and b/images/generated/Other/chatbot.png differ diff --git a/images/generated/Other/chatbot.svg b/images/generated/Other/chatbot.svg new file mode 100644 index 00000000..f7f76e51 --- /dev/null +++ b/images/generated/Other/chatbot.svg @@ -0,0 +1,3 @@ + + +
2
2
3
3
4
4
6
6
5
5
180 zu 140…
wie kann ich den Blutdruck meines Patienten am besten therapieren?
180 zu 140…...
1
1
Invite Kardiologie Klinikum X
Invite Kardiologie Klinikum X
Hallo, wie kann ich Ihnen helfen?
Hallo, wie kann ich Ihnen helfen?
Kann ich den diensthabenden Arzt sprechen?
Kann ich den diensthabenden Arzt sprechen?
Invite Dr. Mueller
Invite Dr. Mueller
Hallo Dr. Meier, wie kann ich Ihnen helfen?
Hallo Dr. Meier, wie kann ich Ihnen helfen?
Dr. Meier
(Orthopäde Klinikum X)
Dr. Meier...
Pfleger Martin
Pfleger Ma...
Dr. Mueller
(Kardiologe Klinikum X)
Dr. Muelle...
Dr. Mueller
(Kardiologe Klinikum X)
Dr. Muelle...
ChatBot (Kardiologie)
ChatBot (...
Kardiologie Klinikum X
Kardiolo...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/Other/funktionalitaet_proxy.png b/images/generated/Other/funktionalitaet_proxy.png new file mode 100644 index 00000000..06e8bc13 Binary files /dev/null and b/images/generated/Other/funktionalitaet_proxy.png differ diff --git a/images/generated/Other/funktionalitaet_proxy.svg b/images/generated/Other/funktionalitaet_proxy.svg new file mode 100644 index 00000000..541a5cd6 --- /dev/null +++ b/images/generated/Other/funktionalitaet_proxy.svg @@ -0,0 +1,3 @@ + + +
Client
Client
Server
Server
Forward-
Proxy
Forward-...
Internet
Internet
Reverse-
Proxy
Reverse-...
In das Internet
 ausgehende Kommunikation
In das Internet...
Aus dem Internet
eingehende Kommunikation
Aus dem Internet...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/idp.png b/images/generated/Other/idp.png similarity index 99% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/idp.png rename to images/generated/Other/idp.png index cc218c1b..6f763b0c 100644 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/idp.png and b/images/generated/Other/idp.png differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/idp.svg b/images/generated/Other/idp.svg similarity index 96% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/idp.svg rename to images/generated/Other/idp.svg index 01b15f6d..23f6a8c1 100644 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/idp.svg +++ b/images/generated/Other/idp.svg @@ -1 +1 @@ -Endgerät Akteur in der RolleOrg-AdminAkteur in der RolleOrg-AdminFrontend desRegistrierungs-DienstesFrontend desRegistrierungs-Dienstesgematik Authenticatorgematik AuthenticatorKonnektorKonnektorRegistrierungs-Dienst(Relying Party)Registrierungs-Dienst(Relying Party)zentralerIDP-DienstzentralerIDP-Dienst1Organisation authentisieren2POST I_Registrationopt[Download des IDP Discovery Dokumentes]3GET {HOSTNAME}/.well-known/openid-configuration4signierte Base64-kodierte openid-configuration5Prüfung der Signatur der openid-configuration6Download der öffentlichen Schlüssel undextrahieren des{authorization_endpoint}7Erzeugung eines Zufallswertes (CODE_VERIFIER)und Bildung darüber den Hashcode_challenge mit Hash-Algorithmus S2568Erstellung der Authentication Request URLmit den Request ParameternAuthentication Request URL={authorization_endpoint}&{client_id}&{response_type}&{redirect_uri}&{state}&{code_challenge}&{code_challenge_method}&{scope}&{nonce}9Redirect zur{Authentication Request URL}10Erstellung deschallenge_path authenticator://?challenge_path={Authentication Request URL}&cardType=SMC-B&callback=DIRECT11Aufruf des Authenticators mit Deeplinkopt[Download des IDP Discovery Dokumentes]12GET {HOSTNAME}/.well-known/openid-configuration13signierte base64 kodierte openid-configuration14Prüfung der Signatur der openid-configuration15Download der öffentlichen Schlüssel undextrahieren des{authorization_endpoint}16GET {Authentication Request URL}AUTHORIZATION_ENDPUNKT17Prüfung obclient_idundscope bekannt und in dieser Kombinationzulässig sind18Prüfung der claimredirect_uri gegen die beim IDP-Dienstregistriertenredirect_uris19Überführung derscopeInhalte inUSER_CONSENT20Erstellung der Authentication challenge(CHALLENGE_TOKEN)21Signieren desCHALLENGE_TOKENmitPrk_IDP_SIG22CHALLENGE_TOKEN&USER_CONSENT23Prüfen der Signatur desCHALLENGE_TOKENmit dem SchlüsselPuK_IDP_SIGSignieren der Challenge mit Konnektor-Operationen24getCards(Aufrufkontext)25Status, Liste der verfügbaren Smartkarten26Auswahl der gesteckten SMC-B --> CardHandle27GetPinStatus (Aufrufkontext, CardHandle,PinType (PIN.SMC))28Status, PinStatusopt[Karte nicht freigeschaltet]29Zustimmung zumUSER_CONSENT30Zustimmung zur Verwendung der angefragten Daten31VerifyPin (Aufrufkontext, CardHandle,PinType (PIN.SMC))32Aufforderung der PIN-Eingabe33PIN-Eingabe34Status35ExternalAuthenticate(Aufrufkontext, CardHandle,C.HCI.AUT, CHALLENGE_TOKEN)36SignierteCHALLENGE_TOKEN"37Verschlüsselung des signiertenCHALLENGE_TOKENmit dem öffentlichen SchlüsselPuK_IDP_ENCvom IDP-Dienst38POST {authorization_endpoint}(signiertes und verschlüsseltesCHALLENGE_TOKEN,C.HCI.AUTder SMC-B)AUTHORIZATION_ENDPUNKT39Entschlüsselung desCHALLENGE_TOKENmitPrK_IDP_ENCdes IDP-Dienstes40Signaturprüfung desCHALLENGE_TOKENmit dem imx5c-Header mitgeliefertenC.HCI.AUTZertifikat41Prüfung der Gültigkeit der Attributeaus demCHALLENGE_TOKEN42Erstellung desAUTHORIZATION_CODE43Signieren desAUTHORIZATION_CODEmit dem SchlüsselPrk_IDP_SIG44Veschlüsselung desAUTHORIZATION_CODEmit eigens erzeugten Schlüsselmaterial(AUTH_CODE_ENC)45Redirect zurredirect_urides Registrierungs-DienstesmitAUTHORIZATION_CODE46GET /redirect_uri?code={AUTHORIZATION_CODE}47HTTP 20048Erzeugung einesAES256-Token-Key49AES256-Token-Keyund denunter 7) erzeugtenCODE_VERIFIERin einKEY_VERIFIERObjekt einbetten50KEY_VERIFIERmitPUK_IDP_ENCverschlüsseln51POST {token_endpoint}(AUTHORIZATION_CODE, KEY_VERIFIER)TOKEN_ENDPUNKT52AUTHORIZATION_CODEmitAUTH_CODE_ENCentschlüsseln53Signaturprüfung desAUTHORIZATION_CODEmittelsPUK_IDP_SIG54Entschlüsselung desKEY_VERIFIERmitPrk_IDP_ENC55Extrahieren desCODE_VERIFIERaus demKEY_VERIFIER56Extrahieren derCODE_CHALLENGEaus demAUTHORIZATION_CODE57Hash(S256) desCODE_VERIFIERmit derCODE_CHALLENGEabgleichen58Erzeugung desID_TOKENundSignieren mittelsPrK_IDP_SIGsowie Verschlüsselung mittels Token-Key59ID_TOKEN60Entschlüsselung des TokenmitAES256-Token-Keyund ValidierungmitPuK_IDP_SIG61Prüfung der im TokenenthaltenenProfessionOID"62Abfrage des Status(Polling)63Status der Authentisierung64Organisation erfolgreich Authentifiziert \ No newline at end of file +Endgerät Akteur in der RolleOrg-AdminAkteur in der RolleOrg-AdminFrontend desRegistrierungs-DienstesFrontend desRegistrierungs-Dienstesgematik Authenticatorgematik AuthenticatorKonnektorKonnektorRegistrierungs-Dienst(Relying Party)Registrierungs-Dienst(Relying Party)zentralerIDP-DienstzentralerIDP-Dienst1Organisation authentisieren2POST I_Registrationopt[Download des IDP Discovery Dokumentes]3GET {HOSTNAME}/.well-known/openid-configuration4signierte Base64-kodierte openid-configuration5Prüfung der Signatur der openid-configuration6Download der öffentlichen Schlüssel undextrahieren des{authorization_endpoint}7Erzeugung eines Zufallswertes (CODE_VERIFIER)und Bildung darüber den Hashcode_challenge mit Hash-Algorithmus S2568Erstellung der Authentication Request URLmit den Request ParameternAuthentication Request URL={authorization_endpoint}&{client_id}&{response_type}&{redirect_uri}&{state}&{code_challenge}&{code_challenge_method}&{scope}&{nonce}9Redirect zur{Authentication Request URL}10Erstellung deschallenge_path authenticator://?challenge_path={Authentication Request URL}&cardType=SMC-B&callback=DIRECT11Aufruf des Authenticators mit Deeplinkopt[Download des IDP Discovery Dokumentes]12GET {HOSTNAME}/.well-known/openid-configuration13signierte base64 kodierte openid-configuration14Prüfung der Signatur der openid-configuration15Download der öffentlichen Schlüssel undextrahieren des{authorization_endpoint}16GET {Authentication Request URL}AUTHORIZATION_ENDPUNKT17Prüfung obclient_idundscope bekannt und in dieser Kombinationzulässig sind18Prüfung der claimredirect_uri gegen die beim IDP-Dienstregistriertenredirect_uris19Überführung derscopeInhalte inUSER_CONSENT20Erstellung der Authentication challenge(CHALLENGE_TOKEN)21Signieren desCHALLENGE_TOKENmitPrk_IDP_SIG22CHALLENGE_TOKEN&USER_CONSENT23Prüfen der Signatur desCHALLENGE_TOKENmit dem SchlüsselPuK_IDP_SIGSignieren der Challenge mit Konnektor-Operationen24getCards(Aufrufkontext)25Status, Liste der verfügbaren Smartkarten26Auswahl der gesteckten SMC-B --> CardHandle27GetPinStatus (Aufrufkontext, CardHandle,PinType (PIN.SMC))28Status, PinStatusopt[Karte nicht freigeschaltet]29Zustimmung zumUSER_CONSENT30Zustimmung zur Verwendung der angefragten Daten31VerifyPin (Aufrufkontext, CardHandle,PinType (PIN.SMC))32Aufforderung der PIN-Eingabe33PIN-Eingabe34Status35ExternalAuthenticate(Aufrufkontext, CardHandle,C.HCI.AUT, CHALLENGE_TOKEN)36SignierteCHALLENGE_TOKEN"37Verschlüsselung des signiertenCHALLENGE_TOKENmit dem öffentlichen SchlüsselPuK_IDP_ENCvom IDP-Dienst38POST {authorization_endpoint}(signiertes und verschlüsseltesCHALLENGE_TOKEN,C.HCI.AUTder SMC-B)AUTHORIZATION_ENDPUNKT39Entschlüsselung desCHALLENGE_TOKENmitPrK_IDP_ENCdes IDP-Dienstes40Signaturprüfung desCHALLENGE_TOKENmit dem imx5c-Header mitgeliefertenC.HCI.AUTZertifikat41Prüfung der Gültigkeit der Attributeaus demCHALLENGE_TOKEN42Erstellung desAUTHORIZATION_CODE43Signieren desAUTHORIZATION_CODEmit dem SchlüsselPrk_IDP_SIG44Veschlüsselung desAUTHORIZATION_CODEmit eigens erzeugten Schlüsselmaterial(AUTH_CODE_ENC)45Redirect zurredirect_urides Registrierungs-DienstesmitAUTHORIZATION_CODE46GET /redirect_uri?code={AUTHORIZATION_CODE}47HTTP 20048Erzeugung einesAES256-Token-Key49AES256-Token-Keyund denunter 7) erzeugtenCODE_VERIFIERin einKEY_VERIFIERObjekt einbetten50KEY_VERIFIERmitPUK_IDP_ENCverschlüsseln51POST {token_endpoint}(AUTHORIZATION_CODE, KEY_VERIFIER)TOKEN_ENDPUNKT52AUTHORIZATION_CODEmitAUTH_CODE_ENCentschlüsseln53Signaturprüfung desAUTHORIZATION_CODEmittelsPUK_IDP_SIG54Entschlüsselung desKEY_VERIFIERmitPrk_IDP_ENC55Extrahieren desCODE_VERIFIERaus demKEY_VERIFIER56Extrahieren derCODE_CHALLENGEaus demAUTHORIZATION_CODE57Hash(S256) desCODE_VERIFIERmit derCODE_CHALLENGEabgleichen58Erzeugung desID_TOKENundSignieren mittelsPrK_IDP_SIGsowie Verschlüsselung mittels Token-Key59ID_TOKEN60Entschlüsselung des TokenmitAES256-Token-Keyund ValidierungmitPuK_IDP_SIG61Prüfung der im TokenenthaltenenProfessionOID"62Abfrage des Status(Polling)63Status der Authentisierung64Organisation erfolgreich Authentifiziert \ No newline at end of file diff --git a/images/generated/TI-M_Basis/API-Messenger-Service.png b/images/generated/TI-M_Basis/API-Messenger-Service.png new file mode 100644 index 00000000..378a03e6 Binary files /dev/null and b/images/generated/TI-M_Basis/API-Messenger-Service.png differ diff --git a/images/generated/TI-M_Basis/API-Messenger-Service.svg b/images/generated/TI-M_Basis/API-Messenger-Service.svg new file mode 100644 index 00000000..3b90a47e --- /dev/null +++ b/images/generated/TI-M_Basis/API-Messenger-Service.svg @@ -0,0 +1,3 @@ + + +

extern

extern

extern

extern

intern

intern
Messenger-Service
Messenger-Service
Matrix- Homeserver
Matrix- Homese...
Messenger-
Proxy
Messenger-...

Matrix - Server

Server API

Matrix - Serve...
R
R
R
R

Matrix - Server

Server API

Matrix - Serve...
R
R
R
R

Matrix - Server

Server API

Matrix - Serve...

Matrix - Client

Server API

Matrix - Clien...
R
R

Matrix - Client

Server API

Matrix - Clien...
R
R

Authentifizierungsverfahren

Authentifizierungsverfahren
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_Basis/Berechtigung_UI.png b/images/generated/TI-M_Basis/Berechtigung_UI.png new file mode 100644 index 00000000..a739554b Binary files /dev/null and b/images/generated/TI-M_Basis/Berechtigung_UI.png differ diff --git a/images/generated/TI-M_Basis/Berechtigung_UI.svg b/images/generated/TI-M_Basis/Berechtigung_UI.svg new file mode 100644 index 00000000..0ed57322 --- /dev/null +++ b/images/generated/TI-M_Basis/Berechtigung_UI.svg @@ -0,0 +1,3 @@ + + +

TI-Messenger

TI-Messenger

Wer darf mich kontaktieren?

Wer darf mich kontaktieren?

Jeder

Jeder

Niemand

Niemand

Ausnahmen

Ausnahmen
Server: gematik.de
Server: gematik.de
Weitere Kategorie hinzufügen
Weitere Kategorie hinzufügen
MXID:@DrMeier:mypraxis.de
MXID:@DrMeier:mypraxis.de
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_Basis/Berechtigungen_setzen.png b/images/generated/TI-M_Basis/Berechtigungen_setzen.png new file mode 100644 index 00000000..37c7211f Binary files /dev/null and b/images/generated/TI-M_Basis/Berechtigungen_setzen.png differ diff --git a/images/generated/TI-M_Basis/Berechtigungen_setzen.svg b/images/generated/TI-M_Basis/Berechtigungen_setzen.svg new file mode 100644 index 00000000..175f54f8 --- /dev/null +++ b/images/generated/TI-M_Basis/Berechtigungen_setzen.svg @@ -0,0 +1 @@ +Setzen von Berechtigungen im ClientClient startenBerechtigungen einrichten"Allow all" or "Block all"Allow allBlock allBlockedUser-Liste bearbeitenHinzufügenEntfernenUser/Server hinzufügenUser/Server entfernenJaBeschränkungen einrichtenNeinAllowedUser-Liste bearbeitenHinzufügenEntfernenUser/Server hinzufügenUser/Server entfernenJaErlaubnisse einrichtenNeinKonfiguration auf dem Server sichern \ No newline at end of file diff --git a/images/generated/TI-M_Basis/Pruefungen_Messenger_Proxy.png b/images/generated/TI-M_Basis/Pruefungen_Messenger_Proxy.png new file mode 100644 index 00000000..bf335544 Binary files /dev/null and b/images/generated/TI-M_Basis/Pruefungen_Messenger_Proxy.png differ diff --git a/images/generated/TI-M_Basis/Pruefungen_Messenger_Proxy.svg b/images/generated/TI-M_Basis/Pruefungen_Messenger_Proxy.svg new file mode 100644 index 00000000..c0f1db51 --- /dev/null +++ b/images/generated/TI-M_Basis/Pruefungen_Messenger_Proxy.svg @@ -0,0 +1,3 @@ + + +
Matrix-Client-
Server-API
Matrix-Cli...

TI-Messenger-
Client
TI-Messenger-...


Messenger-Proxy
Messenger-Proxy...

TI-Messenger-
Client
TI-Messenger-...


Messenger-Proxy
Messenger-Proxy...

TI-Messenger-
Client
TI-Messenger-...

  • Client-Server
  • Prüfungen

Client-ServerPrüfungen...
Client-Server Proxy
Client-Server Proxy
Server-Server Proxy
Server-Server Proxy
Client-Server Proxy
Client-Server Proxy
Server-Server Proxy
Server-Server Proxy

TI-Messenger-
Client
TI-Messenger-...
Matrix-Server-
Server-API
Matrix-Serv...
R
R
R
R
R
R
Matrix-Client-
Server-API
Matrix-Cli...
R
R
R
R
Server-Server
Prüfungen
Server-Server...

  • Client-Server
  • Prüfungen

Client-ServerPrüfungen...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_Basis/Schnittstellen_am_Registrierungs-Dienst.png b/images/generated/TI-M_Basis/Schnittstellen_am_Registrierungs-Dienst.png new file mode 100644 index 00000000..63eb1905 Binary files /dev/null and b/images/generated/TI-M_Basis/Schnittstellen_am_Registrierungs-Dienst.png differ diff --git a/images/generated/TI-M_Basis/Schnittstellen_am_Registrierungs-Dienst.svg b/images/generated/TI-M_Basis/Schnittstellen_am_Registrierungs-Dienst.svg new file mode 100644 index 00000000..73bc5262 --- /dev/null +++ b/images/generated/TI-M_Basis/Schnittstellen_am_Registrierungs-Dienst.svg @@ -0,0 +1,3 @@ + + +
Org-Admin Services
Org-Admin Services
Registrierungs-
Dienst
Registrierungs-...
Administration
Administration
Messenger-Service in die TI-Föderation aufnehmen
Messenger-Service in die...
I_Registration
I_Registratio...
I_internVerification
I_internVerificat...
VZD-FHIR-Directory
VZD-FHIR-Directory
Messenger-Proxy
Messenger-Proxy
Frontend des
Registrierungs-Dienstes
Frontend des...
Authentifizierung am
VZD-FHIR-Directory
Authentifizierung am...
OAuth / Auth-Service
(/token,
/ti-provider-authenticate)
OAuth / Auth-Service...
I_Admin
I_Admin
Org-Admin-Client
Org-Admin-Client
R
R
I_VZD_TIM_Provider_Services
(/tim-provider-services)
I_VZD_TIM_Provider_Services...
R
R
Bereitstellung der Föderationsliste
Bereitstellung der Föderationsli...
R
R
R
R
R
R
Internet
Internet
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_Basis/System_Overview.png b/images/generated/TI-M_Basis/System_Overview.png new file mode 100644 index 00000000..995a99ad Binary files /dev/null and b/images/generated/TI-M_Basis/System_Overview.png differ diff --git a/images/generated/TI-M_Basis/System_Overview.svg b/images/generated/TI-M_Basis/System_Overview.svg new file mode 100644 index 00000000..5c6cd8c5 --- /dev/null +++ b/images/generated/TI-M_Basis/System_Overview.svg @@ -0,0 +1,3 @@ + + +

Organisation

Organisation

Push-Anbieter

Push-Anbieter

VZD-Anbieter

VZD-Anbieter

TI-Messenger-Anbieter (B)

TI-Messenger-Anbieter (B)

TI-Messenger-Anbieter (A)

TI-Messenger-Anbieter (A)
VZD-FHIR-Directory
VZD-FHIR-Directory
TI-Messenger-Fachdienst
TI-Messenger-Fachdienst



Messenger-Service

Messenger-Service
Registrierungs-
Dienst
Registrierungs-...
TI-Messenger- Client
TI-Messenger- Clie...
TI-Messenger-
Fachdienst
TI-Messenger-...

Push-
Gateway

Push-...
FHIR-Directory
FHIR-Directory

Messenger-Service

Messenger-Service

Messenger-
Proxy

Messenger-...
TI-Messenger- Client
TI-Messenger- Cli...
Authentifizierungs-
Dienst
Authentifizierungs-...
Org-
Admin-Client
Org-...
Org-Admin
Org-Admin
User
User
externer Push-Dienst
externer Push-Dienst
IDP-Dienst
IDP-Dienst
Matrix-
Homeserver
Matrix-...
Matrix-
Homeserver
Matrix-...

FHIR-Proxy

 Suche

 Verwaltung


Provider-

Services

FHIR-Proxy...

VZD-LDAP-Directory

VZD-LDAP-Directory

Auth-Service


/tim-authenticate

/owner-authenticate


/owner-authenticate-decoupled

/signin-gematik-idp-dienst

/ti-provider-authenticate

Auth-Service...
OAuth
/token
OAuth...

Messenger-
Proxy

Messenger-...
LDAP-
Directory
LDAP-...
VZD-Service
VZD-Service
Notification
Notificatio...

Matrix-APIs

Matrix-APIs
Push-Gateway-API
Push-Gatewa...
Sync
Sync

Matrix-APIs

Matrix-APIs

Matrix-Server-

Server-API

Matrix-Server...
User
User

Registrierung via KIM 

Registrierung...
H
B
A
H...
SM(C)
-B
SM(C)...
Frontend des Registrierungs-Dienst
Frontend des Regi...
KIM-Client
(Optional)
KIM-Client...
KIM-Fachdienst
(Optional)
KIM-Fachdienst...
SM(C)
-B
SM(C)...

Matrix-Client-Server-API

Matrix-Client-S...

Matrix-Client-Server-API

Matrix-Client-S...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_Basis/System_Overview_Client.png b/images/generated/TI-M_Basis/System_Overview_Client.png new file mode 100644 index 00000000..4f5c91e2 Binary files /dev/null and b/images/generated/TI-M_Basis/System_Overview_Client.png differ diff --git a/images/generated/TI-M_Basis/System_Overview_Client.svg b/images/generated/TI-M_Basis/System_Overview_Client.svg new file mode 100644 index 00000000..9f2a2c14 --- /dev/null +++ b/images/generated/TI-M_Basis/System_Overview_Client.svg @@ -0,0 +1,3 @@ + + +
VZD-FHIR-Directory
VZD-FHIR-Directory
TI-M-Fachdienst
TI-M-Fachdienst
Registrierungs-
Dienst
Registrierungs-...
TI-M-
Client
TI-M-...
Push-
Gateway
Push-...
FHIR-Directory
FHIR-Directory
FHIR-Proxy
FHIR-Proxy
Auth-Dienst
Auth-Dienst
OAuth
OAuth
Auth-Service
Auth-Service
Messenger-Service
Messenger-Service
Messenger-
Proxy
Messenger-...
Matrix-
Homeserver
Matrix-...
R
R
R
R
R
R
R
R
R
R
R
R
Push-Provider
Push-Provider
R
R
R
R
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_Basis/System_Overview_Fachdienst.png b/images/generated/TI-M_Basis/System_Overview_Fachdienst.png new file mode 100644 index 00000000..302e475f Binary files /dev/null and b/images/generated/TI-M_Basis/System_Overview_Fachdienst.png differ diff --git a/images/generated/TI-M_Basis/System_Overview_Fachdienst.svg b/images/generated/TI-M_Basis/System_Overview_Fachdienst.svg new file mode 100644 index 00000000..6068face --- /dev/null +++ b/images/generated/TI-M_Basis/System_Overview_Fachdienst.svg @@ -0,0 +1,3 @@ + + +
VZD-FHIR-Directory
VZD-FHIR-Directory
TI-M FD
TI-M FD
Registrierungs-
Dienst
Registrierungs-...
TI-M Client
TI-M Client
Push-
Gateway
Push-...
FHIR-Directory
FHIR-Directory
FHIR-Proxy
FHIR-Proxy
IDP-Dienst
IDP-Dienst
OAuth
OAuth
Auth-Service
Auth-Service
Messenger-Service
Messenger-Service
Messenger-
Proxy
Messenger-...
Matrix-
Homeserver
Matrix-...
R
R
R
R
R
R
R
R
R
R
Komponenten-PKI
Komponenten-PKI
R
R
R
R
Push-Provider
Push-Provider
R
R
R
R
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_Basis/UC_10057_Seq.png b/images/generated/TI-M_Basis/UC_10057_Seq.png new file mode 100644 index 00000000..edacfcd2 Binary files /dev/null and b/images/generated/TI-M_Basis/UC_10057_Seq.png differ diff --git a/images/generated/TI-M_Basis/UC_10057_Seq.svg b/images/generated/TI-M_Basis/UC_10057_Seq.svg new file mode 100644 index 00000000..01e6c3a5 --- /dev/null +++ b/images/generated/TI-M_Basis/UC_10057_Seq.svg @@ -0,0 +1 @@ +Messenger-Service Akteur in derRolle UserAkteur in derRolle UserTI-Messenger-ClientTI-Messenger-ClientMessenger ProxyMessenger ProxyMatrix-HomeserverMatrix-Homeserver1Eingabe Messenger-Service2GET /_matrix/client/login3HTTP(S) ForwardDie Authentifizierungsverfahren werden für jedenMessenger-Service durch die Organisation festgelegt4unterstützteAuthentifizierungs-verfahren5HTTP(S) Forward6ZeigeAuthentifizierungsmaske7Starte Authentifizierung8Anmeldung9POST /_matrix/client/login10HTTP(S) Forward11prüfeClient-Credentialsopt[Abbruch]12FehlerhafteAnmeldedaten13HTTP(S) Forward14Anmeldedatensind nicht korrektDie Überprüfung ist abhängig vomgewählten Authentifizierungsverfahren15erstelleMatrix-ACCESS_TOKEN,Matrix-REFRESH_TOKEN16:Matrix-ACCESS_TOKEN,:Matrix-REFRESH_TOKEN17HTTP(S) Forward18SpeichereMatrix-ACCESS_TOKEN,Matrix-REFRESH_TOKEN19Anmeldungerfolgreich \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10060_Seq.png b/images/generated/TI-M_Basis/UC_10060_Seq.png similarity index 99% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10060_Seq.png rename to images/generated/TI-M_Basis/UC_10060_Seq.png index a7346647..4df296cb 100644 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10060_Seq.png and b/images/generated/TI-M_Basis/UC_10060_Seq.png differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10060_Seq.svg b/images/generated/TI-M_Basis/UC_10060_Seq.svg similarity index 95% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10060_Seq.svg rename to images/generated/TI-M_Basis/UC_10060_Seq.svg index 612b78a7..d9132551 100644 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10060_Seq.svg +++ b/images/generated/TI-M_Basis/UC_10060_Seq.svg @@ -1 +1 @@ -Endgerät VZD-FHIR-Directory Akteur in der RolleOrg-AdminAkteur in der RolleOrg-AdminFrontend desRegistrierungs-DienstesFrontend desRegistrierungs-DienstesRegistrierungs-DienstRegistrierungs-DienstOAuth-ServiceOAuth-ServiceAuth-ServiceAuth-ServiceFHIR-ProxyFHIR-ProxyFHIR-DirectoryFHIR-DirectoryMessenger-ServicerefAF: 10103- Authentisieren einer Organisation am TI-Messenger-Dienst loop[1..n]1Mit einem Admin-Accountam Registrierungs-Dienstanmelden2POST /login (Client-Credential)Schnittstelle wird nichtdurch die gematik spezifiziert3prüfeClient-Credential4status5Erfolgreich angemeldet6Messenger Service erstellen7POST /create (Matrix-Domain)Messaging-Service erstellen8Prüfung auf zulässigen Domainnamen9Starte neuen Messenger-Servicefür die Organisation mit Matrix-Domain10Messenger-Service erstellenMessenger-Service11initialeinrichten12statusMessenger-Service in die Föderation aufnehmen13POST /auth/realms/TI-Provider/protocol/openid-connect/token(client_id, client_secret)14prüfe client_id undclient_secret15ti-provider-accesstoken16GET /ti-provider-authenticate(ti-provider-accesstoken)17prüfe ti-provider-accesstoken18provider-accesstoken19POST /tim-provider-services/federation(provider-accesstoken, Matrix-Domain, TelematikID, isEnsurance)20prüfeprovider-accesstoken21HTTPS Forward22Föderationslisteaktualisieren23status24HTTPS Forward25status26Messenger Serviceerfolgreich erstellt \ No newline at end of file +Endgerät VZD-FHIR-Directory Akteur in der RolleOrg-AdminAkteur in der RolleOrg-AdminFrontend desRegistrierungs-DienstesFrontend desRegistrierungs-DienstesRegistrierungs-DienstRegistrierungs-DienstOAuth-ServiceOAuth-ServiceAuth-ServiceAuth-ServiceFHIR-ProxyFHIR-ProxyFHIR-DirectoryFHIR-DirectoryMessenger-ServicerefAF: 10103- Authentisieren einer Organisation am TI-Messenger-Dienst loop[1..n]1Mit einem Admin-Accountam Registrierungs-Dienstanmelden2POST /login (Client-Credential)Schnittstelle wird nichtdurch die gematik spezifiziert3prüfeClient-Credential4status5Erfolgreich angemeldet6Messenger Service erstellen7POST /create (Matrix-Domain)Messaging-Service erstellen8Prüfung auf zulässigen Domainnamen9Starte neuen Messenger-Servicefür die Organisation mit Matrix-Domain10Messenger-Service erstellenMessenger-Service11initialeinrichten12statusMessenger-Service in die Föderation aufnehmen13POST /auth/realms/TI-Provider/protocol/openid-connect/token(client_id, client_secret)14prüfe client_id undclient_secret15ti-provider-accesstoken16GET /ti-provider-authenticate(ti-provider-accesstoken)17prüfe ti-provider-accesstoken18provider-accesstoken19POST /tim-provider-services/federation(provider-accesstoken, Matrix-Domain, TelematikID, isEnsurance)20prüfeprovider-accesstoken21HTTPS Forward22Föderationslisteaktualisieren23status24HTTPS Forward25status26Messenger Serviceerfolgreich erstellt \ No newline at end of file diff --git a/images/generated/TI-M_Basis/UC_10061_Seq.png b/images/generated/TI-M_Basis/UC_10061_Seq.png new file mode 100644 index 00000000..0599d6f8 Binary files /dev/null and b/images/generated/TI-M_Basis/UC_10061_Seq.png differ diff --git a/images/generated/TI-M_Basis/UC_10061_Seq.svg b/images/generated/TI-M_Basis/UC_10061_Seq.svg new file mode 100644 index 00000000..991cfda2 --- /dev/null +++ b/images/generated/TI-M_Basis/UC_10061_Seq.svg @@ -0,0 +1 @@ +Messenger-Service A Messenger-Service B  Akteur A inder Rolle User Akteur A inder Rolle UserTI-Messenger-ClientTI-Messenger-ClientMessenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-HomeserverMessenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-HomeserverPush-GatewayPush-GatewayTI-Messenger-ClientTI-Messenger-Client Akteur B inder Rolle User Akteur B inder Rolle User Der Akteur A ist erfolgreich beim Messenger Service A angemeldet  Der Akteur B ist erfolgreich beim Messenger Service B angemeldet opt[Suche über VZD-FHIR-Directory]refEinträge im VZD-FHIR-Directory suchen  Ein Chatraum wurde bereits durch den Akteur A eingerichtet. 1POST /_matrix/client/v3/rooms/{roomId}/inviterefBerechtigungsprüfung break[Abbruch]2HTTP 403 Forbidden3Einladung nichterfolgreich4HTTP(S) Forward5Invite verarbeiten6POST /_matrix/federation/v1/invite/{roomId}/{eventId}refBerechtigungsprüfung 7HTTP(S) ForwardrefBerechtigungsprüfung break[Abbruch]8HTTP 403 Forbidden9HTTP(S) forward10Einladung nichterfolgreich11HTTP(S) Forward12Invite verarbeitenopt[Pushbenachrichtigung]13POST /_matrix/push/notify14Notification15Status16Status17HTTP(S) Forward18HTTP(S) Forward19Status20Nutzer in denRaum eingeladen21GET /_matrix/client/v3/sync22HTTP(S) Forward23Status24HTTP(S) Forward25Einladung anzeigen26Einladung bestätigen27POST /_matrix/client/v3/join/{roomId}28HTTP(S) Forward29Invite auslösen30Status31Status32Nutzer ist demRaum beigetreten \ No newline at end of file diff --git a/images/generated/TI-M_Basis/UC_10062_Seq.png b/images/generated/TI-M_Basis/UC_10062_Seq.png new file mode 100644 index 00000000..04a849d6 Binary files /dev/null and b/images/generated/TI-M_Basis/UC_10062_Seq.png differ diff --git a/images/generated/TI-M_Basis/UC_10062_Seq.svg b/images/generated/TI-M_Basis/UC_10062_Seq.svg new file mode 100644 index 00000000..ca0789b3 --- /dev/null +++ b/images/generated/TI-M_Basis/UC_10062_Seq.svg @@ -0,0 +1 @@ +Messenger-Service A Messenger-Service B  Akteur A inder Rolle User Akteur A inder Rolle UserTI-Messenger-ClientTI-Messenger-ClientMessenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-HomeserverMessenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-HomeserverPush-GatewayPush-GatewayTI-Messenger-ClientTI-Messenger-Client Akteur B inder Rolle User Akteur B inder Rolle User Der Akteur A ist erfolgreich beim Messenger Service A angemeldet  Der Akteur B ist erfolgreich beim Messenger Service B angemeldet 1Akteur A löstMatrix-Event aus2Matrix-Request3HTTP(S) Forward4Eventverarbeiten5Status6HTTP(S) Forward7Status8Matrix-RequestrefBerechtigungsprüfung 9HTTP(S) ForwardrefBerechtigungsprüfung 10HTTP(S) Forward11Eventverarbeitenopt[Pushbenachrichtigung]12POST /_matrix/push/notify13Notification14Status15Status16HTTP(S) Forward17Status18GET /_matrix/client/v3/sync19HTTP(S) Forward20Status (Matrix-Request)21HTTP(S) Forward22Eventverarbeiten23Status \ No newline at end of file diff --git a/images/generated/TI-M_Basis/UC_10063_Seq.png b/images/generated/TI-M_Basis/UC_10063_Seq.png new file mode 100644 index 00000000..1d94a35c Binary files /dev/null and b/images/generated/TI-M_Basis/UC_10063_Seq.png differ diff --git a/images/generated/TI-M_Basis/UC_10063_Seq.svg b/images/generated/TI-M_Basis/UC_10063_Seq.svg new file mode 100644 index 00000000..9fd68812 --- /dev/null +++ b/images/generated/TI-M_Basis/UC_10063_Seq.svg @@ -0,0 +1 @@ +Messenger-Service Akteur A in derRolle UserAkteur A in derRolle UserTI-Messenger-Client ATI-Messenger-Client AMessenger-ProxyMessenger-ProxyMatrix-Homeserver(inklusive Nutzerverzeichnis)Matrix-Homeserver(inklusive Nutzerverzeichnis)Push-GatewayPush-GatewayTI-Messenger-Client BTI-Messenger-Client BAkteur B in derRolle UserAkteur B in derRolle User Die Akteure sind auf dem selben Messenger-Service angemeldet und im Besitz eines zugelassenen TI-Messenger-Clients.Ebenfalls sind beide Akteure einem gemeinsamen Raum beigetreten. 1Akteur A löstMatrix-Event aus2Matrix-Request3HTTP(S) Forward4Event verarbeiten5Matrix-Request Status6HTTP(S) Forward7Statusopt[Push-Benachrichtigung]8POST /_matrix/push/notify9Notification10Status11GET /_matrix/client/v3/sync12HTTP(S) Forward13Status14HTTP(S) Forward15Eventverarbeiten16Status \ No newline at end of file diff --git a/images/generated/TI-M_Basis/UC_10064_Seq.png b/images/generated/TI-M_Basis/UC_10064_Seq.png new file mode 100644 index 00000000..8ea6f69a Binary files /dev/null and b/images/generated/TI-M_Basis/UC_10064_Seq.png differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10064_Seq.svg b/images/generated/TI-M_Basis/UC_10064_Seq.svg similarity index 60% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10064_Seq.svg rename to images/generated/TI-M_Basis/UC_10064_Seq.svg index 83606dfb..c567df15 100644 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10064_Seq.svg +++ b/images/generated/TI-M_Basis/UC_10064_Seq.svg @@ -1 +1 @@ -Messenger-Service Messenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-HomeserverRegistrierungs-DienstRegistrierungs-DienstVZD-FHIR-DirectoryVZD-FHIR-Directory1prüfe im Eventob Matrix-Domain(s)in der Föderationslistevorhanden ist/sindalt[Matrix-Domain ist in der Föderationsliste enthalten ODER Matrix-Domain des Senders = Matrix-Domain des Empfängers]2HTTP(S) Forward3Status[Matrix-Domain ist nicht in der Föderationsliste enthalten]refAnhang B- Aktualisierung der Föderationsliste 4prüfe ob Matrix-Domainder MXIDin deraktualisierten Föderationsliste vorhanden istalt[Matrix-Domain ist nicht in der aktualisierten Föderationsliste enthalten]5Abbruch, Verbindung wird abgelehnt[Matrix-Domain ist in der aktualisierten Föderationsliste enthalten]6HTTP(S) Forward7Status \ No newline at end of file +Messenger-Service Messenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-HomeserverRegistrierungs-DienstRegistrierungs-DienstVZD-FHIR-DirectoryVZD-FHIR-Directory1prüfe im Eventob Matrix-Domain(s)in der Föderationslistevorhanden ist/sindalt[Matrix-Domain ist in der Föderationsliste enthalten ODER Matrix-Domain des Senders = Matrix-Domain des Empfängers]2HTTP(S) Forward3Status[Matrix-Domain ist nicht in der Föderationsliste enthalten]refAktualisierung der Föderationsliste 4prüfe ob Matrix-Domainder MXIDin deraktualisierten Föderationsliste vorhanden istalt[Matrix-Domain ist nicht in der aktualisierten Föderationsliste enthalten]5Abbruch, Verbindung wird abgelehnt[Matrix-Domain ist in der aktualisierten Föderationsliste enthalten]6HTTP(S) Forward7Status \ No newline at end of file diff --git a/images/generated/TI-M_Basis/UC_10103_Seq.png b/images/generated/TI-M_Basis/UC_10103_Seq.png new file mode 100644 index 00000000..b7ae8e09 Binary files /dev/null and b/images/generated/TI-M_Basis/UC_10103_Seq.png differ diff --git a/images/generated/TI-M_Basis/UC_10103_Seq.svg b/images/generated/TI-M_Basis/UC_10103_Seq.svg new file mode 100644 index 00000000..ef59c643 --- /dev/null +++ b/images/generated/TI-M_Basis/UC_10103_Seq.svg @@ -0,0 +1 @@ +Endgerät Akteur in der RolleOrg-AdminAkteur in der RolleOrg-AdminFrontend desRegistrierungs-DienstesFrontend desRegistrierungs-DienstesAuthenticatorAuthenticatorKonnektor /Basis-ConsumerKonnektor /Basis-ConsumerRegistrierungs-DienstRegistrierungs-DienstzentralerIDP-DienstzentralerIDP-Dienstalt[Organisation nicht am Registrierungs-Dienst authentisiert]1Organisation verifizieren(Verfahren auswählen)alt[OpenID Connect]2POST I_RegistrationSchnittstelle wird nichtdurch die gematik spezifiziert3Erzeuge PKCE Codefür verifier und challenge4Redirect to IDP Authorization Endpoint5Deeplink authenticator://...6GET {authorization_endpoint}7Authentication challenge8ExternalAuthenticate9ExternalAuthenticateResponse10Authentication challenge response11HTTP 302 Redirect(auth_code)12{client_callback_uri}(Redirect + auth_code)13POST I_Registration(auth_code)14POST {token_endpoint}(auth_code, verifier)15id_token16ID_TOKEN validieren(id_token)17enthalteneProfessionOID aufgültige Organisationprüfen[KIM - Verfahren]18KIM-Adresse in Eingabemaske eintragen (POST I_Registration)19Abfrage des LDAP-DirectoryEintrags zur KIM-Adresse20Speicherung der telematikIdund der professionOID21ProfessionOID aufgültige Organisationprüfen22KIM Nachricht mit URL23URL in KIM-Nachricht öffnenbreak[keine gültige ProfessionOID gefunden]24Fehlernachricht "keine gültige ProfessionOID gefunden"25Fehlernachricht"Authentifizierung fehlgeschlagen"26Organisationauthentifizieren27Prüfung auf existierenden Admin Accountbreak[Organisation bereits authentifiziert UND ein Admin-Account existiert bereits]28Fehlernachricht "Account existiert bereits"29Fehlernachricht"Account existiert bereits"30Status31Verifizierung erfolgreich32Admin Account anlegen(Passwort + 2. Faktor)33POST I_Registration (Admin-Account Credentials + 2. Faktor)Schnittstelle wird nichtdurch die gematik spezifiziert34Credentials-Policy prüfen35Org-Admin Accountfür die Organisationanlegen36Status37Account angelegt \ No newline at end of file diff --git a/images/generated/TI-M_Basis/UC_10235_Seq.png b/images/generated/TI-M_Basis/UC_10235_Seq.png new file mode 100644 index 00000000..f02506e2 Binary files /dev/null and b/images/generated/TI-M_Basis/UC_10235_Seq.png differ diff --git a/images/generated/TI-M_Basis/UC_10235_Seq.svg b/images/generated/TI-M_Basis/UC_10235_Seq.svg new file mode 100644 index 00000000..a4b1f190 --- /dev/null +++ b/images/generated/TI-M_Basis/UC_10235_Seq.svg @@ -0,0 +1 @@ +VZD-FHIR-Directory Akteur in derRolle UserAkteur in derRolle UserTI-Messenger ClientTI-Messenger ClientMessenger ServiceMessenger ServiceFHIR-ProxyFHIR-ProxyAuth-ServiceAuth-ServiceFHIR-DirectoryFHIR-Directory Der Akteur ist erfolgreich beim Messenger-Service angemeldet 1Suchparameter fürFHIR-RessourceneingebenPrüfung/Erhalt search-accesstokenrefgemSpec_VZD_FHIR_Directory#AF_10036-01(Der Akteur entspricht dem "Nutzer" im referenzierten Anwendungsfall)alt[gültiges search-accesstoken erhalten]alt[HealthcareService-Einträge werden gesucht]2GET {Search-Schnittstelle}/HealthcareService/?organization.active=true&...(search-accesstoken)Finde Datensatz fürTelematikID3prüfe search-accesstoken4GET {Search-Schnittstelle}/HealthcareService/?organization.active=true&...5HTTP 200 (:Suchergebnis FHIR-Bundle)6HTTP 200 (:Suchergebnis FHIR-Bundle)7Suchergebnis[PractitionerRole-Einträge werden gesucht]8GET {Search-Schnittstelle}/PractitionerRole/?practitioner.active=true&...(search-accesstoken)Finde Datensatz für MXID9prüfe search-accesstoken10GET {Search-Schnittstelle}/PractitionerRole/?practitioner.active=true&...11HTTP 200 (:Suchergebnis FHIR-Bundle)12HTTP 200 (:Suchergebnis FHIR-Bundle)13Suchergebnis[kein gültiges search-accesstoken]break14GET {Search-Schnittstelle} (search-accesstoken)15HTTP 40116Fehlermeldung \ No newline at end of file diff --git a/images/generated/TI-M_Basis/UC_Approvel_List_Seq.png b/images/generated/TI-M_Basis/UC_Approvel_List_Seq.png new file mode 100644 index 00000000..6c8a4923 Binary files /dev/null and b/images/generated/TI-M_Basis/UC_Approvel_List_Seq.png differ diff --git a/images/generated/TI-M_Basis/UC_Approvel_List_Seq.svg b/images/generated/TI-M_Basis/UC_Approvel_List_Seq.svg new file mode 100644 index 00000000..02bb4b21 --- /dev/null +++ b/images/generated/TI-M_Basis/UC_Approvel_List_Seq.svg @@ -0,0 +1 @@ +Messenger-Servicedes einladenden Akteurs Messenger-Servicedes eingeladenen Akteurs Push-Gateway des eingeladenden Akteurs Messenger Clientdes eingeladenen Akteurs Messenger-ServiceMessenger-ServiceMessenger-ServiceMessenger-ServicePush-GatewayPush-GatewayMessenger-ClientMessenger-ClientMatrix-Invite-EventBerechtigungskonzept - Stufe 1  break[Matrix-Domain nicht in der Föderation enthalten]Abbruch,Verbindung wirdabgelehntHTTP 403Berechtigungskonzept - Stufe 2  Invite-Eventverarbeitenopt[Durchsetzen der akteursspezifischen Berechtigungskonfiguration]Prüfung, ob die Einladung erlaubt istbreak[Der Akteur hat "allow all" konfiguriert und der einladende Akteurist auf der BlockedUser-Liste (Direkt oder als Teil einer Domain)]Einladung ist abzulehnenbreak[Der Akteur hat "block all" konfiguriert und der einladende Akteurist nicht auf der AllowedUser-Liste (Direkt oder als Teil einer Domain)]Einladung ist abzulehnenPush NotificationPush NotificationResponseAbfrage neuer EventsBereitstellung neuer Eventsopt[Durchsetzen der akteursspezifischen Berechtigungskonfiguration]Prüfung, ob die Einladung erlaubt istbreak[Der Akteur hat "allow all" konfiguriert und der einladende Akteurist auf der BlockedUser-Liste (Direkt oder als Teil einer Domain)]Einladung ist abzulehnenbreak[Der Akteur hat "block all" konfiguriert und der einladende Akteurist nicht auf der AllowedUser-Liste (Direkt oder als Teil einer Domain)]Einladung ist abzulehnenEinladungsergebnisEinladungsergebnis \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_Seq.png b/images/generated/TI-M_Basis/UC_Update_Federationlist_Seq.png similarity index 98% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_Seq.png rename to images/generated/TI-M_Basis/UC_Update_Federationlist_Seq.png index 14a213e9..8ebcfa7a 100644 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_Seq.png and b/images/generated/TI-M_Basis/UC_Update_Federationlist_Seq.png differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_Seq.svg b/images/generated/TI-M_Basis/UC_Update_Federationlist_Seq.svg similarity index 95% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_Seq.svg rename to images/generated/TI-M_Basis/UC_Update_Federationlist_Seq.svg index 7576d558..94d2dc72 100644 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_Seq.svg +++ b/images/generated/TI-M_Basis/UC_Update_Federationlist_Seq.svg @@ -1 +1 @@ -Messenger-Service VZD-FHIR-Directory Messenger-ProxyMessenger-ProxyRegistrierungs-DienstRegistrierungs-DienstFHIR-ProxyFHIR-ProxyOAuth-ServiceOAuth-Servicescheduled loop[alle 1h]alt[HealthState_VZD=gesund ODER Alter_Föderationsliste>=1h]refProvider authentifizieren und Föderationsliste abrufen[HealthState_VZD!=gesund]1HealthStateCheck einleiten(HealthStateCheck_VZD=0)loop[alle 5min UND HealthStateCheck_VZD<=3]refProvider authentifizieren und Föderationsliste abrufenalt[HealthState_VZD=gesund]break2HealthStateCheck_VZD abbrechen()[HealthState_VZD!=gesund]3HealthStateCheck_VZD erhöhen(HealthStateCheck_VZD+1)alt[HealthStateCheck_VZD=3]4Incident-Event erzeugen()5letzte vorhandene Föderationsliste puffern()6Föderationslisteon request 7Föderationslisteaktualisieren()8GET /I_internVerification(FLVersion_MP)Schnittstelle wird nichtdurch die gematik spezifiziertalt[HealthState_VZD=gesund UND Alter_Föderationsliste>=1h]refProvider authentifizieren und Föderationsliste abrufenbreak[Alter_Föderationsliste>TTL_Föderationsliste]9FLStatus_RD=veraltet10Incident-Event erzeugen()11unterbinde Registrierungsdienst-Requests(Dauer=1h)12blockiere Kommunikation zu anderen Homeservern()13vergleiche Versionen(FLVersion_MP, FLVersion_RD)14Vergleichsergebnis_RDalt[Vergleichsergebnis_RD=identisch]15FLStatus_MP=aktuell[Vergleichsergebnis_RD!=identisch]16Föderationsliste, x5c-ZertifikatslisterefSignatur der Föderationsliste prüfen \ No newline at end of file +Messenger-Service VZD-FHIR-Directory Messenger-ProxyMessenger-ProxyRegistrierungs-DienstRegistrierungs-DienstFHIR-ProxyFHIR-ProxyOAuth-ServiceOAuth-Servicescheduled loop[alle 1h]alt[HealthState_VZD=gesund ODER Alter_Föderationsliste>=1h]refProvider authentifizieren und Föderationsliste abrufen[HealthState_VZD!=gesund]1HealthStateCheck einleiten(HealthStateCheck_VZD=0)loop[alle 5min UND HealthStateCheck_VZD<=3]refProvider authentifizieren und Föderationsliste abrufenalt[HealthState_VZD=gesund]break2HealthStateCheck_VZD abbrechen()[HealthState_VZD!=gesund]3HealthStateCheck_VZD erhöhen(HealthStateCheck_VZD+1)alt[HealthStateCheck_VZD=3]4Incident-Event erzeugen()5letzte vorhandene Föderationsliste puffern()6Föderationslisteon request 7Föderationslisteaktualisieren()8GET /I_internVerification(FLVersion_MP)Schnittstelle wird nichtdurch die gematik spezifiziertalt[HealthState_VZD=gesund UND Alter_Föderationsliste>=1h]refProvider authentifizieren und Föderationsliste abrufenbreak[Alter_Föderationsliste>TTL_Föderationsliste]9FLStatus_RD=veraltet10Incident-Event erzeugen()11unterbinde Registrierungsdienst-Requests(Dauer=1h)12blockiere Kommunikation zu anderen Homeservern()13vergleiche Versionen(FLVersion_MP, FLVersion_RD)14Vergleichsergebnis_RDalt[Vergleichsergebnis_RD=identisch]15FLStatus_MP=aktuell[Vergleichsergebnis_RD!=identisch]16Föderationsliste, x5c-ZertifikatslisterefSignatur der Föderationsliste prüfen \ No newline at end of file diff --git a/images/generated/TI-M_Basis/UC_Update_Federationlist_SignCheck.png b/images/generated/TI-M_Basis/UC_Update_Federationlist_SignCheck.png new file mode 100644 index 00000000..9aff52ba Binary files /dev/null and b/images/generated/TI-M_Basis/UC_Update_Federationlist_SignCheck.png differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_SignCheck.svg b/images/generated/TI-M_Basis/UC_Update_Federationlist_SignCheck.svg similarity index 64% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_SignCheck.svg rename to images/generated/TI-M_Basis/UC_Update_Federationlist_SignCheck.svg index 4273425f..4407a8d5 100644 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_SignCheck.svg +++ b/images/generated/TI-M_Basis/UC_Update_Federationlist_SignCheck.svg @@ -1 +1 @@ -Messenger-Service Messenger-ProxyMessenger-ProxyPublic OCSP-ResponderPublic OCSP-Responder1Signatur der Föderationsliste prüfen(Föderationsliste, x5c-Zertifikatsliste[1])2Signaturprüfergebnisloop[für jeden Eintrag von x5c-Zertifikatsliste]3Public-OCSP-Zertifikatsprüf-Request stellen(x5c-Zertifikat)4OCSP-Responsealt[Signaturprüfergebnis=gültigUND jeder OCSP-Response.CertificateStatusValue=good]5Föderationsliste aktualisieren(Föderationsliste)Legendenicht anzuwenden in dieser Spezifikationsversion,sondern erst, sobald der Public OCSP-Responder verfügbar ist(bezieht sich auf die im diesem Diagramm blau dargestellten Prüfungen und Komponenten) \ No newline at end of file +Messenger-Service Messenger-ProxyMessenger-ProxyPublic OCSP-ResponderPublic OCSP-Responder1Signatur der Föderationsliste prüfen(Föderationsliste, x5c-Zertifikatsliste[1])2Signaturprüfergebnisloop[für jeden Eintrag von x5c-Zertifikatsliste]3Public-OCSP-Zertifikatsprüf-Request stellen(x5c-Zertifikat)4OCSP-Responsealt[Signaturprüfergebnis=gültig UND jeder OCSP-Response.CertificateStatusValue=good]5Föderationsliste aktualisieren(Föderationsliste) \ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_auth_retrieve.png b/images/generated/TI-M_Basis/UC_Update_Federationlist_auth_retrieve.png similarity index 99% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_auth_retrieve.png rename to images/generated/TI-M_Basis/UC_Update_Federationlist_auth_retrieve.png index a1f3a907..1761ac9e 100644 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_auth_retrieve.png and b/images/generated/TI-M_Basis/UC_Update_Federationlist_auth_retrieve.png differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_auth_retrieve.svg b/images/generated/TI-M_Basis/UC_Update_Federationlist_auth_retrieve.svg similarity index 94% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_auth_retrieve.svg rename to images/generated/TI-M_Basis/UC_Update_Federationlist_auth_retrieve.svg index 038e8454..d6d78d6b 100644 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_auth_retrieve.svg +++ b/images/generated/TI-M_Basis/UC_Update_Federationlist_auth_retrieve.svg @@ -1 +1 @@ -VZD-FHIR-Directory Registrierungs-DienstRegistrierungs-DienstOAuth-ServiceOAuth-ServiceAuth-ServiceAuth-ServiceFHIR-ProxyFHIR-Proxyalt[kein gültiges provider-accesstoken vorhanden]alt[Benötigt IDP-TI-Provider-Accesstoken]1POST /auth/realms/TI-Provider/protocol/openid-connect/token(client_id, client_secret){<10s := HealthState_VZD=gesund}2Credentials prüfen(client_id, client_secret)3ti-provider-accesstoken4GET /ti-provider-authenticate(ti-provider-accesstoken){<10s := HealthState_VZD=gesund}5Token prüfen(ti-provider-accesstoken)6provider-accesstoken7GET /tim-provider-services/FederationList/federationList.jws(provider-accesstoken, FLVersion_RD){<10s := HealthState_VZD=gesund}8Token prüfen(provider-accesstoken)break[Abruf der Föderationsliste nicht möglich]9ResponseType=Bad Request ODERResponseType=Unauthorized ODERResponseType=Forbidden ODERResponseType=Not Found10Auf neuere Version derFöderationsliste prüfen(FLVersion_RD)alt[keine neuere Version der Föderationsliste vorhanden]11ResponseType=No Content12Alter_Föderationsliste zurücksetzen(Alter_Föderationsliste=0s)[neuere Version der Föderationsliste vorhanden ODER FLVersion_RD=NULL]13Föderationsliste, x5c-Zertifikatsliste14Föderationsliste aktualisieren(Föderationsliste)15Föderationsliste16Alter_Föderationsliste zurücksetzen(Alter_Föderationsliste=0s) \ No newline at end of file +VZD-FHIR-Directory Registrierungs-DienstRegistrierungs-DienstOAuth-ServiceOAuth-ServiceAuth-ServiceAuth-ServiceFHIR-ProxyFHIR-Proxyalt[kein gültiges provider-accesstoken vorhanden]alt[Benötigt IDP-TI-Provider-Accesstoken]1POST /auth/realms/TI-Provider/protocol/openid-connect/token(client_id, client_secret){<10s := HealthState_VZD=gesund}2Credentials prüfen(client_id, client_secret)3ti-provider-accesstoken4GET /ti-provider-authenticate(ti-provider-accesstoken){<10s := HealthState_VZD=gesund}5Token prüfen(ti-provider-accesstoken)6provider-accesstoken7GET /tim-provider-services/FederationList/federationList.jws(provider-accesstoken, FLVersion_RD){<10s := HealthState_VZD=gesund}8Token prüfen(provider-accesstoken)break[Abruf der Föderationsliste nicht möglich]9ResponseType=Bad Request ODERResponseType=Unauthorized ODERResponseType=Forbidden ODERResponseType=Not Found10Auf neuere Version derFöderationsliste prüfen(FLVersion_RD)alt[keine neuere Version der Föderationsliste vorhanden]11ResponseType=No Content12Alter_Föderationsliste zurücksetzen(Alter_Föderationsliste=0s)[neuere Version der Föderationsliste vorhanden ODER FLVersion_RD=NULL]13Föderationsliste, x5c-Zertifikatsliste14Föderationsliste aktualisieren(Föderationsliste)15Föderationsliste16Alter_Föderationsliste zurücksetzen(Alter_Föderationsliste=0s) \ No newline at end of file diff --git a/images/generated/TI-M_Basis/UC_tim_specific_comm.png b/images/generated/TI-M_Basis/UC_tim_specific_comm.png new file mode 100644 index 00000000..2a035d10 Binary files /dev/null and b/images/generated/TI-M_Basis/UC_tim_specific_comm.png differ diff --git a/images/generated/TI-M_Basis/UC_tim_specific_comm.svg b/images/generated/TI-M_Basis/UC_tim_specific_comm.svg new file mode 100644 index 00000000..7dada879 --- /dev/null +++ b/images/generated/TI-M_Basis/UC_tim_specific_comm.svg @@ -0,0 +1 @@ +RolleTI-M spezifische Kommunikationjeder Akteur, der an der Kommunikationin der TI-M Föderation teilnimmtUserBasis-Anwendungsfall fürTI-M spezifische Kommunikation Nutzung zusätzlicher Chatroom-Eigenschaften(Custom State Events und/oderCustom Room Types)MerkmaleUnterstützung von FHIR-Resourceszur strukturierten KommunikationFallbezogeneKommunikationFöderierte und intersektoraleKommunikation«include»«include» \ No newline at end of file diff --git a/images/generated/TI-M_Basis/push_notifications_delivery.png b/images/generated/TI-M_Basis/push_notifications_delivery.png new file mode 100644 index 00000000..c1180f40 Binary files /dev/null and b/images/generated/TI-M_Basis/push_notifications_delivery.png differ diff --git a/images/generated/TI-M_Basis/push_notifications_delivery.svg b/images/generated/TI-M_Basis/push_notifications_delivery.svg new file mode 100644 index 00000000..bbe64e2b --- /dev/null +++ b/images/generated/TI-M_Basis/push_notifications_delivery.svg @@ -0,0 +1 @@ +Akteur in der Rolle UserAkteur in der Rolle UserTI-Messenger Client AppInhaber PushAnbieter-App TokenTI-Messenger Client AppInhaber PushAnbieter-App TokenPush-AnbieterPush-AnbieterPush-GatewayPush-GatewayFachdienstFachdienst1Benachrichtigung(App_ID,PushAnbieter-AppToken, EventID)2Benachrichtigung(PushAnbieter-AppToken,EventID)3Response4Response5Benachrichtigung anEmpfänger(PushAnbieter-AppToken,EventID)6Abfrage der Daten zuEvent(EventID)7VerschlüsselteBenachrichtigungsinhalte8Entschlüssele(VerschlüsselteBenachrichtigungsinhalte)9erzeugeAnwenderbenachrichtigung mit den entschlüsselten Inhalten10Zeige Benachrichtigung \ No newline at end of file diff --git a/images/generated/TI-M_Basis/push_notifications_registration.png b/images/generated/TI-M_Basis/push_notifications_registration.png new file mode 100644 index 00000000..3fda6e05 Binary files /dev/null and b/images/generated/TI-M_Basis/push_notifications_registration.png differ diff --git a/images/generated/TI-M_Basis/push_notifications_registration.svg b/images/generated/TI-M_Basis/push_notifications_registration.svg new file mode 100644 index 00000000..0d3bc288 --- /dev/null +++ b/images/generated/TI-M_Basis/push_notifications_registration.svg @@ -0,0 +1 @@ +Akteur in der Rolle UserAkteur in der Rolle UserTI-Messenger Client AppTI-Messenger Client AppPush-AnbieterPush-AnbieterFachdienstFachdienstPush-GatewayPush-GatewayErsteller TI-Messenger Client AppErsteller TI-Messenger Client App1konfiguriert unter einer eindeutigen App_ID denZugang zum Push-Anbieter2speichere Konfiguration3hinterlege App_ID & Push-Gateway URL in der App4installiert TI-Messenger Client App auf dem Smartphone5Wollen Sie Push-Nachrichten empfangen?6stimmt dem Empfang von Push-Nachrichten zu7registriert die App beim Push-Anbieter8eindeutiges PushAnbieter-AppTokenfür die App Instanz9speichere PushAnbieter-AppToken10konfiguriere zu verwendendesGateway(Gateway-Url,App_ID,PushAnbieter-AppToken)11Konfiguration übernommen \ No newline at end of file diff --git a/images/generated/TI-M_Pro/API-Messenger-Service.png b/images/generated/TI-M_Pro/API-Messenger-Service.png new file mode 100644 index 00000000..1e583443 Binary files /dev/null and b/images/generated/TI-M_Pro/API-Messenger-Service.png differ diff --git a/images/generated/TI-M_Pro/API-Messenger-Service.svg b/images/generated/TI-M_Pro/API-Messenger-Service.svg new file mode 100644 index 00000000..112a082a --- /dev/null +++ b/images/generated/TI-M_Pro/API-Messenger-Service.svg @@ -0,0 +1,3 @@ + + +

extern

extern

extern

extern

intern

intern
Messenger-Service
Messenger-Service
Matrix- Homeserver
Matrix- Homese...
Messenger-
Proxy
Messenger-...

Matrix - Server

Server API

Matrix - Serve...
R
R
R
R

Matrix - Server

Server API

Matrix - Serve...
R
R
R
R

Matrix - Server

Server API

Matrix - Serve...

Matrix - Client

Server API

Matrix - Clien...
R
R
R
R

TiMessengerContactManagement

TiMessengerContactManagement

Matrix - Client

Server API

Matrix - Clien...
R
R

Authentifizierungsverfahren

Authentifizierungsverfahren
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_Pro/Berechtigung_UI.png b/images/generated/TI-M_Pro/Berechtigung_UI.png new file mode 100644 index 00000000..5cf35435 Binary files /dev/null and b/images/generated/TI-M_Pro/Berechtigung_UI.png differ diff --git a/images/generated/TI-M_Pro/Berechtigung_UI.svg b/images/generated/TI-M_Pro/Berechtigung_UI.svg new file mode 100644 index 00000000..37336333 --- /dev/null +++ b/images/generated/TI-M_Pro/Berechtigung_UI.svg @@ -0,0 +1,3 @@ + + +

TI-Messenger

TI-Messenger

Wer darf mich kontaktieren?

Wer darf mich kontaktieren?

Jeder

Jeder

Niemand

Niemand

Ausnahmen

Ausnahmen
Server: gematik.de
Server: gematik.de
Weitere Kategorie hinzufügen
Weitere Kategorie hinzufügen
MXID:@DrMeier:mypraxis.de
MXID:@DrMeier:mypraxis.de
Gruppe: Versicherte
Gruppe: Versicherte
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10058_Seq.png b/images/generated/TI-M_Pro/UC_10058_Seq.png similarity index 99% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10058_Seq.png rename to images/generated/TI-M_Pro/UC_10058_Seq.png index 3a7885f7..9b7dbc3c 100644 Binary files a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10058_Seq.png and b/images/generated/TI-M_Pro/UC_10058_Seq.png differ diff --git a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10058_Seq.svg b/images/generated/TI-M_Pro/UC_10058_Seq.svg similarity index 95% rename from images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10058_Seq.svg rename to images/generated/TI-M_Pro/UC_10058_Seq.svg index b0ac397f..0d858ff0 100644 --- a/images/diagrams/TI-Messenger-Dienst/Ressourcen/UC_10058_Seq.svg +++ b/images/generated/TI-M_Pro/UC_10058_Seq.svg @@ -1 +1 @@ -Endgerät VZD-FHIR-Directory Akteur in der RolleUser-HBAAkteur in der RolleUser-HBATI-Messenger-ClientTI-Messenger-ClientAuthenticatorAuthenticatorKonnektorKonnektorzentraler IDP-Dienstzentraler IDP-DienstFHIR-ProxyFHIR-ProxyAuth-ServiceAuth-ServiceFHIR-DirectoryFHIR-Directory Der Akteur ist bei einem Messenger Service angemeldet (siehe AF_10057) 1FHIR Ressourcen imVZD-FHIR-Directoryhinzufügen (MXID)2Prüfung, ob gültigesowner-accesstokenvorliegtalt[kein gültiges owner-accesstoken vorhanden]3GET /owner-authenticate4Erzeuge PKCE Codefür verifier und challenge5HTTP 302 Redirect to IDP Authorization Endpoint6Deeplink authenticator://...7GET {authorization_endpoint}8Authentication challenge9ExternalAuthenticate10ExternalAuthenticateResponse11Authentication challenge response12HTTP 302 Redirect(auth_code)13{client_callback_uri}Redirect(auth_code)14GET /signin-gematik-idp-dienst(auth_code)15POST {token_endpoint}(auth_code, verifier)16id_token17ID_TOKEN validieren(id_token)18erzeugeowner-accesstoken(id_token)19owner-accesstokenVZD-FHIR-Directory EintragFHIR-Ressourcen lesen20GET /owner/PractitionerRole/?...Finde Datensatz für eigene TelematikID(owner-accesstoken)21prüfeowner-accesstoken22HTTPS Forward23result body json24result body jsonFHIR-Ressourcen schreiben25FHIR-Operationen um eigenen Datensatz zu verwalten(owner-accesstoken, Flag für Sichtbarkeit des Endpoints)26prüfeowner-accesstoken27HTTPS Forward28result body json29result body json30Status \ No newline at end of file +Endgerät VZD-FHIR-Directory Akteur in der RolleUser-HBAAkteur in der RolleUser-HBATI-Messenger-ClientTI-Messenger-ClientAuthenticatorAuthenticatorKonnektorKonnektorzentraler IDP-Dienstzentraler IDP-DienstFHIR-ProxyFHIR-ProxyAuth-ServiceAuth-ServiceFHIR-DirectoryFHIR-Directory Der Akteur ist bei einem Messenger Service angemeldet (siehe AF_10057) 1FHIR Ressourcen imVZD-FHIR-Directoryhinzufügen (MXID)2Prüfung, ob gültigesowner-accesstokenvorliegtalt[kein gültiges owner-accesstoken vorhanden]3GET /owner-authenticate4Erzeuge PKCE Codefür verifier und challenge5HTTP 302 Redirect to IDP Authorization Endpoint6Deeplink authenticator://...7GET {authorization_endpoint}8Authentication challenge9ExternalAuthenticate10ExternalAuthenticateResponse11Authentication challenge response12HTTP 302 Redirect(auth_code)13{client_callback_uri}Redirect(auth_code)14GET /signin-gematik-idp-dienst(auth_code)15POST {token_endpoint}(auth_code, verifier)16id_token17ID_TOKEN validieren(id_token)18erzeugeowner-accesstoken(id_token)19owner-accesstokenVZD-FHIR-Directory EintragFHIR-Ressourcen lesen20GET /owner/PractitionerRole/?...Finde Datensatz für eigene TelematikID(owner-accesstoken)21prüfeowner-accesstoken22HTTPS Forward23result body json24result body jsonFHIR-Ressourcen schreiben25FHIR-Operationen um eigenen Datensatz zu verwalten(owner-accesstoken, Flag für Sichtbarkeit des Endpoints)26prüfeowner-accesstoken27HTTPS Forward28result body json29result body json30Status \ No newline at end of file diff --git a/images/generated/TI-M_Pro/UC_10059_Seq.png b/images/generated/TI-M_Pro/UC_10059_Seq.png new file mode 100644 index 00000000..cb4e9812 Binary files /dev/null and b/images/generated/TI-M_Pro/UC_10059_Seq.png differ diff --git a/images/generated/TI-M_Pro/UC_10059_Seq.svg b/images/generated/TI-M_Pro/UC_10059_Seq.svg new file mode 100644 index 00000000..808bf980 --- /dev/null +++ b/images/generated/TI-M_Pro/UC_10059_Seq.svg @@ -0,0 +1 @@ +Endgerät VZD-FHIR-Directory Ti-Messenger-Fachdienst Akteur in der RolleOrg-AdminAkteur in der RolleOrg-AdminTI-Messenger-Clientmit Org-AdminFunktionalitätTI-Messenger-Clientmit Org-AdminFunktionalitätFHIR-ProxyFHIR-ProxyAuth-ServiceAuth-ServiceFHIR-DirectoryFHIR-DirectoryRegistrierungs-DienstRegistrierungs-DienstDie Organisation hat einen Messenger-Servicebereitgestellt bekommen, der Teil der Föderation ist1FHIR Ressourcen imVZD-FHIR-Directoryhinzufügen2Prüfung, ob gültigesowner-accesstokenvorliegtalt[kein gültiges owner-accesstoken vorhanden]alt[Akteur ist nicht am Registrierungs-Dienst angemeldet]3Mit Admin-Accountam Registrierungs-Dienstanmelden4Login mit Client-Credentials + 2.FaktorSchnittstelle wird nichtdurch die gematik spezifiziert5prüfe Client-Credentialsund 2. Faktor6status7Erfolgreich angemeldet8RegService-OpenID-Token anfragen (z. B. GET /regserv/request_Token)Schnittstelle wird nichtdurch die gematik spezifiziert9Verifizierung desangemeldeten Akteurs10RegService-OpenID-Token {telematikID, professionOID, Signaturzertifikat (x5c)}11GET /owner-authenticate (Auth Header mit RegService-OpenID-Token)12Prüfung des TokenDie Prüfschritte sind dergemSpec_VZD_FHIR_Directoryzu entnehmenopt[Abbruch]13Tokenprüfung fehlgeschlagen14keine Berechtigung15erzeugeowner-accesstoken16owner-accesstokenFHIR-Directory Eintrag erstellenFHIR-Ressource der Organisation anzeigen17FHIR-Operation um eigenen Datensatz anzuzeigenAuthorization Bearer owner-accesstoken18prüfeowner-accesstoken19HTTPS Forward20Eintrag suchen21FHIR Bundle22HTTPS ForwardFHIR-Ressource der Organisation erstellen/ändern23FHIR-Operationen um eigenen Datensatz zu bearbeitenAuthorization Bearer owner-accesstoken24prüfeowner-accesstoken25HTTPS Forward26Eintrag bearbeiten27Status28HTTPS Forward29status \ No newline at end of file diff --git a/images/generated/TI-M_Pro/UC_10104_Seq.png b/images/generated/TI-M_Pro/UC_10104_Seq.png new file mode 100644 index 00000000..66dcb8f0 Binary files /dev/null and b/images/generated/TI-M_Pro/UC_10104_Seq.png differ diff --git a/images/generated/TI-M_Pro/UC_10104_Seq.svg b/images/generated/TI-M_Pro/UC_10104_Seq.svg new file mode 100644 index 00000000..fa67d45d --- /dev/null +++ b/images/generated/TI-M_Pro/UC_10104_Seq.svg @@ -0,0 +1 @@ +Messenger-Service Akteur - A inder Rolle UserAkteur - A inder Rolle UserTI-Messenger-Client ATI-Messenger-Client AMessenger-ProxyMessenger-ProxyMatrix-Homeserver(inklusive Nutzerverzeichnis)Matrix-Homeserver(inklusive Nutzerverzeichnis)Push-GatewayPush-GatewayTI-Messenger-Client BTI-Messenger-Client BAkteur - B inder Rolle UserAkteur - B inder Rolle Useropt[Akteur suchen]1Suche Akteur B2POST /_matrix/client/user_directory/search3HTTP(S) Forward4Nutzerverzeichnisdurchsuchen5MXID6HTTP(S) Forward7Akteur B einladen8POST /_matrix/client/v3/rooms/{roomId}/inviterefBerechtigungsprüfung 9HTTP(S) Forward10Invite verarbeiten11HTTP 20012HTTP(S) Forwardopt[Push-Benachrichtigung]13POST /_matrix/push/notify14Notification15Status16Sync Request17HTTP(S) Forward18Sync Response19HTTP(S) Forward20Einladung anzeigen21Einladung bestätigen22join23HTTP(S) Forward24join verarbeiten25Room ID26HTTP(S) Forward27Nutzer ist demRaum beigetreten28Sync Request29HTTP(S) Forward30Sync Response31HTTP(S) Forward32Akteur B ist dem RaumRaum beigetreten \ No newline at end of file diff --git a/images/generated/TI-M_Pro/UC_10376_Seq.png b/images/generated/TI-M_Pro/UC_10376_Seq.png new file mode 100644 index 00000000..86f1a181 Binary files /dev/null and b/images/generated/TI-M_Pro/UC_10376_Seq.png differ diff --git a/images/generated/TI-M_Pro/UC_10376_Seq.svg b/images/generated/TI-M_Pro/UC_10376_Seq.svg new file mode 100644 index 00000000..bf7297ec --- /dev/null +++ b/images/generated/TI-M_Pro/UC_10376_Seq.svg @@ -0,0 +1 @@ +Endgerät VZD-FHIR-Directory Akteur in der RolleUser-HBAAkteur in der RolleUser-HBATI-Messenger-ClientTI-Messenger-ClientFHIR-ProxyFHIR-ProxyFHIR-DirectoryFHIR-DirectorySichtbarkeit für Versicherte abschalten1Deaktiviere Sichtbarkeit für Versicherte2PUT /owner/Endpoint/?...Setze Endpoint.extension:endpointVisibility auf "code": "hide-versicherte"3prüfeowner-accesstoken4HTTPS Forward5result body json6result body json7Ihre MXID ist für Versicherte nicht mehr sichtbar.Sichtbarkeit für Versicherte anschalten8Aktiviere Sichtbarkeit für Versicherte9PUT /owner/Endpoint/?...Entferne Endpoint.extension:endpointVisibility10prüfeowner-accesstoken11HTTPS Forward12result body json13result body json14Ihre MXID ist für Versicherte wieder sichtbar. \ No newline at end of file diff --git a/images/generated/TI-M_Pro/UC_10377_Seq.png b/images/generated/TI-M_Pro/UC_10377_Seq.png new file mode 100644 index 00000000..f49ef527 Binary files /dev/null and b/images/generated/TI-M_Pro/UC_10377_Seq.png differ diff --git a/images/generated/TI-M_Pro/UC_10377_Seq.svg b/images/generated/TI-M_Pro/UC_10377_Seq.svg new file mode 100644 index 00000000..e2fc44a0 --- /dev/null +++ b/images/generated/TI-M_Pro/UC_10377_Seq.svg @@ -0,0 +1 @@ +Endgerät VZD-FHIR-Directory Akteur in der RolleOrg-AdminAkteur in der RolleOrg-AdminTI-Messenger-ClientTI-Messenger-ClientFHIR-ProxyFHIR-ProxyFHIR-DirectoryFHIR-DirectorySichtbarkeit für Versicherte abschalten1Deaktiviere Sichtbarkeit für Versicherte2PUT /owner/Endpoint/?...Setze Endpoint.extension:endpointVisibility auf "code": "hide-versicherte"3prüfeowner-accesstoken4HTTPS Forward5result body json6result body json7Der Endpunkt mit der MXID <MXID> ist für Versicherte nicht mehr sichtbar.Sichtbarkeit für Versicherte anschalten8Aktiviere Sichtbarkeit für Versicherte9PUT /owner/Endpoint/?...Entferne Endpoint.extension:endpointVisibility10prüfeowner-accesstoken11HTTPS Forward12result body json13result body json14Der Endpunkt mit der MXID <MXID> ist für Versicherte wieder sichtbar. \ No newline at end of file diff --git a/images/generated/TI-M_Pro/UC_org_admin.png b/images/generated/TI-M_Pro/UC_org_admin.png new file mode 100644 index 00000000..cc6fc884 Binary files /dev/null and b/images/generated/TI-M_Pro/UC_org_admin.png differ diff --git a/images/generated/TI-M_Pro/UC_org_admin.svg b/images/generated/TI-M_Pro/UC_org_admin.svg new file mode 100644 index 00000000..86698134 --- /dev/null +++ b/images/generated/TI-M_Pro/UC_org_admin.svg @@ -0,0 +1 @@ +RolleAnwendungsfällez. B. Beauftragter Mitarbeiter in einerOrganisationOrg-Admin«AF_10103» Authentisieren einer Organisationam TI-Messenger-Dienst«AF_10060» Bereitstellung eines Messenger-Servicefür eine Organisation«AF_10059» Organisationsressourcen imVerzeichnisdienst hinzufügen \ No newline at end of file diff --git a/images/generated/TI-M_Pro/UC_user_HBA.png b/images/generated/TI-M_Pro/UC_user_HBA.png new file mode 100644 index 00000000..0165e76f Binary files /dev/null and b/images/generated/TI-M_Pro/UC_user_HBA.png differ diff --git a/images/generated/TI-M_Pro/UC_user_HBA.svg b/images/generated/TI-M_Pro/UC_user_HBA.svg new file mode 100644 index 00000000..12a6efc9 --- /dev/null +++ b/images/generated/TI-M_Pro/UC_user_HBA.svg @@ -0,0 +1 @@ +RolleAnwendungsfällez. B. Leistungserbringer im Besitzeines HBAsUser / User-HBA«AF_10057» Anmeldung eines Akteurs amMessenger-Service«AF_10058» Akteur (User-HBA) imVerzeichnisdienst hinzufügen«AF_10104» Einladung von Akteureninnerhalb einer Organisation«AF_10063» Austausch von Eventszwischen Akteureninnerhalb einer Organisation«AF_10061» Einladung von Akteurenaußerhalb einer Organisation«AF_10062» Austausch von Eventszwischen Akteurenaußerhalb einer Organisation \ No newline at end of file diff --git a/images/generated/TI-M_ePA/Komponentendiagramm_Client_fdv.png b/images/generated/TI-M_ePA/Komponentendiagramm_Client_fdv.png new file mode 100644 index 00000000..8528c350 Binary files /dev/null and b/images/generated/TI-M_ePA/Komponentendiagramm_Client_fdv.png differ diff --git a/images/generated/TI-M_ePA/Komponentendiagramm_Client_fdv.svg b/images/generated/TI-M_ePA/Komponentendiagramm_Client_fdv.svg new file mode 100644 index 00000000..063bf686 --- /dev/null +++ b/images/generated/TI-M_ePA/Komponentendiagramm_Client_fdv.svg @@ -0,0 +1,3 @@ + + +
TI-M Client ePA
TI-M Client ePA
TI-Messenger
Modul
TI-Messenger...
Auth
Modul
Auth...
Messenger-Proxy
Messenger-Proxy
Sektoraler 
IDP
Sektoraler...
TI-M Homeserver
TI-M Homeserver
VZD-FHIR-Directory
Modul
VZD-FHIR-Directory...
Auth-Services
Auth-Services
FHIR-Proxy
FHIR-Proxy
VZD-FHIR-DIR
VZD-FHIR-DIR
Matrix - Client - Server API
Matrix - Client - Server API
Client - Server -API
Modul
Client - Server -API...
Invite Authorization
Modul
Invite Authorization...
/fdv/search
/fdv/search
/tim-authenticate
/tim-authenticate
{authorization_endpoint}
{authorization_endpoint}
R
R
R
R
R
R
R
R
Push-Provider
Push-Provider
R
R
Push Notifications
Push Notifications
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_ePA/Komponentendiagramm_fdv.png b/images/generated/TI-M_ePA/Komponentendiagramm_fdv.png new file mode 100644 index 00000000..f7c7208e Binary files /dev/null and b/images/generated/TI-M_ePA/Komponentendiagramm_fdv.png differ diff --git a/images/generated/TI-M_ePA/Komponentendiagramm_fdv.svg b/images/generated/TI-M_ePA/Komponentendiagramm_fdv.svg new file mode 100644 index 00000000..c15b71fe --- /dev/null +++ b/images/generated/TI-M_ePA/Komponentendiagramm_fdv.svg @@ -0,0 +1,3 @@ + + +
VZD-FHIR-Directory
VZD-FHIR-Directory
TI-M FD ePA
TI-M FD ePA
Registrierungs-
Dienst
Registrierungs-...
TI-M
Client ePA
TI-M...
Push-
Gateway
Push-...
FHIR-Directory
FHIR-Directory
FHIR-Proxy
FHIR-Proxy
Sektoraler IDP
Sektoraler IDP
OAuth
OAuth
Auth-Service
Auth-Service
Messenger-Service
Messenger-Service
Messenger-
Proxy
Messenger-...
Matrix-
Homeserver
Matrix-...
R
R
R
R
R
R
R
R
R
R
Komponenten-PKI
Komponenten-PKI
R
R
R
R
Push-Provider
Push-Provider
R
R
R
R
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_ePA/Pruefungen_Messenger_Proxy_fdv.png b/images/generated/TI-M_ePA/Pruefungen_Messenger_Proxy_fdv.png new file mode 100644 index 00000000..3d7006a9 Binary files /dev/null and b/images/generated/TI-M_ePA/Pruefungen_Messenger_Proxy_fdv.png differ diff --git a/images/generated/TI-M_ePA/Pruefungen_Messenger_Proxy_fdv.svg b/images/generated/TI-M_ePA/Pruefungen_Messenger_Proxy_fdv.svg new file mode 100644 index 00000000..de09c5ed --- /dev/null +++ b/images/generated/TI-M_ePA/Pruefungen_Messenger_Proxy_fdv.svg @@ -0,0 +1,3 @@ + + +
Matrix-Client-
Server-API
Matrix-Cli...

TI-Messenger-
Client
TI-Messenger-...


Messenger-Proxy
Messenger-Proxy...

TI-Messenger-
Client
TI-Messenger-...


Messenger-Proxy
Messenger-Proxy...

TI-Messenger-
Client
TI-Messenger-...

  • Prüfung auf Föderation und Versichertenbeteiligung

Prüfung auf Föderation und Versicher...
Client-Server Proxy
Client-Server Proxy
Server-Server Proxy
Server-Server Proxy
Client-Server Proxy
Client-Server Proxy
Server-Server Proxy
Server-Server Proxy

TI-Messenger-
Client
TI-Messenger-...
Matrix-Server-
Server-API
Matrix-Serv...
R
R
R
R
R
R
Matrix-Client-
Server-API
Matrix-Cli...
R
R
R
R

  • Prüfung auf Föderation und Versichertenbeteiligung

Prüfung auf Föderation und Versicher...

  • Prüfung auf Föderation und Versichertenbeteiligung

Prüfung auf Föderation und Versicher...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_ePA/Push_Komponeten_fdv.png b/images/generated/TI-M_ePA/Push_Komponeten_fdv.png new file mode 100644 index 00000000..0e36cbcf Binary files /dev/null and b/images/generated/TI-M_ePA/Push_Komponeten_fdv.png differ diff --git a/images/generated/TI-M_ePA/Push_Komponeten_fdv.svg b/images/generated/TI-M_ePA/Push_Komponeten_fdv.svg new file mode 100644 index 00000000..98ed0a52 --- /dev/null +++ b/images/generated/TI-M_ePA/Push_Komponeten_fdv.svg @@ -0,0 +1,3 @@ + + +
eRezept API
eRe...
TI-Messenger
[Fachdienst]

TI-Messenger...
ePA
[Fachdienst]

ePA...
FDV
[Push Gateway]

FDV...
TI-M API
TI-...
ePA API
ePA...
eRezept
[Fachdienst]

eRezept...
eRezept
[Push-Gateway]

eRezept...
eRezept API
eRe...
eRezept App
[Component: iOS]

eRezept App...
eRezept-Token +
eRezept-Gateway
eRezept-Token +...
Push Anbieter
[z.B. Apple / Google]

Push Anbieter...
Server API
Ser...
Push-Notification
Push-Notification
Push-Notification
Push-Notification
Client API
Cli...
FDV App
[Component: Android]

FDV App...
FDV-Token +
FDV-Gateway
FDV-Token +...
FDV-Token +
FDV-Gateway
FDV-Token +...
FDV-Token +
FDV-Gateway
FDV-Token +...
AppToken Request &
Push-Notifications
AppToken Request &...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_ePA/TI-M_Kontextabgrenzung_fdv.png b/images/generated/TI-M_ePA/TI-M_Kontextabgrenzung_fdv.png new file mode 100644 index 00000000..2e9a1c52 Binary files /dev/null and b/images/generated/TI-M_ePA/TI-M_Kontextabgrenzung_fdv.png differ diff --git a/images/generated/TI-M_ePA/TI-M_Kontextabgrenzung_fdv.svg b/images/generated/TI-M_ePA/TI-M_Kontextabgrenzung_fdv.svg new file mode 100644 index 00000000..5233a4bd --- /dev/null +++ b/images/generated/TI-M_ePA/TI-M_Kontextabgrenzung_fdv.svg @@ -0,0 +1,3 @@ + + +
Kontaktinformationen
Kontaktinformationen
TI-M_Client_ePA
[Software System]

für Versicherte im FDV
TI-M_Client_ePA...
Versicherter
[Person]

Versicherter bei einer Krankenkasse
Versicherter...
TI-M_FD_ePA
[Software System]

für Versicherte
TI-M_FD_ePA...
TI-Messenger-Client
[Software System]

für LE & KTR
TI-Messenger-Client...
TI-Messenger-Fachdienst
[Software System]

für LEI & KTR
TI-Messenger-Fachdienst...
Sektoraler IDP
[Software System]

Identitätsserver für die Versicherten
Sektoraler IDP...
TI-Messenger für Versicherte
[Matrix Messenger]
TI-Messenger für Versicherte...
uses
uses
VZD-FHIR-Directory
[Software System]

zentraler Verzeichnisdienst für LE&LEI
VZD-FHIR-Directory...
Push-Provider
[Software System]

z.B. FCM, APN
Push-Provider...
Komponenten PKI
[Software System]

Signaturprüfung
Komponenten PKI...
Push-Gateway
[Software System]

Push-Gateway
Push-Gateway...
Mitarbeiter
[Person]

Mitarbeiter bei einem Kostenträger
Mitarbeiter...
Org-Admin Client
[Software System]

für TI-M FD ePA
Org-Admin Client...
uses
uses
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/generated/TI-M_ePA/TI-Messenger_OIDC_login_fdv_simplified.png b/images/generated/TI-M_ePA/TI-Messenger_OIDC_login_fdv_simplified.png new file mode 100644 index 00000000..29c9b84a Binary files /dev/null and b/images/generated/TI-M_ePA/TI-Messenger_OIDC_login_fdv_simplified.png differ diff --git a/images/generated/TI-M_ePA/TI-Messenger_OIDC_login_fdv_simplified.svg b/images/generated/TI-M_ePA/TI-Messenger_OIDC_login_fdv_simplified.svg new file mode 100644 index 00000000..b90675cc --- /dev/null +++ b/images/generated/TI-M_ePA/TI-Messenger_OIDC_login_fdv_simplified.svg @@ -0,0 +1 @@ +Endgerät Akteur in derRolle VersicherterAkteur in derRolle VersicherterePA-FdVTI-M ClientePA-FdVTI-M ClientePA-FdVAuthenticator-ModulePA-FdVAuthenticator-ModulMessenger-Service(Relying party für IDP)Messenger-Service(Relying party für IDP)SektoralerIDPSektoralerIDPDie Grafik zeigt exemplarisch dasAuthenticator-Modul als Teil des ePA-FdV.Zulässig ist ebenfalls ein Authenticator-Modulals eigenständige App auf dem Endgerät.1starte AppOIDC Login2GET {homeserver_client_api_url}/login3200 OK (:Login Types)enthalten: ID des sektoralen IDP: {sidp}opt[Auswahl durch Akteur: Registrierungs- statt Login-Funktion]4POST {homeserver_client_api_url}/register(initial_device_display_name, refresh_token)5401 UnauthorizedHomeserver benötigt zusätzlicheAuthentisierungsinformationen6GET{homeserver_client_api_url}/login/sso/redirect/{sidp}Verhaltensänderung, da der sektorale IDP OIDC PAR erfordert7POST {sektoraler_idp_url}/par(response_type, redirect_uri, code_challenge,scope)8201 CREATED (:request_uri)9302 Redirect{sektoraler_idp_url}/login/oauth/authorize(:request_uri)IDP Authentisierung mit nutzerspezifischer Authentifizierung10Authorization Request(request_uri)Authenticator Modul IDP-sek11GET{sektoraler_idp_url}/login/oauth/authorize(request_uri)12Challenge13Consent Page14Approval15ResponseNutzung von Identifikationsmerkmalen,die vom IDP vorgegeben sind16302 Redirect {redirect_uri} (:auth_code,:state)17Redirect(redirect_uri, AUTH_CODE)18GET {redirect_uri} (auth_code, state)19POST {sektoraler_idp_url}/token-endpoint(auth_code, code_verifier)20200 OK (:id_token)opt[kein passender Benutzer-Account zum id_token vorhanden]21Benutzer-Account anlegen[Display Name aus dem id_token stimmt nicht mit den Daten im Benutzer-Account überein.]22Display Name im Benutzer-Accountaktualisieren23200 OK (:loginToken)HTML Consent Page, ZugriffTIM-Web-App auf Matrix Account24POST {homeserver_client_api_url}/login(loginToken, initial_device_display_name)25200 OK (:user_id, :access_token, :home_server,:device_id, :well_known)26Login erfolgreich \ No newline at end of file diff --git a/images/generated/TI-M_ePA/UC_10233_Seq.png b/images/generated/TI-M_ePA/UC_10233_Seq.png new file mode 100644 index 00000000..c453784b Binary files /dev/null and b/images/generated/TI-M_ePA/UC_10233_Seq.png differ diff --git a/images/generated/TI-M_ePA/UC_10233_Seq.svg b/images/generated/TI-M_ePA/UC_10233_Seq.svg new file mode 100644 index 00000000..55eb3c47 --- /dev/null +++ b/images/generated/TI-M_ePA/UC_10233_Seq.svg @@ -0,0 +1 @@ +Messenger-Service Messenger-ProxyMessenger-ProxyMatrix-HomeserverMatrix-Homeserver1prüfe den Sender und den Empfänger des Invite-Eventauf Zugehörigkeit zu einer Versichertendomainbreak[Sender und Empfänger sind beide Versicherte]2HTTP 403 Forbidden3HTTP(S) Forward4Status \ No newline at end of file diff --git a/images/generated/TI-M_ePA/UC_Approvel_List_Seq_fdv.png b/images/generated/TI-M_ePA/UC_Approvel_List_Seq_fdv.png new file mode 100644 index 00000000..56bc9c19 Binary files /dev/null and b/images/generated/TI-M_ePA/UC_Approvel_List_Seq_fdv.png differ diff --git a/images/generated/TI-M_ePA/UC_Approvel_List_Seq_fdv.svg b/images/generated/TI-M_ePA/UC_Approvel_List_Seq_fdv.svg new file mode 100644 index 00000000..e0204a4e --- /dev/null +++ b/images/generated/TI-M_ePA/UC_Approvel_List_Seq_fdv.svg @@ -0,0 +1 @@ +Messenger-Servicedes einladenden Akteurs Messenger-Servicedes eingeladenen Akteurs Push-Gateway des eingeladenden Akteurs Messenger Clientdes eingeladenen Akteurs Messenger-ServiceMessenger-ServiceMessenger-ServiceMessenger-ServicePush-GatewayPush-GatewayMessenger-ClientMessenger-ClientMatrix-Invite-EventBerechtigungskonzept - Stufe 1  break[Matrix-Domain nicht in der Föderation enthalten]Abbruch,Verbindung wirdabgelehntHTTP 403break[Einladender und der Eingeladene sind beide Versicherte]Abbruch,Verbindung wirdabgelehntHTTP 403Berechtigungskonzept - Stufe 2  Invite-Eventverarbeitenopt[Durchsetzen der akteursspezifischen Berechtigungskonfiguration]Prüfung, ob die Einladung erlaubt istbreak[Der Akteur hat "allow all" konfiguriert und der einladende Akteurist auf der BlockedUser-Liste (Direkt oder als Teil einer Domain)]Einladung ist abzulehnenbreak[Der Akteur hat "block all" konfiguriert und der einladende Akteurist nicht auf der AllowedUser-Liste (Direkt oder als Teil einer Domain)]Einladung ist abzulehnenPush NotificationPush NotificationResponseAbfrage neuer EventsBereitstellung neuer Eventsopt[Durchsetzen der akteursspezifischen Berechtigungskonfiguration]Prüfung, ob die Einladung erlaubt istbreak[Der Akteur hat "allow all" konfiguriert und der einladende Akteurist auf der BlockedUser-Liste (Direkt oder als Teil einer Domain)]Einladung ist abzulehnenbreak[Der Akteur hat "block all" konfiguriert und der einladende Akteurist nicht auf der AllowedUser-Liste (Direkt oder als Teil einer Domain)]Einladung ist abzulehnenEinladungsergebnisEinladungsergebnis \ No newline at end of file diff --git a/src/drawio/System_Overview.drawio b/src/drawio/System_Overview.drawio deleted file mode 100644 index d281f39a..00000000 --- a/src/drawio/System_Overview.drawio +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/drawio/TI-Messenger-Fachdienst/Schnittstellen_am_Registrierungs-Dienst.drawio b/src/drawio/TI-Messenger-Fachdienst/Schnittstellen_am_Registrierungs-Dienst.drawio deleted file mode 100644 index 7b2c5875..00000000 --- a/src/drawio/TI-Messenger-Fachdienst/Schnittstellen_am_Registrierungs-Dienst.drawio +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/drawio/TI-Messenger-Fachdienst/System_Overview.drawio b/src/drawio/TI-Messenger-Fachdienst/System_Overview.drawio deleted file mode 100644 index 85ccdc7c..00000000 --- a/src/drawio/TI-Messenger-Fachdienst/System_Overview.drawio +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/images/Other/Test/Anschaltung der Testtreiber Clients.drawio b/src/images/Other/Test/Anschaltung der Testtreiber Clients.drawio new file mode 100644 index 00000000..e403f965 --- /dev/null +++ b/src/images/Other/Test/Anschaltung der Testtreiber Clients.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/images/Other/Test/HerstellerInstanz.drawio b/src/images/Other/Test/HerstellerInstanz.drawio new file mode 100644 index 00000000..c28cdb94 --- /dev/null +++ b/src/images/Other/Test/HerstellerInstanz.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/images/Other/Test/IOP Pools.drawio b/src/images/Other/Test/IOP Pools.drawio new file mode 100644 index 00000000..b43ea1de --- /dev/null +++ b/src/images/Other/Test/IOP Pools.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/images/Other/Test/Testumgebung Basis.drawio b/src/images/Other/Test/Testumgebung Basis.drawio new file mode 100644 index 00000000..5601e13c --- /dev/null +++ b/src/images/Other/Test/Testumgebung Basis.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/images/Other/Test/Testumgebung ePA.drawio b/src/images/Other/Test/Testumgebung ePA.drawio new file mode 100644 index 00000000..fe7e6130 --- /dev/null +++ b/src/images/Other/Test/Testumgebung ePA.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/images/Other/Test/Zulassung TIM-Basis.drawio b/src/images/Other/Test/Zulassung TIM-Basis.drawio new file mode 100644 index 00000000..d3baa294 --- /dev/null +++ b/src/images/Other/Test/Zulassung TIM-Basis.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/images/Other/Test/Zulassung TIM-ePA.drawio b/src/images/Other/Test/Zulassung TIM-ePA.drawio new file mode 100644 index 00000000..02d6a602 --- /dev/null +++ b/src/images/Other/Test/Zulassung TIM-ePA.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/images/Other/Test/nach_der_Zulassung.drawio b/src/images/Other/Test/nach_der_Zulassung.drawio new file mode 100644 index 00000000..ca191b62 --- /dev/null +++ b/src/images/Other/Test/nach_der_Zulassung.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/images/Other/Test/testtreiber-externes-Modul.drawio b/src/images/Other/Test/testtreiber-externes-Modul.drawio new file mode 100644 index 00000000..9028c435 --- /dev/null +++ b/src/images/Other/Test/testtreiber-externes-Modul.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/Other/Test/testtreiber-internes-Modul.drawio b/src/images/Other/Test/testtreiber-internes-Modul.drawio new file mode 100644 index 00000000..ba084033 --- /dev/null +++ b/src/images/Other/Test/testtreiber-internes-Modul.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/Other/Test/testumgebung-Gematik.drawio b/src/images/Other/Test/testumgebung-Gematik.drawio new file mode 100644 index 00000000..bf1a70ac --- /dev/null +++ b/src/images/Other/Test/testumgebung-Gematik.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/Other/Test/testumgebung-Hersteller.drawio b/src/images/Other/Test/testumgebung-Hersteller.drawio new file mode 100644 index 00000000..c34613e0 --- /dev/null +++ b/src/images/Other/Test/testumgebung-Hersteller.drawio @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Directory_search_Seq.puml b/src/images/Other/UC_Directory_search_Seq.puml similarity index 83% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Directory_search_Seq.puml rename to src/images/Other/UC_Directory_search_Seq.puml index 029ddd97..a9a7cf2b 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Directory_search_Seq.puml +++ b/src/images/Other/UC_Directory_search_Seq.puml @@ -1,10 +1,3 @@ -/' -# TI-Messenger 1.1 -# TI-Messenger-Dienst -# Sequence Diagram -# Name: Einträge im VZD-FHIR-Directory suchen -'/ - @startuml skinparam sequenceMessageAlign direction skinparam minClassWidth 200 @@ -33,7 +26,7 @@ ActorFontSize 20 } autonumber -actor U as "Akteur in der Rolle\nUser / User-HBA" +actor U as "Akteur in der Rolle\nUser" participant cl as "TI-Messenger-Client" participant mp as "Messenger Proxy" participant hs as "Matrix-Homeserver" @@ -73,9 +66,9 @@ alt#LightGrey #AliceBlue kein gültiges search-accesstoken vorhandenau: Prüfe ob \nMatrix Server Name in \nder Föderation enthalten ist ||| -opt#LightGrey #MistyRose Abbruch +break#LightGrey #MistyRose Matrix Server Name nicht in der Föderation enthalten ||| - au-->cl: Matrix Server Name nicht in der Föderation enthalten + au-->cl: Fehlermeldung end ||| @@ -102,16 +95,19 @@ end activate fp fp->fp: prüfe search-accesstoken ||| - opt#LightGrey #MistyRose Abbruch - fp-->cl: kein gültiges search-accesstoken + break#LightGrey #MistyRose kein gültiges search-accesstoken + fp-->cl: HTTP 401 Fehlermeldung ||| end ||| alt#LightGrey #AliceBlue HealthcareService-Einträge werden gesucht ||| - fp->fd: POST /search/HealthcareService/? \nFinde Datensatz für TelematikID + fp->fd: POST /search/HealthcareService/? activate fd + note left + Finde Datensatz für TelematikID + end note fd-->fp: Suchergebnis (FHIR Bundle) deactivate fd ||| @@ -120,8 +116,11 @@ end ||| alt#LightGrey #AliceBlue PractitionerRole-Einträge werden gesucht ||| - fp->fd: POST /search/PractitionerRole/? \n Finde Datensatz für MXID + fp->fd: POST /search/PractitionerRole/? activate fd + note left + Finde Datensatz für MXID + end note fd-->fp: Suchergebnis (FHIR Bundle) deactivate fd ||| diff --git a/src/images/Other/chatbot.drawio b/src/images/Other/chatbot.drawio new file mode 100644 index 00000000..4957c9ce --- /dev/null +++ b/src/images/Other/chatbot.drawio @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/drawio/TI-Messenger-Fachdienst/funktionalitaet_proxy.drawio b/src/images/Other/funktionalitaet_proxy.drawio similarity index 100% rename from src/drawio/TI-Messenger-Fachdienst/funktionalitaet_proxy.drawio rename to src/images/Other/funktionalitaet_proxy.drawio diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/idp.puml b/src/images/Other/idp.puml similarity index 100% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/idp.puml rename to src/images/Other/idp.puml diff --git a/src/images/TI-M_Basis/API-Messenger-Service.drawio b/src/images/TI-M_Basis/API-Messenger-Service.drawio new file mode 100644 index 00000000..cf0be6c7 --- /dev/null +++ b/src/images/TI-M_Basis/API-Messenger-Service.drawio @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/TI-M_Basis/Berechtigung_UI.drawio b/src/images/TI-M_Basis/Berechtigung_UI.drawio new file mode 100644 index 00000000..4703fbf7 --- /dev/null +++ b/src/images/TI-M_Basis/Berechtigung_UI.drawio @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/TI-M_Basis/Berechtigungen_setzen.puml b/src/images/TI-M_Basis/Berechtigungen_setzen.puml new file mode 100644 index 00000000..a4467911 --- /dev/null +++ b/src/images/TI-M_Basis/Berechtigungen_setzen.puml @@ -0,0 +1,30 @@ +@startuml +title Setzen von Berechtigungen im Client +skinparam ConditionEndStyle hline +start +:Client starten; +:Berechtigungen einrichten; + +if ("Allow all" or "Block all") then (Allow all) + if(Beschränkungen einrichten) then (Ja) + if(BlockedUser-Liste bearbeiten) then (Hinzufügen) + :User/Server hinzufügen; + else (Entfernen) + :User/Server entfernen; + endif + else(Nein) + endif +else (Block all) + if(Erlaubnisse einrichten) then (Ja) + if(AllowedUser-Liste bearbeiten) then (Hinzufügen) + :User/Server hinzufügen; + else (Entfernen) + :User/Server entfernen; + endif + else(Nein) + endif +endif +:Konfiguration auf dem Server sichern; +stop + +@enduml diff --git a/src/images/TI-M_Basis/Pruefungen_Messenger_Proxy.drawio b/src/images/TI-M_Basis/Pruefungen_Messenger_Proxy.drawio new file mode 100644 index 00000000..beffb591 --- /dev/null +++ b/src/images/TI-M_Basis/Pruefungen_Messenger_Proxy.drawio @@ -0,0 +1,461 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/TI-M_Basis/Schnittstellen_am_Registrierungs-Dienst.drawio b/src/images/TI-M_Basis/Schnittstellen_am_Registrierungs-Dienst.drawio new file mode 100644 index 00000000..034ed362 --- /dev/null +++ b/src/images/TI-M_Basis/Schnittstellen_am_Registrierungs-Dienst.drawio @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/TI-M_Basis/System_Overview.drawio b/src/images/TI-M_Basis/System_Overview.drawio new file mode 100644 index 00000000..4a391644 --- /dev/null +++ b/src/images/TI-M_Basis/System_Overview.drawio @@ -0,0 +1,980 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/TI-M_Basis/System_Overview_Client.drawio b/src/images/TI-M_Basis/System_Overview_Client.drawio new file mode 100644 index 00000000..3364681e --- /dev/null +++ b/src/images/TI-M_Basis/System_Overview_Client.drawio @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/TI-M_Basis/System_Overview_Fachdienst.drawio b/src/images/TI-M_Basis/System_Overview_Fachdienst.drawio new file mode 100644 index 00000000..f4872a2e --- /dev/null +++ b/src/images/TI-M_Basis/System_Overview_Fachdienst.drawio @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10057_Seq.puml b/src/images/TI-M_Basis/UC_10057_Seq.puml similarity index 52% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10057_Seq.puml rename to src/images/TI-M_Basis/UC_10057_Seq.puml index 5182bc5a..06da5d15 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10057_Seq.puml +++ b/src/images/TI-M_Basis/UC_10057_Seq.puml @@ -12,6 +12,7 @@ skinparam minClassWidth 200 skinparam BoxPadding 1 skinparam sequenceReferenceHeaderBackgroundColor palegreen scale max 2048 width +autonumber skinparam sequence { ArrowColor black @@ -22,47 +23,30 @@ LifeLineBackgroundColor Gainsboro ParticipantBorderColor Motivation ParticipantBackgroundColor Motivation -ParticipantFontName Impact ParticipantFontSize 20 ParticipantFontColor black ParticipantBorderColor Black ParticipantBackgroundColor MOTIVATION + + ActorBackgroundColor Gainsboro ActorFontColor black ActorFontSize 20 ActorFontName Aapex } - actor U as "Akteur in der Rolle\nUser / User-HBA" + actor U as "Akteur in der\nRolle User" participant C as "TI-Messenger-Client" box Messenger-Service #WhiteSmoke participant MP as "Messenger Proxy" participant MH as "Matrix-Homeserver" end box - box VZD-FHIR-Directory #WhiteSmoke - participant Auth as "Auth-Service" - end box ||| U->C: Eingabe Messenger-Service Activate C C->MP: GET /_matrix/client/login - Activate MP - MP->MP: TLS-Terminierung - ||| - MP->MP: prüfe client_id - -||| -alt#LightGrey #AliceBlue TI-Messenger Client wird vom Anbieter nicht unterstützt (kein gültiges client_secret) -||| - - MP-->C: HTTP 401 Unauthroized - C-->U: Anmeldung \nnicht erfolgreich - - ||| - else TI-Messenger Client wird vom Anbieter unterstützt (gültiges client_secret) - ||| - + Activate MP MP->MH: HTTP(S) Forward Activate MH @@ -97,50 +81,15 @@ note over U, MH: Die Authentifizierungsverfahren werden für jeden \nDie Überprüfung ist abhängig vom \ngewählten Authentifizierungsverfahren ||| - MH->MH: erstelle \nMatrix-ACCESS_TOKEN, \ndevice_id, \nMXID - MH-->MP: Matrix-ACCESS_TOKEN, \ndevice_ID, MXID - Deactivate MH - MP-->C: HTTP(S) Forward - Deactivate MP - ||| - C->C: Speichere \nMatrix-ACCESS_TOKEN - - ||| - C->MP: POST /_matrix/client\n/user/{userId}/\nopenid/request_token - Activate MP - MP->MH: HTTP(S) Forward - Activate MH - MH->MH: Erstelle \nMatrix-OpenID-Token - MH-->MP: Matrix-OpenID-Token + MH->MH: erstelle \nMatrix-ACCESS_TOKEN, \nMatrix-REFRESH_TOKEN + MH-->MP: :Matrix-ACCESS_TOKEN, \n:Matrix-REFRESH_TOKEN Deactivate MH MP-->C: HTTP(S) Forward Deactivate MP - ||| - C->Auth: GET /tim-authenticate (Matrix-OpenID-Token) - Activate Auth - Auth->Auth: Prüfung, ob \nMatrix-Domain \nin Föderation \nenthalten ist - - ||| - alt#LightGrey #LightBlue nicht valider Messenger-Service, da Matrix-Homeserver nicht in der Föderations enthalten ist - ||| - - Auth-->C: HTTP 401 \nUnauthorized - C->C: Abmelden Session \nMatrix-ACCESS_TOKEN \nlöschen - C-->U: Anmeldung \nnicht erfolgreich - - ||| - else valider Messenger-Service, da Matrix-Homeserver in der Föderation enthalten ist - ||| - Auth-->C: HTTP 200 - Deactivate Auth - C-->U: Anmeldung \nerfolgreich - Deactivate C - ||| - - end - ||| -end -||| + C->C: Speichere \nMatrix-ACCESS_TOKEN, \nMatrix-REFRESH_TOKEN + C-->U: Anmeldung \nerfolgreich + Deactivate C + ||| @enduml diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10060_Seq.puml b/src/images/TI-M_Basis/UC_10060_Seq.puml similarity index 100% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10060_Seq.puml rename to src/images/TI-M_Basis/UC_10060_Seq.puml diff --git a/src/images/TI-M_Basis/UC_10061_Seq.puml b/src/images/TI-M_Basis/UC_10061_Seq.puml new file mode 100644 index 00000000..f7ae56e0 --- /dev/null +++ b/src/images/TI-M_Basis/UC_10061_Seq.puml @@ -0,0 +1,151 @@ +/' +# TI-Messenger-Dienst +# UC - 10061 +# Name: Einladung von Akteuren außerhalb einer Organisation +'/ + +@startuml +skinparam sequenceMessageAlign direction +skinparam minClassWidth 200 +skinparam BoxPadding 15 +skinparam sequenceReferenceHeaderBackgroundColor palegreen +skinparam sequenceReferenceBackgroundColor Beige + +scale max 2048 width + +skinparam sequence { +ArrowColor black +ArrowFontSize 17 +ActorBorderColor black +LifeLineBorderColor black +LifeLineBackgroundColor Gainsboro + +ParticipantBorderColor Motivation +ParticipantBackgroundColor Motivation +ParticipantFontSize 20 +ParticipantFontColor black +ParticipantBorderColor Black +ParticipantBackgroundColor MOTIVATION + +ActorBackgroundColor Gainsboro +ActorFontColor black +ActorFontSize 20 +} + actor U1 as "\nAkteur A in\nder Rolle User" #AliceBlue + participant C1 as "TI-Messenger-\nClient" #AliceBlue + box Messenger-Service A #WhiteSmoke + participant MP1 as "Messenger-\nProxy" + participant MH1 as "Matrix-\nHomeserver" + end box + box Messenger-Service B #WhiteSmoke + participant MP2 as "Messenger-\nProxy" + participant MH2 as "Matrix-\nHomeserver" + end box + participant PG2 as "Push-\nGateway" + participant C2 as "TI-Messenger-\nClient" #TECHNOLOGY + actor U2 as "\nAkteur B in\nder Rolle User" #TECHNOLOGY + +||| +note over U1, MH1: \nDer Akteur A ist erfolgreich beim Messenger Service A angemeldet\n +note over U2, MP2: \nDer Akteur B ist erfolgreich beim Messenger Service B angemeldet\n +||| + + opt#LightGrey #AliceBlue Suche über VZD-FHIR-Directory + ||| + ref over U1, MH1 : Einträge im VZD-FHIR-Directory suchen\n + ||| + end + ||| + note over U1, MH1: \nEin Chatraum wurde bereits durch den Akteur A eingerichtet.\n + + autonumber + + ||| + C1->MP1: POST /_matrix/client/v3/rooms/{roomId}/invite + activate MP1 + ||| + ref over MP1, MP1: Berechtigungsprüfung\n + ||| + break#LightGrey #MistyRose Abbruch + ||| + MP1-->C1: HTTP 403 Forbidden + C1-->U1: Einladung nicht \nerfolgreich + ||| + end + ||| + + MP1->MH1: HTTP(S) Forward + activate MH1 + MH1->MH1: Invite verarbeiten + MH1->MP1: POST /_matrix/federation/v1\n/invite/{roomId}/{eventId} + + ||| + ref over MP1, MP1: Berechtigungsprüfung\n + ||| + MP1->MP2: HTTP(S) Forward + ||| + activate MP2 + ref over MP2, MP2: Berechtigungsprüfung\n + ||| + + break#LightGrey #MistyRose Abbruch + ||| + MP2-->MP1: HTTP 403 Forbidden + MP1-->C1: HTTP(S) forward + C1-->U1: Einladung nicht \nerfolgreich + ||| + end + ||| + MP2->MH2: HTTP(S) Forward + activate MH2 + MH2->MH2: Invite verarbeiten + ||| + opt#LightGrey #AliceBlue Pushbenachrichtigung + ||| + MH2->PG2: POST /_matrix/push/notify + activate PG2 + PG2->C2: Notification + PG2-->MH2: Status + deactivate PG2 + ||| + end + ||| + MH2-->MP2: Status + deactivate MH2 + MP2-->MP1: HTTP(S) Forward + deactivate MP2 + MP1-->MH1: HTTP(S) Forward + MH1-->MP1: Status + deactivate MH1 + MP1-->C1: Nutzer in den\nRaum eingeladen + deactivate MP1 + deactivate C1 + + C2->MP2: GET /_matrix/client/v3/sync + activate C2 #TECHNOLOGY + activate MP2 + MP2->MH2: HTTP(S) Forward + activate MH2 + MH2-->MP2: Status + deactivate MH2 + MP2-->C2: HTTP(S) Forward + deactivate MP2 + + C2->U2: Einladung anzeigen + U2-->C2: Einladung bestätigen + + C2->MP2: POST /_matrix/client/v3/join/{roomId} + activate MP2 + MP2-->MH2: HTTP(S) Forward + activate MH2 + MH2-->MH2: Invite auslösen + MH2-->MP2: Status + deactivate MH2 + MP2-->C2: Status + deactivate MP2 + + C2-->U2: Nutzer ist dem \nRaum beigetreten + deactivate C2 + ||| +||| +@enduml diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10062_Seq.puml b/src/images/TI-M_Basis/UC_10062_Seq.puml similarity index 60% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10062_Seq.puml rename to src/images/TI-M_Basis/UC_10062_Seq.puml index 35ae61b1..cfe51eec 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10062_Seq.puml +++ b/src/images/TI-M_Basis/UC_10062_Seq.puml @@ -1,8 +1,6 @@ /' -# TI-Messenger 1.1 # TI-Messenger-Dienst # UC - 10062 -# Sequence Diagram # Name: Austausch von Events zwischen Akteuren außerhalb einer Organisation '/ @@ -11,6 +9,7 @@ skinparam sequenceMessageAlign direction skinparam minClassWidth 200 skinparam BoxPadding 15 skinparam sequenceReferenceHeaderBackgroundColor palegreen +skinparam sequenceReferenceBackgroundColor Beige scale max 2048 width skinparam sequence { @@ -22,7 +21,6 @@ LifeLineBackgroundColor Gainsboro ParticipantBorderColor Motivation ParticipantBackgroundColor Motivation -ParticipantFontName Impact ParticipantFontSize 20 ParticipantFontColor black ParticipantBorderColor Black @@ -31,9 +29,11 @@ ParticipantBackgroundColor MOTIVATION ActorBackgroundColor Gainsboro ActorFontColor black ActorFontSize 20 -ActorFontName Aapex } - actor U1 as "\nAkteur - A in der Rolle\nUser / User-HBA\n" + +autonumber + + actor U1 as "\nAkteur A in\nder Rolle User" #AliceBlue participant C1 as "TI-Messenger-\nClient" #AliceBlue box Messenger-Service A #WhiteSmoke participant MP1 as "Messenger-\nProxy" @@ -42,13 +42,14 @@ ActorFontName Aapex box Messenger-Service B #WhiteSmoke participant MP2 as "Messenger-\nProxy" participant MH2 as "Matrix-\nHomeserver" - participant PG2 as "Push-\nGateway" end box + participant PG2 as "Push-\nGateway" participant C2 as "TI-Messenger-\nClient" #TECHNOLOGY - actor U2 as "\nAkteur - B in der Rolle\nUser / User-HBA\n" + actor U2 as "\nAkteur B in\nder Rolle User" #TECHNOLOGY ||| -note over U1, U2: \nDie Akteure sind auf dem selben Messenger-Service angemeldet und im Besitz eines zugelassenen TI-Messenger-Clients.\nEbenfalls sind beide Akteure einem gemeinsamen Raum beigetreten.\n +note over U1, MH1: \nDer Akteur A ist erfolgreich beim Messenger Service A angemeldet\n +note over U2, MP2: \nDer Akteur B ist erfolgreich beim Messenger Service B angemeldet\n ||| U1->C1: Akteur A löst\nMatrix-Event aus @@ -59,27 +60,29 @@ note over U1, U2: \nDie Akteure sind auf dem selben Messenger-Service a activate MH1 MH1->MH1: Event \nverarbeiten ||| + MH1-->MP1: Status + MP1-->C1: HTTP(S) Forward + deactivate MP1 + C1-->U1: Status + deactivate C1 + MH1->MP1: Matrix-Request - deactivate MH1 + activate MP1 ||| - ref over MP1, MP1: **AF_10064** - \tFöderationszugehörigkeit eines \n \tMessenger-Service prüfen\n - note left: Stufe 1 - Prüfung gemäß \nServer-Server Kommunikation + ref over MP1, MP1: Berechtigungsprüfung\n ||| MP1-[#red]>MP2: HTTP(S) Forward activate MP2 ||| - ref over MP2, MP2: **AF_10064** - \tFöderationszugehörigkeit eines \n \tMessenger-Service prüfen\n - note right: Stufe 1 - Prüfung gemäß \nServer-Server Kommunikation + ref over MP2, MP2: Berechtigungsprüfung\n ||| - MP2-[#red]>MH2: HTTP(S) Foward + MP2-[#red]>MH2: HTTP(S) Forward ||| activate MH2 - MH2->MH2: Event \nverarbeiten - ||| - - opt#LightGrey #AliceBlue Pushbenachrichtigung + MH2->MH2: Event\nverarbeiten ||| + opt#LightGrey #AliceBlue Pushbenachrichtigung MH2->PG2: POST /_matrix/push/notify activate PG2 PG2->C2: Notification @@ -89,24 +92,26 @@ note over U1, U2: \nDie Akteure sind auf dem selben Messenger-Service a end ||| - MH2->MP2: Matrix-Request \nan Client-B) - MP2->C2: HTTP(S) Forward - activate C2 #TECHNOLOGY - C2->C2: Event verarbeiten + MH2-->MP2: Status + deactivate MH2 + MP2-->MP1: HTTP(S) Forward + deactivate MP2 + MP1-->MH1: Status + deactivate MP1 + deactivate MH1 - C2-->MP2: Status - ||| - MP2-->MH2: HTTP(S) Forward \n(Status Client-B) + C2->MP2: GET /_matrix/client/v3/sync + activate C2 #TECHNOLOGY + activate MP2 + MP2->MH2: HTTP(S) Forward + activate MH2 MH2--[#red]>MP2: Status (Matrix-Request) deactivate MH2 MP2-->C2: HTTP(S) Forward + deactivate MP2 + + C2->C2: Event\nverarbeiten C2->U2: Status deactivate C2 - MP2-->MP1: HTTP(S) Forward - deactivate MP2 - MP1-->C1: Status - deactivate MP1 - deactivate C1 ||| -||| @enduml diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10063_Seq.puml b/src/images/TI-M_Basis/UC_10063_Seq.puml similarity index 71% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10063_Seq.puml rename to src/images/TI-M_Basis/UC_10063_Seq.puml index 159a8e06..995f0339 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10063_Seq.puml +++ b/src/images/TI-M_Basis/UC_10063_Seq.puml @@ -1,12 +1,9 @@ +@startuml /' -# TI-Messenger 1.1 -# TI-Messenger-Dienst # UC - 10063 -# Sequence Diagram # Name: Austausch von Events zwischen Akteuren innerhalb einer Organisation '/ -@startuml skinparam sequenceMessageAlign direction skinparam minClassWidth 200 skinparam BoxPadding 1 @@ -22,7 +19,6 @@ LifeLineBackgroundColor Gainsboro ParticipantBorderColor Motivation ParticipantBackgroundColor Motivation -ParticipantFontName Impact ParticipantFontSize 20 ParticipantFontColor black ParticipantBorderColor Black @@ -31,59 +27,63 @@ ParticipantBackgroundColor MOTIVATION ActorBackgroundColor Gainsboro ActorFontColor black ActorFontSize 20 -ActorFontName Aapex } - actor U1 as "Akteur - A in der Rolle\nUser / User-HBA" + actor U1 as "Akteur A in der\nRolle User" participant C1 as "TI-Messenger-\nClient A" #AliceBlue box Messenger-Service #WhiteSmoke participant MP as "Messenger-\nProxy" participant MH as "Matrix-Homeserver \n(inklusive Nutzerverzeichnis)" - participant PG as "Push-Gateway" end box + participant PG as "Push-\nGateway" participant C2 as "TI-Messenger-\nClient B" #TECHNOLOGY - actor U2 as "Akteur - B in der Rolle\nUser / User-HBA" - + actor U2 as "Akteur B in der\nRolle User" + +autonumber + ||| note over U1, U2: \nDie Akteure sind auf dem selben Messenger-Service angemeldet und im Besitz eines zugelassenen TI-Messenger-Clients.\nEbenfalls sind beide Akteure einem gemeinsamen Raum beigetreten.\n ||| - U1->C1: Akteur A löst \nMatrix-Event aus activate C1 #AliceBlue - C1-[#red]>MP: Matrix-Request + C1->MP: Matrix-Request activate MP - MP-[#red]>MH: HTTP(S) Foward + MP->MH: HTTP(S) Forward activate MH - MH->MH: Event \nverarbeiten + MH->MH: Event verarbeiten + + MH-->MP: Matrix-Request Status + MP-->C1: HTTP(S) Forward + deactivate MP + C1-->U1: Status + deactivate C1 + ||| - opt#LightGrey #AliceBlue Pushbenachrichtigung + opt#LightGrey #AliceBlue Push-Benachrichtigung ||| MH->PG: POST /_matrix/push/notify activate PG PG->C2: Notification PG-->MH: Status deactivate PG + deactivate MH ||| end ||| - MH->MP: Matrix-Request \nan Client-B - MP->C2: HTTP(S) Forward + C2->MP: GET /_matrix/client/v3/sync + activate MP activate C2 #TECHNOLOGY - C2->C2: Event \nverarbeiten - C2-->MP: Status - MP-->MH: HTTP(S) Forward \n(Status Client-B) - ||| - MH-[#red]->MP: Status (Matrix-Request) + MP->MH: HTTP(S) Forward + activate MH + MH-->MP: Status deactivate MH + MP-->C2: HTTP(S) Forward + deactivate MP + C2->C2: Event\nverarbeiten ||| - MP-->C2: HTTP(S) Forward C2-->U2: Status deactivate C2 - MP-->C1: HTTP(S) Forward - deactivate MP - C1-->U1: Status - deactivate C1 ||| -@enduml +@enduml \ No newline at end of file diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10064_Seq.puml b/src/images/TI-M_Basis/UC_10064_Seq.puml similarity index 90% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10064_Seq.puml rename to src/images/TI-M_Basis/UC_10064_Seq.puml index e6ffe320..66030546 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10064_Seq.puml +++ b/src/images/TI-M_Basis/UC_10064_Seq.puml @@ -22,16 +22,11 @@ LifeLineBackgroundColor Gainsboro ParticipantBorderColor Motivation ParticipantBackgroundColor Motivation -'ParticipantFontName Impact ParticipantFontSize 20 ParticipantFontColor black ParticipantBorderColor Black ParticipantBackgroundColor MOTIVATION -ActorBackgroundColor Gainsboro -ActorFontColor black -ActorFontSize 20 -'ActorFontName Aapex } autonumber @@ -60,7 +55,7 @@ alt#LightGrey Matrix-Domain ist in der Föderationsliste enthalten ODE else Matrix-Domain ist nicht in der Föderationsliste enthalten ||| - ref over MP, VZD: **Anhang B** - Aktualisierung der Föderationsliste\n + ref over MP, VZD: Aktualisierung der Föderationsliste\n ||| MP->MP: prüfe ob Matrix-Domain \nder MXID \nin der **aktualisierten** \nFöderationsliste vorhanden ist ||| diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10103_Seq.puml b/src/images/TI-M_Basis/UC_10103_Seq.puml similarity index 98% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10103_Seq.puml rename to src/images/TI-M_Basis/UC_10103_Seq.puml index fd39c586..af7c997d 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10103_Seq.puml +++ b/src/images/TI-M_Basis/UC_10103_Seq.puml @@ -38,7 +38,7 @@ actor oa as "Akteur in der Rolle\nOrg-Admin" participant wb as "Frontend des \nRegistrierungs-Dienstes" participant au as "Authenticator" end box -participant ko as "Konnektor" +participant ko as "Konnektor /\n Basis-Consumer" participant rd as "Registrierungs-Dienst" participant ip as "zentraler \nIDP-Dienst" diff --git a/src/images/TI-M_Basis/UC_10235_Seq.puml b/src/images/TI-M_Basis/UC_10235_Seq.puml new file mode 100644 index 00000000..8581c983 --- /dev/null +++ b/src/images/TI-M_Basis/UC_10235_Seq.puml @@ -0,0 +1,104 @@ +@startuml +skinparam sequenceMessageAlign direction +skinparam minClassWidth 200 +skinparam BoxPadding 1 +skinparam sequenceReferenceHeaderBackgroundColor palegreen +skinparam sequenceReferenceBackgroundColor Beige +scale max 2048 width + +skinparam sequence { +ArrowColor black +ArrowFontSize 17 +ActorBorderColor black +LifeLineBorderColor black +LifeLineBackgroundColor Gainsboro + +ParticipantBorderColor Motivation +ParticipantBackgroundColor Motivation +ParticipantFontSize 20 +ParticipantFontColor black +ParticipantBorderColor Black +ParticipantBackgroundColor MOTIVATION + +ActorBackgroundColor Gainsboro +ActorFontColor black +ActorFontSize 20 +} + +autonumber + +actor U as "Akteur in der\nRolle User" +participant cl as "TI-Messenger Client" +participant ms as "Messenger Service" +box VZD-FHIR-Directory #WhiteSmoke + participant fp as "FHIR-Proxy" + participant au as "Auth-Service" + participant fd as "FHIR-Directory" +end box + +||| +note over U, ms: \nDer Akteur ist erfolgreich beim Messenger-Service angemeldet\n +||| +activate cl +U->cl:Suchparameter für \nFHIR-Ressourcen \n eingeben +||| +group#LightGrey Prüfung/Erhalt search-accesstoken + ||| + ref over U, cl, ms, fp, au, fd + gemSpec_VZD_FHIR_Directory#AF_10036-01 + (Der Akteur entspricht dem "Nutzer" im referenzierten Anwendungsfall) + ||| + end ref + ||| +end group + +alt#LightGrey gültiges search-accesstoken erhalten +||| + alt#LightGrey #AliceBlue HealthcareService-Einträge werden gesucht + ||| + cl->fp: GET {Search-Schnittstelle}/HealthcareService/\n?organization.active=true&...(search-accesstoken) + note left + Finde Datensatz für + TelematikID + end note + activate fp + fp->fp: prüfe search-accesstoken + ||| + fp->fd: GET {Search-Schnittstelle}/HealthcareService/\n?organization.active=true&... + activate fd + fd-->fp: HTTP 200 (:Suchergebnis FHIR-Bundle) + deactivate fd + fp-->cl: HTTP 200 (:Suchergebnis FHIR-Bundle) + deactivate fp + cl-->U: Suchergebnis + ||| + else PractitionerRole-Einträge werden gesucht + ||| + cl->fp: GET {Search-Schnittstelle}/PractitionerRole/\n?practitioner.active=true&...(search-accesstoken) + note left + Finde Datensatz für MXID + end note + activate fp + fp->fp: prüfe search-accesstoken + ||| + fp->fd: GET {Search-Schnittstelle}/PractitionerRole/\n?practitioner.active=true&... + activate fd + fd-->fp: HTTP 200 (:Suchergebnis FHIR-Bundle) + deactivate fd + fp-->cl: HTTP 200 (:Suchergebnis FHIR-Bundle) + deactivate fp + cl-->U: Suchergebnis + ||| + end +||| +else kein gültiges search-accesstoken + break#LightGrey #MistyRose + cl->fp++: GET {Search-Schnittstelle} (search-accesstoken) + fp-->cl--: HTTP 401 + cl-->U: Fehlermeldung + ||| + end +||| +end + +@enduml diff --git a/src/images/TI-M_Basis/UC_Approvel_List_Seq.puml b/src/images/TI-M_Basis/UC_Approvel_List_Seq.puml new file mode 100644 index 00000000..0e5caf23 --- /dev/null +++ b/src/images/TI-M_Basis/UC_Approvel_List_Seq.puml @@ -0,0 +1,103 @@ +/' +# TI-Messenger für Versicherte +# TI-Messenger-Dienst +# Sequence Diagram +# Name: Stufen der Berechtigungsprüfung ePA +'/ + +@startuml +skinparam sequenceMessageAlign direction +skinparam minClassWidth 200 +skinparam BoxPadding 15 +skinparam sequenceReferenceHeaderBackgroundColor palegreen +scale max 2048 width + +skinparam sequence { + ArrowColor black + ArrowFontSize 17 + ActorBorderColor black + LifeLineBorderColor black + LifeLineBackgroundColor Gainsboro + + ParticipantBorderColor Motivation + ParticipantBackgroundColor Motivation + + ParticipantFontSize 20 + ParticipantFontColor black + ParticipantBorderColor Black + ParticipantBackgroundColor MOTIVATION + + ActorBackgroundColor Gainsboro + ActorFontColor black + ActorFontSize 20 + ActorFontName Aapex +} +box Messenger-Service\ndes einladenden Akteurs\n #WhiteSmoke +participant MS as "Messenger-Service" +end box +box Messenger-Service\ndes eingeladenen Akteurs\n #WhiteSmoke +participant MS2 as "Messenger-Service" +end box +box Push-Gateway des eingeladenden Akteurs\n #WhiteSmoke +participant PG as "Push-\nGateway" +end box +box Messenger Client\ndes eingeladenen Akteurs\n #WhiteSmoke +participant MC2 as "Messenger-Client" +end box +MS->MS2:Matrix-Invite-Event +activate MS2 +activate MS +||| +== Berechtigungskonzept - Stufe 1 == +||| +break #MistyRose Matrix-Domain nicht in der Föderation enthalten + MS2->MS2:Abbruch, \nVerbindung wird \nabgelehnt + MS2-->MS: HTTP 403 + ||| +end + +== Berechtigungskonzept - Stufe 2 == +MS2-->MS2: Invite-Event \nverarbeiten +opt #SkyBlue Durchsetzen der akteursspezifischen Berechtigungskonfiguration +MS2->MS2: Prüfung, ob die Einladung erlaubt ist +break #MistyRose Der Akteur hat "allow all" konfiguriert und der einladende Akteur\n ist auf der BlockedUser-Liste (Direkt oder als Teil einer Domain) + ||| + MS2->MS2:Einladung ist abzulehnen + ||| + end + + break #MistyRose Der Akteur hat "block all" konfiguriert und der einladende Akteur\n ist nicht auf der AllowedUser-Liste (Direkt oder als Teil einer Domain) + ||| + MS2->MS2:Einladung ist abzulehnen + ||| + end +end + + MS2->PG++: Push Notification + PG->MC2: Push Notification + activate MC2 + PG-->MS2: Response + deactivate PG + + MC2->MS2: Abfrage neuer Events + MS2-->MC2: Bereitstellung neuer Events + + opt #SkyBlue Durchsetzen der akteursspezifischen Berechtigungskonfiguration + MC2->MC2: Prüfung, ob die Einladung erlaubt ist + break #MistyRose Der Akteur hat "allow all" konfiguriert und der einladende Akteur\n ist auf der BlockedUser-Liste (Direkt oder als Teil einer Domain) + ||| + MC2->MC2:Einladung ist abzulehnen + ||| + end + + break #MistyRose Der Akteur hat "block all" konfiguriert und der einladende Akteur\n ist nicht auf der AllowedUser-Liste (Direkt oder als Teil einer Domain) + ||| + MC2->MC2:Einladung ist abzulehnen + ||| + end +end +||| +MC2-->MS2: Einladungsergebnis +MS2-->MS: Einladungsergebnis +||| +@enduml \ No newline at end of file diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_Seq.puml b/src/images/TI-M_Basis/UC_Update_Federationlist_Seq.puml similarity index 95% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_Seq.puml rename to src/images/TI-M_Basis/UC_Update_Federationlist_Seq.puml index b2c503d1..c0f1c7c8 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_Seq.puml +++ b/src/images/TI-M_Basis/UC_Update_Federationlist_Seq.puml @@ -16,22 +16,16 @@ scale max 2048 width skinparam sequence { ArrowColor black ArrowFontSize 17 -ActorBorderColor black LifeLineBorderColor black LifeLineBackgroundColor Gainsboro ParticipantBorderColor Motivation ParticipantBackgroundColor Motivation -'ParticipantFontName Impact ParticipantFontSize 20 ParticipantFontColor black ParticipantBorderColor Black ParticipantBackgroundColor MOTIVATION -ActorBackgroundColor Gainsboro -ActorFontColor black -ActorFontSize 20 -'ActorFontName Aapex } autonumber diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_SignCheck.puml b/src/images/TI-M_Basis/UC_Update_Federationlist_SignCheck.puml similarity index 50% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_SignCheck.puml rename to src/images/TI-M_Basis/UC_Update_Federationlist_SignCheck.puml index 8a0f929a..c12cd468 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_SignCheck.puml +++ b/src/images/TI-M_Basis/UC_Update_Federationlist_SignCheck.puml @@ -16,7 +16,6 @@ scale max 2048 width skinparam sequence { ArrowColor black ArrowFontSize 17 -ActorBorderColor black LifeLineBorderColor black LifeLineBackgroundColor Gainsboro @@ -27,9 +26,6 @@ ParticipantFontColor black ParticipantBorderColor Black ParticipantBackgroundColor MOTIVATION -ActorBackgroundColor Gainsboro -ActorFontColor black -ActorFontSize 20 } autonumber @@ -37,24 +33,17 @@ autonumber box Messenger-Service\n #WhiteSmoke participant MP as "Messenger-Proxy" end box -participant OCSP as "Public OCSP-Responder" - -legend bottom right - __Legende__ - nicht anzuwenden in dieser Spezifikationsversion, - sondern erst, sobald der Public OCSP-Responder verfügbar ist - (bezieht sich auf die im diesem Diagramm blau dargestellten Prüfungen und Komponenten) -endlegend +participant OCSP as "Public OCSP-Responder" activate MP MP->MP++: Signatur der Föderationsliste prüfen\n(Föderationsliste, x5c-Zertifikatsliste[1]) return Signaturprüfergebnis ||| -loop#LightGrey für jeden Eintrag von x5c-Zertifikatsliste - MP->OCSP: Public-OCSP-Zertifikatsprüf-Request stellen(x5c-Zertifikat) - MP<--OCSP: OCSP-Response +loop#LightGrey für jeden Eintrag von x5c-Zertifikatsliste + MP->OCSP: Public-OCSP-Zertifikatsprüf-Request stellen(x5c-Zertifikat) + MP<--OCSP: OCSP-Response end -alt#LightGrey Signaturprüfergebnis=gültig UND jeder OCSP-Response.CertificateStatusValue=good +alt#LightGrey Signaturprüfergebnis=gültig UND jeder OCSP-Response.CertificateStatusValue=good MP->MP: Föderationsliste aktualisieren(Föderationsliste) end deactivate MP diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_auth_retrieve.puml b/src/images/TI-M_Basis/UC_Update_Federationlist_auth_retrieve.puml similarity index 96% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_auth_retrieve.puml rename to src/images/TI-M_Basis/UC_Update_Federationlist_auth_retrieve.puml index 132d8676..328eddc5 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Update_Federationlist_auth_retrieve.puml +++ b/src/images/TI-M_Basis/UC_Update_Federationlist_auth_retrieve.puml @@ -16,7 +16,6 @@ scale max 2048 width skinparam sequence { ArrowColor black ArrowFontSize 17 -ActorBorderColor black LifeLineBorderColor black LifeLineBackgroundColor Gainsboro @@ -27,9 +26,6 @@ ParticipantFontColor black ParticipantBorderColor Black ParticipantBackgroundColor MOTIVATION -ActorBackgroundColor Gainsboro -ActorFontColor black -ActorFontSize 20 } autonumber diff --git a/src/images/TI-M_Basis/UC_tim_specific_comm.puml b/src/images/TI-M_Basis/UC_tim_specific_comm.puml new file mode 100644 index 00000000..85a13fa0 --- /dev/null +++ b/src/images/TI-M_Basis/UC_tim_specific_comm.puml @@ -0,0 +1,58 @@ +@startuml +!pragma layout smetana +skinparam actorStyle awesome +left to right direction +scale 6/3 + +skinparam sequence { +ArrowColor black +ArrowFontSize 17 +ActorBorderColor black +LifeLineBorderColor black +LifeLineBackgroundColor Gainsboro + +ParticipantBorderColor Motivation +ParticipantBackgroundColor Motivation +ParticipantFontName Impact +ParticipantFontSize 20 +ParticipantFontColor black +ParticipantBorderColor Black +ParticipantBackgroundColor MOTIVATION + +ActorBackgroundColor Gainsboro +ActorFontColor black +ActorFontSize 13 +} + +package Rolle { +actor "User" as u +} + +package "TI-M spezifische Kommunikation" { + +usecase ucbasis as "Basis-Anwendungsfall für\nTI-M spezifische Kommunikation + +--Merkmale-- +Nutzung zusätzlicher Chatroom-Eigenschaften +(Custom State Events und/oder +Custom Room Types) +.. +Unterstützung von FHIR-Resources +zur strukturierten Kommunikation +" + +usecase "Fallbezogene\nKommunikation" as ucfallbezug +usecase "Föderierte und intersektorale\nKommunikation" as ucfedcomm +} + +u --> ucbasis +ucbasis <. ucfallbezug : <> +ucbasis <. ucfedcomm : <> + + +note bottom of (u) +jeder Akteur, der an der Kommunikation +in der TI-M Föderation teilnimmt +end note + +@enduml diff --git a/src/images/TI-M_Basis/push_notifications_delivery.puml b/src/images/TI-M_Basis/push_notifications_delivery.puml new file mode 100644 index 00000000..d6f176ed --- /dev/null +++ b/src/images/TI-M_Basis/push_notifications_delivery.puml @@ -0,0 +1,58 @@ +@startuml +skinparam sequenceMessageAlign direction +skinparam minClassWidth 200 +skinparam BoxPadding 1 +skinparam sequenceReferenceHeaderBackgroundColor palegreen +scale max 2048 width +skinparam maxMessageSize 300 + +skinparam sequence { +ArrowColor black +ArrowFontSize 17 +ActorBorderColor black +LifeLineBorderColor black +LifeLineBackgroundColor Gainsboro + +ParticipantBorderColor Motivation +ParticipantBackgroundColor Motivation +ParticipantFontSize 20 +ParticipantFontColor black +ParticipantBorderColor Black +ParticipantBackgroundColor MOTIVATION + +ActorBackgroundColor Gainsboro +ActorFontColor black +ActorFontSize 20 +} + +autonumber + + actor v as "Akteur in der Rolle User" + participant fdv [ + TI-Messenger Client App + ---- + Inhaber PushAnbieter-App Token + ] + participant pa as "Push-Anbieter" + participant pg as "Push-Gateway" + participant fd as "Fachdienst" + +activate fd +fd->pg: Benachrichtigung(App_ID, PushAnbieter-AppToken, EventID) +activate pg +pg->pa: Benachrichtigung(PushAnbieter-AppToken, EventID) +activate pa +pa-->pg: Response +pg-->fd: Response +deactivate pg +pa->fdv: Benachrichtigung an Empfänger(PushAnbieter-AppToken, EventID) +deactivate pa +activate fdv +fdv->fd: Abfrage der Daten zu Event(EventID) +fd-->fdv: Verschlüsselte Benachrichtigungsinhalte +deactivate fd +fdv->fdv:Entschlüssele \n(Verschlüsselte Benachrichtigungsinhalte) +fdv->fdv:erzeuge Anwenderbenachrichtigung mit\n den entschlüsselten Inhalten +fdv->v:Zeige Benachrichtigung + +@enduml diff --git a/src/images/TI-M_Basis/push_notifications_registration.puml b/src/images/TI-M_Basis/push_notifications_registration.puml new file mode 100644 index 00000000..30ec2778 --- /dev/null +++ b/src/images/TI-M_Basis/push_notifications_registration.puml @@ -0,0 +1,60 @@ +@startuml +skinparam sequenceMessageAlign direction +skinparam minClassWidth 200 +skinparam BoxPadding 1 +skinparam sequenceReferenceHeaderBackgroundColor palegreen +scale max 2048 width +skinparam maxMessageSize 450 + +skinparam sequence { +ArrowColor black +ArrowFontSize 17 +ActorBorderColor black +LifeLineBorderColor black +LifeLineBackgroundColor Gainsboro + +ParticipantBorderColor Motivation +ParticipantBackgroundColor Motivation +ParticipantFontSize 20 +ParticipantFontColor black +ParticipantBorderColor Black +ParticipantBackgroundColor MOTIVATION + +ActorBackgroundColor Gainsboro +ActorFontColor black +ActorFontSize 20 +} +autonumber + +actor v as "Akteur in der Rolle User" + +participant c as "TI-Messenger Client App" +participant pa as "Push-Anbieter" +participant fd as "Fachdienst" +participant g as "Push-Gateway" +actor a as "Ersteller TI-Messenger Client App" + +||| +activate fd +a->g: konfiguriert unter einer eindeutigen App_ID den Zugang zum Push-Anbieter + activate g + g->g: speichere Konfiguration + deactivate g + a->c: hinterlege App_ID & Push-Gateway URL in der App + + v->c: installiert TI-Messenger Client App\n auf dem Smartphone + activate c + c-->v: Wollen Sie Push-Nachrichten empfangen? + v->c: stimmt dem Empfang von Push-Nachrichten zu + c->pa: registriert die App beim Push-Anbieter + activate pa + pa-->c: eindeutiges PushAnbieter-AppToken\nfür die App Instanz + deactivate pa + c->c: speichere \n PushAnbieter-AppToken + c->fd: konfiguriere zu verwendendes Gateway(Gateway-Url,App_ID, PushAnbieter-AppToken) + fd-->c: Konfiguration übernommen +||| + + deactivate fd + deactivate c +@enduml diff --git a/src/drawio/TI-Messenger-Fachdienst/API-Messenger-Service.drawio b/src/images/TI-M_Pro/API-Messenger-Service.drawio similarity index 100% rename from src/drawio/TI-Messenger-Fachdienst/API-Messenger-Service.drawio rename to src/images/TI-M_Pro/API-Messenger-Service.drawio diff --git a/src/images/TI-M_Pro/Berechtigung_UI.drawio b/src/images/TI-M_Pro/Berechtigung_UI.drawio new file mode 100644 index 00000000..4dbf009d --- /dev/null +++ b/src/images/TI-M_Pro/Berechtigung_UI.drawio @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10058_Seq.puml b/src/images/TI-M_Pro/UC_10058_Seq.puml similarity index 100% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10058_Seq.puml rename to src/images/TI-M_Pro/UC_10058_Seq.puml diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10059_Seq.puml b/src/images/TI-M_Pro/UC_10059_Seq.puml similarity index 99% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10059_Seq.puml rename to src/images/TI-M_Pro/UC_10059_Seq.puml index 95e2e872..81fef36a 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10059_Seq.puml +++ b/src/images/TI-M_Pro/UC_10059_Seq.puml @@ -12,6 +12,7 @@ skinparam minClassWidth 200 skinparam BoxPadding 5 skinparam sequenceReferenceHeaderBackgroundColor palegreen scale max 2048 width +autonumber skinparam sequence { ArrowColor black @@ -27,6 +28,8 @@ ParticipantFontColor black ParticipantBorderColor Black ParticipantBackgroundColor MOTIVATION + + ActorBackgroundColor Gainsboro ActorFontColor black ActorFontSize 20 diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10104_Seq.puml b/src/images/TI-M_Pro/UC_10104_Seq.puml similarity index 55% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10104_Seq.puml rename to src/images/TI-M_Pro/UC_10104_Seq.puml index 095ea29f..07684a59 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10104_Seq.puml +++ b/src/images/TI-M_Pro/UC_10104_Seq.puml @@ -1,8 +1,5 @@ /' -# TI-Messenger 1.1 -# TI-Messenger-Dienst # UC - 10104 -# Sequence Diagram # Name: Einladung von Akteuren innerhalb einer Organisation '/ @@ -11,6 +8,7 @@ skinparam sequenceMessageAlign direction skinparam minClassWidth 200 skinparam BoxPadding 1 skinparam sequenceReferenceHeaderBackgroundColor palegreen +skinparam sequenceReferenceBackgroundColor Beige scale max 2048 width skinparam sequence { @@ -22,7 +20,6 @@ LifeLineBackgroundColor Gainsboro ParticipantBorderColor Motivation ParticipantBackgroundColor Motivation -ParticipantFontName Impact ParticipantFontSize 20 ParticipantFontColor black ParticipantBorderColor Black @@ -31,92 +28,92 @@ ParticipantBackgroundColor MOTIVATION ActorBackgroundColor Gainsboro ActorFontColor black ActorFontSize 20 -ActorFontName Aapex } - actor U1 as "Akteur - A in der Rolle\nUser / User-HBA" +autonumber + + actor U1 as "Akteur - A in\nder Rolle User" participant C1 as "TI-Messenger-\nClient A" #AliceBlue box Messenger-Service #WhiteSmoke participant MP as "Messenger-\nProxy" participant MH as "Matrix-Homeserver \n(inklusive Nutzerverzeichnis)" - participant PG as "Push-Gateway" end box + participant PG as "Push-\nGateway" participant C2 as "TI-Messenger-\nClient B"#TECHNOLOGY - actor U2 as "Akteur - B in der Rolle\nUser / User-HBA" + actor U2 as "Akteur - B in\nder Rolle User" -||| -note over U1, U2: \nDie Akteure sind auf dem selben Messenger-Service angemeldet und im Besitz eines zugelassenen TI-Messenger-Clients.\nEin Chatraum wurde durch den Einladenen eingerichtet.\n -||| - opt#LightGrey #AliceBlue Akteur suchen ||| U1->C1: Suche Akteur B - activate C1 #AliceBlue + activate C1 C1->MP: POST /_matrix/client/\nuser_directory/search activate MP - MP->MP: TLS-Terminierung MP->MH: HTTP(S) Forward activate MH MH-->MH: Nutzerverzeichnis \ndurchsuchen MH-->MP: MXID deactivate MH MP-->C1: HTTP(S) Forward + deactivate MP ||| end ||| U1->C1: Akteur B einladen - C1->MP: POST /_matrix/client/r0/rooms/\n{roomId}/invite (roomId) + C1->MP: POST /_matrix/client/v3/\nrooms/{roomId}/invite + activate MP ||| - ref over MP, MP: **AF_10064** - Föderationszugehörigkeit eines Messenger-Service prüfen\n + ref over MP, MP: Berechtigungsprüfung\n ||| - - alt#LightGrey #AliceBlue Matrix-Domain nicht in der Föderation enthalten - ||| - MP-->C1: HTTP 401 \nUnauthorized - ||| - C1-->C1: Abmeldung der Session - ||| - C1-->U1: Anmeldung nicht \nerfolgreich - ||| - - else Matrix-Domain in der Föderation enthalten - - MP->MH: HTTP(S) Foward + + + MP->MH: HTTP(S) Forward activate MH MH->MH: Invite verarbeiten + MH-->MP: HTTP 200 + MP-->C1: HTTP(S) Forward + deactivate MP ||| - opt#LightGrey #LightBlue Pushbenachrichtigung + opt#LightGrey #LightBlue Push-Benachrichtigung ||| MH->PG: POST /_matrix/push/notify activate PG PG->C2: Notification + activate C2 PG-->MH: Status deactivate PG ||| end ||| - MH->MP: Invite Request - MP->C2: HTTP(S) Forward - activate C2 #TECHNOLOGY + + C2->MP: Sync Request + activate MP + MP->MH: HTTP(S) Forward + MH-->MP: Sync Response + MP-->C2: HTTP(S) Forward + C2->U2: Einladung anzeigen U2-->C2: Einladung bestätigen - C2->MP: commit - ||| - MP->MP: TLS Terminierung + C2->MP: join MP-->MH: HTTP(S) Forward - MH-->MH: Invite auslösen - MH-->MP: Status + MH->MH: join verarbeiten + MH-->MP: Room ID deactivate MH - MP-->C1: Status - C1-->U1: Nutzer in den \nRaum hinzugefügt - deactivate C1 - MP-->C2: Status + MP-->C2: HTTP(S) Forward deactivate MP C2-->U2: Nutzer ist dem \nRaum beigetreten deactivate C2 + C1->MP: Sync Request + activate MP + MP->MH: HTTP(S) Forward + activate MH + MH-->MP: Sync Response + deactivate MH + MP-->C1: HTTP(S) Forward + deactivate MP + C1-->U1: Akteur B ist dem Raum\nRaum beigetreten + deactivate C1 ||| - end ||| @enduml diff --git a/src/images/TI-M_Pro/UC_10376_Seq.puml b/src/images/TI-M_Pro/UC_10376_Seq.puml new file mode 100644 index 00000000..8000ed41 --- /dev/null +++ b/src/images/TI-M_Pro/UC_10376_Seq.puml @@ -0,0 +1,82 @@ +/' +# Sequence Diagram +# Name: Sichtbarkeit für Versicherte setzen +'/ + +@startuml +skinparam sequenceMessageAlign direction +skinparam minClassWidth 200 +skinparam BoxPadding 1 +skinparam sequenceReferenceHeaderBackgroundColor palegreen +scale max 2048 width + +skinparam sequence { +ArrowColor black +ArrowFontSize 17 +ActorBorderColor black +LifeLineBorderColor black +LifeLineBackgroundColor Gainsboro + +ParticipantBorderColor Motivation +ParticipantBackgroundColor Motivation +ParticipantFontSize 20 +ParticipantFontColor black +ParticipantBorderColor Black + +ActorBackgroundColor Gainsboro +ActorFontColor black +ActorFontSize 20 +} + +autonumber + +actor U as "Akteur in der Rolle\nUser-HBA" +box Endgerät #WhiteSmoke + participant C as "TI-Messenger-Client" +end box + +box VZD-FHIR-Directory #WhiteSmoke + participant FP as "FHIR-Proxy" + participant VZD as "FHIR-Directory" +end box + +||| +group VZD-FHIR-Directory Eintrag + ||| + group Sichtbarkeit für Versicherte abschalten + U->C: Deaktiviere Sichtbarkeit für Versicherte + + Activate C + ||| + C->FP: PUT /owner/Endpoint/?... \nSetze Endpoint.extension:endpointVisibility auf "code": "hide-versicherte" + Activate FP + FP->FP: prüfe \nowner-accesstoken + FP->VZD: HTTPS Forward + Activate VZD + VZD-->FP: result body json + Deactivate VZD + FP-->C: result body json + Deactivate FP + ||| + C->U: Ihre MXID ist für Versicherte nicht mehr sichtbar. + Deactivate C + end + ||| + group Sichtbarkeit für Versicherte anschalten + ||| + U->C: Aktiviere Sichtbarkeit für Versicherte + Activate C + C->FP: PUT /owner/Endpoint/?... \nEntferne Endpoint.extension:endpointVisibility + Activate FP + FP->FP: prüfe \nowner-accesstoken + FP->VZD: HTTPS Forward + Activate VZD + VZD-->FP: result body json + Deactivate VZD + FP-->C: result body json + Deactivate FP + ||| + C->U: Ihre MXID ist für Versicherte wieder sichtbar. + Deactivate C + end +@enduml diff --git a/src/images/TI-M_Pro/UC_10377_Seq.puml b/src/images/TI-M_Pro/UC_10377_Seq.puml new file mode 100644 index 00000000..211919da --- /dev/null +++ b/src/images/TI-M_Pro/UC_10377_Seq.puml @@ -0,0 +1,81 @@ +/' +# Sequence Diagram +# Name: Organisation Sichtbarkeit für Versicherte setzen +'/ + +@startuml +skinparam sequenceMessageAlign direction +skinparam minClassWidth 200 +skinparam BoxPadding 1 +skinparam sequenceReferenceHeaderBackgroundColor palegreen +scale max 2048 width + +skinparam sequence { +ArrowColor black +ArrowFontSize 17 +ActorBorderColor black +LifeLineBorderColor black +LifeLineBackgroundColor Gainsboro + +ParticipantBorderColor Motivation +ParticipantBackgroundColor Motivation +ParticipantFontSize 20 +ParticipantFontColor black +ParticipantBorderColor Black + +ActorBackgroundColor Gainsboro +ActorFontColor black +ActorFontSize 20 +} + +autonumber + +actor U as "Akteur in der Rolle\nOrg-Admin" +box Endgerät #WhiteSmoke + participant C as "TI-Messenger-Client" +end box + +box VZD-FHIR-Directory #WhiteSmoke + participant FP as "FHIR-Proxy" + participant VZD as "FHIR-Directory" +end box + +group VZD-FHIR-Directory Eintrag + ||| + group Sichtbarkeit für Versicherte abschalten + U->C: Deaktiviere Sichtbarkeit für Versicherte + + Activate C + ||| + C->FP: PUT /owner/Endpoint/?... \nSetze Endpoint.extension:endpointVisibility auf "code": "hide-versicherte" + Activate FP + FP->FP: prüfe \nowner-accesstoken + FP->VZD: HTTPS Forward + Activate VZD + VZD-->FP: result body json + Deactivate VZD + FP-->C: result body json + Deactivate FP + ||| + C->U: Der Endpunkt mit der MXID ist für Versicherte nicht mehr sichtbar. + Deactivate C + end + ||| + group Sichtbarkeit für Versicherte anschalten + ||| + U->C: Aktiviere Sichtbarkeit für Versicherte + Activate C + C->FP: PUT /owner/Endpoint/?... \nEntferne Endpoint.extension:endpointVisibility + Activate FP + FP->FP: prüfe \nowner-accesstoken + FP->VZD: HTTPS Forward + Activate VZD + VZD-->FP: result body json + Deactivate VZD + FP-->C: result body json + Deactivate FP + ||| + C->U: Der Endpunkt mit der MXID ist für Versicherte wieder sichtbar. + Deactivate C + end +@enduml diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_org_admin.puml b/src/images/TI-M_Pro/UC_org_admin.puml similarity index 98% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_org_admin.puml rename to src/images/TI-M_Pro/UC_org_admin.puml index 8d66044e..4b0d9d64 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_org_admin.puml +++ b/src/images/TI-M_Pro/UC_org_admin.puml @@ -5,7 +5,7 @@ # Use Case Diagram # Name: Org-Admin - Anwendungsfaelle '/ - +!pragma layout smetana skinparam actorStyle awesome left to right direction diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_user_HBA.puml b/src/images/TI-M_Pro/UC_user_HBA.puml similarity index 98% rename from src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_user_HBA.puml rename to src/images/TI-M_Pro/UC_user_HBA.puml index 894be4e0..18f0dddd 100644 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_user_HBA.puml +++ b/src/images/TI-M_Pro/UC_user_HBA.puml @@ -6,6 +6,7 @@ '/ @startuml +!pragma layout smetana skinparam actorStyle awesome left to right direction scale 6/3 diff --git a/src/images/TI-M_ePA/Komponentendiagramm_Client_fdv.drawio b/src/images/TI-M_ePA/Komponentendiagramm_Client_fdv.drawio new file mode 100644 index 00000000..83bb1ca9 --- /dev/null +++ b/src/images/TI-M_ePA/Komponentendiagramm_Client_fdv.drawio @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/drawio/TI-Messenger-Client/System_Overview.drawio b/src/images/TI-M_ePA/Komponentendiagramm_fdv.drawio similarity index 55% rename from src/drawio/TI-Messenger-Client/System_Overview.drawio rename to src/images/TI-M_ePA/Komponentendiagramm_fdv.drawio index c10c8373..aa2200f0 100644 --- a/src/drawio/TI-Messenger-Client/System_Overview.drawio +++ b/src/images/TI-M_ePA/Komponentendiagramm_fdv.drawio @@ -1,67 +1,52 @@ - - + + - + - + - + + + + + + - - - - - - - - - - - - - - - - + - - + + - + - - - - - - - + + - - + + - - + + - - - + + + @@ -69,52 +54,47 @@ - - - - - - - + + - + - + - + - - + + - - + + - + - + - + @@ -123,13 +103,13 @@ - + - + @@ -138,7 +118,7 @@ - + @@ -158,7 +138,7 @@ - + @@ -167,28 +147,22 @@ - + - + - - + + - + - - - - - - - - + + @@ -225,13 +199,13 @@ - + - + @@ -239,18 +213,128 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/images/TI-M_ePA/Pruefungen_Messenger_Proxy_fdv.drawio b/src/images/TI-M_ePA/Pruefungen_Messenger_Proxy_fdv.drawio new file mode 100644 index 00000000..55a0b657 --- /dev/null +++ b/src/images/TI-M_ePA/Pruefungen_Messenger_Proxy_fdv.drawio @@ -0,0 +1,461 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/TI-M_ePA/Push_Komponeten_fdv.drawio b/src/images/TI-M_ePA/Push_Komponeten_fdv.drawio new file mode 100644 index 00000000..09cb3d81 --- /dev/null +++ b/src/images/TI-M_ePA/Push_Komponeten_fdv.drawio @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/TI-M_ePA/TI-M_Kontextabgrenzung_fdv.drawio b/src/images/TI-M_ePA/TI-M_Kontextabgrenzung_fdv.drawio new file mode 100644 index 00000000..07cd10ee --- /dev/null +++ b/src/images/TI-M_ePA/TI-M_Kontextabgrenzung_fdv.drawio @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/TI-M_ePA/TI-Messenger_OIDC_login_fdv_simplified.puml b/src/images/TI-M_ePA/TI-Messenger_OIDC_login_fdv_simplified.puml new file mode 100644 index 00000000..3e033fc3 --- /dev/null +++ b/src/images/TI-M_ePA/TI-Messenger_OIDC_login_fdv_simplified.puml @@ -0,0 +1,125 @@ +@startuml +skinparam sequenceMessageAlign direction +skinparam WrapWidth 300 +skinparam BoxPadding 1 +skinparam ParticipantPadding 25 +skinparam sequenceReferenceHeaderBackgroundColor palegreen +scale max 2048 width +skinparam maxMessageSize 400 + +skinparam sequence { +ArrowColor black +ArrowFontSize 17 +ActorBorderColor black +LifeLineBorderColor black +LifeLineBackgroundColor Gainsboro + +ParticipantBorderColor Motivation +ParticipantBackgroundColor Motivation +ParticipantFontSize 20 +ParticipantFontColor black +ParticipantBorderColor Black +ParticipantBackgroundColor MOTIVATION + +ActorBackgroundColor Gainsboro +ActorFontColor black +ActorFontSize 20 +} + +autonumber + +actor us as "Akteur in der\nRolle Versicherter" +box Endgerät #WhiteSmoke + participant app [ + ePA-FdV + ---- + TI-M Client + ] + participant auth [ + ePA-FdV + ---- + Authenticator-Modul + ] +end box +note left of auth +Die Grafik zeigt exemplarisch das Authenticator-Modul als Teil des ePA-FdV. Zulässig ist ebenfalls ein Authenticator-Modul als eigenständige App auf dem Endgerät. +end note +participant hs as "Messenger-Service\n(Relying party für IDP)" + +participant idp as "Sektoraler\nIDP" + +||| + +us -> app: starte App + +activate app + group OIDC Login + app -> hs ++: GET ""{homeserver_client_api_url}""/login + hs --> app --: 200 OK (:Login Types) + note right + enthalten: ID des sektoralen IDP: ""{sidp}"" + end note + ||| + opt #LightYellow Auswahl durch Akteur: Registrierungs- statt Login-Funktion + app -> hs ++: POST ""{homeserver_client_api_url}""/register (initial_device_display_name, refresh_token) + hs --> app --: 401 Unauthorized + note right + Homeserver benötigt zusätzliche Authentisierungsinformationen + end note + ||| + end + ||| + app -> hs++: GET ""{homeserver_client_api_url}""/login/sso/redirect/""{sidp}"" + ||| + group #Linen Verhaltensänderung, da der sektorale IDP OIDC PAR erfordert + hs -> idp ++: POST ""{sektoraler_idp_url}""/par (response_type, redirect_uri, code_challenge, scope) + idp --> hs --: 201 CREATED (:request_uri) + hs --> app --: 302 Redirect ""{sektoraler_idp_url}""/login/oauth/authorize (:request_uri) + ||| + end + ||| + group #LightBlue IDP Authentisierung mit nutzerspezifischer Authentifizierung + app -> auth ++ : Authorization Request(request_uri) + + ||| + group #DarkGray Authenticator Modul IDP-sek + auth -> idp ++: GET ""{sektoraler_idp_url}""/login/oauth/authorize (request_uri) + idp --> auth: Challenge + auth -> us: Consent Page + us --> auth: Approval + auth -> idp: Response + note left + Nutzung von Identifikationsmerkmalen, + die vom IDP vorgegeben sind + end note + idp --> auth --: 302 Redirect ""{redirect_uri}"" (:auth_code, :state) + ||| + end + ||| + auth ->app: Redirect(redirect_uri, AUTH_CODE) + ||| + end + ||| + app -> hs ++: GET ""{redirect_uri}"" (auth_code, state) + ||| + hs -> idp ++: POST ""{sektoraler_idp_url}""/token-endpoint (auth_code, code_verifier) + idp --> hs --: 200 OK (:id_token) + opt #LightYellow kein passender Benutzer-Account zum id_token vorhanden + hs -> hs: Benutzer-Account anlegen + ||| + else Display Name aus dem id_token stimmt nicht mit den Daten im Benutzer-Account überein. + hs -> hs: Display Name im Benutzer-Account aktualisieren + end + ||| + hs --> app --: 200 OK (:loginToken) + note right + HTML Consent Page, Zugriff + TIM-Web-App auf Matrix Account + end note + ||| + app -> hs ++: POST ""{homeserver_client_api_url}""/login (loginToken, initial_device_display_name) + hs --> app --: 200 OK (:user_id, :access_token, :home_server, :device_id, :well_known) + ||| + end + app --> us: Login erfolgreich +@enduml diff --git a/src/images/TI-M_ePA/UC_10233_Seq.puml b/src/images/TI-M_ePA/UC_10233_Seq.puml new file mode 100644 index 00000000..2d237b80 --- /dev/null +++ b/src/images/TI-M_ePA/UC_10233_Seq.puml @@ -0,0 +1,57 @@ +/' +# TI-Messenger 1.1 +# TI-Messenger-Dienst +# UC - XXX +# Sequence Diagram +# Name: Versichertenzugehörigkeit prüfen +'/ + +@startuml +skinparam sequenceMessageAlign direction +skinparam minClassWidth 200 +skinparam BoxPadding 1 +skinparam sequenceReferenceHeaderBackgroundColor palegreen +scale max 2048 width + +skinparam sequence { +ArrowColor black +ArrowFontSize 17 +ActorBorderColor black +LifeLineBorderColor black +LifeLineBackgroundColor Gainsboro + +ParticipantBorderColor Motivation +ParticipantBackgroundColor Motivation +ParticipantFontSize 20 +ParticipantFontColor black +ParticipantBorderColor Black +ParticipantBackgroundColor MOTIVATION + +ActorBackgroundColor Gainsboro +ActorFontColor black +ActorFontSize 20 + +} + +autonumber + + box Messenger-Service\n#WhiteSmoke + participant MP as "Messenger-Proxy" + participant MH as "Matrix-Homeserver" + end box + + +||| +Activate MP +MP->MP: prüfe den Sender und den Empfänger des Invite-Event\n auf Zugehörigkeit zu einer Versichertendomain +||| +break #MistyRose Sender und Empfänger sind beide Versicherte +MP->MP: HTTP 403 Forbidden +end + +MP->MH: HTTP(S) Forward +Activate MH +MH-->MP: Status +Deactivate MH + +@enduml diff --git a/src/images/TI-M_ePA/UC_Approvel_List_Seq_fdv.puml b/src/images/TI-M_ePA/UC_Approvel_List_Seq_fdv.puml new file mode 100644 index 00000000..993f4c7d --- /dev/null +++ b/src/images/TI-M_ePA/UC_Approvel_List_Seq_fdv.puml @@ -0,0 +1,108 @@ +/' +# TI-Messenger für Versicherte +# TI-Messenger-Dienst +# Sequence Diagram +# Name: Stufen der Berechtigungsprüfung ePA +'/ + +@startuml +skinparam sequenceMessageAlign direction +skinparam minClassWidth 200 +skinparam BoxPadding 15 +skinparam sequenceReferenceHeaderBackgroundColor palegreen +scale max 2048 width + +skinparam sequence { + ArrowColor black + ArrowFontSize 17 + ActorBorderColor black + LifeLineBorderColor black + LifeLineBackgroundColor Gainsboro + + ParticipantBorderColor Motivation + ParticipantBackgroundColor Motivation + + ParticipantFontSize 20 + ParticipantFontColor black + ParticipantBorderColor Black + ParticipantBackgroundColor MOTIVATION + + ActorBackgroundColor Gainsboro + ActorFontColor black + ActorFontSize 20 + ActorFontName Aapex +} +box Messenger-Service\ndes einladenden Akteurs\n #WhiteSmoke +participant MS as "Messenger-Service" +end box +box Messenger-Service\ndes eingeladenen Akteurs\n #WhiteSmoke +participant MS2 as "Messenger-Service" +end box +box Push-Gateway des eingeladenden Akteurs\n #WhiteSmoke +participant PG as "Push-\nGateway" +end box +box Messenger Client\ndes eingeladenen Akteurs\n #WhiteSmoke +participant MC2 as "Messenger-Client" +end box +MS->MS2:Matrix-Invite-Event +activate MS2 +activate MS +||| +== Berechtigungskonzept - Stufe 1 == +||| +break #MistyRose Matrix-Domain nicht in der Föderation enthalten + MS2->MS2:Abbruch, \nVerbindung wird \nabgelehnt + MS2-->MS: HTTP 403 + ||| + end +break #MistyRose Einladender und der Eingeladene sind beide Versicherte + MS2->MS2:Abbruch, \nVerbindung wird \nabgelehnt + MS2->MS: HTTP 403 + ||| + end + +== Berechtigungskonzept - Stufe 2 == +MS2-->MS2: Invite-Event \nverarbeiten +opt #SkyBlue Durchsetzen der akteursspezifischen Berechtigungskonfiguration +MS2->MS2: Prüfung, ob die Einladung erlaubt ist +break #MistyRose Der Akteur hat "allow all" konfiguriert und der einladende Akteur\n ist auf der BlockedUser-Liste (Direkt oder als Teil einer Domain) + ||| + MS2->MS2:Einladung ist abzulehnen + ||| + end + + break #MistyRose Der Akteur hat "block all" konfiguriert und der einladende Akteur\n ist nicht auf der AllowedUser-Liste (Direkt oder als Teil einer Domain) + ||| + MS2->MS2:Einladung ist abzulehnen + ||| + end +end + + MS2->PG++: Push Notification + PG->MC2: Push Notification + activate MC2 + PG-->MS2: Response + deactivate PG + + MC2->MS2: Abfrage neuer Events + MS2-->MC2: Bereitstellung neuer Events + + opt #SkyBlue Durchsetzen der akteursspezifischen Berechtigungskonfiguration + MC2->MC2: Prüfung, ob die Einladung erlaubt ist + break #MistyRose Der Akteur hat "allow all" konfiguriert und der einladende Akteur\n ist auf der BlockedUser-Liste (Direkt oder als Teil einer Domain) + ||| + MC2->MC2:Einladung ist abzulehnen + ||| + end + + break #MistyRose Der Akteur hat "block all" konfiguriert und der einladende Akteur\n ist nicht auf der AllowedUser-Liste (Direkt oder als Teil einer Domain) + ||| + MC2->MC2:Einladung ist abzulehnen + ||| + end +end +||| +MC2-->MS2: Einladungsergebnis +MS2-->MS: Einladungsergebnis +||| +@enduml \ No newline at end of file diff --git a/src/openapi/TiMessengerContactManagement.yaml b/src/openapi/TiMessengerContactManagement.yaml index d01b2a93..78f280af 100644 --- a/src/openapi/TiMessengerContactManagement.yaml +++ b/src/openapi/TiMessengerContactManagement.yaml @@ -104,7 +104,7 @@ paths: $ref: "#/components/schemas/Contact" responses: "200": - description: "Contact setting for {mxid successfully created" + description: "Contact setting for {mxid} successfully created" content: application/json: schema: diff --git a/src/openapi/TiMessengerInformation.yaml b/src/openapi/TiMessengerInformation.yaml new file mode 100644 index 00000000..4d428790 --- /dev/null +++ b/src/openapi/TiMessengerInformation.yaml @@ -0,0 +1,186 @@ +openapi: 3.0.3 +info: + title: I_TiMessengerInformation + description: | + This is a REST interface that provides information to TI-Messenger clients. + + The client uses a Matrix-OpenID-Token for authentication on all REST + operations. The bearer token can be obtained from the homeserver via + POST /_matrix/client/v3/user/{userId}/openid/request_token). + version: 1.0.0 + ### 1.0.0 + # - initial version + contact: + name: gematik GmbH + email: software-development@gematik.de + url: "https://www.gematik.de" + license: + name: Apache 2.0 + url: "https://www.apache.org/licenses/LICENSE-2.0" + +externalDocs: + description: TI-Messenger-API + url: https://github.com/gematik/api-ti-messenger + +servers: + - url: https://{server}/tim-information + variables: + server: + description: "The server hosting this interface." + default: tobereplaced.de + +tags: + - name: info + description: "Information about this interface itself." + - name: lookUpServer + description: "Operations for server lookup." + +paths: + /: + get: + tags: + - info + summary: "Retrieve metadata about this interface." + responses: + "200": + description: "OK" + content: + application/json: + schema: + $ref: "#/components/schemas/InfoObject" + "403": + $ref: "#/components/responses/Forbidden" + + /v1/server/findByIk: + get: + tags: + - lookUpServer + summary: "Resolve an IK number to the associated TI-Messenger server name." + parameters: + - in: query + name: ikNumber + description: "IK number to look up." + required: true + schema: + type: string + responses: + "200": + description: "OK" + content: + application/json: + schema: + type: object + required: + - serverName + properties: + serverName: + type: string + description: "The TI-Messenger server name for the given IK number." + example: "gematiker-kk.de" + "400": + $ref: "#/components/responses/BadRequest" + "401": + $ref: "#/components/responses/Unauthorized" + "404": + $ref: "#/components/responses/NotFound" + + /v1/server/isInsurance: + get: + tags: + - lookUpServer + summary: "Check whether a TI-Messenger server name represents an insurance." + parameters: + - in: query + name: serverName + description: "The server name to query." + required: true + schema: + type: string + responses: + "200": + description: "OK" + content: + application/json: + schema: + type: object + required: + - isInsurance + properties: + isInsurance: + type: boolean + description: "`true` if the server name represents an insurance or `false` otherwise." + "400": + $ref: "#/components/responses/BadRequest" + "401": + $ref: "#/components/responses/Unauthorized" + +# Descriptions of common components +components: + responses: + NotFound: + description: "The specified resource was not found" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + Unauthorized: + description: "Unauthorized" + Forbidden: + description: "Forbidden - you are not allowed to do this" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + BadRequest: + description: "Bad Request" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + + schemas: + InfoObject: + required: + - title + - version + readOnly: true + type: object + properties: + title: + type: string + description: "The service's title." + example: "Contact Information API des TI-Messengers" + description: + type: string + description: "Short description of the service." + example: "Contact Information API des TI-Messengers. Betreiber: " + contact: + type: string + description: "Contact information of the operator." + version: + type: string + description: "Version of the `TiMessengerContactInformation.yaml` interface." + example: "1.0.0" + + Error: + type: object + properties: + errorCode: + description: "A code identifying this error." + type: string + errorMessage: + description: "A readable message describing the error." + type: string + required: + - errorCode + - errorMessage + + securitySchemes: + bearerMatrixOpenIdTokenAuth: # arbitrary name for the security scheme + type: http + scheme: bearer + bearerFormat: JWT # optional, arbitrary value for documentation purposes + +# the security applies to all operations +security: + - bearerMatrixOpenIdTokenAuth: [] # use the same name as above diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10061_Seq.puml b/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10061_Seq.puml deleted file mode 100644 index 31ac0ea6..00000000 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_10061_Seq.puml +++ /dev/null @@ -1,196 +0,0 @@ -/' -# TI-Messenger 1.1 -# TI-Messenger-Dienst -# UC - 10061 -# Sequence Diagram -# Name: Einladung von Akteuren außerhalb einer Organisation -'/ - -@startuml -skinparam sequenceMessageAlign direction -skinparam minClassWidth 200 -skinparam BoxPadding 15 -skinparam sequenceReferenceHeaderBackgroundColor palegreen -scale max 2048 width - -skinparam sequence { -ArrowColor black -ArrowFontSize 17 -ActorBorderColor black -LifeLineBorderColor black -LifeLineBackgroundColor Gainsboro - -ParticipantBorderColor Motivation -ParticipantBackgroundColor Motivation -ParticipantFontSize 20 -ParticipantFontColor black -ParticipantBorderColor Black -ParticipantBackgroundColor MOTIVATION - -ActorBackgroundColor Gainsboro -ActorFontColor black -ActorFontSize 20 -} - actor U1 as "\nAkteur - A in der Rolle\nUser / User-HBA\n" - participant C1 as "TI-Messenger-\nClient" #AliceBlue - box Messenger-Service A #WhiteSmoke - participant MP1 as "Messenger-\nProxy" - participant MH1 as "Matrix-\nHomeserver" - end box - box Messenger-Service B #WhiteSmoke - participant MP2 as "Messenger-\nProxy" - participant MH2 as "Matrix-\nHomeserver" - participant PG2 as "Push-\nGateway" - end box - participant C2 as "TI-Messenger-\nClient" #TECHNOLOGY - actor U2 as "\nAkteur - B in der Rolle\nUser / User-HBA\n" - -||| -note over U1, MH1: \nDer Akteur A ist erfolgreich beim Messenger Service A angemeldet\n -note over U2, MP2: \nDer Akteur B ist erfolgreich beim Messenger Service B angemeldet\n -||| - - alt#LightGrey #AliceBlue Suche über VZD-FHIR-Directory - ||| - ref over U1, MH1 : Anhang B - Einträge im VZD-FHIR-Directory suchen\n - ||| - - else Direktaustausch über QR-Code Scan - ||| - note over U1, U2: \nAkteur A und Akteur B treffen sich persönlich\n - ||| - autonumber - U1-[#0000FF]>C1: QR-Code teilen - activate C1 #AliceBlue - U2-[#DarkGreen]>C2: QR-Code scannen - activate C2 #TECHNOLOGY - C2-[#DarkGreen]>C1: GET /scan - C1--[#0000FF]>C2: MXID von Akteur A - ||| - group MXID in Freigabeliste eintragen - ||| - C2->MP2: POST /tim-contact-mgmt/createContactSetting \n(MXID, start, end, Matrix-OpenID-Token) - activate MP2 - ||| - MP2->MH2: GET /openid/userinfo/\n?Matrix-OpenID-Token - activate MH2 - MH2->MH2: prüfe \nMatrix-OpenID-Token - MH2-->MP2: status - deactivate MH2 - ||| - MP2->MP2: MXID von Akteur A \nin Freigabeliste \nfür Akteur B \naufnehmen - ||| - MP2-->C2: status - deactivate MP2 - ||| - end - ||| - U2-[#DarkGreen]>C2: QR-Code teilen - U1-[#0000FF]>C1: QR-Code scannen - C1-[#0000FF]>C2: GET /scan - C2--[#DarkGreen]>C1: MXID von Akteur B - deactivate C2 - ||| - group MXID in Freigabeliste eintragen - ||| - C1->MP1: POST /tim-contact-mgmt/createContactSetting \n(MXID, start, end, Matrix-OpenID-Token) - activate MP1 - MP1->MH1: GET /openid/userinfo/\n?Matrix-OpenID-Token - activate MH1 - MH1->MH1: prüfe \nMatrix-OpenID-Token - MH1-->MP1: status - deactivate MH1 - ||| - MP1->MP1: MXID von Akteur B \nin Freigabeliste \nfür Akteur A \naufnehmen - ||| - MP1-->C1: status - deactivate MP2 - deactivate C2 - ||| - end - ||| - end - ||| - note over U1, MH1: \nEin Chatraum wurde bereits durch den Akteur A eingerichtet.\n - - ||| - C1->MP1: POST /_matrix/client/r0/\nrooms/{roomId}/invite - ||| - ref over MP1, MP1: **AF_10064** - \tFöderationszugehörigkeit eines \n \tMessenger-Service prüfen\n - note right: Stufe 1 - Prüfung gemäß \nClient-Server Kommunikation - ||| - break#LightGrey #MistyRose Abbruch - ||| - MP1-->C1: HTTP 403 \nForbidden - ||| - C1-->U1: Einladung nicht \nerfolgreich - ||| - end - ||| - - MP1->MH1: HTTP(S) Forward - activate MH1 - MH1->MH1: Invite verarbeiten - MH1->MP1: POST /_matrix/federation/v1\n/invite/{roomId}/{eventId} - deactivate MH1 - ||| - ref over MP1, MP1: **AF_10064** - \tFöderationszugehörigkeit eines \n \tMessenger-Service prüfen\n - note left: Stufe 1 - Prüfung gemäß \nServer-Server Kommunikation - ||| - MP1->MP2: HTTP(S) Forward - note right: Stufe 1 - Prüfung gemäß \nServer-Server Kommunikation - ||| - activate MP2 - ref over MP2, MP2: **AF_10064** - \tFöderationszugehörigkeit eines \n \tMessenger-Service prüfen\n - ||| - - break#LightGrey #MistyRose Abbruch - ||| - MP2-->MP1: HTTP 403 \nForbidden - ||| - MP1-->C1: HTTP(S) forward - ||| - C1-->U1: Einladung nicht \nerfolgreich - ||| - end - - ||| - ref over MP2, MH2 : Anhang B - Stufen der Berechtigungsprüfung\n Stufe 2 und 3\n - ||| - MP2->MH2: HTTP(S) Forward - activate MH2 - MH2->MH2: Invite verarbeiten - ||| - opt#LightGrey #AliceBlue Pushbenachrichtigung - ||| - MH2->PG2: POST /_matrix/push/notify - activate PG2 - PG2->C2: Notification - PG2-->MH2: Status - deactivate PG2 - ||| - end - ||| - MH2->MP2: Invite Request - MP2->C2: HTTP(S) Forward - activate C2 #TECHNOLOGY - C2->U2: Einladung anzeigen - U2-->C2: Einladung bestätigen - C2->MP2: commit - MP2->MP2: TLS Terminierung - MP2-->MH2: HTTP(S) Forward - MH2-->MH2: Invite auslösen - MH2-->MP2: Status - deactivate MH2 - - MP2-->C2: Status - C2-->U2: Nutzer ist dem \nRaum beigetreten - deactivate C2 - MP2-->MP1: Status - deactivate MP2 - MP1-->C1: Nutzer in den \nRaum hinzugefügt - deactivate MP1 - deactivate C1 - ||| -||| -@enduml diff --git a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Approvel_List_Seq.puml b/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Approvel_List_Seq.puml deleted file mode 100644 index 7dd27031..00000000 --- a/src/plantuml/TI-Messenger-Dienst/Ressourcen/UC_Approvel_List_Seq.puml +++ /dev/null @@ -1,167 +0,0 @@ -/' -# TI-Messenger 1.1 -# TI-Messenger-Dienst -# Sequence Diagram -# Name: Stufen der Berechtigungsprüfung -'/ - -@startuml -skinparam sequenceMessageAlign direction -skinparam minClassWidth 200 -skinparam BoxPadding 15 -skinparam sequenceReferenceHeaderBackgroundColor palegreen -scale max 2048 width - -skinparam sequence { -ArrowColor black -ArrowFontSize 17 -ActorBorderColor black -LifeLineBorderColor black -LifeLineBackgroundColor Gainsboro - -ParticipantBorderColor Motivation -ParticipantBackgroundColor Motivation -ParticipantFontName Impact -ParticipantFontSize 20 -ParticipantFontColor black -ParticipantBorderColor Black -ParticipantBackgroundColor MOTIVATION - -ActorBackgroundColor Gainsboro -ActorFontColor black -ActorFontSize 20 -ActorFontName Aapex -} - participant C as "TI-Messenger-\nClient" - box Messenger-Service\n #WhiteSmoke - participant MP as "Messenger-\nProxy" - participant MH as "Matrix-\nHomeserver" - end box - box Messenger-Service\n #WhiteSmoke - participant MP2 as "Messenger-\nProxy" - participant RD2 as "Registrierungs-\nDienst" - participant MH2 as "Matrix-\nHomeserver" - end box - participant VZD as "VZD-FHIR-\nDirectory" - -||| -C->MP: Invite-Event - activate MP #LIGHTGREEN - -== Berechtigungskonzept - Stufe 1 == - ||| - ref over MP, MP: **AF_10064** - \tFöderationszugehörigkeit eines \n \tMessenger-Service prüfen\n - note right: Stufe 1 - Prüfung gemäß \nClient-Server Kommunikation - ||| - -alt#LightGrey #MISTYROSE Matrix-Domain nicht in der Föderation enthalten -||| - ||| - MP-->C: HTTP 403 \nForbidden - activate C - ||| - C-->C: Abmeldung der Session - deactivate C -||| -end - -||| -MP->MH: HTTP(S) Forward - activate MH - -||| -MH->MH: Prüfung auf \nOrganisationszugehörigkeit - -||| - alt#LightGrey #AliceBlue Akteure gehören einer gemeinsamen Organisation an - ||| - MH->MH: Invite wird \nverarbeitet - MH-->MP: status - MP-->C: status - ||| - - else Akteure gehören nicht einer gemeinsamen Organisation an - ||| - MH->MP: Matrix-Invite-Event \nwird weitergeleitet - deactivate MH - ||| - ref over MP, MP: **AF_10064** - \tFöderationszugehörigkeit eines \n \tMessenger-Service prüfen\n - note left: Stufe 1 - Prüfung gemäß \nServer-Server Kommunikation - ||| - MP->MP2: Matrix-Invite-Event \nwird weitergeleitet - activate MP2 #SALMON - - ||| - == Berechtigungskonzept - Stufe 1 == - ||| - - ref over MP2, MP2: **AF_10064** - \tFöderationszugehörigkeit eines \n \tMessenger-Service prüfen\n - note right: Stufe 1 - Prüfung gemäß \nServer-Server Kommunikation - ||| - - alt#LightGrey #MISTYROSE Matrix-Domain nicht in der Föderation enthalten - ||| - ||| - MP2-->MP: HTTP 403 \nForbidden - MP-->C: HTTP(S) forward - activate C - ||| - C-->C: Abmeldung der Session - deactivate C - ||| - end - - ||| - == Berechtigungskonzept - Stufe 2 == - - activate MP2 - MP2->MP2: \nPrüfung, ob MXID \ndes Einladenden \nin der Freigabeliste \nenthalten ist - ||| - - alt#LightGrey #MOTIVATION MXID des Einladenden ist in der Freigabeliste enthalten - ||| - MP2->MH2: HTTP(S) Forward - activate MH2 - ||| - else MXID des Einladenden ist nicht in der Freigabeliste enthalten - ||| - == Berechtigungskonzept - Stufe 3 == - MP2->RD2: \nPrüfung, ob MXID \nder Akteure im \nVZD-FHIR-Dirctory \nenthalten ist - activate RD2 - RD2->VZD: POST /tim-provider-services/whereIs - activate VZD - VZD->VZD: Suche - VZD-->RD2: Ergebnis, status - deactivate VZD - RD2->RD2: Prüfung - RD2-->MP2: Ergebnis, status - deactivate RD2 - ||| - alt#LightGrey #LightBlue MXID ist im VZD-FHIR-Directory und Ergebnis == true - ||| - MP2->MH2: HTTP(S) Forward - ||| - else MXID ist nicht im VZD-FHIR-Directory enthalten - ||| - MP2->MP2: Abbruch, \nVerbindung wird \nabgelehnt - ||| - end - ||| - end - ||| - end - ||| - - -MH2-->MH2: Invite-Event \nverarbeiten -||| -MH2-->MP2: status -deactivate MH2 -MP2-->MP: status -deactivate MP2 - -MP-->C: status -deactivate MP - -||| -@enduml \ No newline at end of file diff --git a/src/schema/TI-M_Pro/permissionConfig_V1.json b/src/schema/TI-M_Pro/permissionConfig_V1.json new file mode 100644 index 00000000..04b24d70 --- /dev/null +++ b/src/schema/TI-M_Pro/permissionConfig_V1.json @@ -0,0 +1,53 @@ +{ + "$id": "https://gematik.de/ti-m/permissionConfig.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Permission Configuration", + "type": "object", + "properties": { + "defaultSetting": { + "type": "string", + "enum": [ + "allow all", + "block all" + ] + }, + "serverExceptions": { + "type": "object", + "description": "The map of servers to in-/exclude. This is a mapping of Matrix server name (https://spec.matrix.org/v1.3/appendices/#server-name) to empty object.", + "patternProperties": { + "^.*$": { + "type": "object", + "description": "An empty object for future enhancement" + } + }, + "additionalProperties": false + }, + "userExceptions": { + "type": "object", + "description": "The map of users to in-/exclude. This is a mapping of Matrix user ID (https://spec.matrix.org/v1.3/appendices/#user-identifiers) to empty object.", + "patternProperties": { + "^@.*$": { + "type": "object", + "description": "An empty object for future enhancement" + } + }, + "additionalProperties": false + }, + "groupExceptions": { + "type": "array", + "uniqueItems": true, + "items": { + "groupName": { + "description": "The name of the group to be in-/excluded", + "type": "string", + "enum": [ + "isInsuredPerson" + ] + } + } + } + }, + "required": [ + "defaultSetting" + ] +} \ No newline at end of file diff --git a/src/schema/TI-M_ePA/permissionConfig_V1.json b/src/schema/TI-M_ePA/permissionConfig_V1.json new file mode 100644 index 00000000..b626bdef --- /dev/null +++ b/src/schema/TI-M_ePA/permissionConfig_V1.json @@ -0,0 +1,40 @@ +{ + "$id": "https://gematik.de/ti-m/permissionConfig.json", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Permission Configuration", + "type": "object", + "properties": { + "defaultSetting": { + "type": "string", + "enum": [ + "allow all", + "block all" + ] + }, + "serverExceptions": { + "type": "object", + "description": "The map of servers to in-/exclude. This is a mapping of Matrix server name (https://spec.matrix.org/v1.3/appendices/#server-name) to empty object.", + "patternProperties": { + "^.*$": { + "type": "object", + "description": "An empty object for future enhancement" + } + }, + "additionalProperties": false + }, + "userExceptions": { + "type": "object", + "description": "The map of users to in-/exclude. This is a mapping of Matrix user ID (https://spec.matrix.org/v1.3/appendices/#user-identifiers) to empty object.", + "patternProperties": { + "^@.*$": { + "type": "object", + "description": "An empty object for future enhancement" + } + }, + "additionalProperties": false + } + }, + "required": [ + "defaultSetting" + ] +} \ No newline at end of file diff --git a/src/schema/examples/permissionConfig.group-exception.json b/src/schema/examples/permissionConfig.group-exception.json new file mode 100644 index 00000000..715b4a24 --- /dev/null +++ b/src/schema/examples/permissionConfig.group-exception.json @@ -0,0 +1,8 @@ +{ + "defaultSetting": "allow all", + "groupExceptions": [ + { + "groupName": "isInsuredPerson" + } + ] +}