Speichern von Profilen im FHIR-Dienst
HL7 Fast Healthcare Interoperability Resources (FHIR®) definiert eine Standard- und interoperable Methode zum Speichern und Austauschen von Gesundheitsdaten. Auch innerhalb der Basis-FHIR-Spezifikation kann es hilfreich sein, andere Regeln oder Erweiterungen basierend auf dem Kontext zu definieren, in dem FHIR verwendet wird. Für kontextspezifische 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 eingrenzen und anpassen.
Der Azure Health Data Services-FHIR-Dienst ermöglicht die Überprüfung 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 finden Sie unter HL7.org.
FHIR-Profil: Grundlagen
Ein Profil legt zusätzlichen Kontext für die Ressource fest, die als StructureDefinition
Ressource dargestellt wird. A StructureDefinition
definiert eine Reihe von Regeln für den Inhalt einer Ressource oder einen Datentyp, z. B. welche Elemente eine Ressource enthält und welche Werte diese Elemente annehmen können.
Im Folgenden finden Sie einige Beispiele dafür, wie Profile die Basisressource ändern können.
- Einschränken der Kardinalität: Sie können z. B. 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 erforderliche Erweiterungen für die Ressource.
A StructureDefinition
wird durch die kanonische URL identifiziert: http://hl7.org/fhir/StructureDefinition/{profile}
Zum Beispiel:
http://hl7.org/fhir/StructureDefinition/patient-birthPlace
ist ein Basisprofil, das Informationen über die registrierte Geburtsadresse des Patienten benötigt.http://hl7.org/fhir/StructureDefinition/bmi
ist ein weiteres Basisprofil, das definiert, wie Body Mass Index (BMI)-Beobachtungen dargestellt werden.http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
ist ein US Core-Profil, das mindeste Erwartungen für die Ressource festlegt, dieAllergyIntolerance
einem Patienten zugeordnet ist, und es identifiziert obligatorische Felder wie Erweiterungen und Wertsätze.
Wenn eine Ressource einem Profil entspricht, wird das Profil innerhalb des profile
Elements der Ressource angegeben. Im folgenden Beispiel sehen Sie den Anfang einer "Patient"-Ressource mit http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient Profil.
{
"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 können nicht mit der Basisressource in Konflikt stehen. Wenn z. B. ein Element eine Kardinalität von 1..1 aufweist, kann es vom Profil nicht optional werden.
Profile werden auch durch verschiedene Implementierungshandbücher (IGs) angegeben. Nachfolgend finden Sie eine Liste allgemeiner IGs. Weitere Informationen finden Sie auf der spezifischen IG-Website, um mehr über die IG und die darin definierten Profile zu erfahren.
Hinweis
Der FHIR-Dienst speichert standardmäßig keine Profile aus Implementierungshandbüchern. Sie müssen sie in den FHIR-Dienst laden.
Zugreifen auf Profile und Speichern von Profilen
Speichern von Profilen
Um Profile im FHIR-Dienst zu speichern, können PUT
Sie den StructureDefinition
Profilinhalt im Textkörper der Anforderung verwenden. Ein Standard PUT
oder eine bedingte Aktualisierung sind beide gute Methoden zum Speichern von Profilen im FHIR-Dienst. Verwenden Sie das bedingte Update, wenn Sie nicht sicher sind, welche Sie verwenden möchten.
Standard PUT
: PUT http://<your FHIR service base URL>/StructureDefinition/profile-id
or
Bedingte Aktualisierung: PUT http://<your FHIR service base URL>/StructureDefinition?url=http://sample-profile-url
{
"resourceType" : "StructureDefinition",
"id" : "profile-id",
"url": "http://sample-profile-url"
…
}
Wenn Sie beispielsweise das us-core-allergyintolerance
Profil speichern möchten, verwenden Sie den folgenden Rest-Befehl mit dem US Core-Allergieintoleranzprofil im Körper. Wir haben einen Codeausschnitt dieses Profils für das Beispiel eingefügt.
PUT https://<your FHIR service base URL>/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 US Core-REST-Datei auf der Open-Source-Website, die durch das Speichern von US Core-Profilen führt. Um die aktuellsten Profile zu erhalten, sollten Sie die Profile direkt aus HL7 und dem Implementierungshandbuch abrufen, das sie definiert.
Anzeigen von Profilen
Sie können auf Ihre vorhandenen benutzerdefinierten Profile über eine GET
Anforderung zugreifen, GET http://<your FHIR service base URL>/StructureDefinition?url={canonicalUrl}
wobei {canonicalUrl}
es sich um die kanonische URL Ihres Profils handelt.
Wenn Sie beispielsweise das Ressourcenprofil "US-Kernziel" anzeigen möchten:
GET https://<your FHIR service base URL>/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
Sie sehen nur die Profile, die Sie in den FHIR-Dienst geladen haben.
Der FHIR-Dienst gibt keine Instanzen für die Basisprofile zurück StructureDefinition
, aber sie können auf der HL7-Website leicht gefunden werden, z. B. die folgenden.
http://hl7.org/fhir/Observation.profile.json.html
http://hl7.org/fhir/Patient.profile.json.html
Profile in der Capability-Anweisung
In der Capability Statement
Liste sind alle möglichen Verhaltensweisen Ihres FHIR-Diensts aufgeführt. Der FHIR-Dienst aktualisiert die Funktionsanweisung mit Details zu den gespeicherten Profilen in den folgenden Formularen.
CapabilityStatement.rest.resource.profile
CapabilityStatement.rest.resource.supportedProfile
Beispiel: Wenn Sie POST
ein US Core Patient-Profil haben, 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",
Und senden Sie eine GET
Anfrage für Ihre metadata
:
GET http://<your FHIR service base URL>/metadata
Eine CapabilityStatement
wird zurückgegeben, die die folgenden Informationen zum US Core Patient-Profil enthält, das Sie auf Ihren FHIR-Server 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 in medizinischen "Terminologien" ausführen können, z. B. Das Überprüfen von Codes, übersetzen von Codes und erweiternde Wertsätze. Der FHIR-Dienst unterstützt keinen Terminologiedienst. Informationen zu unterstützten Vorgängen ($), Ressourcentypen und Interaktionen finden Sie im CapabilityStatement des Diensts. Ressourcentypen ValueSet, StructureDefinition und CodeSystem werden mit grundlegenden CRUD-Vorgängen und Der Suche (wie in der CapabilityStatement definiert) sowie vom System für die Verwendung in $validate unterstützt.
ValueSets können einen komplexen Satz von Regeln und externen Verweisen enthalten. Derzeit berücksichtigt der Dienst nur die vordefinierten Inlinecodes. Kunden müssen unterstützte ValueSets vor der Verwendung des $validate-Vorgangs auf den FHIR-Server hochladen. Die ValueSet-Ressourcen müssen auf den FHIR-Server mit PUT oder bedingter Aktualisierung hochgeladen werden, wie weiter oben im Abschnitt "Profile speichern" erwähnt.
Nächste Schritte
In diesem Artikel haben Sie mehr über FHIR-Profile gelernt. Als Nächstes erfahren Sie, wie Sie $validate verwenden können, um sicherzustellen, dass Ressourcen diesen Profilen entsprechen.
Hinweis
FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.