Halaman ini menjelaskan cara mengelola siklus proses operasi jangka panjang (LRO) Cloud Healthcare API.
Jika metode API mungkin memerlukan waktu lama untuk diselesaikan, metode tersebut dapat menampilkan
Operation
ke klien. Klien dapat menggunakan antarmuka Operation
untuk mengambil
status metode API secara asinkron dengan melakukan polling operasi. LRO di Cloud Healthcare API mematuhi pola desain LRO Google Cloud.
Cloud Healthcare API membuat LRO untuk beberapa
metode, seperti projects.locations.datasets.fhirStores.import
.
Saat projects.locations.datasets.fhirStores.import
dipanggil, Cloud Healthcare API akan membuat LRO untuk melacak status impor. LRO
memiliki ID unik yang dapat Anda gunakan untuk melihat status LRO.
LRO dikelola di tingkat set data. Jika memanggil
metode yang menampilkan LRO, seperti projects.locations.datasets.fhirStores.import
,
Anda dapat melihat status LRO dengan mengirimkan permintaan yang berisi
ID LRO ke set data induk
penyimpanan FHIR tempat impor terjadi.
Selain REST API, sumber berikut menghasilkan operasi yang berjalan lama saat Anda memanggil metode yang tercantum dalam Metode yang menampilkan LRO:
- Google Cloud CLI
- Halaman Cloud Healthcare API di konsol Google Cloud
Anda dapat mengelola LRO Cloud Healthcare API menggunakan konsol Google Cloud, Google Cloud CLI, atau REST API.
Data LRO disimpan selama sekitar 30 hari setelah LRO selesai, yang berarti Anda tidak dapat melihat atau mencantumkan LRO setelah titik tersebut.
Metode yang menampilkan LRO
Metode berikut menampilkan LRO.
Metode pengelolaan izin:
Metode set data:
Metode DICOM:
projects.locations.datasets.dicomStores.deidentify
projects.locations.datasets.dicomStores.export
projects.locations.datasets.dicomStores.import
projects.locations.datasets.dicomStores.studies.delete
projects.locations.datasets.dicomStores.studies.series.delete
Metode FHIR:
projects.locations.datasets.fhirStores.deidentify
projects.locations.datasets.fhirStores.export
projects.locations.datasets.fhirStores.import
Metode HL7v2:
Mendapatkan detail tentang LRO
Contoh berikut menunjukkan cara mendapatkan detail tentang LRO.
Versi Cloud Healthcare API yang ditampilkan dalam respons saat mendapatkan detail tentang LRO sama dengan versi API metode yang memulai LRO.
Konsol
Setelah memanggil metode menggunakan gcloud CLI atau API yang menampilkan LRO, Anda dapat melihat detail tentang LRO di konsol Google Cloud.
Di konsol Google Cloud, buka halaman Datasets.
Klik nama set data yang berisi LRO yang ingin Anda lihat.
Klik Operations.
Untuk melihat log error operasi di Cloud Logging, klik Actions, lalu klik View details in Cloud Logging. Untuk mengetahui informasi selengkapnya, lihat Melihat log error di Cloud Logging.
Untuk melihat detail selengkapnya tentang operasi, klik ID operasi yang sedang berjalan. Halaman Long-running Operation Details akan ditampilkan. Halaman ini menampilkan informasi berikut:
- Progres LRO
- Detail LRO, seperti ID operasi dan metode yang memanggil LRO
- Sebagian entri log
gcloud
Misalkan Anda menerima respons berikut setelah memanggil gcloud healthcare dicom-stores deidentify
:
Request issued for: [DATASET_ID] Waiting for operation [OPERATION_ID] to complete...
Respons menunjukkan bahwa Cloud Healthcare API membuat LRO dengan ID operasi. Anda juga dapat mengambil ID operasi dengan mencantumkan operasi database yang berjalan lama. Perintah akan terus berjalan hingga selesai, lalu akan menampilkan output berikut:
Request issued for: [DATASET_ID] Waiting for operation [OPERATION_ID] to complete...done name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID
Untuk mendapatkan detail tentang LRO, jalankan perintah gcloud healthcare operations describe
.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- PROJECT_ID: ID project Google Cloud Anda
- DATASET_ID: ID set data
- LOCATION: lokasi set data
- OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=PROJECT_ID \ --dataset=DATASET_ID \ --location=LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=PROJECT_ID ` --dataset=DATASET_ID ` --location=LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=PROJECT_ID ^ --dataset=DATASET_ID ^ --location=LOCATION
Anda akan melihat respons seperti berikut:
Respons
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.deidentify.DeidentifyService.DeidentifyDicomStore' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary'
REST
Misalkan Anda menerima respons berikut setelah memanggil
projects.locations.datasets.dicomStores.deidentify
:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
Nilai name
dalam respons menunjukkan bahwa Cloud Healthcare API membuat LRO bernama projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
. Anda juga dapat mengambil nama LRO dengan mencantumkan LRO.
Untuk mendapatkan status LRO, gunakan metode projects.locations.datasets.operations.get
. Untuk melakukan polling LRO, panggil metode projects.locations.datasets.operations.get
berulang kali hingga operasi selesai. Gunakan backoff di antara setiap permintaan polling, seperti
10 detik.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: ID project Google Cloud Anda
- DATASET_ID: ID set data
- LOCATION: lokasi set data
- OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
APIs Explorer
Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
"done": true
, operasi yang berjalan lama telah selesai.
Mencantumkan LRO
Contoh berikut menunjukkan cara mencantumkan LRO dalam set data.
Konsol
Untuk melihat daftar semua LRO dalam set data di konsol Google Cloud, selesaikan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Datasets.
Klik nama set data yang berisi LRO yang ingin Anda lihat.
Klik Operations.
Daftar LRO dalam set data dan statusnya akan ditampilkan. Untuk melihat log error di Cloud Logging, klik ikon informasi selengkapnya di kolom terakhir, lalu klik Lihat detail di Cloud Logging. Untuk mengetahui informasi selengkapnya, lihat artikel Melihat log error di Cloud Logging.
gcloud
Untuk mencantumkan LRO dalam set data, jalankan perintah gcloud healthcare operations list
.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- DATASET_ID: ID set data
- LOCATION: lokasi set data
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud healthcare operations list --dataset=DATASET_ID --location=LOCATION
Windows (PowerShell)
gcloud healthcare operations list --dataset=DATASET_ID --location=LOCATION
Windows (cmd.exe)
gcloud healthcare operations list --dataset=DATASET_ID --location=LOCATION
Anda akan melihat respons seperti berikut:
Respons
ID LOCATION DONE OPERATION_ID LOCATION {TRUE|FALSE} ...
REST
Untuk mencantumkan LRO dalam set data, gunakan metode
projects.locations.datasets.operations.get
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: ID project Google Cloud Anda
- DATASET_ID: ID set data
- LOCATION: lokasi set data
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations" | Select-Object -Expand Content
APIs Explorer
Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
Anda akan melihat respons JSON seperti berikut:
Membatalkan LRO
Contoh berikut menunjukkan cara membatalkan LRO dalam set data.
Konsol
Untuk membatalkan LRO di konsol Google Cloud, selesaikan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Datasets.
Klik nama set data yang berisi LRO yang ingin Anda lihat.
Klik Operations.
Di baris yang sama dengan LRO yang ingin Anda batalkan, buka daftar Tindakan, lalu klik Hentikan Operasi.
REST
Untuk membatalkan LRO, gunakan metode
projects.locations.datasets.operations.cancel
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: ID project Google Cloud Anda
- DATASET_ID: ID set data
- LOCATION: lokasi set data
- OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID:cancel"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID:cancel" | Select-Object -Expand Content
APIs Explorer
Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
Anda akan melihat respons JSON seperti berikut:
Untuk melihat status permintaan pembatalan, gunakan
metode
projects.locations.datasets.operations.get
.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: ID project Google Cloud Anda
- DATASET_ID: ID set data
- LOCATION: lokasi set data
- OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
APIs Explorer
Buka halaman referensi metode. Panel API Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
Anda akan melihat respons JSON seperti berikut:
Membatalkan beberapa LRO
Untuk membatalkan beberapa LRO, selesaikan langkah-langkah berikut:
- Panggil metode
operations.list
untuk mendapatkan nama operasi dalam set data. - Panggil metode
operations.cancel
pada setiap operasi.
Google menyediakan skrip Python yang dapat Anda gunakan untuk membatalkan semua operasi untuk set data tertentu.
Memecahkan masalah LRO
Jika LRO gagal, responsnya akan menyertakan kode error Google Cloud kanonis. Tabel berikut memberikan penjelasan tentang penyebab setiap kode dan rekomendasi untuk cara menangani kode tersebut. Untuk banyak error, tindakan yang direkomendasikan adalah mencoba permintaan lagi menggunakan backoff eksponensial. Untuk informasi tentang cara menerapkan backoff eksponensial di Cloud Healthcare API, lihat Mencoba kembali permintaan yang gagal.
Kode | Enum | Deskripsi | Tindakan yang disarankan |
---|---|---|---|
1 | CANCELLED |
Operasi dibatalkan, biasanya oleh pemanggil. | Jalankan kembali operasi jika diinginkan. |
2 | UNKNOWN |
Error ini mungkin ditampilkan jika nilai Status yang diterima dari ruang alamat lain berada di ruang error yang tidak diketahui di ruang alamat ini. Jika error API tidak menampilkan informasi yang memadai, error tersebut dapat dikonversi menjadi error ini. |
Coba lagi dengan backoff eksponensial. |
3 | INVALID_ARGUMENT |
Klien menetapkan argumen yang tidak valid. Error ini berbeda dengan FAILED_PRECONDITION . INVALID_ARGUMENT menunjukkan argumen yang bermasalah, terlepas dari statusnya di dalam sistem, seperti nama file yang salah format. |
Jangan mencoba lagi tanpa memperbaiki masalah. |
4 | DEADLINE_EXCEEDED |
Batas waktu berakhir sebelum operasi selesai. Untuk operasi yang mengubah status sistem, error ini mungkin ditampilkan, meskipun operasi tersebut telah selesai. Sebagai contoh, respons berhasil dari suatu server dapat tertunda selama waktu yang cukup lama hingga tenggat waktu berakhir. | Coba lagi dengan backoff eksponensial. |
5 | NOT_FOUND |
Beberapa entity yang diminta, seperti resource FHIR, tidak ditemukan. | Jangan mencoba lagi tanpa memperbaiki masalah. |
6 | ALREADY_EXISTS |
Entitas yang coba dibuat oleh klien, seperti instance DICOM, sudah ada. | Jangan mencoba lagi tanpa memperbaiki masalah. |
7 | PERMISSION_DENIED |
Pemanggil tidak memiliki izin untuk menjalankan operasi yang ditentukan. Kode error ini tidak menyatakan bahwa suatu permintaan valid atau entitas yang diminta ada atau memenuhi prakondisi lainnya. | Jangan mencoba lagi tanpa memperbaiki masalah. |
8 | RESOURCE_EXHAUSTED |
Beberapa resource telah habis, seperti kuota per project. Lihat Praktik terbaik untuk pengelolaan kuota guna mengetahui tindakan yang direkomendasikan. | Coba lagi dengan backoff eksponensial. Kuota mungkin tersedia dari waktu ke waktu. |
9 | FAILED_PRECONDITION |
Operasi tersebut ditolak karena sistem tidak dalam keadaan dibutuhkan untuk menjalankan operasi. Misalnya, direktori yang akan dihapus tidak kosong, atau operasi rmdir diterapkan pada non-direktori. |
Jangan mencoba lagi tanpa memperbaiki masalah. |
10 | ABORTED |
Operasi dibatalkan, umumnya karena masalah konkurensi seperti kegagalan pemeriksaan pengurut atau pembatalan transaksi. | Coba lagi dengan backoff eksponensial. |
11 | OUT_OF_RANGE |
Upaya operasi dilakukan melampaui rentang yang valid, seperti mencari atau membaca melampaui akhir file. Tidak seperti INVALID_ARGUMENT , error ini menunjukkan masalah yang dapat diperbaiki jika status sistem berubah. |
Jangan mencoba lagi tanpa memperbaiki masalah. |
12 | UNIMPLEMENTED |
Operasi tidak diterapkan atau tidak didukung/diaktifkan di Cloud Healthcare API. | Jangan coba lagi. |
13 | INTERNAL |
Error internal. Pesan ini menunjukkan bahwa terjadi error tak terduga dalam pemrosesan pada sistem pokok. | Coba lagi dengan backoff eksponensial. |
14 | UNAVAILABLE |
Cloud Healthcare API saat ini tidak tersedia. Kemungkinan besar ini hanya kondisi sementara, yang dapat diperbaiki dengan mencoba kembali menggunakan backoff. Perlu diketahui bahwa mencoba kembali operasi non-idempoten tidak selalu aman. | Coba lagi dengan backoff eksponensial. |
15 | DATA_LOSS |
Data hilang atau rusak yang tidak dapat dipulihkan. | Hubungi administrator sistem Anda. Administrator sistem mungkin ingin menghubungi perwakilan dukungan jika terjadi kehilangan atau kerusakan data. |
16 | UNAUTHENTICATED |
Permintaan tidak memiliki kredensial autentikasi operasi yang valid. | Jangan mencoba lagi tanpa memperbaiki masalah. |