Valider des ressources FHIR par rapport à des profils dans Azure Health Data Services

Dans l’article Profils de magasin du service FHIR , vous avez décrit les principes de base des profils FHIR et leur stockage. Le service FHIR dans Azure Health Data Services (ci-après appelé service 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 de l’utilisation $validate pour valider des ressources par rapport à des profils.

$validate est une opération dans Fast Healthcare Interoperability Resources (FHIR®) qui vous permet de vous assurer qu’une ressource FHIR est conforme aux exigences de ressources de base ou à un profil spécifié. Cette opération garantit que les données du service FHIR ont les attributs et les valeurs attendus. Pour plus d’informations sur l’opération de validation, consultez Spécification HL7 FHIR. Par spécification, Mode peut être spécifié avec $validate, par exemple créer et mettre à jour :

  • create: l’API Azure pour FHIR vérifie que le contenu du profil est unique à partir des ressources existantes et qu’il est acceptable d’être créé en tant que ressource.
  • update: vérifie que le profil est une mise à jour par rapport à la ressource existante nommée (aucune modification n’est apportée aux champs immuables).

Il existe différentes façons de valider la ressource :

  • Option 1 : Valider une ressource existante avec l’opération de validation.
  • Option 2 : Valider une nouvelle ressource avec l’opération de validation.
  • Option 3 : Valider sur la ressource CREATE/UPDATE à l’aide de l’en-tête.

En cas de validation réussie d’une ressource existante/nouvelle avec l’opération de validation, la ressource n’est pas conservée dans le service FHIR. Utilisez l’option 3 : Valider sur la ressource CREATE/UPDATE à l’aide de l’en-tête, pour conserver la ressource validée avec succès dans le service FHIR.

Le service FHIR retourne toujours un OperationOutcome comme résultats de validation pour $validate opération. Le service FHIR effectue une validation en deux étapes, une fois qu’une ressource est passée dans $validate point de terminaison. La première étape est une validation de base pour garantir que la ressource peut être analysée. Pendant l’analyse des ressources, les erreurs individuelles doivent être corrigées avant de passer à l’étape suivante. Une fois la ressource analysée avec succès, la validation complète est effectuée en tant que deuxième étape.

Notes

Tous les ensembles de valeurs qui doivent être utilisés pour la validation doivent être chargés sur le serveur FHIR. Cela inclut tous les ensembles de valeurs qui font partie de la spécification FHIR, ainsi que tous les ValueSets définis dans les guides d’implémentation. Seuls les ensembles de valeurs entièrement développés qui contiennent une liste complète de tous les codes sont pris en charge. Les définitions ValueSet qui font référence à des sources externes ne sont pas prises en charge.

Option 1 : Validation d’une ressource existante

Pour valider une ressource existante, utilisez $validate dans une GET requête :

GET http://<your FHIR service base URL>/{resource}/{resource ID}/$validate

Par exemple :

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/a6e11662-def8-4dde-9ebc-4429e68d130e/$validate

Dans cet exemple, vous validez la ressource Patient existante par rapport à la ressource a6e11662-def8-4dde-9ebc-4429e68d130e Patient de base. S’il est valide, vous obtiendrez un OperationOutcome tel que l’exemple de code suivant :

{
    "resourceType": "OperationOutcome",
    "issue": [
        {
            "severity": "information",
            "code": "informational",
            "diagnostics": "All OK"
        }
    ]
}

Si la ressource n’est pas valide, vous obtenez un code d’erreur et un message d’erreur avec des détails sur la raison pour laquelle la ressource n’est pas valide. Un exemple OperationOutcome est retourné avec des messages d’erreur et peut ressembler à l’exemple de code suivant :

{
    "resourceType": "OperationOutcome",
    "issue": [
        {
            "severity": "error",
            "code": "invalid",
            "details": {
                "coding": [
                    {
                        "system": "http://hl7.org/fhir/dotnet-api-operation-outcome",
                        "code": "1028"
                    }
                ],
                "text": "Instance count for 'Patient.identifier.value' is 0, which is not within the specified cardinality of 1..1"
            },
            "location": [
                "Patient.identifier[1]"
            ]
        },
        {
            "severity": "error",
            "code": "invalid",
            "details": {
                "coding": [
                    {
                        "system": "http://hl7.org/fhir/dotnet-api-operation-outcome",
                        "code": "1028"
                    }
                ],
                "text": "Instance count for 'Patient.gender' is 0, which is not within the specified cardinality of 1..1"
            },
            "location": [
                "Patient"
            ]
        }
    ]
}

Dans cet exemple, la ressource n’était pas conforme au profil patient fourni, qui nécessitait une valeur d’identificateur de patient et un sexe.

Si vous souhaitez spécifier un profil en tant que paramètre, vous pouvez spécifier l’URL canonique du profil à valider, comme l’exemple suivant pour le profil de base HL7 pour heartrate:

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Observation/12345678/$validate?profile=http://hl7.org/fhir/StructureDefinition/heartrate

Option 2 : Validation d’une nouvelle ressource

Si vous souhaitez valider une nouvelle ressource que vous chargez sur le serveur, vous pouvez effectuer une POST demande :

POST http://<your FHIR service base URL>/{Resource}/$validate

Par exemple :

POST https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/$validate

Cette demande validera d’abord la ressource. La nouvelle ressource que vous spécifiez dans la demande sera créée après la validation. Le serveur retourne toujours un OperationOutcome comme résultat.

Option 3 : Valider sur la ressource CREATE/UPDATE à l’aide de l’en-tête

Vous pouvez choisir quand vous souhaitez valider votre ressource, par exemple sur la ressource CREATE ou UPDATE. Par défaut, le service FHIR est configuré pour refuser la validation sur la ressource Create/Update. Cette fonctionnalité permet de valider sur Create/Update, à l’aide de l’en-tête x-ms-profile-validation . Définissez « x-ms-profile-validation » sur true pour la validation.

Notes

Dans le service FHIR open source, vous pouvez modifier le paramètre de configuration du serveur, sous CoreFeatures.

{
   "FhirServer": {
      "CoreFeatures": {
            "ProfileValidationOnCreate": true,
            "ProfileValidationOnUpdate": false
        }
}

Pour activer la validation stricte, utilisez l’en-tête « Prefer: handling » avec la valeur stricte. En définissant cet en-tête, l’avertissement de validation est signalé en tant qu’erreur.

Étapes suivantes

Dans cet article, vous avez appris à valider des ressources par rapport à des profils à l’aide de $validate. Pour en savoir plus sur les autres fonctionnalités prises en charge par le service FHIR, consultez

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