Aracılığıyla paylaş


FHIR için Azure API'de reindex işi çalıştırma

Önemli

FHIR İçin Azure API'si 30 Eylül 2026 tarihinde kullanımdan kaldırılacaktır. Bu tarihe kadar Azure Health Data Services FHIR® hizmetine geçiş yapmak için geçiş stratejilerini izleyin. FHIR İçin Azure API'sinin kullanımdan kaldırılması nedeniyle 1 Nisan 2025 tarihinden itibaren yeni dağıtımlara izin verilmeyecektir. Azure Health Data Services FHIR hizmeti , müşterilerin FHIR, DICOM ve MedTech hizmetlerini diğer Azure hizmetleriyle tümleştirmelerle yönetmesine olanak tanıyan FHIR için Azure API'sinin gelişmiş sürümüdür.

FHIR® için Azure API'sinde henüz dizine eklenmemiş arama veya sıralama parametrelerine sahip olabileceğiniz senaryolar vardır. Bu senaryo, kendi arama parametrelerinizi tanımladığınızda geçerlidir. Arama parametresi dizine alınana kadar aramada kullanılamaz. Bu makalede, FHIR hizmet veritabanınızda arama parametrelerini dizine almak için yeniden dizin oluşturma işini çalıştırma işlemi anlatılır.

Uyarı

Başlamadan önce bu makalenin tamamını okumanız önemlidir. Ren geyiği işi çok yoğun performans gerektirir. Bu makale, yeniden dizin oluşturma işini kısıtlama ve denetleme seçeneklerini içerir.

Reindex işi çalıştırma

Bir reindex işi, FHIR hizmet veritabanının tamamına ve belirli özel arama parametrelerine karşı yürütülebilir.

FHIR hizmet veritabanının tamamında reindex işini çalıştırma

Reindex işi çalıştırmak için, istek gövdesinde JSON biçimlendirilmiş Parameters kaynakla aşağıdaki POST çağrıyı kullanın.

POST {{FHIR URL}}/$reindex 

{ 

“resourceType”: “Parameters”,  

“parameter”: [] 

}

"parameter": [] Reindex işine ayrılan kaynakları değiştirmeniz gerekmiyorsa alanı boş bırakın (gösterildiği gibi).

İstek başarılı olursa, aşağıdaki örnekte olduğu gibi yanıttaki bir kaynağa ek olarak bir Parameters 201 Oluşturuldu durum kodu alırsınız.

HTTP/1.1 201 Created 
Content-Location: https://{{FHIR URL}}/_operations/reindex/560c7c61-2c70-4c54-b86d-c53a9d29495e 

{
  "resourceType": "Parameters",
  "id": "560c7c61-2c70-4c54-b86d-c53a9d29495e",
  "meta": {
    "versionId": "\"4c0049cd-0000-0100-0000-607dc5a90000\""
  },
  "parameter": [
    {
      "name": "id",
      "valueString": "560c7c61-2c70-4c54-b86d-c53a9d29495e"
    },
    {
       "name": "lastModified",
       "valueDateTime": "2023-06-08T04:52:44.0974408+00:00"
    },
    {
       "name": "queuedTime",
       "valueDateTime": "2023-06-08T04:52:44.0974406+00:00"
    },
    {
       "name": "totalResourcesToReindex",
       "valueDecimal": 0.0
    },
    {
       "name": "resourcesSuccessfullyReindexed",
       "valueDecimal": 0.0
    },
    {
       "name": "progress",
       "valueDecimal": 0.0
    },
    {
       "name": "status",
       "valueString": "Queued"
    },
    {
       "name": "maximumConcurrency",
       "valueDecimal": 3.0
    },
    {
        "name": "queryDelayIntervalInMilliseconds",
        "valueDecimal": 500.0
    },
    {
        "name": "maximumNumberOfResourcesPerQuery",
        "valueDecimal": 100.0
    }
  ]
}

