Skip to content

Commit

Permalink
Merge pull request #153 from gematik/TC_3.0.2
Browse files Browse the repository at this point in the history
* init TC 3.0.2

* update basisodul dependency

* add link for clarification

* fix CpS Encounter Read interaction (#154)

* fix CpS Encounter Read and Search interaction

* rm SEARCH interactions

* rm: Encounter, Patient , Practitioner in CpS

* add: sentence on ISIk Basis use

* add requirement on ISIK Basis use

* add requirement practitioner

* add clarification

* Commit from GitHub Actions (CI (FHIR Validation))

* update version

* add releasenotes

---------

Co-authored-by: Alexander Zautke <[email protected]>
Co-authored-by: f-peverali <[email protected]>
  • Loading branch information
3 people authored Jan 4, 2024
2 parents 75c4931 + b605f5b commit 0989e7d
Show file tree
Hide file tree
Showing 16 changed files with 48 additions and 114 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"resourceType": "ImplementationGuide",
"url": "https://gematik.de/fhir/ISiK/v3/Terminplanung/ImplementationGuide/ISiK-Terminplanung",
"name": "Implementierungsleitfaden ISiK-Modul Terminplanung",
"version": "3.0.1",
"version": "3.0.2",
"status": "active",
"fhirVersion": [
"4.0.1"
Expand Down
6 changes: 5 additions & 1 deletion ImplementationGuide/markdown/Datenobjekte.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
# Datenobjekte

Folgende Datenobjekte und Interaktionen aus dem Modul [ISiK Basis Stufe 3](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/ImplementationGuide-markdown-Einfuehrung?version=current) sind in diesem Modul bestätigungsrelevant:
Folgende Datenobjekte aus dem Modul [ISiK Basis Stufe 3](https://simplifier.net/guide/implementierungsleitfaden-isik-basismodul-stufe-3?version=current) werden in diesem Modul verwendet:
* [Patient](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Patient?version=current)
* [Practitioner](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/markdown-Datenobjekte-Datenobjekte-PersonImGesundheitsberuf?version=current)
* [Binary](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Binary?version=current)

Die Verwendung in diesem Modul bedeutet:
Wenn dieses Modul auf Datenobjekte aus dem Basismodul referenziert, dann MÜSSEN die referenzierten FHIR-Ressourcen konform zu den Vorgaben aus dem Basismodul sein.
Die Referenzierung von im Basismodul spezifizierten Datenobjekten, bedeutet nicht, dass die Interaktionen für die entsprechenden Datenobjekte aus dem Basismodul auch im Modul Dokumentenaustausch bestätigungsrelevant sind.

Darüber hinaus gelten in diesem Modul folgende Datenobjekt-spezifische Festlegungen:

{{index:current}}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

### Motivation

Die Communication-Ressource dient als Datenobjekt für den Austausch von Nachrichten zwischen einem Leistungserbringer und einem Patienten. Es können sowohl Textnachrichten als auch Binärdateien ausgetauscht werden.
Die Communication-Ressource dient als Datenobjekt für den bidirektionalen Austausch von Nachrichten zwischen einem Leistungserbringer und einem Patienten. Es können sowohl Textnachrichten als auch Binärdateien ausgetauscht werden.

Es liegt in der Verantwortung des bestätigungsrelevanten Systems, eine dem Schutzbedarf der ausgetauschten Nachrichten angemessene Sicherheit in Bezug auf Vertraulichkeit, Integrität und Verfügbarkeit herzustellen. Die Vorgaben des BSI, z. B. aus der TR-03161, sind zu beachten. Grundsätzlich liegen der vorliegenden Definition von ISiKNachricht die folgenden Annahmen zugrunde, die auch eine Nutzung einfach umsetzbarer Sicherheitsmaßnahmen ermöglichen:
* ISiKNachricht SOLL ausschließlich für den Austausch administrativer, nicht personenbezogener Informationen im Kontext der Terminbuchung verwendet werden, z. B. zur Übermittlung von Coronahinweisen oder Lageplänen.
Expand Down Expand Up @@ -58,7 +58,7 @@ Folgende FHIRPath-Constraints sind im Profil zu beachten:

**Bedeutung:** Inhalt der Communication

**Hinweis:** Es MÜSSEN sowohl Freitext, als auch base64-kodierte Inhalte unterstützt werden. Falls strukturierte Metadaten über das zu übermittelnde Dokument verfügbar sind, KANN es als DocumentReference-Ressource abgelegt werden. Für die Anlage einer solchen Ressource wird auf das [ISiK Dokumentenaustausch](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Modul-Dokumentenaustausch-Stufe-3/ImplementationGuide-markdown-Einfuehrung?version=current) verwiesen. Die erzeugte Ressource ist anschließend unter dem contentReference-Element als Referenz anzugeben. Jegliche Funktionalität bezogen auf das Modul Dokumentenaustausch ist nicht bestätigungsrelevant. Dokumente welche als Attachment angegeben werden, MÜSSEN in ihrer URL auf eine Binary Ressource verweisen. Diese Binary-Ressource sollte per CREATE-Interaktion angelegt werden im empfangenden System.
**Hinweis:** Es MÜSSEN sowohl Freitext, als auch base64-kodierte Inhalte unterstützt werden. Falls strukturierte Metadaten über das zu übermittelnde Dokument verfügbar sind, KANN es als DocumentReference-Ressource abgelegt werden. Für die Anlage einer solchen Ressource wird auf das [ISiK Dokumentenaustausch](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Modul-Dokumentenaustausch-Stufe-3/ImplementationGuide-markdown-Einfuehrung?version=current) verwiesen. Die erzeugte Ressource ist anschließend unter dem contentReference-Element als Referenz anzugeben. Jegliche Funktionalität bezogen auf das Modul Dokumentenaustausch ist nicht bestätigungsrelevant. Dokumente welche als Attachment angegeben werden, MÜSSEN in ihrer URL auf eine [ISiKBinary](https://simplifier.net/guide/Implementierungsleitfaden-ISiK-Basismodul-Stufe-3/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Binary?version=current) Ressource verweisen. Diese Binary-Ressource sollte per CREATE-Interaktion angelegt werden im empfangenden System.

---

Expand Down
4 changes: 2 additions & 2 deletions ImplementationGuide/markdown/Einfuehrung.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<img src="https://raw.githubusercontent.com/gematik/spec-ISiK-Basismodul/master-isik-stufe-2/Material/Gematik_Logo_Flag.png" alt="gematik logo" width="400"/>

----
Version: 3.0.1
Version: 3.0.2

Datum: 30.10.2023
Datum: 03.01.2024

Status: Aktiv

Expand Down
14 changes: 14 additions & 0 deletions ImplementationGuide/markdown/ReleaseNotes.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,20 @@
Im Rahmen der ISiK-Veröffentlichungen wird das [Semantic Versioning](https://semver.org/lang/de/) verwendet.

Die erste Ziffer X bezeichnet ein Major-Release und regelt die Gültigkeit von Releases. Die dritte Ziffer Y (Release x.0.y) bezeichnet eine technische Korrektur und versioniert kleinere Änderungen (Packages) während eines Jahres, z. B. 1.0.1.

----
Version: 3.0.2

Datum: 03.01.2024

* Update ISiK Basismodul Dependency -> 3.0.1
* Klärung zur Verwendung der Binary: add link for clarification by @f-peverali in https://github.com/gematik/spec-ISiK-Terminplanung/pull/156
* CapabilityStatement Anforderungen entsprechend angepasst: fix CpS Encounter Read and Search interaction by @f-peverali in https://github.com/gematik/spec-ISiK-Terminplanung/pull/154
* Klärung zur Verwendung der Ressourcen aus dem Basismodul: Feature/ptdata 723 update interactions by @f-peverali in https://github.com/gematik/spec-ISiK-Terminplanung/pull/158
* Klärung zur Nutzung der ISiKNachricht; Feature/clarify bidirectional anfisk 178 by @f-peverali in https://github.com/gematik/spec-ISiK-Terminplanung/pull/160

**Full Changelog**: https://github.com/gematik/spec-ISiK-Terminplanung/compare/v3.0.1...v3.0.2

----
Version: 3.0.1

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,15 +68,6 @@
],
"code": "read"
},
{
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation",
"valueCode": "SHALL"
}
],
"code": "search-type"
},
{
"extension": [
{
Expand Down Expand Up @@ -142,17 +133,6 @@
"name": "actor",
"definition": "http://hl7.org/fhir/SearchParameter/Schedule-actor",
"type": "reference"
},
{
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation",
"valueCode": "SHALL"
}
],
"name": "gender",
"definition": "http://hl7.org/fhir/SearchParameter/individual-gender",
"type": "token"
}
],
"searchRevInclude": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@
"id": "Schedule.actor:Akteur",
"path": "Schedule.actor",
"sliceName": "Akteur",
"comment": "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein.",
"min": 0,
"max": "1",
"type": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
{
"id": "Communication.subject",
"path": "Communication.subject",
"comment": "Im ISIK-Kontext MUSS der referenzierte Patient konform zum [ISIKPatient](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient) des Basismoduls sein.",
"min": 1,
"type": [
{
Expand Down Expand Up @@ -74,6 +75,7 @@
],
"rules": "open"
},
"comment": "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein.",
"min": 1,
"mustSupport": true
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,7 @@
"id": "Appointment.participant:AkteurPatient",
"path": "Appointment.participant",
"sliceName": "AkteurPatient",
"comment": "Im ISIK-Kontext MUSS der referenzierte Patient konform zum [ISIKPatient](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient) des Basismoduls sein.",
"min": 1,
"max": "*",
"mustSupport": true
Expand All @@ -286,6 +287,7 @@
"id": "Appointment.participant:AkteurPersonImGesundheitsberuf",
"path": "Appointment.participant",
"sliceName": "AkteurPersonImGesundheitsberuf",
"comment": "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein.",
"min": 0,
"max": "*",
"mustSupport": true
Expand Down
1 change: 1 addition & 0 deletions Resources/input/fsh/ISiKKalender.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Id: ISiKKalender
* ^slicing.rules = #open
* actor contains Akteur 0..1 MS
* actor[Akteur] only Reference(Practitioner or HealthcareService)
* actor[Akteur] ^comment = "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein."
* actor[Akteur].reference 1..1 MS
* extension MS
* extension contains http://hl7.org/fhir/5.0/StructureDefinition/extension-Schedule.name named KalenderName 0..1 MS
Expand Down
2 changes: 2 additions & 0 deletions Resources/input/fsh/ISiKNachricht.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Id: ISiKNachricht
* status MS
* subject 1..1 MS
* subject only Reference(Patient)
* subject ^comment = "Im ISIK-Kontext MUSS der referenzierte Patient konform zum [ISIKPatient](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient) des Basismoduls sein."
* sent MS
* recipient 1..* MS
* identifier 0..1 MS
Expand All @@ -16,6 +17,7 @@ Id: ISiKNachricht
* recipient contains ISiKRecipient 1.. MS
* recipient[ISiKRecipient] only Reference(Practitioner or HealthcareService)
* recipient[ISiKRecipient].reference 1..1 MS
* recipient ^comment = "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein."
* payload 1..* MS
* content[x] MS
* contentString MS
Expand Down
2 changes: 2 additions & 0 deletions Resources/input/fsh/ISiKTermin.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,12 @@ Id: ISiKTermin
* participant[AkteurPatient].actor only Reference(Patient)
* participant[AkteurPatient].actor MS
* participant[AkteurPatient].actor.reference 1..1 MS
* participant[AkteurPatient] ^comment = "Im ISIK-Kontext MUSS der referenzierte Patient konform zum [ISIKPatient](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient) des Basismoduls sein."
* participant contains AkteurPersonImGesundheitsberuf 0.. MS
* participant[AkteurPersonImGesundheitsberuf].actor only Reference(Practitioner)
* participant[AkteurPersonImGesundheitsberuf].actor MS
* participant[AkteurPersonImGesundheitsberuf].actor.reference 1..1 MS
* participant[AkteurPersonImGesundheitsberuf] ^comment = "Im ISIK-Kontext MUSS die referenzierte Practitioner-Ressource konform zum [ISiKPersonImGesundheitsberuf](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf) des Basismoduls sein."
* participant contains AkteurMedizinischeBehandlungseinheit 0.. MS
* participant[AkteurMedizinischeBehandlungseinheit].actor only Reference(HealthcareService)
* participant[AkteurMedizinischeBehandlungseinheit].actor MS
Expand Down
84 changes: 5 additions & 79 deletions Resources/input/fsh/ISiKTerminplanungCapabilityStatement.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -15,86 +15,9 @@ Usage: #definition
* format[+] = #application/fhir+json
* instantiates = Canonical(ISiKCapabilityStatementTerminplanungServer)
* rest.mode = #server

* rest.resource[0].extension.url = $capabilitystatement-expectation
* rest.resource[=].extension.valueCode = #SHALL
* rest.resource[=].type = #Patient
* rest.resource[=].supportedProfile = "https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient"
* rest.resource[=].interaction[0].extension.url = $capabilitystatement-expectation
* rest.resource[=].interaction[=].extension.valueCode = #SHALL
* rest.resource[=].interaction[=].code = #read
* rest.resource[=].interaction[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].interaction[=].extension.valueCode = #SHALL
* rest.resource[=].interaction[=].code = #create
* rest.resource[=].interaction[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].interaction[=].extension.valueCode = #SHALL
* rest.resource[=].interaction[=].code = #search-type
* rest.resource[=].searchParam[0].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
* rest.resource[=].searchParam[=].name = "_id"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Resource-id"
* rest.resource[=].searchParam[=].type = #token
* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
* rest.resource[=].searchParam[=].name = "identifier"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Patient-identifier"
* rest.resource[=].searchParam[=].type = #token
* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
* rest.resource[=].searchParam[=].name = "family"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-family"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
* rest.resource[=].searchParam[=].name = "given"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-given"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
* rest.resource[=].searchParam[=].name = "birthdate"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-birthdate"
* rest.resource[=].searchParam[=].type = #date
* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
* rest.resource[=].searchParam[=].name = "gender"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-gender"
* rest.resource[=].searchParam[=].type = #token
* rest.resource[=].searchRevInclude = "Communication:subject"
* rest.resource[=].searchRevInclude[=].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchRevInclude[=].extension.valueCode = #SHALL
* rest.resource[=].searchRevInclude = "Appointment:actor"
* rest.resource[=].searchRevInclude[=].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchRevInclude[=].extension.valueCode = #SHALL
* rest.resource[0].extension.url = $capabilitystatement-expectation
* rest.resource[=].extension.valueCode = #SHALL
* rest.resource[=].type = #Practitioner
* rest.resource[=].supportedProfile = "https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPersonImGesundheitsberuf"
* rest.resource[=].interaction[0].extension.url = $capabilitystatement-expectation
* rest.resource[=].interaction[=].extension.valueCode = #SHALL
* rest.resource[=].interaction[=].code = #read
* rest.resource[=].interaction[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].interaction[=].extension.valueCode = #SHALL
* rest.resource[=].interaction[=].code = #search-type
* rest.resource[=].searchParam[0].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
* rest.resource[=].searchParam[=].name = "_id"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Resource-id"
* rest.resource[=].searchParam[=].type = #token
* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
* rest.resource[=].searchParam[=].name = "identifier"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/Practitioner-identifier"
* rest.resource[=].searchParam[=].type = #token
* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
* rest.resource[=].searchParam[=].name = "family"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-family"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].searchParam[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchParam[=].extension.valueCode = #SHALL
* rest.resource[=].searchParam[=].name = "given"
* rest.resource[=].searchParam[=].definition = "http://hl7.org/fhir/SearchParameter/individual-given"
* rest.resource[=].searchParam[=].type = #string
* rest.resource[=].extension.valueCode = #SHALL
* rest.resource[=].type = #Schedule
* rest.resource[=].supportedProfile = "https://gematik.de/fhir/isik/v3/Terminplanung/StructureDefinition/ISiKKalender"
* rest.resource[=].interaction[0].extension.url = $capabilitystatement-expectation
Expand Down Expand Up @@ -134,6 +57,7 @@ Usage: #definition
* rest.resource[=].searchInclude = "Schedule:actor"
* rest.resource[=].searchInclude[=].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchInclude[=].extension.valueCode = #SHALL

* rest.resource[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].extension.valueCode = #SHALL
* rest.resource[=].type = #Slot
Expand Down Expand Up @@ -170,6 +94,7 @@ Usage: #definition
* rest.resource[=].searchRevInclude = "Appointment:slot"
* rest.resource[=].searchRevInclude[=].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchRevInclude[=].extension.valueCode = #SHALL

* rest.resource[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].extension.valueCode = #SHALL
* rest.resource[=].type = #Appointment
Expand Down Expand Up @@ -273,6 +198,7 @@ Usage: #definition
* rest.resource[=].searchInclude[+] = "Communication:subject"
* rest.resource[=].searchInclude[=].extension.url = $capabilitystatement-expectation
* rest.resource[=].searchInclude[=].extension.valueCode = #SHALL

* rest.resource[+].extension.url = $capabilitystatement-expectation
* rest.resource[=].extension.valueCode = #SHALL
* rest.resource[=].type = #HealthcareService
Expand Down Expand Up @@ -329,4 +255,4 @@ Usage: #definition
* interaction[+]
* extension.url = $capabilitystatement-expectation
* extension.valueCode = #SHALL
* code = #create
* code = #create
Loading

0 comments on commit 0989e7d

Please sign in to comment.