Lagra profiler i FHIR-tjänsten
HL7 FHIR® (Fast Healthcare Interoperability Resources) definierar ett standard- och samverkande sätt att lagra och utbyta hälso- och sjukvårdsdata. Även inom den grundläggande FHIR-specifikationen kan det vara bra att definiera andra regler eller tillägg baserat på den kontext där FHIR används. För kontextspecifika användningar av FHIR används FHIR-profiler för det extra lagret med specifikationer. Med FHIR-profilen kan du begränsa och anpassa resursdefinitioner med hjälp av begränsningar och tillägg.
Med Azure Health Data Services FHIR-tjänsten kan du verifiera resurser mot profiler för att se om resurserna överensstämmer med profilerna. Den här artikeln vägleder dig genom grunderna i FHIR-profiler och hur du lagrar dem. Mer information om FHIR-profiler finns i HL7.org.
FHIR-profil: grunderna
En profil anger ytterligare kontext för resursen som representeras som en StructureDefinition
resurs. A StructureDefinition
definierar en uppsättning regler för innehållet i en resurs eller en datatyp, till exempel vilka element en resurs har och vilka värden dessa element kan ha.
Här följer några exempel på hur profiler kan ändra basresursen.
- Begränsa kardinalitet: Du kan till exempel ange maximal kardinalitet för ett element till 0, vilket innebär att elementet utesluts i den specifika kontexten.
- Begränsa innehållet i ett element till ett enda fast värde.
- Definiera nödvändiga tillägg för resursen.
A StructureDefinition
identifieras med dess kanoniska URL: http://hl7.org/fhir/StructureDefinition/{profile}
Till exempel:
http://hl7.org/fhir/StructureDefinition/patient-birthPlace
är en basprofil som kräver information om patientens registrerade födelseadress.http://hl7.org/fhir/StructureDefinition/bmi
är en annan basprofil som definierar hur man representerar BMI-observationer (Body Mass Index).http://hl7.org/fhir/us/core/StructureDefinition/us-core-allergyintolerance
är en US Core-profil som anger minimiförväntningar för resursenAllergyIntolerance
som är associerad med en patient, och den identifierar obligatoriska fält som tillägg och värdeuppsättningar.
När en resurs överensstämmer med en profil anges profilen i resurselementet profile
. I följande exempel kan du se början på en patientresurs som har http://hl7.org/fhir/us/carin-bb/StructureDefinition/C4BB-Patient en 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"
]
},
Kommentar
Profiler måste bygga ovanpå basresursen och kan inte komma i konflikt med basresursen. Om ett element till exempel har kardinaliteten 1..1 kan profilen inte göra det valfritt.
Profiler anges också av olika implementeringsguider (IG: er). Följande är en lista över vanliga IG:er. Mer information finns på den specifika IG-webbplatsen för att lära dig mer om IG och de profiler som definierats i den.
Kommentar
FHIR-tjänsten lagrar inga profiler från implementeringsguider som standard. Du måste läsa in dem i FHIR-tjänsten.
Åtkomst till profiler och lagring av profiler
Lagra profiler
Om du vill lagra profiler i FHIR-tjänsten kan PUT
StructureDefinition
du använda profilinnehållet i brödtexten i begäran. En standarduppdatering PUT
eller en villkorlig uppdatering är båda bra metoder för att lagra profiler i FHIR-tjänsten. Använd den villkorliga uppdateringen om du är osäker på vilken du ska använda.
Standard PUT
: PUT http://<your FHIR service base URL>/StructureDefinition/profile-id
or
Villkorlig uppdatering: PUT http://<your FHIR service base URL>/StructureDefinition?url=http://sample-profile-url
{
"resourceType" : "StructureDefinition",
"id" : "profile-id",
"url": "http://sample-profile-url"
…
}
Om du till exempel vill lagra profilen us-core-allergyintolerance
använder du följande vilokommando med US Core-profilen för allergiintolerans i kroppen. Vi har inkluderat ett kodfragment av den här profilen för exemplet.
PUT https://<your FHIR service base URL>/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.",
Fler exempel finns i REST-exempelfilen för US Core på webbplatsen med öppen källkod som går igenom lagringen av US Core-profiler. För att få de senaste profilerna bör du hämta profilerna direkt från HL7 och implementeringsguiden som definierar dem.
Visa profiler
Du kan komma åt dina befintliga anpassade profiler med hjälp av en GET
begäran, GET http://<your FHIR service base URL>/StructureDefinition?url={canonicalUrl}
, där {canonicalUrl}
är profilens kanoniska URL.
Om du till exempel vill visa resursprofilen US Core Goal:
GET https://<your FHIR service base URL>/StructureDefinition?url=http://hl7.org/fhir/us/core/StructureDefinition/us-core-goal
Detta returnerar resursen StructureDefinition
för US Core Goal-profilen som börjar på följande sätt.
{
"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).",
}
Kommentar
Du ser bara de profiler som du har läst in i FHIR-tjänsten.
FHIR-tjänsten returnerar StructureDefinition
inte instanser för basprofilerna, men de kan enkelt hittas på HL7-webbplatsen, till exempel följande.
http://hl7.org/fhir/Observation.profile.json.html
http://hl7.org/fhir/Patient.profile.json.html
Profiler i funktionssatsen
I Capability Statement
listan visas alla möjliga beteenden för din FHIR-tjänst. FHIR-tjänsten uppdaterar funktionssatsen med information om de lagrade profilerna i följande formulär.
CapabilityStatement.rest.resource.profile
CapabilityStatement.rest.resource.supportedProfile
Om du POST
till exempel har en US Core Patient-profil, som börjar på följande sätt:
{
"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",
Och skicka en GET
begäran för :metadata
GET http://<your FHIR service base URL>/metadata
En CapabilityStatement
returneras som innehåller följande information om den US Core Patient-profil som du laddade upp till din FHIR-server.
...
{
"type": "Patient",
"profile": "http://hl7.org/fhir/StructureDefinition/Patient",
"supportedProfile":[
"http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
],
Bindningar i profiler
En terminologitjänst är en uppsättning funktioner som kan utföra åtgärder på medicinska "terminologier", till exempel validering av koder, översättningskoder och expanderande värdeuppsättningar. FHIR-tjänsten stöder inte terminologitjänsten. Information om åtgärder som stöds ($), resurstyper och interaktioner finns i tjänstens CapabilityStatement. Resurstyperna ValueSet, StructureDefinition och CodeSystem stöds med grundläggande CRUD-åtgärder och sökning (enligt definitionen i CapabilityStatement) samt används av systemet för användning i $validate.
ValueSets kan innehålla en komplex uppsättning regler och externa referenser. För närvarande tar tjänsten endast hänsyn till de för expanderade infogade koderna. Kunder måste ladda upp ValueSets som stöds till FHIR-servern innan de använder den $validate åtgärden. ValueSet-resurserna måste laddas upp till FHIR-servern med hjälp av PUT eller villkorlig uppdatering enligt beskrivningen i avsnittet Lagra profiler ovan.
Nästa steg
I den här artikeln har du lärt dig om FHIR-profiler. Sedan får du lära dig hur du kan använda $validate för att säkerställa att resurserna överensstämmer med dessa profiler.
Kommentar
FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.