Menjalankan pekerjaan reindex di Azure API untuk FHIR

Ada skenario di mana Anda mungkin memiliki parameter pencarian atau pengurutan di Azure API untuk FHIR yang belum diindeks. Skenario ini relevan ketika Anda menentukan parameter pencarian Anda sendiri. Hingga parameter pencarian diindeks, parameter tersebut tidak dapat digunakan dalam pencarian. Artikel ini membahas cara menjalankan pekerjaan pengindeksan ulang untuk mengindeks parameter pencarian yang belum diindeks dalam database layanan FHIR Anda.

Peringatan

Penting bahwa Anda membaca seluruh artikel ini sebelum memulai. Pekerjaan reindex bisa sangat intensif performa. Artikel ini mencakup opsi cara membatasi dan mengontrol pekerjaan reindex.

Cara menjalankan pekerjaan reindex

Pekerjaan indeks ulang dapat dijalankan terhadap seluruh database layanan FHIR dan terhadap parameter pencarian kustom tertentu.

Menjalankan pekerjaan indeks ulang pada seluruh database layanan FHIR

Untuk menjalankan pekerjaan reindex, gunakan panggilan berikut POST dengan sumber daya berformat Parameters JSON di isi permintaan:

POST {{FHIR URL}}/$reindex 

{ 

“resourceType”: “Parameters”,  

“parameter”: [] 

}

"parameter": [] Biarkan bidang kosong (seperti yang ditunjukkan) jika Anda tidak perlu mengubah sumber daya yang dialokasikan ke pekerjaan indeks ulang.

Jika permintaan berhasil, Anda menerima kode status 201 Dibuat selain Parameters sumber daya dalam respons.

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
    }
  ]
}

Menjalankan pekerjaan pengindeksian ulang terhadap parameter pencarian kustom tertentu

Untuk menjalankan pekerjaan indeks ulang terhadap parameter pencarian kustom tertentu, gunakan panggilan berikut POST dengan sumber daya berformat Parameters JSON di isi permintaan:

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.}"
    }
] 

}

Catatan

Untuk memeriksa status pekerjaan reindex atau membatalkan pekerjaan, Anda memerlukan ID indeks ulang. Ini adalah yang "id" dibawa dalam nilai yang "parameter" dikembalikan dalam respons. Dalam contoh di atas, ID untuk pekerjaan indeks ulang adalah 560c7c61-2c70-4c54-b86d-c53a9d29495e.

Cara memeriksa status pekerjaan reindex

Setelah memulai pekerjaan reindex, Anda dapat memeriksa status pekerjaan menggunakan panggilan berikut:

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

Contoh respons:

{
    "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
        }
    ]
}

Informasi berikut diperlihatkan dalam respons di atas:

  • totalResourcesToReindex: Mencakup jumlah total sumber daya yang sedang diindeks ulang dalam pekerjaan ini.

  • resourcesSuccessfullyReindexed: Jumlah total sumber daya yang telah diindeks ulang dalam pekerjaan ini.

  • progress: Mengindeks ulang persentase pekerjaan selesai. resourcesSuccessfullyReindexed/totalResourcesToReindex Sama dengan x 100.

  • status: Menyatakan jika pekerjaan indeks ulang diantrekan, berjalan, selesai, gagal, atau dibatalkan.

  • resources: Mencantumkan semua jenis sumber daya yang terpengaruh oleh pekerjaan reindex.

  • 'resourceReindexProgressByResource (CountReindexed of Count)': Menyediakan jumlah pengindeksan ulang dari jumlah total, per jenis sumber daya. Dalam kasus di mana pengindeksan ulang untuk jenis sumber daya tertentu diantrekan, hanya Hitungan yang disediakan.

  • 'searchParams': Mencantumkan url parameter pencarian yang terpengaruh oleh pekerjaan indeks ulang.

Menghapus pekerjaan indeks ulang

Jika Anda perlu membatalkan pekerjaan reindex, gunakan panggilan hapus dan tentukan ID pekerjaan indeks ulang:

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

Pertimbangan performa

Pekerjaan reindex bisa sangat intensif performa. Kami telah menerapkan beberapa kontrol pembatasan untuk membantu Anda mengelola bagaimana pekerjaan pengindeksan ulang akan berjalan pada database Anda.

Catatan

Tidak jarang pada himpunan data besar agar pekerjaan reindex berjalan selama ber hari. Untuk database dengan 30.000.000 juta sumber daya, kami melihat bahwa dibutuhkan 4-5 hari pada RU 100K untuk mengindeks kembali seluruh database.

Di bawah ini adalah tabel yang menguraikan parameter, default, dan rentang yang direkomendasikan yang tersedia. Anda dapat menggunakan parameter ini untuk mempercepat proses (menggunakan lebih banyak komputasi) atau memperlambat proses (gunakan lebih sedikit komputasi). Misalnya, Anda dapat menjalankan pekerjaan reindex pada waktu lalu lintas yang rendah dan meningkatkan komputasi Anda untuk menyelesaikannya lebih cepat. Sebagai gantinya, Anda dapat menggunakan pengaturan untuk memastikan penggunaan komputasi yang rendah dan menjalankannya selama bertahun-hari di latar belakang.

Parameter Deskripsi Default Rentang yang Tersedia
QueryDelayIntervalInMilliseconds Penundaan antara setiap batch sumber daya yang dimulai selama pekerjaan indeks ulang. Angka yang lebih kecil akan mempercepat pekerjaan sementara angka yang lebih tinggi akan memperlambatnya. 500 MS (,5 detik) 50-500000
MaximumResourcesPerQuery Jumlah maksimum sumber daya yang disertakan dalam batch sumber daya yang akan diindeks ulang. 100 1-5000
MaximumConcurrency Jumlah batch yang dilakukan pada satu waktu. 1 1-10
targetDataStoreUsagePercentage Memungkinkan Anda menentukan persentase penyimpanan data yang akan digunakan untuk pekerjaan indeks ulang. Misalnya, Anda dapat menentukan 50% dan itu akan memastikan bahwa paling banyak pekerjaan indeks ulang akan menggunakan 50% RU yang tersedia di Azure Cosmos DB. Tidak ada, yang berarti bahwa hingga 100% dapat digunakan. 0-100

Jika Anda ingin menggunakan salah satu parameter di atas, Anda dapat meneruskannya ke sumber daya Parameter saat memulai pekerjaan indeks ulang.

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

Langkah berikutnya

Dalam artikel ini, Anda telah mempelajari cara memulai pekerjaan reindex. Untuk mempelajari cara menentukan parameter pencarian baru yang memerlukan pekerjaan reindex, lihat

FHIR® adalah merek dagang terdaftar HL7 dan digunakan dengan izin HL7.