Melakukan streaming dan menyinkronkan resource FHIR dengan BigQuery


Tutorial ini menjelaskan skenario yang memungkinkan Anda menggunakan streaming BigQuery untuk menjaga agar toko FHIR tetap sinkron dengan set data BigQuery hampir secara real-time.

Tujuan

Tutorial ini menunjukkan langkah-langkah berikut:

  1. Mengonfigurasi izin BigQuery.
  2. Membuat penyimpanan FHIR dan menambahkan resource Pasien.
  3. Mengonfigurasi streaming BigQuery di penyimpanan FHIR.
  4. Verifikasi konfigurasi streaming ke BigQuery.
  5. Mengekspor resource FHIR yang ada ke BigQuery.
  6. Streaming resource dari beberapa penyimpanan FHIR ke set data BigQuery yang sama.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. Enable the Cloud Healthcare API.

    Enable the API

  7. Menginstal Google Cloud CLI.
  8. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init

Langkah 1: Konfigurasi izin BigQuery

Untuk melakukan streaming perubahan resource FHIR ke BigQuery, Anda harus memberikan izin tambahan ke akun layanan Cloud Healthcare Service Agent. Untuk mengetahui informasi selengkapnya, lihat izin BigQuery penyimpanan FHIR.

Langkah 2: Mengonfigurasi dan memverifikasi streaming BigQuery

Untuk mengaktifkan streaming ke BigQuery, ikuti petunjuk berikut:

Membuat penyimpanan FHIR dan menambahkan referensi Pasien

Untuk membuat penyimpanan FHIR dan menambahkan dua resource Pasien, ikuti langkah-langkah berikut:

  1. Buat penyimpanan FHIR:

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID project Google Cloud Anda
    • LOCATION: lokasi set data
    • DATASET_ID: set data induk penyimpanan FHIR
    • FHIR_STORE_ID: ID untuk penyimpanan FHIR. ID penyimpanan FHIR harus memiliki hal berikut:
      • ID unik dalam set datanya
      • String Unicode yang terdiri dari 1-256 karakter yang terdiri dari hal berikut:
        • Numbers
        • Surat
        • Tanda garis bawah
        • Tanda hubung garis
        • Menstruasi
    • FHIR_STORE_VERSION: versi FHIR dari penyimpanan FHIR. Opsi yang tersedia adalah DSTU2, STU3, atau R4.

    Meminta isi JSON:

    {
      "version": "FHIR_STORE_VERSION"
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    cat > request.json << 'EOF'
    {
      "version": "FHIR_STORE_VERSION"
    }
    EOF

    Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    @'
    {
      "version": "FHIR_STORE_VERSION"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=FHIR_STORE_ID" | Select-Object -Expand Content

    APIs Explorer

    Salin isi permintaan dan buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Tempelkan isi permintaan di alat ini, lengkapi kolom lainnya yang wajib diisi, lalu klik Jalankan.

    Anda akan melihat respons JSON seperti berikut:

  2. Buat resource Pasien pertama di penyimpanan FHIR:

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID project Google Cloud Anda
    • LOCATION: lokasi set data
    • DATASET_ID: set data induk penyimpanan FHIR
    • FHIR_STORE_ID: ID toko FHIR

    Meminta isi JSON:

    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    EOF

    Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/fhir+json" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/fhir+json" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

    Anda akan melihat respons JSON seperti berikut:

  3. Buat resource Pasien kedua di penyimpanan FHIR:

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: project ID Google Cloud Anda
    • LOCATION: lokasi set data induk
    • DATASET_ID: set data induk penyimpanan FHIR
    • FHIR_STORE_ID: ID toko FHIR

    Meminta isi JSON:

    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    EOF

    Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/fhir+json" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Zhang",
          "given": [
            "Michael"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1980-01-01",
      "resourceType": "Patient"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/fhir+json" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

    Anda akan melihat respons JSON seperti berikut:

  4. Cari referensi Pasien di penyimpanan FHIR dan pastikan toko tersebut berisi dua referensi Pasien:

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: project ID Google Cloud Anda
    • LOCATION: lokasi set data induk
    • DATASET_ID: set data induk penyimpanan FHIR
    • FHIR_STORE_ID: ID toko FHIR

    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/fhirStores/FHIR_STORE_ID/fhir/Patient"

    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/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

    Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

Mengonfigurasi streaming BigQuery di penyimpanan FHIR

Mengupdate penyimpanan FHIR untuk mengonfigurasi streaming BigQuery. Setelah mengonfigurasi streaming, Cloud Healthcare API melakukan streaming untuk perubahan resource apa pun ke set data BigQuery.

  1. Perbarui penyimpanan FHIR Anda yang sudah ada untuk menambahkan lokasi set data BigQuery:

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: project ID Google Cloud Anda
    • LOCATION: lokasi set data induk
    • DATASET_ID: set data induk penyimpanan FHIR
    • FHIR_STORE_ID: ID toko FHIR Anda
    • BIGQUERY_PROJECT_ID: project Google Cloud yang berisi set data BigQuery untuk melakukan streaming perubahan resource FHIR
    • BIGQUERY_DATASET_ID: set data BigQuery tempat Anda melakukan streaming perubahan resource FHIR

    Meminta isi JSON:

    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    cat > request.json << 'EOF'
    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    EOF

    Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=streamConfigs"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    @'
    {
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS_V2"
            }
          }
        }
      ]
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=streamConfigs" | Select-Object -Expand Content

    APIs Explorer

    Salin isi permintaan dan buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Tempelkan isi permintaan di alat ini, lengkapi kolom lainnya yang wajib diisi, lalu klik Jalankan.

    Anda akan melihat respons JSON seperti berikut:

