FHIR-Ressourcenreferenzen

Auf dieser Seite wird erläutert, wie die Cloud Healthcare API FHIR-Ressourcenreferenzen unterstützt.

Übersicht

FHIR-Ressourcenreferenzen sind gerichtete Links von einer Quellressource zu einer Zielressource. FHIR-Ressourcenreferenzen können zum Verbinden von Ressourcen verwendet werden. Beispiel: Der FHIR-Ressourcentyp Observation hat ein subject-Feld des Typs Referenz, der zum Verknüpfen mit einer Patient-Ressource als Gegenstand der Beobachtung verwendet werden kann.

Verweise auf FHIR-Ressourcen können auch kreisläufig sein. Beispiel: Der FHIR-Ressourcentyp CarePlan hat ein replaces-Feld, das auf eine andere CarePlan verweisen kann.

Das wichtigste Element in der FHIR-Referenzstruktur ist die Referenz. Die anderen Elemente wie display und identifier werden unverändert in der Cloud Healthcare API gespeichert.

Folgende Formate von Reference.reference werden in der Cloud Healthcare API unterstützt:

Referenz zu lokalen Ressourcen

Ressourcenreferenzen sind als RESOURCE_TYPE/RESOURCE_ID definiert. Die Cloud Healthcare API unterstützt auch das Voranstellen des vollständigen FHIR-Speichernamens vor RESOURCE_TYPE/RESOURCE_ID. Beispiel: FHIR_STORE_NAME/RESOURCE_TYPE/RESOURCE_ID. Wenn Sie dieses Format verwenden, muss der Speichername mit dem FHIR-Speicher der Anfrage übereinstimmen. Andernfalls wird die Anfrage aufgrund von nicht lokalen Referenzen abgelehnt.

Die Speicherkonfigurationsoption FhirStore.disableReferentialIntegrity steuert die referenzielle Integritätsprüfung für die lokale Referenzvalidierung, die standardmäßig aktiviert ist. Weitere Informationen zur referenziellen Integritätsprüfung finden Sie unter FHIR – referenzielle Integrität.

Versionierte Referenzen

Die Cloud Healthcare API unterstützt Verweise auf eine bestimmte Version der Zielressource. Für die Verknüpfung mit einer bestimmten Version der Zielressource verwenden Sie das Format nach der RESOURCE_ID/_history/VERSION_ID] in der lokalen Referenz.

Wenn die referenzielle Integritätsprüfung aktiviert ist, prüft der Server, ob die historische Version im FHIR-Speicher vorhanden ist. Mit der Methode Resource-purge werden bisherige Versionen unabhängig davon entfernt, ob sie referenziert werden.

Bedingte Referenzen

Als Alternative zur expliziten Angabe der Zielressourcen-ID akzeptiert executeBundle eine Suchanfrage mit einer bedingten Referenz für die Zielressource, die in die Zielressourcen-ID zur Zeit der Anfrage aufgelöst wird. Beispiel: Patient?identifier=abc

Wird die Suchanfrage nicht in eine Zielressource oder in mehr als eine Zielressource aufgelöst, so lehnt der Server die Anfrage ab, unabhängig davon, ob die Integritätsprüfung aktiviert ist.

URI, der mit urn:uuid oder urn:oid beginnt

Wenn Sie die Methode executeBundle mit einem Transaktions-Bundle verwenden, können UUID-Referenzen (Universally Unique Identifier) oder Objekt-ID-Referenzen (OID) verwendet werden, um Verweise auf andere Ressourcen, die im selben Bundle erstellt oder aktualisiert werden, aufzulösen. Weitere Informationen finden Sie in der Anleitung zur Verwaltung von FHIR-Bundles.

Vollständige externe URL

Vollständige externe URLs wie http://www.example.com/abc werden im Referenzfeld unverändert gespeichert. Die Cloud Healthcare API löst die URL nicht auf oder versucht, ihre Gültigkeit zu überprüfen.

Wenn die vollständige externe URL mit der vollständigen URL des FHIR-Speichers der Anfrage übereinstimmt, wird die Referenz als lokale Ressourcenreferenz behandelt.

Fragmentreferenz

Ein Fragmentbezug verweist auf eine enthaltene Ressource in einer Ressource enthalten ist. Wenn beispielsweise in einem Beobachtungsdatensatz ein Allgemeinmediziner genannt wird, aber kein kontrolliertes Ärzteverzeichnis vorhanden ist, kann keine vollständige Arztressource erstellt werden. Der Allgemeinmediziner ist eine im Beobachtungsdatensatz enthaltene Ressource. Die Referenzfelder für eine Ressource können mit dem Format #[INLINE_RESOURCE_ID] auf die Inline-Ressourcen verweisen.

Im folgenden FHIR-R4-Beispiel sind p1 und p2 Inline-Ressourcen-IDs, auf die als #p1 und #p2 verwiesen wird:

{
  "resourceType": "Observation",
  "contained": [
    {
      "resourceType":"Patient",
      "id": "p1",
      "generalPractitioner": {"reference": "#p2"}
    },
    {
      "resourceType":"Practitioner",
      "id": "p2"
    }
  ],
  "status": "final",
  "subject": {"reference": "#p1"},
  "performer": [{"reference": "#p2"}]
}

Die [INLINE_RESOURCE_ID] muss als enthaltene Ressource innerhalb der Ressource vorhanden sein. Andernfalls lehnt der Server die Anfrage ab. Auf die enthaltene Ressource kann nur von ihrem Container oder anderen enthaltenen Ressourcen im selben Container verwiesen werden.