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. Det finns dock scenarier där du kanske 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 egna anpassade sökparametrar för användning i FHIR-tjänsten i Azure Health Data Services.
Anteckning
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. Nedan beskrivs hur du kan testa sökparametrar innan du indexerar om hela FHIR-tjänstdatabasen.
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
Exemplen nedan visar hur du skapar en ny anpassad sökparameter
Skapa ny sökparameter per definition i implementeringsguiden
Kodexemplet nedan visar hur du lägger till sökparametern US Core Race i Patient
resurstypen i FHIR-tjänstdatabasen.
{
"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
Kodexemplet 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"
}
Anteckning
Den nya sökparametern visas i funktionsuttryck för FHIR-tjänsten när 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 funktionssatsen 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:
url
: En unik nyckel för att beskriva sökparametern. Organisationer som HL7 använder ett standard-URL-format för de sökparametrar som de definierar, enligt vad som visas 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 exemplet ovan med tillägget "US Core Race" söker du medGET {{FHIR_URL}}/Patient?race=<code>
var<code>
finns i värdet som angetts från det angivna kodningssystemet. Detta samtal skulle hämta alla patienter av en viss ras.base
: Beskriver vilka resurstyper som 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 som 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 några 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 ska returneras. Genom att köra kommandot nedan mot en specifik resursinstans (genom att ange resurs-ID:t) får du tillbaka en lista med värdepar med sökparameternamnet 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 inte något 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. Så här indexerar du om en enskild resurs:
POST https://{{FHIR_URL}/{{RESOURCE}}/{{RESOURCE_ID}}/$reindex
När 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 det indexerat.
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 en testsökning
- 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 ditt omindexeringsjobb så att de nya sökparametererna 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 begärandetexten PUT
samt i begärandesträngen PUT
.
Anteckning
Om du inte känner till ID:t för sökparametern kan du söka efter den med hjälp av GET {{FHIR_URL}}/SearchParameter
. Detta returnerar alla anpassade och standardsökparametrar och 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 exempelbegäran nedan ä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. Om du ändrar en befintlig sökparameter kan det 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
FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.