Importåtgärd
Importåtgärden möjliggör inläsning av FHIR-data® (Fast Healthcare Interoperability Resources) till FHIR-servern med högt dataflöde med hjälp av den $import åtgärden. Import stöder både inledande och inkrementell datainläsning till FHIR-servern.
Använda $import åtgärd
Anteckning
Du måste ha rollen FHIR Data Importer på FHIR-servern för att kunna använda $import.
Om du vill använda $import måste du konfigurera FHIR-servern med hjälp av anvisningarna i artikeln Konfigurera importinställningar . FHIR-data som ska importeras måste lagras i resursspecifika filer i FHIR NDJSON-format i Azure Blob Store.
För importåtgärd, se till att
- Alla resurser i en fil måste vara av samma typ. Du kan ha flera filer per resurstyp.
- De data som ska importeras måste finnas i samma klientorganisation som för FHIR-tjänsten.
- Maximalt antal filer som ska importeras per åtgärd är 10 000.
Obs!
- Importåtgärden stöder inte villkorsstyrda referenser i resurser.
- Om flera resurser delar samma resurs-ID under importåtgärden importeras bara en av dessa resurser slumpmässigt. Ett fel har loggats för de resurser som delar samma resurs-ID.
Anropar $import
Gör ett POST
anrop till <<FHIR service base URL>>/$import
med begärandehuvudet och brödtexten som visas:
Begärandehuvud
Prefer:respond-async
Content-Type:application/fhir+json
Brödtext
Parameternamn | Description | Kort. | Godkända värden |
---|---|---|---|
inputFormat | Sträng som representerar namnet på datakällans format. För närvarande stöds endast FHIR NDJSON-filer. | 1..1 | application/fhir+ndjson |
mode | Importlägesvärde | 1..1 | För inledande värde för importanvändningsläge InitialLoad . Använd lägesvärde för inkrementell import IncrementalLoad . Om inget lägesvärde anges anses värdet för IncrementalLoad-läge som standard. |
indata | Information om indatafilerna. | 1..* | En JSON-matris med tre delar som beskrivs i tabellen nedan. |
Indatadelsnamn | Description | Kort. | Godkända värden |
---|---|---|---|
typ | Resurstyp för indatafil | 1..1 | En giltig FHIR-resurstyp som matchar indatafilen. |
URL | Azure Storage-URL för indatafil | 1..1 | URL-värdet för den indatafil som inte kan ändras. |
Etag | Etag för indatafilen på Azure Storage som används för att verifiera att filinnehållet inte har ändrats. | 0..1 | Etag-värdet för den indatafil som inte kan ändras. |
Exempeltext för inledande inläsningsimport:
{
"resourceType": "Parameters",
"parameter": [
{
"name": "inputFormat",
"valueString": "application/fhir+ndjson"
},
{
"name": "mode",
"valueString": "InitialLoad"
},
{
"name": "input",
"part": [
{
"name": "type",
"valueString": "Patient"
},
{
"name": "url",
"valueUri": "https://example.blob.core.windows.net/resources/Patient.ndjson"
},
{
"name": "etag",
"valueUri": "0x8D92A7342657F4F"
}
]
},
{
"name": "input",
"part": [
{
"name": "type",
"valueString": "CarePlan"
},
{
"name": "url",
"valueUri": "https://example.blob.core.windows.net/resources/CarePlan.ndjson"
}
]
}
]
}
Kontrollera importstatus
När $import har initierats returneras en tom svarstext med en återanropslänk i Content-location
svarets huvud tillsammans med 202-Accepted
statuskoden. Lagra den här återanropslänken för att kontrollera importstatusen.
Kontrollera importstatusen genom att göra REST-anropet GET
med metoden till återanropslänken som returnerades i föregående steg.
Du kan tolka svaret med hjälp av följande tabell:
Svarskod | Själva svaret | Description |
---|---|---|
202 accepterad | Åtgärden körs fortfarande. | |
200 OK | Svarstexten innehåller ingen error.url-post | Alla resurser har importerats. |
200 OK | Svarstexten innehåller en viss error.url-post | Ett fel uppstod vid import av några av resurserna. Mer information finns i filerna som finns på error.url. Resten av resurserna har importerats. |
Övrigt | Ett allvarligt fel uppstod och åtgärden har stoppats. Importerade resurser har inte återställts. |
Tabellen nedan innehåller några av de viktiga fälten i svarstexten:
Fält | Beskrivning |
---|---|
transactionTime | Starttid för massimportåtgärden. |
output.count | Antal resurser som har importerats |
error.count | Antal resurser som inte har importerats på grund av ett fel |
error.url | URL för filen som innehåller information om felet. Varje error.url är unik för en indata-URL. |
Exempelsvar:
{
"transactionTime": "2021-07-16T06:46:52.3873388+00:00",
"request": "https://importperf.azurewebsites.net/$Import",
"output": [
{
"type": "Patient",
"count": 10000,
"inputUrl": "https://example.blob.core.windows.net/resources/Patient.ndjson"
},
{
"type": "CarePlan",
"count": 199949,
"inputUrl": "https://example.blob.core.windows.net/resources/CarePlan.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"
}
]
}
Felsökning
Låter genomgångslösningar för vissa felkoder som du kan stöta på under importåtgärden.
200 OK, men det finns ett fel med URL:en i svaret
Beteende: Importåtgärden lyckas och returnerar 200 OK
. Finns dock error.url
i svarstexten. Filer som finns på platsen error.url
innehåller JSON-fragment som liknar exemplet nedan:
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"details": {
"text": "Given conditional reference '{0}' does'nt resolve to a resource."
},
"diagnostics": "Failed to process resource at line: {0} with stream start offset: {1}"
}
]
}
Orsaka: NDJSON-filer innehåller resurser med villkorsstyrda referenser, som för närvarande inte stöds av $import.
Lösning: Ersätt de villkorsstyrda referenserna till normala referenser i NDJSON-filerna.
400 Felaktig begäran
Beteende: Importen misslyckades och 400 Bad Request
returneras. Svarstexten har följande innehåll:
{
"resourceType": "OperationOutcome",
"id": "13876ec9-3170-4525-87ec-9e165052d70d",
"issue": [
{
"severity": "error",
"code": "processing",
"diagnostics": "import operation failed for reason: No such host is known. (example.blob.core.windows.net:443)"
}
]
}
Lösning: Kontrollera att länken till Azure Storage är korrekt. Kontrollera nätverks- och brandväggsinställningarna för att se till att FHIR-servern kan komma åt lagringen. Om din tjänst finns i ett virtuellt nätverk kontrollerar du att lagringen finns i samma virtuella nätverk eller i ett virtuellt nätverk som har peering med FHIR-tjänstens virtuella nätverk.
403 – Förbjuden
Beteende: Importen misslyckades och 403 Forbidden
returneras. Svarstexten har följande innehåll:
{
"resourceType": "OperationOutcome",
"id": "bd545acc-af5d-42d5-82c3-280459125033",
"issue": [
{
"severity": "error",
"code": "processing",
"diagnostics": "import operation failed for reason: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature."
}
]
}
Orsaka: Vi använder hanterad identitet för källlagringsautentisering. Det här felet kan orsakas av en rolltilldelning som saknas eller är felaktig.
Lösning: Tilldela rollen Storage Blob Data-deltagare till FHIR-servern enligt RBAC-guiden.
500 internt serverfel
Beteende: Importen misslyckades och 500 Internal Server Error
returneras. Svarstexten har följande innehåll:
{
"resourceType": "OperationOutcome",
"id": "0d0f007d-9e8e-444e-89ed-7458377d7889",
"issue": [
{
"severity": "error",
"code": "processing",
"diagnostics": "import operation failed for reason: The database '****' has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions."
}
]
}
Orsaka: Du har nått lagringsgränsen för FHIR-tjänsten.
Lösning: Minska storleken på dina data eller överväg Azure API för FHIR, som har en högre lagringsgräns.
Nästa steg
I den här artikeln har du lärt dig hur importåtgärden gör det möjligt att importera FHIR-data till FHIR-servern med högt dataflöde. Mer information om hur du konverterar data till FHIR, exporterar inställningar för att konfigurera ett lagringskonto och flyttar data till Azure Synapse finns i
FHIR® är ett registrerat varumärke som tillhör HL7 och används med tillstånd av HL7.