Weryfikowanie zasobów FHIR względem profilów w usługach Azure Health Data Services
W artykule dotyczącym profilów sklepów w usłudze FHIR przedstawiono podstawy profilów FHIR® i przechowywanie ich. Usługa FHIR w usługach Azure Health Data Services umożliwia weryfikowanie zasobów względem profilów w celu sprawdzenia, czy zasoby są zgodne z profilami. W tym artykule opisano sposób używania $validate
do sprawdzania poprawności zasobów w profilach.
$validate
to operacja w zasobach fast healthcare Interoperability Resources (FHIR), która umożliwia zapewnienie, że zasób FHIR jest zgodny z podstawowymi wymaganiami dotyczącymi zasobów lub określonym profilem. Ta operacja gwarantuje, że dane w usłudze FHIR mają oczekiwane atrybuty i wartości. Aby uzyskać informacje na temat operacji sprawdzania poprawności, odwiedź stronę specyfikacji HL7 FHIR.
Na specyfikację można określić tryb za pomocą $validate
polecenia , takiego jak tworzenie i aktualizowanie:
create
: usługa FHIR sprawdza, czy zawartość profilu jest unikatowa od istniejących zasobów i że można ją utworzyć jako nowy zasób.update
: Sprawdza, czy profil jest aktualizacją dla nominowanego istniejącego zasobu (czyli nie wprowadzono żadnych zmian w polach niezmiennych).
Istnieją różne sposoby weryfikacji zasobu:
- Opcja 1. Zweryfikuj istniejący zasób przy użyciu operacji weryfikacji.
- Opcja 2. Zweryfikuj nowy zasób przy użyciu operacji weryfikacji.
- Opcja 3. Sprawdzanie poprawności zasobu CREATE lub UPDATE przy użyciu nagłówka.
Po pomyślnej weryfikacji istniejącego lub nowego zasobu z operacją weryfikacji zasób nie jest utrwalany w usłudze FHIR. Użyj opcji 3, aby pomyślnie utrwalić zweryfikowane zasoby w usłudze FHIR.
Usługa FHIR zawsze zwraca OperationOutcome
wartość jako wyniki weryfikacji dla operacji $validate. Po przekazaniu zasobu do punktu końcowego $validate usługa FHIR wykonuje weryfikację dwuetapową. Pierwszym krokiem jest podstawowa weryfikacja, aby upewnić się, że zasób można przeanalizować. Podczas analizowania zasobów należy naprawić poszczególne błędy przed przejściem do następnego kroku. Po pomyślnym przeanalizowaniu zasobu pełna walidacja jest przeprowadzana w drugim kroku.
Uwaga
Wszelkie zestawy wartości, które mają być używane do walidacji, muszą zostać przekazane do serwera FHIR. Obejmuje to wszystkie zestawy wartości, które są częścią specyfikacji FHIR, a także wszystkie zestawy wartości zdefiniowane w przewodnikach implementacji. Obsługiwane są tylko w pełni rozwinięte zestawy wartości zawierające pełną listę wszystkich kodów. Wszelkie definicje zestawu wartości, które odwołują się do źródeł zewnętrznych, nie są obsługiwane.
Opcja 1. Weryfikowanie istniejącego zasobu
Aby zweryfikować istniejący zasób, użyj polecenia $validate
w żądaniu GET
.
GET http://<your FHIR service base URL>/{resource}/{resource ID}/$validate
Na przykład:
GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/a6e11662-def8-4dde-9ebc-4429e68d130e/$validate
W tym przykładzie walidujesz istniejący zasób a6e11662-def8-4dde-9ebc-4429e68d130e
Pacjenta względem podstawowego zasobu Pacjenta. Jeśli jest to prawidłowe, otrzymasz przykładowy OperationOutcome
kod, taki jak poniższy.
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "information",
"code": "informational",
"diagnostics": "All OK"
}
]
}
Jeśli zasób jest nieprawidłowy, zostanie wyświetlony kod błędu i komunikat o błędzie ze szczegółowymi informacjami o tym, dlaczego zasób jest nieprawidłowy. Przykład OperationOutcome
jest zwracany z komunikatami o błędach i może wyglądać podobnie do poniższego przykładu kodu.
{
"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"
]
}
]
}
W tym przykładzie zasób nie był zgodny z podanym profilem pacjenta, który wymagał wartości identyfikatora pacjenta i płci.
Jeśli chcesz określić profil jako parametr, możesz określić kanoniczny adres URL profilu do zweryfikowania, na przykład w poniższym przykładzie dla profilu podstawowego HL7 dla elementu heartrate
.
GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Observation/12345678/$validate?profile=http://hl7.org/fhir/StructureDefinition/heartrate
Opcja 2. Weryfikowanie nowego zasobu
Jeśli chcesz zweryfikować nowy zasób przekazywany do serwera, możesz wykonać POST
żądanie.
POST http://<your FHIR service base URL>/{Resource}/$validate
Na przykład:
POST https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/$validate
To żądanie weryfikuje zasób. Nowy zasób określony w żądaniu zostanie utworzony po weryfikacji.
Serwer zawsze zwraca wartość OperationOutcome
w wyniku.
Opcja 3. Sprawdzanie poprawności zasobu CREATE lub UPDATE przy użyciu nagłówka
Możesz wybrać, kiedy chcesz zweryfikować zasób, taki jak zasób CREATE
lub UPDATE
. Domyślnie usługa FHIR jest skonfigurowana do rezygnacji z weryfikacji zasobu Create/Update
. Ta funkcja umożliwia walidację przy Create/Update
użyciu nagłówka x-ms-profile-validation
. Ustaw x-ms-profile-validation
wartość true na potrzeby walidacji.
Uwaga
W usłudze FHIR typu open source można zmienić ustawienie konfiguracji serwera w obszarze CoreFeatures.
{
"FhirServer": {
"CoreFeatures": {
"ProfileValidationOnCreate": true,
"ProfileValidationOnUpdate": false
}
}
Aby włączyć ścisłą walidację, użyj nagłówka "Preferuj obsługę" z wartością ścisłą. Ustawiając ten nagłówek, ostrzeżenie o walidacji jest zgłaszane jako błąd.
Następne kroki
W tym artykule przedstawiono sposób weryfikowania zasobów pod kątem profilów przy użyciu programu $validate
. Aby dowiedzieć się więcej o innych obsługiwanych funkcjach usługi FHIR, zobacz
Uwaga
FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z uprawnieniem HL7.