Esecuzione di un processo di reindicizzazione nell'API di Azure per FHIR
Importante
L'API di Azure per FHIR verrà ritirata il 30 settembre 2026. Seguire le strategie di migrazione per passare al servizio FHIR® di Servizi per i dati sanitari di Azure entro tale data. A causa del ritiro dell'API di Azure per FHIR, le nuove distribuzioni non saranno consentite a partire dal 1° aprile 2025. Il servizio FHIR di Servizi per i dati sanitari di Azure è la versione evoluta dell'API di Azure per FHIR che consente ai clienti di gestire i servizi FHIR, DICOM e MedTech con integrazioni in altri servizi di Azure.
Esistono scenari in cui potrebbero essere presenti parametri di ricerca o ordinamento nell'API di Azure per FHIR® che non sono ancora stati indicizzati. Questo scenario è rilevante quando si definiscono i propri parametri di ricerca. Finché il parametro di ricerca non viene indicizzato, non può essere usato nella ricerca. Questo articolo illustra come eseguire un processo di reindicizzazione per indicizzare i parametri di ricerca nel database del servizio FHIR.
Avviso
È importante leggere l'intero articolo prima di iniziare. Un processo reindicizzazione può richiedere prestazioni molto elevate. Questo articolo include opzioni per la limitazione e il controllo del processo di reindicizzazione.
Come eseguire un processo di reindicizzazione
Un processo di reindicizzazione può essere eseguito su un intero database del servizio FHIR e su parametri di ricerca personalizzati specifici.
Eseguire il processo di reindicizzazione nell'intero database del servizio FHIR
Per eseguire un processo di reindicizzazione, usare la chiamata seguente POST
con la risorsa in Parameters
formato JSON nel corpo della richiesta.
POST {{FHIR URL}}/$reindex
{
“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, viene visualizzato un codice di stato creato 201 oltre a una Parameters
risorsa nella risposta, come nell'esempio seguente.
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": "\"4c0049cd-0000-0100-0000-607dc5a90000\""
},
"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 su un parametro di ricerca personalizzato specifico
Per eseguire un 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 seperated.}"
}
]
}
Nota
Per controllare lo stato di un processo di reindicizzazione o per annullare il processo, è necessario l'ID reindicizzazione. Si tratta dell'oggetto "id"
"parameter"
riportato nel valore restituito nella risposta. Nell'esempio precedente, l'ID per il processo 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}
Di seguito è riportata una 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}}h"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueDecimal": 500.0
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueDecimal": 100.0
}
]
}
Nella risposta vengono visualizzate le informazioni seguenti.
totalResourcesToReindex
: include il numero totale di risorse da reindicizzare in questo processo.resourcesSuccessfullyReindexed
: numero totale di risorse che sono già state reindicizzare in questo processo.progress
: percentuale di completamento del processo reindicizzazione. Calcolato comeresourcesSuccessfullyReindexed
/totalResourcesToReindex
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 un conteggio reindiczzato 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 reindicizzazione
Se è necessario annullare un processo di reindicizzazione, usare una chiamata di eliminazione e specificare l'ID processo reindicizzazione:
Delete {{FHIR URL}}/_operations/reindex/{{reindexJobId}
Considerazioni sulle prestazioni
Un processo reindicizzazione può richiedere prestazioni elevate. Sono stati implementati alcuni controlli di limitazione per gestire il modo in cui viene eseguito 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. Per un database con 30.000.000 risorse, si è notato che ci sono voluti 4-5 giorni a 100.000 unità richiesta (UR) per reindicizzare l'intero database.
Di seguito è riportata una tabella che delinea i parametri, le impostazioni predefinite e gli intervalli consigliati disponibili. È possibile usare questi parametri per velocizzare il processo (usare più calcolo) o rallentare il processo (usare meno calcolo). Ad esempio, è possibile eseguire il processo di reindicizzazione a un tempo di traffico ridotto e aumentare il calcolo per ottenere risultati più rapidi. È anche possibile usare le impostazioni per garantire un utilizzo ridotto delle risorse di calcolo e eseguirlo per giorni in background.
Parametro | Descrizione | Default | Intervallo disponibile |
---|---|---|---|
QueryDelayIntervalInMilliseconds | Ritardo tra ogni batch di risorse che viene avviata durante il processo di reindicizzazione. Un numero più piccolo accelera il processo mentre un numero più elevato lo rallenta. | 500 MS (5 secondi) | 50-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 |
targetDataStoreUsagePercentage | Consente di specificare la percentuale di utilizzo dell'archivio dati per il processo di reindicizzazione. Ad esempio, è possibile specificare il 50% e garantire che al massimo il processo di reindicizzazione usi il 50% delle UR disponibili in Azure Cosmos DB. | Non presente, il che significa che è possibile usare fino al 100%. | 0-100 |
Se si vuole usare uno dei parametri precedenti, è possibile passarli alla risorsa Parametri quando si avvia il processo di reindicizzazione.
{
"resourceType": "Parameters",
"parameter": [
{
"name": "maximumConcurrency",
"valueInteger": "3"
},
{
"name": "targetDataStoreUsagePercentage",
"valueInteger": "20"
},
{
"name": "queryDelayIntervalInMilliseconds",
"valueInteger": "1000"
},
{
"name": "maximumNumberOfResourcesPerQuery",
"valueInteger": "1"
}
]
}
Passaggi successivi
In questo articolo si è appreso come avviare un processo di reindicizzazione. Per informazioni su come definire nuovi parametri di ricerca che richiedono il processo di reindicizzazione, vedere
Nota
FHIR® è un marchio registrato di HL7 ed è usato con l'autorizzazione di HL7.