Importvorgang
Der Importvorgang ermöglicht das Laden von FHIR-Daten® (Fast Healthcare Interoperability Resources) mit hohem Durchsatz auf den FHIR-Server mithilfe des $import-Vorgangs. Der Import unterstützt sowohl das anfängliche als auch das inkrementelle Laden von Daten in den FHIR-Server.
Verwenden $import Vorgangs
Hinweis
Sie müssen über die Rolle FHIR Data Importer auf dem FHIR-Server verfügen, um $import verwenden zu können.
Um $import verwenden zu können, müssen Sie den FHIR-Server mithilfe der Anweisungen im Artikel Konfigurieren von Importeinstellungen konfigurieren. Die zu importierenden FHIR-Daten müssen in ressourcenspezifischen Dateien im FHIR-NDJSON-Format im Azure-Blobspeicher gespeichert werden.
Stellen Sie für den Importvorgang sicher, dass
- Alle Ressourcen in einer Datei müssen vom gleichen Typ sein. Möglicherweise verfügen Sie über mehrere Dateien pro Ressourcentyp.
- Die zu importierenden Daten müssen sich im selben Mandanten wie der FHIR-Dienst befinden.
- Die maximale Anzahl von Dateien, die pro Vorgang importiert werden sollen, beträgt 10.000.
Hinweis:
- Der Importvorgang unterstützt keine bedingten Verweise in Ressourcen.
- Wenn während des Importvorgangs mehrere Ressourcen dieselbe Ressourcen-ID verwenden, wird nur eine dieser Ressourcen nach dem Zufallsprinzip importiert. Es wird ein Fehler für die Ressourcen protokolliert, die dieselbe Ressourcen-ID verwenden.
Aufrufen $import
Rufen <<FHIR service base URL>>/$import
Sie mit dem Anforderungsheader und dem Textkörper aufPOST
:
Anforderungsheader
Prefer:respond-async
Content-Type:application/fhir+json
Body
Parametername | BESCHREIBUNG | Karte. | Zulässige Werte |
---|---|---|---|
EingabeFormat | Zeichenfolge, die den Namen des Datenquellenformats darstellt. Derzeit werden nur FHIR NDJSON-Dateien unterstützt. | 1..1 | application/fhir+ndjson |
Modus | Importmoduswert | 1..1 | Für den anfänglichen Import verwenden Sie den Wert des Verwendungsmodus InitialLoad . Verwenden Sie IncrementalLoad für den inkrementellen Importmodus den Wert des Modus. Wenn kein Moduswert angegeben ist, wird standardmäßig der Wert des IncrementalLoad-Modus berücksichtigt. |
input | Details der Eingabedateien. | 1..* | Ein JSON-Array mit drei Teilen, die in der folgenden Tabelle beschrieben sind. |
Name des Eingabeteils | BESCHREIBUNG | Karte. | Zulässige Werte |
---|---|---|---|
Typ | Ressourcentyp der Eingabedatei | 1..1 | Ein gültiger FHIR-Ressourcentyp , der mit der Eingabedatei übereinstimmt. |
URL | Azure-Speicher-URL der Eingabedatei | 1..1 | URL-Wert der Eingabedatei, die nicht geändert werden kann. |
etag | Etag der Eingabedatei im Azure-Speicher, die verwendet wird, um zu überprüfen, ob sich der Dateiinhalt nicht geändert hat. | 0..1 | Etag-Wert der Eingabedatei, die nicht geändert werden kann. |
Beispieltext für initialen Ladeimport:
{
"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"
}
]
}
]
}
Überprüfen von Import-status
Sobald $import initiiert wurde, wird ein leerer Antworttext mit einem Rückruflink im Header der Content-location
Antwort zusammen mit 202-Accepted
status Code zurückgegeben. Speichern Sie diesen Rückruflink, um die Import-status zu überprüfen.
Um den Import status zu überprüfen, führen Sie den REST-Aufruf mit der GET
-Methode an den im vorherigen Schritt zurückgegebenen Rückruflink aus.
Sie können die Antwort mithilfe der folgenden Tabelle interpretieren:
Antwortcode | Antworttext | BESCHREIBUNG |
---|---|---|
202 – Akzeptiert | Der Vorgang wird weiterhin ausgeführt. | |
200 – OK | Der Antworttext enthält keinen Fehler.url-Eintrag. | Alle Ressourcen wurden erfolgreich importiert. |
200 – OK | Der Antworttext enthält einen Fehler.url-Eintrag. | Fehler beim Importieren einiger Ressourcen. Weitere Informationen finden Sie in den Dateien unter error.url. Die restlichen Ressourcen wurden erfolgreich importiert. |
Sonstiges | Es ist ein schwerwiegender Fehler aufgetreten, und der Vorgang wurde beendet. Erfolgreich importierte Ressourcen wurden nicht zurückgesetzt. |
Die folgende Tabelle enthält einige der wichtigen Felder im Antworttext:
Feld | BESCHREIBUNG |
---|---|
transactionTime | Startzeit des Massenimportvorgangs. |
output.count | Anzahl der Ressourcen, die erfolgreich importiert wurden |
error.count | Anzahl der Ressourcen, die aufgrund eines Fehlers nicht importiert wurden |
error.url | DIE URL der Datei, die Details des Fehlers enthält. Jede error.url ist für eine Eingabe-URL eindeutig. |
Beispielantwort:
{
"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"
}
]
}
Problembehandlung
Ermöglicht exemplarische Lösungen für einige Fehlercodes, die während des Importvorgangs auftreten können.
200 OK, aber es gibt einen Fehler mit der URL in der Antwort.
Verhalten: Der Importvorgang ist erfolgreich und gibt zurück 200 OK
. Sind jedoch error.url
im Antworttext vorhanden. Dateien, die error.url
am Speicherort vorhanden sind, enthalten JSON-Fragmente ähnlich dem folgenden Beispiel:
{
"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}"
}
]
}
Ursache: NDJSON-Dateien enthalten Ressourcen mit bedingten Verweisen, die derzeit von $import nicht unterstützt werden.
Lösung: Ersetzen Sie die bedingten Verweise auf normale Verweise in den NDJSON-Dateien.
400 – Ungültige Anforderung
Verhalten: Fehler beim Importvorgang und 400 Bad Request
wird zurückgegeben. Der Antworttext enthält den folgenden Inhalt:
{
"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ösung: Überprüfen Sie, ob der Link zum Azure-Speicher korrekt ist. Überprüfen Sie die Netzwerk- und Firewalleinstellungen, um sicherzustellen, dass der FHIR-Server auf den Speicher zugreifen kann. Wenn sich Ihr Dienst in einem VNET befindet, stellen Sie sicher, dass sich der Speicher im selben VNET oder in einem VNET befindet, das über Peering mit dem VNET des FHIR-Diensts verfügt.
403 Verboten
Verhalten: Fehler beim Importvorgang und 403 Forbidden
wird zurückgegeben. Der Antworttext hat den folgenden Inhalt:
{
"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."
}
]
}
Ursache: Wir verwenden die verwaltete Identität für die Authentifizierung des Quellspeichers. Dieser Fehler kann durch eine fehlende oder falsche Rollenzuweisung verursacht werden.
Lösung: Weisen Sie dem FHIR-Server die Rolle "Mitwirkender an Storage-Blobdaten " gemäß dem RBAC-Leitfaden zu.
500 Interner Serverfehler
Verhalten: Fehler beim Importvorgang und 500 Internal Server Error
wird zurückgegeben. Der Antworttext enthält den folgenden Inhalt:
{
"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."
}
]
}
Ursache: Sie haben das Speicherlimit des FHIR-Diensts erreicht.
Lösung: Verringern Sie die Größe Ihrer Daten, oder ziehen Sie Azure API for FHIR in Betracht, die ein höheres Speicherlimit aufweist.
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie der Importvorgang das Importieren von FHIR-Daten auf den FHIR-Server mit hohem Durchsatz ermöglicht. Weitere Informationen zum Konvertieren von Daten in FHIR, zum Exportieren von Einstellungen zum Einrichten eines Speicherkontos und zum Verschieben von Daten in Azure Synapse finden Sie unter
FHIR® ist eine eingetragene Marke von HL7 und wird mit Genehmigung von HL7 verwendet.