Stocker des profils dans le service FHIR
Hl7 Fast Healthcare Interopérabilité Resources (FHIR®) définit un moyen standard et interopérable de stocker et d’échanger des données médicales. Même dans la spécification FHIR de base, il peut être utile de définir d’autres règles ou extensions en fonction du contexte dans lequel FHIR est utilisé. Pour les utilisations spécifiques au contexte de FHIR, les profils FHIR sont utilisés pour la couche supplémentaire de spécifications. Le profil FHIR vous permet de limiter et de personnaliser les définitions de ressources à l’aide de contraintes et d’extensions.
Le service FHIR Azure Health Data Services permet de valider les ressources par rapport aux profils pour voir si les ressources sont conformes aux profils. Cet article vous guide tout au long des concepts de base des profils FHIR et explique comment les stocker. Pour plus d’informations sur les profils FHIR, visitez HL7.org.
Profil FHIR : principes de base
Un profil définit un contexte supplémentaire sur la ressource représentée en tant que StructureDefinition
ressource. Un StructureDefinition
ensemble de règles définit un ensemble de règles sur le contenu d’une ressource ou d’un type de données, tels que les éléments d’une ressource et les valeurs que ces éléments peuvent prendre.
Voici quelques exemples de la façon dont les profils peuvent modifier la ressource de base.
- Restreindre la cardinalité : par exemple, vous pouvez définir la cardinalité maximale sur un élément sur 0, ce qui signifie que l’élément est exclu dans le contexte spécifique.
- Limitez le contenu d’un élément à une valeur fixe unique.
- Définissez les extensions requises pour la ressource.
A StructureDefinition
est identifié par son URL canonique : http://hl7.org/fhir/StructureDefinition/{profile}
Par exemple :
http://hl7.org/fhir/StructureDefinition/patient-birthPlace
est un profil de base qui nécessite des informations sur l’adresse enregistrée de naissance du patient.http://hl7.org/fhir/StructureDefinition/bmi
est un autre profil de base qui définit comment représenter les observations de l’indice de masse corporelle (IMC).http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
est un profil US Core qui définit les attentes minimales pour laAllergyIntolerance
ressource associée à un patient, et identifie les champs obligatoires tels que les extensions et les jeux de valeurs.
Lorsqu’une ressource est conforme à un profil, le profil est spécifié à l’intérieur de l’élément profile
de la ressource. Vous pouvez voir dans l’exemple suivant le début d’une ressource « Patient », qui a http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient un 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"
]
},
Remarque
Les profils doivent s’appuyer sur la ressource de base et ne peuvent pas entrer en conflit avec la ressource de base. Par exemple, si un élément a une cardinalité de 1..1, le profil ne peut pas le rendre facultatif.
Les profils sont également spécifiés par différents guides d’implémentation (IGs). Voici une liste d’IGs courants. Pour plus d’informations, visitez le site IG spécifique pour en savoir plus sur l’IG et les profils définis dans celui-ci.
Remarque
Le service FHIR ne stocke pas de profils à partir des repères d’implémentation par défaut. Vous devrez les charger dans le service FHIR.
Accès aux profils et stockage de profils
Stockage des profils
Pour stocker des profils dans le service FHIR, vous pouvez PUT
utiliser StructureDefinition
le contenu du profil dans le corps de la demande. Une mise à jour conditionnelle standard PUT
ou conditionnelle est une bonne méthode pour stocker des profils sur le service FHIR. Utilisez la mise à jour conditionnelle si vous n’êtes pas sûr de l’utiliser.
Standard PUT
: PUT http://<your FHIR service base URL>/StructureDefinition/profile-id
ou
Mise à jour conditionnelle : PUT http://<your FHIR service base URL>/StructureDefinition?url=http://sample-profile-url
{
"resourceType" : "StructureDefinition",
"id" : "profile-id",
"url": "http://sample-profile-url"
…
}
Par exemple, si vous souhaitez stocker le us-core-allergyintolerance
profil, vous utiliserez la commande rest suivante avec le profil d’intolérance aux allergies US Core dans le corps. Nous avons inclus un extrait de code de ce profil pour l’exemple.
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.",
Pour plus d’exemples, consultez l’exemple de fichier REST US Core sur le site open source qui décrit le stockage des profils US Core. Pour obtenir les profils les plus à jour, vous devez obtenir les profils directement à partir de HL7 et le guide d’implémentation qui les définit.
Affichage des profils
Vous pouvez accéder à vos profils personnalisés existants à l’aide d’une GET
requête, GET http://<your FHIR service base URL>/StructureDefinition?url={canonicalUrl}
où {canonicalUrl}
est l’URL canonique de votre profil.
Par exemple, si vous souhaitez afficher le profil de ressource US Core Goal :
GET https://<your FHIR service base URL>/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal
Cette opération retourne la ressource pour le StructureDefinition
profil US Core Goal qui commence comme suit.
{
"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).",
}
Remarque
Vous verrez uniquement les profils que vous avez chargés dans le service FHIR.
Le service FHIR ne retourne StructureDefinition
pas d’instances pour les profils de base, mais ils sont facilement trouvés sur le site web HL7, comme les suivants.
http://hl7.org/fhir/Observation.profile.json.html
http://hl7.org/fhir/Patient.profile.json.html
Profils dans l’instruction de fonctionnalité
Les Capability Statement
listes répertorient tous les comportements possibles de votre service FHIR. Le service FHIR met à jour l’instruction de fonctionnalité avec les détails des profils stockés dans les formulaires suivants.
CapabilityStatement.rest.resource.profile
CapabilityStatement.rest.resource.supportedProfile
Par exemple, si vous POST
avez un profil us Core Patient, qui commence comme suit :
{
"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",
Et envoyez une GET
demande pour votre metadata
:
GET http://<your FHIR service base URL>/metadata
Un CapabilityStatement
retour inclut les informations suivantes sur le profil us Core Patient que vous avez chargé sur votre serveur FHIR.
...
{
"type": "Patient",
"profile": "http://hl7.org/fhir/StructureDefinition/Patient",
"supportedProfile":[
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
],
Liaisons dans les profils
Un service de terminologie est un ensemble de fonctions qui peuvent effectuer des opérations sur des « terminologies » médicales, telles que la validation de codes, la traduction de codes et l’expansion des ensembles de valeurs. Le service FHIR ne prend pas en charge le service de terminologie. Vous trouverez des informations sur les opérations prises en charge ($), les types de ressources et les interactions dans la fonctionnalité CapabilityStatement du service. Les types de ressources ValueSet, StructureDefinition et CodeSystem sont pris en charge avec les opérations CRUD de base et la recherche (telles que définies dans CapabilityStatement) et exploitées par le système pour une utilisation dans $validate.
ValueSets peut contenir un ensemble complexe de règles et de références externes. Actuellement, le service ne prend en compte que les codes inline prédéfini. Les clients doivent charger des ValueSets pris en charge sur le serveur FHIR avant d’utiliser l’opération de $validate. Les ressources ValueSet doivent être chargées sur le serveur FHIR, à l’aide de PUT ou de la mise à jour conditionnelle, comme indiqué dans la section Stockage des profils ci-dessus.
Étapes suivantes
Dans cet article, vous avez découvert les profils FHIR. Ensuite, vous allez apprendre à utiliser $validate pour vous assurer que les ressources sont conformes à ces profils.
Remarque
FHIR® est une marque déposée de HL7 utilisé avec l’autorisation de HL7.