Speichern von Profilen in der Azure-API für FHIR

HL7 Fast Healthcare Interoperability Resources (FHIR®) definiert eine standardmäßige und interoperable Methode zum Speichern und Austauschen von Gesundheitsdaten. Selbst innerhalb der FHIR-Basisspezifikation kann es hilfreich sein, andere Regeln oder Erweiterungen basierend auf dem Kontext zu definieren, in dem FHIR verwendet wird. Für solche kontextspezifischen Verwendungen von FHIR werden FHIR-Profile für die zusätzliche Spezifikationsebene verwendet. Mit dem FHIR-Profil können Sie Ressourcendefinitionen mithilfe von Einschränkungen und Erweiterungen einschränken und anpassen.

Azure API for FHIR ermöglicht das Überprüfen von Ressourcen anhand von Profilen, um festzustellen, ob die Ressourcen den Profilen entsprechen. Dieser Artikel führt Sie durch die Grundlagen von FHIR-Profilen und deren Speicherung. Weitere Informationen zu FHIR-Profilen außerhalb dieses Artikels finden Sie unter HL7.org.

FHIR-Profil: die Grundlagen

Ein Profil legt zusätzlichen Kontext für die Ressource fest, die als StructureDefinition Ressource dargestellt wird. Ein StructureDefinition definiert einen Satz von Regeln für den Inhalt einer Ressource oder eines Datentyps, z. B. welche Elemente eine Ressource aufweist und welche Werte diese Elemente annehmen können.

Im Folgenden finden Sie einige Beispiele, wie Profile die Basisressource ändern können:

  • Kardinalität einschränken: Sie können beispielsweise die maximale Kardinalität für ein Element auf 0 festlegen, was bedeutet, dass das Element im spezifischen Kontext ausgeschlossen ist.
  • Beschränken Sie den Inhalt eines Elements auf einen einzelnen festen Wert.
  • Definieren Sie die erforderlichen Erweiterungen für die Ressource.

A StructureDefinition wird durch die kanonische URL identifiziert: http://hl7.org/fhir/StructureDefinition/{profile}

Beispiel:

  • http://hl7.org/fhir/StructureDefinition/patient-birthPlace ist ein Basisprofil, das Informationen zur registrierten Geburtsadresse des Patienten erfordert.
  • http://hl7.org/fhir/StructureDefinition/bmi ist ein weiteres Basisprofil, das definiert, wie BMI-Beobachtungen (Body Mass Index) dargestellt werden.
  • http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance ist ein US Core-Profil, das Mindesterwartungen für AllergyIntolerance die einem Patienten zugeordnete Ressource festlegt und obligatorische Felder wie Erweiterungen und Wertsätze identifiziert.

Wenn eine Ressource einem Profil entspricht, wird das Profil im profile Element der Ressource angegeben. Unten sehen Sie ein Beispiel für den Anfang einer Ressource "Patient", die über ein Profil verfügt http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient .

{
  "resourceType" : "Patient",
  "id" : "ExamplePatient1",
  "meta" : {
    "lastUpdated" : "2020-10-30T09:48:01.8512764-04:00",
    "source" : "Organization/PayerOrganizationExample1",
    "profile" : [
      "http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient"
    ]
  },

Hinweis

Profile müssen auf der Basisressource aufbauen und dürfen nicht mit der Basisressource in Konflikt stehen. Wenn ein Element beispielsweise die Kardinalität 1..1 aufweist, kann das Profil es nicht optional machen.

Profile werden auch durch verschiedene Implementierungsleitfäden (IGs) angegeben. Einige gängige IGs sind unten aufgeführt. Weitere Informationen finden Sie auf der spezifischen IG-Website, um mehr über die IG und die darin definierten Profile zu erfahren:

Hinweis

Die Azure-API für FHIR speichert standardmäßig keine Profile aus Implementierungshandbüchern. Sie müssen sie in die Azure-API für FHIR laden.

Zugreifen auf Profile und Speichern von Profilen

Speichern von Profilen

Um Profile in Azure API for FHIR zu speichern, können PUT Sie mit StructureDefinition dem Profilinhalt im Textkörper der Anforderung speichern. Ein Update oder ein bedingtes Update sind beide gute Methoden zum Speichern von Profilen im FHIR-Dienst. Verwenden Sie das bedingte Update, wenn Sie sich nicht sicher sind, welche Sie verwenden sollen.

Standard PUT: PUT http://<your Azure API for FHIR base URL>/StructureDefinition/profile-id

or

Bedingte Aktualisierung: PUT http://<your Azure API for FHIR base URL>/StructureDefinition?url=http://sample-profile-url

{ 
"resourceType" : "StructureDefinition",
"id" : "profile-id",
"url": "http://sample-profile-url"
	…
}

Wenn Sie z. B. das us-core-allergyintolerance Profil speichern möchten, verwenden Sie den folgenden Restbefehl mit dem US Core-Profil für Allergieintoleranz im Körper. Für das Beispiel haben wir einen Ausschnitt dieses Profils eingefügt.

PUT https://myAzureAPIforFHIR.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
{
    "resourceType" : "StructureDefinition",
    "id" : "us-core-allergyintolerance",
    "text" : {
        "status" : "extensions"
    },
    "url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance",
    "version" : "3.1.1",
    "name" : "USCoreAllergyIntolerance",
    "title" : "US  Core AllergyIntolerance Profile",
    "status" : "active",
    "experimental" : false,
    "date" : "2020-06-29",
        "publisher" : "HL7 US Realm Steering Committee",
    "contact" : [
    {
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.healthit.gov"
        }
      ]
    }
  ],
    "description" : "Defines constraints and extensions on the AllergyIntolerance resource for the minimal set of data to query and retrieve allergy information.",

