Przechowywanie profilów w usłudze Azure API for FHIR
HL7 Fast Healthcare Interoperability Resources (FHIR®) definiuje standardowy i współdziałalny sposób przechowywania i wymiany danych opieki zdrowotnej. Nawet w ramach podstawowej specyfikacji FHIR warto zdefiniować inne reguły lub rozszerzenia w oparciu o kontekst używany przez standard FHIR. W przypadku takich zastosowań specyficznych dla kontekstu FHIR profile FHIR są używane do dodatkowej warstwy specyfikacji. Profil FHIR umożliwia zawężenie i dostosowanie definicji zasobów przy użyciu ograniczeń i rozszerzeń.
Interfejs API platformy Azure dla standardu FHIR umożliwia weryfikowanie zasobów względem profilów w celu sprawdzenia, czy zasoby są zgodne z profilami. Ten artykuł przeprowadzi Cię przez podstawy profilów FHIR i sposób ich przechowywania. Aby uzyskać więcej informacji na temat profilów FHIR poza tym artykułem, odwiedź HL7.org.
Profil FHIR: podstawowe informacje
Profil ustawia dodatkowy kontekst zasobu reprezentowanego jako StructureDefinition
zasób. Element StructureDefinition
definiuje zestaw reguł dotyczących zawartości zasobu lub typu danych, takich jak to, jakie elementy ma zasób i jakie wartości mogą przyjmować te elementy.
Poniżej przedstawiono kilka przykładów modyfikowania zasobu podstawowego przez profile:
- Ogranicz kardynalność: na przykład można ustawić maksymalną kardynalność elementu na 0, co oznacza, że element jest wykluczany w określonym kontekście.
- Ogranicz zawartość elementu do pojedynczej stałej wartości.
- Zdefiniuj wymagane rozszerzenia dla zasobu.
Element A StructureDefinition
jest identyfikowany przez jego kanoniczny adres URL: http://hl7.org/fhir/StructureDefinition/{profile}
Przykład:
http://hl7.org/fhir/StructureDefinition/patient-birthPlace
jest podstawowym profilem, który wymaga informacji na temat zarejestrowanego adresu urodzenia pacjenta.http://hl7.org/fhir/StructureDefinition/bmi
to inny profil podstawowy, który definiuje sposób reprezentowania obserwacji indeksu masy ciała (BMI).http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
jest podstawowym profilem usa, który określa minimalne oczekiwania dotycząceAllergyIntolerance
zasobu skojarzonego z pacjentem i identyfikuje obowiązkowe pola, takie jak rozszerzenia i zestawy wartości.
Gdy zasób jest zgodny z profilem, profil jest określony wewnątrz profile
elementu zasobu. Poniżej przedstawiono przykładowy początek zasobu "Pacjent", który ma http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient profil.
{
"resourceType" : "Patient",
"id" : "ExamplePatient1",
"meta" : {
"lastUpdated" : "2020-10-30T09:48:01.8512764-04:00",
"source" : "Organization/PayerOrganizationExample1",
"profile" : [
"http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient"
]
},
Uwaga
Profile muszą być oparte na zasobie podstawowym i nie mogą powodować konfliktu z zasobem podstawowym. Jeśli na przykład element ma kardynalność 1..1, profil nie może go ustawić jako opcjonalny.
Profile są również określane przez różne przewodniki implementacji (IG). Poniżej wymieniono niektóre typowe grupy zabezpieczeń. Aby uzyskać więcej informacji, odwiedź określoną witrynę IG, aby dowiedzieć się więcej o IG i profilach zdefiniowanych w niej:
Uwaga
Interfejs API platformy Azure dla standardu FHIR domyślnie nie przechowuje żadnych profilów z przewodników implementacji. Należy załadować je do interfejsu API platformy Azure for FHIR.
Uzyskiwanie dostępu do profilów i przechowywanie profilów
Przechowywanie profilów
Aby przechowywać profile w usłudze Azure API for FHIR, możesz PUT
StructureDefinition
pracować z zawartością profilu w treści żądania. Aktualizacja lub aktualizacja warunkowa są dobrymi metodami przechowywania profilów w usłudze FHIR. Jeśli nie masz pewności, którego użyć, użyj aktualizacji warunkowej.
Standardowa PUT
: PUT http://<your Azure API for FHIR base URL>/StructureDefinition/profile-id
Lub
Aktualizacja warunkowa: PUT http://<your Azure API for FHIR base URL>/StructureDefinition?url=http://sample-profile-url
{
"resourceType" : "StructureDefinition",
"id" : "profile-id",
"url": "http://sample-profile-url"
…
}
Jeśli na przykład chcesz przechowywać us-core-allergyintolerance
profil, użyj następującego polecenia rest z profilem nietolerancji alergii US Core w organizmie. Dołączyliśmy fragment kodu tego profilu na potrzeby przykładu.
PUT https://myAzureAPIforFHIR.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
{
"resourceType" : "StructureDefinition",
"id" : "us-core-allergyintolerance",
"text" : {
"status" : "extensions"
},
"url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance",
"version" : "3.1.1",
"name" : "USCoreAllergyIntolerance",
"title" : "US Core AllergyIntolerance Profile",
"status" : "active",
"experimental" : false,
"date" : "2020-06-29",
"publisher" : "HL7 US Realm Steering Committee",
"contact" : [
{
"telecom" : [
{
"system" : "url",
"value" : "http://www.healthit.gov"
}
]
}
],
"description" : "Defines constraints and extensions on the AllergyIntolerance resource for the minimal set of data to query and retrieve allergy information.",
Aby uzyskać więcej przykładów, zobacz przykładowy plik REST us Core w lokacji typu open source, który przeprowadzi Cię przez proces przechowywania profilów us Core. Aby uzyskać najbardziej aktualne profile, należy pobrać profile bezpośrednio z programu HL7 i przewodnik implementacji, który je definiuje.
Wyświetlanie profilów
Dostęp do istniejących profilów niestandardowych można uzyskać przy użyciu GET
żądania , GET http://<your Azure API for FHIR base URL>/StructureDefinition?url={canonicalUrl}
gdzie {canonicalUrl}
jest kanonicznym adresem URL profilu.
Jeśli na przykład chcesz wyświetlić profil zasobu podstawowego celu usa:
GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal
Spowoduje to zwrócenie StructureDefinition
zasobu dla profilu us Core Goal, który zostanie uruchomiony w następujący sposób:
{
"resourceType" : "StructureDefinition",
"id" : "us-core-goal",
"url" : "http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal",
"version" : "3.1.1",
"name" : "USCoreGoalProfile",
"title" : "US Core Goal Profile",
"status" : "active",
"experimental" : false,
"date" : "2020-07-21",
"publisher" : "HL7 US Realm Steering Committee",
"contact" : [
{
"telecom" : [
{
"system" : "url",
"value" : "http://www.healthit.gov"
}
]
}
],
"description" : "Defines constraints and extensions on the Goal resource for the minimal set of data to query and retrieve a patient's goal(s).",
}
Uwaga
Zobaczysz tylko profile załadowane do usługi Azure API for FHIR.
Interfejs API platformy Azure dla standardu FHIR nie zwraca StructureDefinition
wystąpień dla profilów podstawowych, ale można je znaleźć w witrynie internetowej HL7, na przykład:
http://hl7.org/fhir/Observation.profile.json.html
http://hl7.org/fhir/Patient.profile.json.html
Profile w instrukcji capability
Lista Capability Statement
zawiera listę wszystkich możliwych zachowań interfejsu API platformy Azure dla standardu FHIR. Interfejs API platformy Azure dla standardu FHIR aktualizuje instrukcję możliwości ze szczegółami przechowywanych profilów w formularzach:
CapabilityStatement.rest.resource.profile
CapabilityStatement.rest.resource.supportedProfile
Jeśli na przykład zapiszesz profil podstawowego pacjenta usa, który zaczyna się następująco:
{
"resourceType": "StructureDefinition",
"id": "us-core-patient",
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient",
"version": "3.1.1",
"name": "USCorePatientProfile",
"title": "US Core Patient Profile",
"status": "active",
"experimental": false,
"date": "2020-06-27",
"publisher": "HL7 US Realm Steering Committee",
GET
Wyślij żądanie dla elementu metadata
:
GET http://<your Azure API for FHIR base URL>/metadata
Zostanie zwrócony element z elementem CapabilityStatement
zawierającym następujące informacje dotyczące profilu podstawowego pacjenta USA przekazanego do usługi Azure API for FHIR:
...
{
"type": "Patient",
"profile": "http://hl7.org/fhir/StructureDefinition/Patient",
"supportedProfile":[
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
],
Powiązania w profilach
Usługa terminologii to zestaw funkcji, które mogą wykonywać operacje na medycznych "terminologiach", takich jak weryfikowanie kodów, tłumaczenie kodów, rozszerzanie zestawów wartości itp. Usługa Azure API for FHIR nie obsługuje usługi terminologii. Informacje dotyczące obsługiwanych operacji ($), typów zasobów i interakcji można znaleźć w obszarze CapabilityStatement usługi. Typy zasobów ValueSet, StructureDefinition i CodeSystem są obsługiwane przy użyciu podstawowych operacji CRUD i wyszukiwania (zgodnie z definicją w capabilityStatement), a także są używane przez system do użycia w $validate.
Zestawy wartości mogą zawierać złożony zestaw reguł i odwołań zewnętrznych. Obecnie usługa będzie uwzględniać tylko wstępnie rozwinięte kody wbudowane. Klienci muszą przekazać obsługiwane zestawy wartości do serwera FHIR przed użyciem operacji $validate. Zasoby ValueSet należy przekazać do serwera FHIR przy użyciu funkcji PUT lub aktualizacji warunkowej, jak wspomniano w sekcji Przechowywanie profilów powyżej.
Następne kroki
W tym artykule przedstawiono profile FHIR. Następnie dowiesz się, jak używać $validate, aby upewnić się, że zasoby są zgodne z tymi profilami.
FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z pozwoleniem HL7.