Stocker des profils dans l’API Azure pour FHIR

Hl7 Fast Healthcare Interoperability Resources (FHIR®) définit un moyen standard et interopérable de stocker et d’échanger des données de santé. 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 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 d’affiner 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 principes de base des profils FHIR et comment les stocker. Pour plus d’informations sur les profils FHIR en dehors de cet article, consultez HL7.org.

Profil FHIR : les bases

Un profil définit un contexte supplémentaire sur la ressource représentée en tant que StructureDefinition ressource. Un StructureDefinition définit un ensemble de règles sur le contenu d’une ressource ou d’un type de données, comme 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.

Un 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 AllergyIntolerance la ressource associée à un patient, et il 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. Ci-dessous, vous pouvez voir un exemple du 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"
    ]
  },

Notes

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 (IG). Certains groupes de sécurité courants sont répertoriés ci-dessous. 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 :

Notes

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

Accès aux profils et stockage des profils

Stockage des profils

Pour stocker des profils dans l’API Azure pour FHIR, vous pouvez PUT utiliser le StructureDefinition avec le contenu du profil dans le corps de la demande. Une mise à jour ou une mise à jour conditionnelle sont deux bonnes méthodes pour stocker des profils sur le service FHIR. Utilisez la mise à jour conditionnelle si vous ne savez pas laquelle utiliser.

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

or

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 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 obtenir d’autres 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 du 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}, où {canonicalUrl} est l’URL canonique de votre profil.

Par exemple, si vous souhaitez afficher le 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 d’objectif principal des États-Unis, 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 se trouvent dans le site web HL7, par exemple :

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

Profils dans l’instruction de capacité

Répertorie Capability Statement 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 sous les formes suivantes :

  • 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 serez retourné avec un CapabilityStatement qui inclut les informations suivantes sur le profil us Core Patient que vous avez chargé sur 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, le développement de jeux de valeurs, etc. Le service de l’API Azure pour 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 page 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 (tels que définis dans la propriété CapabilityStatement) et sont exploités par le système pour une utilisation dans $validate.

Les ValueSets peuvent contenir un ensemble complexe de règles et de références externes. Aujourd’hui, le service ne prend en compte que les codes inline prédéfini. Les clients doivent charger les ValueSets pris en charge sur le serveur FHIR avant d’utiliser l’opération $validate. Les ressources ValueSet doivent être chargées sur le serveur FHIR, à l’aide de PUT ou d’une 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 découvrir comment utiliser $validate pour vous assurer que les ressources sont conformes à ces profils.

FHIR® est une marque déposée de HL7 utilisé avec l’autorisation de HL7.