Esercizio - Esplorare i dati SDOH nei data lakehouse

Completato

In questo esercizio si esplorano i dati caricati in OneLake. È possibile utilizzare i dati nella silver lakehouse per comprendere in che misura l'ambiente alimentare e la composizione socioeconomica di un'area influiscono sul numero di pazienti con diabete.

Analizzare i dati dal Silver Lakehouse

Ora è possibile interrogare i ristoranti fast food e il reddito familiare mediano in un'area per visualizzare le metriche pertinenti.

  1. Selezionare l'area di lavoro FL HC Cloud creata.

  2. Trova e apri la FLHealthcare_msft_silver lakehouse.

  3. Selezionare Apri notebook Nuovo notebook>.

  4. Incolla la query seguente. Sostituire FL con le proprie iniziali.

    %%sql
    SELECT
      sd.SocialDeterminantName,
      sd.SocialDeterminantValue,
      sd.SocialDeterminantDescription,
      parsedJson.CountyName AS CountyName,
      parsedJson.CountyFIPS AS CountyFIPS,
      parsedJson.StateName AS StateName
    FROM
      FLHealthcare_msft_silver.SocialDeterminant sd
    LATERAL VIEW json_tuple(sd.LocationJson, 'STATENAME', 'COUNTYNAME', 'COUNTYFIPS') 
      parsedJson AS StateName, CountyName, CountyFIPS
    WHERE
      sd.SocialDeterminantName IN ('GROC16', 'FFR16', 'ACS_MEDIAN_HH_INC')
    AND sd.SocialDeterminantValue IS NOT NULL;
    
  5. Selezionare Esegui cella.

  6. I risultati vengono visualizzati nel modo seguente. Selezionare + Nuovo grafico.

    Il primo grafico suggerito è simile all'immagine seguente.

    A questo punto, aggiungere il paziente alla query e correlare i record dei pazienti ai determinanti sociali della salute (SDOH) per ottenere un riepilogo a livello di stato.

  7. Selezionare Aggiungi cella di codice.

  8. Incolla la query seguente. Sostituire FL con le proprie iniziali.

    %%sql
      WITH base_query AS (
      SELECT
          sd.SocialDeterminantName,
          CAST(sd.SocialDeterminantValue AS DOUBLE) AS SocialDeterminantValue, 
        -- Ensure Numeric Data
          UPPER(sd.StateName) AS State, 
        -- Standardized State Format
          sd.CountyName AS County,
          sd.CountyFIPS
      FROM (
          SELECT
              SocialDeterminantName,
              SocialDeterminantValue,
              SocialDeterminantDescription,
              parsedJson.CountyName AS CountyName,
              parsedJson.CountyFIPS AS CountyFIPS,
              UPPER(parsedJson.StateName) AS StateName 
          -- Standardized Case
          FROM
              FLHealthcare_msft_silver.SocialDeterminant sd
          LATERAL VIEW json_tuple(sd.LocationJson, 'STATENAME', 'COUNTYNAME', 'COUNTYFIPS') 
              parsedJson AS StateName, CountyName, CountyFIPS
      ) sd
          WHERE sd.SocialDeterminantName IN ('GROC16', 'FFR16', 'ACS_MEDIAN_HH_INC', 'SAIPE_PCT_POV')
          AND sd.SocialDeterminantValue IS NOT NULL
      ),
      social_determinants AS (
          SELECT
              State,
              MAX(CASE WHEN SocialDeterminantName = 'GROC16' THEN SocialDeterminantValue END) AS Grocery_stores_2016,
              MAX(CASE WHEN SocialDeterminantName = 'FFR16' THEN SocialDeterminantValue END) AS Fast_food_restaurants_2016,
              MAX(CASE WHEN SocialDeterminantName = 'ACS_MEDIAN_HH_INC' THEN SocialDeterminantValue END) AS Median_household_income,
              MAX(CASE WHEN SocialDeterminantName = 'SAIPE_PCT_POV' THEN SocialDeterminantValue END) AS Estimated_percentage_of_people_of_all_ages_in_poverty
          FROM base_query
          GROUP BY State
          ),
          ExpandedPatients AS (
          SELECT
              p.idOrig AS id_orig,
              address_item.postalCode AS postalCode,
              UPPER(address_item.state) AS state -- Standardized Case
          FROM
              FLHealthcare_msft_silver.Patient p
          LATERAL VIEW explode(p.address) exploded_address AS address_item
          ),
      patient_conditions AS (
          SELECT
              ep.state AS State,
              COUNT(DISTINCT CASE WHEN c.code.text LIKE '%Asthma%' THEN ep.id_orig END) AS Total_Asthma_Patients,
              COUNT(DISTINCT CASE WHEN c.code.text LIKE '%Diabetes%' THEN ep.id_orig END) AS Total_Diabetes_Patients,
              COUNT(DISTINCT CASE WHEN c.code.text LIKE '%Hypertension%' THEN ep.id_orig END) AS Total_Hypertension_Patients
          FROM
              ExpandedPatients ep
          JOIN FLHealthcare_msft_silver.Condition c 
              ON ep.id_orig = c.subject.idOrig
          GROUP BY ep.state
          )
          SELECT
              sd.State,
              COALESCE(sd.Grocery_stores_2016, 0) AS Grocery_stores_2016,
              COALESCE(sd.Fast_food_restaurants_2016, 0) AS Fast_food_restaurants_2016,
              COALESCE(sd.Median_household_income, 0) AS Median_household_income, -- Ensure No NULLs
              COALESCE(sd.Estimated_percentage_of_people_of_all_ages_in_poverty, 0) AS Estimated_percentage_of_people_of_all_ages_in_poverty,
              COALESCE(pc.Total_Asthma_Patients, 0) AS Total_Asthma_Patients,
              COALESCE(pc.Total_Diabetes_Patients, 0) AS Total_Diabetes_Patients,
              COALESCE(pc.Total_Hypertension_Patients, 0) AS Total_Hypertension_Patients
          FROM
              social_determinants sd
          LEFT JOIN
              patient_conditions pc
          ON
              sd.State = pc.State;
    
  9. Selezionare Esegui cella.

  10. Vengono visualizzati i risultati seguenti. Selezionare + Nuovo grafico.

    Il primo grafico suggerito viene visualizzato come segue.

  11. Nell'area Grafici suggeriti selezionare Media di Fast_food_restaurants_2016.

    Il grafico viene visualizzato come segue.

  12. Seleziona il grafico Median_household_income per Total_Asthma_Patients. Questo grafico è un buon esempio di combinazione della condizione del paziente con i dati dei determinanti sociali.