1. Pengantar
Terakhir diperbarui: 22-9-2022
Codelab ini menerapkan pola untuk mengakses dan menganalisis data layanan kesehatan yang digabungkan di BigQuery menggunakan BigQueryUI dan AI Platform Notebooks. Studi ini menggambarkan eksplorasi data dari set data layanan kesehatan berskala besar menggunakan alat yang sudah dikenal seperti Pandas, Matplotlib, dll. dalam AI Platform Notebooks yang sesuai dengan HIPPA. "Trik" adalah melakukan bagian pertama dari agregasi di BigQuery, mendapatkan kembali {i>dataset<i} Pandas, lalu bekerja dengan {i>dataset<i} Pandas yang lebih kecil secara lokal. AI Platform Notebooks memberikan pengalaman Jupyter yang terkelola sehingga Anda tidak perlu menjalankan server notebook sendiri. AI Platform Notebooks terintegrasi secara baik dengan layanan GCP lainnya seperti Big Query dan Cloud Storage, yang mempercepat dan mempermudah Anda untuk memulai perjalanan Analisis Data dan ML di Google Cloud Platform.
Dalam codelab ini, Anda akan mempelajari cara:
- Kembangkan dan uji kueri SQL menggunakan UI BigQuery.
- Buat dan luncurkan instance AI Platform Notebooks di GCP.
- Menjalankan kueri SQL dari notebook dan menyimpan hasil kueri di Pandas DataFrame.
- Buat diagram dan grafik menggunakan Matplotlib.
- Commit dan kirim notebook ke Cloud Source Repository di GCP.
Apa yang Anda perlukan untuk menjalankan codelab ini?
- Anda memerlukan akses ke Project GCP.
- Anda perlu diberi peran Pemilik untuk Project GCP.
- Anda memerlukan set data layanan kesehatan di BigQuery.
Jika Anda tidak memiliki Project GCP, ikuti langkah-langkah berikut untuk membuat Project GCP baru.
2. Penyiapan project
Untuk codelab ini, kita akan menggunakan set data yang ada di BigQuery (hcls-testing-data.fhir_20k_patients_analytics). Set data ini telah diisi otomatis dengan data layanan kesehatan sintetis.
Mendapatkan akses ke set data sintetis
- Dari alamat email yang Anda gunakan untuk login ke Konsol Cloud, kirim email ke hcls-solutions-external+subscribe@google.com untuk meminta izin bergabung.
- Anda akan menerima email berisi petunjuk tentang cara mengonfirmasi tindakan tersebut.
- Gunakan opsi untuk membalas email agar bergabung dengan grup. JANGAN klik tombol .
- Setelah menerima email konfirmasi, Anda dapat melanjutkan ke langkah berikutnya di codelab.
Menyematkan project
- Di GCP Console, pilih project Anda, lalu buka BigQuery.
- Klik dropdown +ADD DATA, lalu pilih "Pin a project" > "Masukkan nama project" kami.
- Masukkan nama project, "hcls-testing-data", lalu klik PIN. Set data pengujian BigQuery "fhir_20k_patients_analytics" tersedia untuk digunakan.
3. Mengembangkan kueri menggunakan UI BigQuery
Setelan UI BigQuery
- Masuk ke konsol BigQuery dengan memilih BigQuery dari menu GCP di sudut kiri atas ("hamburger").
- Di konsol BigQuery, klik More → Query settings dan pastikan menu Legacy SQL TIDAK dicentang (kami akan menggunakan Standard SQL).
Membuat Kueri
Di jendela Query editor, ketik kueri berikut lalu klik "Run" untuk menjalankannya. Kemudian, lihat hasilnya di jendela "Query results".
PASIEN QUERY
#standardSQL - Query Patients
SELECT
id AS patient_id,
name[safe_offset(0)].given AS given_name,
name[safe_offset(0)].family AS family,
telecom[safe_offset(0)].value AS phone,
birthDate AS birth_date,
deceased.dateTime AS deceased_datetime,
Gender AS fhir_gender_code,
Address[safe_offset(0)].line AS address1_line_1,
Address[safe_offset(0)].city AS address1_city,
Address[safe_offset(0)].state AS address1_state,
Address[safe_offset(0)].postalCode AS address1_postalCode,
Address[safe_offset(0)].country AS address1_country
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Patient` AS Patient
LIMIT 10
Kueri di "Query editor" dan hasil:
PRAKTIKER QUERY
#standardSQL - Query Practitioners
SELECT
id AS practitioner_id,
name[safe_offset(0)].given AS given_name,
name[safe_offset(0)].family AS family_name,
gender
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Practitioner`
LIMIT 10
Hasil kueri:
ORGANISASI KUERI
Ubah ID organisasi agar cocok dengan set data Anda.
#standardSQL - Query Organization
SELECT
id AS org_id,
type[safe_offset(0)].text AS org_type,
name AS org_name,
address[safe_offset(0)].line AS org_addr,
address[safe_offset(0)].city AS org_addr_city,
address[safe_offset(0)].state AS org_addr_state,
address[safe_offset(0)].postalCode AS org_addr_postalCode,
address[safe_offset(0)].country AS org_addr_country
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Organization` AS Organization
WHERE
id = "b81688f5-bd0e-3c99-963f-860d3e90ab5d"
Hasil kueri:
PENGHITUNGAN KUERI MENURUT PASIEN
#standardSQL - Query Encounters by Patient
SELECT
id AS encounter_id,
period.start AS encounter_start,
period.end AS encounter_end,
status AS encounter_status,
class.code AS encounter_type,
subject.patientId as patient_id,
participant[safe_OFFSET(0)].individual.practitionerId as parctitioner_id,
serviceProvider.organizationId as encounter_location_id,
type[safe_OFFSET(0)].text AS encounter_reason
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Encounter` AS Encounter
WHERE
subject.patientId = "900820eb-4166-4981-ae2d-b183a064ac18"
ORDER BY
encounter_end
Hasil kueri:
DAPATKAN PANJANG ENCOUNTER RATA-RATA BERDASARKAN JENIS ENCOUNTER
#standardSQL - Get Average length of Encounters by Encounter type
SELECT
class.code encounter_class,
ROUND(AVG(TIMESTAMP_DIFF(TIMESTAMP(period.end), TIMESTAMP(period.start), HOUR)),1) as avg_minutes
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Encounter` AS Encounter
WHERE
period.end >= period.start
GROUP BY
1
ORDER BY
2 DESC
Hasil kueri:
DAPATKAN SEMUA PASIEN YANG MEMILIKI TARIF A1C >= 6,5
# Query Patients who have A1C rate >= 6.5
SELECT
id AS observation_id,
subject.patientId AS patient_id,
context.encounterId AS encounter_id,
value.quantity.value,
value.quantity.unit,
code.coding[safe_offset(0)].code,
code.coding[safe_offset(0)].display AS description
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Observation`
WHERE
code.text like '%A1c/Hemoglobin%' AND
value.quantity.value >= 6.5 AND
status = 'final'
Hasil kueri:
4. Membuat instance AI Platform Notebooks
Ikuti petunjuk di link ini untuk membuat instance AI Platform Notebooks (JupyterLab) baru.
Pastikan untuk mengaktifkan Compute Engine API.
Anda dapat memilih " Buat notebook baru dengan opsi default" atau " Buat notebook baru dan tentukan opsi Anda".
5. Membuat Notebook Analisis Data
Membuka instance AI Platform Notebooks
Di bagian ini, kita akan menulis dan mengodekan notebook Jupyter baru dari awal.
- Buka instance notebook dengan membuka halaman AI Platform Notebooks di Google Cloud Platform Console. BUKA HALAMAN NOTEBOOK PLATFORM AI
- Pilih Open JupyterLab untuk instance yang ingin Anda buka.
- AI Platform Notebooks mengarahkan Anda ke URL untuk instance notebook.
Membuat notebook
- Di JupyterLab, buka File -> Baru -> Notebook dan pilih Kernel "Python 3" di pop-up, atau pilih "Python 3" di bawah bagian Notebook pada jendela peluncur untuk membuat Untitled.ipynbnotebook.
- Klik kanan Untitled.ipynb dan ganti nama {i>notebook<i} menjadi "fhir_data_from_bigquery.ipynb". Klik dua kali untuk membukanya, membuat kueri, dan menyimpan notebook.
- Anda dapat mengunduh notebook dengan mengklik kanan file *.ipynb dan pilih Download dari menu.
- Anda juga dapat mengupload notebook yang sudah ada dengan mengklik "Panah atas" tombol.
Membangun dan menjalankan setiap blok kode di notebook
Salin dan jalankan setiap blok kode yang disediakan di bagian ini satu per satu. Untuk menjalankan kode, klik "Run" (Segitiga).
Dapatkan lama menginap untuk pertemuan dalam jam
from google.cloud import bigquery
client = bigquery.Client()
lengthofstay="""
SELECT
class.code as encounter_class,
period.start as start_timestamp,
period.end as end_timestamp,
TIMESTAMP_DIFF(TIMESTAMP(period.end), TIMESTAMP(period.start), HOUR)
as length_of_stay_in_hours
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Encounter`
WHERE
period.end >= period.start
ORDER BY
4 DESC
LIMIT 10
"""
df = client.query(lengthofstay).to_dataframe()
df.head()
Kode dan output eksekusi:
Mendapatkan Pengamatan - Nilai kolesterol
observation="""
SELECT
cc.code loinc_code,
cc.display loinc_name,
approx_quantiles(round(o.value.quantity.value,1),4) as quantiles,
count(*) as num_obs
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Observation` o, o.code.coding cc
WHERE
cc.system like '%loinc%' and lower(cc.display) like '%cholesterol%'
GROUP BY 1,2
ORDER BY 4 desc
"""
df2 = client.query(observation).to_dataframe()
df2.head()
Output eksekusi:
Mendapatkan Perkiraan kuantil pertemuan
encounters="""
SELECT
encounter_class,
APPROX_QUANTILES(num_encounters, 4) num_encounters_quantiles
FROM (
SELECT
class.code encounter_class,
subject.reference patient_id,
COUNT(DISTINCT id) AS num_encounters
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Encounter`
GROUP BY
1,2
)
GROUP BY 1
ORDER BY 1
"""
df3 = client.query(encounters).to_dataframe()
df3.head()
Output eksekusi:
Dapatkan Rata-rata durasi pertemuan dalam hitungan menit
avgstay="""
SELECT
class.code encounter_class,
ROUND(AVG(TIMESTAMP_DIFF(TIMESTAMP(period.end), TIMESTAMP(period.start), MINUTE)),1) as avg_minutes
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Encounter`
WHERE
period.end >= period.start
GROUP BY
1
ORDER BY
2 DESC
"""
df4 = client.query(avgstay).to_dataframe()
df4.head()
Output eksekusi:
Dapatkan Pertemuan per pasien
patientencounters="""
SELECT
id AS encounter_id,
period.start AS encounter_start,
period.end AS encounter_end,
status AS encounter_status,
class.code AS encounter_type,
subject.patientId as patient_id,
participant[safe_OFFSET(0)].individual.practitionerId as parctitioner_id,
serviceProvider.organizationId as encounter_location_id,
type[safe_OFFSET(0)].text AS encounter_reason
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Encounter` AS Encounter
WHERE
subject.patientId = "900820eb-4166-4981-ae2d-b183a064ac18"
ORDER BY
encounter_end
"""
df5 = client.query(patientencounters).to_dataframe()
df5.head()
Output eksekusi:
Dapatkan Organisasi
orgs="""
SELECT
id AS org_id,
type[safe_offset(0)].text AS org_type,
name AS org_name,
address[safe_offset(0)].line AS org_addr,
address[safe_offset(0)].city AS org_addr_city,
address[safe_offset(0)].state AS org_addr_state,
address[safe_offset(0)].postalCode AS org_addr_postalCode,
address[safe_offset(0)].country AS org_addr_country
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Organization` AS Organization
WHERE
id = "b81688f5-bd0e-3c99-963f-860d3e90ab5d"
"""
df6 = client.query(orgs).to_dataframe()
df6.head()
Hasil eksekusi:
Mendapatkan Pasien
patients="""
SELECT
id AS patient_id,
name[safe_offset(0)].given AS given_name,
name[safe_offset(0)].family AS family,
telecom[safe_offset(0)].value AS phone,
birthDate AS birth_date,
deceased.dateTime AS deceased_datetime,
Gender AS fhir_gender_code,
Address[safe_offset(0)].line AS address1_line_1,
Address[safe_offset(0)].city AS address1_city,
Address[safe_offset(0)].state AS address1_state,
Address[safe_offset(0)].postalCode AS address1_postalCode,
Address[safe_offset(0)].country AS address1_country
FROM
`hcls-testing-data.fhir_20k_patients_analytics.Patient` AS Patient
LIMIT 10
"""
df7 = client.query(patients).to_dataframe()
df7.head()
Hasil eksekusi:
6. Membuat Diagram dan Grafik di AI Platform Notebooks
Jalankan sel kode di notebook "fhir_data_from_bigquery.ipynb" untuk menggambar grafik batang.
Misalnya, dapatkan durasi rata-rata Encounters dalam menit.
df4.plot(kind='bar', x='encounter_class', y='avg_minutes');
Hasil kode dan eksekusi:
7. Notebook Commit ke Cloud Source Repository
- Di GCP Console, buka Source Repositories. Jika ini pertama kalinya Anda menggunakannya, klik Mulai, lalu Buat repositori.
- Untuk lain waktu, buka GCP -> Cloud Source Repositories, lalu klik +Tambahkan repositori untuk membuat repositori baru.
- Pilih "Create a new Repository", lalu klik Continue.
- Masukkan Repository name dan Project name, lalu klik Create.
- Pilih "Clone your repository to a local Git repository", lalu pilih Manually generated credentials.
- Ikuti langkah 1 "Membuat dan menyimpan kredensial Git" petunjuk (lihat di bawah). Salin skrip yang muncul di layar Anda.
- Mulai sesi terminal di Jupyter.
- Tempel semua perintah dari "Configure Git" Anda ke terminal Jupyter.
- Salin jalur clone repositori dari repositori sumber Cloud GCP (langkah 2 dalam screenshot di bawah).
- Tempel perintah ini di terminal JupiterLab. Perintah akan terlihat seperti berikut:
git clone https://source.developers.google.com/p/<your -project-name>/r/my-ai-notebooks
- "my-ai-notebooks" folder dibuat di Jupyterlab.
- Pindahkan {i>notebook<i} Anda (fhir_data_from_bigquery.ipynb) ke dalam folder "my-ai-notebooks".
- Di terminal Jupyter, ubah direktori ke "cd my-ai-notebooks".
- Stage perubahan Anda menggunakan terminal Jupyter. Atau Anda dapat menggunakan Jupyter UI (klik kanan file di area Untracked, pilih Track, lalu file dipindahkan ke area Tracked, dan sebaliknya. Area yang diubah berisi file yang diubah).
git remote add my-ai-notebooks https://source.developers.google.com/p/<your -project-name>/r/my-ai-notebooks
- Commit perubahan Anda menggunakan terminal Jupyter atau UI Jupyter (ketik pesan, lalu klik tombol "Diperiksa").
git commit -m "message goes here"
- Kirim perubahan Anda ke repositori jarak jauh menggunakan terminal Jupyter atau UI Jupyter (klik ikon "push commit changes" ).
git push --all
- Di konsol GCP, buka Source Repositories. Klik my-ai-notebooks. Perhatikan bahwa "fhir_data_from_bigquery.ipynb" kini disimpan di Source Repository GCP.
8. Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Platform Anda untuk resource yang digunakan dalam codelab ini, setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat di GCP sehingga tidak menghabiskan kuota, dan Anda tidak akan ditagih di masa mendatang. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource tersebut.
Menghapus set data BigQuery
Ikuti petunjuk ini untuk menghapus set data BigQuery yang Anda buat sebagai bagian dari tutorial ini. Atau, buka konsol BigQuery, project UnPIN hcls-testing-data, jika Anda menggunakan set data pengujian fhir_20k_patients_analytics.
Mematikan instance AI Platform Notebooks
Ikuti petunjuk di link ini Mematikan instance notebook | AI Platform Notebooks untuk menonaktifkan instance AI Platform Notebooks.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- Di GCP Console, buka halaman Project. BUKA HALAMAN PROJECT
- Dalam daftar project, pilih project yang ingin dihapus, lalu klik Hapus.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
9. Selamat
Selamat, Anda telah berhasil menyelesaikan codelab untuk mengakses, membuat kueri, dan menganalisis data layanan kesehatan berformat FHIR menggunakan BigQuery dan AI Platform Notebooks.
Anda telah mengakses set data BigQuery publik di GCP.
Anda telah mengembangkan dan menguji kueri SQL menggunakan UI BigQuery.
Anda telah membuat dan meluncurkan instance AI Platform Notebooks.
Anda telah menjalankan kueri SQL di JupyterLab dan menyimpan hasil kueri di Pandas DataFrame.
Anda membuat diagram dan grafik menggunakan Matplotlib.
Anda meng-commit dan mengirim notebook Anda ke Cloud Source Repository di GCP.
Anda sekarang telah mengetahui langkah-langkah utama yang diperlukan untuk memulai perjalanan Analisis Data Layanan Kesehatan dengan BigQuery dan AI Platform Notebooks di Google Cloud Platform.
©Google, Inc. atau afiliasinya. Semua hak dilindungi undang-undang. Jangan disebarluaskan.