Memverifikasi konfigurasi streaming ke BigQuery

Pastikan streaming dikonfigurasi dengan benar dengan menyelesaikan langkah-langkah berikut:

  1. Buat resource Pasien ketiga di penyimpanan FHIR:

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: project ID Google Cloud Anda
    • LOCATION: lokasi set data induk
    • DATASET_ID: set data induk penyimpanan FHIR
    • FHIR_STORE_ID: ID toko FHIR

    Meminta isi JSON:

    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    EOF

    Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/fhir+json" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/fhir+json" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

    Anda akan melihat respons JSON seperti berikut:

  2. Buat kueri tabel BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient dengan menjalankan bq query. BigQuery mengatur tabel berdasarkan jenis resource FHIR. Resource Pasien ketiga yang Anda buat ada di tabel Patient.

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
    

    Kueri menampilkan hasil berikut. Hasilnya menunjukkan bahwa ada satu data resource Pasien di tabel BigQuery karena Anda menambahkan resource Pasien setelah mengonfigurasi streaming di penyimpanan FHIR.

    +-----+
    | f0_ |
    +-----+
    |   1 |
    +-----+
    

Langkah 3: Ekspor resource FHIR yang ada ke BigQuery

Jika sudah memiliki penyimpanan FHIR yang berisi data yang ingin disinkronkan dengan set data BigQuery, Anda harus menyelesaikan langkah-langkah berikut untuk memastikan bahwa data yang ada ada di BigQuery:

  1. Mengonfigurasi streaming ke BigQuery.
  2. Ekspor data yang ada ke set data BigQuery.

