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.