Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions .github/workflows/ig-publisher.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,25 @@ jobs:
image: ghcr.io/gefyra/ig-publisher-with-snapshot-support:latest
env:
SUSHI_INPUT_DIR: Resources
IG_PUBLISHER_DIR: publisher-guides/Basis-5
IG_PUBLISHER_DIR: publisher-guides/Terminplanung-5

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Fix Git Safe Directory
run: git config --global --add safe.directory '*'

# Download dependencies via FHIR Package Tool using sushi-config.yaml from Resources
- name: Download Dependencies
run: |
fhir-pkg-tool --sushi-deps-file ${{ env.SUSHI_INPUT_DIR }}/sushi-config.yaml

# Run SUSHI on Publisher Markdown directory to create menu.xml and json IG file
- name: Run SUSHI for menu
run: |
sushi ${{ env.IG_PUBLISHER_DIR }}

# Run SUSHI (FSH -> FHIR conversion) on Resources directory
- name: Run SUSHI
run: |
Expand All @@ -45,7 +53,7 @@ jobs:
with:
input_directory: ${{ env.SUSHI_INPUT_DIR }}/fsh-generated
output_directory: ${{ env.IG_PUBLISHER_DIR }}/input/resources
capability_statement_url: 'https://gematik.de/fhir/isik/CapabilityStatement/ISiKCapabilityStatementBasisServerAkteur'
capability_statement_url: 'https://gematik.de/fhir/isik/CapabilityStatement/ISiKCapabilityStatementTerminRepositoryAkteur'

# Run the HL7 FHIR IG Publisher
- name: Build IG
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[TestImplementationGuide]: ImplementationGuide-terminplanung.test.ig.html
85 changes: 85 additions & 0 deletions publisher-guides/Terminplanung-5/fsh-generated/includes/menu.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
<!-- menu.xml {% comment %}
*****************************************************************************************************
* WARNING: DO NOT EDIT THIS FILE *
* *
* This file is generated by SUSHI. Any edits you make to this file will be overwritten. *
* *
* To change the contents of this file, edit the "menu" attribute in the tank sushi-config.yaml file *
* or provide your own menu.xml in the input\includes folder *
*****************************************************************************************************
{% endcomment %} -->