Weitere Beispiele finden Sie in der REST-Beispieldatei für US Core auf der Open-Source-Website, die durch das Speichern von US Core-Profilen führt. Um die neuesten Profile zu erhalten, sollten Sie die Profile direkt aus HL7 und dem Implementierungsleitfaden abrufen, in dem sie definiert werden.

Anzeigen von Profilen

Sie können auf Ihre vorhandenen benutzerdefinierten Profile über eine GET Anforderung zugreifen, GET http://<your Azure API for FHIR base URL>/StructureDefinition?url={canonicalUrl}wobei {canonicalUrl} die kanonische URL Ihres Profils ist.

Wenn Sie beispielsweise das US Core Goal-Ressourcenprofil anzeigen möchten:

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal

Dadurch wird die Ressource für das StructureDefinition US-Kernzielprofil zurückgegeben, das wie folgt beginnt:

{
  "resourceType" : "StructureDefinition",
  "id" : "us-core-goal",
  "url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal",
  "version" : "3.1.1",
  "name" : "USCoreGoalProfile",
  "title" : "US Core Goal Profile",
  "status" : "active",
  "experimental" : false,
  "date" : "2020-07-21",
  "publisher" : "HL7 US Realm Steering Committee",
  "contact" : [
    {
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://www.healthit.gov"
        }
      ]
    }
  ],
  "description" : "Defines constraints and extensions on the Goal resource for the minimal set of data to query and retrieve a patient's goal(s).",

}

Hinweis

Es werden nur die Profile angezeigt, die Sie in die Azure-API für FHIR geladen haben.

Azure API for FHIR gibt keine Instanzen für die Basisprofile zurück StructureDefinition , sie finden Sie jedoch auf der HL7-Website, z. B.:

  • http://hl7.org/fhir/Observation.profile.json.html
  • http://hl7.org/fhir/Patient.profile.json.html

Profile in der Funktionsanweisung

In Capability Statement werden alle möglichen Verhaltensweisen der Azure-API für FHIR aufgelistet. Azure API for FHIR aktualisiert die Funktionsanweisung mit Details zu den gespeicherten Profilen in folgenden Formen:

  • CapabilityStatement.rest.resource.profile
  • CapabilityStatement.rest.resource.supportedProfile

Wenn Sie beispielsweise ein US Core Patient-Profil speichern, das wie folgt beginnt:

{
  "resourceType": "StructureDefinition",
  "id": "us-core-patient",
  "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient",
  "version": "3.1.1",
  "name": "USCorePatientProfile",
  "title": "US Core Patient Profile",
  "status": "active",
  "experimental": false,
  "date": "2020-06-27",
  "publisher": "HL7 US Realm Steering Committee",

Senden Sie eine GET Anforderung für Ihre metadata:

GET http://<your Azure API for FHIR base URL>/metadata

Sie werden mit einem CapabilityStatement zurückgegeben, das die folgenden Informationen zum Profil "US Core Patient" enthält, das Sie in die Azure-API für FHIR hochgeladen haben:

...
{
    "type": "Patient",
    "profile": "http://hl7.org/fhir/StructureDefinition/Patient",
    "supportedProfile":[
        "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
    ],

Bindungen in Profilen

Ein Terminologiedienst ist eine Reihe von Funktionen, die Vorgänge für medizinische "Terminologien" ausführen können, z. B. das Überprüfen von Codes, das Übersetzen von Codes, das Erweitern von Wertsätzen usw. Der Azure-API für FHIR-Dienst unterstützt keinen Terminologiedienst. Informationen zu unterstützten Vorgängen ($), Ressourcentypen und Interaktionen finden Sie im CapabilityStatement des Diensts. Die Ressourcentypen ValueSet, StructureDefinition und CodeSystem werden mit grundlegenden CRUD-Vorgängen und Der Suche (wie im CapabilityStatement definiert) unterstützt und vom System für die Verwendung in $validate genutzt.

ValueSets können einen komplexen Satz von Regeln und externen Verweisen enthalten. Heute berücksichtigt der Dienst nur die vorab erweiterten Inlinecodes. Kunden müssen unterstützte ValueSets auf den FHIR-Server hochladen, bevor sie den $validate-Vorgang verwenden. Die ValueSet-Ressourcen müssen mithilfe von PUT oder bedingter Aktualisierung auf den FHIR-Server hochgeladen werden, wie im Abschnitt Speichern von Profilen oben beschrieben.

Nächste Schritte

In diesem Artikel haben Sie mehr über FHIR-Profile erfahren. Als Nächstes erfahren Sie, wie Sie $validate verwenden können, um sicherzustellen, dass Ressourcen diesen Profilen entsprechen.

FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.