Definiera anpassade sökparametrar
FHIR-specifikationen® definierar en uppsättning sökparametrar som gäller för alla resurser. Dessutom definierar FHIR många sökparametrar som är specifika för vissa resurser. Men du kanske också vill söka efter ett element i en resurs som inte definieras av FHIR-specifikationen som en standardsökparameter. Den här artikeln beskriver hur du kan definiera dina egna anpassade sökparametrar för användning i FHIR-tjänsten i Azure Health Data Services.
Kommentar
Varje gång du skapar, uppdaterar eller tar bort en sökparameter måste du köra ett omindexeringsjobb för att aktivera sökparametern för liveproduktion. Vi beskriver hur du kan testa sökparametrar innan du indexerar om hela FHIR-tjänstdatabasen efter.
Skapa ny sökparameter
Om du vill skapa en ny sökparameter behöver POST
du en SearchParameter
resurs till FHIR-tjänstdatabasen.
POST {{FHIR_URL}}/SearchParameter
Följande exempel visar hur du skapar en ny anpassad sökparameter.
Skapa ny sökparameter per definition i implementeringsguiden
Följande kodexempel visar hur du lägger till sökparametern US Core Race i Patient
resurstypen i din FHIR-tjänstdatabas.
{
"resourceType" : "SearchParameter",
"id" : "us-core-race",
"url" : "http://hl7.org/fhir/us/core/SearchParameter/us-core-race",
"version" : "3.1.1",
"name" : "USCoreRace",
"status" : "active",
"date" : "2019-05-21",
"publisher" : "US Realm Steering Committee",
"contact" : [
{
"telecom" : [
{
"system" : "other",
"value" : "http://www.healthit.gov/"
}
]
}
],
"description" : "Returns patients with a race extension matching the specified code.",
"jurisdiction" : [
{
"coding" : [
{
"system" : "urn:iso:std:iso:3166",
"code" : "US",
"display" : "United States of America"
}
]
}
],
"code" : "race",
"base" : [
"Patient"
],
"type" : "token",
"expression" : "Patient.extension.where(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race').extension.value.code"
}
Skapa ny sökparameter för resursattribut med referenstyp
Följande kodexempel visar hur du skapar en anpassad sökparameter för att söka i MedicationDispense-resurser baserat på platsen där de delades ut. Det här är ett exempel på hur du lägger till en anpassad sökparameter för en referenstyp.
{
"resourceType": "SearchParameter",
"id": "a3c28d46-fd06-49ca-aea7-5f9314ef0497",
"url": "{{An absolute URI that is used to identify this search parameter}}",
"version": "1.0",
"name": "MedicationDispenseLocationSearchParameter",
"status": "active",
"description": "Search parameter for MedicationDispense by location",
"code": "location",
"base": ["MedicationDispense"],
"target": ["Location"],
"type": "reference",
"expression": "MedicationDispense.location"
}
Kommentar
Den nya sökparametern visas i funktionsuttryck för FHIR-tjänsten efter att du POST
har sökparametern till databasen och indexerar om databasen. SearchParameter
Att visa i funktionssatsen är det enda sättet att se om en sökparameter stöds i din FHIR-tjänst. Om du inte hittar SearchParameter
i funktionsinstrukeringen måste du fortfarande indexera om databasen för att aktivera sökparametern. Du kan POST
flera sökparametrar innan du utlöser en omindexeringsåtgärd.
Viktiga element i en SearchParameter
resurs är:
url
: En unik nyckel för att beskriva sökparametern. Organisationer som HL7 använder ett standard-URL-format för sökparametrarna som de definierar, enligt ovan i sökparametern US Core Race.code
: Värdet som lagras i kodelementet är det namn som används för sökparametern när det ingår i ett API-anrop. I föregående exempel med tillägget "US Core Race" söker du medGET {{FHIR_URL}}/Patient?race=<code>
var<code>
som finns i värdeuppsättningen från det angivna kodningssystemet. Detta samtal skulle hämta alla patienter av en viss ras.base
: Beskriver vilka resurstyper sökparametern gäller för. Om sökparametern gäller för alla resurser kan du användaResource
. Annars kan du visa en lista över alla relevanta resurstyper.target
: Beskriver vilka resurstyper sökparametern matchar.type
: Beskriver datatypen för sökparametern. Typen begränsas av stöd för datatyper i FHIR-tjänsten. Det innebär att du inte kan definiera en sökparameter av typen Special eller definiera en sammansatt sökparameter om det inte är en kombination som stöds.expression
: Beskriver hur du beräknar värdet för sökningen. När du beskriver en sökparameter måste du inkludera uttrycket, även om det inte krävs av specifikationen. Det beror på att du behöver antingen uttrycket eller xpath-syntaxen och FHIR-tjänsten ignorerar xpath-syntaxen.
Testa nya sökparametrar
Du kan inte använda de nya sökparametrarna i produktion förrän du kör ett omindexeringsjobb, men det finns sätt att testa dina anpassade sökparametrar innan du indexerar om hela databasen.
Först kan du testa en ny sökparameter för att se vilka värden som returneras. Genom att köra följande kommando mot en specifik resursinstans (genom att ange resurs-ID:t) får du tillbaka en lista med värdepar med sökparnamnet och värdet som lagras i motsvarande element. Den här listan innehåller alla sökparametrar för resursen. Du kan bläddra igenom för att hitta sökparametern som du skapade. Om du kör det här kommandot ändras inget beteende i FHIR-tjänsten.
GET https://{{FHIR_URL}}/{{RESOURCE}}/{{RESOURCE_ID}}/$reindex
Om du till exempel vill hitta alla sökparametrar för en patient:
GET https://{{FHIR_URL}}/Patient/{{PATIENT_ID}}/$reindex
Resultatet ser ut så här:
{
"resourceType": "Parameters",
"id": "8be24e78-b333-49da-a861-523491c3437a",
"meta": {
"versionId": "1"
},
"parameter": [
{
"name": "deceased",
"valueString": "http://hl7.org/fhir/special-values|false"
},
{
"name": "language",
"valueString": "urn:ietf:bcp:47|en-US"
},
{
"name": "race",
"valueString": "2028-9"
}
]
...}
När du ser att sökparametern visas som förväntat kan du indexera om en enskild resurs för att testa sökningen med den nya sökparametern. Använd följande om du vill indexera om en enskild resurs.
POST https://{{FHIR_URL}/{{RESOURCE}}/{{RESOURCE_ID}}/$reindex
Om du kör det här POST
anropet anges indexen för alla sökparametrar som definierats för resursinstansen som anges i begäran. Det här anropet gör en ändring i FHIR-tjänstdatabasen. Nu kan du söka och ange x-ms-use-partial-indices
rubriken till true
, vilket gör att FHIR-tjänsten returnerar resultat för någon av de resurser som har sökparametern indexerad, även om inte alla resursinstanser av den typen har indexerats.
Om du fortsätter med vårt exempel kan du indexera en patient för att aktivera SearchParameter
:
POST {{FHIR_URL}}/Patient/{{PATIENT_ID}}/$reindex
Och gör sedan testsökningar:
- För patienten efter ras:
GET {{FHIR_URL}}/Patient?race=2028-9
x-ms-use-partial-indices: true
- För Plats (referenstyp)
{{fhirurl}}/MedicationDispense?location=<locationid referenced in MedicationDispense Resource>
x-ms-use-partial-indices: true
När du har testat den nya sökparametern och bekräftat att den fungerar som förväntat kör eller schemalägger du omindexeringsjobbet så att de nya sökparametrarna kan användas i liveproduktion.
Mer information om hur du indexerar om FHIR-tjänstdatabasen finns i Köra ett omindexeringsjobb .
Uppdatera en sökparameter
Om du vill uppdatera en sökparameter använder du PUT
för att skapa en ny version av sökparametern. Du måste inkludera sökparameterns ID i id
fältet i brödtexten i PUT
begäran och begärandesträngen PUT
.
Kommentar
Om du inte känner till ID:t för sökparametern kan du söka efter det med hjälp av GET {{FHIR_URL}}/SearchParameter
. Detta returnerar alla anpassade sökparametrar och standardsökparametrar. Du kan bläddra igenom listan för att hitta den sökparameter du behöver. Du kan också begränsa sökningen efter namn. Som du ser i följande exempelbegäran är USCoreRace
namnet på den anpassade SearchParameter
resursinstansen . Du kan söka efter den här SearchParameter
resursen med hjälp av .GET {{FHIR_URL}}/SearchParameter?name=USCoreRace
PUT {{FHIR_URL}}/SearchParameter/{{SearchParameter_ID}}
{
"resourceType" : "SearchParameter",
"id" : "{{SearchParameter_ID}}",
"url" : "http://hl7.org/fhir/us/core/SearchParameter/us-core-race",
"version" : "3.1.1",
"name" : "USCoreRace",
"status" : "active",
"date" : "2019-05-21",
"publisher" : "US Realm Steering Committee",
"contact" : [
{
"telecom" : [
{
"system" : "other",
"value" : "http://www.healthit.gov/"
}
]
}
],
"description" : "New Description!",
"jurisdiction" : [
{
"coding" : [
{
"system" : "urn:iso:std:iso:3166",
"code" : "US",
"display" : "United States of America"
}
]
}
],
"code" : "race",
"base" : [
"Patient"
],
"type" : "token",
"expression" : "Patient.extension.where(url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race').extension.value.code"
}
Resultatet av ovanstående begäran blir en uppdaterad SearchParameter
resurs.
Varning
Var försiktig när du uppdaterar sökparametrarna. Att ändra en befintlig sökparameter kan påverka det förväntade beteendet. Vi rekommenderar att du kör ett omindexera jobb omedelbart.
Ta bort en sökparameter
Om du behöver ta bort en sökparameter använder du följande.
DELETE {{FHIR_URL}}/SearchParameter/{{SearchParameter_ID}}
Varning
Var försiktig när du tar bort sökparametrar. Om du tar bort en befintlig sökparameter kan det påverka det förväntade beteendet. Vi rekommenderar att du kör ett omindexera jobb omedelbart.
Nästa steg
I den här artikeln har du lärt dig hur du skapar en anpassad sökparameter. Härnäst kan du lära dig hur du indexerar om FHIR-tjänstdatabasen. Mer information finns i
Kommentar
FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.