Dela via


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 med GET {{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ända Resource. 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

  1. För patienten efter ras:
GET {{FHIR_URL}}/Patient?race=2028-9
x-ms-use-partial-indices: true
  1. 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 USCoreRacenamnet 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.