Sdílet prostřednictvím


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 POSTSearchParameter 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žít Resource. 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í.

  1. Pro pacienta podle závodu:
GET {{FHIR_URL}}/Patient?race=2028-9
x-ms-use-partial-indices: true
  1. 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.