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.