İçeri Aktarma İşlemi
İçeri aktarma işlemi, $import işlemini kullanarak Hızlı Sağlık Hizmeti Birlikte Çalışabilirlik Kaynakları (FHIR®) verilerinin yüksek aktarım hızında FHIR sunucusuna yüklenmesini sağlar. İçeri aktarma, FHIR sunucusuna hem ilk hem de artımlı veri yükünü destekler.
$import işlemini kullanma
Not
$import kullanmak için FHIR sunucusunda FHIR Veri Aktarıcı rolüne sahip olmanız gerekir.
$import kullanmak için İçeri aktarma ayarlarını yapılandırma makalesindeki yönergeleri kullanarak FHIR sunucusunu yapılandırmanız gerekir. İçeri aktarılacak FHIR verileri, Azure blob deposundaki FHIR NDJSON biçiminde kaynağa özgü dosyalarda depolanmalıdır.
İçeri aktarma işlemi için
- Bir dosyadaki tüm kaynaklar aynı türde olmalıdır. Kaynak türü başına birden çok dosyanız olabilir.
- İçeri aktarılacak veriler FHIR hizmetiyle aynı Kiracıda olmalıdır.
- İşlem başına içeri aktarılacak dosya sayısı üst sınırı 10.000'dir.
Not:
- İçeri aktarma işlemi kaynaklarda koşullu başvuruları desteklemez.
- İçeri aktarma işlemi sırasında, birden çok kaynak aynı kaynak kimliğini paylaşıyorsa, bu kaynaklardan yalnızca biri rastgele içeri aktarılır. Aynı kaynak kimliğini paylaşan kaynaklar için günlüğe kaydedilen bir hata var.
Arama $import
İstek üst bilgisi ve gövdesi gösterilen bir POST
<<FHIR service base URL>>/$import
çağrısı yapın:
İstek Başlığı
Prefer:respond-async
Content-Type:application/fhir+json
Gövde
Parametre Adı | Description | Kartı. | Kabul edilen değerler |
---|---|---|---|
inputFormat | Veri kaynağı biçiminin adını temsil eden dize. Şu anda yalnızca FHIR NDJSON dosyaları desteklenmektedir. | 1..1 | application/fhir+ndjson |
mod | İçeri aktarma modu değeri | 1..1 | İlk içeri aktarma için kullanım InitialLoad modu değeri. Artımlı içeri aktarma modu için mod değerini kullanın IncrementalLoad . Hiçbir mod değeri sağlanmazsa IncrementalLoad modu değeri varsayılan olarak dikkate alınır. |
giriş | Giriş dosyalarının ayrıntıları. | 1..* | Aşağıdaki tabloda açıklanan üç bölüme sahip bir JSON dizisi. |
Giriş bölümü adı | Description | Kartı. | Kabul edilen değerler |
---|---|---|---|
tür | Giriş dosyasının kaynak türü | 1..1 | Giriş dosyasıyla eşleşen geçerli bir FHIR kaynak türü . |
URL | Giriş dosyasının Azure depolama URL'si | 1..1 | Değiştirilemedi giriş dosyasının URL değeri. |
Etag | Azure depolamada dosya içeriğinin değişmediğini doğrulamak için kullanılan giriş dosyasının etag'i. | 0..1 | Değiştirilemedi giriş dosyasının Etag değeri. |
İlk yük içeri aktarma için örnek gövde:
{
"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"
}
]
}
]
}
İçeri aktarma durumunu denetleme
$import başlatıldıktan sonra, yanıtın üst bilgisinde Content-location
geri çağırma bağlantısı olan boş bir yanıt 202-Accepted
gövdesi ve durum kodu döndürülür. İçeri aktarma durumunu denetlemek için bu geri arama bağlantısını depolayın.
İçeri aktarma durumunu denetlemek için, önceki adımda döndürülen geri çağırma bağlantısına yöntemiyle GET
REST çağrısı yapın.
Aşağıdaki tabloyu kullanarak yanıtı yorumlayabilirsiniz:
Yanıt kodu | Yanıt gövdesi | Description |
---|---|---|
202 Kabul Edildi | İşlem hala çalışıyor. | |
200 Tamam | Yanıt gövdesinde error.url girişi yok | Tüm kaynaklar başarıyla içeri aktarıldı. |
200 Tamam | Yanıt gövdesinde error.url girişi var | Bazı kaynaklar içeri aktarılırken hata oluştu. Ayrıntılar için error.url adresinde bulunan dosyalara bakın. Kalan kaynaklar başarıyla içeri aktarıldı. |
Diğer | Önemli bir hata oluştu ve işlem durduruldu. Başarıyla içeri aktarılan kaynaklar geri alınmadı. |
Aşağıdaki tabloda yanıt gövdesindeki önemli alanlardan bazıları sağlanır:
Alan | Açıklama |
---|---|
transactionTime | Toplu içeri aktarma işleminin başlangıç zamanı. |
output.count | Başarıyla içeri aktarılan kaynakların sayısı |
error.count | Bazı hatalardan dolayı içeri aktarılmayan kaynakların sayısı |
error.url | Hatanın ayrıntılarını içeren dosyanın URL'si. Her error.url, giriş URL'si için benzersizdir. |
Örnek yanıt:
{
"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"
}
]
}
Sorun giderme
İçeri aktarma işlemi sırasında karşılaşabileceğiniz bazı hata kodları için çözümlere göz atın.
200 Tamam, ancak yanıtta URL ile ilgili bir hata var
Davranış: İçeri aktarma işlemi başarılı olur ve döndürür 200 OK
. Ancak, error.url
yanıt gövdesinde bulunur. Konumda bulunan error.url
dosyalar aşağıdaki örneğe benzer JSON parçaları içerir:
{
"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}"
}
]
}
Neden: NDJSON dosyaları, şu anda $import tarafından desteklenmeyen koşullu başvurulara sahip kaynaklar içerir.
Çözüm: Koşullu başvuruları NDJSON dosyalarındaki normal başvurularla değiştirin.
400 Hatalı İstek
Davranış: İçeri aktarma işlemi başarısız oldu ve 400 Bad Request
döndürüldü. Yanıt gövdesi aşağıdaki içeriğe sahiptir:
{
"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)"
}
]
}
Çözüm: Azure depolama bağlantısının doğru olduğunu doğrulayın. FHIR sunucusunun depolamaya erişebildiğinden emin olmak için ağ ve güvenlik duvarı ayarlarını denetleyin. Hizmetiniz bir sanal ağdaysa, depolama alanının aynı sanal ağda veya FHIR hizmeti sanal ağıyla eşlemesi olan bir sanal ağda olduğundan emin olun.
403 Yasak
Davranış: İçeri aktarma işlemi başarısız oldu ve 403 Forbidden
döndürüldü. Yanıt gövdesi aşağıdaki içeriğe sahiptir:
{
"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."
}
]
}
Neden: Kaynak depolama kimlik doğrulaması için yönetilen kimlik kullanıyoruz. Bu hatanın nedeni eksik veya yanlış bir rol ataması olabilir.
Çözüm:RBAC kılavuzunu izleyerek FHIR sunucusuna Depolama Blob Verileri Katkıda Bulunanı rolü atayın.
500 İç Sunucu Hatası
Davranış: İçeri aktarma işlemi başarısız oldu ve 500 Internal Server Error
döndürüldü. Yanıt gövdesi aşağıdaki içeriğe sahiptir:
{
"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."
}
]
}
Neden: FHIR hizmetinin depolama sınırına ulaştınız.
Çözüm: Verilerinizin boyutunu küçültün veya depolama sınırı daha yüksek olan FHIR için Azure API'yi göz önünde bulundurun.
Sonraki adımlar
Bu makalede, içeri aktarma işleminin FHIR verilerini yüksek aktarım hızıyla FHIR sunucusuna aktarmaya nasıl olanak sağladığını öğrendiniz. Verileri FHIR'ye dönüştürme, depolama hesabı ayarlama ayarlarını dışarı aktarma ve verileri Azure Synapse taşıma hakkında daha fazla bilgi için bkz.
FHIR®, HL7'nin tescilli ticari markasıdır ve HL7 izniyle kullanılır.