Definování vlastních parametrů vyhledávání
Specifikace FHIR definuje sadu parametrů vyhledávání, které platí pro všechny prostředky. Kromě toho FHIR definuje mnoho parametrů vyhledávání, které jsou specifické pro určité prostředky. Existují však scénáře, ve kterých můžete chtít hledat prvek v prostředku, který není definován specifikací FHIR jako standardní parametr vyhledávání. Tento článek popisuje, jak můžete definovat vlastní parametry vyhledávání pro použití ve službě FHIR ve službě Azure Health Data Services.
Poznámka
Pokaždé, když vytvoříte, aktualizujete nebo odstraníte parametr hledání, budete muset spustit úlohu přeindexování , abyste povolili parametr vyhledávání pro živý provoz. Níže si ukážeme, jak můžete otestovat parametry hledání před opětovnou indexací celé databáze služby FHIR.
Vytvoření nového parametru hledání
Pokud chcete vytvořit nový parametr vyhledávání, musíte do databáze služby FHIR použít POST
SearchParameter
prostředek.
POST {{FHIR_URL}}/SearchParameter
Následující příklady ukazují vytvoření nového vlastního parametru vyhledávání.
Vytvoření nového parametru vyhledávání podle definice v průvodci implementací
Následující příklad kódu ukazuje, jak přidat parametr vyhledávání US Core Race do Patient
typu prostředku v databázi služby FHIR.
{
"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"
}
Vytvoření nového parametru vyhledávání pro atributy prostředků s referenčním typem
Příklad kódu ukazuje, jak vytvořit vlastní parametr vyhledávání pro vyhledávání prostředků DrugDispense na základě umístění, kde byly vydány. Toto je příklad přidání vlastního vyhledávacího parametru pro typ odkazu.
{
"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"
}
Poznámka
Nový parametr hledání se zobrazí v příkazu capability služby FHIR po zadání POST
parametru hledání do databáze a přeindexování databáze. SearchParameter
Zobrazení příkazu capability je jediným způsobem, jak zjistit, jestli je ve službě FHIR podporovaný vyhledávací parametr. Pokud příkaz capability nemůžete najít SearchParameter
, budete muset databázi znovu indexovat, aby se aktivoval parametr hledání. Před aktivací operace reindexování můžete POST
provést více parametrů hledání.
Důležité prvky SearchParameter
prostředku:
url
: Jedinečný klíč pro popis parametru hledání. Organizace, jako je HL7, používají standardní formát adresy URL pro parametry hledání, které definují, jak je znázorněno výše v parametru vyhledávání základní rasy USA.code
: Hodnota uložená v elementu code je název použitý pro parametr vyhledávání, pokud je zahrnut do volání rozhraní API. Ve výše uvedeném příkladu s rozšířením US Core Race byste hledali,GET {{FHIR_URL}}/Patient?race=<code>
kde<code>
je hodnota nastavená ze zadaného systému kódování. Toto volání by načetlo všechny pacienty určité rasy.base
: Popisuje, na které typy prostředků se vyhledávací parametr vztahuje. Pokud se parametr vyhledávání vztahuje na všechny prostředky, můžete použítResource
. V opačném případě můžete zobrazit seznam všech relevantních typů prostředků.target
: Popisuje, kterým typům prostředků odpovídá vyhledávací parametr.type
: Popisuje datový typ vyhledávacího parametru. Typ je omezený podporou datových typů ve službě FHIR. To znamená, že pokud se nejedná o podporovanou kombinaci, nemůžete definovat parametr vyhledávání typu Special ani definovat složený parametr hledání .expression
: Popisuje, jak vypočítat hodnotu pro hledání. Při popisu parametru hledání musíte zahrnout výraz, i když to specifikace nevyžaduje. Je to proto, že potřebujete buď výraz, nebo syntaxi xpath a služba FHIR syntaxi xpath ignoruje.
Testování nových parametrů vyhledávání
I když nemůžete použít nové parametry vyhledávání v produkčním prostředí, dokud nespustíte úlohu reindexování, existuje několik způsobů, jak otestovat vlastní parametry vyhledávání před opětovným indexováním celé databáze.
Nejprve můžete otestovat nový parametr hledání, abyste zjistili, jaké hodnoty se vrátí. Spuštěním následujícího příkazu pro konkrétní instanci prostředku (zadáním ID prostředku) získáte zpět seznam párů hodnot s názvem vyhledávacího parametru a hodnotou uloženou v odpovídajícím elementu. Tento seznam obsahuje všechny parametry hledání prostředku. Můžete procházet a vyhledat parametr hledání, který jste vytvořili. Spuštěním tohoto příkazu se nezmění žádné chování ve službě FHIR.
GET https://{{FHIR_URL}}/{{RESOURCE}}/{{RESOURCE_ID}}/$reindex
Například pokud chcete najít všechny parametry hledání pro pacienta:
GET https://{{FHIR_URL}}/Patient/{{PATIENT_ID}}/$reindex
Výsledek vypadá takto:
{
"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"
}
]
...}
Jakmile uvidíte, že se parametr vyhledávání zobrazuje podle očekávání, můžete přeindexovat jeden prostředek a otestovat vyhledávání pomocí nového parametru hledání. Přeindexování jednoho prostředku:
POST https://{{FHIR_URL}/{{RESOURCE}}/{{RESOURCE_ID}}/$reindex
Spuštěním tohoto POST
volání se nastaví indexy pro všechny parametry vyhledávání definované pro instanci prostředku zadanou v požadavku. Toto volání provede změnu databáze služby FHIR. Teď můžete hledat a nastavit hlavičku x-ms-use-partial-indices
na true
, což způsobí, že služba FHIR vrátí výsledky pro všechny prostředky, které mají indexovaný parametr vyhledávání, i když ne všechny instance prostředků tohoto typu mají indexovaný.
Když budeme pokračovat v našem příkladu, mohli byste indexovat jednoho pacienta a povolit SearchParameter
:
POST {{FHIR_URL}}/Patient/{{PATIENT_ID}}/$reindex
A pak proveďte testovací vyhledávání.
- Pro pacienta podle závodu:
GET {{FHIR_URL}}/Patient?race=2028-9
x-ms-use-partial-indices: true
- Pro umístění (typ odkazu):
{{fhirurl}}/MedicationDispense?location=<locationid referenced in MedicationDispense Resource>
x-ms-use-partial-indices: true
Po otestování nového parametru vyhledávání a potvrzení, že funguje podle očekávání, spusťte nebo naplánujte úlohu přeindexování, aby bylo možné nové parametry vyhledávání použít v živém produkčním prostředí.
Informace o tom, jak přeindexovat databázi služby FHIR, najdete v tématu Spuštění úlohy přeindexování .
Aktualizace parametru hledání
Pokud chcete aktualizovat parametr hledání, použijte PUT
k vytvoření nové verze vyhledávacího parametru. Id parametru hledání musíte zahrnout do id
pole v textu PUT
požadavku a PUT
také do řetězce požadavku.
Poznámka
Pokud neznáte ID parametru hledání, můžete ho vyhledat pomocí GET {{FHIR_URL}}/SearchParameter
. Tím se vrátí všechny vlastní i standardní parametry hledání a můžete procházet seznam a najít požadovaný parametr hledání. Můžete také omezit vyhledávání podle názvu. Jak je znázorněno v následujícím příkladu požadavku, název instance vlastního SearchParameter
prostředku je USCoreRace
. Tento SearchParameter
prostředek můžete vyhledat podle názvu pomocí .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"
}
Výsledkem výše uvedeného požadavku bude aktualizovaný SearchParameter
prostředek.
Upozornění
Při aktualizaci parametrů hledání buďte opatrní. Změna existujícího parametru vyhledávání může mít vliv na očekávané chování. Doporučujeme spustit úlohu přeindexování okamžitě.
Odstranění parametru hledání
Pokud potřebujete odstranit parametr hledání, použijte následující:
DELETE {{FHIR_URL}}/SearchParameter/{{SearchParameter_ID}}
Upozornění
Při odstraňování parametrů hledání buďte opatrní. Odstranění existujícího parametru vyhledávání může mít vliv na očekávané chování. Doporučujeme spustit úlohu přeindexování okamžitě.
Další kroky
V tomto článku jste se dozvěděli, jak vytvořit vlastní parametr vyhledávání. Dále se dozvíte, jak přeindexovat databázi služby FHIR. Další informace najdete v tématu
FHIR® je registrovaná ochranná známka hl7 a používá se se svolením HL7.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro