Auf dieser Seite wird erläutert, wie die Cloud Healthcare API FHIR-Erweiterungen unterstützt.
Überblick
FHIR ermöglicht benutzerdefinierte Erweiterungen für Ressourcen und Datentypen. 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, das viele verschiedene FHIR-Datentypen enthalten kann.
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. Wenn Sie eine Erweiterung mit einem Array von Werten definieren möchten, müssen Sie mehrere Erweiterungselemente mit demselben url
definieren.
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 url
-Name der untergeordneten Erweiterung ist relativ zur äußeren Erweiterung. Jedes Erweiterungselement muss entweder ein Wertelement oder eine verschachtelte untergeordnete Erweiterung haben, aber nicht beides.
Das folgende Beispiel zeigt eine Patient
-Ressource mit einer komplexen patient-citizenship
-Erweiterung 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
Für die Interoperabilität können Name und Bedeutung einer Erweiterung mit einer StructureDefinition
-Ressource definiert werden, die veröffentlicht oder verteilt werden kann, damit Nutzer der Daten sie interpretieren können. Dies ist bei der Verwendung von Erweiterungen in der Cloud Healthcare API optional.
Die Identität dieser Definition wird durch die kanonische URL im Feld „url“ angegeben. 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.