Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/rollback stufe 3 interactions encounter+patient ptdata 1419 #226

Open
wants to merge 16 commits into
base: TC_3.0.5
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 4 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
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
## Akteure
### Dokumentenserver
Das bestätigungsrelevante System nimmt die Rolle des Dokumentenservers ein. Ein Dokumentenserver nimmt Dokumente von Clients zur Speicherung/Archivierung/Verwaltung entgegen und erlaubt Clients die Suche nach und den Abruf von Dokumenten.
Dieses ISiK-Modul legt fest, welche Suchkriterien mindestens implementiert werden müssen und welche Kriterien darüber hinaus optional bereitgestellt werden können.
Um Clients die Herstellung von Patienten- und Encounterkontext zu ermöglichen, müssen weiterhin die im Basismodul Stufe 3 festgelegten Interaktionen auf den Datenobjekten ["Patient"](https://simplifier.net/guide/implementierungsleitfaden-isik-basismodul-stufe-3/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Patient?version=current#ImplementationGuide-markdown-Patient-Patient-Interaktionen) und ["Kontakt/Fall (Encounter)"](https://simplifier.net/guide/implementierungsleitfaden-isik-basismodul-stufe-3/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Patient?version=current#ImplementationGuide-markdown-Patient-Patient-Interaktionen) implementiert werden.

Der Dokumentenserver nimmt im IHE-MHD-Kontext die Rollen [Document Recipient](https://profiles.ihe.net/ITI/MHD/1331_actors_and_transactions.html#133113-document-recipient) und [Document Responder](https://profiles.ihe.net/ITI/MHD/1331_actors_and_transactions.html#133114-document-responder) ein und implementiert die IHE-MHD-Interaktionen
* Simplified Publish [ITI-105] (verpflichtend)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,16 @@ Die Vereinbarungen gelten uneingeschränkt.
Es gelten die Vereinbarungen gemäß {{pagelink:ImplementationGuide/markdown/CapabilityStatement.md}}

#### [2:3.67.5 Security Considerations](https://profiles.ihe.net/ITI/MHD/ITI-67.html#23675-security-considerations)
Für Hinweise zur Implementierung von Autorisation und Authentifikation im ISiK-Kontext, siehe [Modul ISiK-Sicherheit](https://simplifier.net/isik-sicherheit-v3).
Für Hinweise zur Implementierung von Autorisation und Authentifikation im ISiK-Kontext, siehe [Modul ISiK-Sicherheit](https://simplifier.net/isik-sicherheit-v3)


#### Beispiele
* Suche anhand von Patientenkontext (PID) und Dokumentendatum:
`[base]/DocumentReference?patient.identifier=1234&creation=gt2021-10-06`
* Suche nach vorläufigen Endoskopiebefunden (anhand KDL-Dokumenttyp und `docStatus`):
f-peverali marked this conversation as resolved.
Show resolved Hide resolved
`[base]/DocumentReference?type=http://dvmd.de/fhir/CodeSystem/kdl|DG02010&doc-status=preliminary`
* Suche von Dokumenten anhand der Nummer des Abrechnungsfalles:
`[base]/DocumentReference?encounter.account:identifier=56789`

### Dokumentenzugriff (IHE MHD ITI-68 (Retrieve Document))

Expand Down
5 changes: 2 additions & 3 deletions ImplementationGuide/markdown/Datenobjekte.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,8 @@ Folgende Datenobjekte aus dem Modul [ISiK Basis Stufe 3](https://simplifier.net/
* [Kontakt/Fall (Encounter)](https://simplifier.net/guide/isik-basis-v3/ImplementationGuide-markdown-Datenobjekte-Datenobjekte-Kontakt?version=current)
* [Binary](https://simplifier.net/guide/isik-basis-v3/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.
Die Verwendung der genannten Ressourcen in diesem Modul bedeutet:
Wenn ein Profil aus diesem Modul auf die genannten Datenobjekte aus dem Basismodul referenziert, dann MÜSSEN die referenzierten FHIR-Ressourcen im ISiK-Kontext konform zu Vorgaben an diese Ressourcen aus dem Basismodul sein (Profilkonformität). Die konkreten Vorgaben zu Interaktionen und Abhängigkeiten zwischen Modulen werden noch präzisiert.

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

Expand Down
5 changes: 5 additions & 0 deletions ImplementationGuide/markdown/DecisionLog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Decision Log

Version: 3.0.5

* Problem: Durch die Entfernung von Anforderungen die Abfragen von Patienten- und Encounter-Ressourcen betreffend, sind wäre die Herstellung von Dokumentenkontexten zu besagten Ressourcen in der Regel nicht mehr möglich.
f-peverali marked this conversation as resolved.
Show resolved Hide resolved
* Lösung: Rollback der Änderung - wodurch die entsprechenden Suchparameter wieder in die Spezifikation aufgenommen werden.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Hintergrund:
    Während der Überlegung zum Entfernen der Suchparamter waren zwei Architekturen angenommen worden:

Architektur A - Integrierte Umgebung: Wir haben ein patientenführendes System (Basis -Server), das alleinig ISiK-Patienteninstanzen (und Encounter) verwaltet

Architektur B  - geteilte Patienten (und -Encounter) Verwaltung: Basis-Server und DMS persistieren voneinander unabhängig ISiK-Patienten-Instanzen

Nachträglich erscheint Architektur A als nicht der Realität in KH-Umgebungen entsprechend - womöglich auch nicht als wünschenswert da eine autonomie der Datenhaltung der verschiedenen Systeme auch bei Ausfällen ein Sicherheits-Feature darstellt.

Es stimmt daher NICHT, dass das DMS selbst keine Abfrage auf eine Patienten-Instanz erfüllen muss - sondern lediglich in der Lage sein SOLL/MUSS (dies nicht geprüft) die "referentielle Integrität" zu prüfen (ggf. noch zu forwarden) durch eine Anfrage an den Basis-Server.
Es muss dagegen angenommen werden, dass ein DMS auch immer Patienter- und Encounter-Abfragen (zumindest zur Herstellung der Ressourcen-Kontexte) ermöglichen muss.

Copy link
Contributor Author

@f-peverali f-peverali Jan 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* **Hintergrund**:
Während der Überlegung zum Entfernen der Suchparamter waren zwei Architekturen angenommen worden:
- Architektur A - Integrierte Umgebung: Wir haben ein patientenführendes System (Basis -Server), das alleinig ISiK-Patienteninstanzen (und Encounter) verwaltet
- Architektur B  - geteilte Patienten (und -Encounter) Verwaltung: Basis-Server und DMS persistieren voneinander unabhängig ISiK-Patienten-Instanzen
Nachträglich erscheint Architektur A als nicht der Realität in KH-Umgebungen entsprechend - womöglich auch nicht als wünschenswert da eine Autonomie der Datenhaltung der verschiedenen Systeme auch bei Ausfällen ein Sicherheits-Feature darstellt.
Es stimmt daher NICHT, dass das DMS selbst keine Abfrage auf eine Patienten-Instanz erfüllen muss - sondern lediglich in der Lage sein SOLL/MUSS (dies nicht geprüft) die "referentielle Integrität" zu prüfen (ggf. noch zu forwarden) durch eine Anfrage an den Basis-Server.
Es muss dagegen angenommen werden, dass ein DMS auch immer Patienter- und Encounter-Abfragen (zumindest zur Herstellung der Ressourcen-Kontexte) ermöglichen muss.

----
Version: 3.0.1

Expand Down
11 changes: 11 additions & 0 deletions ImplementationGuide/markdown/DocumentReference_Interaktionen.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,14 @@ Die in IHE-MHD geltende Einschränkung, dass Clients bei allen Suchen mindestens
Anwendungshinweise: Weitere Informationen zur Suche nach Reference-type Parametern finden sich in der [FHIR-Basisspezifikation - Abschnitt "Reference Search"](https://www.hl7.org/fhir/R4/search.html#reference).


1. Der verkettete Suchparameter "encounter.account:identifier" (zur Suche anhand der Abrechnungsfallnummer) MUSS unterstützt werden:
f-peverali marked this conversation as resolved.
Show resolved Hide resolved

Beispiele:

```GET [base]/DocumentReference?encounter.account:identifier=http://mein-krankenhaus.example/fhir/sid/fallnummern|7567867```

```GET [base]/DocumentReference?encounter.account:identifier=7567867```

Anwendungshinweise: Weitere Informationen zur Suche nach Reference-type Parametern, insbesondere in Verbindung mit dem `:identifier`-Modifier finden sich in der [FHIR-Basisspezifikation - Abschnitt "Reference Search"](https://www.hl7.org/fhir/R4/search.html#reference).

Weitere Informationen zur Suche nach verketteten Parametern finden sich in der [FHIR-Basisspezifikation - Abschnitt "Chained Parameters"](https://hl7.org/fhir/R4/search.html#chaining).
2 changes: 1 addition & 1 deletion Resources/input/fsh/ISiKDokumentenMetadaten.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ In MHD 4.2.0 wurde die Verpflichtung zur Angabe eines Identifiers gelockert, das
* subject 1..1 MS
* ^short = "Patientenbezug des Dokumentes"
* ^comment = "Im ISIK-Kontext MUSS der referenzierte Patient konform zum [ISIKPatient](https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient) des Basismoduls sein.

Für sonstige Kontexte siehe [FHIR Kernspezifikation](http://hl7.org/fhir/documentreference-definitions.html#DocumentReference.subject)"
* reference 1..1 MS
* reference 1..1 MS
Expand Down
120 changes: 119 additions & 1 deletion Resources/input/fsh/capabilitystatement.fsh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,125 @@ Usage: #definition
* format[0] = #application/fhir+xml
* format[+] = #application/fhir+json
* rest.mode = #server

* rest.resource[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* type = #Patient
* supportedProfile = "https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKPatient"
* interaction[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* code = #read
* interaction[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* code = #search-type
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "_id"
* definition = "http://hl7.org/fhir/SearchParameter/Resource-id"
* type = #token
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "identifier"
* definition = "http://hl7.org/fhir/SearchParameter/Patient-identifier"
* type = #token
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "family"
* definition = "http://hl7.org/fhir/SearchParameter/individual-family"
* type = #string
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "given"
* definition = "http://hl7.org/fhir/SearchParameter/individual-given"
* type = #string
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "birthdate"
f-peverali marked this conversation as resolved.
Show resolved Hide resolved
* definition = "http://hl7.org/fhir/SearchParameter/individual-birthdate"
* type = #date
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "gender"
f-peverali marked this conversation as resolved.
Show resolved Hide resolved
* definition = "http://hl7.org/fhir/SearchParameter/individual-gender"
* type = #token
* rest.resource[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* type = #Encounter
* supportedProfile = "https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKKontaktGesundheitseinrichtung"
* interaction[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* code = #read
* interaction[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* code = #search-type
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "_id"
* definition = "http://hl7.org/fhir/SearchParameter/Resource-id"
* type = #token
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "identifier"
* definition = "http://hl7.org/fhir/SearchParameter/Encounter-identifier"
* type = #token
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "status"
f-peverali marked this conversation as resolved.
Show resolved Hide resolved
* definition = "http://hl7.org/fhir/SearchParameter/Encounter-status"
* type = #token
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "class"
* definition = "http://hl7.org/fhir/SearchParameter/Encounter-class"
* type = #token
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "type"
* definition = "http://hl7.org/fhir/SearchParameter/clinical-patient"
* type = #reference
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* extension.valueCode = #SHALL
* extension.valueCode = #MAY

Copy link
Contributor Author

@f-peverali f-peverali Jan 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: wäre es nicht im Sinne der Wartbarkeit die Begründung hier direkt im CpS zu dokumentieren? wie könnte man das machen?
suggestion: @simoneOnFhir könntest du hier ggf. noch einen Vorschlag machen

* name = "subject"
* definition = "http://hl7.org/fhir/SearchParameter/Encounter-subject"
* type = #reference
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "part-of"
* definition = "http://hl7.org/fhir/SearchParameter/Encounter-part-of"
* type = #reference
* searchParam[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* name = "date"
* definition = "http://hl7.org/fhir/SearchParameter/Encounter-date"
* type = #date
* rest.resource[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* type = #Encounter
* supportedProfile = "https://gematik.de/fhir/isik/v3/Basismodul/StructureDefinition/ISiKKontaktGesundheitseinrichtung"
* interaction[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
* code = #read
* rest.resource[+]
* extension.url = "http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation"
* extension.valueCode = #SHALL
Expand Down
Loading