Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tuto import
operaci můžete použít k ingestování dat FHIR® na server FHIR s vysokou propustností.
Režimy operací importu
Operace import
podporuje dva režimy: počáteční a přírůstkový. Každý režim má jiné funkce a případy použití.
Počáteční režim
Určeno pro načítání prostředků FHIR na prázdný server FHIR.
Blokuje zápisy rozhraní API na server FHIR.
Přírůstkový režim
Je optimalizován pro pravidelné načítání dat na server FHIR a neblokuje zápisy prostřednictvím rozhraní API.
Umožňuje načíst
lastUpdated
hodnoty aversionId
hodnoty z metadat prostředků, pokud jsou přítomny ve formátu JSON prostředku.Umožňuje načítat prostředky v nesekvenčním pořadí verzí. Poznámka k nesekvenčnímu příjmu prostředků
- Pokud soubory importu
version
nemají zadané hodnoty polí alastUpdated
, neexistuje žádná záruka importu všech prostředků ve službě FHIR. - Pokud importované soubory obsahují prostředky s duplicitními
version
hodnotami alastUpdated
hodnotami polí, ve službě FHIR se náhodně ingestuje pouze jeden prostředek. - Pokud během paralelního spouštění sdílí více prostředků stejné ID prostředku, náhodně se importuje pouze jeden z těchto prostředků.
- Pokud soubory importu
Následující tabulka ukazuje rozdíl mezi režimy importu.
Oblasti | Počáteční režim | Přírůstkový režim |
---|---|---|
Schopnost | Počáteční načtení dat do služby FHIR | Průběžný příjem dat do služby FHIR (přírůstkový nebo téměř v reálném čase). |
Souběžná volání rozhraní API | Blokuje souběžné operace zápisu | Data je možné ingestovat souběžně při provádění operací rozhraní API CRUD na serveru FHIR. |
Příjem prostředků s verzí | Nepodporováno | Umožňuje příjem více verzí prostředků FHIR v jedné dávce při zachování historie prostředků. |
Zachovat hodnotu pole lastUpdated | Nepodporováno | Během procesu příjmu dat zachovejte hodnotu pole lastUpdated v prostředcích FHIR. |
Fakturování | Není zpoplatněn | Na základě úspěšně přijatých prostředků se účtují poplatky. Poplatky se účtují za jednotlivé ceny rozhraní API. |
Důležité informace o výkonu
Chcete-li dosáhnout nejlepšího výkonu operace import
, zvažte následující faktory.
Pro import použijte velké soubory. Optimální velikost souboru NDJSON pro import je >=50 MB (nebo >=20 kB zdrojů, bez horního limitu). Zvažte kombinování menších souborů dohromady.
Importujte soubory prostředků FHIR jako jednu dávku. Pro zajištění optimálního výkonu importujte všechny soubory prostředků FHIR, které chcete ingestovat na serveru FHIR, v jedné
import
operaci. Import všech souborů v jedné operaci snižuje režii spojenou s vytvářením a správou více úloh importu. V optimálním případě by měla být celková velikost souborů v jednom importu velká (>= 100 GB nebo >= 100 milionů zdrojů, bez horního limitu).Omezte počet úloh paralelního importu. Můžete spustit více
import
úloh současně, ale může to ovlivnit celkovou propustnostimport
operace.
Proveďte operaci importu
Požadavky
Abyste mohli tuto
import
operaci použít, potřebujete na serveru FHIR roli importéra dat FHIR .Nakonfigurujte server FHIR. Data FHIR musí být uložená v souborech specifických pro prostředky ve formátu FHIR NDJSON v úložišti objektů blob Azure. Další informace naleznete v tématu Konfigurace nastavení importu.
Data musí být ve stejném tenantovi jako služba FHIR.
Informace o získání přístupového tokenu naleznete v tématu Přístupový token
Volání
POST
Proveďte volání s <<FHIR service base URL>>/$import
následující hlavičkou a textem požadavku.
Hlavička požadavku
Prefer:respond-async
Content-Type:application/fhir+json
Tělo
Následující tabulky popisují parametry těla a vstupy.
Název parametru | Popis | Kardinalita | Přípustné hodnoty |
---|---|---|---|
inputFormat |
Řetězec představující název formátu zdroje dat. Podporovány jsou pouze soubory FHIR NDJSON. | 1..1 | application/fhir+ndjson |
mode |
Hodnota režimu importu. | 1..1 | Pro import v počátečním režimu použijte InitialLoad hodnotu mode. Pro import v přírůstkovém IncrementalLoad režimu použijte hodnotu mode. Pokud nezadáte hodnotu režimu, IncrementalLoad použije se ve výchozím nastavení hodnota režimu. |
allowNegativeVersions |
Umožňuje serveru FHIR přiřazovat záporné verze pro záznamy o prostředcích s explicitní hodnotou lastUpdated a bez zadané verze, pokud se vstup nevejde do souvislého prostoru kladných verzí existujících v úložišti. | 0..1 | Chcete-li tuto funkci povolit, předejte hodnotu true. Ve výchozím nastavení je to false. |
errorContainerName |
Řetězec představující název kontejneru, ve kterém budou protokolovány chyby zjištěné během procesu importu. | 0..1 | Vlastní název kontejneru pro protokoly chyb. Název by měl mít 3 až 63 znaků a měl by obsahovat pouze malá písmena, číslice a spojovníky. Pokud není zadaný, použije se výchozí kontejner. |
input |
Podrobnosti o vstupních souborech. | 1..* | Pole JSON se třemi částmi popsanými v následující tabulce. |
Název vstupní části | Popis | Kardinalita | Přípustné hodnoty |
---|---|---|---|
type |
Typ prostředku vstupního souboru. | 0..1 | Platný typ prostředku FHIR , který odpovídá vstupnímu souboru. Toto pole je volitelné. |
url |
Adresa URL vstupního souboru služby Azure Storage. | 1..1 | Hodnota URL vstupního souboru. Hodnotu nelze změnit. |
etag |
Značka ETag vstupního souboru v úložišti Azure. Slouží k ověření, zda se obsah souboru po import registraci nezměnil. |
0..1 | ETag vstupního souboru. |
{
"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\""
}
]
}
]
}
Kontrola stavu importu
Po spuštění import
operace se v callback
hlavičce odpovědi vrátí prázdný text Content-location
odpovědi s odkazem spolu se stavovým kódem202 Accepted
.
callback
Uložte odkaz a zkontrolujte stav importu.
Registrace import
operace je implementována jako idempotentní volání. Stejná datová část registrace poskytuje stejnou registraci, což ovlivňuje schopnost znovu zpracovat soubory se stejným názvem. Neaktualizujte soubory na místě. Místo toho doporučujeme použít pro aktualizovaná data jiný název souboru. Nebo, pokud je místní aktualizace se stejným názvem souboru nevyhnutelná, přidejte značky ETag do datové části registrace.
Chcete-li zkontrolovat stav importu, proveďte volání REST s GET
metodou k odkazu vrácenému callback
v předchozím kroku.
Interpretujte odpověď pomocí této tabulky.
Kód odpovědi | Obsah odpovědi | Popis |
---|---|---|
202 Accepted |
Operace je stále spuštěná. | |
200 OK |
The response body doesn't contain any error.url entry |
Všechny prostředky byly úspěšně importovány. |
200 OK |
The response body contains some error.url entry |
Při importu některých zdrojů došlo k chybě. Podrobnosti naleznete v souborech umístěných na adrese error.url . Zbývající prostředky byly úspěšně importovány. |
Other |
Došlo k závažné chybě a operace byla zastavena. Úspěšně importované prostředky se nevrátí zpět. |
Následující tabulka popisuje důležitá pole v textu odpovědi:
Obor | Popis |
---|---|
transactionTime |
Čas zahájení hromadné import operace. |
output.count |
Počet prostředků, které byly úspěšně importovány. |
error.count |
Počet prostředků, které nebyly importovány kvůli chybě. |
error.url |
Adresa URL souboru, který obsahuje podrobnosti o chybě. Každá error.url instance je jedinečná pro vstupní adresu URL. |
{
"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"
}
]
}
Ingestování obnovitelně odstraněných prostředků
Import v přírůstkovém režimu podporuje příjem obnovitelně odstraněných prostředků. Rozšíření musíte použít k ingestování obnovitelně odstraněných prostředků ve službě FHIR.
Přidejte rozšíření do prostředku, abyste informovali službu FHIR, že byl prostředek obnovitelně odstraněn.
{"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" } ] } }
import
Po úspěšném dokončení operace proveďte vyhledávání v historii prostředku a ověřte obnovitelně odstraněné prostředky. Pokud znáte ID odstraněného prostředku, použijte vzor adresy URL v následujícím příkladu.
<FHIR_URL>/<resource-type>/<resource-id>/_history
Pokud neznáte ID zdroje, proveďte hledání v historii podle typu zdroje.
<FHIR_URL>/<resource-type>/_history
Řešení problémů s operací importu
Zde jsou uvedeny chybové zprávy, které se zobrazí v případě import
selhání operace, spolu s doporučenými akcemi k vyřešení problémů.
200 OK, ale v odpovědi je chyba s adresou URL
Operace import
je úspěšná a vrátí .200 OK
error.url
Je však přítomen v textu odpovědi. Soubory přítomné v tomto error.url
umístění obsahují fragmenty JSON podobné následujícímu příkladu.
{
"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}"
}
]
}
Příčina: Soubory NDJSON obsahují prostředky s podmíněnými odkazy, které import
nepodporují.
Řešení: Nahraďte podmíněné odkazy za normální odkazy v souborech NDJSON.
400 – Chybný požadavek
Operace import
se nezdaří a vrátí soubor 400 Bad Request
. Tělo odpovědi obsahuje diagnostický obsah.
Operace importu se nezdařila z důvodu: Žádný takový hostitel není znám. (example.blob.core.windows.net:443) Řešení: Ověřte, zda je odkaz na úložiště Azure správný. Zkontrolujte nastavení sítě a brány firewall a ujistěte se, že server FHIR má přístup k úložišti. Pokud je vaše služba ve virtuální síti, zajistěte, aby úložiště bylo ve stejné virtuální síti nebo ve virtuální síti, která je propojena s virtuální sítí služby FHIR.
Prostředky SearchParameter nelze zpracovat importem Řešení: Operace importu vrátí chybu HTTP 400 při ingestování prostředku parametru vyhledávání prostřednictvím procesu importu. Cílem této změny je zabránit tomu, aby se parametry hledání při ingestování s operací importu umístily do neplatného stavu.
403 Zakázáno
Operace import
se nezdaří a vrátí soubor 403 Forbidden
. Tělo odpovědi obsahuje diagnostický obsah.
Operace importu se nezdařila z důvodu: Serveru se nepodařilo ověřit požadavek. Ujistěte se, že má autorizační hlavička správný formát včetně podpisu. Příčina: Služba FHIR používá k ověřování zdrojového úložiště spravovanou identitu. Tato chyba značí chybějící nebo nesprávné přiřazení role. Řešení: Přiřaďte roli Přispěvatel dat objektů blob úložiště k serveru FHIR. Další informace najdete v tématu Přiřazení rolí Azure.
500 – Vnitřní chyba serveru
Operace import
se nezdaří a vrátí soubor 500 Internal Server Error
. Tělo odpovědi obsahuje diagnostický obsah.
Operace importu se nezdařila z důvodu: Databáze '****' dosáhla své kvóty velikosti. Vytvořte oddíl nebo odstraňte data, přetáhněte indexy nebo najděte možná řešení v dokumentaci.
Příčina: Dosáhli jste limitu úložiště služby FHIR.
Řešení: Zmenšete velikost dat nebo zvažte rozhraní Azure API for FHIR, které má vyšší limit úložiště.
423 Uzamčeno
Chování: Operace import
se nezdaří a vrátí soubor 423 Locked
. Tělo odpovědi zahrnuje tento obsah:
{
"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."
}
]
}
Příčina: Služba FHIR je nakonfigurovaná s režimem počátečního importu, který zablokoval jiné operace.
Řešení: Vypněte režim počátečního importu služby FHIR nebo vyberte přírůstkový režim.
Omezení
- Maximální počet souborů povolených pro každou
import
operaci je 10 000. - Počet souborů ingestovaných na serveru FHIR se stejnou hodnotou pole lastUpdated až do milisekund nesmí překročit 10 000.
- Operace importu není pro typ prostředku SearchParameter podporovaná.
- Operace importu nepodporuje podmíněné reference v prostředcích.
Další kroky
Konfigurace nastavení exportu a nastavení účtu úložiště
Kopírování dat do Azure Synapse Analytics
Poznámka:
FHIR® je registrovaná ochranná známka HL7 a používá se s povolením HL7.