1. परिचय
पिछली बार अपडेट किया गया: 22-9-2022
यह कोडलैब, BigQuery में इकट्ठा किए गए हेल्थकेयर डेटा को ऐक्सेस करने और उसका विश्लेषण करने के लिए एक पैटर्न लागू करता है. इसके लिए, BigQueryUI और AI Platform Notebook का इस्तेमाल किया जाता है. इस इमेज में, एचआईपीपीए का पालन करने वाले AI Platform Notebooks में Pandas, Matplotlib वगैरह जैसे जाने-पहचाने टूल का इस्तेमाल करके बड़े हेल्थकेयर डेटासेट के डेटा एक्सप्लोरेशन को दिखाया गया है. "ट्रिक" BigQuery में अपने एग्रीगेशन का पहला हिस्सा करना, Pandas डेटासेट को वापस पाना, और फिर छोटे Pandas डेटासेट के साथ स्थानीय तौर पर काम करना. AI Platform Notebooks से Jupyter का मैनेज किया जा सकता है. इससे आपको notebook सर्वर चलाने की ज़रूरत नहीं पड़ती. AI Platform Notebooks, Big Query और Cloud Storage जैसी अन्य GCP सेवाओं के साथ अच्छी तरह से इंटिग्रेट है. इससे Google Cloud Platform पर, डेटा के आंकड़े और मशीन लर्निंग का इस्तेमाल शुरू करना आसान और तेज़ हो जाता है.
इस कोड लैब में, आपको इन चीज़ों के बारे में जानकारी मिलेगी:
- BigQuery यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके SQL क्वेरी डेवलप करें और उनकी जांच करें.
- GCP में, AI Platform Notebooks इंस्टेंस बनाएं और लॉन्च करें.
- नोटबुक से एसक्यूएल क्वेरी चलाएं और क्वेरी के नतीजों को Pandas DataFrame में स्टोर करें.
- Matplotlib का इस्तेमाल करके चार्ट और ग्राफ़ बनाएं.
- नोटबुक को कॉपी करें और उसे GCP में क्लाउड सोर्स का डेटा स्टोर करने की जगह में पुश करें.
इस कोडलैब को चलाने के लिए, आपको क्या करना होगा?
- आपके पास GCP प्रोजेक्ट का ऐक्सेस होना चाहिए.
- आपको GCP प्रोजेक्ट के लिए, मालिक की भूमिका असाइन करनी होगी.
- आपके पास, BigQuery में स्वास्थ्य सेवा से जुड़ा डेटासेट होना ज़रूरी है.
अगर आपके पास GCP प्रोजेक्ट नहीं है, तो नया GCP प्रोजेक्ट बनाने के लिए यह तरीका अपनाएं.
2. प्रोजेक्ट सेटअप
इस कोडलैब के लिए, हम BigQuery में पहले से मौजूद डेटासेट (hcls-testing-data.fhir_20k_patients_analytics) का इस्तेमाल करेंगे. इस डेटासेट में, सिंथेटिक हेल्थकेयर डेटा पहले से ही मौजूद होता है.
सिंथेटिक डेटासेट का ऐक्सेस पाना
- Cloud Console में लॉगिन करने के लिए जिस ईमेल पते का इस्तेमाल किया जा रहा है उससे hcls-solutions-external+subscribe@google.com पर ईमेल भेजकर शामिल होने का अनुरोध करें.
- आपको एक ईमेल मिलेगा, जिसमें कार्रवाई की पुष्टि करने के निर्देश होंगे.
- ग्रुप में शामिल होने के लिए, ईमेल का जवाब देने के विकल्प का इस्तेमाल करें. बटन पर क्लिक न करें.
- पुष्टि करने वाला ईमेल मिलने के बाद, कोडलैब में अगले चरण पर जाया जा सकता है.
प्रोजेक्ट को पिन करें
- GCP कंसोल में, अपना प्रोजेक्ट चुनें. इसके बाद, BigQuery पर जाएं.
- +डेटा जोड़ें ड्रॉपडाउन पर क्लिक करें और "प्रोजेक्ट पिन करें" चुनें > "प्रोजेक्ट का नाम डालें" को अपनाएं.
- प्रोजेक्ट का नाम "hcls-testing-data" डालें. इसके बाद, पिन पर क्लिक करें. BigQuery टेस्ट का डेटासेट "fhir_20k_patients_analytics" इस्तेमाल के लिए उपलब्ध है.
3. BigQuery यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके क्वेरी डेवलप करें
BigQuery यूज़र इंटरफ़ेस (यूआई) सेटिंग
- सबसे ऊपर बाएं कोने ("हैमबर्गर") GCP मेन्यू से BigQuery को चुनकर, BigQuery कंसोल पर जाएं.
- BigQuery कंसोल में, ज़्यादा → क्वेरी सेटिंग पर क्लिक करें और पक्का करें कि लेगसी एसक्यूएल मेन्यू पर सही का निशान नहीं लगाया गया हो (हम स्टैंडर्ड एसक्यूएल का इस्तेमाल करेंगे).
बिल्ड क्वेरी
क्वेरी एडिटर विंडो में, नीचे दी गई क्वेरी टाइप करें और इसे चलाने के लिए "Run" पर क्लिक करें. इसके बाद, "क्वेरी के नतीजे" विंडो में नतीजे देखें.
क्वेरी मरीज़
#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
"क्वेरी एडिटर" में क्वेरी और नतीजे:
क्वेरी प्रैक्टिशनर
#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
क्वेरी के नतीजे:
क्वेरी संगठन
अपने डेटासेट से मैच करने के लिए, संगठन का आईडी बदलें.
#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"
क्वेरी के नतीजे:
मरीज़ की तरफ़ से क्वेरी डालने वाले लोग
#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
क्वेरी के नतीजे:
एन्काउंटर टाइप के हिसाब से एन्काउंटर की औसत लंबाई हासिल करें
#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
क्वेरी के नतीजे:
ऐसे सभी मरीज़ पाएं जिनका 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'
क्वेरी के नतीजे:
4. AI Platform Notebooks इंस्टेंस बनाएं
नया AI Platform Notebooks (JupyterLab) इंस्टेंस बनाने के लिए, इस लिंक में दिए गए निर्देशों का पालन करें.
कृपया पक्का करें कि Compute Engine API को चालू किया गया हो.
आप " डिफ़ॉल्ट विकल्पों के साथ एक नई नोटबुक बनाएं" या " एक नई नोटबुक बनाएं और अपने विकल्प बताएं".
5. डेटा ऐनलिटिक्स नोटबुक बनाएं
AI Platform Notebooks इंस्टेंस खोलें
इस सेक्शन में, हम शुरुआत से एक नया Jupyter notebook लिखेंगे और उसे कोड देंगे.
- Google Cloud Platform Console में, एआई प्लैटफ़ॉर्म नोटबुक पेज पर जाएं और नोटबुक इंस्टेंस खोलें. एआई प्लैटफ़ॉर्म के नोटबुक पेज पर जाएं
- जिस इंस्टेंस को खोलना है उसके लिए, JupyterLab खोलें को चुनें.
- AI Platform Notebooks, आपको notebook के इंस्टेंस के लिए यूआरएल पर ले जाता है.
नोटबुक बनाएं
- JupyterLab में, फ़ाइल -> पर जाएं नया -> Notebook खोलें और Kernel "Python 3" चुनें पॉप-अप में जाएं या "Python 3" चुनें लॉन्चर विंडो में Notebook सेक्शन में जाकर, Untitled.ipynbnotebook बनाएं.
- Untitled.ipynb पर राइट क्लिक करें और notebook का नाम बदलकर "fhir_data_from_bigquery.ipynb" करें. इसे खोलने, क्वेरी बनाने, और notebook को सेव करने के लिए दो बार क्लिक करें.
- *.ipynb फ़ाइल पर राइट क्लिक करके, नोटबुक को डाउनलोड किया जा सकता है. इसके बाद, मेन्यू से 'डाउनलोड करें' चुनें.
- "अप ऐरो" पर क्लिक करके, किसी मौजूदा नोटबुक को भी अपलोड किया जा सकता है बटन.
Notebook में हर कोड ब्लॉक बनाएं और उसे एक्ज़ीक्यूट करें
इस सेक्शन में दिए गए हर कोड ब्लॉक को एक-एक करके कॉपी करें और एक्ज़ीक्यूट करें. कोड चलाने के लिए, "Run" पर क्लिक करें (ट्राईऐंगल).
घंटों में एनकाउंटर की अवधि के बारे में जानें
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()
कोड और एक्ज़ीक्यूशन का आउटपुट:
निगरानी पाएं - कोलेस्ट्रॉल की वैल्यू
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()
एक्ज़ीक्यूट किया जाने वाला आउटपुट:
मुकाबलों की अनुमानित संख्या देखें
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()
एक्ज़ीक्यूट किया जाने वाला आउटपुट:
मुकाबलों की औसत अवधि मिनटों में देखें
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()
एक्ज़ीक्यूट किया जाने वाला आउटपुट:
हर मरीज़ के लिए अपॉइंटमेंट बुक करें
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()
एक्ज़ीक्यूट किया जाने वाला आउटपुट:
संगठनों को इंस्टॉल करें
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()
प्लान लागू करने का नतीजा:
मरीज़ों की देखभाल करें
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()
प्लान लागू करने के नतीजे:
6. AI Platform Notebooks में चार्ट और ग्राफ़ बनाएं
नोटबुक "fhir_data_from_bigquery.ipynb" में कोड सेल एक्ज़ीक्यूट करें किस तरह इस्तेमाल किया जा सकता है.
उदाहरण के लिए, मुकाबलों की औसत अवधि मिनटों में पता करें.
df4.plot(kind='bar', x='encounter_class', y='avg_minutes');
कोड और एक्ज़ीक्यूशन के नतीजे:
7. Notebook को क्लाउड सोर्स का डेटा स्टोर करने की जगह बनाएं
- GCP कंसोल में, सोर्स डेटा स्टोर करने की जगहों पर जाएं. अगर आपने इसे पहली बार इस्तेमाल किया है, तो 'शुरू करें' पर क्लिक करें. इसके बाद, 'डेटा स्टोर करने की जगह बनाएं' पर क्लिक करें.
- बाद में, GCP पर जाएं -> Cloud Source (डेटा स्टोर करने की जगह) स्टोर करें और नई रिपॉज़िटरी बनाने के लिए +डेटा स्टोर करने की जगह जोड़ें पर क्लिक करें.
- "नया डेटा स्टोर करने की जगह बनाएं" चुनें. इसके बाद, 'जारी रखें' पर क्लिक करें.
- डेटा स्टोर करने की जगह का नाम और प्रोजेक्ट का नाम डालें. इसके बाद, 'बनाएं' पर क्लिक करें.
- "अपने डेटा स्टोर करने की जगह को लोकल Git रिपॉज़िटरी में क्लोन करें" चुनें. इसके बाद, मैन्युअल रूप से जनरेट किए गए क्रेडेंशियल चुनें.
- चरण 1 "Git क्रेडेंशियल जनरेट और स्टोर करें" का पालन करें निर्देश (नीचे देखें). स्क्रीन पर दिखने वाली स्क्रिप्ट को कॉपी करें.
- Jupyter में टर्मिनल का सेशन शुरू करें.
- अपने "Git कॉन्फ़िगर करें" में मौजूद सभी निर्देशों को चिपकाएं विंडो को Jupyter टर्मिनल में ले जाना होगा.
- GCP Cloud सोर्स डेटा स्टोर करने की जगहों से, रिपॉज़िटरी क्लोन पाथ को कॉपी करें. दूसरा चरण, नीचे दिए गए स्क्रीनशॉट में दिखाया गया है.
- इस कमांड को JupiterLab टर्मिनल में चिपकाएं. निर्देश कुछ ऐसा दिखेगा:
git clone https://source.developers.google.com/p/<your -project-name>/r/my-ai-notebooks
- "मेरी-एआई-नोटबुक" फ़ोल्डर Jupyterlab में बनाया गया है.
- अपनी नोटबुक (fhir_data_from_bigquery.ipynb) को "my-ai-notebooks" फ़ोल्डर में ले जाएं.
- Jupyter टर्मिनल में, डायरेक्ट्री को "cd my-ai-notebooks" में बदलें.
- Jupyter टर्मिनल का इस्तेमाल करके अपने बदलाव दिखाने के लिए. इसके अलावा, आपके पास Jupyter UI का इस्तेमाल करने का भी विकल्प है. ट्रैक न की गई जगह में फ़ाइलों पर राइट क्लिक करने के बाद 'ट्रैक करें' को चुनें. इसके बाद, फ़ाइलों को ट्रैक की गई जगह पर भेज दिया जाता है और ट्रैक की गई जगह पर फ़ाइलों को ले जाया जाता है, तो ट्रैक किए गए हिस्से पर राइट क्लिक करें. बदले गए हिस्से में, बदली गई फ़ाइलें शामिल हैं).
git remote add my-ai-notebooks https://source.developers.google.com/p/<your -project-name>/r/my-ai-notebooks
- Jupyter Terminal या Jupyter यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके बदलाव करें. इसके लिए, मैसेज टाइप करें, फिर "जांचा गया" बटन पर क्लिक करें.
git commit -m "message goes here"
- Jupyter टर्मिनल या Jupyter यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके अपने बदलावों को रिमोट रिपॉज़िटरी में पुश करें ("पुश किए गए बदलाव" आइकॉन पर क्लिक करें).
git push --all
- GCP कंसोल में, सोर्स डेटा स्टोर करने की जगहों पर जाएं. my-ai-notebook पर क्लिक करें. ध्यान दें कि "fhir_data_from_bigquery.ipynb" अब GCP सोर्स डेटा स्टोर करने की जगह में सेव हो गया है.
8. साफ़-सफ़ाई सेवा
इस कोडलैब में इस्तेमाल किए जाने वाले संसाधनों के लिए, Google Cloud Platform खाते पर शुल्क न लगे. ट्यूटोरियल खत्म करने के बाद, GCP पर बनाए गए संसाधनों को खाली किया जा सकता है. ऐसा करने से, वे आपका कोटा इस्तेमाल नहीं करेंगे और आने वाले समय में आपको उनका बिल नहीं भेजा जाएगा. इन संसाधनों को मिटाने या बंद करने का तरीका नीचे सेक्शन में बताया गया है.
BigQuery डेटासेट मिटाना
इस ट्यूटोरियल के हिस्से के तौर पर बनाए गए BigQuery डेटासेट को मिटाने के लिए, इन निर्देशों का पालन करें. इसके अलावा, अगर आपने टेस्ट डेटासेट fhir_20k_patients_analytics का इस्तेमाल किया है, तो BigQuery कंसोल में,hcls-testing-data प्रोजेक्ट को अनपिन करें.
AI Platform Notebooks के इंस्टेंस को बंद करना
इस लिंक में दिए गए निर्देशों का पालन करें किसी नोटबुक को शट डाउन करें | AI Platform Notebooks का इस्तेमाल करके, AI Platform Notebooks इंस्टेंस को बंद करें.
प्रोजेक्ट मिटाया जा रहा है
बिलिंग हटाने का सबसे आसान तरीका, ट्यूटोरियल के लिए बनाए गए प्रोजेक्ट को मिटाना है.
प्रोजेक्ट मिटाने के लिए:
- GCP कंसोल में, प्रोजेक्ट पेज पर जाएं. प्रोजेक्ट पेज पर जाएं
- प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे आपको मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
- डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए शट डाउन करें पर क्लिक करें.
9. बधाई हो
बधाई हो, आपने BigQuery और AI Platform Notebooks का इस्तेमाल करके, एफ़एचआईआर फ़ॉर्मैट वाले हेल्थकेयर डेटा को ऐक्सेस करने, उसके बारे में क्वेरी करने, और उसका विश्लेषण करने के लिए कोड लैब पूरा कर लिया है.
आपने GCP में एक सार्वजनिक BigQuery डेटासेट ऐक्सेस किया है.
आपने BigQuery यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके SQL क्वेरी डेवलप की हैं और उनकी जांच की है.
आपने AI Platform Notebooks इंस्टेंस बनाया और लॉन्च किया है.
आपने JupyterLab में एसक्यूएल क्वेरी चलाईं और क्वेरी के नतीजों को Pandas DataFrame में सेव किया.
आपने Matplotlib का इस्तेमाल करके चार्ट और ग्राफ़ बनाए हैं.
आपने अपनी नोटबुक को जीसीपी में क्लाउड सोर्स डेटा स्टोर करने की जगह तय करके पुश कर दिया है.
अब आपको Google Cloud Platform पर, BigQuery और AI Platform Notebook के साथ स्वास्थ्य सेवा के डेटा के आंकड़ों को समझने में मदद करने वाले अहम चरणों के बारे में पता है.
©Google, Inc. या इसके सहयोगी. सभी अधिकार सुरक्षित हैं. डिस्ट्रिब्यूट न करें.