Définition de paramètres de recherche personnalisés pour l’API Azure pour FHIR

La spécification FHIR® (Fast Healthcare Interoperability Resources) définit un ensemble de paramètres de recherche pour toutes les ressources et paramètres de recherche spécifiques à une ou plusieurs ressources. Toutefois, il existe des scénarios dans lesquels vous pouvez effectuer une recherche sur un élément d’une ressource qui n’est pas défini par la spécification FHIR en tant que paramètre de recherche standard. Cet article explique comment définir vos propres paramètres de recherche à utiliser dans l’API Azure pour FHIR.

Notes

Chaque fois que vous créez, mettez à jour ou supprimez un paramètre de recherche, vous devez exécuter un travail de réindexation pour permettre l’utilisation du paramètre de recherche en production. Ci-dessous, nous allons décrire comment tester les paramètres de recherche avant de réindexer l’ensemble du serveur FHIR.

Créer un paramètre de recherche

Pour créer un paramètre de recherche, vous POST êtes la SearchParameter ressource de la base de données. L’exemple de code ci-dessous montre comment ajouter l’US Core Race SearchParameter à la Patient ressource.

POST {{FHIR_URL}}/SearchParameter

{
  "resourceType" : "SearchParameter",
  "id" : "us-core-race",
  "url" : "http://hl7.org/fhir/us/core/SearchParameter/us-core-race",
  "version" : "3.1.1",
  "name" : "USCoreRace",
  "status" : "active",
  "date" : "2019-05-21",
  "publisher" : "US Realm Steering Committee",
  "contact" : [
    {
      "telecom" : [
        {
          "system" : "other",
          "value" : "http://www.healthit.gov/"
        }
      ]
    }
  ],
  "description" : "Returns patients with a race extension matching the specified code.",
  "jurisdiction" : [
    {
      "coding" : [
        {
          "system" : "urn:iso:std:iso:3166",
          "code" : "US",
          "display" : "United States of America"
        }
      ]
    }
  ],
  "code" : "race",
  "base" : [
    "Patient"
  ],
  "type" : "token",
  "expression" : "Patient.extension.where(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race').extension.value.code"
}

Notes

Le nouveau paramètre de recherche s’affiche dans l’instruction de capacité du serveur FHIR une fois que vous POSTez le paramètre de recherche dans la base de données et réindexez votre base de données. L’affichage de dans SearchParameter l’instruction de capacité est la seule façon de savoir si un paramètre de recherche est pris en charge dans votre serveur FHIR. Si vous pouvez trouver le paramètre de recherche en recherchant le paramètre de recherche, mais que vous ne le voyez pas dans l’instruction de capacité, vous devez toujours indexer le paramètre de recherche. Vous pouvez PUBLIER plusieurs paramètres de recherche avant de déclencher une opération de réindexation.

Éléments importants d’un SearchParameter:

  • url : clé unique pour décrire le paramètre de recherche. De nombreuses organisations, telles que HL7, utilisent un format d’URL standard pour les paramètres de recherche qu’elles définissent, comme indiqué ci-dessus dans le paramètre de recherche par race US Core.

  • code : la valeur stockée dans le code est celle que vous utiliserez lors de la recherche. Pour l’exemple ci-dessus, vous recherchez avec GET {FHIR_URL}/Patient?race=<code> pour obtenir tous les patients d’une race spécifique. Le code doit être unique pour la ou les ressources à laquelle le paramètre de recherche s’applique.

  • base : décrit la ou les ressources auxquelles le paramètre de recherche s’applique. Si le paramètre de recherche s’applique à toutes les ressources, vous pouvez utiliser Resource; sinon, vous pouvez répertorier toutes les ressources pertinentes.

  • type : décrit le type de données du paramètre de recherche. Le type est limité par la prise en charge de l’API Azure pour FHIR. Cela signifie que vous ne pouvez pas définir un paramètre de recherche de type Special ou définir un paramètre de recherche composite , sauf s’il s’agit d’une combinaison prise en charge.

  • expression : décrit comment calculer la valeur de la recherche. Lorsque vous décrivez un paramètre de recherche, vous devez inclure l’expression, même si elle n’est pas requise par la spécification. Cela est dû au fait que vous avez besoin de l’expression ou de la syntaxe xpath et que l’API Azure pour FHIR ignore la syntaxe xpath.

Paramètres de recherche de test

Bien que vous ne puissiez pas utiliser les paramètres de recherche en production tant que vous n’avez pas exécuté un travail de réindexation, il existe plusieurs façons de tester vos paramètres de recherche avant de réindexer l’ensemble de la base de données.

Tout d’abord, vous pouvez tester votre nouveau paramètre de recherche pour voir quelles valeurs seront retournées. En exécutant la commande ci-dessous sur une instance de ressource spécifique (en entrant leur ID), vous obtenez une liste de paires de valeurs avec le nom du paramètre de recherche et la valeur stockée pour le patient spécifique. Cela inclut tous les paramètres de recherche de la ressource et vous pouvez faire défiler pour rechercher le paramètre de recherche que vous avez créé. L’exécution de cette commande ne modifie aucun comportement dans votre serveur FHIR.