Reindex işini belirli bir özel arama parametresine karşı çalıştırma

Belirli bir özel arama parametresinde reindex işi çalıştırmak için, istek gövdesinde JSON biçimli Parameters kaynakla aşağıdaki POST çağrıyı kullanın.

POST {{FHIR_URL}}/$reindex 
content-type: application/fhir+json
{ 

"resourceType": "Parameters",  

"parameter": [
    {
      "name": "targetSearchParameterTypes",
      "valueString": "{url of custom search parameter. In case of multiple custom search parameters, url list can be comma seperated.}"
    }
] 

}

Not

Yeniden dizin oluşturma işinin durumunu denetlemek veya işi iptal etmek için reindex kimliği gerekir. Bu, yanıtta "parameter" döndürülen değerde taşınan değerdir"id". Yukarıdaki örnekte, reindex işinin kimliği olacaktır 560c7c61-2c70-4c54-b86d-c53a9d29495e.

Yeniden dizin işinin durumunu denetleme

Bir reindex işi başlattıktan sonra aşağıdaki çağrıyı kullanarak işin durumunu de kontrol edebilirsiniz.

GET {{FHIR URL}}/_operations/reindex/{{reindexJobId}

Aşağıda bir yanıt örneği yer alır.

{
    "resourceType": "Parameters",
    "id": "560c7c61-2c70-4c54-b86d-c53a9d29495e",
    "meta": {
        "versionId": "138087"
    },
    "parameter": [
        {
            "name": "id",
            "valueString": "560c7c61-2c70-4c54-b86d-c53a9d29495e"
        },
        {
            "name": "startTime",
            "valueDateTime": "2023-06-08T04:54:53.2943069+00:00"
        },
        {
            "name": "endTime",
            "valueDateTime": "2023-06-08T04:54:54.4052272+00:00"
        },
        {
            "name": "lastModified",
            "valueDateTime": "2023-06-08T04:54:54.4053002+00:00"
        },
        {
            "name": "queuedTime",
            "valueDateTime": "2023-06-08T04:52:44.0974406+00:00"
        },
        {
            "name": "totalResourcesToReindex",
            "valueDecimal": 2.0
        },
        {
            "name": "resourcesSuccessfullyReindexed",
            "valueDecimal": 2.0
        },
        {
            "name": "progress",
            "valueDecimal": 100.0
        },
        {
            "name": "status",
            "valueString": "Completed"
        },
        {
            "name": "maximumConcurrency",
            "valueDecimal": 3.0
        },
        {
            "name": "resources",
            "valueString": "{{LIST_OF_IMPACTED_RESOURCES}}"
        },
        {
            "name": "resourceReindexProgressByResource (CountReindexed of Count)",
            "valueString": "{{RESOURCE_TYPE:REINDEXED_COUNT OF TOTAL_COUNT}}"
        },
        {
            "name": "searchParams",
            "valueString": "{{LIST_OF_SEARCHPARAM_URLS}}h"
        },
        {
            "name": "queryDelayIntervalInMilliseconds",
            "valueDecimal": 500.0
        },
        {
            "name": "maximumNumberOfResourcesPerQuery",
            "valueDecimal": 100.0
        }
    ]
}

Yanıtta aşağıdaki bilgiler gösterilir.

  • totalResourcesToReindex: Bu işte yeniden dizine alınan kaynakların toplam sayısını içerir.

  • resourcesSuccessfullyReindexed: Bu işte zaten yeniden dizine alınmış olan kaynakların toplam sayısı.

  • progress: tamamlanan iş yüzde değerini yeniden dizine alma. x 100 olarak resourcesSuccessfullyReindexed/totalResourcesToReindex hesaplanır.

  • status: Yeniden dizinleme işinin kuyruğa alındığını, çalıştığını, tamamlanmasını, başarısız olduğunu veya iptal edileceğini belirtir.

  • resources: Reindex işinden etkilenen tüm kaynak türlerini listeler.

  • resourceReindexProgressByResource (CountReindexed of Count): Kaynak türü başına toplam sayının yeniden dizinlenmiş sayısını sağlar. Belirli bir kaynak türü için yeniden dizinlemenin kuyruğa alındığı durumlarda yalnızca Count sağlanır.

  • searchParams: Reindex işinden etkilenen arama parametrelerinin URL'sini listeler.

Yeniden dizin oluşturma işini silme

Bir reindex işini iptal etmeniz gerekiyorsa silme çağrısı kullanın ve reindex iş kimliğini belirtin:

Delete {{FHIR URL}}/_operations/reindex/{{reindexJobId}

Performans değerlendirmeleri

Ren geyiği işi oldukça yoğun performans gerektirir. Yeniden dizinleme işinin veritabanınızda nasıl çalıştığını yönetmenize yardımcı olmak için bazı azaltma denetimleri uyguladık.

Not

Bir reindex işinin günler boyunca çalışması büyük veri kümelerinde sık karşılaşılan bir durum değildir. 30.000.000 kaynağı olan bir veritabanı için veritabanının tamamını yeniden dizine alma işleminin 100.000 istek biriminde (RU) 4-5 gün sürdüğünü fark ettik.

Aşağıda, kullanılabilir parametrelerin, varsayılanların ve önerilen aralıkların ana hatlarını içeren bir tablo yer alır. bu parametreleri kullanarak işlemi hızlandırabilir (daha fazla işlem kullanabilir) veya işlemi yavaşlatabilirsiniz (daha az işlem kullanın). Örneğin, reindex işini düşük trafik zamanında çalıştırabilir ve daha hızlı bir şekilde yapmak için işleminizi artırabilirsiniz. Ayrıca ayarları kullanarak işlem kullanımının düşük olduğundan emin olabilir ve arka planda günler boyunca çalışmasını sağlayabilirsiniz.

Parametre Açıklama Varsayılan Kullanılabilir Aralık
QueryDelayIntervalInMilliseconds Yeniden dizin oluşturma işi sırasında her bir kaynak grubu arasındaki gecikme. Daha küçük bir sayı işi hızlandırırken, daha yüksek bir sayı da işi yavaşlatır. 500 MS (.5 saniye) 50-500000
MaximumResourcesPerQuery Yeniden dizine alınacak kaynak grubuna dahil edilen kaynak sayısı üst sınırı. 100 1-5000
MaximumConcurrency Bir kerede yapılan toplu iş sayısı. 1 1-10
targetDataStoreUsagePercentage Yeniden dizin oluşturma işi için veri deponuzun hangi yüzdesini kullanacağınızı belirtmenize olanak tanır. Örneğin , %50 belirtebilirsiniz ve bu da reindex işinin azure Cosmos DB'deki kullanılabilir RU'ların %50'sini kullanmasını sağlayabilir. Yok, yani %100'e kadar kullanılabilir. 0-100

Önceki parametrelerden herhangi birini kullanmak istiyorsanız, yeniden dizinleme işini başlattığınızda bunları Parametreler kaynağına geçirebilirsiniz.

{
  "resourceType": "Parameters",
  "parameter": [
    {
      "name": "maximumConcurrency",
      "valueInteger": "3"
    },
    {
      "name": "targetDataStoreUsagePercentage",
      "valueInteger": "20"
    },
    {
      "name": "queryDelayIntervalInMilliseconds",
      "valueInteger": "1000"
    },
    {
      "name": "maximumNumberOfResourcesPerQuery",
      "valueInteger": "1"
    }
  ]
}

Sonraki adımlar

Bu makalede, yeniden dizin işi başlatmayı öğrendiniz. Reindex işini gerektiren yeni arama parametrelerini tanımlamayı öğrenmek için bkz.

Not

FHIR®, HL7'nin tescilli ticari markasıdır ve HL7'nin izniyle kullanılır.