Untuk mengekspor dua resource Pasien yang ada di penyimpanan FHIR sebelum Anda mengonfigurasi streaming ke set data BigQuery, selesaikan langkah-langkah berikut:

  1. Untuk mengekspor resource di penyimpanan FHIR ke BigQuery, jalankan perintah gcloud healthcare fhir-stores export bq. Perintah tersebut menggunakan flag --write-disposition=write-append, yang menambahkan data ke tabel BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient yang ada.

    gcloud healthcare fhir-stores export bq FHIR_STORE_ID \
       --dataset=DATASET_ID \
       --location=LOCATION \
       --bq-dataset=bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET \
       --schema-type=analytics_v2 \
       --write-disposition=write-append
    
  2. Buat kueri tabel BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient untuk memverifikasi jumlah resource Pasien dalam set data BigQuery:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
    

    Kueri tersebut menampilkan hasil berikut, yang menunjukkan bahwa ada 4 data resource Pasien di tabel BigQuery:

    +-----+
    | f0_ |
    +-----+
    |   4 |
    +-----+
    

    Jumlah resource Pasien sebenarnya di tabel BigQuery adalah 3, tetapi kueri menampilkan 4. Inkonsistensi dapat terjadi ketika resource berisi duplikat dari operasi yang berbeda. Dalam hal ini, resource Pasien pertama ditambahkan ke tabel BigQuery sebanyak dua kali:

    • Saat pembuatan resource Pasien di-streaming
    • Saat resource di penyimpanan FHIR diekspor ke BigQuery

    Tabel BigQuery juga berisi histori mutasi resource Pasien pertama. Misalnya, jika Anda menghapus resource Pasien menggunakan fhir.delete, tabel BigQuery akan memiliki kolom meta.tag.code dengan nilai DELETE.

  3. Untuk mendapatkan snapshot terbaru data di penyimpanan FHIR, buat kueri tampilan. Cloud Healthcare API membuat tampilan dengan hanya melihat versi terbaru dari setiap resource. Membuat kueri tampilan adalah cara yang paling akurat untuk menjaga penyimpanan FHIR dan tabel BigQuery terkaitnya tetap sinkron.

    Untuk membuat kueri tampilan, jalankan perintah berikut:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'
    

    Kueri tersebut menampilkan hasil berikut, yang menunjukkan dengan benar bahwa ada 3 Resource pasien di tabel BigQuery:

    +-----+
    | f0_ |
    +-----+
    |   3 |
    +-----+
    

Langkah 4: Streaming resource dari beberapa penyimpanan FHIR ke set data BigQuery yang sama

Dalam beberapa kasus, Anda mungkin ingin melakukan streaming resource FHIR dari beberapa penyimpanan FHIR ke set data BigQuery yang sama untuk melakukan analisis pada resource FHIR gabungan dari penyimpanan FHIR.

