Condividi tramite


Esecuzione di un processo di reindicizzazione

Esistono scenari in cui è possibile che siano presenti parametri di ricerca nel servizio FHIR in Servizi dati di integrità di Azure che non sono ancora stati indicizzati. Questo scenario è rilevante quando si definiscono parametri di ricerca personalizzati. Finché il parametro di ricerca non viene indicizzato, non può essere usato nell'ambiente di produzione in tempo reale. Questo articolo illustra come eseguire un processo di reindicizzazione per indicizzare tutti i parametri di ricerca personalizzati che non sono ancora stati indicizzati nel database del servizio FHIR.

Avviso

È importante leggere l'intero articolo prima di iniziare. Un processo di reindicizzazione può essere molto intensivo per le prestazioni. Questo articolo illustra le opzioni per limitare e controllare un processo di reindicizzazione.

Come eseguire un processo di reindicizzazione

Il processo di reindicizzazione può essere eseguito sull'intero database del servizio FHIR e su un parametro di ricerca personalizzato specifico.

Eseguire il processo di reindicizzazione nell'intero database del servizio FHIR

Per eseguire il processo di reindicizzazione, usare la chiamata seguente POST con la risorsa in Parameters formato JSON nel corpo della richiesta:

POST {{FHIR_URL}}/$reindex 
content-type: application/fhir+json
{ 

"resourceType": "Parameters",  

"parameter": [] 

}

Lasciare vuoto il "parameter": [] campo (come illustrato) se non è necessario modificare le risorse allocate al processo di reindicizzazione.

Se la richiesta ha esito positivo, si riceve un codice di stato creato 201 oltre a una Parameters risorsa nella risposta.

HTTP/1.1 201 Created 
Content-Location: https://{{FHIR URL}}/_operations/reindex/560c7c61-2c70-4c54-b86d-c53a9d29495e 

{
    "resourceType": "Parameters",
    "id": "560c7c61-2c70-4c54-b86d-c53a9d29495e",
    "meta": {
        "versionId": "138035"
    },
    "parameter": [
        {
            "name": "id",
            "valueString": "560c7c61-2c70-4c54-b86d-c53a9d29495e"
        },
        {
            "name": "lastModified",
            "valueDateTime": "2023-06-08T04:52:44.0974408+00:00"
        },
        {
            "name": "queuedTime",
            "valueDateTime": "2023-06-08T04:52:44.0974406+00:00"
        },
        {
            "name": "totalResourcesToReindex",
            "valueDecimal": 0.0
        },
        {
            "name": "resourcesSuccessfullyReindexed",
            "valueDecimal": 0.0
        },
        {
            "name": "progress",
            "valueDecimal": 0.0
        },
        {
            "name": "status",
            "valueString": "Queued"
        },
        {
            "name": "maximumConcurrency",
            "valueDecimal": 3.0
        },
        {
            "name": "queryDelayIntervalInMilliseconds",
            "valueDecimal": 500.0
        },
        {
            "name": "maximumNumberOfResourcesPerQuery",
            "valueDecimal": 100.0
        }
    ]
}

Eseguire il processo di reindicizzazione in base a un parametro di ricerca personalizzato specifico

Per eseguire il processo di reindicizzazione su un parametro di ricerca personalizzato specifico, usare la chiamata seguente POST con la risorsa in Parameters formato JSON nel corpo della richiesta:

POST {{FHIR_URL}}/$reindex 
content-type: application/fhir+json
{ 

"resourceType": "Parameters",  

"parameter": [
    {
      "name": "targetSearchParameterTypes",
      "valueString": "{url of custom search parameter. In case of multiple custom search parameters, url list can be comma separated.}"
    }
] 

}

Nota

Per controllare lo stato di un processo di reindicizzazione o per annullare il processo, è necessario l'ID reindicizzazione. Si tratta dell'oggetto "id" riportato nel "parameter" valore restituito nella risposta. Nell'esempio precedente, l'ID per il processo di reindicizzazione sarà 560c7c61-2c70-4c54-b86d-c53a9d29495e.

Come controllare lo stato di un processo di reindicizzazione

Dopo aver avviato un processo di reindicizzazione, è possibile controllare lo stato del processo usando la chiamata seguente:

GET {{FHIR_URL}}/_operations/reindex/{{reindexJobId}}

Risposta di esempio:

