Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile usare l'operazione import
per inserire i dati FHIR nel server FHIR® con velocità effettiva elevata.
Modalità dell'operazione di importazione
L'operazione import
supporta due modalità: iniziale e incrementale. Ogni modalità ha caratteristiche e casi d'uso diversi.
Modalità iniziale
Destinato al caricamento di risorse FHIR in un server FHIR vuoto.
Blocca le operazioni di scrittura dell'API nel server FHIR.
Modalità incrementale
Ottimizzato per il caricamento periodico dei dati nel server FHIR e non blocca le scritture tramite l'API.
Consente di caricare i valori
lastUpdated
eversionId
dai metadati delle risorse, se presenti nel JSON della risorsa.Consente di caricare le risorse in un ordine non sequenziale delle versioni. Nota per l'inserimento non sequenziale delle risorse
- Se i file di importazione non hanno i valori di
version
campo elastUpdated
specificati, non esiste alcuna garanzia di importare tutte le risorse nel servizio FHIR. - Se i file di importazione hanno risorse con valori duplicati
version
elastUpdated
di campo, nel servizio FHIR viene inserita in modo casuale una sola risorsa. - Durante l'esecuzione parallela, se più risorse condividono lo stesso ID risorsa, solo una di queste risorse viene importata in modo casuale.
- Se i file di importazione non hanno i valori di
Nella tabella seguente viene illustrata la differenza tra le modalità di importazione.
Aree | Modalità iniziale | Modalità incrementale |
---|---|---|
Capacità | Caricamento iniziale dei dati nel servizio FHIR | Inserimento continuo dei dati nel servizio FHIR (incrementale o quasi in tempo reale). |
Chiamate API simultanee | Blocca le operazioni di scrittura simultanee | I dati possono essere inseriti simultaneamente durante l'esecuzione di operazioni CRUD API nel server FHIR. |
Ingestione di risorse versionate | Non supportato | Consente l'inserimento di più versioni delle risorse FHIR in un singolo batch mantenendo la cronologia delle risorse. |
Mantieni il valore del campo lastUpdated | Non supportato | Mantenere il valore del campo lastUpdated nelle risorse FHIR durante il processo di inserimento. |
Fatturazione | Non comporta alcun addebito | Vengono addebitati addebiti in base alle risorse inserite correttamente. Gli addebiti vengono calcolati in base ai prezzi dell'API. |
Considerazioni sulle prestazioni
Per ottenere prestazioni ottimali con l'operazione import
, considerare i fattori seguenti.
Usare file di grandi dimensioni per l'importazione. Le dimensioni ottimali del file NDJSON per l'importazione sono >=50 MB (o >=20 K risorse, nessun limite massimo). Valutare la possibilità di combinare file più piccoli.
Importare i file di risorse FHIR come singolo batch. Per ottenere prestazioni ottimali, importare tutti i file di risorse FHIR da inserire nel server FHIR in un'unica
import
operazione. L'importazione di tutti i file in un'unica operazione riduce il sovraccarico di creazione e gestione di più processi di importazione. In modo ottimale, le dimensioni totali dei file in una singola importazione devono essere di grandi dimensioni (>=100 GB o >=100M di risorse, senza limite massimo).Limitare il numero di processi di importazione paralleli. È possibile eseguire più
import
processi contemporaneamente, ma potrebbe influire sulla velocità effettiva complessiva dell'operazioneimport
.
Eseguire l'operazione di importazione
Prerequisiti
Per usare l'operazione
import
, è necessario il ruolo di importazione dati FHIR nel server FHIR.Configurare il server FHIR. I dati FHIR devono essere archiviati in file specifici delle risorse in formato FHIR NDJSON nell'archivio BLOB di Azure. Per altre informazioni, vedere Configurare le impostazioni di importazione.
I dati devono trovarsi nello stesso tenant del servizio FHIR.
Per ottenere un token di accesso, vedere Token di accesso
Effettua una chiamata
Effettuare una POST
chiamata a <<FHIR service base URL>>/$import
con l'intestazione e il corpo della richiesta seguenti.
Header di richiesta
Prefer:respond-async
Content-Type:application/fhir+json
Corpo
Le tabelle seguenti descrivono i parametri e gli input del corpo.
Nome del parametro | Descrizione | Cardinalità | Valori accettati |
---|---|---|---|
inputFormat |
Stringa che rappresenta il nome del formato dell'origine dati. Sono supportati solo i file FHIR NDJSON. | 1..1 | application/fhir+ndjson |
mode |
Valore della modalità di importazione. | 1..1 | Per un'importazione in modalità iniziale, usare il valore della InitialLoad modalità. Per l'importazione in modalità incrementale, usare il valore della IncrementalLoad modalità. Se non si specifica un valore di modalità, il IncrementalLoad valore della modalità viene usato per impostazione predefinita. |
allowNegativeVersions |
Consente al server FHIR di assegnare versioni negative ai record di risorse con un valore lastUpdated esplicito e nessuna versione specificata quando l'input non si adatta allo spazio contiguo delle versioni positive esistenti nella memoria. | 0..1 | Per abilitare questa funzionalità, passare "true". Per impostazione predefinita, è false. |
errorContainerName |
Stringa che rappresenta il nome del contenitore in cui verranno registrati gli errori riscontrati durante il processo di importazione. | 0..1 | Nome del contenitore personalizzato per i log degli errori. Il nome deve essere compreso tra 3 e 63 caratteri e contenere solo lettere minuscole, numeri e trattini. Se non specificato, verrà usato il contenitore predefinito. |
input |
Dettagli dei file di input. | 1..* | Matrice JSON con le tre parti descritte nella tabella seguente. |
Nome della parte di input | Descrizione | Cardinalità | Valori accettati |
---|---|---|---|
type |
Tipo di risorsa del file di input. | 0..1 | Tipo di risorsa FHIR valido che corrisponde al file di input. Questo campo è facoltativo. |
url |
URL di archiviazione di Azure del file di input. | 1..1 | Il valore URL del file di input. Il valore non può essere modificato. |
etag |
ETag del file di input nell'archiviazione di Azure. Usato per verificare che il contenuto del file non sia stato modificato dopo import la registrazione. |
0..1 | Valore ETag del file di input. |
{
"resourceType": "Parameters",
"parameter": [
{
"name": "inputFormat",
"valueString": "application/fhir+ndjson"
},
{
"name": "mode",
"valueString": "<Use "InitialLoad" for initial mode import / Use "IncrementalLoad" for incremental mode import>"
},
{
"name": "allowNegativeVersions",
"valueBoolean": true
},
{
"name": "errorContainerName",
"valueString": "import-error-logs"
},
{
"name": "input",
"part": [
{
"name": "url",
"valueUri": "https://example.blob.core.windows.net/resources/filename.ndjson"
},
{
"name": "etag",
"valueUri": "\"0x8D92A7342657F4F\""
}
]
}
]
}
Controllare lo stato dell'importazione
Dopo aver avviato un'operazione import
, viene restituito un corpo della risposta vuoto con un link callback
nell'intestazione Content-location
della risposta, insieme a un codice di stato 202 Accepted
. Archiviare il callback
collegamento per controllare lo stato di importazione.
La registrazione dell'operazione import
viene implementata come chiamata idempotente. Lo stesso payload di registrazione produce la stessa registrazione, che influisce sulla possibilità di rielaborare i file con lo stesso nome. Evitare di aggiornare i file direttamente. È invece consigliabile usare un nome di file diverso per i dati aggiornati. In alternativa, se un aggiornamento sul posto con lo stesso nome file è inevitabile, aggiungere ETag nel payload di registrazione.
Per controllare lo stato di importazione, fai la chiamata REST con il metodo GET
al collegamento callback
restituito nel passaggio precedente.
Interpretare la risposta usando questa tabella.
Codice della risposta | Corpo della risposta | Descrizione |
---|---|---|
202 Accepted |
L'operazione è ancora in esecuzione. | |
200 OK |
The response body doesn't contain any error.url entry |
Tutte le risorse sono state importate correttamente. |
200 OK |
The response body contains some error.url entry |
Si è verificato un errore durante l'importazione di alcune risorse. Per informazioni dettagliate, vedere i file disponibili in error.url . Le risorse rimanenti sono state importate correttamente. |
Other |
Si è verificato un errore irreversibile e l'operazione è stata arrestata. Le risorse importate correttamente non vengono annullate. |
La tabella seguente descrive i campi importanti nel corpo della risposta:
Campo | Descrizione |
---|---|
transactionTime |
Ora di inizio dell'operazione in blocco import . |
output.count |
Numero di risorse importate correttamente. |
error.count |
Numero di risorse che non sono state importate a causa di un errore. |
error.url |
URL del file che contiene i dettagli dell'errore. Ogni error.url istanza è univoca per un URL di input. |
{
"transactionTime": "2021-07-16T06:46:52.3873388+00:00",
"request": "https://importperf.azurewebsites.net/$Import",
"output": [
{
"type": <null in case type parameter in not populated in request. If provided, resource name will be added>,
"count": 10000,
"inputUrl": "https://example.blob.core.windows.net/resources/filename.ndjson"
}
],
"error": [
{
"type": "OperationOutcome",
"count": 51,
"inputUrl": "https://example.blob.core.windows.net/resources/CarePlan.ndjson",
"url": "https://example.blob.core.windows.net/fhirlogs/CarePlan06b88c6933a34c7c83cb18b7dd6ae3d8.ndjson"
}
]
}
Importare risorse eliminate temporaneamente
L'importazione in modalità incrementale supporta l'acquisizione di risorse eliminate temporaneamente. È necessario usare l'estensione per inserire risorse eliminate temporaneamente nel servizio FHIR.
Aggiungere l'estensione alla risorsa per informare il servizio FHIR che la risorsa è stata eliminata temporaneamente.
{"resourceType": "Patient", "id": "example10", "meta": { "lastUpdated": "2023-10-27T04:00:00.000Z", "versionId": 4, "extension": [ { "url": "http://azurehealthcareapis.com/data-extensions/deleted-state", "valueString": "soft-deleted" } ] } }
Al termine dell'operazione import
, eseguire una ricerca dello storico sulla risorsa per convalidare le risorse eliminate in modo temporaneo. Se si conosce l'ID della risorsa eliminata, usare il modello di URL nell'esempio seguente.
<FHIR_URL>/<resource-type>/<resource-id>/_history
Se non si conosce l'ID della risorsa, eseguire una ricerca della cronologia sul tipo di risorsa.
<FHIR_URL>/<resource-type>/_history
Risolvere i problemi relativi all'operazione di importazione
Ecco i messaggi di errore che si verificano se l'operazione import
non riesce, insieme alle azioni consigliate per risolvere i problemi.
200 OK, ma c'è un errore con l'URL nella risposta
L'operazione import
ha esito positivo e restituisce 200 OK
. Tuttavia, error.url
è presente nel corpo della risposta. I file presenti nel error.url
percorso contengono frammenti JSON simili all'esempio seguente.
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"details": {
"text": "Given conditional reference '{0}' doesn't resolve to a resource."
},
"diagnostics": "Failed to process resource at line: {0} with stream start offset: {1}"
}
]
}
Causa: i file NDJSON contengono risorse con riferimenti condizionali che import
non supportano.
Soluzione: Sostituire i riferimenti condizionali ai riferimenti normali nei file NDJSON.
400 Richiesta non valida
L'operazione import
ha esito negativo e restituisce 400 Bad Request
. Il corpo della risposta contiene contenuto di diagnostica
operazione di importazione non riuscita per motivi: nessun host di questo tipo è noto. (example.blob.core.windows.net:443) Soluzione: verificare che il collegamento all'archiviazione di Azure sia corretto. Controllare le impostazioni di rete e firewall per assicurarsi che il server FHIR possa accedere alla risorsa di archiviazione. Se il servizio si trova in una rete virtuale, assicurarsi che l'archiviazione si trova nella stessa rete virtuale o in una rete virtuale con peering con la rete virtuale del servizio FHIR.
Le risorse SearchParameter non possono essere elaborate dall'importazione Soluzione: l'operazione di importazione restituisce un errore HTTP 400 quando una risorsa del parametro di ricerca viene inserita tramite il processo di importazione. Questa modifica è progettata per impedire che i parametri di ricerca vengano inseriti in uno stato non valido durante l'inserimento con un'operazione di importazione.
403 Vietato
L'operazione import
ha esito negativo e restituisce 403 Forbidden
. Il corpo della risposta contiene contenuto di diagnostica.
operazione di importazione non riuscita per motivi: il server non è riuscito a autenticare la richiesta. Verificare che il formato dell'intestazione dell'autorizzazione, firma inclusa, sia corretto. Causa: il servizio FHIR usa un'identità gestita per l'autenticazione dell'archiviazione di origine. Questo errore indica un'assegnazione di ruolo mancante o errata. Soluzione: Assegnare al server FHIR il ruolo di Collaboratore ai dati dei BLOB di archiviazione. Per altre informazioni, vedere Assegnare ruoli di Azure.
500 Errore interno del server
L'operazione import
ha esito negativo e restituisce 500 Internal Server Error
. Il corpo della risposta contiene contenuto di diagnostica
Operazione di importazione non riuscita per motivi: il database '_____' ha raggiunto la quota di dimensioni. Partizionare o eliminare dati, eliminare indici o consultare la documentazione per le possibili soluzioni.
Causa: è stato raggiunto il limite di archiviazione del servizio FHIR.
Soluzione: ridurre le dimensioni dei dati o prendere in considerazione l'API di Azure per FHIR, con un limite di archiviazione superiore.
423 - Bloccato
Comportamento: L'operazione import
ha esito negativo e restituisce 423 Locked
. Il corpo della risposta include questo contenuto:
{
"resourceType": "OperationOutcome",
"id": "13876ec9-3170-4525-87ec-9e165052d70d",
"issue": [
{
"severity": "error",
"code": "processing",
"diagnostics": "import operation failed for reason: Service is locked for initial import mode."
}
]
}
Causa: Il servizio FHIR è configurato con la modalità di importazione iniziale che ha bloccato altre operazioni.
Soluzione: Disattivare la modalità di importazione iniziale del servizio FHIR oppure selezionare Modalità incrementale.
Limitazioni
- Il numero massimo di file consentiti per ogni
import
operazione è 10.000. - Il numero di file inseriti nel server FHIR con lo stesso valore del campo lastUpdated fino a millisecondi non può superare i 10.000.
- L'operazione di importazione non è supportata per il tipo di risorsa SearchParameter.
- L'operazione di importazione non supporta riferimenti condizionali nelle risorse.
Passaggi successivi
Configurare le impostazioni di esportazione e configurare un account di archiviazione
Copiare dati in Azure Synapse Analytics
Annotazioni
FHIR® è un marchio registrato di HL7 e viene usato con l'autorizzazione di HL7.