Pada langkah-langkah berikut, Anda akan membuat penyimpanan FHIR kedua di set data Cloud Healthcare API yang sama dengan penyimpanan FHIR pertama, tetapi Anda dapat menggunakan penyimpanan FHIR dari set data yang berbeda saat menggabungkan resource FHIR.

  1. Buat penyimpanan FHIR kedua dengan streaming BigQuery yang diaktifkan dan gunakan set data BigQuery yang sama dengan yang Anda gunakan dalam Mengonfigurasi streaming BigQuery di penyimpanan FHIR.

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: project ID Google Cloud Anda
    • LOCATION: lokasi set data induk
    • DATASET_ID: set data induk penyimpanan FHIR
    • SECOND_FHIR_STORE_ID: ID untuk penyimpanan FHIR kedua. ID penyimpanan FHIR harus unik dalam set data. ID penyimpanan FHIR dapat berupa string Unicode apa pun dari 1 hingga 256 karakter yang terdiri dari angka, huruf, garis bawah, tanda hubung, dan titik.
    • FHIR_STORE_VERSION: versi penyimpanan FHIR: DSTU2, STU3, atau R4
    • BIGQUERY_PROJECT_ID: project Google Cloud yang berisi set data BigQuery untuk melakukan streaming perubahan resource FHIR
    • BIGQUERY_DATASET_ID: set data BigQuery tempat Anda melakukan streaming perubahan resource FHIR

    Meminta isi JSON:

    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    cat > request.json << 'EOF'
    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    EOF

    Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=SECOND_FHIR_STORE_ID"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    @'
    {
      "version": "FHIR_STORE_VERSION"
      "streamConfigs": [
        {
          "bigqueryDestination": {
            "datasetUri": "bq://BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID",
            "schemaConfig": {
              "schemaType": "ANALYTICS"
            }
          }
        }
      ]
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores?fhirStoreId=SECOND_FHIR_STORE_ID" | Select-Object -Expand Content

    APIs Explorer

    Salin isi permintaan dan buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Tempelkan isi permintaan di alat ini, lengkapi kolom lainnya yang wajib diisi, lalu klik Jalankan.

    Anda akan melihat respons JSON seperti berikut:

  2. Buat resource Pasien di penyimpanan FHIR kedua:

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: project ID Google Cloud Anda
    • LOCATION: lokasi set data induk
    • DATASET_ID: set data induk penyimpanan FHIR
    • SECOND_FHIR_STORE_ID: ID toko FHIR kedua

    Meminta isi JSON:

    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    cat > request.json << 'EOF'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    EOF

    Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/fhir+json" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    @'
    {
      "name": [
        {
          "use": "official",
          "family": "Lee",
          "given": [
            "Alex"
          ]
        }
      ],
      "gender": "male",
      "birthDate": "1990-01-01",
      "resourceType": "Patient"
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/fhir+json" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/SECOND_FHIR_STORE_ID/fhir/Patient" | Select-Object -Expand Content

    Anda akan melihat respons JSON seperti berikut:

  3. Buat kueri tabel BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient untuk memverifikasi jumlah resource Pasien di tabel BigQuery:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.Patient`'
    

    Saat melakukan streaming data tentang resource Pasien baru, BigQuery menggunakan tabel Patient yang sudah ada dalam set data BigQuery. Kueri tersebut menampilkan hasil berikut, yang menunjukkan bahwa ada 5 data resource Pasien di tabel BigQuery. Lihat Mengekspor resource FHIR yang ada ke BigQuery untuk mendapatkan penjelasan mengapa tabel berisi 5 resource, bukan 4.

    +-----+
    | f0_ |
    +-----+
    |   5 |
    +-----+
    
  4. Jalankan perintah berikut untuk mengkueri tampilan:

    bq query \
       --project_id=BIGQUERY_PROJECT_ID \
       --use_legacy_sql=false \
       'SELECT COUNT(*) FROM `BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID.PatientView`'
    

    Kueri tersebut menampilkan hasil berikut, yang menunjukkan bahwa ada 4 resource Pasien dalam gabungan penyimpanan FHIR pertama dan kedua serta di tabel BigQuery:

    +-----+
    | f0_ |
    +-----+
    |   4 |
    +-----+
    

Pembersihan

Jika Anda membuat project baru untuk tutorial ini, ikuti langkah-langkah di bagian Menghapus project. Untuk menghapus resource Cloud Healthcare API dan BigQuery saja, lakukan langkah-langkah di bagian Menghapus set data Cloud Healthcare API dan Menghapus set data BigQuery.

Menghapus project

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus set data Cloud Healthcare API

Jika tidak perlu lagi membuat set data Cloud Healthcare API dalam tutorial ini, Anda dapat menghapusnya. Menghapus set data akan menghapus set data tersebut dan semua penyimpanan FHIR yang ada di dalamnya secara permanen.

  1. Untuk menghapus set data, gunakan perintah gcloud healthcare datasets delete:

    gcloud healthcare datasets delete DATASET_ID \
    --location=LOCATION \
    --project=PROJECT_ID
    

    Ganti kode berikut:

    • DATASET_ID: set data Cloud Healthcare API
    • LOCATION: lokasi set data
    • PROJECT_ID: project ID Google Cloud Anda
  2. Untuk mengonfirmasi, ketik Y.

Output-nya adalah sebagai berikut:

Deleted dataset [DATASET_ID].

Menghapus set data BigQuery

Jika tidak perlu lagi membuat set data BigQuery dalam tutorial ini, Anda dapat menghapusnya. Menghapus set data akan menghapus set data tersebut dan semua tabel yang ada di dalamnya secara permanen.

  1. Hapus BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID dengan menjalankan perintah bq rm:

    bq rm --recursive=true BIGQUERY_PROJECT_ID.BIGQUERY_DATASET_ID
    

    Flag --recursive menghapus semua tabel dalam set data, termasuk tabel Patient.

  2. Untuk mengonfirmasi, ketik Y.

Langkah selanjutnya