Seiteninhalt:
Dieser Implementation Guide verwendet die Schlüsselwörter MUSS, DARF NICHT, SOLL NICHT und KANN als deutsche Pendants des [RFC2119], um Anforderungen als Ausdruck normativer Festlegungen zu kennzeichnen.
Die Deklarierung als Must Support wird in der Anzeige der FHIR-Profile durch ein rotes “S” gekennzeichnet. Als Must Support deklarierte Elemente MÜSSEN durch jedes Client-System, welches diese Spezifikation implementiert, unterstützt werden. Das bedeutet:
Jede Änderung an einer FHIR-Instanz führt zu einer neuen Version dieser Instanz, wobei jede Version eine eindeutige Meta.versionId
und ein Meta.lastUpdated
erhält. Auch eine neu erstellte FHIR-Instanz wird vom FHIR Data Service mit diesen Metadaten versehen. Dadurch kann der vollständige Änderungsverlauf einer Instanz nachvollzogen werden. Der FHIR Data Service speichert und stellt die Historie aller Versionen einer FHIR-Instanz bereit. Dies umfasst auch die Möglichkeit, frühere Versionen einer Instanz über die FHIR API unter Verwendung der Meta.versionId
abzurufen. Falls eine FHIR-Instanz gleichzeitig aktualisiert wird, erkennt der FHIR Data Service potenzielle Konflikte und verarbeitet diese entsprechend.
Bei einer Aktualisierung einer FHIR-Instanz, die keine inhaltlichen Änderungen an den bestehenden Werten vornimmt, bleibt die aktuelle Version der Instanz unverändert. Der FHIR Data Service erstellt in diesem Fall keine neue Version und behält die bestehende Meta.versionId und das Meta.lastUpdated Datum bei.
Das Metadatenattribut Resource.meta.versionId
gibt die Versionsnummer einer FHIR-Instanz an. Die FHIR R4 Spezifikation definiert kein spezifisches Format für dieses Element. Die Vergabe und Verwaltung der versionId liegt ausschließlich beim FHIR Data Service.
Die _history-Abfrage im FHIR Data Service ermöglicht es, die Versionshistorie entweder einer spezifischen FHIR-Instanz oder aller Instanzen eines bestimmten ResourceType abzurufen. Damit kann nachverfolgt werden, welche Änderungen an einer Instanz vorgenommen wurden und welche Versionen im Laufe ihres Lebenszyklus existieren.
Abruf der Versionshistorie einer spezifischen Instanz
Die URL für den Abruf der Versionhistorie einer FHIR-Instanz folgt diesem Muster:
GET [base]/[ResourceType]/[id]/_history
Dabei ist:
ResourceType
der Typ der Ressource (z. B. MedicationRequest, Task)id
die eindeutige ID der Ressource_history
– Zeigt an, dass die Versionshistorie der Instanz abgerufen werden sollAbruf der Versionshistorie aller Instanzen eines Ressourcentyps
Die URL für den Abruf der Versionshistorie aller Instanzen eines Ressourcentyps folgt diesem Muster:
GET [base]/[ResourceType]/_history
Dabei gilt:
ResourceType
der Typ der Ressource (z. B. MedicationRequest, Task)_history
– Zeigt an, dass die Versionshistorien aller Instanzen dieses Ressourcentyps abgerufen werden sollen.Funktionalität und Verhalten:
Beispiel für ein Bundle mit dem Typ history
{
"resourceType" : "Bundle",
"id" : "example-history-bundle",
"type" : "history",
"total" : 2,
"link" : [
{
"relation" : "self",
"url" : "/epa/medication/api/v1/fhir/MedicationDispense/4e6e1623-778e-44a3-b208-8479f5339e43/_history"
}
],
"entry" : [
{
"fullUrl" : "http://epa4all/epa/medication/api/v1/fhir/MedicationDispense/4e6e1623-778e-44a3-b208-8479f5339e43",
"request" : {
"method" : "DELETE",
"url" : "MedicationDispense/4e6e1623-778e-44a3-b208-8479f5339e43/_history/2"
},
"response" : {
"status" : "200 OK",
"lastModified" : "2025-08-22T15:00:00.000Z"
}
},
{
"fullUrl" : "http://epa4all/epa/medication/api/v1/fhir/MedicationDispense/4e6e1623-778e-44a3-b208-8479f5339e43",
"resource" : {
"resourceType" : "MedicationDispense",
"id" : "4e6e1623-778e-44a3-b208-8479f5339e43",
"meta" : {
"versionId" : "1",
"lastUpdated" : "2025-08-22T14:43:33.244Z",
"profile" : [
"https://gematik.de/fhir/epa-medication/StructureDefinition/epa-medication-dispense"
]
},
"extension" : [
{
"url" : "https://gematik.de/fhir/epa-medication/StructureDefinition/rx-prescription-process-identifier-extension",
"valueIdentifier" : {
"system" : "https://gematik.de/fhir/epa-medication/sid/rx-prescription-process-identifier",
"value" : "162.153.303.257.459_20250301"
}
}
],
"status" : "completed",
"medicationReference" : {
"reference" : "Medication/16e5611a-911c-4c0e-a705-43b0e4e79cf6"
},
"subject" : {
"identifier" : {
"system" : "http://fhir.de/sid/gkv/kvid-10",
"value" : "X110411319"
}
},
"performer" : [
{
"actor" : {
"reference" : "Organization/a2ce62fc-1f29-4759-863e-1a1ca7f9669e"
}
}
],
"authorizingPrescription" : [
{
"reference" : "MedicationRequest/f434862b-9bf8-414d-8b94-5eaa0b4bbf01"
}
],
"whenHandedOver" : "2025-08-22",
"dosageInstruction" : [
{
"text" : "1-0-0-0"
}
],
"substitution" : {
"wasSubstituted" : false
}
},
"request" : {
"method" : "POST",
"url" : "MedicationDispense/4e6e1623-778e-44a3-b208-8479f5339e43/_history/1"
},
"response" : {
"status" : "201 Created",
"lastModified" : "2025-08-22T14:43:33.244Z"
}
}
]
}
<Bundle xmlns="http://hl7.org/fhir">
<id value="example-history-bundle"/>
<type value="history"/>
<total value="2"/>
<link>
<relation value="self"/>
<url
value="/epa/medication/api/v1/fhir/MedicationDispense/4e6e1623-778e-44a3-b208-8479f5339e43/_history"/>
</link>
<entry>
<fullUrl
value="http://epa4all/epa/medication/api/v1/fhir/MedicationDispense/4e6e1623-778e-44a3-b208-8479f5339e43"/>
<request>
<method value="DELETE"/>
<url
value="MedicationDispense/4e6e1623-778e-44a3-b208-8479f5339e43/_history/2"/>
</request>
<response>
<status value="200 OK"/>
<lastModified value="2025-08-22T15:00:00.000Z"/>
</response>
</entry>
<entry>
<fullUrl
value="http://epa4all/epa/medication/api/v1/fhir/MedicationDispense/4e6e1623-778e-44a3-b208-8479f5339e43"/>
<resource>
<MedicationDispense>
<id value="4e6e1623-778e-44a3-b208-8479f5339e43"/>
<meta>
<versionId value="1"/>
<lastUpdated value="2025-08-22T14:43:33.244Z"/>
<profile
value="https://gematik.de/fhir/epa-medication/StructureDefinition/epa-medication-dispense"/>
</meta>
<extension
url="https://gematik.de/fhir/epa-medication/StructureDefinition/rx-prescription-process-identifier-extension">
<valueIdentifier>
<system
value="https://gematik.de/fhir/epa-medication/sid/rx-prescription-process-identifier"/>
<value value="162.153.303.257.459_20250301"/>
</valueIdentifier>
</extension>
<status value="completed"/>
<medicationReference>
<reference value="Medication/16e5611a-911c-4c0e-a705-43b0e4e79cf6"/>
</medicationReference>
<subject>
<identifier>
<system value="http://fhir.de/sid/gkv/kvid-10"/>
<value value="X110411319"/>
</identifier>
</subject>
<performer>
<actor>
<reference
value="Organization/a2ce62fc-1f29-4759-863e-1a1ca7f9669e"/>
</actor>
</performer>
<authorizingPrescription>
<reference
value="MedicationRequest/f434862b-9bf8-414d-8b94-5eaa0b4bbf01"/>
</authorizingPrescription>
<whenHandedOver value="2025-08-22"/>
<dosageInstruction>
<text value="1-0-0-0"/>
</dosageInstruction>
<substitution>
<wasSubstituted value="false"/>
</substitution>
</MedicationDispense>
</resource>
<request>
<method value="POST"/>
<url
value="MedicationDispense/4e6e1623-778e-44a3-b208-8479f5339e43/_history/1"/>
</request>
<response>
<status value="201 Created"/>
<lastModified value="2025-08-22T14:43:33.244Z"/>
</response>
</entry>
</Bundle>
Um eine spezifische Version einer Ressource abzurufen, kann eine einfache HTTP GET-Anfrage an den FHIR Data Service gesendet werden. Die URL für den Abruf einer bestimmten Version einer FHIR-Instanz folgt diesem Muster:
GET [base]/[ResourceType]/[id]/_history/[versionId]
Dabei ist:
resourceType
der Typ der Ressource (z.B. Medication
, MedicationStatement
)id
die eindeutige ID der RessourceversionId
der spezifische Meta.versionId
der abzurufenden RessourcenversionBeispiel
Um die 3. Version einer MedicationStatement
-Instanz mit der ID “391fc0c6-e045-48d9-8af6-3ac2466beb88” vom FHIR Data Service abzurufen, muss die URL für die HTTP GET-Anfrage wie folgt aussehen:
GET [base]/epa/medication/api/v1/fhir/MedicationStatement/391fc0c6-e045-48d9-8af6-3ac2466beb88/_history/3
Im FHIR Data Service wird das Löschen einer Ressource als ein weiteres Ereignis im Lebenszyklus einer Ressource behandelt. Das bedeutet: Anstatt die Ressource physisch zu entfernen, wird die Ressource als gelöscht markiert und eine neue Version der Ressource erstellt, welche diesen Zustand widerspiegelt. Obwohl eine Ressource als gelöscht markiert wurde, können frühere Versionen über die versionsspezifischen Endpunkte (s.o.) abgerufen werden.
Das folgende Beispiel zeigt die erwartete Antwort nach dem Abruf einer gelöschten Instanz.
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "processing",
"diagnostics": "Resource was deleted at 2025-03-10T10:02:27.838+00:00"
}
]
}
Versionierte Referenzen in FHIR ermöglichen es, innerhalb einer FHIR-Ressource auf eine spezifische Version einer anderen Ressource zu verweisen. Dies ist besonders wichtig in Szenarien, in denen die Genauigkeit und der Kontext der bezogenen Daten über die Zeit erhalten bleiben müssen.
In FHIR kann eine Referenz auf eine andere Ressource in der Regel durch die Angabe des Ressourcentyps und der ID erfolgen. Versionierte Referenzen erweitern dieses Konzept, indem sie es ermöglichen, zusätzlich die Version der referenzierten Ressource anzugeben. Dies stellt sicher, dass immer auf den exakten Zustand der referenzierten Ressource zum Zeitpunkt der Referenzerstellung Bezug genommen wird, unabhängig von späteren Änderungen oder Aktualisierungen dieser Ressource.
Eine versionierte Referenz in FHIR beinhaltet den Ressourcentyp, die Ressourcen-ID und die spezifische Meta.versionId
der referenzierten Ressource. Das Format sieht wie folgt aus:
[ResourceType]/[id]/_history/[versionId]
Beispiel für eine versionierte Referenz auf eine spezifische Version einer MedicationStatement-Instanz:
MedicationStatement/391fc0c6-e045-48d9-8af6-3ac2466beb88/_history/4
In diesem Beispiel bezieht sich die Referenz auf die 4. Version der MedicationStatement-Instanz mit der ID 391fc0c6-e045-48d9-8af6-3ac2466beb88.