Partager via


Stocker des profils dans l’API Azure pour FHIR

Important

L’API Azure pour FHIR sera mise hors service le 30 septembre 2026. Suivez les stratégies de migration pour passer au service FHIR® de Services de données de santé Azure d’ici à cette date. En raison de la mise hors service de l’API Azure pour FHIR, les nouveaux déploiements ne seront plus autorisés à compter du 1er avril 2025. Le service FHIR des Services de données de santé Azure est la version évoluée de l’API Azure pour FHIR qui permet aux clients de gérer les services FHIR, DICOM et MedTech avec des intégrations dans d’autres services Azure.

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 utilisé par FHIR. Pour ces 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.

L’API Azure pour FHIR 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 comment les stocker. Pour plus d’informations sur les profils FHIR en dehors de cet article, 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, telles que les éléments qu’une ressource a et quelles valeurs 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}.

Voici quelques exemples.

  • 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 en matière AllergyIntolerance de ressources associées à 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. Voici un exemple de début d’une Patient ressource, qui a le profil 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"
    ]
  },

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 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

L’API Azure pour FHIR par défaut ne stocke aucun profil à partir de guides d’implémentation. Vous devez les charger dans l’API Azure pour FHIR.

Accès aux profils et stockage de profils

Stockage des profils

Pour stocker des profils dans l’API Azure pour FHIR, vous pouvez PUT utiliser StructureDefinition le contenu du profil dans le corps de la requête. Une mise à jour ou une mise à jour conditionnelle sont les deux bonnes méthodes pour stocker des profils sur le service FHIR. Utilisez la mise à jour conditionnelle si vous n’êtes pas sûr de l’utilisation.

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

ou

Mise à jour conditionnelle : 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"
	…
}

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://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.",

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 Azure API for FHIR base URL>/StructureDefinition?url={canonicalUrl}{canonicalUrl} est l’URL canonique de votre profil.

Par exemple, utilisez ce qui suit si vous souhaitez afficher un profil de ressource US Core Goal.

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/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 l’API Azure pour FHIR.

L’API Azure pour FHIR ne retourne StructureDefinition pas d’instances pour les profils de base, mais elles sont disponibles sur le site web HL7.

  • 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 l’API Azure pour FHIR. L’API Azure pour 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 enregistrez 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 Azure API for FHIR base URL>/metadata

Vous êtes retourné, CapabilityStatement qui inclut les informations suivantes sur le profil us Core Patient que vous avez chargé dans l’API Azure pour 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, l’expansion des jeux de valeurs et d’autres opérations.
L’API Azure pour 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 le service CapabilityStatement. Les types de ValueSetressources et StructureDefinition CodeSystem sont pris en charge avec les opérations de création, de lecture, de mise à jour et de suppression (CRUD) de base et de recherche (telles que définies dans le CapabilityStatement), ainsi que d’être exploités par le système à utiliser dans $validate.

ValueSets peut contenir un ensemble complexe de règles et de références externes. Aujourd’hui, le service considère uniquement les codes inline prédéfinits. Les clients doivent charger des ValueSets pris en charge sur le serveur FHIR avant d’utiliser l’opération $validate . Les ValueSet ressources doivent être chargées sur le serveur FHIR, à l’aide de put ou de mise à jour conditionnelle, comme indiqué dans la section stockage des profils .

Étapes suivantes

Dans cet article, vous avez découvert les profils FHIR. Ensuite, vous pouvez 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.