<ul xmlns="http://www.w3.org/1999/xhtml" class="nav navbar-nav">
<li>
<a href="index.html">Index</a>
</li>
<li>
<a href="Motivation.html">Motivation</a>
</li>
<li>
<a href="ReleaseNotes.html">Release Notes</a>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">UseCases
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li>
<a href="UseCases.html">UseCases</a>
</li>
<li>
<a href="Akteure.html">Akteure</a>
</li>
<li>
<a href="Interaktionen.html">Interaktionen</a>
</li>
<li>
<a href="Kompatibilitaet.html">Kompatibilität</a>
</li>
<li>
<a href="Prozesse.html">Prozesse</a>
</li>
<li>
<a href="Informationsmodell.html">Informationsmodell</a>
</li>
<li>
<a href="Architekturoptionen.html">Architekturoptionen</a>
</li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">Festlegungen
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li>
<a href="Festlegungen.html">Festlegungen</a>
</li>
<li>
<a href="UebergreifendeFestlegungen.html">Übergreifende Festlegungen</a>
</li>
<li>
<a href="Operations.html">Operation $book</a>
</li>
</ul>
</li>
<li class="dropdown">
<a data-toggle="dropdown" href="#" class="dropdown-toggle">FHIR-Artefakte
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li>
<a href="artifacts.html">Artefakte</a>
</li>
<li>
<a href="capabilitystatements.html">CapabilityStatements</a>
</li>
<li>
<a href="profiles.html">Profile</a>
</li>
<li>
<a href="terminology.html">Terminology</a>
</li>
</ul>
</li>
</ul>
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
{
"resourceType": "ImplementationGuide",
"id": "terminplanung.test.ig",
"url": "http://example.org/fhir/test-terminplanung-ig/ImplementationGuide/terminplanung.test.ig",
"version": "0.0.1",
"name": "TestImplementationGuide",
"title": "Test Implementation Guide",
"status": "draft",
"description": "A test implementation guide for validating the local FHIR IG Publisher environment",
"packageId": "terminplanung.test.ig",
"license": "CC0-1.0",
"fhirVersion": [
"4.0.1"
],
"dependsOn": [
{
"packageId": "hl7.fhir.uv.ips",
"version": "1.1.0",
"uri": "http://hl7.org/fhir/uv/ips/ImplementationGuide/hl7.fhir.uv.ips",
"id": "hl7_fhir_uv_ips"
},
{
"packageId": "hl7.fhir.uv.subscriptions-backport.r4",
"version": "1.1.0",
"uri": "http://hl7.org/fhir/uv/subscriptions-backport/ImplementationGuide/hl7.fhir.uv.subscriptions-backport",
"id": "hl7_fhir_uv_subscriptions_backport_r4"
},
{
"packageId": "de.basisprofil.r4",
"version": "1.5.4",
"uri": "http://fhir.org/packages/de.basisprofil.r4/ImplementationGuide/de.basisprofil.r4",
"id": "de_basisprofil_r4"
},
{
"packageId": "de.ihe-d.terminology",
"version": "3.0.1",
"uri": "http://fhir.de/packages/de.ihe-d.terminology",
"id": "de_ihe_d_terminology"
},
{
"packageId": "dvmd.kdl.r4",
"version": "2025.0.1",
"uri": "http://fhir.org/packages/dvmd.kdl.r4/ImplementationGuide/dvmd.kdl.r4",
"id": "dvmd_kdl_r4"
},
{
"packageId": "ihe.formatcode.fhir",
"version": "1.4.0",
"uri": "https://profiles.ihe.net/fhir/ihe.formatcode.fhir/ImplementationGuide/ihe.formatcode.fhir",
"id": "ihe_formatcode_fhir"
},
{
"packageId": "hl7.fhir.uv.sdc",
"version": "3.0.0",
"uri": "http://hl7.org/fhir/uv/sdc/ImplementationGuide/hl7.fhir.uv.sdc",
"id": "hl7_fhir_uv_sdc"
},
{
"packageId": "de.gematik.terminology",
"version": "1.0.6",
"uri": "https://gematik.de/fhir/terminology/ImplementationGuide/de.gematik.terminology",
"id": "de_gematik_terminology"
}
],
"definition": {
"resource": [
{
"reference": {
"reference": "ImplementationGuide/terminplanung.test.ig"
},
"description": "A test implementation guide for validating the local FHIR IG Publisher environment",
"exampleBoolean": false,
"name": "Test Implementation Guide"
}
],
"page": {
"nameUrl": "toc.html",
"title": "Table of Contents",
"generation": "html",
"page": [
{
"nameUrl": "index.html",
"title": "Index",
"generation": "markdown"
},
{
"nameUrl": "Motivation.html",
"title": "Motivation",
"generation": "markdown"
},
{
"nameUrl": "ReleaseNotes.html",
"title": "Release Notes",
"generation": "markdown"
},
{
"nameUrl": "UseCases.html",
"title": "UseCases",
"generation": "markdown"
},
{
"nameUrl": "Akteure.html",
"title": "Akteure",
"generation": "markdown"
},
{
"nameUrl": "Interaktionen.html",
"title": "Interaktionen",
"generation": "markdown"
},
{
"nameUrl": "Kompatibilitaet.html",
"title": "Kompatibilität",
"generation": "markdown"
},
{
"nameUrl": "Prozesse.html",
"title": "Prozesse",
"generation": "markdown"
},
{
"nameUrl": "Informationsmodell.html",
"title": "Informationsmodell",
"generation": "markdown"
},
{
"nameUrl": "Architekturoptionen.html",
"title": "Architekturoptionen",
"generation": "markdown"
},
{
"nameUrl": "Festlegungen.html",
"title": "Festlegungen",
"generation": "markdown"
},
{
"nameUrl": "UebergreifendeFestlegungen.html",
"title": "Übergreifende Festlegungen",
"generation": "markdown"
},
{
"nameUrl": "Operations.html",
"title": "Operation: $book",
"generation": "markdown"
}
]
},
"parameter": [
{
"code": "copyrightyear",
"value": "2025+"
},
{
"code": "releaselabel",
"value": "STU1"
},
{
"code": "no-validate",
"value": "true"
}
]
}
}
4 changes: 4 additions & 0 deletions publisher-guides/Terminplanung-5/ig.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[IG]
ig = input/resources/ImplementationGuide-example.test.ig.json
template = https://github.com/gematik/fhir-ig-template
auto-load = true
51 changes: 51 additions & 0 deletions publisher-guides/Terminplanung-5/input/pagecontent/Akteure.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
---
topic: Akteure
---


## {{page-title}}

Innerhalb des ISiK Moduls Terminplanung kann ein beteiligtes System verschiedene Rollen einnehmen und somit unterschiedliche Aufgaben innerhalb der im Abschnitt {{pagelink:Interaktionen}} definierten Arbeitsabläufe übernehmen. Im Weiteren werden diese Rollen mithilfe der Definition von Akteuren formalisiert, sodass eine Zuordnung von relevanten Interaktionen zum jeweiligen Akteur erfolgen kann.

