Dela via


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.