Partager via


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 la AllergyIntolerance 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}{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.