FHIR-Erweiterungen

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.