{
    "resourceType": "Parameters",
    "id": "560c7c61-2c70-4c54-b86d-c53a9d29495e",
    "meta": {
        "versionId": "138087"
    },
    "parameter": [
        {
            "name": "id",
            "valueString": "560c7c61-2c70-4c54-b86d-c53a9d29495e"
        },
        {
            "name": "startTime",
            "valueDateTime": "2023-06-08T04:54:53.2943069+00:00"
        },
        {
            "name": "endTime",
            "valueDateTime": "2023-06-08T04:54:54.4052272+00:00"
        },
        {
            "name": "lastModified",
            "valueDateTime": "2023-06-08T04:54:54.4053002+00:00"
        },
        {
            "name": "queuedTime",
            "valueDateTime": "2023-06-08T04:52:44.0974406+00:00"
        },
        {
            "name": "totalResourcesToReindex",
            "valueDecimal": 2.0
        },
        {
            "name": "resourcesSuccessfullyReindexed",
            "valueDecimal": 2.0
        },
        {
            "name": "progress",
            "valueDecimal": 100.0
        },
        {
            "name": "status",
            "valueString": "Completed"
        },
        {
            "name": "maximumConcurrency",
            "valueDecimal": 3.0
        },
        {
            "name": "resources",
            "valueString": "{{LIST_OF_IMPACTED_RESOURCES}}"
        },
        {
            "name": "resourceReindexProgressByResource (CountReindexed of Count)",
            "valueString": "{{RESOURCE_TYPE:REINDEXED_COUNT OF TOTAL_COUNT}}"
        },
        {
            "name": "searchParams",
            "valueString": "{{LIST_OF_SEARCHPARAM_URLS}}"
        },
        {
            "name": "queryDelayIntervalInMilliseconds",
            "valueDecimal": 500.0
        },
        {
            "name": "maximumNumberOfResourcesPerQuery",
            "valueDecimal": 100.0
        }
    ]
}

Le informazioni seguenti sono illustrate nella risposta precedente:

  • totalResourcesToReindex: include il numero totale di risorse reindicizzate in questo processo.

  • resourcesSuccessfullyReindexed: numero totale di risorse che sono già state reindicizzate in questo processo.

  • progress: reindicizzare la percentuale di completamento del processo. resourcesSuccessfullyReindexed / totalResourcesToReindex È uguale a x 100.

  • status: indica se il processo di reindicizzazione viene accodato, in esecuzione, completato, non riuscito o annullato.

  • resources: elenca tutti i tipi di risorse interessati dal processo di reindicizzazione.

  • 'resourceReindexProgressByResource (CountReindexed of Count)': fornisce il conteggio reindicizzazione del conteggio totale, per tipo di risorsa. Nei casi in cui la reindicizzazione per un tipo di risorsa specifico viene accodata, viene fornito solo Count.

  • 'searchParams': elenca l'URL dei parametri di ricerca interessati dal processo di reindicizzazione.

Eliminare un processo di reindicizzazione

Se è necessario annullare un processo di reindicizzazione, usare una DELETE chiamata e specificare l'ID del processo di reindicizzazione:

DELETE {{FHIR URL}}/_operations/reindex/{{reindexJobId}}

Considerazioni sulle prestazioni

Un processo di reindicizzazione può richiedere prestazioni elevate. Il servizio FHIR offre alcuni controlli di limitazione che consentono di gestire l'esecuzione di un processo di reindicizzazione nel database.

Nota

Non è raro che nei set di dati di grandi dimensioni venga eseguito un processo di reindicizzazione per giorni.

Di seguito è riportata una tabella che delinea i parametri, le impostazioni predefinite e gli intervalli consigliati disponibili per controllare le risorse di calcolo del processo di reindicizzazione. È possibile usare questi parametri per velocizzare il processo (usare più calcolo) o rallentare il processo (usare meno calcolo).

Parametro Descrizione Default Intervallo disponibile
QueryDelayIntervalInMilliseconds Ritardo tra ogni batch di risorse avviata durante il processo di reindicizzazione. Un numero più piccolo accelera il processo mentre un numero maggiore rallenta. 500 MS (5 secondi) da 50 a 500000
MaximumResourcesPerQuery Numero massimo di risorse incluse nel batch di risorse da reindicizzare. 100 1-5000
MaximumConcurrency Numero di batch eseguiti alla volta. 1 1-10

Se si vuole usare uno dei parametri precedenti, è possibile passarli alla Parameters risorsa quando si invia la richiesta iniziale POST per avviare un processo di reindicizzazione.


POST {{FHIR_URL}}/$reindex 
content-type: application/fhir+json
{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "maximumConcurrency",
      "valueInteger": "3"
    },
    {
      "name": "queryDelayIntervalInMilliseconds",
      "valueInteger": "1000"
    },
    {
      "name": "maximumNumberOfResourcesPerQuery",
      "valueInteger": "1"
    }
  ]
}

Passaggi successivi

In questo articolo si è appreso come eseguire un processo di reindicizzazione nel servizio FHIR. Per informazioni su come definire parametri di ricerca personalizzati, vedere

FHIR® è un marchio registrato di HL7 e viene usato con l'autorizzazione di HL7.