Verifiera FHIR-resurser mot profiler i Azure Health Data Services
I butiksprofilerna i FHIR-tjänstartikeln® gick du igenom grunderna i FHIR-profiler och lagrade dem. Med FHIR-tjänsten i Azure Health Data Services kan du verifiera resurser mot profiler för att se om resurserna överensstämmer med profilerna. Den här artikeln beskriver hur du använder $validate
för att verifiera resurser mot profiler.
$validate
är en åtgärd i FHIR (Fast Healthcare Interoperability Resources) som gör att du kan se till att en FHIR-resurs överensstämmer med basresurskraven eller en angiven profil. Den här åtgärden säkerställer att data i en FHIR-tjänst har förväntade attribut och värden. Information om verifieringsåtgärden finns i HL7 FHIR-specifikation.
Enligt specifikationen kan läge anges med $validate
, till exempel skapa och uppdatera:
create
: FHIR-tjänsten kontrollerar att profilinnehållet är unikt från befintliga resurser och att det är acceptabelt att skapas som en ny resurs.update
: Kontrollerar att profilen är en uppdatering mot den angivna befintliga resursen (det vill: inga ändringar görs i de oföränderliga fälten).
Det finns olika sätt för dig att verifiera resursen:
- Alternativ 1: Verifiera en befintlig resurs med verifieringsåtgärden.
- Alternativ 2: Verifiera en ny resurs med verifieringsåtgärden.
- Alternativ 3: Verifiera på resursEN SKAPA eller UPPDATERA med hjälp av ett huvud.
Om valideringen av en befintlig eller ny resurs med verifieringsåtgärden lyckas sparas inte resursen i FHIR-tjänsten. Använd alternativ 3 för att bevara verifierade resurser till FHIR-tjänsten.
FHIR-tjänsten returnerar alltid ett OperationOutcome
valideringsresultat för en $validate åtgärd. När en resurs har skickats till $validate slutpunkt utför FHIR-tjänsten tvåstegsverifiering. Det första steget är en grundläggande validering för att säkerställa att resursen kan parsas. Under resursparsning måste enskilda fel åtgärdas innan du fortsätter till nästa steg. När en resurs har parsats utförs fullständig validering som det andra steget.
Kommentar
Alla värden som ska användas för validering måste laddas upp till FHIR-servern. Detta inkluderar alla Valuesets som ingår i FHIR-specifikationen, samt alla ValueSets som definieras i implementeringsguider. Endast fullständigt expanderade värdeuppsättningar som innehåller en fullständig lista över alla koder stöds. Alla ValueSet-definitioner som refererar till externa källor stöds inte.
Alternativ 1: Verifiera en befintlig resurs
Om du vill verifiera en befintlig resurs använder du $validate
i en GET
begäran.
GET http://<your FHIR service base URL>/{resource}/{resource ID}/$validate
Till exempel:
GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/a6e11662-def8-4dde-9ebc-4429e68d130e/$validate
I det här exemplet verifierar du den befintliga patientresursen a6e11662-def8-4dde-9ebc-4429e68d130e
mot basresursen patient. Om den är giltig får du ett OperationOutcome
sådant som följande kodexempel.
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "information",
"code": "informational",
"diagnostics": "All OK"
}
]
}
Om resursen inte är giltig får du en felkod och ett felmeddelande med information om varför resursen är ogiltig. Ett exempel OperationOutcome
returneras med felmeddelanden och kan se ut som i följande kodexempel.
{
"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"
]
}
]
}
I det här exemplet överensstämde inte resursen med den angivna patientprofilen, vilket krävde ett patientidentifierarvärde och kön.
Om du vill ange en profil som en parameter kan du ange den kanoniska URL:en för profilen som ska verifieras mot, till exempel följande exempel för HL7-basprofilen för heartrate
.
GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Observation/12345678/$validate?profile=http://hl7.org/fhir/StructureDefinition/heartrate
Alternativ 2: Validera en ny resurs
Om du vill verifiera en ny resurs som du laddar upp till servern kan du göra en POST
begäran.
POST http://<your FHIR service base URL>/{Resource}/$validate
Till exempel:
POST https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/$validate
Den här begäran verifierar resursen. En ny resurs som du anger i begäran skapas efter valideringen.
Servern returnerar alltid ett OperationOutcome
resultat.
Alternativ 3: Verifiera på resursEN SKAPA eller UPPDATERA med hjälp av ett huvud
Du kan välja när du vill verifiera din resurs, till exempel på resursen CREATE
eller UPDATE
. Som standard är FHIR-tjänsten konfigurerad för att avanmäla validering på resursen Create/Update
. Med den här funktionen kan du validera Create/Update
med hjälp av x-ms-profile-validation
huvudet. Ställ in x-ms-profile-validation
på true för validering.
Kommentar
I FHIR-tjänsten med öppen källkod kan du ändra serverkonfigurationsinställningen under CoreFeatures.
{
"FhirServer": {
"CoreFeatures": {
"ProfileValidationOnCreate": true,
"ProfileValidationOnUpdate": false
}
}
Om du vill aktivera strikt validering använder du huvudet "Prefer: handling" med värdet strikt. Genom att ange det här huvudet rapporteras en valideringsvarning som ett fel.
Nästa steg
I den här artikeln har du lärt dig hur du verifierar resurser mot profiler med hjälp av $validate
. Mer information om de andra funktioner som stöds av FHIR-tjänsten finns i
Kommentar
FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.