Convalidare le risorse FHIR rispetto ai profili in Servizi dati di integrità di Azure
Nell'articolo sui profili dei negozi nel servizio FHIR® sono state riportate le nozioni di base dei profili FHIR e le archivia. Il servizio FHIR in Servizi dati di integrità di Azure consente di convalidare le risorse rispetto ai profili per verificare se le risorse sono conformi ai profili. Questo articolo illustra come usare $validate
per convalidare le risorse rispetto ai profili.
$validate
è un'operazione in Fast Healthcare Interoperability Resources (FHIR) che consente di garantire che una risorsa FHIR sia conforme ai requisiti delle risorse di base o a un profilo specificato. Questa operazione garantisce che i dati in un servizio FHIR dispongano degli attributi e dei valori previsti. Per informazioni sull'operazione di convalida, vedere Specifica HL7 FHIR.
Per specifica, la modalità può essere specificata con $validate
, ad esempio creazione e aggiornamento:
create
: il servizio FHIR verifica che il contenuto del profilo sia univoco dalle risorse esistenti e che sia accettabile creare come nuova risorsa.update
: verifica che il profilo sia un aggiornamento rispetto alla risorsa esistente nominata, ovvero non vengono apportate modifiche ai campi non modificabili.
Esistono diversi modi per convalidare la risorsa:
- Opzione 1: convalidare una risorsa esistente con l'operazione di convalida.
- Opzione 2: Convalidare una nuova risorsa con l'operazione di convalida.
- Opzione 3: Convalidare per la risorsa CREATE o UPDATE usando un'intestazione.
Al termine della convalida di una risorsa esistente o nuova con l'operazione di convalida, la risorsa non viene salvata in modo permanente nel servizio FHIR. Usare l'opzione 3 per rendere persistenti le risorse convalidate correttamente nel servizio FHIR.
Il servizio FHIR restituisce sempre un oggetto OperationOutcome
come risultati della convalida per un'operazione di $validate. Dopo aver passato una risorsa all'endpoint $validate, il servizio FHIR esegue la convalida in due passaggi. Il primo passaggio è una convalida di base per garantire che la risorsa possa essere analizzata. Durante l'analisi delle risorse, è necessario correggere singoli errori prima di procedere al passaggio successivo. Dopo aver analizzato correttamente una risorsa, la convalida completa viene eseguita come secondo passaggio.
Nota
Tutti i set di valori da usare per la convalida devono essere caricati nel server FHIR. Sono inclusi tutti i set di valori che fanno parte della specifica FHIR, nonché qualsiasi ValueSet definito nelle guide all'implementazione. Sono supportati solo i set di valori completamente espansi che contengono un elenco completo di tutti i codici. Le definizioni valueset che fanno riferimento a origini esterne non sono supportate.
Opzione 1: Convalida di una risorsa esistente
Per convalidare una risorsa esistente, usare $validate
in una GET
richiesta.
GET http://<your FHIR service base URL>/{resource}/{resource ID}/$validate
Ad esempio:
GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/a6e11662-def8-4dde-9ebc-4429e68d130e/$validate
In questo esempio si sta convalidando la risorsa Paziente esistente rispetto alla risorsa a6e11662-def8-4dde-9ebc-4429e68d130e
paziente di base. Se è valido, si ottiene un OperationOutcome
esempio di codice simile al seguente.
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "information",
"code": "informational",
"diagnostics": "All OK"
}
]
}
Se la risorsa non è valida, viene visualizzato un codice di errore e un messaggio di errore con i dettagli sul motivo per cui la risorsa non è valida. Un esempio OperationOutcome
viene restituito con messaggi di errore e può essere simile all'esempio di codice seguente.
{
"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"
]
}
]
}
In questo esempio la risorsa non è conforme al profilo Paziente fornito, che richiede un valore di identificatore del paziente e un sesso.
Se si vuole specificare un profilo come parametro, è possibile specificare l'URL canonico per il profilo da convalidare, ad esempio l'esempio seguente per il profilo di base HL7 per heartrate
.
GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Observation/12345678/$validate?profile=http://hl7.org/fhir/StructureDefinition/heartrate
Opzione 2: Convalida di una nuova risorsa
Se si vuole convalidare una nuova risorsa che si sta caricando nel server, è possibile eseguire una POST
richiesta.
POST http://<your FHIR service base URL>/{Resource}/$validate
Ad esempio:
POST https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/$validate
Questa richiesta convalida la risorsa. La nuova risorsa specificata nella richiesta verrà creata dopo la convalida.
Il server restituisce sempre un oggetto OperationOutcome
come risultato.
Opzione 3: Convalidare per la risorsa CREATE o UPDATE usando un'intestazione
È possibile scegliere quando si vuole convalidare la risorsa, ad esempio nella risorsa CREATE
o UPDATE
in . Per impostazione predefinita, il servizio FHIR è configurato per rifiutare esplicitamente la convalida nella risorsa Create/Update
. Questa funzionalità consente la convalida tramite Create/Update
l'intestazione x-ms-profile-validation
. Impostare su x-ms-profile-validation
true per la convalida.
Nota
Nel servizio FHIR open source è possibile modificare l'impostazione di configurazione del server, in CoreFeatures.
{
"FhirServer": {
"CoreFeatures": {
"ProfileValidationOnCreate": true,
"ProfileValidationOnUpdate": false
}
}
Per abilitare la convalida rigorosa, usare un'intestazione 'Prefer: handling' con valore strict. Impostando questa intestazione, viene segnalato un avviso di convalida come errore.
Passaggi successivi
In questo articolo si è appreso come convalidare le risorse rispetto ai profili usando $validate
. Per informazioni sulle altre funzionalità supportate dal servizio FHIR, vedere
Nota
FHIR® è un marchio registrato di HL7 ed è usato con l'autorizzazione di HL7.