Sdílet prostřednictvím


Operace importu

Operace importu umožňuje načíst data FHIR® (Fast Healthcare Interoperability Resources) na server FHIR s vysokou propustností pomocí operace $import. Import podporuje počáteční i přírůstkové načítání dat na server FHIR.

Použití operace $import

Poznámka

Abyste mohli používat $import, musíte mít na serveru FHIR roli FHIR Data Importer .

Pokud chcete použít $import, musíte nakonfigurovat server FHIR podle pokynů v článku Konfigurace nastavení importu . Data FHIR, která se mají importovat, musí být uložená v souborech specifických pro prostředky ve formátu FHIR NDJSON v úložišti objektů blob Azure.

Pro operaci importu se ujistěte, že

  • Všechny prostředky v souboru musí být stejného typu. Pro každý typ prostředku můžete mít více souborů.
  • Data, která se mají importovat, musí být ve stejném tenantovi jako služba FHIR.
  • Maximální počet souborů, které se mají importovat na operaci, je 10 000.

Poznámka:

  • Operace importu nepodporuje podmíněné odkazy v prostředcích.
  • Pokud během operace importu více prostředků sdílí stejné ID prostředku, importuje se náhodně jenom jeden z těchto prostředků. U prostředků, které sdílejí stejné ID prostředku, se zaprotokoluje chyba.

Volání $import

Zavolejte na POST metodu <<FHIR service base URL>>/$import se zobrazeným záhlavím a textem požadavku:

Hlavička požadavku

Prefer:respond-async
Content-Type:application/fhir+json

Text

Název parametru Description Karty. Přípustné hodnoty
inputFormat Řetězec představující název formátu zdroje dat. V současné době jsou podporovány pouze soubory FHIR NDJSON. 1..1 application/fhir+ndjson
režim Hodnota režimu importu 1..1 Pro počáteční import použijte InitialLoad hodnotu režimu. Pro režim přírůstkového importu použijte IncrementalLoad hodnotu režimu. Pokud není zadaná žádná hodnota režimu, považuje se ve výchozím nastavení za hodnotu režimu IncrementalLoad.
vstup Podrobnosti o vstupních souborech. 1..* Pole JSON se třemi částmi popsanými v následující tabulce.
Název vstupní části Description Karty. Přípustné hodnoty
typ Typ prostředku vstupního souboru 1..1 Platný typ prostředku FHIR , který odpovídá vstupnímu souboru.
URL Adresa URL úložiště Azure vstupního souboru 1..1 Hodnota adresy URL vstupního souboru, kterou nelze upravit.
Etag Značka Etag vstupního souboru v úložišti Azure sloužící k ověření, že se obsah souboru nezměnil. 0..1 Hodnota Etag vstupního souboru, kterou nelze upravit.

Ukázkový text pro počáteční import načtení:

{
    "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"
                }
            ]
        }
    ]
}

Kontrola stavu importu

Po zahájení $import se v Content-location hlavičce odpovědi vrátí prázdné tělo odpovědi s odkazem na zpětné volání společně se stavovým kódem202-Accepted. Uložte tento odkaz na zpětné volání a zkontrolujte stav importu.

Pokud chcete zkontrolovat stav importu, proveďte volání REST pomocí GET metody na odkaz zpětného volání vrácený v předchozím kroku. Odpověď můžete interpretovat pomocí následující tabulky:

Kód odpovědi Text odpovědi Description
202 přijato Operace je stále spuštěná.
200 OK Text odpovědi neobsahuje žádnou položku error.url. Všechny prostředky se úspěšně naimportovaly.
200 OK Text odpovědi obsahuje nějakou položku error.url. Při importu některých prostředků došlo k chybě. Podrobnosti najdete v souborech umístěných na adrese error.url. Zbývající prostředky se úspěšně naimportovaly.
Jiné Došlo k závažné chybě a operace se zastavila. Úspěšně importované prostředky se nevrátily zpět.

Následující tabulka obsahuje některá důležitá pole v textu odpovědi:

Pole Description
transactionTime Čas zahájení operace hromadného importu.
output.count Počet prostředků, které se úspěšně naimportovaly
error.count Počet prostředků, které se neimportovaly kvůli nějaké chybě
error.url Adresa URL souboru obsahujícího podrobnosti o chybě. Každá adresa error.url je jedinečná pro vstupní adresu URL.

Ukázková odpověď:

{
    "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"
        }
    ]
}

Poradce při potížích

Umožňuje názorná řešení některých kódů chyb, se kterými se můžete setkat během operace importu.

200 OK, ale v odpovědi je chyba s adresou URL

Chování: Operace importu je úspěšná a vrátí 200 OK. Jsou však error.url přítomné v těle odpovědi. Soubory v umístění error.url obsahují fragmenty JSON podobné následujícímu příkladu:

{
    "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}"
        }
    ]
}

Způsobit: Soubory NDJSON obsahují prostředky s podmíněnými odkazy, které $import v současné době nepodporuje.

Řešení: Nahraďte podmíněné odkazy na normální odkazy v souborech NDJSON.

400 – Chybný požadavek

Chování: Operace importu selhala a 400 Bad Request je vrácena. Text odpovědi má následující obsah:

{
    "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)"
        }
    ]
}

Řešení: Ověřte správnost propojení s úložištěm Azure. Zkontrolujte nastavení sítě a brány firewall a ujistěte se, že má server FHIR přístup k úložišti. Pokud je vaše služba ve virtuální síti, ujistěte se, že je úložiště ve stejné virtuální síti nebo ve virtuální síti, která má partnerský vztah s virtuální sítí služby FHIR.

403 – Zakázáno

Chování: Operace importu selhala a 403 Forbidden je vrácena. Text odpovědi má následující obsah:

{
    "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."
        }
    ]
}

Způsobit: Pro ověřování zdrojového úložiště používáme spravovanou identitu. Příčinou této chyby může být chybějící nebo nesprávné přiřazení role.

Řešení: Podle průvodce RBAC přiřaďte serveru FHIR roli Přispěvatel dat v objektech blob služby Storage.

500 – Vnitřní chyba serveru

Chování: Operace importu selhala a 500 Internal Server Error je vrácena. Text odpovědi má následující obsah:

{
    "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."
        }
    ]
}

Způsobit: Dosáhli jste limitu úložiště služby FHIR.

Řešení: Zmenšete velikost dat nebo zvažte azure API for FHIR, které má vyšší limit úložiště.

Další kroky

V tomto článku jste se dozvěděli, jak operace importu umožňuje importovat data FHIR na server FHIR s vysokou propustností. Další informace o převodu dat na FHIR, exportu nastavení pro nastavení účtu úložiště a přesunu dat do Azure Synapse najdete v tématu

FHIR® je registrovaná ochranná známka hl7 a používá se se svolením HL7.