diff --git a/UseCases/FWA_Healthcare/FWA_Dataprocessing_sql.ipynb b/UseCases/FWA_Healthcare/FWA_Dataprocessing_sql.ipynb new file mode 100644 index 00000000..996fc0ce --- /dev/null +++ b/UseCases/FWA_Healthcare/FWA_Dataprocessing_sql.ipynb @@ -0,0 +1,3057 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a9480d78-94ed-43bc-afd9-cd3679f73436", + "metadata": {}, + "source": [ + "
\n", + "

\n", + " Fraud, Waste, and Abuse (FWA) Detection - Dataprocessing
\n", + " \"Teradata\"\n", + "

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "7fd36aa3-fe29-43b5-ab9e-42dda4d7b9bc", + "metadata": {}, + "source": [ + "

Introduction
\n", + "

In this notebook we will process the source data and create the tables required for reporting.

" + ] + }, + { + "cell_type": "markdown", + "id": "49b6edde-fafb-4159-b9c2-c4867e5dd4d4", + "metadata": {}, + "source": [ + "
\n", + "1. Connect to Vantage\n", + "

You will be prompted to provide the password. Enter your password, press the Enter key, and then use the down arrow to go to the next cell.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6ac825b3-0058-47fc-b2c0-0a46a9128b99", + "metadata": {}, + "outputs": [], + "source": [ + "%connect local, hidewarnings=True" + ] + }, + { + "cell_type": "markdown", + "id": "6892e7b8-3393-4c94-bce0-504382072a06", + "metadata": {}, + "source": [ + "

Setup for execution of notebook. Begin running steps with Shift + Enter keys.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "05f00edd-6215-4358-8aa8-3ee73edfbdb5", + "metadata": {}, + "outputs": [], + "source": [ + "Set query_band='DEMO=FF_FWA_Healthcare_Sql.ipynb;' update for session;" + ] + }, + { + "cell_type": "markdown", + "id": "aa32d7e8-6ec4-4aa2-a18f-f41de7c7129d", + "metadata": {}, + "source": [ + "

Getting Data for This Demo

\n", + "

We have provided data for this demo on cloud storage. You can either run the demo using foreign tables to access the data without any storage on your environment or download the data to local storage, which may yield faster execution. Still, there could be considerations of available storage. Two statements are in the following cell, and one of them is commented out. You may switch between the modes by changing the comment string.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "915cb853-0b0c-4bb4-b63a-70346297a679", + "metadata": {}, + "outputs": [], + "source": [ + "call get_data('DEMO_HealthcareFWA_local'); -- Takes approx 7minutes\n", + "-- call get_data('DEMO_HealthcareFWA_cloud'); -- Takes 10 seconds" + ] + }, + { + "cell_type": "markdown", + "id": "270d36cb-23d1-4bd3-867b-72353ae9a68e", + "metadata": {}, + "source": [ + "

Optional step – if you want to see status of databases/tables created and space used.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2017234-a70b-40aa-b987-d7ddf296ec2c", + "metadata": {}, + "outputs": [], + "source": [ + "call space_report(); -- Takes 5 seconds" + ] + }, + { + "cell_type": "markdown", + "id": "0d715b97-a5d9-418c-9380-cfe3f63edf34", + "metadata": {}, + "source": [ + "
\n", + "2. Reporting tables for Musculoskeletal Conditions\n", + "

Here we are creating reporting tables needed for the musculoskeletal condtion reporting. As the first step we are creating and intermediate view which will hold the patient ids and will work as a driver table in the subsequent steps.In this view we have converted all the procedure codes to its corresponding procedure descriptions.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e01f2fa3-6b7e-492a-a758-2abe29a558ff", + "metadata": {}, + "outputs": [], + "source": [ + "REPLACE VIEW DEMO_USER.WC_BK_V_NPATH_QRY AS (\n", + "SELECT\n", + " patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code,\n", + " Total_Amount_Paid_Per_Line,\n", + " Service_Line_From_Date_ Service_Line_From_Date,\n", + " first_musc_diag,\n", + " Employee_Mailing_City,\n", + " CASE \n", + " WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9894[0-4]','c') = 1 \n", + " THEN 'CMT'\n", + " WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9716[1-4]','c') = 1\n", + " THEN 'PT'\n", + " WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9716[5-8]','c') = 1\n", + " THEN 'OT'\n", + " WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'970((1[0-9])|(2[0-8]))','c') = 1\n", + " THEN 'SM'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('63047', '63048', '63030', '63035',\n", + " '22612', '22633', '22558', '22551',\n", + " '64635', '64636', '63045') THEN 'SRG'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('70551','70553','70544','70547',\n", + " '70549','70540','70543','70540',\n", + " '70543','70336') THEN 'BCK_NCK_MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('72141','72156','72146','72157',\n", + " '72148','72158') THEN 'SPINE_MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('77059','77021') THEN 'BREAST_MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('73221','73223','73721','73723') THEN 'JOINTS_MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('73718','73720','73218','73220') THEN 'EXTR_MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('74181','74183','74185') THEN 'ABD_MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('72195','72197','72195',\n", + " '72197','72195','72197') THEN 'PLVS_MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('72125','72126','72131',\n", + " '72132''72128','72129') THEN 'CT_SCAN'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('72040','72050','72220',\n", + " '72100','72110','72114',\n", + " '72200','72202','72052',\n", + " '72082','72070') THEN 'XRAY'\n", + " ELSE 'OTHER' END as Description\n", + " ,Billing_Provider_Last_Name_Or_Group,Billing_Provider_Fein\n", + " \n", + " FROM(\n", + "\n", + "SELECT\n", + " (Claim_Administrator_Claim_Number || '_' ||Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, Total_Amount_Paid_Per_Line, \n", + " CAST(Service_Line_From_Date AS DATE FORMAT 'YYYYMMDD') Service_Line_From_Date_,\n", + " Employee_Mailing_City,\n", + " min(Service_Line_From_Date_) OVER (PARTITION BY patient_identifier) first_musc_diag\n", + " ,Billing_Provider_Last_Name_Or_Group,Billing_Provider_Fein\n", + " FROM DEMO_HealthcareFWA.WC_SV1_MSK\n", + "UNION ALL\n", + "SELECT \n", + " (Claim_Administrator_Claim_Number || Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Total_Amount_Paid_Per_Line as FLOAT), \n", + " CAST(Service_Line_From_Date AS DATE FORMAT 'YYYYMMDD') Service_Line_From_Date_,\n", + " Employee_Mailing_City,\n", + " min(Service_Line_From_Date_) OVER (PARTITION BY patient_identifier) first_musc_diag\n", + " ,Billing_Provider_Last_Name_Or_Group,Billing_Provider_Fein\n", + " FROM DEMO_HealthcareFWA.WC_SV2_MSK\n", + ")\n", + " d\n", + " WHERE Description not like 'OTHER'\n", + ")\n", + ";" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f87956cc-a54a-4b6c-b5d2-2cef7a2f106e", + "metadata": {}, + "outputs": [], + "source": [ + "select top 10 * from WC_BK_V_NPATH_QRY;" + ] + }, + { + "cell_type": "markdown", + "id": "9e471f56-a188-4315-815a-1faa03dae690", + "metadata": {}, + "source": [ + "

Here we are calculating the data for the surgical pathways i.e where the last procedure is Surgery (SRG) augmenting it with the cost of each individual procedure and the overall cost. We will use Vantage's NPath function for this. As we have data available for the TX county only we have added that in filter clause.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b67d4ca-a97e-4e9b-8676-277f3798daeb", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.surg_pathways\n", + "AS (\n", + "SELECT\n", + " TRIM (BOTH FROM REGEXP_REPLACE(p.patient_identifier, '[\\[\\]]', '', 1, 0, 'c')) as trimmed_claim,\n", + " REGEXP_REPLACE(path, '[\\[\\]\\s]+', '', 1, 0, 'c') AS path,\n", + " first_musc_diag,\n", + " last_date,\n", + " REGEXP_REPLACE(dates, '[\\[\\]\\s]+', '', 1, 0, 'c') AS dates,\n", + " REGEXP_REPLACE(cost, '[\\[\\]\\s]+', '', 1, 0, 'c') AS cost,\n", + " length,\n", + " REGEXP_REPLACE(prov_group, '[\\[\\]]+', '', 1, 0, 'c') as prov_group,\n", + " REGEXP_REPLACE(provider, '[\\[\\]\\s]+', '', 1, 0, 'c') as provider,\n", + " county,\n", + " total_cost\n", + "FROM nPath (\n", + " ON (\n", + " SELECT\n", + " patient_identifier, Description, Service_Line_From_Date, first_musc_diag,\n", + " CAST(AVG(Total_amount_paid_Per_Line) as decimal(10,2)) as Total_Charge_Per_Line\n", + " ,Billing_Provider_Last_Name_or_Group, Billing_Provider_FEIN\n", + " FROM DEMO_user.WC_BK_V_NPATH_QRY\n", + " GROUP BY patient_identifier, Description, first_musc_diag, Service_Line_From_Date,\n", + " Billing_Provider_Last_Name_or_Group, Billing_Provider_FEIN)\n", + " PARTITION BY patient_identifier\n", + " ORDER BY Service_Line_From_Date\n", + " USING\n", + " Mode (nonoverlapping)\n", + " Pattern ('^N_SRG+.SRG') \n", + " Symbols (\n", + " Description not like 'SRG' as N_SRG,\n", + " Description like 'SRG' as SRG\n", + " )\n", + " Result (\n", + "\n", + " FIRST (patient_identifier OF ANY( SRG, N_SRG)) AS patient_identifier,\n", + " ACCUMULATE (CAST (Description AS CHAR(40)) OF ANY( SRG, N_SRG)) AS path,\n", + " LAST(Service_Line_From_Date of any(SRG, N_SRG)) as last_date,\n", + " FIRST(first_musc_diag of any(SRG, N_SRG)) as first_musc_diag,\n", + " ACCUMULATE (Service_Line_From_Date of any(SRG, N_SRG)) AS dates,\n", + " ACCUMULATE(Total_Charge_Per_Line of ANY( SRG, N_SRG)) as cost,\n", + " COUNT(* of ANY( SRG, N_SRG)) as length,\n", + " ACCUMULATE(Billing_Provider_Last_Name_or_Group of ANY(SRG, N_SRG)) as prov_group,\n", + " ACCUMULATE(Billing_Provider_FEIN of ANY(SRG, N_SRG)) as provider\n", + " )\n", + ") p\n", + "LEFT JOIN (\n", + " select \n", + " MIN(COUNTY) as county,\n", + " MIN(STATE_CODE) as state_code,\n", + " SUM(Total_Charge_Per_Line) as total_cost,\n", + " (Claim_Administrator_Claim_Number ||'_'|| Insurer_FEIN) as patient_identifier\n", + " from DEMO_HealthcareFWA.WC_SV1_MSK\n", + " inner join DEMO_HealthcareFWA.wc_us_cities\n", + " on lower(Employee_Mailing_City) = lower(CITY)\n", + " where Employee_Mailing_City is not null and STATE_CODE = 'TX'\n", + " group by patient_identifier\n", + ") d\n", + "ON trimmed_claim = d.patient_identifier\n", + ")WITH DATA ;" + ] + }, + { + "cell_type": "markdown", + "id": "1c18d3c3-642c-4b4e-98f3-5ca7298bfcb5", + "metadata": {}, + "source": [ + "

Next we are calculating the data for all musculoskeletal procedures whcih are not ending with a surgery. Similar to above we are augmenting it with the cost of each individual procedure and the overall cost.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0ee6bf7a-3d57-48c1-996e-e0691f7ff88b", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.nsurg_pathways as (\n", + "SELECT \n", + " a.*,\n", + " COUNTY,\n", + " STATE_CODE\n", + "FROM\n", + "(\n", + " SELECT \n", + " TRIM (BOTH FROM REGEXP_REPLACE(p.patient_identifier, '[\\[\\]]', '', 1, 0, 'c')) as trimmed_claim,\n", + " REGEXP_REPLACE(path, '[\\[\\]\\s]+', '', 1, 0, 'c')||',NSRG' AS path,\n", + " first_musc_diag, \n", + " last_date,\n", + " REGEXP_REPLACE(dates, '[\\[\\]\\s]+', '', 1, 0, 'c')||','||last_date AS dates,\n", + " REGEXP_REPLACE(cost, '[\\[\\]\\s]+', '', 1, 0, 'c')||',0.0' AS cost, \n", + " length\n", + " FROM nPath (\n", + " ON (\n", + " SELECT\n", + " patient_identifier, Description, Service_Line_From_Date, first_musc_diag,\n", + " CAST(AVG(Total_amount_paid_Per_Line) as decimal(10,2)) as Total_Charge_Per_Line\n", + " FROM DEMO_USER.WC_BK_V_NPATH_QRY\n", + " GROUP BY patient_identifier, Description, first_musc_diag, Service_Line_From_Date)\n", + " PARTITION BY patient_identifier\n", + " ORDER BY Service_Line_From_Date\n", + " USING\n", + " Mode (nonoverlapping)\n", + " Pattern ('^N_SRG+.N_SRG$') \n", + " Symbols (\n", + " Description not like 'SRG' as N_SRG\n", + " )\n", + " Result (\n", + " FIRST (patient_identifier OF ANY( N_SRG)) AS patient_identifier,\n", + " ACCUMULATE (CAST (Description AS CHAR(40)) OF ANY( N_SRG)) AS path,\n", + " LAST(Service_Line_From_Date of any(N_SRG)) as last_date,\n", + " FIRST(first_musc_diag of any(N_SRG)) as first_musc_diag, \n", + " ACCUMULATE (Service_Line_From_Date of any(N_SRG)) AS dates,\n", + " ACCUMULATE(Total_Charge_Per_Line of ANY(N_SRG)) as cost,\n", + " COUNT(* of ANY( N_SRG)) as length\n", + " )\n", + ") p\n", + ") a\n", + "LEFT JOIN (\n", + " select MIN(COUNTY) as COUNTY, MIN(STATE_CODE) as STATE_CODE, \n", + " (Claim_Administrator_Claim_Number ||'_'|| Insurer_FEIN) as patient_identifier\n", + " from DEMO_HealthcareFWA.WC_SV1HEADER\n", + " inner join DEMO_HealthcareFWA.wc_us_cities\n", + " on lower(Employee_Mailing_City) = lower(CITY)\n", + " where Employee_Mailing_City is not null and STATE_CODE = 'TX'\n", + " group by patient_identifier\n", + ") d\n", + "ON trimmed_claim = d.patient_identifier\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "71c7b60b-5dbb-49d9-beef-83b2389d4531", + "metadata": {}, + "source": [ + "

In the table below, we are getting all the providers for the MSK procedures using the billing information.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87d11f46-bbce-4366-8a88-f5456e7c01d0", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.msk_pathwys_prov as (\n", + "SELECT\n", + " Billing_Provider_FEIN,\n", + " SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code in ('70551','70553','70544','70547','70549',\n", + " '70540','70543','70540','70543','70336',\n", + " '72141','72156','72146','72157','72148',\n", + " '72158','77059','77021','73221','73223',\n", + " '73721','73723','73718','73720','73218',\n", + " '73220','74181','74183','74185','72195',\n", + " '72197','72195','72197','72195','72197') \n", + " THEN 1 ELSE 0 END) as \"MRI Count\",\n", + " CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as \"Total Cost\"\n", + "FROM (\n", + " select \n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line, Billing_Provider_FEIN,\n", + " HCPCS_Line_Procedure_Billed_Code\n", + " from DEMO_HealthcareFWA.WC_SV1_MSK\n", + "UNION ALL\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line, Billing_Provider_FEIN,\n", + " HCPCS_Line_Procedure_Billed_Code\n", + " from DEMO_HealthcareFWA.WC_SV2_MSK\n", + ") d\n", + "GROUP BY Billing_Provider_FEIN\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "c86a1f83-08ac-4420-862d-a53a865d29f5", + "metadata": {}, + "source": [ + "

In the table below, we are claculating the average surgery costs.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "85ba0f45-5f81-44e6-a131-ff646245e802", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.srg_averages as (\n", + "SELECT\n", + " avg(first_surg - first_musc_diag) as avg_days_srg, \n", + " avg(cost) as avg_cost, \n", + " count(patient_identifier) as volume\n", + "FROM (\n", + " SELECT\n", + " MIN(CASE WHEN \n", + " HCPCS_Line_Procedure_Billed_Code in ('63047','63048','63030','63035','22612','22633',\n", + " '22558','22551','64635','64636','63045')\n", + " THEN Service_Line_From_Date END) as first_surg,\n", + " MIN(CASE WHEN \n", + " HCPCS_Line_Procedure_Billed_Code in ('70551','70553','70544','70547','70549','70540','70543','70540',\n", + " '70543','70336','72141','72156','72146','72157','72148','72158',\n", + " '77059','77021','73221','73223','73721','73723','73718','73720',\n", + " '73218','73220','74181','74183','74185','72195','72197','72195',\n", + " '72197','72195','72197')\n", + " THEN Service_Line_From_Date END) as first_mri,\n", + " MIN(Service_Line_From_Date) as first_musc_diag,\n", + " MIN(CASE WHEN \n", + " HCPCS_Line_Procedure_Billed_Code in ('70551','70553','70544','70547','70549','70540','70543','70540',\n", + " '70543','70336','72141','72156','72146','72157','72148','72158',\n", + " '77059','77021','73221','73223','73721','73723','73718','73720',\n", + " '73218','73220','74181','74183','74185','72195','72197','72195',\n", + " '72197','72195','72197')\n", + " THEN 1 ELSE 0 END) as mri_count,\n", + " CASE \n", + " WHEN (first_mri <= first_musc_diag + (7*6)) THEN 'Non EBM'\n", + " ELSE 'EBM'\n", + " END as label,\n", + " SUM(Total_Charge_Per_Line) as cost,\n", + " patient_identifier\n", + " FROM\n", + " (\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, Service_Line_From_Date\n", + " from DEMO_HealthcareFWA.WC_SV1_MSK\n", + "\n", + " UNION ALL\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Service_Line_From_Date as DATE FORMAT 'YYYYMMDD')\n", + " from DEMO_HealthcareFWA.WC_SV2_MSK\n", + " ) d\n", + " GROUP BY patient_identifier\n", + ") d\n", + "WHERE first_surg is not null\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "8dba37dd-2eb3-4f5d-a7f3-1a94f1dc4899", + "metadata": {}, + "source": [ + "

In the table below, we are calculating average mri's performed on patients.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eab2e50f-4630-4482-a7e8-440a631e4d64", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.srg_mri as (\n", + "SELECT label, AVG(mri_count) avg_mri_count\n", + "FROM (\n", + " SELECT\n", + " MIN(CASE WHEN \n", + " HCPCS_Line_Procedure_Billed_Code in ('63047','63048','63030','63035','22612','22633',\n", + " '22558','22551','64635','64636','63045')\n", + " THEN Service_Line_From_Date END) as first_surg,\n", + " MIN(CASE WHEN \n", + " HCPCS_Line_Procedure_Billed_Code in ('70551','70553','70544','70547','70549','70540','70543','70540',\n", + " '70543','70336','72141','72156','72146','72157','72148','72158',\n", + " '77059','77021','73221','73223','73721','73723','73718','73720',\n", + " '73218','73220','74181','74183','74185','72195','72197','72195',\n", + " '72197','72195','72197')\n", + " THEN Service_Line_From_Date END) as first_mri,\n", + " MIN(Service_Line_From_Date) as first_musc_diag,\n", + " SUM(CASE WHEN \n", + " HCPCS_Line_Procedure_Billed_Code in ('70551','70553','70544','70547','70549','70540','70543','70540',\n", + " '70543','70336','72141','72156','72146','72157','72148','72158',\n", + " '77059','77021','73221','73223','73721','73723','73718','73720',\n", + " '73218','73220','74181','74183','74185','72195','72197','72195',\n", + " '72197','72195','72197')\n", + " THEN 1 ELSE 0 END) as mri_count,\n", + " CASE \n", + " WHEN (first_mri <= first_musc_diag + (7*6)) THEN 'Non EBM'\n", + " ELSE 'EBM'\n", + " END as label,\n", + " SUM(Total_Charge_Per_Line) as cost,\n", + " patient_identifier\n", + " FROM\n", + " (\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, Service_Line_From_Date\n", + " from DEMO_HealthcareFWA.WC_SV1_MSK\n", + "\n", + " UNION ALL\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Service_Line_From_Date as DATE FORMAT 'YYYYMMDD')\n", + " from DEMO_HealthcareFWA.WC_SV2_MSK\n", + " ) d\n", + " GROUP BY patient_identifier\n", + ") d\n", + "WHERE first_surg is not null\n", + "GROUP BY label\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "30a13721-52d8-4fb3-980b-5d2e7fe352eb", + "metadata": {}, + "source": [ + "

In the table below, we are getting cost of all the procedures in the musculoskeletal condition.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09a2d81b-66ed-4e4c-94f5-edeaa96f6796", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.msk_comorb_conds as (\n", + "SELECT *\n", + "FROM(\n", + " select\n", + " COALESCE(DESCRIPTION,CAST(Comorb_Code AS CHAR(3))) condition,\n", + " count(Bill_ID) volume,\n", + " sum(Total_Charge_Per_Line) cost\n", + " from (\n", + " sel Bill_ID, Comorb_Code, Total_Charge_Per_Line from\n", + " (\n", + " SELECT\n", + " main.Bill_ID,\n", + " main.First_ICD9_CM_Diagnosis_Code, main.Second_ICD9_CM_Diagnosis_Code,\n", + " main.Third_ICD9_CM_Diagnosis_Code, main.Fourth_ICD9_CM_Diagnosis_Code, \n", + " main.Fifth_ICD9_CM_Diagnosis_Code, Total_Charge_Per_Line\n", + " from DEMO_HealthcareFWA.WC_SV1HEADER main\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV1DETAIL det\n", + " ON main.Bill_ID = det.Bill_ID\n", + " WHERE ((main.First_ICD9_CM_Diagnosis_Code like 'M__%') OR (main.Second_ICD9_CM_Diagnosis_Code like 'M__%')\n", + " OR (main.Third_ICD9_CM_Diagnosis_Code like 'M__%') OR (main.Fourth_ICD9_CM_Diagnosis_Code like 'M__%')\n", + " OR (main.Fifth_ICD9_CM_Diagnosis_Code like 'M__%'))\n", + " ) a\n", + " UNPIVOT EXCLUDE NULLS\n", + " (\n", + " Comorb_Code FOR Diag_level IN\n", + " (First_ICD9_CM_Diagnosis_Code, Second_ICD9_CM_Diagnosis_Code,\n", + " Third_ICD9_CM_Diagnosis_Code, Fourth_ICD9_CM_Diagnosis_Code,\n", + " Fifth_ICD9_CM_Diagnosis_Code)\n", + " ) Tmp\n", + " where \n", + " (Comorb_Code not like 'M__%') AND (Comorb_Code not like 'S__%') AND\n", + " (Comorb_Code not like 'R26%') AND (Comorb_Code not like 'G56%') AND\n", + " (Comorb_Code not like 'Z47%') AND (Comorb_Code not like 'T84%') AND\n", + " (Comorb_Code not like 'G82%') AND (Comorb_Code not like 'Y99%') AND\n", + " (Comorb_Code not like 'T85%') AND (Comorb_Code not like 'Z96%') AND\n", + " (Comorb_Code not like 'R60%') AND (Comorb_Code not like 'R29%') AND\n", + " (Comorb_Code not like 'T14%') AND (Comorb_Code not like 'G57%') AND\n", + " (Comorb_Code not like 'W01%') AND (Comorb_Code not like 'Y92%') AND\n", + " (Comorb_Code not like 'W19%') AND (Comorb_Code not like 'X50%') AND\n", + " (Comorb_Code not like 'G89%') AND (Comorb_Code not like 'Z79%') AND\n", + " (Comorb_Code not like 'Z98%') AND (Comorb_Code not like 'Z48%') AND\n", + " (Comorb_Code not like 'Z01%') AND (Comorb_Code not like 'Z51%') AND\n", + " (Comorb_Code not like 'Z68%')\n", + ") A\n", + "LEFT JOIN DEMO_HealthcareFWA.WC_MSK_DIAG_DESC\n", + "ON CAST(Comorb_Code AS CHAR(3)) = ICD_10_CODE\n", + "group by Condition\n", + ") d\n", + "QUALIFY RANK() OVER (ORDER BY cost DESC) <= 10 OR\n", + " RANK() OVER (ORDER BY volume DESC) <= 10\n", + " ) WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "71984609-4ca4-4298-b48e-4c2fddc47941", + "metadata": {}, + "source": [ + "

In the table below, we are getting cost per percedure group for all the procedures in the musculoskeletal condition.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11c11b71-72aa-40ff-829c-e472194035bb", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.msk_proc_groups as (\n", + "SELECT \"group\", cost\n", + "FROM(\n", + " SELECT\n", + " SUM(CASE WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9894[0-4]','c') = 1 \n", + " THEN Total_Charge_Per_Line ELSE 0 END) as \"Chiropractic Treatment\",\n", + " SUM(CASE WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9716[1-4]','c') = 1 \n", + " THEN Total_Charge_Per_Line ELSE 0 END) as \"Physical Therapy\",\n", + " SUM(CASE WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9716[5-8]','c') = 1 \n", + " THEN Total_Charge_Per_Line ELSE 0 END) as \"Occupational Therapy\",\n", + " SUM(CASE WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'970((1[0-9])|(2[0-8]))','c') = 1 \n", + " THEN Total_Charge_Per_Line ELSE 0 END) as \"Supervised Modalities\",\n", + " SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code in ('63047','63048','63030','63035','22612',\n", + " '22633','22558','22551','64635','64636',\n", + " '63045') \n", + " THEN Total_Charge_Per_Line ELSE 0 END) as \"Spinal Surgery\",\n", + " SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code in ('70551','70553','70544','70547','70549',\n", + " '70540','70543','70540','70543','70336',\n", + " '72141','72156','72146','72157','72148',\n", + " '72158','77059','77021','73221','73223',\n", + " '73721','73723','73718','73720','73218',\n", + " '73220','74181','74183','74185','72195',\n", + " '72197','72195','72197','72195','72197') \n", + " THEN Total_Charge_Per_Line ELSE 0 END) as MRI,\n", + " SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code in ('72125','72126','72131','72132','72128','72129') \n", + " THEN Total_Charge_Per_Line ELSE 0 END) as \"CT Scan\",\n", + " SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code in ('72040','72050','72220','72100','72110','72114',\n", + " '72200','72202','72052','72082','72070')\n", + " THEN Total_Charge_Per_Line ELSE 0 END) as \"X-ray\"\n", + " FROM(\n", + " SELECT \n", + " (Claim_Administrator_Claim_Number || Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, Total_Charge_Per_Line, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " FROM DEMO_HealthcareFWA.WC_SV1_MSK\n", + "\n", + " UNION ALL\n", + "\n", + " SELECT \n", + " (Claim_Administrator_Claim_Number || Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Total_Charge_Per_Line as FLOAT), CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " FROM DEMO_HealthcareFWA.WC_SV2_MSK\n", + " ) d\n", + ") d\n", + "UNPIVOT EXCLUDE NULLS (cost FOR \"group\" in (\"Chiropractic Treatment\", \"Physical Therapy\", \"Occupational Therapy\",\n", + " \"Supervised Modalities\", \"Spinal Surgery\", \"MRI\", \"CT Scan\", \"X-ray\")) tmp\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "946acd78-e136-4c7d-b637-f3654f662d1a", + "metadata": {}, + "source": [ + "

In the table below, we are calculating the cost procedure in the musculoskeletal condition.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4aa33d1c-3a5b-44fb-970b-05f8b255b65b", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.msk_procedures as (\n", + "SELECT\n", + " CAST(Description AS VARCHAR(45)) as \"procedure\", total_cost\n", + "FROM (\n", + " select \n", + " COALESCE(\"Sub_Category\",\"SHORT DESCRIPTION\") as Description, \n", + " CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as total_cost\n", + " FROM (\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV1_MSK\n", + " WHERE HCPCS_Line_Procedure_Billed_Code is not NULL\n", + "\n", + " UNION ALL\n", + "\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV2_MSK\n", + " WHERE HCPCS_Line_Procedure_Billed_Code is not NULL\n", + " ) d\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_CPT_Coding_temp\n", + " ON\n", + " (HCPCS_Line_Procedure_Billed_Code BETWEEN \"FROM\" AND COALESCE(\"TO\",\"FROM\")) AND\n", + " (LENGTH(HCPCS_Line_Procedure_Billed_Code) = LENGTH(\"FROM\"))\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_HCPCS_Coding\n", + " ON HCPCS_Line_Procedure_Billed_Code = HCPC\n", + " GROUP BY Description\n", + ") d\n", + "QUALIFY RANK() OVER (ORDER BY TOTAL_COST DESC) <= 10\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "a3aec056-a514-42fd-be9b-6abfd85e29a3", + "metadata": {}, + "source": [ + "

In the table below, we list the providers of the musculoskeletal conditions.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "edab78d0-fb50-46c2-a435-0c4c682e9ba2", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.msk_providers as (\n", + "SELECT \n", + " d.Billing_Provider_FEIN,\n", + " facility_name, Billing_Provider_First_Name, Billing_Provider_Last_Name_or_Group, cost\n", + "FROM\n", + "(\n", + " SELECT Billing_Provider_FEIN, CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as cost\n", + " FROM (\n", + " select \n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line, Billing_Provider_FEIN,\n", + " CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV1_MSK\n", + "\n", + " UNION ALL\n", + "\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line, Billing_Provider_FEIN,\n", + " CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV2_MSK\n", + " ) d\n", + " GROUP BY Billing_Provider_FEIN\n", + ") d\n", + "LEFT JOIN DEMO_HealthcareFWA.WC_PROVIDER_LOOKUP lu\n", + "ON lu.Billing_Provider_FEIN = d.Billing_Provider_FEIN\n", + "QUALIFY RANK() OVER (ORDER BY COST DESC) <= 20\n", + ") WITH DATA; " + ] + }, + { + "cell_type": "markdown", + "id": "b1932b0a-faf6-47ac-85e8-b878b5b15bd1", + "metadata": {}, + "source": [ + "

In the table below, we are calculating total, average, min and max cost and volume of patients having musculoskeletal conditions.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "866ad4ad-99f5-44a0-8123-dc71b87c727d", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.msk_drilldown_proc_groups as (\n", + "SELECT\n", + " PRC_GRP as \"Procedure Group\", \n", + " CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as \"Total Cost\",\n", + " SUM(CASE WHEN Total_Charge_Per_Line is NULL THEN 0 ELSE 1 END) as Volume,\n", + " CAST(AVG(Total_Charge_Per_Line) AS DECIMAL(20,2)) as \"Average Cost\",\n", + " CAST(MIN(Total_Charge_Per_Line) AS DECIMAL(20,2)) as \"Min Cost\",\n", + " CAST(MAX(Total_Charge_Per_Line) AS DECIMAL(20,2)) as \"Max Cost\",\n", + " COUNT(DISTINCT CASE WHEN Total_Charge_Per_Line is NULL THEN NULL ELSE patient_identifier END) as \"No. of Patients\"\n", + "FROM DEMO_HealthcareFWA.WC_MSK_PRC_GRP_FILTERED_BILLS\n", + "GROUP BY \"Procedure Group\"\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "94c9ffa5-f6c8-47a4-9314-71328d343b63", + "metadata": {}, + "source": [ + "

In the table below, we are calculating average cost of procedure per county based on the city provided in the billing information.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2aae2885-6aee-4d12-8ca5-a2c61a11725d", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.msk_drilldown_proc_grp_counties as (\n", + "SELECT\n", + " prc_grp as prc_grp,\n", + " county as county, \n", + " AVG(Total_Charge_Per_Line) as avg_costs\n", + "FROM(\n", + " select county, STATE_CODE, HCPCS_Line_Procedure_Billed_Code, Total_Charge_Per_Line\n", + " from DEMO_HealthcareFWA.WC_SV1HEADER hd\n", + " inner join DEMO_HealthcareFWA.WC_SV1DETAIL dt on hd.Bill_ID = dt.Bill_ID\n", + " inner join DEMO_HealthcareFWA.wc_us_cities\n", + " on lower(hd.Billing_Provider_City) = lower(CITY)\n", + " where \n", + " STATE_CODE = 'TX'\n", + " AND (hd.Date_of_Bill between 20170000 and 20210000)\n", + " AND ((hd.First_ICD9_CM_Diagnosis_Code like 'M__%') OR (hd.Second_ICD9_CM_Diagnosis_Code like 'M__%')\n", + " OR (hd.Third_ICD9_CM_Diagnosis_Code like 'M__%') OR (hd.Fourth_ICD9_CM_Diagnosis_Code like 'M__%'))\n", + ") d\n", + "INNER JOIN (\n", + " SELECT \n", + " MIN(Total_Charge_Per_Line) as min_cost,\n", + " MAX(Total_Charge_Per_Line) as max_cost,\n", + " hcpcs_line_procedure_billed_code\n", + " FROM DEMO_HealthcareFWA.WC_MSK_PRC_GRP_FILTERED_BILLS\n", + " GROUP BY hcpcs_line_procedure_billed_code\n", + ") b\n", + "ON \n", + " d.HCPCS_Line_Procedure_Billed_Code = b.HCPCS_Line_Procedure_Billed_Code\n", + " AND (d.Total_Charge_Per_Line > b.min_cost AND \n", + " d.Total_Charge_Per_Line < b.max_cost)\n", + "INNER JOIN DEMO_HealthcareFWA.WC_MSK_PRC_GRP\n", + "ON REGEXP_SIMILAR(d.HCPCS_Line_Procedure_Billed_Code,CPT_HCPC_CODE) = 1\n", + "GROUP BY county,prc_grp\n", + "HAVING AVG_COSTS is NOT NULL\n", + " ) WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "f049eb1f-73dc-43b9-80ae-8cc18e82388b", + "metadata": {}, + "source": [ + "

In the table below, we are calculating total cost and volume of patients having musculoskeletal conditions grouped by procedure and procedure group.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6f7791e6-a82f-4174-9290-8413af260833", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.msk_drilldown_proc_grp_procedures as (\n", + "SELECT\n", + " prc_grp, proc, cost, volume\n", + "FROM (\n", + " select\n", + " prc_grp,\n", + " COALESCE(Description,HCPCS_Line_Procedure_Billed_Code) as proc,\n", + " CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as cost,\n", + " SUM(CASE WHEN Total_Charge_Per_Line is NULL THEN 0 ELSE 1 END) as volume\n", + " FROM DEMO_HealthcareFWA.WC_MSK_PRC_GRP_FILTERED_BILLS d\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_MSK_PRC_DESC\n", + " ON HCPCS_Line_Procedure_Billed_Code = CAST(CPT AS VARCHAR(20))\n", + " GROUP BY prc_grp, proc\n", + ") d\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "dbaa541a-cef7-4dc7-bc07-a50dc3e6b98a", + "metadata": {}, + "source": [ + "

Table below gives provider details.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1383ef76-a999-4789-9ba3-f00694d7057d", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.msk_drilldown_proc_grp_provs as (\n", + "SELECT \n", + " PRC_GRP, COUNTY, Billing_Provider_FEIN, Billing_Provider_Last_Name_or_Group,\n", + " AVG(Total_Charge_Per_Line) \"Average Cost\",\n", + " COUNT(d.HCPCS_Line_Procedure_Billed_Code) volume\n", + "FROM(\n", + " select COUNTY, STATE_CODE, HCPCS_Line_Procedure_Billed_Code, Total_Charge_Per_Line, Billing_Provider_FEIN, Billing_Provider_Last_Name_or_Group\n", + " from DEMO_HealthcareFWA.WC_SV1HEADER hd\n", + " inner join DEMO_HealthcareFWA.WC_SV1DETAIL dt on hd.Bill_ID = dt.Bill_ID\n", + " inner join DEMO_HealthcareFWA.wc_us_cities\n", + " on lower(hd.Billing_Provider_City) = lower(CITY)\n", + " where \n", + " STATE_CODE = 'TX'\n", + " AND (hd.Date_of_Bill between 20170000 and 20210000)\n", + " AND ((hd.First_ICD9_CM_Diagnosis_Code like 'M__%') OR (hd.Second_ICD9_CM_Diagnosis_Code like 'M__%')\n", + " OR (hd.Third_ICD9_CM_Diagnosis_Code like 'M__%') OR (hd.Fourth_ICD9_CM_Diagnosis_Code like 'M__%'))\n", + ") d\n", + "INNER JOIN (\n", + " SELECT \n", + " MIN(Total_Charge_Per_Line) as min_cost,\n", + " MAX(Total_Charge_Per_Line) as max_cost,\n", + " hcpcs_line_procedure_billed_code\n", + " FROM DEMO_HealthcareFWA.WC_MSK_PRC_GRP_FILTERED_BILLS\n", + " GROUP BY hcpcs_line_procedure_billed_code\n", + ") b\n", + "ON \n", + "d.HCPCS_Line_Procedure_Billed_Code = b.HCPCS_Line_Procedure_Billed_Code\n", + "AND (d.Total_Charge_Per_Line > b.min_cost AND \n", + " d.Total_Charge_Per_Line < b.max_cost)\n", + "INNER JOIN DEMO_HealthcareFWA.WC_MSK_PRC_GRP\n", + "ON REGEXP_SIMILAR(d.HCPCS_Line_Procedure_Billed_Code,CPT_HCPC_CODE) = 1\n", + "GROUP BY PRC_GRP, COUNTY, Billing_Provider_FEIN, Billing_Provider_Last_Name_or_Group\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "e95d369f-0b24-49ea-b479-dcda893f1719", + "metadata": {}, + "source": [ + "
\n", + "4. Reporting tables for Diabetic Conditions\n", + "

Here we are creating reporting tables needed for the diabetic condition reporting. First we are creating some driving views which will limit our patient count. We are taking patients which have 90days duration between start and end of encounter.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "58ae1964-3749-4d01-bf0b-aacfa843d781", + "metadata": {}, + "outputs": [], + "source": [ + "Replace VIEW DEMO_USER.va_bk_v_PAT_ENC_LT_90D AS \n", + "SELECT \n", + " a.PATIENT,\n", + " a.ID ENCOUNTER,\n", + " ENCOUNTERCLASS,\n", + " CODE ENC_CD,\n", + " DESCRIPTION ENC_DESC,\n", + " CAST(SUBSTR(\"START\",0,11) AS DATE FORMAT 'YYYY-MM-DD') STRT_ENC,\n", + " CAST(SUBSTR(\"STOP\",0,11) AS DATE FORMAT 'YYYY-MM-DD') STOP_ENC,\n", + " (STOP_ENC-STRT_ENC) LOS_ENC,\n", + " PROVIDER,\n", + " ORGANIZATION\n", + "from DEMO_HealthcareFWA.va_encounters a \n", + "inner join DEMO_HealthcareFWA.va_bk_diab_pat_cnt b\n", + "on a.PATIENT = b.PATIENT\n", + "WHERE LOS_ENC<90\n", + ";" + ] + }, + { + "cell_type": "markdown", + "id": "36281cd4-46a8-423e-9672-fbd6386a0bc6", + "metadata": {}, + "source": [ + "

Next we are calculating the glycated hemoglobin (A1c) values for the patients.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "be6ca3a5-efec-42d8-a4a7-3875a4d03efb", + "metadata": {}, + "outputs": [], + "source": [ + "replace view demo_user.va_bk_v_a1c_enc as\n", + "sel b.PATIENT, ENCOUNTER, AVE(\"VALUE\") a1c\n", + "from DEMO_HealthcareFWA.va_observations a \n", + "inner join DEMO_HealthcareFWA.va_bk_diab_pat b \n", + "on a.PATIENT=b.PATIENT where code ='4548-4'\n", + "group by 1,2;" + ] + }, + { + "cell_type": "markdown", + "id": "e21c574f-bba5-4cfd-9195-872a04dfa214", + "metadata": {}, + "source": [ + "

Below is the driving view which holds the codes for diabetic procedures

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "853f020c-3e8a-4b9e-9941-94a5b4b0bf20", + "metadata": {}, + "outputs": [], + "source": [ + "REPLACE VIEW demo_user.va_bk_v_diabetes_codes AS \n", + "select distinct code, description, CAST (TRIM(mp.mapTarget) as VARCHAR(15)) Target\n", + " from (\n", + " Select distinct code, description from DEMO_HealthcareFWA.va_conditions\n", + " ) conds\n", + " inner join DEMO_HealthcareFWA.SNOMED_ICD_Map mp\n", + " on conds.code = cast(mp.referencedComponentId as BIGINT)\n", + " where Target like ANY ('V18%', '775%', 'V77%', '648%', '250%', '249%', 'P70%', 'Z83%',\n", + " 'O24%', 'Z13%', 'E11%', 'E08%', 'E10%', 'E09%', 'E13%', 'R80%', 'G53%','H54%');\n" + ] + }, + { + "cell_type": "markdown", + "id": "5aac4cc3-eaf0-40ad-86f6-8d4bcc5911a3", + "metadata": {}, + "source": [ + "

Below view gives the start date for patient having first diabetic encounter.\n", + "

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4ebc152a-5d81-469d-9cd8-600ad592600a", + "metadata": {}, + "outputs": [], + "source": [ + "REPLACE VIEW demo_user.va_bk_diab_strt AS\n", + "sel a.PATIENT, MIN(\"START\") STRT_DIAB \n", + "from DEMO_HealthcareFWA.va_bk_diab_pat a \n", + "inner join DEMO_HealthcareFWA.va_conditions b on a. PATIENT=b.PATIENT\n", + "inner join demo_user.va_bk_v_diabetes_codes c on b.CODE=c.CODE group by 1" + ] + }, + { + "cell_type": "markdown", + "id": "150872f0-e578-4b32-a85d-d3e474793e1d", + "metadata": {}, + "source": [ + "

Below view gives the days and a1c count per year for the patient.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "51086513-3e41-49a1-a2bb-55095bb7201b", + "metadata": {}, + "outputs": [], + "source": [ + "Replace view demo_user.va_bk_v_a1c_per_yr as\n", + " sel PATIENT, a1c_per_yr from \n", + " (\n", + " sel \n", + " PATIENT, CAST(max_date-min_date as FLOAT) + 1.0 days,\n", + " days/365.0 years, Cast(cnt as FLOAT)/ CEILING(years) a1c_per_yr,\n", + " cnt\n", + " from (\n", + " sel \n", + " a.PATIENT,\n", + " min(STRT_ENC) min_date,\n", + " max(STRT_ENC) max_date,\n", + " count(a1c) cnt\n", + " from DEMO_USER.va_bk_v_PAT_ENC_LT_90D a \n", + " inner join DEMO_USER.va_bk_v_a1c_enc b \n", + " on a.PATIENT=b.PATIENT and a.ENCOUNTER=b.ENCOUNTER\n", + " group by 1\n", + " ) a\n", + " ) a" + ] + }, + { + "cell_type": "markdown", + "id": "c9dfc565-efbb-4ad0-8516-11c707c2444d", + "metadata": {}, + "source": [ + "

Below view holds the overall cost of each encounter the patient had along with its start and end dates.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8d8a8ec5-8d20-4c52-a7ba-b36402c0e93f", + "metadata": {}, + "outputs": [], + "source": [ + "REPLACE VIEW DEMO_USER.va_fr_v_ENC_COSTS AS (\n", + " SELECT patient, encounter_id, start_enc, stop_enc, SUM(cost) overall_cost\n", + " FROM(\n", + " SELECT \n", + " enc.patient as patient, ID as encounter_id,\n", + " CAST(SUBSTR(enc.\"START\",0,11) AS DATE FORMAT 'YYYY-MM-DD') start_enc,\n", + " CAST(SUBSTR(enc.STOP,0,11) AS DATE FORMAT 'YYYY-MM-DD') stop_enc, \n", + " CAST(total_claim_cost as decimal(18,2)) as enc_cost,\n", + " prc.base_cost as prc_cost,\n", + " imm.base_cost as imm_cost,\n", + " CAST(med.totalcost AS decimal(18,2))as med_cost,\n", + " enc_cost+prc_cost+imm_cost+med_cost as cost\n", + " FROM DEMO_HealthcareFWA.va_encounters enc\n", + " inner join DEMO_HealthcareFWA.va_bk_diab_pat_cnt b\n", + " on enc.PATIENT = b.PATIENT\n", + " LEFT JOIN DEMO_HealthcareFWA.va_procedures prc\n", + " ON enc.ID = prc.encounter\n", + " LEFT JOIN DEMO_HealthcareFWA.va_immunizations imm\n", + " ON enc.ID = imm.encounter\n", + " LEFT JOIN DEMO_HealthcareFWA.va_medications med\n", + " ON enc.ID = med.encounter\n", + " ) d\n", + " GROUP BY patient, encounter_id, start_enc, stop_enc\n", + ");" + ] + }, + { + "cell_type": "markdown", + "id": "cfbad0a0-40e2-4d4e-aed9-10f00ac2c205", + "metadata": {}, + "source": [ + "

Below table holds the providers for diabetic conditions. Also the total cost and total and average values of a1c test is also stored for each patient.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2f12fde-4439-4228-a808-a15fdfa8ff37", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.dbt_pathwys_prov as (\n", + "SELECT \n", + " h.ID as org_id, h.Name as org_name, \n", + " SUM(overall_cost) as \"Total Cost\",\n", + " ZEROIFNULL(AVG(e.cnt)) as \"Avg. HBA1C Tests\",\n", + " ZEROIFNULL(SUM(e.cnt)) as \"Total HBA1C Tests\"\n", + " FROM DEMO_USER.va_bk_v_PAT_ENC_LT_90D a\n", + "LEFT JOIN (\n", + " sel PATIENT, count(a1c) cnt\n", + " from DEMO_USER.va_bk_v_a1c_enc\n", + " group by 1\n", + ") e on a.PATIENT=e.PATIENT\n", + "INNER JOIN DEMO_HealthcareFWA.va_organizations h on a.Organization = h.ID\n", + "INNER JOIN DEMO_USER.va_fr_v_ENC_COSTS f on a.ENCOUNTER = f.encounter_id\n", + "GROUP BY h.ID, h.Name\n", + ")WITH DATA ;\n" + ] + }, + { + "cell_type": "markdown", + "id": "3551890c-cb63-490e-8cf2-5eb15a69ac96", + "metadata": {}, + "source": [ + "

Below table calculate the total procedure costs per group for diabetes procedures.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "196214ab-63ba-434e-a7d4-9ee86e11ba1c", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.Total_cost_for_procedure_groups_dbt as (\n", + "SELECT \"group\", cost\n", + "FROM(\n", + " SELECT\n", + " SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code between '82943' and '82962' THEN Total_Charge_Per_Line ELSE 0 END) as \"Glucose Testing\",\n", + " SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code between '85004' and '85049' THEN Total_Charge_Per_Line ELSE 0 END) as \"Blood Counts\",\n", + " SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code between '36400' and '36425' THEN Total_Charge_Per_Line ELSE 0 END) as \"Phlebotomy\",\n", + " SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code between '11042' and '11047' THEN Total_Charge_Per_Line ELSE 0 END) as \"Removal of Infected/Devitalized Tissue\",\n", + " SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code between '93000' and '93010' THEN Total_Charge_Per_Line ELSE 0 END) as \"Electrocardiogram\"\n", + " FROM(\n", + " SELECT \n", + " (Claim_Administrator_Claim_Number || Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, Total_Charge_Per_Line, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " FROM DEMO_HealthcareFWA.WC_SV1_DBT\n", + "\n", + " UNION ALL\n", + "\n", + " SELECT \n", + " (Claim_Administrator_Claim_Number || Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Total_Charge_Per_Line as FLOAT), CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " FROM DEMO_HealthcareFWA.WC_SV2_DBT\n", + " ) d\n", + ") d\n", + "UNPIVOT EXCLUDE NULLS (cost FOR \"group\" in (\"Glucose Testing\", \"Blood Counts\", \"Phlebotomy\", \"Removal of Infected/Devitalized Tissue\",\n", + " \"Electrocardiogram\")) tmp\n", + " ) WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "2bb31e98-710a-46c0-9c73-059a689aaae9", + "metadata": {}, + "source": [ + "

Below table calculate the total procedure costs for diabetes procedures.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25ae919a-415a-403f-aa7f-e16d106a5c98", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.Total_cost_for_procedures_dbt as (\n", + "SELECT\n", + " RANK() OVER (ORDER BY TOTAL_COST DESC) as COST_RANK,\n", + " CAST(Description AS VARCHAR(45)) as \"Procedure\", TOTAL_COST\n", + "FROM (\n", + " select \n", + " COALESCE(\"Sub_Category\",\"SHORT DESCRIPTION\") as Description, \n", + " CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as TOTAL_COST\n", + " FROM (\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV1_DBT\n", + " WHERE HCPCS_Line_Procedure_Billed_Code is not NULL\n", + "\n", + " UNION ALL\n", + "\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV2_DBT\n", + " WHERE HCPCS_Line_Procedure_Billed_Code is not NULL\n", + " ) d\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_CPT_Coding_temp\n", + " ON\n", + " (HCPCS_Line_Procedure_Billed_Code BETWEEN \"FROM\" AND COALESCE(\"TO\",\"FROM\")) AND\n", + " (LENGTH(HCPCS_Line_Procedure_Billed_Code) = LENGTH(\"FROM\"))\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_HCPCS_Coding\n", + " ON HCPCS_Line_Procedure_Billed_Code = HCPC\n", + " GROUP BY Description\n", + ") d\n", + "QUALIFY COST_RANK <= 10\n", + ") WITH DATA ;" + ] + }, + { + "cell_type": "markdown", + "id": "c84c2cf0-e4c6-449e-a28f-2c853f6023d8", + "metadata": {}, + "source": [ + "

Below table calculate and bin the patient volume in various a1c count group.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dec6281d-3187-4392-95eb-b56610531636", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.Hemoglobin_count_dbt as (\n", + "SELECT \n", + " CASE \n", + " WHEN A1C_COUNT = 1 THEN '1'\n", + " WHEN A1C_COUNT = 2 THEN '2'\n", + " WHEN A1C_COUNT = 3 THEN '3'\n", + " WHEN A1C_COUNT = 4 THEN '4'\n", + " ELSE '5+'\n", + " END AS HBA1C_COUNT, COUNT(patient_identifier) as Patient_Count\n", + "FROM (\n", + " SELECT\n", + " d.patient_identifier, COUNT(HCPCS_Line_Procedure_Billed_Code) as A1C_COUNT\n", + " FROM (\n", + " SELECT\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " FROM DEMO_HealthcareFWA.WC_SV1HEADER hd\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV1DETAIL det\n", + " ON hd.Bill_ID = det.Bill_ID\n", + " WHERE HCPCS_Line_Procedure_Billed_Code is not NULL\n", + "\n", + " UNION ALL\n", + "\n", + " SELECT\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " FROM DEMO_HealthcareFWA.WC_SV2HEADER hd\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV2DETAIL det\n", + " ON hd.Bill_ID = det.Bill_ID\n", + " WHERE HCPCS_Line_Procedure_Billed_Code is not NULL\n", + " ) d\n", + " INNER JOIN (\n", + " SELECT DISTINCT patient_identifier\n", + " FROM (\n", + " SELECT (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier\n", + " FROM DEMO_HealthcareFWA.WC_SV1_DBT\n", + "\n", + " UNION ALL\n", + "\n", + " SELECT (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier\n", + " FROM DEMO_HealthcareFWA.WC_SV2_DBT \n", + " ) d\n", + " ) a\n", + " ON d.patient_identifier = a.patient_identifier\n", + " INNER JOIN DEMO_HealthcareFWA.WC_DBT_PRC_DESC\n", + " ON HCPCS_Line_Procedure_Billed_Code = PRC\n", + " WHERE DESCRIPTION = 'Hemoglobin A1c Test'\n", + " GROUP BY d.patient_identifier\n", + ") d\n", + "GROUP BY HBA1C_COUNT\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "1de8cd18-4473-447f-ba41-d67050c2f593", + "metadata": {}, + "source": [ + "

Below table gives facilities information.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ce0e5029-f4cc-4c02-8932-93d672580f43", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.Total_cost_for_facilities_dbt as (\n", + "SELECT \n", + " RANK() OVER (ORDER BY COST DESC) as COST_RANK, d.Billing_Provider_FEIN,\n", + " Facility_Name, Billing_Provider_First_Name, Billing_Provider_Last_Name_or_Group, COST\n", + "FROM\n", + "(\n", + " SELECT Billing_Provider_FEIN, CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as COST\n", + " FROM (\n", + " select \n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line, Billing_Provider_FEIN,\n", + " CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV1_DBT\n", + "\n", + " UNION ALL\n", + "\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line, Billing_Provider_FEIN,\n", + " CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV2_DBT\n", + " ) d\n", + " GROUP BY Billing_Provider_FEIN\n", + ") d\n", + "LEFT JOIN DEMO_HealthcareFWA.WC_PROVIDER_LOOKUP lu\n", + "ON lu.Billing_Provider_FEIN = d.Billing_Provider_FEIN\n", + "QUALIFY COST_RANK <= 10\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "17337e02-791c-4fcc-b069-b24c5aa7d306", + "metadata": {}, + "source": [ + "

In the table below, we are calculating total cost and volume of patients having diabetes conditions grouped by procedure and procedure group.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "045927d9-56c2-4235-ab0a-2ede9c33a476", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.dbt_drilldown_proc_grp_procedures as (\n", + "SELECT\n", + " PRC_GRP, Proc, Cost, Volume\n", + "FROM (\n", + " select\n", + " PRC_GRP,\n", + " COALESCE(Description,HCPCS_Line_Procedure_Billed_Code) as Proc,\n", + " CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as Cost,\n", + " SUM(CASE WHEN Total_Charge_Per_Line is NULL THEN 0 ELSE 1 END) as Volume\n", + " FROM DEMO_HealthcareFWA.WC_DBT_PRC_GRP_FILTERED_BILLS d\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_DBT_PRC_DESC\n", + " ON HCPCS_Line_Procedure_Billed_Code = PRC\n", + " GROUP BY PRC_GRP, Proc\n", + ") d\n", + "QUALIFY RANK() OVER (PARTITION BY PRC_GRP ORDER BY Cost DESC) <= 30\n", + "\n", + "UNION ALL\n", + "\n", + "SELECT\n", + " DRUG_GRP, Drug, Cost, Volume\n", + "FROM (\n", + " select\n", + " DRUG_GRP,\n", + " COALESCE(DESCRIPTION,NDC_Billed_Code) as Drug,\n", + " CAST(SUM(Total_Amount_Paid_Per_Line) AS DECIMAL(20,2)) as Cost,\n", + " SUM(CASE WHEN Total_Amount_Paid_Per_Line is NULL THEN 0 ELSE 1 END) as Volume\n", + " FROM DEMO_HealthcareFWA.WC_DBT_DRUG_GRP_FILTERED_BILLS d\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_DBT_DRUG_DESC\n", + " ON NDC_Billed_Code = NDC_Code\n", + " GROUP BY DRUG_GRP, Drug\n", + ") d\n", + "QUALIFY RANK() OVER (PARTITION BY DRUG_GRP ORDER BY Cost DESC) <= 30\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "7bcad3c3-8375-4421-8351-9f0b64deb293", + "metadata": {}, + "source": [ + "

In the table below, we are calculating total, average, min and max cost and volume of patients having diabetes conditions.

\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e90628d-fd10-47f7-9792-563db62c152f", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.dbt_drilldown_proc_groups as (\n", + "SELECT\n", + " PRC_GRP as \"Procedure/Treatment Group\", \n", + " CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as \"Total Cost\",\n", + " SUM(CASE WHEN Total_Charge_Per_Line is NULL THEN 0 ELSE 1 END) as Volume,\n", + " CAST(AVG(Total_Charge_Per_Line) AS DECIMAL(20,2)) as \"Average Cost\",\n", + " CAST(MIN(Total_Charge_Per_Line) AS DECIMAL(20,2)) as \"Min Cost\",\n", + " CAST(MAX(Total_Charge_Per_Line) AS DECIMAL(20,2)) as \"Max Cost\",\n", + " COUNT(DISTINCT CASE WHEN Total_Charge_Per_Line is NULL THEN NULL ELSE patient_identifier END) as \"No. of Patients\"\n", + "FROM DEMO_HealthcareFWA.WC_DBT_PRC_GRP_FILTERED_BILLS\n", + "WHERE PRC_GRP <> 'Supervised Modalities'\n", + "GROUP BY \"Procedure/Treatment Group\"\n", + "\n", + "UNION ALL\n", + "\n", + "SELECT\n", + " DRUG_GRP as \"Procedure/Treatment Group\", \n", + " CAST(SUM(Total_Amount_Paid_Per_Line) AS DECIMAL(20,2)) as \"Total Cost\",\n", + " SUM(CASE WHEN Total_Amount_Paid_Per_Line is NULL THEN 0 ELSE 1 END) as Volume,\n", + " CAST(AVG(Total_Amount_Paid_Per_Line) AS DECIMAL(20,2)) as \"Average Cost\",\n", + " CAST(MIN(Total_Amount_Paid_Per_Line) AS DECIMAL(20,2)) as \"Min Cost\",\n", + " CAST(MAX(Total_Amount_Paid_Per_Line) AS DECIMAL(20,2)) as \"Max Cost\",\n", + " COUNT(DISTINCT CASE WHEN Total_Amount_Paid_Per_Line is NULL THEN NULL ELSE patient_identifier END) as \"No. of Patients\"\n", + "FROM DEMO_HealthcareFWA.WC_DBT_DRUG_GRP_FILTERED_BILLS\n", + "GROUP BY \"Procedure/Treatment Group\"\n", + " ) WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "2f6e5a0f-4b00-4d9b-886a-895451d6b5e8", + "metadata": {}, + "source": [ + "

In the table below, we are calculating average cost of procedure per county based on the city provided in the billing information.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dc82adbb-6ab8-4203-bd38-ac3351b549dd", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.dbt_drilldown_proc_grp_counties as (\n", + "SELECT PRC_GRP as prc_grp,\n", + " county, \n", + " AVG(Total_Charge_Per_Line) as avg_costs\n", + "FROM(\n", + " select COUNTY as county, STATE_CODE, HCPCS_Line_Procedure_Billed_Code, Total_Charge_Per_Line\n", + " from DEMO_HealthcareFWA.WC_SV1HEADER hd\n", + " inner join DEMO_HealthcareFWA.WC_SV1DETAIL dt on hd.Bill_ID = dt.Bill_ID\n", + " inner join DEMO_HealthcareFWA.wc_us_cities\n", + " on lower(hd.Billing_Provider_City) = lower(CITY)\n", + " INNER JOIN (\n", + " SELECT DISTINCT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM (\n", + " SELECT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM DEMO_HealthcareFWA.WC_SV1_DBT\n", + "\n", + " UNION ALL\n", + "\n", + " SELECT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM DEMO_HealthcareFWA.WC_SV2_DBT \n", + " ) v\n", + " ) a\n", + " ON \n", + " hd.Claim_Administrator_Claim_Number = a.Claim_Administrator_Claim_Number AND \n", + " hd.Insurer_FEIN = a.Insurer_FEIN\n", + " where STATE_CODE = 'TX' AND (hd.Date_of_Bill between 20170000 and 20210000)\n", + ") d\n", + "INNER JOIN (\n", + " SELECT \n", + " MIN(Total_Charge_Per_Line) as min_cost,\n", + " MAX(Total_Charge_Per_Line) as max_cost,\n", + " hcpcs_line_procedure_billed_code\n", + " FROM DEMO_HealthcareFWA.WC_DBT_PRC_GRP_FILTERED_BILLS\n", + " GROUP BY hcpcs_line_procedure_billed_code\n", + ") b\n", + "ON \n", + " d.HCPCS_Line_Procedure_Billed_Code = b.HCPCS_Line_Procedure_Billed_Code\n", + " AND (d.Total_Charge_Per_Line > b.min_cost AND \n", + " d.Total_Charge_Per_Line < b.max_cost)\n", + "INNER JOIN DEMO_HealthcareFWA.WC_DBT_PRC_GRP\n", + "ON REGEXP_SIMILAR(d.HCPCS_Line_Procedure_Billed_Code,CPT_HCPC_CODE) = 1\n", + "GROUP BY COUNTY,PRC_GRP\n", + "HAVING AVG_COSTS is NOT NULL\n", + "\n", + "UNION ALL\n", + "\n", + "SELECT DRUG_GRP as prc_grp,\n", + " county, \n", + " AVG(Total_Amount_Paid_Per_Line) as avg_costs\n", + "FROM(\n", + " SELECT COUNTY as county, STATE_CODE, NDC_Billed_Code, Total_Amount_Paid_Per_Line\n", + " FROM DEMO_HealthcareFWA.WC_SV4HEADER hd\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV4DETAIL dt \n", + " ON hd.Bill_ID = dt.Bill_ID\n", + " INNER JOIN wc_us_cities\n", + " ON lower(hd.Billing_Provider_City) = lower(CITY)\n", + " INNER JOIN (\n", + " SELECT DISTINCT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM (\n", + " SELECT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM DEMO_HealthcareFWA.WC_SV1_DBT\n", + "\n", + " UNION ALL\n", + "\n", + " SELECT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM DEMO_HealthcareFWA.WC_SV2_DBT \n", + " ) v\n", + " ) a\n", + " ON \n", + " hd.Claim_Administrator_Claim_Number = a.Claim_Administrator_Claim_Number AND \n", + " hd.Insurer_FEIN = a.Insurer_FEIN\n", + " where STATE_CODE = 'TX'\n", + ") d\n", + "INNER JOIN (\n", + " SELECT \n", + " MIN(Total_Amount_Paid_Per_Line) as min_cost,\n", + " MAX(Total_Amount_Paid_Per_Line) as max_cost,\n", + " ndc_billed_code\n", + " FROM DEMO_HealthcareFWA.WC_DBT_DRUG_GRP_FILTERED_BILLS\n", + " GROUP BY ndc_billed_code\n", + ") b\n", + "ON \n", + " d.ndc_billed_code = b.ndc_billed_code\n", + " AND (d.Total_Amount_Paid_Per_Line > b.min_cost AND \n", + " d.Total_Amount_Paid_Per_Line < b.max_cost)\n", + "INNER JOIN DEMO_HealthcareFWA.WC_DBT_DRUG_DESC dsc\n", + "ON d.NDC_Billed_Code = dsc.NDC_Code\n", + "INNER JOIN DEMO_HealthcareFWA.WC_DBT_DRUG_GRP grp\n", + "ON dsc.DESCRIPTION = grp.DESCRIPTION\n", + "GROUP BY COUNTY,DRUG_GRP\n", + "HAVING AVG_COSTS is NOT NULL\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "4e1666aa-a9e3-4cc8-8c14-93a66f820696", + "metadata": {}, + "source": [ + "

Table below gives provider details.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd3e4c95-cf33-4f7f-83af-07c2f30fad1c", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.dbt_drilldown_proc_grp_provs as (\n", + "SELECT \n", + " PRC_GRP, COUNTY,Billing_Provider_FEIN, Billing_Provider_Last_Name_or_Group, AVG(Total_Charge_Per_Line) \"Average Cost\", COUNT(d.HCPCS_Line_Procedure_Billed_Code) volume\n", + " FROM(\n", + " SELECT COUNTY, STATE_CODE, HCPCS_Line_Procedure_Billed_Code, Total_Charge_Per_Line, Billing_Provider_FEIN, Billing_Provider_Last_Name_or_Group\n", + " FROM DEMO_HealthcareFWA.WC_SV1HEADER hd\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV1DETAIL dt \n", + " ON hd.Bill_ID = dt.Bill_ID\n", + " INNER JOIN DEMO_HealthcareFWA.wc_us_cities\n", + " ON lower(hd.Billing_Provider_City) = lower(CITY)\n", + " INNER JOIN (\n", + " SELECT DISTINCT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM (\n", + " SELECT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM DEMO_HealthcareFWA.WC_SV1_DBT\n", + " \n", + " UNION ALL\n", + " \n", + " SELECT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM DEMO_HealthcareFWA.WC_SV2_DBT\n", + " ) v\n", + " ) a\n", + " ON \n", + " hd.Claim_Administrator_Claim_Number = a.Claim_Administrator_Claim_Number AND \n", + " hd.Insurer_FEIN = a.Insurer_FEIN\n", + " WHERE STATE_CODE = 'TX'\n", + " ) d\n", + " INNER JOIN (\n", + " SELECT \n", + " MIN(Total_Charge_Per_Line) as min_cost,\n", + " MAX(Total_Charge_Per_Line) as max_cost,\n", + " hcpcs_line_procedure_billed_code\n", + " FROM DEMO_HealthcareFWA.WC_DBT_PRC_GRP_FILTERED_BILLS\n", + " GROUP BY hcpcs_line_procedure_billed_code\n", + " ) b\n", + " ON \n", + " d.HCPCS_Line_Procedure_Billed_Code = b.HCPCS_Line_Procedure_Billed_Code\n", + " AND (d.Total_Charge_Per_Line > b.min_cost AND \n", + " d.Total_Charge_Per_Line < b.max_cost)\n", + " INNER JOIN DEMO_HealthcareFWA.WC_DBT_PRC_GRP\n", + " ON REGEXP_SIMILAR(d.HCPCS_Line_Procedure_Billed_Code,CPT_HCPC_CODE) = 1\n", + " GROUP BY Billing_Provider_FEIN, Billing_Provider_Last_Name_or_Group,PRC_GRP,COUNTY\n", + " \n", + " UNION ALL \n", + " \n", + " SELECT\n", + " DRUG_GRP as PRC_GRP, COUNTY,Billing_Provider_FEIN, Billing_Provider_Last_Name_or_Group,\n", + " AVG(Total_Amount_Paid_Per_Line) \"Average Cost\",\n", + " COUNT(d.NDC_Billed_Code) volume\n", + " FROM(\n", + " SELECT COUNTY, STATE_CODE, NDC_Billed_Code, Total_Amount_Paid_Per_Line, Billing_Provider_FEIN, Billing_Provider_Last_Name_or_Group\n", + " FROM DEMO_HealthcareFWA.WC_SV4HEADER hd\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV4DETAIL dt \n", + " ON hd.Bill_ID = dt.Bill_ID\n", + " INNER JOIN DEMO_HealthcareFWA.wc_us_cities\n", + " ON lower(hd.Billing_Provider_City) = lower(CITY)\n", + " INNER JOIN (\n", + " SELECT DISTINCT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM (\n", + " SELECT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM DEMO_HealthcareFWA.WC_SV1_DBT\n", + " \n", + " UNION ALL\n", + " \n", + " SELECT Claim_Administrator_Claim_Number, Insurer_FEIN\n", + " FROM DEMO_HealthcareFWA.WC_SV2_DBT\n", + " ) v\n", + " ) a\n", + " ON \n", + " hd.Claim_Administrator_Claim_Number = a.Claim_Administrator_Claim_Number AND \n", + " hd.Insurer_FEIN = a.Insurer_FEIN\n", + " WHERE STATE_CODE = 'TX'\n", + " ) d\n", + " INNER JOIN (\n", + " SELECT \n", + " MIN(Total_Amount_Paid_Per_Line) as min_cost,\n", + " MAX(Total_Amount_Paid_Per_Line) as max_cost,\n", + " ndc_billed_code\n", + " FROM DEMO_HealthcareFWA.WC_DBT_DRUG_GRP_FILTERED_BILLS\n", + " GROUP BY ndc_billed_code\n", + " ) b\n", + " ON \n", + " d.ndc_billed_code = b.ndc_billed_code\n", + " AND (d.Total_Amount_Paid_Per_Line > b.min_cost AND \n", + " d.Total_Amount_Paid_Per_Line < b.max_cost)\n", + " \n", + " INNER JOIN DEMO_HealthcareFWA.WC_DBT_DRUG_DESC dsc\n", + " ON d.NDC_Billed_Code = dsc.NDC_Code\n", + " INNER JOIN DEMO_HealthcareFWA.WC_DBT_DRUG_GRP grp\n", + " ON dsc.DESCRIPTION = grp.DESCRIPTION\n", + " GROUP BY Billing_Provider_FEIN, Billing_Provider_Last_Name_or_Group, DRUG_GRP,COUNTY\n", + " ) WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "76c8d729-9142-4601-8277-a684a6f2e7d0", + "metadata": {}, + "source": [ + "

Below view list the patient and condition start date.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "71a38b8e-ce1c-4132-ae44-9cf748edeea0", + "metadata": {}, + "outputs": [], + "source": [ + "REPLACE VIEW demo_user.va_bk_v_sel_hrt_rnl AS \n", + " sel distinct \n", + " PATIENT, CODE COND_CD, encounter, CAST(SUBSTR(\"START\",0,11) AS DATE FORMAT 'YYYY-MM-DD') COND_DT,\n", + " DESCRIPTION COND \n", + " from DEMO_HealthcareFWA.va_conditions \n", + " where code in (433144002,88805009,53741008,84114007,127013003)" + ] + }, + { + "cell_type": "markdown", + "id": "0ff6b059-2af1-4bc7-8c3a-bec4aac1e1f6", + "metadata": {}, + "source": [ + "

In the table below we are calculating the path of procedures taken by a diabetic patient with cost of each procedure , a1c count as well as overall cost of all procedures.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a55a77a1-c60d-44ac-af69-7f910dcf3f42", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.dbt_pathways as (\n", + "SELECT \n", + " TRIM (BOTH FROM REGEXP_REPLACE(patient, '[\\[\\]]', '', 1, 0, 'c')) as patient_identifier,\n", + " COND || ', '|| REGEXP_REPLACE(path, '[\\[\\]]+', '', 1, 0, 'c') AS path,\n", + " cond, cond_dt,\n", + " last_enc,\n", + " a1c_val, a1c_per_yr, \n", + " (LAST_ENC-COND_DT)/365 num_yrs,\n", + " length,\n", + " '0,' || REGEXP_REPLACE(path_cost, '[\\[\\]\\s]+', '', 1, 0, 'c') as path_cost,\n", + " 'Start,' || REGEXP_REPLACE(provider_id, '[\\[\\]\\s]+', '', 1, 0, 'c') AS provider_id\n", + "FROM nPath (\n", + "ON ( \n", + " sel \n", + " a.PATIENT, ENCOUNTERCLASS, ENC_DESC, STRT_ENC,\n", + " COND, COND_DT, STRT_DIAB,\n", + " LAST_VALUE(STRT_ENC) OVER (PARTITION BY a.PATIENT ORDER BY STRT_ENC) LST_ENC,\n", + " COALESCE(a1c, 0.0) a1c_val, COALESCE(a1c_per_yr, 0.0) a1c_per_yr, overall_cost,\n", + " h.Name as prov_org, h.ID as prov_org_id\n", + " from demo_user.va_bk_v_PAT_ENC_LT_90D a\n", + " inner join (\n", + " sel * from DEMO_HealthcareFWA.va_bk_diab_pat_cnt\n", + " ) b on a.PATIENT=b.PATIENT\n", + " inner join DEMO_user.va_bk_diab_strt c on a.PATIENT=c.PATIENT\n", + " inner join DEMO_user.va_bk_v_sel_hrt_rnl x on a.PATIENT=x.PATIENT\n", + " left join DEMO_user.va_bk_v_a1c_enc d on a.PATIENT=d.PATIENT and a.ENCOUNTER=d.ENCOUNTER\n", + " inner join DEMO_user.va_bk_v_a1c_per_yr e on a.PATIENT=e.PATIENT\n", + " inner join DEMO_user.va_fr_v_ENC_COSTS f on a.ENCOUNTER = f.encounter_id\n", + " inner join DEMO_HealthcareFWA.va_providers g on a.PROVIDER = g.ID\n", + " inner join DEMO_HealthcareFWA.va_organizations h on g.Organization = h.ID\n", + " where \n", + " lower(ENCOUNTERCLASS) not like all ('wellness', 'ambulatory')\n", + " AND STRT_ENC < ADD_MONTHS(COND_DT, 5*12)\n", + ")\n", + "PARTITION BY a.PATIENT, COND\n", + "ORDER BY STRT_ENC\n", + "USING\n", + "Mode (nonoverlapping)\n", + "Pattern ('A+')\n", + "Symbols (\n", + " STRT_ENC > COND_DT AS A\n", + ")\n", + "Result (\n", + " \n", + " FIRST (PATIENT OF A) AS patient,\n", + " LAST (STRT_ENC OF A) AS last_enc,\n", + " FIRST (COND_DT OF A) AS cond_dt,\n", + " FIRST (COND OF A) AS cond, \n", + " AVE (a1c_val OF A) AS a1c_val,\n", + " FIRST (a1c_per_yr OF A) AS a1c_per_yr,\n", + " ACCUMULATE (CAST (ENC_DESC AS VARCHAR(40)) OF A) AS path,\n", + " COUNT(* of A) as length,\n", + " ACCUMULATE(overall_cost OF A) as path_cost,\n", + " ACCUMULATE(prov_org_id OF A) as provider_id\n", + ")\n", + ") p\n", + " ) WITH DATA; " + ] + }, + { + "cell_type": "markdown", + "id": "30a1fca5-e6d7-484f-8f74-78d04ab49fb8", + "metadata": {}, + "source": [ + "
\n", + "5. Reporting tables for Overall Summary\n", + "

Here we are creating reporting tables needed for the overall reporting. The table below list the cost of each chapter i.e MSK(musculoskeletal), DBT (Diabetic) and ALL.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3a382b7f-bfd5-46df-8732-861193acb068", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.chapter_summary as (\n", + "select \n", + " COUNT(DISTINCT patient_identifier) as patients,\n", + " SUM(Total_Charge_Per_Line) as costs,\n", + " SUM(CASE WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9716[1-4]','c') = 1 THEN 1 ELSE 0 END) pt_visits,\n", + " SUM(CASE WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9894[0-4]','c') = 1 THEN 1 ELSE 0 END) chiro_trts,\n", + " 'MSK' as label\n", + "from (\n", + " SELECT \n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier, Total_Charge_Per_Line,\n", + " HCPCS_Line_Procedure_Billed_Code\n", + " FROM DEMO_HealthcareFWA.WC_SV1_MSK\n", + " UNION ALL\n", + " SELECT \n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier, CAST(Total_Charge_Per_Line AS FLOAT),\n", + " HCPCS_Line_Procedure_Billed_Code\n", + " FROM DEMO_HealthcareFWA.WC_SV2_MSK \n", + ") d\n", + "\n", + "UNION ALL\n", + "\n", + "select \n", + " COUNT(DISTINCT patient_identifier) as patients,\n", + " SUM(Total_Charge_Per_Line) as costs,\n", + " SUM(CASE WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9716[1-4]','c') = 1 THEN 1 ELSE 0 END) pt_visits,\n", + " SUM(CASE WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9894[0-4]','c') = 1 THEN 1 ELSE 0 END) chiro_trts,\n", + " 'DBT' as label\n", + "from (\n", + " SELECT \n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier, Total_Charge_Per_Line,\n", + " HCPCS_Line_Procedure_Billed_Code\n", + " FROM DEMO_HealthcareFWA.WC_SV1_DBT\n", + " \n", + " UNION ALL\n", + " \n", + " SELECT \n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier, CAST(Total_Charge_Per_Line AS FLOAT),\n", + " HCPCS_Line_Procedure_Billed_Code\n", + " FROM DEMO_HealthcareFWA.WC_SV2_DBT \n", + ") db\n", + "\n", + "\n", + "UNION ALL\n", + "\n", + "select \n", + " COUNT(DISTINCT patient_identifier) as PATIENTS,\n", + " SUM(Total_Charge_Per_Line) as COSTS,\n", + " SUM(CASE WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9716[1-4]','c') = 1 THEN 1 ELSE 0 END) pt_visits,\n", + " SUM(CASE WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9894[0-4]','c') = 1 THEN 1 ELSE 0 END) chiro_trts,\n", + " 'ALL'\n", + "from (\n", + " SELECT \n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier, Total_Charge_Per_Line,\n", + " HCPCS_Line_Procedure_Billed_Code\n", + " FROM DEMO_HealthcareFWA.WC_SV1HEADER head\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV1DETAIL det\n", + " on head.Bill_ID = det.Bill_ID\n", + " WHERE Date_of_Bill between 20170000 and 20210000\n", + " \n", + " UNION ALL\n", + " \n", + " SELECT \n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier, CAST(Total_Charge_Per_Line AS FLOAT),\n", + " HCPCS_Line_Procedure_Billed_Code\n", + " FROM DEMO_HealthcareFWA.WC_SV2HEADER head\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV2DETAIL det\n", + " on head.Bill_ID = det.Bill_ID\n", + " WHERE Date_of_Bill between 20170000 and 20210000\n", + ") d\n", + ") WITH DATA; " + ] + }, + { + "cell_type": "markdown", + "id": "0e99838e-f465-4d2c-98f9-11148602a780", + "metadata": {}, + "source": [ + "

Below table list the volume and cost of procedures calculated from billing data.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15b6f667-6427-4915-a82e-fbe3165320c4", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.overview_chapters as (\n", + "SELECT\n", + " RANK() OVER (ORDER BY COST DESC) as cost_rank,\n", + " chapter,\n", + " cost,\n", + " volume\n", + "FROM (\n", + " select \n", + " DESCRIPTION as chapter,\n", + " CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as cost,\n", + " COUNT(*) AS volume\n", + " FROM (\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " First_ICD9_CM_Diagnosis_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV1HEADER hd\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV1DETAIL det\n", + " ON hd.Bill_ID = det.Bill_ID\n", + " WHERE First_ICD9_CM_Diagnosis_Code is not NULL \n", + "\n", + " UNION ALL\n", + "\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " First_ICD9_CM_Diagnosis_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV2HEADER hd\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV2DETAIL det\n", + " ON hd.Bill_ID = det.Bill_ID\n", + " WHERE First_ICD9_CM_Diagnosis_Code is not NULL \n", + " ) d\n", + " INNER JOIN DEMO_HealthcareFWA.WC_MSK_DIAG_CHP\n", + " ON CAST(First_ICD9_CM_Diagnosis_Code AS CHAR(3)) BETWEEN D_FROM and D_TO\n", + " GROUP BY chapter\n", + ") d\n", + "WHERE \n", + " chapter not like 'Factors Influencing Health Status' AND \n", + " chapter not like 'Symptoms, Signs and Clinical Findings'\n", + "QUALIFY cost_rank <= 5\n", + " ) WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "4d0f0b54-074a-4beb-b5a9-2a8d568974e1", + "metadata": {}, + "source": [ + "

Below table list the information of all the procedures.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b29c4e82-9ca7-408c-a6e3-e53664031232", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.overview_procedures as (\n", + "SELECT\n", + " RANK() OVER (ORDER BY TOTAL_COST DESC) as cost_rank,\n", + " CAST(\"procedure\" AS VARCHAR(45)) as \"procedure\", total_cost\n", + "FROM (\n", + " select \n", + " COALESCE(\"Sub_Category\",\"SHORT DESCRIPTION\") as \"procedure\", \n", + " CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as total_cost\n", + " FROM (\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV1HEADER hd\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV1DETAIL det\n", + " ON hd.Bill_ID = det.Bill_ID\n", + " WHERE HCPCS_Line_Procedure_Billed_Code is not NULL \n", + "\n", + " UNION ALL\n", + "\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV2HEADER hd\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV2DETAIL det\n", + " ON hd.Bill_ID = det.Bill_ID\n", + " WHERE HCPCS_Line_Procedure_Billed_Code is not NULL \n", + " ) d\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_CPT_Coding_temp\n", + " ON\n", + " (HCPCS_Line_Procedure_Billed_Code BETWEEN \"FROM\" AND COALESCE(\"TO\",\"FROM\")) AND\n", + " (LENGTH(HCPCS_Line_Procedure_Billed_Code) = LENGTH(\"FROM\"))\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_HCPCS_Coding\n", + " ON HCPCS_Line_Procedure_Billed_Code = HCPC\n", + " GROUP BY \"procedure\"\n", + ") d\n", + "QUALIFY cost_rank <= 20\n", + " ) WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "2b0dc06d-c2f7-4b53-bf9b-146831ed3b98", + "metadata": {}, + "source": [ + "

Below table list the provider details.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "783e5cfc-0c08-442c-9033-d2fa4cf2b099", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.overview_providers as (\n", + "SELECT\n", + " RANK() OVER (ORDER BY COST DESC) as cost_rank, d.Billing_Provider_FEIN as provider_fein,\n", + " coalesce(Facility_Name,Billing_Provider_Last_Name_or_Group) as facility_name,\n", + " Billing_Provider_First_Name as provider_first_name, Billing_Provider_Last_Name_or_Group as provider_group, cost\n", + "FROM\n", + "(\n", + " SELECT \n", + " Billing_Provider_FEIN,\n", + " CAST(AVG(Total_Charge_Per_Line) AS DECIMAL(20,2)) as cost\n", + " FROM (\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " Billing_Provider_FEIN, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV1HEADER hd\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV1DETAIL det\n", + " ON hd.Bill_ID = det.Bill_ID\n", + " WHERE (Date_of_Bill between 20170000 and 20210000)\n", + "\n", + " UNION ALL\n", + "\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line, Billing_Provider_FEIN,\n", + " CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV2HEADER hd\n", + " INNER JOIN DEMO_HealthcareFWA.WC_SV2DETAIL det\n", + " ON hd.Bill_ID = det.Bill_ID\n", + " WHERE (Date_of_Bill between 20170000 and 20210000)\n", + " ) d\n", + " GROUP BY Billing_Provider_FEIN\n", + ") d\n", + "LEFT JOIN DEMO_HealthcareFWA.WC_PROVIDER_LOOKUP lu\n", + "ON lu.Billing_Provider_FEIN = d.Billing_Provider_FEIN\n", + "QUALIFY COST_RANK <= 20\n", + " ) WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "311ddf33-3612-4da9-806f-f83f861c1293", + "metadata": {}, + "source": [ + "
\n", + "5. Reporting tables for Maternity Conditions\n", + "

Here we are creating reporting tables needed for the maternity condition reporting. Below table lists the infomation on the procedure groups.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7d9d54ce-842d-4e88-b9bc-4d77ce948012", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.mat_proc_grps as (\n", + "SELECT\n", + " CASE \n", + " WHEN (chapter in ('O82', 'Z38.01', 'Z38,62', 'Z38.64', 'Z38.66', 'Z38.31', 'Z38.69','740') OR \n", + " HCPCS_Line_Procedure_Billed_Code in ('59510','59514','59515')) OR \n", + " ICD9_CM_Principal_Procedure_Code in ('740','741','742','744','749','7499') THEN 'Cesarean Delivery'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('99291','99292') then 'Neonatal Critical Care'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('82105') then 'Alpha Fetoprotein'\n", + " END as treatment, SUM(Total_Charge_Per_Line) total_cost, COUNT(DISTINCT patient_identifier) patients, (total_cost/patients) avg_cost\n", + "FROM (\n", + " SELECT *\n", + " FROM (\n", + " select\n", + " (Claim_Administrator_Claim_Number || Insurer_FEIN) as patient_identifier, HCPCS_Line_Procedure_Billed_Code, 'NULL' as ICD9_CM_Principal_Procedure_Code,\n", + " First_ICD9_CM_Diagnosis_Code as chp_1, Second_ICD9_CM_Diagnosis_Code as chp_2,\n", + " Third_ICD9_CM_Diagnosis_Code as chp_3, Fourth_ICD9_CM_Diagnosis_Code as chp_4,\n", + " Fifth_ICD9_CM_Diagnosis_Code as chp_5, Total_Charge_Per_Line\n", + " from DEMO_HealthcareFWA.WC_SV1_MAT\n", + "\n", + " UNION ALL\n", + "\n", + " --Maternity Procedure Groups \n", + " select\n", + " (Claim_Administrator_Claim_Number || Insurer_FEIN) as patient_identifier, HCPCS_Line_Procedure_Billed_Code, ICD9_CM_Principal_Procedure_Code,\n", + " First_ICD9_CM_Diagnosis_Code as chp_1, Second_ICD9_CM_Diagnosis_Code as chp_2,\n", + " Third_ICD9_CM_Diagnosis_Code as chp_3, Fourth_ICD_9_CM_Diagnosis_Code as chp_4,\n", + " Fifth_ICD9_CM_Diagnosis_Code as chp_5, CAST(Total_Charge_Per_Line AS FLOAT)\n", + " from DEMO_HealthcareFWA.WC_SV2_MAT\n", + "\n", + " ) d\n", + " UNPIVOT EXCLUDE NULLS\n", + " (\n", + " chapter FOR diag_level IN\n", + " (chp_1, chp_2, chp_3, chp_4, chp_5)\n", + " ) Tmp\n", + ") up\n", + "Where treatment is not NULL\n", + "GROUP BY treatment\n", + ") WITH DATA ; ;" + ] + }, + { + "cell_type": "markdown", + "id": "32eddce0-f5a2-4dbf-bdc5-ecb17a80d74e", + "metadata": {}, + "source": [ + "

Below view is the driving view for the patients with maternity condition.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b310ee3d-91bb-46a2-b2f7-67cc0fa6bd54", + "metadata": {}, + "outputs": [], + "source": [ + "REPLACE VIEW DEMO_USER.WC_FR_V_NPATH_PRG_QRY AS (\n", + " SELECT\n", + " (Claim_Administrator_Claim_Number ||'_'|| Insurer_FEIN) as patient_identifier,\n", + " HCPCS_Line_Procedure_Billed_Code, Total_Charge_Per_Line,\n", + " Service_Line_From_Date,\n", + " min(Service_Line_From_Date) OVER (PARTITION BY patient_identifier) first_mat_diag,\n", + " COUNT(Service_Line_From_Date) OVER (PARTITION BY patient_identifier) proc_count,\n", + " Billing_Provider_Last_Name_or_Group,\n", + " Billing_Provider_FEIN,\n", + " First_ICD9_CM_Diagnosis_Code, Second_ICD9_CM_Diagnosis_Code, Third_ICD9_CM_Diagnosis_Code,\n", + " Fourth_ICD9_CM_Diagnosis_Code, Fifth_ICD9_CM_Diagnosis_Code,\n", + " ICD9_CM_Principal_Procedure_Code,\n", + " COALESCE(Description,\"Sub_Category\") as PRC_DESC, -- ,\"\"SHORT DESCRIPTION\"\"\n", + " COALESCE(ch_ds.descr,CAST(First_ICD9_CM_Diagnosis_Code as CHAR(3))) primary_condition,\n", + " Procedure_Description,\n", + " CASE\n", + " WHEN (First_ICD9_CM_Diagnosis_Code in \n", + " ('O82', 'Z38.01', 'Z38,62', 'Z38.64', 'Z38.66', 'Z38.31', 'Z38.69','740') OR \n", + " HCPCS_Line_Procedure_Billed_Code in ('59510','59514','59515')) OR \n", + " ICD9_CM_Principal_Procedure_Code in ('740','741','742','744','749','7499') THEN 'Cesarean Delivery'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('99291','99292') then 'Neonatal Critical Care'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('82105','82106') then 'Alpha Fetoprotein'\n", + " WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9894[0-4]','c') = 1 \n", + " THEN 'Chiropractic Manipulative Treatment'\n", + " WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9716[1-4]','c') = 1\n", + " THEN 'Physical Therapy'\n", + " WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'9716[5-8]','c') = 1\n", + " THEN 'Occupational Therapy'\n", + " WHEN REGEXP_SIMILAR(HCPCS_Line_Procedure_Billed_Code,'970((1[0-9])|(2[0-8]))','c') = 1\n", + " THEN 'Supervised Modalities'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('63047', '63048', '63030', '63035',\n", + " '22612', '22633', '22558', '22551',\n", + " '64635', '64636', '63045') THEN 'Spinal Surgery'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('70551','70553','70544','70547',\n", + " '70549','70540','70543','70540',\n", + " '70543','70336') THEN 'Back/Neck MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('72141','72156','72146','72157',\n", + " '72148','72158') THEN 'Spine MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('77059','77021') THEN 'Breast MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('73221','73223','73721','73723') THEN 'Joints MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('73718','73720','73218','73220') THEN 'Extremity MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('74181','74183','74185') THEN 'Abdomen MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('72195','72197','72195',\n", + " '72197','72195','72197') THEN 'Pelvis MRI'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('72125','72126','72131',\n", + " '72132''72128','72129') THEN 'CT Scan for Spine'\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('72040','72050','72220',\n", + " '72100','72110','72114',\n", + " '72200','72202','72052',\n", + " '72082','72070') THEN 'Xray for Spine'\n", + " ELSE NULL END as Description,\n", + " Employee_Mailing_City\n", + " FROM DEMO_HealthcareFWA.WC_MAT_PATIENT_ALL_BILLS\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_CHP_DESC ch_ds\n", + " ON CAST(First_ICD9_CM_Diagnosis_Code as CHAR(3)) = CAST(ch_ds.code as CHAR(3))\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_CPT_Coding_temp\n", + " ON\n", + " (HCPCS_Line_Procedure_Billed_Code BETWEEN \"FROM\" AND COALESCE(\"TO\",\"FROM\")) AND\n", + " (LENGTH(HCPCS_Line_Procedure_Billed_Code) = LENGTH(\"FROM\"))\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_HCPCS_Coding\n", + " ON HCPCS_Line_Procedure_Billed_Code = HCPC\n", + " WHERE \n", + " HCPCS_Line_Procedure_Billed_Code is not null and First_ICD9_CM_Diagnosis_Code is not null\n", + " and PRC_DESC is not null\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "747ef5eb-9c24-4a6a-b212-27cc19d8cfb6", + "metadata": {}, + "source": [ + "

Below table lists the pathways in maternity condition.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "587e948e-f0b6-4a10-a7cf-e8799fdfb101", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE Demo_User.mat_pathways as (\n", + "SELECT\n", + "TRIM (BOTH FROM REGEXP_REPLACE(patient_identifier, '[\\[\\]]', '', 1, 0, 'c')) as patient_identifier,\n", + "'Pregnancy Condition,' || REGEXP_REPLACE(path, '[\\[\\]]+', '', 1, 0, 'c') AS path,\n", + "'0.0,' || REGEXP_REPLACE(cost, '[\\[\\]\\s]+', '', 1, 0, 'c') AS cost,\n", + "label,\n", + "'None,' || REGEXP_REPLACE(prov_group, '[\\[\\]]+', '', 1, 0, 'c') as prov_group,\n", + "'None,' || REGEXP_REPLACE(provider, '[\\[\\]\\s]+', '', 1, 0, 'c') as provider,\n", + "total_cost\n", + "FROM nPath (\n", + "ON (\n", + " SELECT\n", + " a.patient_identifier, HCPCS_Line_Procedure_Billed_Code, Service_Line_From_Date, first_mat_diag,\n", + " Billing_Provider_Last_Name_or_Group, Billing_Provider_FEIN,\n", + " First_ICD9_CM_Diagnosis_Code, Second_ICD9_CM_Diagnosis_Code, Third_ICD9_CM_Diagnosis_Code,\n", + " Fourth_ICD9_CM_Diagnosis_Code, Fifth_ICD9_CM_Diagnosis_Code, PRC_DESC, primary_condition,\n", + " CASE \n", + " WHEN pt.p_id is NOT NULL THEN 'PT'\n", + " WHEN csec.p_id is NOT NULL THEN 'CS'\n", + " WHEN h_cost.p_id is NOT NULL THEN 'HC'\n", + " ELSE 'Other' END as label,\n", + " CAST(AVG(Total_Charge_Per_Line) as Decimal(10,2)) as Total_Charge_Per_Line,\n", + " h_cost.total_cost as total_cost\n", + " FROM demo_user.WC_FR_V_NPATH_PRG_QRY a\n", + " INNER JOIN(\n", + " SELECT DISTINCT patient_identifier as p_id\n", + " FROM demo_user.WC_FR_V_NPATH_PRG_QRY\n", + " WHERE\n", + " First_ICD9_CM_Diagnosis_Code like any ('64_._1','64_._2','65_._1','65_._2','66_._1','66_._2','67_._1','67_._2'\n", + " 'O10._2','O10._3','O11.3','O11.4','O12._4','O12._5','O13.4','O13.5','O14._4',\n", + " 'O14._5','O15.2','O16.4','O16.5','O24._2%','O24._3%','O25.2','O25.3','O26.62',\n", + " 'O26.63','O26.72','O26.73','O60.1%','O60.2%','O63.2','O70%','O80%','O82%',\n", + " 'O86.1%','O86.2%','O86.4%','O87%','O88._2','O88._3','O89%','O90%','O91._2',\n", + " 'O91._3','O92._2','O92._3','O98._2','O98._3','O9A._2','O9A._3','Z37%','Z39.0','Z39.1')\n", + " OR Second_ICD9_CM_Diagnosis_Code like any ('64_._1','64_._2','65_._1','65_._2','66_._1','66_._2','67_._1','67_._2'\n", + " 'O10._2','O10._3','O11.3','O11.4','O12._4','O12._5','O13.4','O13.5','O14._4',\n", + " 'O14._5','O15.2','O16.4','O16.5','O24._2%','O24._3%','O25.2','O25.3','O26.62',\n", + " 'O26.63','O26.72','O26.73','O60.1%','O60.2%','O63.2','O70%','O80%','O82%',\n", + " 'O86.1%','O86.2%','O86.4%','O87%','O88._2','O88._3','O89%','O90%','O91._2',\n", + " 'O91._3','O92._2','O92._3','O98._2','O98._3','O9A._2','O9A._3','Z37%','Z39.0','Z39.1')\n", + " OR Third_ICD9_CM_Diagnosis_Code like any ('64_._1','64_._2','65_._1','65_._2','66_._1','66_._2','67_._1','67_._2'\n", + " 'O10._2','O10._3','O11.3','O11.4','O12._4','O12._5','O13.4','O13.5','O14._4',\n", + " 'O14._5','O15.2','O16.4','O16.5','O24._2%','O24._3%','O25.2','O25.3','O26.62',\n", + " 'O26.63','O26.72','O26.73','O60.1%','O60.2%','O63.2','O70%','O80%','O82%',\n", + " 'O86.1%','O86.2%','O86.4%','O87%','O88._2','O88._3','O89%','O90%','O91._2',\n", + " 'O91._3','O92._2','O92._3','O98._2','O98._3','O9A._2','O9A._3','Z37%','Z39.0','Z39.1')\n", + " OR Fourth_ICD9_CM_Diagnosis_Code like any ('64_._1','64_._2','65_._1','65_._2','66_._1','66_._2','67_._1','67_._2'\n", + " 'O10._2','O10._3','O11.3','O11.4','O12._4','O12._5','O13.4','O13.5','O14._4',\n", + " 'O14._5','O15.2','O16.4','O16.5','O24._2%','O24._3%','O25.2','O25.3','O26.62',\n", + " 'O26.63','O26.72','O26.73','O60.1%','O60.2%','O63.2','O70%','O80%','O82%',\n", + " 'O86.1%','O86.2%','O86.4%','O87%','O88._2','O88._3','O89%','O90%','O91._2',\n", + " 'O91._3','O92._2','O92._3','O98._2','O98._3','O9A._2','O9A._3','Z37%','Z39.0','Z39.1')\n", + " OR Fifth_ICD9_CM_Diagnosis_Code like any ('64_._1','64_._2','65_._1','65_._2','66_._1','66_._2','67_._1','67_._2'\n", + " 'O10._2','O10._3','O11.3','O11.4','O12._4','O12._5','O13.4','O13.5','O14._4',\n", + " 'O14._5','O15.2','O16.4','O16.5','O24._2%','O24._3%','O25.2','O25.3','O26.62',\n", + " 'O26.63','O26.72','O26.73','O60.1%','O60.2%','O63.2','O70%','O80%','O82%',\n", + " 'O86.1%','O86.2%','O86.4%','O87%','O88._2','O88._3','O89%','O90%','O91._2',\n", + " 'O91._3','O92._2','O92._3','O98._2','O98._3','O9A._2','O9A._3','Z37%','Z39.0','Z39.1')\n", + " ) d\n", + " ON a.patient_identifier = d.p_id\n", + " LEFT JOIN (\n", + " SELECT DISTINCT patient_identifier as p_id\n", + " FROM demo_user.WC_FR_V_NPATH_PRG_QRY\n", + " WHERE\n", + " First_ICD9_CM_Diagnosis_Code like any ('644%','O60%')\n", + " OR Second_ICD9_CM_Diagnosis_Code like any ('644%','O60%')\n", + " OR Third_ICD9_CM_Diagnosis_Code like any ('644%','O60%')\n", + " OR Fourth_ICD9_CM_Diagnosis_Code like any ('644%','O60%')\n", + " OR Fifth_ICD9_CM_Diagnosis_Code like any ('644%','O60%')\n", + " ) pt\n", + " ON a.patient_identifier = pt.p_id\n", + " LEFT JOIN (\n", + " SELECT DISTINCT patient_identifier as p_id\n", + " FROM demo_user.WC_FR_V_NPATH_PRG_QRY\n", + " WHERE\n", + " (First_ICD9_CM_Diagnosis_Code in ('O82', 'Z38.01', 'Z38,62', 'Z38.64', 'Z38.66', 'Z38.31', 'Z38.69','740') OR \n", + " HCPCS_Line_Procedure_Billed_Code in ('59510','59514','59515')) OR \n", + " ICD9_CM_Principal_Procedure_Code in ('740','741','742','744','749','7499')\n", + " ) csec\n", + " ON a.patient_identifier = csec.p_id\n", + " LEFT JOIN (\n", + " SELECT patient_identifier as p_id,total_cost\n", + " FROM (\n", + " SELECT (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier, \n", + " SUM(Total_Charge_Per_Line) total_cost\n", + " FROM DEMO_HealthcareFWA.WC_MAT_PATIENT_ALL_BILLS \n", + " GROUP BY patient_identifier\n", + " ) d\n", + " ) h_cost\n", + " ON a.patient_identifier = h_cost.p_id\n", + " GROUP BY\n", + " a.patient_identifier, HCPCS_Line_Procedure_Billed_Code, first_mat_diag, Service_Line_From_Date,\n", + " Billing_Provider_Last_Name_or_Group, Billing_Provider_FEIN, First_ICD9_CM_Diagnosis_Code,\n", + " Second_ICD9_CM_Diagnosis_Code, Third_ICD9_CM_Diagnosis_Code, Fourth_ICD9_CM_Diagnosis_Code,\n", + " Fifth_ICD9_CM_Diagnosis_Code, PRC_DESC, primary_condition, label,total_cost\n", + ")\n", + "PARTITION BY patient_identifier\n", + "ORDER BY Service_Line_From_Date\n", + "USING\n", + "Mode (nonoverlapping)\n", + "Pattern ('(P|S|T|F|FF).(B){1,50}') \n", + "Symbols (\n", + " TRUE as B,\n", + " CAST(First_ICD9_CM_Diagnosis_Code AS CHAR(3)) in ('630','631','632','633','634','635','636','637','638','639',\n", + " '640','641','642','643','644','645','646','647','648','649',\n", + " '650','651','652','653','654','655','656','657','658','659',\n", + " '660','661','662','663','664','665','666','667','668','669',\n", + " '670','671','672','673','674','675','676','677','678','679',\n", + " 'O00','O01','O02','O03','O04','O05','O06','O07','O08','O09',\n", + " 'O10','O11','O12','O13','O14','O15','O16','O17','O18','O19',\n", + " 'O20','O21','O22','O23','O24','O25','O26','O27','O28','O29',\n", + " 'O30','O31','O32','O33','O34','O35','O36','O37','O38','O39',\n", + " 'O40','O41','O42','O43','O44','O45','O46','O47','O48','O49',\n", + " 'O50','O51','O52','O53','O54','O55','O56','O57','O58','O59',\n", + " 'O60','O61','O62','O63','O64','O65','O66','O67','O68','O69',\n", + " 'O70','O71','O72','O73','O74','O75','O76','O77','O78','O79',\n", + " 'O80','O81','O82','O83','O84','O85','O86','O87','O88','O89',\n", + " 'O90','O91','O92','O93','O94','O95','O96','O97','O98','O99') as P,\n", + " CAST(Second_ICD9_CM_Diagnosis_Code AS CHAR(3)) in ('630','631','632','633','634','635','636','637','638','639',\n", + " '640','641','642','643','644','645','646','647','648','649',\n", + " '650','651','652','653','654','655','656','657','658','659',\n", + " '660','661','662','663','664','665','666','667','668','669',\n", + " '670','671','672','673','674','675','676','677','678','679',\n", + " 'O00','O01','O02','O03','O04','O05','O06','O07','O08','O09',\n", + " 'O10','O11','O12','O13','O14','O15','O16','O17','O18','O19',\n", + " 'O20','O21','O22','O23','O24','O25','O26','O27','O28','O29',\n", + " 'O30','O31','O32','O33','O34','O35','O36','O37','O38','O39',\n", + " 'O40','O41','O42','O43','O44','O45','O46','O47','O48','O49',\n", + " 'O50','O51','O52','O53','O54','O55','O56','O57','O58','O59',\n", + " 'O60','O61','O62','O63','O64','O65','O66','O67','O68','O69',\n", + " 'O70','O71','O72','O73','O74','O75','O76','O77','O78','O79',\n", + " 'O80','O81','O82','O83','O84','O85','O86','O87','O88','O89',\n", + " 'O90','O91','O92','O93','O94','O95','O96','O97','O98','O99') as S,\n", + " CAST(Third_ICD9_CM_Diagnosis_Code AS CHAR(3)) in ('630','631','632','633','634','635','636','637','638','639',\n", + " '640','641','642','643','644','645','646','647','648','649',\n", + " '650','651','652','653','654','655','656','657','658','659',\n", + " '660','661','662','663','664','665','666','667','668','669',\n", + " '670','671','672','673','674','675','676','677','678','679',\n", + " 'O00','O01','O02','O03','O04','O05','O06','O07','O08','O09',\n", + " 'O10','O11','O12','O13','O14','O15','O16','O17','O18','O19',\n", + " 'O20','O21','O22','O23','O24','O25','O26','O27','O28','O29',\n", + " 'O30','O31','O32','O33','O34','O35','O36','O37','O38','O39',\n", + " 'O40','O41','O42','O43','O44','O45','O46','O47','O48','O49',\n", + " 'O50','O51','O52','O53','O54','O55','O56','O57','O58','O59',\n", + " 'O60','O61','O62','O63','O64','O65','O66','O67','O68','O69',\n", + " 'O70','O71','O72','O73','O74','O75','O76','O77','O78','O79',\n", + " 'O80','O81','O82','O83','O84','O85','O86','O87','O88','O89',\n", + " 'O90','O91','O92','O93','O94','O95','O96','O97','O98','O99') as T,\n", + " CAST(Fourth_ICD9_CM_Diagnosis_Code AS CHAR(3)) in ('630','631','632','633','634','635','636','637','638','639',\n", + " '640','641','642','643','644','645','646','647','648','649',\n", + " '650','651','652','653','654','655','656','657','658','659',\n", + " '660','661','662','663','664','665','666','667','668','669',\n", + " '670','671','672','673','674','675','676','677','678','679',\n", + " 'O00','O01','O02','O03','O04','O05','O06','O07','O08','O09',\n", + " 'O10','O11','O12','O13','O14','O15','O16','O17','O18','O19',\n", + " 'O20','O21','O22','O23','O24','O25','O26','O27','O28','O29',\n", + " 'O30','O31','O32','O33','O34','O35','O36','O37','O38','O39',\n", + " 'O40','O41','O42','O43','O44','O45','O46','O47','O48','O49',\n", + " 'O50','O51','O52','O53','O54','O55','O56','O57','O58','O59',\n", + " 'O60','O61','O62','O63','O64','O65','O66','O67','O68','O69',\n", + " 'O70','O71','O72','O73','O74','O75','O76','O77','O78','O79',\n", + " 'O80','O81','O82','O83','O84','O85','O86','O87','O88','O89',\n", + " 'O90','O91','O92','O93','O94','O95','O96','O97','O98','O99') as F,\n", + " CAST(Fifth_ICD9_CM_Diagnosis_Code AS CHAR(3)) in ('630','631','632','633','634','635','636','637','638','639',\n", + " '640','641','642','643','644','645','646','647','648','649',\n", + " '650','651','652','653','654','655','656','657','658','659',\n", + " '660','661','662','663','664','665','666','667','668','669',\n", + " '670','671','672','673','674','675','676','677','678','679',\n", + " 'O00','O01','O02','O03','O04','O05','O06','O07','O08','O09',\n", + " 'O10','O11','O12','O13','O14','O15','O16','O17','O18','O19',\n", + " 'O20','O21','O22','O23','O24','O25','O26','O27','O28','O29',\n", + " 'O30','O31','O32','O33','O34','O35','O36','O37','O38','O39',\n", + " 'O40','O41','O42','O43','O44','O45','O46','O47','O48','O49',\n", + " 'O50','O51','O52','O53','O54','O55','O56','O57','O58','O59',\n", + " 'O60','O61','O62','O63','O64','O65','O66','O67','O68','O69',\n", + " 'O70','O71','O72','O73','O74','O75','O76','O77','O78','O79',\n", + " 'O80','O81','O82','O83','O84','O85','O86','O87','O88','O89',\n", + " 'O90','O91','O92','O93','O94','O95','O96','O97','O98','O99') as FF\n", + ")\n", + "Result (\n", + "\n", + " FIRST (patient_identifier OF ANY(P,S,T,F,FF,B)) AS patient_identifier,\n", + " ACCUMULATE (CAST (PRC_DESC AS VARCHAR(40)) OF ANY(P,S,T,F,FF,B)) AS path,\n", + " ACCUMULATE(Total_Charge_Per_Line of ANY(P,S,T,F,FF,B)) as cost,\n", + " FIRST(total_cost of any(P,S,T,F,FF,B)) as total_cost, \n", + " FIRST(label of any(P,S,T,F,FF,B)) as label,\n", + " ACCUMULATE(Billing_Provider_Last_Name_or_Group of ANY(P,S,T,F,FF,B)) as prov_group,\n", + " ACCUMULATE(Billing_Provider_FEIN of ANY(P,S,T,F,FF,B)) as provider\n", + ")\n", + ") p\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "829ccac6-c052-4f4b-9924-67507b34052e", + "metadata": {}, + "source": [ + "

Below table calculates the chapterwise cost for maternity procedures.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "32038832-7695-4528-9057-35e760c542ec", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.mat_chap_comp as (\n", + "SELECT \n", + "chap, SUM(total_cost) AS total_cost, SUM(patients) AS patients, (SUM(avg_cost)/2) AS avg_cost \n", + "FROM\n", + "(\n", + "SELECT CASE WHEN chapter like '64%' THEN 'Normal Delivery' ELSE 'Delivery with Complications' END as chap,\n", + "SUM(Total_Charge_Per_Line) total_cost, COUNT(DISTINCT patient_identifier) patients, (total_cost/patients) avg_cost\n", + "FROM (\n", + " SELECT *\n", + " FROM(\n", + " select\n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier,\n", + " CAST(First_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_1, CAST(Second_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_2,\n", + " CAST(Third_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_3, CAST(Fourth_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_4,\n", + " CAST(Fifth_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_5, Total_Charge_Per_Line\n", + " from DEMO_HealthcareFWA.WC_SV1_MAT\n", + " UNION ALL\n", + " select\n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier,\n", + " CAST(First_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_1, CAST(Second_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_2,\n", + " CAST(Third_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_3, CAST(Fourth_ICD_9_CM_Diagnosis_Code AS CHAR(3)) as chp_4,\n", + " CAST(Fifth_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_5, CAST(Total_Charge_Per_Line AS FLOAT)\n", + " from DEMO_HealthcareFWA.WC_SV2_MAT\n", + " ) d\n", + " UNPIVOT EXCLUDE NULLS\n", + " (\n", + " chapter FOR diag_level IN\n", + " (chp_1, chp_2, chp_3, chp_4, chp_5)\n", + " ) Tmp\n", + " where CAST(chapter AS CHAR(2)) in ('64','65')--,'67','O0','O1','O2','O3','O4','O5','O6','O7','O8','O9','V2','Z3','76','77')\n", + ") up\n", + "GROUP BY chap\n", + "\n", + "UNION\n", + "\n", + "SELECT CASE WHEN chapter in ('Z34','O80','O82') THEN 'Normal Delivery' ELSE 'Delivery with Complications' END as chap,\n", + "SUM(Total_Charge_Per_Line) total_cost, COUNT(DISTINCT patient_identifier) patients, (total_cost/patients) avg_cost\n", + "FROM (\n", + " SELECT *\n", + " FROM(\n", + " select\n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier,\n", + " CAST(First_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_1, CAST(Second_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_2,\n", + " CAST(Third_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_3, CAST(Fourth_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_4,\n", + " CAST(Fifth_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_5, Total_Charge_Per_Line\n", + " from DEMO_HealthcareFWA.WC_SV1_MAT\n", + " UNION ALL\n", + " select\n", + " (Claim_Administrator_Claim_Number || '_' || Insurer_FEIN) as patient_identifier,\n", + " CAST(First_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_1, CAST(Second_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_2,\n", + " CAST(Third_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_3, CAST(Fourth_ICD_9_CM_Diagnosis_Code AS CHAR(3)) as chp_4,\n", + " CAST(Fifth_ICD9_CM_Diagnosis_Code AS CHAR(3)) as chp_5, CAST(Total_Charge_Per_Line AS FLOAT)\n", + " from DEMO_HealthcareFWA.WC_SV2_MAT\n", + " ) d\n", + " UNPIVOT EXCLUDE NULLS\n", + " (\n", + " chapter FOR diag_level IN\n", + " (chp_1, chp_2, chp_3, chp_4, chp_5)\n", + " ) Tmp\n", + " where chapter in ('Z34','O80','O82','O60','O61','O62','O63','O64','O65','O66','O67','O68','O69','O70','O71','O72','O73','O74','O75','O76','O77')--,'67','O0','O1','O2','O3','O4','O5','O6','O7','O8','O9','V2','Z3','76','77')\n", + ") up\n", + "GROUP BY chap) CombineResults\n", + "GROUP BY chap\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "a7bb52be-8ce9-4c45-98f4-43a6f237ea53", + "metadata": {}, + "source": [ + "

Below table lists the top maternity procedures.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b2cf4a19-7494-476c-a5a4-9e0f97833edb", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.mat_top_proc as (\n", + "SELECT\n", + " RANK() OVER (ORDER BY TOTAL_COST DESC) as COST_RANK,\n", + " CAST(Description AS VARCHAR(45)) as \"Procedure\", TOTAL_COST\n", + "FROM (\n", + " select \n", + " COALESCE(\"Sub_Category\",\"SHORT DESCRIPTION\") as Description, \n", + " CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as TOTAL_COST\n", + " FROM (\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV1_MAT\n", + " WHERE HCPCS_Line_Procedure_Billed_Code is not NULL\n", + "\n", + " UNION ALL\n", + "\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line,\n", + " HCPCS_Line_Procedure_Billed_Code, CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV2_MAT\n", + " WHERE HCPCS_Line_Procedure_Billed_Code is not NULL\n", + " ) d\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_CPT_Coding_temp\n", + " ON\n", + " (HCPCS_Line_Procedure_Billed_Code BETWEEN \"FROM\" AND COALESCE(\"TO\",\"FROM\")) AND\n", + " (LENGTH(HCPCS_Line_Procedure_Billed_Code) = LENGTH(\"FROM\"))\n", + " LEFT JOIN DEMO_HealthcareFWA.WC_HCPCS_Coding\n", + " ON HCPCS_Line_Procedure_Billed_Code = HCPC\n", + " GROUP BY Description\n", + ") d\n", + "QUALIFY COST_RANK <= 10\n", + ") WITH DATA ; " + ] + }, + { + "cell_type": "markdown", + "id": "5c165e0b-45e8-40a4-ba93-362039ced5e0", + "metadata": {}, + "source": [ + "

Below tables lists the maternity provider information.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e40db083-ea73-4447-a28b-e8fef91cbc55", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.mat_path_prov as (\n", + "SELECT\n", + "Billing_Provider_FEIN,\n", + "SUM(CASE \n", + " WHEN First_ICD9_CM_Diagnosis_Code in ('O82', 'Z38.01', 'Z38,62', 'Z38.64', 'Z38.66', 'Z38.31', 'Z38.69','740') THEN 1\n", + " WHEN Second_ICD9_CM_Diagnosis_Code in ('O82', 'Z38.01', 'Z38,62', 'Z38.64', 'Z38.66', 'Z38.31', 'Z38.69','740') THEN 1\n", + " WHEN Third_ICD9_CM_Diagnosis_Code in ('O82', 'Z38.01', 'Z38,62', 'Z38.64', 'Z38.66', 'Z38.31', 'Z38.69','740') THEN 1\n", + " WHEN Fourth_ICD9_CM_Diagnosis_Code in ('O82', 'Z38.01', 'Z38,62', 'Z38.64', 'Z38.66', 'Z38.31', 'Z38.69','740') THEN 1\n", + " WHEN Fifth_ICD9_CM_Diagnosis_Code in ('O82', 'Z38.01', 'Z38,62', 'Z38.64', 'Z38.66', 'Z38.31', 'Z38.69','740') THEN 1\n", + " WHEN HCPCS_Line_Procedure_Billed_Code in ('59510','59514','59515') THEN 1\n", + " WHEN ICD9_CM_Principal_Procedure_Code in ('740','741','742','744','749','7499') THEN 1\n", + " ELSE 0\n", + " END\n", + ") AS \"Total Cesarean Deliveries\",\n", + "SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code BETWEEN '76801' AND '76817' AND LENGTH(HCPCS_Line_Procedure_Billed_Code) = 5 THEN 1 ELSE 0 END) \"Total Ultrasound Performed\",\n", + "SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code in ('99291','99292') then 1 ELSE 0 END) \"Total Neonatal ICU Admissions\",\n", + "SUM(CASE WHEN HCPCS_Line_Procedure_Billed_Code in ('82105') then 1 ELSE 0 END) as \"Total Alpha Fetoprotein Tests\",\n", + "SUM(Total_Charge_Per_Line) \"Total Costs\"\n", + "FROM (\n", + "select\n", + " Billing_Provider_FEIN, Total_Charge_Per_Line,\n", + " First_ICD9_CM_Diagnosis_Code,Second_ICD9_CM_Diagnosis_Code,Third_ICD9_CM_Diagnosis_Code,Fourth_ICD9_CM_Diagnosis_Code,\n", + " Fifth_ICD9_CM_Diagnosis_Code,ICD9_CM_Principal_Procedure_Code,HCPCS_Line_Procedure_Billed_Code\n", + "from DEMO_HealthcareFWA.WC_MAT_PATIENT_ALL_BILLS\n", + ") d\n", + "GROUP BY Billing_Provider_FEIN\n", + " ) WITH DATA ; \n", + " " + ] + }, + { + "cell_type": "markdown", + "id": "4b3766d1-b802-48cf-8ba4-0da558451954", + "metadata": {}, + "source": [ + "

Below table gives information on maternity facility.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "46e3062e-71f9-4cb1-b4f2-8e07025f42a8", + "metadata": {}, + "outputs": [], + "source": [ + "CREATE TABLE DEMO_USER.mat_top_facil as (\n", + "SELECT \n", + " RANK() OVER (ORDER BY COST DESC) as COST_RANK, d.Billing_Provider_FEIN,\n", + " Facility_Name, Billing_Provider_First_Name, Billing_Provider_Last_Name_or_Group, COST\n", + "FROM\n", + "(\n", + " SELECT Billing_Provider_FEIN, CAST(SUM(Total_Charge_Per_Line) AS DECIMAL(20,2)) as COST\n", + " FROM (\n", + " select \n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line, Billing_Provider_FEIN,\n", + " CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV1_MAT\n", + "\n", + " UNION ALL\n", + "\n", + " select\n", + " CAST(Total_Charge_Per_Line AS FLOAT) as Total_Charge_Per_Line, Billing_Provider_FEIN,\n", + " CAST(Date_of_Bill as CHAR(4)) as DOB\n", + " from DEMO_HealthcareFWA.WC_SV2_MAT\n", + " ) d\n", + " GROUP BY Billing_Provider_FEIN\n", + ") d\n", + "LEFT JOIN DEMO_HealthcareFWA.WC_PROVIDER_LOOKUP lu\n", + "ON lu.Billing_Provider_FEIN = d.Billing_Provider_FEIN\n", + "QUALIFY COST_RANK <= 10\n", + ") WITH DATA ; ;" + ] + }, + { + "cell_type": "markdown", + "id": "638781ca-acb2-4f6d-8e2b-fcefb0a73c75", + "metadata": {}, + "source": [ + "

Conclusion:

\n", + "

\n", + "In this notebook we have created the tables which are then used in the dashboard for the reporting. Here we can see how we have used Teradata's inbuild functions to calculate and derive complex logic and calutions. The dataprep step makes it seamless and easy to grasp the insights using visual dashboards.
Please review the insights derived from the source data and assess how they might assist in identifying Fraud, Waste, and Abuse (FWA).

\n", + "

\n", + "

\n", + " \n", + " Superset Dashboards\n", + "

\n" + ] + }, + { + "cell_type": "markdown", + "id": "21fffe00-fdfd-46b7-92e1-d4a68971caef", + "metadata": {}, + "source": [ + "
\n", + "7. Cleanup" + ] + }, + { + "cell_type": "markdown", + "id": "18db3975-fe9c-41a0-8edc-6ba34a904269", + "metadata": {}, + "source": [ + "

Work Tables

\n", + "

Cleanup work tables to prevent errors next time. This section drops all the views and tables created during the demonstration.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37d7777b-5189-448e-93d4-0d1474c5b5ea", + "metadata": {}, + "outputs": [], + "source": [ + "drop view demo_user.wc_bk_v_npath_qry;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "61c7ce7b-4594-4d30-9a34-6d89b7f1592c", + "metadata": {}, + "outputs": [], + "source": [ + "drop view demo_user.va_bk_v_pat_enc_lt_90d;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d801593e-4969-405b-a92e-6718e7c93562", + "metadata": {}, + "outputs": [], + "source": [ + "drop view demo_user.va_bk_v_a1c_enc;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4d896beb-40c5-4a0e-865c-678a80404855", + "metadata": {}, + "outputs": [], + "source": [ + "drop view demo_user.va_bk_v_diabetes_codes;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "32edb73e-7cc1-44c3-b5d5-197401db2a8a", + "metadata": {}, + "outputs": [], + "source": [ + "drop view demo_user.va_bk_diab_strt;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "de6fc787-26f7-4e24-b53a-df26274b4713", + "metadata": {}, + "outputs": [], + "source": [ + "drop view demo_user.va_bk_v_a1c_per_yr;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "309656bc-f490-4e80-8024-2913fa6b2a9e", + "metadata": {}, + "outputs": [], + "source": [ + "drop view demo_user.va_fr_v_enc_costs;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f7ba7640-7774-4ff8-a4f9-1faefc456732", + "metadata": {}, + "outputs": [], + "source": [ + "drop view demo_user.va_bk_v_sel_hrt_rnl;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "91619d84-0a12-4c72-a7e0-6975f06507dc", + "metadata": {}, + "outputs": [], + "source": [ + "drop view demo_user.wc_fr_v_npath_prg_qry;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "04334089-b383-4392-ba1d-d2bccf4d0f4f", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.chapter_summary ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7357127e-da07-4a3e-9f9b-99adb08867a1", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.overview_chapters ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "408974c4-5871-43cf-a286-2b5e4866e9d9", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.overview_procedures ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2cb1637-1a07-4875-8c66-6b0cf1aa45dc", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.overview_providers ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a64122d7-a032-4e27-9d79-393176eca29d", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.msk_comorb_conds ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5bbb237-5dca-4b3b-a144-3c21e41df067", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.msk_proc_groups ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7db1f1f7-8d13-4564-ab76-5eee2018b64a", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.msk_procedures ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3c16ffc3-f63d-4c8f-ac27-fd581fbda89a", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.msk_providers ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4d44a57c-e310-458b-b488-78d0f4c30fce", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.msk_drilldown_proc_groups ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cf9d7f36-7317-4477-b679-15f64102b694", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.msk_drilldown_proc_grp_counties ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d00d72d-e39d-4184-9d42-cb270d8e9bc3", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.msk_drilldown_proc_grp_procedures ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7ae05dc7-25fa-4d71-a5e0-09d0fd78002c", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.msk_drilldown_proc_grp_provs ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "71ecacf0-c0cd-4aa4-8516-b124a97a77e5", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.srg_averages ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6f12e65e-46e7-41ae-9e12-8c9a666ca701", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.srg_mri ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "959f1a12-1e0d-4a14-8c00-84f865c90971", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.msk_pathwys_prov ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c70a945c-db2a-469b-86cd-697a007e997a", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.surg_pathways ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29cc08b8-ecc0-47e5-b6fd-df06e209e63c", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.nsurg_pathways ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2bc5045-69a3-4386-84c9-67d93263f1ad", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.Total_cost_for_procedure_groups_dbt ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "91754732-037b-44b8-aa5c-2549c5f2ba34", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.Total_cost_for_procedures_dbt ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7368ec86-1945-4b3b-a032-815a186e911d", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.Hemoglobin_count_dbt ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c6315968-551d-432e-b05b-29c6c7a06782", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.Total_cost_for_facilities_dbt ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d0f6a8b-21fb-40bb-9101-6aeb626b7a69", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.dbt_drilldown_proc_groups ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "481e7edc-c33a-4f48-a64f-7849aad3803d", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.dbt_drilldown_proc_grp_procedures ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3899b2d7-5b2e-460f-807b-a3aa242e7af1", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.dbt_drilldown_proc_grp_counties ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f9f9840-16cc-440e-8b72-76a8bc6ae75e", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.dbt_drilldown_proc_grp_provs ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3fa08018-f143-479a-a9d6-fa83a89fa4c5", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.dbt_pathways ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2f67f195-334a-45cc-b94b-b2923c76ae74", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.dbt_pathwys_prov ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f0942531-051a-481c-9e8c-cd098782bec7", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.mat_chap_comp ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ef856fd3-6194-41a3-812d-f91d6e77462b", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.mat_proc_grps ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5290f888-286d-495b-946a-82e3081aa724", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.mat_top_proc ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b7bd00dc-cd15-4713-8f22-86cfe81acb29", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.mat_top_facil ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "123a2bd6-d09c-4aa1-8c2a-d7e97eede289", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.mat_pathways ;" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0e8640fa-f4b3-425a-a589-d9d6a295172c", + "metadata": {}, + "outputs": [], + "source": [ + "drop table demo_user.mat_path_prov ;" + ] + }, + { + "cell_type": "markdown", + "id": "829daa6c-a278-487e-8f51-c2fbd8d04064", + "metadata": {}, + "source": [ + "
\n", + "

Databases and Tables

\n", + "

The following code will clean up tables and databases created above.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f755d4c-5347-4d03-b046-afb48a009ffc", + "metadata": {}, + "outputs": [], + "source": [ + "call remove_data('DEMO_HealthcareFWA'); " + ] + }, + { + "cell_type": "markdown", + "id": "6fcd4a6c-0bb4-4371-8bc4-b8f527af4b3c", + "metadata": {}, + "source": [ + "" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Teradata SQL", + "language": "Teradata SQL", + "name": "teradatasql" + }, + "language_info": { + "codemirror_mode": "Teradata SQL", + "file_extension": ".tdrs", + "mimetype": "application/vnd.teradata.resultset", + "name": "Teradata SQL", + "nbconvert_exporter": "", + "pygments_lexer": "", + "version": "16.20" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/UseCases/FWA_Healthcare/FWA_Reporting_in_Healthcare.ipynb b/UseCases/FWA_Healthcare/FWA_Reporting_in_Healthcare.ipynb new file mode 100644 index 00000000..49f03b34 --- /dev/null +++ b/UseCases/FWA_Healthcare/FWA_Reporting_in_Healthcare.ipynb @@ -0,0 +1,334 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8020ca33-aad1-4e50-876e-0c4c660e3195", + "metadata": {}, + "source": [ + "
\n", + "

\n", + " AI/ML-Powered Evidence-Based Pathway Analytics for Fraud, Waste, and Abuse (FWA) Detection in Healthcare
\n", + " \"Teradata\"\n", + "

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "f28724a7-cdde-4bb8-839d-93e0f9e4cebb", + "metadata": {}, + "source": [ + "

Introduction
\n", + "

Current FWA(Fraud, waste and abuse) detection processes in healthcare industry rely heavily on traditional queries and manual auditing, which are slow and not scalable. Similarly, identifying cost inefficiencies and poor adherence to Value-Based Care models example in complex musculoskeletal (MSK) cases is difficult due to scattered data and limited advanced analytics. Key challenges include:\n", + "

\n", + "

\n", + " Proposed Solution
Evidence-Based Pathway Monitoring Using AI/ML\n", + "Implement a robust analytics platform leveraging machine learning, npath analysis, and visual dashboards to detect deviations from evidence based medication(EBM) and reduce fraud,waste and abuse(FWA). With the help of the information in the dashboards we can find out the deviations in the recommended practices like Surgical interventions without appropriate diagnostics or conservative treatments. Cases where diagnostics are skipped or treatment is prematurely escalated. Patient journey flows across diagnostic and treatment steps. Predict patterns of behavior that frequently lead to FWA incidents.\n", + "

\n", + " Benefits\n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "44397f16-5321-448a-83c1-f895ea2a7cd5", + "metadata": {}, + "source": [ + "

Solution Steps
\n", + "

Due to the size and complexity of the solution, we have divided the solution approach into two steps.

    \n", + "
    \n", + " \n", + " Data processing\n", + "

    This notebook loads the source data and does the data-processing required for the dashboard reporting. The target tables created in the notebook are then be used for the reporting.

    \n", + "\n", + "
    \n", + " \n", + " Superset Dashboards\n", + "


    The reporting dashboard based on the tables created in using dataprocessing sqls.

    \n", + "
\n", + "

" + ] + }, + { + "cell_type": "markdown", + "id": "34fd4845-8cd4-44ad-b2e9-07e6be0675f5", + "metadata": {}, + "source": [ + "
\n", + "

1. Connect to Vantage, Import python packages and explore the dataset

\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "931b0dfe-4e25-44b2-8896-27e3b3107042", + "metadata": {}, + "outputs": [], + "source": [ + "#import libraries\n", + "import getpass\n", + "from teradataml import *\n", + "\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "warnings.simplefilter(action='ignore', category=DeprecationWarning)\n", + "warnings.simplefilter(action='ignore', category=RuntimeWarning)\n", + "warnings.simplefilter(action='ignore', category=FutureWarning)\n", + "\n", + "display.max_rows=5" + ] + }, + { + "cell_type": "markdown", + "id": "9f103944-fd7b-487e-aa7c-6ae303c82db2", + "metadata": {}, + "source": [ + "

We will be prompted to provide the password. We will enter the password, press the Enter key, and then use the down arrow to go to the next cell.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8357989a-319e-4cf0-b053-b7ec9b934b75", + "metadata": {}, + "outputs": [], + "source": [ + "%run -i ../startup.ipynb\n", + "eng = create_context(host = 'host.docker.internal', username='demo_user', password = password)\n", + "print(eng)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1ef190b7-b335-46cc-9ab0-82a187457a90", + "metadata": {}, + "outputs": [], + "source": [ + "%%capture\n", + "execute_sql('''SET query_band='DEMO=FF_FWA_Reporting_in_Healthcare_Python.ipynb;' UPDATE FOR SESSION; ''')" + ] + }, + { + "cell_type": "markdown", + "id": "3bfe3a6e-23e8-4540-a9b2-ae17ad3acad5", + "metadata": {}, + "source": [ + "

Getting Data for This Demo

\n", + "

We have provided data for this demo on cloud storage. We have the option of either running the demo using foreign tables to access the data without using any storage on our environment or downloading the data to local storage, which may yield somewhat faster execution. However, we need to consider available storage. There are two statements in the following cell, and one is commented out. We may switch which mode we choose by changing the comment string.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8adc50c1-007e-45d1-8eb4-46534565c192", + "metadata": {}, + "outputs": [], + "source": [ + "%run -i ../run_procedure.py \"call get_data('DEMO_HealthcareFWA_cloud');\"\n", + " # takes about 30 seconds, estimated space: 0Mb\n", + "#%run -i ../run_procedure.py \"call get_data('DEMO_HealthcareFWA_local');\" \n", + "# takes about 7minutes, estimated space: 800Mb" + ] + }, + { + "cell_type": "markdown", + "id": "5eacf4c7-3a3b-4a26-95aa-a245448ff61d", + "metadata": {}, + "source": [ + "

Optional step – We should execute the below step only if we want to see the status of databases/tables created and space used.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e210987b-966a-4afe-a1cc-5e5197e0c108", + "metadata": {}, + "outputs": [], + "source": [ + "%run -i ../run_procedure.py \"call space_report();\"" + ] + }, + { + "cell_type": "markdown", + "id": "76dd0790-8b89-4848-8c39-8142af1fab97", + "metadata": {}, + "source": [ + "
\n", + "

2. Data Exploration

" + ] + }, + { + "cell_type": "markdown", + "id": "843a8104-42c3-46d5-b97b-03fa6c5a15a3", + "metadata": {}, + "source": [ + "

Let us start by listing all tables/datasets available for us.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3650ea30-d063-4cff-ac39-03424db2c626", + "metadata": {}, + "outputs": [], + "source": [ + "db_list_tables('DEMO_HealthcareFWA')" + ] + }, + { + "cell_type": "markdown", + "id": "43f0b3b9-ff0f-409d-8b81-45ef88791ace", + "metadata": {}, + "source": [ + "

As we can see from above, we have data in tables about the Procedure, conditions, medications etc. We also have patients billing history e.g in Wc_Sv1header, Wc_Sv1detail. We have information about musculoskeletal, diabetics and maternity cases.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4492ccb9-fdf0-4549-811c-33cf713b37bc", + "metadata": {}, + "outputs": [], + "source": [ + "df_proc = DataFrame(in_schema(\"DEMO_HealthcareFWA\", \"Va_Procedures\"))\n", + "df_proc" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "faeaaffb-4e15-45b8-bb79-8d7a45c3785d", + "metadata": {}, + "outputs": [], + "source": [ + "df_sv1_header = DataFrame(in_schema(\"DEMO_HealthcareFWA\", \"Wc_Sv1header\"))\n", + "df_sv1_header" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75e00d48-cb6c-4d49-9237-f66f43ae2f5d", + "metadata": {}, + "outputs": [], + "source": [ + "df_sv1_detail = DataFrame(in_schema(\"DEMO_HealthcareFWA\", \"Wc_Sv1detail\"))\n", + "df_sv1_detail" + ] + }, + { + "cell_type": "markdown", + "id": "fc52eac9-6be3-40e9-91b3-5701416ceb36", + "metadata": {}, + "source": [ + "

You can check the information available in the other tables also. In the Dataprocessing Notebook we can see how we derive meaningful information from these tables and used them in reporting.

\n" + ] + }, + { + "cell_type": "markdown", + "id": "73f29794-0df2-4cf2-b08f-490e53092991", + "metadata": {}, + "source": [ + "

The dasboard looks like below and it uses the tables created in the dataprocessing step.\n", + "\n", + "

\"fwa_dashboard\"
\n" + ] + }, + { + "cell_type": "markdown", + "id": "c348f7c4-19a6-4e56-a1e1-232ce5b397d0", + "metadata": {}, + "source": [ + "

\n", + "

\n", + " \n", + " Superset Dashboards\n", + "

Please review the insights derived from the source data and assess how they might assist in identifying Fraud, Waste, and Abuse (FWA).

" + ] + }, + { + "cell_type": "markdown", + "id": "4e7d48f1-dd97-4b0a-b3eb-edf5744f1293", + "metadata": {}, + "source": [ + "
\n", + "3. Cleanup" + ] + }, + { + "cell_type": "markdown", + "id": "45884c10-da59-41ef-a274-28ccc0e111e5", + "metadata": {}, + "source": [ + "

Databases and Tables

\n", + "

The following code will clean up tables and databases created above.

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b83294e0-2135-4559-8a11-d2324aee7df9", + "metadata": {}, + "outputs": [], + "source": [ + "%run -i ../run_procedure.py \"call remove_data('DEMO_HealthcareFWA');\" # Takes 10 seconds" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "96de2215-a095-44cb-8354-c70eebbade74", + "metadata": {}, + "outputs": [], + "source": [ + "remove_context()" + ] + }, + { + "cell_type": "markdown", + "id": "9e2f6327-b156-43be-b7be-a1f3859bbf50", + "metadata": {}, + "source": [ + "" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/UseCases/FWA_Healthcare/images/fwa-dashboard-msk.jpg b/UseCases/FWA_Healthcare/images/fwa-dashboard-msk.jpg new file mode 100644 index 00000000..0db634eb Binary files /dev/null and b/UseCases/FWA_Healthcare/images/fwa-dashboard-msk.jpg differ diff --git a/UseCases/FWA_Healthcare/images/fwa-dashboard.jpg b/UseCases/FWA_Healthcare/images/fwa-dashboard.jpg new file mode 100644 index 00000000..80d8dfc7 Binary files /dev/null and b/UseCases/FWA_Healthcare/images/fwa-dashboard.jpg differ