Aracılığıyla paylaş


İç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-locationgeri ç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.