GET https://{{FHIR_URL}}/{{RESOURCE}}/{{RESOUCE_ID}}/$reindex

Par exemple, pour rechercher tous les paramètres de recherche d’un patient :

GET https://{{FHIR_URL}}/Patient/{{PATIENT_ID}}/$reindex

Le résultat aura l’aspect suivant :

{
  "resourceType": "Parameters",
  "id": "8be24e78-b333-49da-a861-523491c3437a",
  "meta": {
    "versionId": "1"
  },
  "parameter": [
    {
      "name": "deceased",
      "valueString": "http://hl7.org/fhir/special-values|false"
    },
    {
      "name": "language",
      "valueString": "urn:ietf:bcp:47|en-US"
    },
    {
      "name": "race",
      "valueString": "2028-9"
    },
...

Une fois que vous voyez que votre paramètre de recherche s’affiche comme prévu, vous pouvez réindexer une ressource unique pour tester la recherche avec l’élément. Tout d’abord, vous allez réindexer une seule ressource :

POST https://{{FHIR_URL}/{{RESOURCE}}/{{RESOURCE_ID}}/$reindex

En exécutant cette opération, définit les index pour tous les paramètres de recherche pour la ressource spécifique que vous avez définie pour ce type de ressource. Cela effectue une mise à jour du serveur FHIR. À présent, vous pouvez rechercher et définir l’en-tête utiliser des index partiels sur true, ce qui signifie qu’il retourne des résultats là où l’une des ressources a le paramètre de recherche indexé, même si toutes les ressources de ce type ne l’ont pas indexée.

En suivant notre exemple ci-dessus, vous pouvez indexer un patient pour activer la course US Core :SearchParameter

POST https://{{FHIR_URL}/Patient/{{PATIENT_ID}}/$reindex

Puis recherchez les patients qui ont une race spécifique :

GET https://{{FHIR_URL}}/Patient?race=2028-9
x-ms-use-partial-indices: true

Une fois que vous avez testé et que vous êtes convaincu que votre paramètre de recherche fonctionne comme prévu, exécutez ou planifiez votre travail de réindexation afin que les paramètres de recherche puissent être utilisés dans le serveur FHIR pour les cas d’usage de production.

Mettre à jour un paramètre de recherche

Pour mettre à jour un paramètre de recherche, utilisez PUT pour créer une nouvelle version du paramètre de recherche. Vous devez inclure le SearchParameter ID dans l’élément id du corps de la PUT demande et dans l’appel PUT .

Notes

Si vous ne connaissez pas l’ID de votre paramètre de recherche, vous pouvez le rechercher. L’utilisation GET {{FHIR_URL}}/SearchParameter retourne tous les paramètres de recherche personnalisés, et vous pouvez faire défiler le paramètre de recherche pour trouver le paramètre de recherche dont vous avez besoin. Vous pouvez également limiter la recherche par nom. Avec l’exemple ci-dessous, vous pouvez rechercher un nom à l’aide de USCoreRace: GET {{FHIR_URL}}/SearchParameter?name=USCoreRace.

PUT {{FHIR_URL}}/SearchParameter/{SearchParameter ID}

{
  "resourceType" : "SearchParameter",
  "id" : "SearchParameter ID",
  "url" : "http://hl7.org/fhir/us/core/SearchParameter/us-core-race",
  "version" : "3.1.1",
  "name" : "USCoreRace",
  "status" : "active",
  "date" : "2019-05-21",
  "publisher" : "US Realm Steering Committee",
  "contact" : [
    {
      "telecom" : [
        {
          "system" : "other",
          "value" : "http://www.healthit.gov/"
        }
      ]
    }
  ],
  "description" : "New Description!",
  "jurisdiction" : [
    {
      "coding" : [
        {
          "system" : "urn:iso:std:iso:3166",
          "code" : "US",
          "display" : "United States of America"
        }
      ]
    }
  ],
  "code" : "race",
  "base" : [
    "Patient"
  ],
  "type" : "token",
  "expression" : "Patient.extension.where(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race').extension.value.code"
}

Le résultat est une mise à jour SearchParameter et la version est incrémentée.

Avertissement

Soyez prudent lors de la mise à jour de SearchParameters qui ont déjà été indexés dans votre base de données. La modification du comportement d’un SearchParameter existant peut avoir un impact sur le comportement attendu. Nous vous recommandons d’exécuter immédiatement un travail de réindexation.

Supprimer un paramètre de recherche

Si vous devez supprimer un paramètre de recherche, utilisez les éléments suivants :

Delete {{FHIR_URL}}/SearchParameter/{SearchParameter ID}

Avertissement

Soyez prudent lors de la suppression de SearchParameters qui ont déjà été indexés dans votre base de données. La modification du comportement d’un SearchParameter existant peut avoir un impact sur le comportement attendu. Nous vous recommandons d’exécuter immédiatement un travail de réindexation.

Étapes suivantes

Dans cet article, vous avez appris à créer un paramètre de recherche. Vous pouvez ensuite apprendre à réindexer votre serveur FHIR.

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