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.