Allein für den Akteur Termin-Repository gelten normative Festlegungen für die Implementierung einer Schnittstelle.

Grundsätzlich wird als Terminblock eine für einen Termin buchbare Zeiteinheit verstanden, in der bestimmte Ressourcen (z.B. Fachabteilungen, Personen im Gesundheitswesen, Geräte, Räume) zur Verfügung stehen. Übergreifend über ein oder mehrere Terminblöcke hinweg kann für diese Ressourcen anschließend ein Termin vereinbart werden.

### Termin-Repository

**Definition:**

Als Termin-Repository werden alle Systeme definiert, die Informationen zu verfügbaren Termineinheiten von Ressourcen (vgl. zuvor genannte Definition) vorhalten und die dafür vereinbarten Termine als führendes System verwalten. In diesem Sinne ist ein Termin-Repository als ein zentraler Terminplanungs-Server zu verstehen.

Das Termin-Repository kann intern in ein Repository für die Termine und ein separates Repository für die buchbaren Terminblöcke (Terminblock Repository) geteilt werden.

**Beispielsysteme:**

* Patientenportal im Falle, dass das System selbst terminführend ist
* KIS / KAS inkl. Terminverwaltung

**Festlegungen'**
In diesem Modul gilt für den Akteur Termin-Repository das entsprechende {{pagelink:ISiKCapabilityStatementTerminRepositoryAkteur, text=Capability Statement}}.

### Termin-Requestor / Termin Source

**Definition:**

Als Termin-Requestor (in Anlehnung an die IHE Terminologie auch als Termin Source zu bezeichnen) werden alle Systeme definiert, die zur Erhebung, Erfassung, Anpassung oder Veränderung von Termininformationen dienen. Ein Termin-Requestor verfügt über keine permanente Persistierung der verarbeiteten Informationen. Der Termin-Requestor übernimmt die Koordination der Schnittstellenaufrufe, um einen Termin zu buchen.

**Beispielsysteme:**

* Patientenportal im Falle, dass ein externes System das terminführende System ist

### Termin-Consumer

**Definition:**

Als Termin-Consumer werden alle System definiert, die Termininformationen abfragen, um diese einem Benutzer zu präsentieren. Ein Termin-Consumer verfügt über keine permanente Persistierung der abgefragten Informationen. Durch den Termin-Consumer erfolgt explizit nur die Aufbereitung und Präsentation der Termininformationen. Eine anderweitige Verarbeitung der Termininformationen fällt in die Kategorie der anderen Akteure.

**Beispielsysteme:**

* Apps zum Anzeigen eines Kalenders
* Backendsysteme zum Versenden von Benachrichtigungen im Kontext eines Termins
* Ressourcenmanagementsoftware

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
topic: Architekturoptionen
---

## {{page-title}}

Im folgenden werden beispielhafte mögliche Architekturen dargestellt, die das Zusammenspiel von Systemen im Kontext der Terminplanung darstellen.

### KIS als terminführendes System

Eine in der Praxis vermutlich häufig vorkommende Architektur sieht das KIS als terminführendes System, im Sinne des IGs ist es somit das Termin-Repository. Darüber hinaus existiert ein Patientenportal, über das Patienten online Termine buchen können. Das Patientenportal ist somit zugleich Termin-Requestor und Termin-Consumer.

<img src="https://raw.githubusercontent.com/gematik/spec-ISiK-Basismodul/refs/heads/archive-stable-pics-etc/Material/Terminplanung/Termin_KIS_als_Repository.drawio.svg"/>

### Patientenportal als Terminführendes System

Eine andere Variante ist das Patientenportal als terminführendes System einzubinden. In dieser Variente ist das KIS weiterhin auch als Repository zu betrachten, da Kapazitäten der Leistungserbringer hier vorgehalten werden. Das Patientenportal erhält jedoch weitergehende Rechte und kann hierdurch direkt Termine buchen. Eine bidirektionale Synchronisierung des Patientenportals und des KIS muss fortlaufend durchgeführt werden.

<img src="https://raw.githubusercontent.com/gematik/spec-ISiK-Basismodul/refs/heads/archive-stable-pics-etc/Material/Terminplanung/Termin_Patientenportal_als_Repository.drawio.svg"/>
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## {{page-title}}

{{index:current}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## Informationsmodell

**Vereinfachtes Informationsmodell**


<img src="https://raw.githubusercontent.com/gematik/spec-ISiK-Basismodul/refs/heads/main-stufe-5/Material/Terminplanung/ISiK_Terminplanung_ER_Diagram.svg" width="90%"/>
Loading