1. Giriş
Son güncelleme tarihi: 22.9.2022
Bu codelab'de BigQuery'de toplanan sağlık verileri verilerine erişmek ve bunları analiz etmek için BigQueryUI ve AI Platform Notebooks'u kullanarak bir kalıp uygular. HIPPA ile uyumlu bir AI Platform Notebooks'ta Pandas ve Matplotlib gibi bilinen araçları kullanarak büyük sağlık veri kümelerinde veri keşfini gösteriyor. "Şok" toplama işleminizin ilk bölümünü BigQuery'de yapmak, bir Pandas veri kümesi elde etmek ve daha sonra küçük Pandas veri kümesiyle yerel olarak çalışmaktır. AI Platform Notebooks, yönetilen bir Jupyter deneyimi sağlar. Böylece not defteri sunucularını sizin çalıştırmanıza gerek kalmaz. AI Platform Notebooks, BigQuery ve Cloud Storage gibi diğer GCP hizmetleriyle iyi entegre edilmiştir. Bu sayede, Google Cloud Platform'da Veri Analizi ve makine öğrenimi yolculuğunuza hızlı ve kolay bir şekilde başlayabilirsiniz.
Bu kod laboratuvarında şunları öğreneceksiniz:
- BigQuery kullanıcı arayüzünü kullanarak SQL sorguları geliştirin ve test edin.
- GCP'de bir AI Platform Notebooks örneği oluşturup başlatın.
- Not defterinden SQL sorguları yürütün ve sorgu sonuçlarını Pandas DataFrame'de depolayın.
- Matplotlib. kullanarak tablo ve grafikler oluşturun
- Not defterini GCP'de kaydedin ve bir Cloud Source Repository'ye aktarın.
Bu codelab'i çalıştırmak için nelere ihtiyacınız var?
- Bir GCP projesine erişiminizin olması gerekir.
- GCP projesi için size bir Sahip rolü atanmanız gerekir.
- BigQuery'de sağlık hizmetleri veri kümesine ihtiyacınız vardır.
GCP Projeniz yoksa yeni bir GCP projesi oluşturmak için bu adımları uygulayın.
2. Proje ayarlama
Bu codelab için BigQuery'de mevcut bir veri kümesi kullanacağız (hcls-testing-data.fhir_20k_patients_analytics). Bu veri kümesi yapay sağlık hizmetleri verileriyle önceden doldurulmuştur.
Sentetik veri kümesine erişim elde etme
- Cloud Console'a giriş yapmak için kullandığınız e-posta adresinden hcls-solutions-external+subscribe@google.com adresine katılma isteğinde bulunan bir e-posta gönderin.
- İşlemi nasıl onaylayacağınıza ilişkin talimatları içeren bir e-posta alacaksınız.
- Gruba katılmak için e-postayı yanıtlama seçeneğini kullanın. düğmesini TIKLAMAYIN.
- Onay e-postasını aldıktan sonra, codelab'de bir sonraki adıma geçebilirsiniz.
Projeyi sabitleyin
- GCP Console'da projenizi seçin, ardından BigQuery'ye gidin.
- +VERİ EKLE açılır menüsünü tıklayın ve "Proje sabitle"yi seçin. > "Proje adını girin" ,
- Proje adını "hcls-testing-data" olarak girin ve PIN'i tıklayın. "fhir_20k_patients_analytics" BigQuery test veri kümesi kullanılabilir.
3. BigQuery kullanıcı arayüzünü kullanarak sorgu geliştirin
BigQuery kullanıcı arayüzü ayarı
- Sol üst köşedeki ("hamburger") GCP menüsünden BigQuery'yi seçerek BigQuery konsoluna gidin.
- BigQuery konsolunda Diğer → Sorgu ayarları'nı tıklayın ve Eski SQL menüsünün işaretlenmediğinden emin olun (Standart SQL kullanacağız).
Derleme Sorguları
Sorgu düzenleyici penceresine aşağıdaki sorguyu yazın ve çalıştırmak için "Çalıştır"'ı tıklayın. Ardından, "Sorgu sonuçları" penceresinde sonuçları görüntüleyin.
SORU SATICILARI
#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
"Sorgu düzenleyici"de sorgu ve sonuçlar:
SORGU UYGULAMALARI
#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
Sorgu sonuçları:
QUERY KURULUŞ
Kuruluş kimliğini veri kümenizle eşleşecek şekilde değiştirin.
#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"
Sorgu sonuçları:
BEKLEYENLERE GÖRE SORGU KAZANILANLAR
#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
Sorgu sonuçları:
TÜKETİCİ TÜRÜNE GÖRE ORTALAMA UZUNLUK SAYISI
#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
Sorgu sonuçları:
A1C ORANI >= 6,5 olan TÜM SATICILARI ALIN
# 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'
Sorgu sonuçları:
4. AI Platform Notebooks örneği oluşturma
Yeni bir AI Platform Notebooks (JupyterLab) örneği oluşturmak için bu bağlantıdaki talimatları uygulayın.
Lütfen Compute Engine API'yi etkinleştirdiğinizden emin olun.
Şunlardan birini seçebilirsiniz: " Varsayılan seçeneklerle yeni bir not defteri oluşturun veya " Yeni bir not defteri oluşturun ve seçeneklerinizi belirtin".
5. Veri Analizi Not Defteri Oluşturma
AI Platform Notebooks örneğini aç
Bu bölümde sıfırdan yeni bir Jupyter not defteri hazırlayıp kodlayacağız.
- Google Cloud Platform Console'daki AI Platform Notebooks sayfasına giderek bir not defteri örneği açın. AI PLATFORM NOT KİTAPLARI SAYFASINA GİDİN
- Açmak istediğiniz örnek için JupyterLab'i aç'ı seçin.
- AI Platform Notebooks, sizi not defteri örneğinizin URL'sine yönlendirir.
Not defteri oluşturma
- JupyterLab'de File -> (Dosya ->) yolunu izleyin. Yeni -> Not Defteri'ni tıklayın ve "Python 3" Kernel'ini seçin. tıklayın veya "Python 3"ü seçin kullanarak bir Untitled.ipynbnotebook oluşturun.
- Untitled.ipynb'yi sağ tıklayın ve not defterini "fhir_data_from_bigquery.ipynb" olarak yeniden adlandırın. Çift tıklayarak açın, sorguları oluşturun ve not defterini kaydedin.
- *.ipynb dosyasını sağ tıklayıp menüden İndir 'i seçerek bir not defteri indirebilirsiniz.
- "Yukarı ok"u tıklayarak mevcut bir not defterini de yükleyebilirsiniz düğmesini tıklayın.
Her kod bloğunu not defterinde oluşturun ve yürütün
Bu bölümde sağlanan her bir kod bloğunu tek tek kopyalayın ve yürütün. Kodu yürütmek için "Çalıştır"ı tıklayın (Üçgen).
Karşılaşmalar için konaklama süresini saat cinsinden öğrenin
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()
Kod ve yürütme çıkışı:
Gözlemleri Göster - Kolesterol değerleri
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()
Yürütme çıkışı:
Yaklaşık karşılaşma yüzdeliklerini alma
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()
Yürütme çıkışı:
Dakika cinsinden ortalama karşılaşma süresi alın
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()
Yürütme çıkışı:
Hasta başına karşılama sayısını alma
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()
Yürütme çıkışı:
Kuruluş Alma
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()
Yürütme sonucu:
Hasta Alma
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()
Yürütme sonuçları:
6. AI Platform Notebooks'ta Grafik Oluşturma
"fhir_data_from_bigquery.ipynb" not defterinde kod hücrelerini yürüt çubuk grafik çizmek ister misiniz?
Örneğin, Karşılaşmaların ortalama uzunluğunu dakika cinsinden görebilirsiniz.
df4.plot(kind='bar', x='encounter_class', y='avg_minutes');
Kod ve yürütme sonuçları:
7. Not Defterini Bulut Kaynak Deposuna Kaydet
- GCP Console'da Source Repositories'e gidin. İlk kez kullanıyorsanız Başlat'ı ve ardından Create Repository'i (Kod deposu oluştur) tıklayın.
- Sonraki bir süre için GCP'ye gidin -> Cloud Source Repositories'i seçin ve yeni depo oluşturmak için +Add Repository'i (Kod deposu ekle) tıklayın.
- "Create a new Repository"'i (Yeni Kod Deposu oluştur) seçin ve ardından Devam'ı tıklayın.
- Kod deposu adını ve Proje adını girip Oluştur'u tıklayın.
- "Kod deponuzu yerel Git deposuna klonlayın"ı, ardından Manuel olarak oluşturulan kimlik bilgilerini seçin.
- "Git kimlik bilgilerini oluşturma ve depolama" adlı 1. adımı uygulayın. bakın (aşağıya bakın). Ekranınızda görünen komut dosyasını kopyalayın.
- Jupyter'de terminal oturumu başlatın.
- "Configure Git" (Git'i Yapılandır) içindeki tüm komutları yapıştırın Jupyter terminaline açılır.
- GCP Cloud kaynak depolarından depo klon yolunu kopyalayın (aşağıdaki ekran görüntüsünde 2. adım).
- Bu komutu JupiterLab terminaline yapıştırın. Komut şu şekilde görünür:
git clone https://source.developers.google.com/p/<your -project-name>/r/my-ai-notebooks
- "my-ai-not defterlerim" klasörü Jupyterlab'de oluşturulur.
- Not defterinizi (fhir_data_from_bigquery.ipynb) "my-ai-notebooks" klasörüne taşıyın.
- Jupyter terminalinde dizini "cd my-ai-notebooks" olarak değiştirin.
- Değişikliklerinizi Jupyter terminalini kullanarak aşamalandırın. Alternatif olarak, Jupyter kullanıcı arayüzünü kullanabilirsiniz (Takip Edilmeyen alanındaki dosyaları sağ tıklayın, Takip Et'i seçin, ardından dosyalar İzlenen alanına taşınır ve bunun tersi de geçerlidir. Değiştirilen alanda, değiştirilen dosyalar yer alır).
git remote add my-ai-notebooks https://source.developers.google.com/p/<your -project-name>/r/my-ai-notebooks
- Jupyter terminalini veya Jupyter kullanıcı arayüzünü kullanarak değişikliklerinizi kaydedin (mesajı yazın, ardından "İşaretli" düğmesini tıklayın).
git commit -m "message goes here"
- Jupyter terminalini veya Jupyter kullanıcı arayüzünü kullanarak değişikliklerinizi uzak depoya aktarın ("yapılan değişiklikleri aktar" simgesini tıklayın).
git push --all
- GCP konsolunda Source Repositories'e gidin. my-ai-notebooks'u tıklayın. "fhir_data_from_bigquery.ipynb" , artık GCP Kaynak Deposu'na kaydedildi.
8. Temizleme
Bu codelab'de kullanılan kaynaklar için Google Cloud Platform hesabınızın ücretlendirilmesini önlemek amacıyla eğiticiyi bitirdikten sonra GCP'de oluşturduğunuz kaynakları temizleyebilirsiniz. Böylece, kotanız yer kaplamaz ve gelecekte bunlar için faturalandırılmazsınız. Aşağıdaki bölümlerde bu kaynakların nasıl silineceği veya devre dışı bırakılacağı açıklanmaktadır.
BigQuery veri kümesini silme
Bu eğitim kapsamında oluşturduğunuz BigQuery veri kümesini silmek için bu talimatları uygulayın. Alternatif olarak, fhir_20k_patients_analytics test veri kümesini kullandıysanız BigQuery konsolundaki UnPIN projesi hcls-testing-data sayfasına gidebilirsiniz.
AI Platform Notebooks örneğini kapatma
Şu bağlantıdaki talimatları uygulayın: Not defteri örneğini kapatma | AI Platform Notebooks'u kullanarak bir AI Platform Notebooks örneğini kapatın.
Projeyi silme
Faturalandırmayı ortadan kaldırmanın en kolay yolu, eğitim için oluşturduğunuz projeyi silmektir.
Projeyi silmek için:
- GCP Console'da Projeler sayfasına gidin. PROJELER SAYFASINA GİDİN
- Proje listesinde, silmek istediğiniz projeyi seçin ve Sil'i tıklayın.
- İletişim kutusuna proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.
9. Tebrikler
Tebrikler, BigQuery ve AI Platform Notebooks kullanarak FHIR biçimli sağlık hizmeti verilerine erişmek, bu verileri sorgulamak ve analiz etmek için codelab'i başarıyla tamamladınız.
GCP'de herkese açık bir BigQuery veri kümesine eriştiniz.
BigQuery kullanıcı arayüzünü kullanarak SQL sorguları geliştirdiniz ve test ettiniz.
Bir AI Platform Notebooks örneği oluşturup başlattınız.
JupyterLab'de SQL sorgularını yürütüp sorgu sonuçlarını Pandas DataFrame'de depoladınız.
Matplotlib kullanarak şema ve grafikler oluşturdunuz.
Not defterinizi GCP'deki Cloud Source Repository'ye aktarıp taahhüt ettiniz.
Google Cloud Platform'da BigQuery ve AI Platform Notebooks ile Sağlık Hizmetleri Veri Analizi yolculuğunuza başlamak için gereken temel adımları artık biliyorsunuz.
©Google, Inc. veya satış ortakları. Tüm hakları saklıdır. Bu içeriği dağıtmayın.