Subscription patient-merge (R5 Backport Subscription)
Motivation
Subscription ist eine FHIR Ressource, um als Client-System Benachrichtigungen über Events auf dem FHIR Server anzufragen. Der Subscription Mechanismus in FHIR R4 ist nicht geeignet, um alle relevanten Events (hier im Speziellen das Mergen von Patienten) zu unterstützen. Daher basiert das ISiK Subscription-Profil auf dem Subscriptions R5 Backport Profil von HL7.
Siehe auch: Übergreifende Festlegungen Patient-merge
Um als Subsystem über ein Patienten-Merge-Event informiert zu werden, KANN der FHIR Subscription Mechanismus gemäß des Subscriptions R5 Backport IGs von HL7 genutzt werden.
Kompatibilität
Das Profil PatientMergeSubscription basiert auf dem Backport-Subscription Profil.
Der SubscriptionStatus, sowie das Subscription Notification Bundle werden unverändert direkt aus dem Subscriptions R5 Backport IG genutzt.
Profil
Name | Canonical |
---|---|
PatientMergeSubscription | https://gematik.de/fhir/isik/StructureDefinition/patient-merge-subscription |
Subscription | I | Subscription | |
id | Σ | 0..1 | string |
meta | Σ | 0..1 | Meta |
implicitRules | Σ ?! | 0..1 | uri |
language | 0..1 | codeBinding | |
text | 0..1 | Narrative | |
contained | 0..* | Resource | |
extension | I | 0..* | Extension |
modifierExtension | ?! I | 0..* | Extension |
status | S Σ ?! | 1..1 | codeBinding |
contact | Σ I | 0..* | ContactPoint |
end | Σ | 0..1 | instant |
reason | S Σ | 1..1 | string |
criteria | S Σ | 1..1 | stringPattern |
id | 0..1 | string | |
extension | I | 0..* | Extension |
filterCriteria | S Σ I | 0..* | Extension(string) |
value | 0..1 | System.String | |
error | Σ | 0..1 | string |
channel | S Σ | 1..1 | BackboneElement |
id | 0..1 | string | |
extension | I | 0..* | Extension |
heartbeatPeriod | I | 0..1 | Extension(unsignedInt) |
timeout | I | 0..1 | Extension(unsignedInt) |
maxCount | I | 0..1 | Extension(positiveInt) |
modifierExtension | Σ ?! I | 0..* | Extension |
type | S Σ | 1..1 | codeBinding |
id | 0..1 | string | |
extension | I | 0..* | Extension |
customChannelType | S Σ I | 0..1 | Extension(Coding) |
value | 0..1 | System.String | |
endpoint | S Σ | 0..1 | url |
payload | S Σ | 1..1 | codeBinding |
id | 0..1 | string | |
extension | I | 1..* | Extension |
content | S Σ I | 1..1 | Extension(code) |
value | 0..1 | System.String | |
header | S Σ | 0..* | string |
Anmerkungen zu den Must-Support-Feldern
Subscription.status
Bedeutung: Der Status der Subscription, der den Serverstatus der Subscription angibt. Neue Subscriptions werden immer mit dem Status requested
an den Server übergeben. Der Server ändert im Anschluss den Status auf active
oder im Fehlerfall auf error
.
Hinweise: Siehe R4 Subscriptions
Subscription.reason
Bedeutung: Beschreibung wieso diese Subscription erstellt wurde.
Hinweise: Siehe R4 Subscriptions
Subscription.category
Bedeutung: Canonical URL des Subscription-Topics, aktuell wird nur folgendes SubscriptionTopic unterstützt: https://gematik.de/fhir/isik/SubscriptionTopic/patient-merge
Hinweise: Siehe Subscriptions R5 Backport
Subscription.type
Bedeutung: Der Typ des Kommunikationskanals, über den Subscription-Benachrichtigungen gesendet werden sollen.
Hinweise: Siehe R4 Subscriptions
Subscription.endpoint
Bedeutung: Adresse des Kommunikationskanals/ Endpunkts, an den Subscription-Benachrichtigungen gesendet werden sollen. Dies ist nur für rest-hook Subscriptions relevant.
Hinweise: Siehe R4 Subscriptions
Subscription.payload
Bedeutung: Format in dem Subscription Notifications versendet werden sollen (JSON oder XML)
Hinweise: Siehe R4 Subscriptions
Subscription.payload.extension[content]
Bedeutung: Welcher Ressourceninhalt in der Nutzlast der Benachrichtigung geliefert werden soll. Zur Auswahl stehen eine leere Nutzlast (empty
), nur die Ressourcen-id (id-only
) oder der gesamte Inhalt der Ressource (full-resource
).
Hinweise: Siehe Extension: Backport R5 Subscription Payload Content Information
Subscription.header
Bedeutung: http-Header welcher dazu genutzt werden kann einen Authorization-header zu setzen. Dies ist nur für rest-hook Subscriptions relevant.
Hinweise: ACHTUNG: dieses Datenfeld muss bei READ-Interaktionen maskiert werden! Siehe R4 Subscriptions
Interaktionen
Für die Ressource Subscription SOLL die REST-Interaktion "READ", "CREATE", "UPDATE", "DELETE" implementiert werden, insofern der festgelegte Lösungsansatz zu 'Patient merge Notification' implementiert wird.
Operations
Bei der Umsetzung des Subscription Channel Type websocket
SOLL die Operation $get-ws-binding-token
supported werden.
Siehe auch: CapabilityStatement & Patient merge und Notification
Beispiele
Subscription
{ "resourceType": "Subscription", "id": "PatientMergeSubscriptionExample", "meta": { "profile": [ "https://gematik.de/fhir/isik/StructureDefinition/patient-merge-subscription" ] }, "criteria": "https://gematik.de/fhir/isik/SubscriptionTopic/patient-merge", "channel": { "type": "rest-hook", "endpoint": "http://localhost:8081/fhir/Bundle", "payload": "application/fhir+json", "_payload": { "extension": [ { "url": "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-payload-content", "valueCode": "full-resource" } ] }, "header": [ "Authorization: Bearer xxxxxxxxxx" ] }, "status": "requested", "reason": "Patient merge subscription" }
SubscriptionNotification-Bundle
{ "resourceType": "Bundle", "id": "SubscriptionNotificationBundleExample", "type": "history", "entry": [ { "fullUrl": "urn:uuid:9bb6fcbd-8391-4e35-bd4c-620a2db47af0", "resource": { "resourceType": "Parameters", "id": "SubscriptionNotification", "meta": { "profile": [ "http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-subscription-status-r4" ] }, "parameter": [ { "name": "subscription", "valueReference": { "reference": "Subscription/1" } }, { "name": "topic", "valueCanonical": "https://gematik.de/fhir/isik/SubscriptionTopic/patient-merge" }, { "name": "status", "valueCode": "active" }, { "name": "type", "valueCode": "event-notification" }, { "name": "events-since-subscription-start", "valueString": "1" }, { "name": "notification-event", "part": [ { "name": "event-number", "valueString": "1" }, { "name": "timestamp", "valueDate": "2024-02-22" }, { "name": "focus", "valueReference": { "reference": "Patient/DorisQuelle" } } ] } ] } }, { "fullUrl": "http://example.com/fhir/Patient/DorisQuelle/_history/2", "resource": { "resourceType": "Patient", "id": "DorisQuelle", "meta": { "profile": [ "https://gematik.de/fhir/isik/StructureDefinition/ISiKPatient" ] }, "identifier": [ { "type": { "coding": [ { "code": "MR", "system": "http://terminology.hl7.org/CodeSystem/v2-0203" } ] }, "system": "https://fhir.krankenhaus.example/sid/PID", "value": "654321" }, { "system": "http://fhir.de/sid/gkv/kvid-10", "type": { "coding": [ { "code": "KVZ10", "system": "http://fhir.de/CodeSystem/identifier-type-de-basis" } ] }, "value": "A123456789" } ], "name": [ { "use": "official", "family": "Duplikat", "given": [ "Doris" ] } ], "active": false, "gender": "female", "birthDate": "1964-08-12" }, "request": { "method": "PUT", "url": "Patient/DorisQuelle" } } ] }
Patientenobjekte
Zum Beispiel für den Merge auf Ebene der Patient-Instanzen siehe Übergreifende Festlegungen Patient-merge.