Auf dieser Seite wird erläutert, wie die Cloud Healthcare API FHIR-Erweiterungen:
Überblick
FHIR ermöglicht benutzerdefinierte Erweiterungen für Ressourcen und Datentypen. Die Die Cloud Healthcare API unterstützt das Speichern und Abrufen dieser Erweiterungen.
Erweiterungswerte
Ein Erweiterungselement ist ein Schlüssel/Wert-Paar. Der im Feld url
gespeicherte Schlüssel gibt die kanonische URL einer Erweiterungsdefinition an, die den Inhalt und die Bedeutung der Erweiterung definiert. Das Feld value
ist ein Auswahlelement
die viele verschiedene FHIR-Datentypen enthalten können.
Dieser Mechanismus ist in allen FHIR-Versionen gleich, außer dass frühere Versionen weniger verfügbare Datentypen haben. Die verfügbaren Datentypen für Erweiterungen finden Sie im FHIR-Standard (DSTU2, STU3, R4).
Das folgende Beispiel zeigt eine Patient
-Ressource mit zwei Erweiterungen, Haarfarbe und Staatsangehörigkeit, im Stammelement:
{
"resourceType": "Patient",
"active": true,
"gender": "male",
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/hair-color",
"valueString": "brown"
},
{
"url": "http://example.com/fhir/StructureDefinition/patient-citizenship",
"valueCodeableConcept": {
"coding" : [{
"system" : "urn:iso:std:iso:3166",
"code" : "US"
}]
}
}
]
}
Komplexe Datentypen und Elemente mit untergeordneten Feldern können ebenfalls Erweiterungen haben. Beispielsweise enthält Patient
eine Erweiterung für das identifier
-Feld, die ein komplexer Datentyp ist, und eine Erweiterung für das communication
-Feld, die andere untergeordnete Felder enthält:
{
"resourceType": "Patient",
"active": true,
"gender": "male",
"identifier": [
"system": "MRN",
"value": "AB1234",
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/last-verified",
"valueDateTime": "2021-01-01T00:00:00Z"
}
]
],
"communication": [
{
"language": {
"coding": [{
"system": "urn:iso:std:iso:639",
"code": "EN"
}]
},
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/fluency-level",
"valueInteger": 7
}
]
}
]
}
Jedes Erweiterungselement kann nur ein einziges Wertfeld haben. Um eine
Erweiterung, die ein Array von Werten enthält, müssen Sie mehrere Erweiterungen definieren
Elemente mit derselben url
.
Für folgende Ressourcentypen können Sie Erweiterungen für das Stammelement nicht definieren:
Binary
Bundle
Parameters
Komplexe Erweiterungen
Erweiterungen können Erweiterungen enthalten, um eine verschachtelte Struktur zu definieren. Der Name url
der untergeordneten Erweiterung relativ zur äußeren Erweiterung. Jede Erweiterung
-Element muss entweder ein Wertelement oder eine verschachtelte untergeordnete Erweiterung haben, darf jedoch nicht
beides.
Das folgende Beispiel zeigt eine Patient
-Ressource, die eine komplexe
Erweiterung patient-citizenship
mit den untergeordneten Erweiterungen code
und period
:
{
"resourceType": "Patient",
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-citizenship",
"extension": [
{
"url": "code",
"valueCodeableConcept": {
"coding": [{
"system": "urn:iso:std:iso:3166",
"code": "CA"
}]
}
},
{
"url": "period",
"valuePeriod": {
"start": "2010-01-01"
}
}
]
}
]
}
Erweiterungen für primitive Typen
Primäre Datentypen in FHIR können ebenfalls Erweiterungen haben. Im JSON-Format werden die Erweiterungen in einem zusätzlichen JSON-Attribut mit _
dargestellt, mit dem Namen des einfachen Elements vorangestellt, wie in der FHIR-JSON-Darstellung beschrieben.
Das folgende Beispiel im JSON-Format zeigt eine Patient
-Ressource mit einer Erweiterung im birthDate
-Feld:
{
"resourceType": "Patient",
"active": true,
"gender": "male",
"birthDate": "1970-01-01",
"_birthDate": {
"extension": [
{
"url": "http://example.com/fhir/StructureDefinition/date-type",
"valueString": "A"
}
]
}
}
Wenn das einfache Element wiederholt wird, wird das Attribut mit _
auch als Array behandelt. Dabei werden Nullwerte verwendet, um Erweiterungswerte den entsprechenden einfachen Elementen zuzuordnen.
Das folgende Beispiel zeigt eine Patient
-Ressource mit einer Erweiterung für den zweiten Wert von name.given
, aber ohne Erweiterung für den ersten Wert:
{
"resourceType": "Patient",
"name": {
"given": [
"ABC",
"DEF"
],
"_given": [
null,
{
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/display",
"valueString": "XYZ"
}
]
}
]
}
}
Erweiterung mit einer StructureDefinition
definieren
Im Sinne der Interoperabilität können Name und Bedeutung einer Erweiterung
mit einer StructureDefinition
-Ressource definiert werden, die veröffentlicht oder
die verteilt werden, damit die Verbraucher der Daten sie interpretieren können. Dies ist optional.
wenn Sie Erweiterungen in der Cloud Healthcare API verwenden.
Die Identität dieser Definition ist an der kanonischen URL erkennbar
in der URL ein. Für Daten, die zwischen Organisationen ausgetauscht werden, wird empfohlen, eine URL zu verwenden, mit der Datennutzer die StructureDefinition
abrufen können. Die Cloud Healthcare API validiert diese URL nicht und versucht auch nicht, sie zu beheben.
Der Inhalt einer StructureDefinition
-Ressource kann komplex sein und wird häufig mit Tools zum Erstellen von FHIR-Profilen definiert.
Modifikatorerweiterungen
Modifikatorerweiterungen ähneln Erweiterungen, werden jedoch im Feld modifierExtension
gespeichert. Modifikatorerweiterungen sind zusätzliche Daten, die nicht ignoriert werden können, da sie die Interpretation des Elements, das sie enthält, ungültig machen könnte.
Modifikatorerweiterungen könnten beispielsweise angeben, dass ein Patient nicht die angegebene Erkrankung hat oder dass ein Medikament nicht verschrieben werden darf.
Die Cloud Healthcare API speichert und ruft Modifikatorerweiterungen ab, versucht jedoch nicht, deren Bedeutung zu interpretieren. Anwendungen sollten beim Auftreten unverständlicher Modifikatorerweiterungen entsprechende Maßnahmen ergreifen. Es kann beispielsweise eine Warnung angezeigt werden, oder die Ressource kann vollständig abgelehnt werden. Nach Möglichkeit sollten Modifikatorenerweiterungen vermieden werden.