📣 We have moved! All of the most up-to-date information on WebPT Products can be found in its new home on WebPT Discover.

Standard Extract Queries (Snowflake)

We've put together some sample queries that show common joins and reports that can be created using tables with the ‘TYPE’: Standard Extract.

SAMPLE QUERIES

EMR: Patient Cases, Notes, and Diagnosis Codes

with icd as (select distinct i.case_id,
                    i.icd_type,
                    i.icd_code,
                    row_number() OVER (partition BY i.case_id, i.icd_type order by c.CASEID) as code_number
                from datamart.icd_codes i)
select
case when stage_visit = 1 and emr_charge_record_id = FIRST_VALUE(emr_charge_record_id) OVER (PARTITION BY "Emr Visit Id" ORDER BY emr_charge_record_id rows between unbounded preceding and unbounded following) then 1 else 0 end as "Visits"
,case when stage_IE = 1 and emr_charge_record_id = FIRST_VALUE(emr_charge_record_id) OVER (PARTITION BY "Emr Visit Id" ORDER BY emr_charge_record_id rows between unbounded preceding and unbounded following) then 1 else 0 end as "IEs"
,case when stage_discharge = 1 and emr_charge_record_id = FIRST_VALUE(emr_charge_record_id) OVER (PARTITION BY "Emr Visit Id" ORDER BY emr_charge_record_id rows between unbounded preceding and unbounded following) then 1 else 0 end as "Discharges"
,case when stage_visit <> 0 then "Units" else 0 end as "Billed Units"
,*
from (
select case when v.apttype in ('DN', 'OD')
                 AND v.doc_id > 0
                 AND v.status = 'A'
                 AND v.date_finalized is not null then 1 else 0 end as stage_visit,
       case when v.apttype in ('IE')
                 AND v.doc_id > 0
                 AND v.status = 'A'
                 and v.date_finalized is not null then 1 else 0 end as stage_IE,
       case when c.status IN ('A','D')
                AND v.status IN ('A','P')
                AND v.apttype NOT IN ('CN','NS')
                AND v.includedailynote = 0
                AND v.date_finalized IS NOT NULL
                AND p.patient_status != 'I' then 1 else 0 end stage_discharge
,CASE WHEN b.cpt IN('97010','97012','97014','G0283','G0282','G0281','97016','97018','97022','97024','97026','97028','97039','96920','97610') AND COALESCE(v.visit_type,'') != 'Initial Examination' THEN b.units ELSE 0 END AS "Common Indirect Units"
,CASE WHEN b.cpt IN( '97110','97530','97140','97112') AND COALESCE(v.visit_type,'') != 'Initial Examination' THEN b.units ELSE 0 END AS "Core Direct Units"
,v.doc_id
,v.includedailynote as "Include Daily Note"
,v.visit_id as "Emr Visit Id"
,v.case_id as "Case Id"
,(date_trunc('day', v.visit_date::date)) as "Visit Date"
,v.visit_type as "Visit Type"
,la.visit_type as "Included Visit Type"
,v.status as "Visit Status"
,v.apttype as "Visit Type Id"
,(date_trunc('day', v.date_finalized::date)) as "Date Finalized"
,v.clinic_id as "Clinic Id"
,v.place_of_service_code as "Pos Identifier"
,v.is_billable_visit as "Is Billable Visit"
,c.case_name as "Case Name"
,c.medicare as "Is Medicare"
,c.status as "Case Status"
,(date_trunc('day', c.case_creation_date::date)) as "Case Creation Date"
,(date_trunc('day', c.case_closed_date::date)) as "Case Closed Date"
,v.patient_id as "Patient Id"
,v.treating_pt as "Therapist Id"
,b.units as "Units"
,b.cpt as "Cpt Code"
,b.record_id as emr_charge_record_id
,cl.place_of_service_id "Place Of Service Id"
,cl.gpms_code as "Gpms Code"
,cl.revflow_company_id as "Revflow Company Id"
,cl.company_id as "Company Id"
,p.patient_account_number as "Patient Account Number"
,pi1.subscriber as "Subscriber"
,coalesce(pi1.insurance_company_name,'') as "Primary Insurance"
,coalesce(pi2.insurance_company_name,'') as "Secondary Insurance"
,coalesce(pi1.coinsurance,'') as "Primary Coinsurance"
,coalesce(pi2.coinsurance,'') as "Secondary Coinsurance"
,coalesce(pi1.copay,'') as "Primary Copay"
,coalesce(pi2.copay,'') as "Secondary Copay"
,ic101.icd_code as "ICD10_1"
,ic102.icd_code as "ICD10_2"
,ic103.icd_code as "ICD10_3"
,ic104.icd_code as "ICD10_4"
,ic105.icd_code as "ICD10_5"
,ic91.icd_code as "ICD9_1"
,ic92.icd_code as "ICD9_2"
,ic93.icd_code as "ICD9_3"
,ic94.icd_code as "ICD9_4"
,ic95.icd_code as "ICD9_5"
FROM SVW_VISITS v
INNER JOIN SVW_CASES c ON v.case_id = c.case_id
INNER JOIN SVW_CHARGES b ON v.visit_id = b.visit_id AND v.case_id = b.case_id AND v.visit_date = b.visit_date
LEFT JOIN SVW_PATIENT p ON v.PATIENT_ID = p.patient_id
LEFT JOIN SVW_PHYSICIAN ph ON c.referring_doc = ph.physician_id
LEFT JOIN SVW_VISITS la ON v.visit_id = la.includedailynoteid
INNER JOIN SVW_CLINICS cl ON v.clinic_id = cl.clinic_id
LEFT JOIN SVW_PATIENT_INSURANCE pi1 ON c.case_id = pi1.case_id AND c.primaryins = pi1.patient_identity_id AND pi1.insurance_order = 1
LEFT JOIN SVW_PATIENT_INSURANCE pi2 ON c.case_id = pi2.case_id AND c.secondaryins = pi2.patient_identity_id AND pi2.insurance_order = 2
left join icd ic101 ON c.case_id = ic101.case_id AND ic101.code_number = 1 and ic101.icd_type = 'Icd10'
left join icd ic102 ON c.case_id = ic102.case_id AND ic102.code_number = 2 and ic102.icd_type = 'Icd10'
left join icd ic103 ON c.case_id = ic103.case_id AND ic103.code_number = 3 and ic103.icd_type = 'Icd10'
left join icd ic104 ON c.case_id = ic104.case_id AND ic104.code_number = 4 and ic104.icd_type = 'Icd10'
left join icd ic105 ON c.case_id = ic105.case_id AND ic105.code_number = 5 and ic105.icd_type = 'Icd10'
left join icd ic91 ON c.case_id = ic91.case_id AND ic101.code_number = 1 and ic101.icd_type = 'Icd9'
left join icd ic92 ON c.case_id = ic92.case_id AND ic102.code_number = 2 and ic102.icd_type = 'Icd9'
left join icd ic93 ON c.case_id = ic93.case_id AND ic103.code_number = 3 and ic103.icd_type = 'Icd9'
left join icd ic94 ON c.case_id = ic94.case_id AND ic104.code_number = 4 and ic104.icd_type = 'Icd9'
left join icd ic95 ON c.case_id = ic95.case_id AND ic105.code_number = 5 and ic105.icd_type = 'Icd9') x;

Scheduled Visits Report

select appointment_type,
       appointment_id,
       calendar_title,
       case_id,
       check_in_time,
       check_out_time,
       clinic_id,
       end_date,
       start_date_time,
       parent_appointment_id,
       patient_id,
       start_date,
       therapist_id,
       appointment_creator_id,
       case when check_out_time is not null then 'Checked-Out'
            when check_in_time is not null then 'Checked-In'
            when v.apttype = 'CN' then 'Cancel'
            when v.apttype = 'NS' then 'No Show'
            else  'Other' end
          as appointment_status
from (select appointmnet_id as appointment_id,
             parent_appointment_id AS parent_appointment_id,
             to_char(sa.start_date,'MM/DD/YYYY') AS start_date,
             to_char(sa.start_date, 'HH12:MI AM') AS start_date_time,
             to_char(sa.end_date, 'HH12:MI AM') AS end_date,
             to_char(sa.check_in_time, 'HH12:MI AM') AS check_in_time,
             to_char(sa.check_out_time, 'HH12:MI AM') AS check_out_time,
             calendar_title as calendar_title,
             cl.clinic_id as clinic_id,
             therapist_id as therapist_id,
             appointment_type as appointment_type,
             case_id as case_id,
             patient_id as patient_id,
             appointment_creator_id as appointment_creator_id,
             row_number () over (partition by appointmnet_id order by start_date) as rnk
    from datamart.appointments sa
    inner join datamart.clinic cl on sa.clinic_id = cl.clinic_id
    left join datamart.visit v on sa.patient_id = v.patient_id and trunc(sa.start_date) = v.visit_date and v.apttype in ('CN','NS'))t
where rnk = 1

Missed Notes

select count(distinct sa.appointment_id) as notes
    ,c.clinic_name
    ,CASE WHEN coalesce(p.last_name,'') = '' THEN '' ELSE coalesce(p.last_name,'') || ',' || ' ' || coalesce(p.first_name) END as patient_name
    ,t.full_name as therapist_name  --calendar_name could be used here or the treating_therapist from the case if/when this is unavailable
    ,'Missing' as note_type
    ,trunc(start_date) as visit_date
from datamart.appointments sa
    inner join datamart.clinic c on sa.clinic_id = c.clinic_id
    inner join datamart.patient p on sa.patient_id = p.patient_id
    left join datamart.therapist t on sa.therapist_id = t.therapist_id
    left join datamart.visits v on sa.visit_id = v.visit_id and trunc(sa.start_date) = v.visit_date and v.apttype not in ('CN','NS') --Exclude cancel/no-show
where (appointment_status = 'active' or check_in_time is not null)
    and sa.appointment_id is not null
    and sa.patient_id !=0
    and v.visit_id is null
group by c.clinic_name
,CASE WHEN coalesce(p.last_name,'') = '' THEN '' ELSE coalesce(p.last_name,'') || chr(8218) || ' ' || coalesce(p.first_name) END
,t.full_name
,'Missing'
,trunc(start_date)

Open/Draft Notes

select count(distinct sa.appointment_id) as notes
  SELECT COUNT(DISTINCT la.visit_id) AS notes
    ,cl.clinic_name
    ,CASE WHEN coalesce(p.last_name,'') = '' THEN '' ELSE coalesce(p.last_name,'') || ',' || ' ' || coalesce(p.first_name) END as patient_name
    ,full_name as therapist_name
    ,'Draft' AS document_status
    ,la.apttype
    ,la.visit_date
FROM datamart.visits la
    INNER JOIN datamart.patient p ON la.patient_id = p.patient_id
    inner join datamart.clinic cl on la.clinic_id = cl.clinic_id
    inner join datamart.therapist t on la.treating_pt = t.therapist_id
    left join datamart.cases c on la.case_id = c.case_id and c.status = 'I'
where la.patient_id IS NOT NULL
    AND la.apttype NOT IN('CN','NS')
    AND la.date_finalized is null
    AND la.status = 'A'
    AND p.patient_status != 'I' --exclude inactive patients
    AND la.visit_date between '1/1/2020' and '1/31/2020'  --Just an example of a date range that could be used
group by  cl.clinic_name
,CASE WHEN coalesce(p.last_name,'') = '' THEN '' ELSE coalesce(p.last_name,'') || ',' || ' ' || coalesce(p.first_name) END
,full_name
,'Draft'
,la.apttype
,la.visit_date

Charges, Payments, and Adjustments (Ledger)

SELECT    dc.gpms_code as "Gpms Code"
          ,dc.charge_id as "Charge Id"
          ,dc.patient_account_number as "Patient Account Number"
          ,(date_trunc('day', dc.date_of_service::date)) as "Date of Service"
          ,(date_trunc('day', dc.charge_date::date)) as "Charge Date"
          ,dc.place_of_service_id as "Place Of Service Id"
          ,dc.pos_identifier as "Pos Identifier"
          ,dc.company_id as "Revflow Company Id"
          ,dc.webpt_billing_therapist_id as "Therapist Id"
          ,dc.cpt_code as "Cpt Code"
          ,dc.mod1 as "Mod1"
          ,dc.mod2 as "Mod2"
          ,dc.visit_id as "Revflow Visit Id"
          ,CASE
                    WHEN (
                                        dpa.payment_adjustment_id = FIRST_VALUE(dpa.payment_adjustment_id) OVER( partition BY dc.charge_id ORDER BY dpa.payment_adjustment_id rows BETWEEN UNBOUNDED PRECEDING AND       CURRENT row)) THEN COALESCE(dc.charge_amount, (0)::DOUBLE PRECISION)
                    WHEN (
                                        dpa.payment_adjustment_id IS NULL) THEN COALESCE(dc.charge_amount, (0)::DOUBLE PRECISION)
                    ELSE (0)::DOUBLE PRECISION
          END AS "Total Charges",
          CASE
                    WHEN (
                                        dpa.payment_adjustment_id = FIRST_VALUE(dpa.payment_adjustment_id) OVER( partition BY dc.charge_id ORDER BY dpa.payment_adjustment_id rows BETWEEN UNBOUNDED PRECEDING AND       CURRENT row)) THEN COALESCE(dc.total_pay_amt, (0)::DOUBLE PRECISION)
                    WHEN (
                                        dpa.payment_adjustment_id IS NULL) THEN COALESCE(dc.total_pay_amt, (0)::DOUBLE PRECISION)
                    ELSE (0)::DOUBLE PRECISION
          END AS "Total Payments",
          CASE
                    WHEN (
                                        dpa.payment_adjustment_id = FIRST_VALUE(dpa.payment_adjustment_id) OVER( partition BY dc.charge_id ORDER BY dpa.payment_adjustment_id rows BETWEEN UNBOUNDED PRECEDING AND       CURRENT row)) THEN COALESCE(dc.total_ins_pay_amt, (0))
                    WHEN (
                                        dpa.payment_adjustment_id IS NULL) THEN COALESCE(dc.total_ins_pay_amt, (0))
                    ELSE (0)
          END AS "Total Ins Payments",
          CASE
                    WHEN (
                                        dpa.payment_adjustment_id = FIRST_VALUE(dpa.payment_adjustment_id) OVER( partition BY dc.charge_id ORDER BY dpa.payment_adjustment_id rows BETWEEN UNBOUNDED PRECEDING AND       CURRENT row)) THEN COALESCE(dc.total_pat_pay_amt, (0))
                    WHEN (
                                        dpa.payment_adjustment_id IS NULL) THEN COALESCE(dc.total_pat_pay_amt, (0))
                    ELSE (0)
          END AS "Total Pat Payments",
          CASE
                    WHEN (
                                        dpa.payment_adjustment_id = FIRST_VALUE(dpa.payment_adjustment_id) OVER( partition BY dc.charge_id ORDER BY dpa.payment_adjustment_id rows BETWEEN UNBOUNDED PRECEDING AND       CURRENT row)) THEN COALESCE(dc.total_adj_amt, (0)::DOUBLE PRECISION)
                    WHEN (
                                        dpa.payment_adjustment_id IS NULL) THEN COALESCE(dc.total_adj_amt, (0)::DOUBLE PRECISION)
                    ELSE (0)::DOUBLE PRECISION
          END AS "Total Adjustments",
          CASE
                    WHEN (
                                        dpa.payment_adjustment_id = FIRST_VALUE(dpa.payment_adjustment_id) OVER( partition BY dc.charge_id ORDER BY dpa.payment_adjustment_id rows BETWEEN UNBOUNDED PRECEDING AND       CURRENT row)) THEN COALESCE(dc.total_ins_adj_amt, (0))
                    WHEN (
                                        dpa.payment_adjustment_id IS NULL) THEN COALESCE(dc.total_ins_adj_amt, (0))
                    ELSE (0)
          END AS "Total Ins Adjust",
          CASE
                    WHEN (
                                        dpa.payment_adjustment_id = FIRST_VALUE(dpa.payment_adjustment_id) OVER( partition BY dc.charge_id ORDER BY dpa.payment_adjustment_id rows BETWEEN UNBOUNDED PRECEDING AND       CURRENT row)) THEN COALESCE(dc.total_pat_adj_amt, (0))
                    WHEN (
                                        dpa.payment_adjustment_id IS NULL) THEN COALESCE(dc.total_pat_adj_amt, (0))
                    ELSE (0)
          END AS "Total Pat Adjust",
          CASE
                    WHEN (
                                        dpa.payment_adjustment_id = FIRST_VALUE(dpa.payment_adjustment_id) OVER( partition BY dc.charge_id ORDER BY dpa.payment_adjustment_id rows BETWEEN UNBOUNDED PRECEDING AND       CURRENT row)) THEN COALESCE(dc.owed_amt, (0))
                    WHEN (
                                        dpa.payment_adjustment_id IS NULL) THEN COALESCE(dc.owed_amt, (0))
                    ELSE (0)
          END AS "Owed Amount",
          CASE
                    WHEN (
                                        dpa.payment_adjustment_id = FIRST_VALUE(dpa.payment_adjustment_id) OVER( partition BY dc.charge_id ORDER BY dpa.payment_adjustment_id rows BETWEEN UNBOUNDED PRECEDING AND       CURRENT row)) THEN COALESCE(dc.units, (0))
                    WHEN (
                                        dpa.payment_adjustment_id IS NULL) THEN COALESCE(dc.units, (0))
                    ELSE (0)
          END AS "Total Units",
          (date_trunc('day', dpa.deposit_date::date)) as "Deposit Date",
          dpa.payment_code_id as "Payment Code Id",
          dpa.adjustment_code as "Adjustment Code",
          dpa.adjustment_description as "Adjustment Description",
          dpa.payment_amount as "Payment Amount",
          dpa.payment_type as "Payment Type",
          dpa.adjustment_amount as "Adjustment Amount",
          dpa.created_by as "Created By",
          (date_trunc('day', dpa.post_date::date)) AS "Post Date",
          dc.cur_insurance_class as "Cur Insurance Class",
          dc.cur_ins_class_desc as "Cur Insurance Class Desc",
          dc.cur_ins_name as "Cur Insurance Name",
          dc.cur_payer_name as "Cur Payer Name",
          dc.cur_payer_desc as "Cur Payer Desc",
          dc.primary_insurance_class as "Pri Insurance Class",
          dc.pri_ins_class_desc as "Pri Insurance Class Desc",
          dc.pri_ins_name as "Pri Insurance Name",
          dc.pri_payer_name as "Pri Payer Name",
          dc.pri_payer_desc as "Pri Payer Desc",
          dc.secondary_insurance_class as "Sec Insurance Class",
          dc.sec_ins_class_desc as "Sec Insurance Class Desc",
          dc.sec_ins_name as "Sec Insurance Name",
          dc.sec_payer_name as "Sec Payer Name",
          dc.sec_payer_desc as "Sec Payer Desc",
          dc.tertiary_insurance_class as "Ter Insurance Class",
          dc.ter_ins_class_desc as "Ter Insurance Class Desc",
          dc.ter_ins_name as "Ter Insurance Name",
          dc.ter_payer_name as "Ter Payer Name",
          dc.ter_payer_desc as "Ter Payer Desc",
          dc.revenue_center_id "Revenue Center Id"
FROM      SVW_BILLING_CHARGES dc
LEFT JOIN SVW_PAYMENT_ADJUSTMENTS dpa ON dc.company_id = dpa.company_id AND dc.charge_id = dpa.charge_id

Aging Insurance

select cur_insurance_class as "Cur Insurance Class"
,cur_ins_class_desc as "Cur Insurance Class Desc"
,cur_ins_name as "Cur Insurance Name"
,amt_current as "Amount Current"
,amt_30 as "30+ Days"
,amt_60 as "60+ Days"
,amt_90 as "90+ Days"
,amt_120 as "120+ Days"
,amt_150 as "150+ Days"
,amt_180 as "180+ Days"
,balance as "Balance"
,charges as "Total Charges"
,payments as "Total Payments"
,adjustments as "Total Adjustments"
,y.company_id as "Revflow Company Id"
,c.gpms_code as "Gpms Code"
,y.place_of_service_id as "Place Of Service Id"
,y.webpt_therapist_id as "Billing Therapist Id"
,y.patient_account_number as "Patient Account Number"
,y.CPT_CODE as "Cpt Code"
from (
select  dc.cur_insurance_class::varchar as cur_insurance_class
       ,dc.cur_ins_class_desc::varchar as cur_ins_class_desc
       ,dc.cur_ins_name::varchar as cur_ins_name
       ,sum(case when datediff('d', dc.age_start_date, current_date()) < 30 then COALESCE(dc.owed_amt, (0)::DOUBLE PRECISION) else 0 end) as amt_current
       ,sum(case when datediff('d', dc.age_start_date, current_date()) between 30 and 59 then COALESCE(dc.owed_amt, (0)::DOUBLE PRECISION) else 0 end) as amt_30
       ,sum(case when datediff('d', dc.age_start_date, current_date()) between 60 and 89 then COALESCE(dc.owed_amt, (0)::DOUBLE PRECISION) else 0 end) as amt_60
       ,sum(case when datediff('d', dc.age_start_date, current_date()) between 90 and 119 then COALESCE(dc.owed_amt, (0)::DOUBLE PRECISION) else 0 end) as amt_90
       ,sum(case when datediff('d', dc.age_start_date, current_date()) between 120 and 149 then COALESCE(dc.owed_amt, (0)::DOUBLE PRECISION) else 0 end) as amt_120
       ,sum(case when datediff('d', dc.age_start_date, current_date()) between 150 and 179 then COALESCE(dc.owed_amt, (0)::DOUBLE PRECISION) else 0 end) as amt_150
       ,sum(case when datediff('d', dc.age_start_date, current_date()) > 179 then COALESCE(dc.owed_amt, (0)::DOUBLE PRECISION) else 0 end) as amt_180
       ,sum(COALESCE(dc.owed_amt, (0)::DOUBLE PRECISION))      AS balance
       ,sum(COALESCE(dc.charge_amount, (0)::DOUBLE PRECISION)) AS charges
       ,sum(COALESCE(dc.total_pay_amt, (0)::DOUBLE PRECISION)) AS payments
       ,sum(COALESCE(dc.total_adj_amt, (0)::DOUBLE PRECISION)) AS adjustments
       ,dc.company_id
       ,dc.place_of_service_id
       ,dc.webpt_billing_therapist_id as webpt_therapist_id
       ,dc.patient_account_number
       ,dc.CPT_CODE
from SVW_BILLING_CHARGES dc
left join SVW_PATIENT p on dc.patient_account_number = p.patient_account_number
where dc.owed_amt <> 0
    and dc.cur_insurance_class is not null
    and dc.age_start_date is not null
group by dc.cur_insurance_class::varchar,
         dc.cur_ins_class_desc::varchar,
         dc.cur_ins_name::varchar,
         dc.company_id,
         dc.place_of_service_id,
         dc.webpt_billing_therapist_id,
         dc.patient_account_number,
         dc.CPT_CODE

union all

select
    'ZZ - Credit Amounts' AS cur_insurance_class,
    'ZZ - Credit Amounts' AS cur_ins_class_desc,
    'ZZ - Credit Amounts' AS cur_ins_name,
    (- sum(COALESCE(x.amt_current, (0)::DOUBLE PRECISION)))  AS amt_current,
    (- sum(COALESCE(x.amt_30, (0)::DOUBLE PRECISION)))  AS amt_30,
    (- sum(COALESCE(x.amt_60, (0)::DOUBLE PRECISION)))  AS amt_60,
    (- sum(COALESCE(x.amt_90, (0)::DOUBLE PRECISION)))   AS amt_90,
    (- sum(COALESCE(x.amt_120, (0)::DOUBLE PRECISION)))  AS amt_120,
    (- sum(COALESCE(x.amt_150, (0)::DOUBLE PRECISION)))  AS amt_150,
    (- sum(COALESCE(x.amt_180, (0)::DOUBLE PRECISION)))  AS amt_180,
    (- sum(((((((COALESCE(x.amt_current, (0)::DOUBLE PRECISION) + COALESCE(x.amt_30, (0)::DOUBLE PRECISION)) + COALESCE(x.amt_60, (0)::DOUBLE PRECISION)) + COALESCE(x.amt_90, (0)::DOUBLE PRECISION)) + COALESCE(x.amt_120, (0)::DOUBLE PRECISION)) + COALESCE(x.amt_150, (0)::DOUBLE PRECISION)) + COALESCE(x.amt_180, (0)::DOUBLE PRECISION)))) AS balance,
    0   AS charges,
    sum(((((((COALESCE(x.amt_current, (0)::DOUBLE PRECISION) + COALESCE(x.amt_30, (0)::DOUBLE PRECISION)) + COALESCE(x.amt_60, (0)::DOUBLE PRECISION)) + COALESCE(x.amt_90, (0)::DOUBLE PRECISION)) + COALESCE(amt_120, (0)::DOUBLE PRECISION)) + COALESCE(x.amt_150, (0)::DOUBLE PRECISION)) + COALESCE(x.amt_180, (0)::DOUBLE PRECISION)))     AS payments,
    0 AS adjustments,
    x.company_id,
    x.place_of_service_id,
    x.webpt_therapist_id,
    x.patient_account_number,
    'ZZ - Credit Amounts' AS CPT_CODE
from (
    select sum(case when datediff('d', c.created_date, current_date()) < 30 then COALESCE(c.amount, (0)::DOUBLE PRECISION) else 0 end) as amt_current
    ,sum(case when datediff('d', c.created_date, current_date()) between 30 and 59 then COALESCE(c.amount, (0)::DOUBLE PRECISION) else 0 end) as amt_30
    ,sum(case when datediff('d', c.created_date, current_date()) between 60 and 89 then COALESCE(c.amount, (0)::DOUBLE PRECISION) else 0 end) as amt_60
    ,sum(case when datediff('d', c.created_date, current_date()) between 90 and 119 then COALESCE(c.amount, (0)::DOUBLE PRECISION) else 0 end) as amt_90
    ,sum(case when datediff('d', c.created_date, current_date()) between 120 and 149 then COALESCE(c.amount, (0)::DOUBLE PRECISION) else 0 end) as amt_120
    ,sum(case when datediff('d', c.created_date, current_date()) between 150 and 179 then COALESCE(c.amount, (0)::DOUBLE PRECISION) else 0 end) as amt_150
    ,sum(case when datediff('d', c.created_date, current_date()) > 179 then COALESCE(c.amount, (0)::DOUBLE PRECISION) else 0 end) as amt_180
    ,c.company_id
    ,c.place_of_service_id
    ,c.webpt_therapist_id
    ,c.patient_account_number
from SVW_PATIENT_CREDIT c
left join SVW_CLINICS cl on c.place_of_service_id = cl.place_of_service_id
where  amount <> 0
group by c.company_id, c.place_of_service_id, c.webpt_therapist_id, c.patient_account_number) x
group by x.company_id, x.place_of_service_id, x.webpt_therapist_id, x.patient_account_number) y
left join SVW_CLINICS c on y.place_of_service_id = c.place_of_service_id

Payment by Location

select gpms_code as "Gpms Code",
       company_id as "Revflow Company Id",
       place_of_service_id as "Place Of Service Id",
       deposit_date as "Deposit Date",
       payment_code as "Payment Code",
       payment_desc as "Payment Desc",
       sum(payments) as "Total Payments"
from (
select dc.GPMS_CODE,
       dc.company_id,
       dc.place_of_service_id,
       (date_trunc('day', p.deposit_date::date)) as deposit_date,
       coalesce(p.payment_code_code,'0000') as payment_code,
       coalesce(p.payment_desc,'PATIENT PAYMENTS') as payment_desc,
       sum(p.payment_amount)  as payments
        from SVW_BILLING_CHARGES dc
        inner join SVW_PAYMENT_ADJUSTMENTS p on dc.charge_id = p.charge_id
        where p.created_by not in ('2','125')
        group by dc.GPMS_CODE, dc.company_id, dc.place_of_service_id, (date_trunc('day', p.deposit_date::date)), coalesce(p.payment_code_code,'0000'), coalesce(p.payment_desc,'PATIENT PAYMENTS')
UNION ALL
select c.gpms_code,
       c.company_id,
       p.place_of_service_id,
       (date_trunc('day', p.deposit_date::date)) as deposit_date,
       coalesce(p.payment_code_code,'0000') as payment_code,
       coalesce(p.payment_desc,'PATIENT PAYMENTS') as payment_desc,
       coalesce(sum(original_amount),0) as payments
        from  SVW_PATIENT_CREDIT p
        inner join SVW_CLINICS c on p.place_of_service_id = c.place_of_service_id
        where p.created_by not in ('2','125')
        group by c.gpms_code, c.company_id, p.place_of_service_id, (date_trunc('day', p.deposit_date::date)), coalesce(p.payment_code_code,'0000'), coalesce(p.payment_desc,'PATIENT PAYMENTS')) x
group by gpms_code, company_id, place_of_service_id, deposit_date, payment_code, payment_desc

Tank (Unassigned) Patient Payments

SELECT cl.GPMS_CODE as "Gpms Code",
       cl.REVFLOW_COMPANY_ID as "Revflow Company Id",
       pc.PLACE_OF_SERVICE_ID as "Place Of Service Id",
       pc.PATIENT_ACCOUNT_NUMBER as "Patient Account Number",
       CASE WHEN coalesce(pc.FROM_PAYER_DESC,'') = '' THEN 'Cash Patient' ELSE pc.FROM_PAYER_DESC END AS "Payer Desc",
       date_trunc('day',pc.created_date::date) as "Post Date",
       date_trunc('day',pc.deposit_date::date) as "Deposit Date",
       SUM(coalesce(pc.Original_Amount,0)) AS "Original Amt",
       SUM(coalesce(pc.amount,0)) AS "Deposit Amt"
FROM SVW_PATIENT_CREDIT pc
INNER JOIN SVW_CLINICS cl ON cl.PLACE_OF_SERVICE_ID = pc.place_of_service_id
WHERE pc.created_by NOT IN ( '2', '125' )
GROUP BY cl.GPMS_CODE,
         cl.REVFLOW_COMPANY_ID,
         pc.PLACE_OF_SERVICE_ID,
         pc.PATIENT_ACCOUNT_NUMBER,
         CASE WHEN coalesce(pc.FROM_PAYER_DESC,'') = '' THEN 'Cash Patient' ELSE pc.FROM_PAYER_DESC END,
         date_trunc('day',pc.created_date::date),
         date_trunc('day',pc.deposit_date::date)

Unapplied Insurance Payments

SELECT dc.CHARGE_ID as "Charge Id",
     dc.PATIENT_ACCOUNT_NUMBER as "Patient Account Number",
     (date_trunc('day', dc.DATE_OF_SERVICE::date)) as "DOS",
     (date_trunc('day', dpa.deposit_date::date)) as "Payment_Adjustment Deposit",
     dc.CPT_CODE,
     dpa.PAYMENT_ADJUSTMENT_ID,
     dpa.PAYMENT_AMOUNT,
     pc.PATIENT_CREDIT_ID,
     pc.ORIGINAL_AMOUNT,
     pc.AMOUNT
FROM PUBLIC.SVW_BILLING_CHARGES dc
JOIN PUBLIC.SVW_PAYMENT_ADJUSTMENTS dpa on dc.CHARGE_ID = dpa.CHARGE_ID
JOIN PUBLIC.SVW_PATIENT_CREDIT pc on dpa.PATIENT_CREDIT_ID = pc.PATIENT_CREDIT_ID
WHERE dc.CPT_CODE = 'INSOVER'
  AND pc.PATIENT_CREDIT_TYPE = 2

Patient_Credit connected to Payment_Adjustment

SELECT pa.PATIENT_CREDIT_ID,
pa.PAYMENT_AMOUNT,
pc.AMOUNT,
pc.ORIGINAL_AMOUNT
--Notice the pc.AMOUNT is now less than the PC.ORIGINAL_AMOUNT, this is because the transferred amount is pa.PAYMENT_AMOUNT.
-- The pc.ORIGINAL_AMOUNT is the static field on the PATIENT_CREDIT table
FROM PUBLIC.SVW_PAYMENT_ADJUSTMENTS pa
JOIN PUBLIC.SVW_PATIENT_CREDIT pc ON pa.PATIENT_CREDIT_ID = pc.PATIENT

Payment/Adjustments by Patient/Insurance Breakout

SELECT adj.PAYMENT_ADJUSTMENT_ID
   , ch.PATIENT_ACCOUNT_NUMBER
   , adj.ADJUSTMENT_AMOUNT
   , adj.PAYMENT_AMOUNT
   , adj.FROM_INSURANCE_CODE
   , adj.FROM_INSURANCE_CLASS
   , ch.PRI_INS_CODE
   , ch.PRIMARY_INSURANCE_CODE
   , ch.PRIMARY_INSURANCE_CLASS
   , ch.SECONDARY_INSURANCE_CODE
   , ch.SECONDARY_INSURANCE_CLASS
   , ch.TERTIARY_INSURANCE_CODE
   , ch.TERTIARY_INSURANCE_CLASS
   , CASE WHEN ifnull(ADJ.FROM_INSURANCE_CODE,0) = CH.PRIMARY_INSURANCE_CODE and
ADJ.FROM_INSURANCE_CLASS = CH.PRIMARY_INSURANCE_CLASS THEN 'Primary'
      WHEN ifnull(ADJ.FROM_INSURANCE_CODE,0) = CH.SECONDARY_INSURANCE_CODE and
ADJ.FROM_INSURANCE_CLASS = CH.SECONDARY_INSURANCE_CLASS THEN 'Secondary'
      WHEN ifnull(ADJ.FROM_INSURANCE_CODE,0) = CH.TERTIARY_INSURANCE_CODE and
ADJ.FROM_INSURANCE_CLASS = CH.TERTIARY_INSURANCE_CLASS THEN 'Tertiary'
              ELSE 'Other' END AS WhichInsurance
FROM SVW_PAYMENT_ADJUSTMENTS adj
JOIN SVW_BILLING_CHARGES ch ON adj.CHARGE_ID = ch.CHARGE_ID

Refunds by Patient

SELECT PATIENT_ACCOUNT_NUMBER, 
	sum(ORIGINAL_AMOUNT) as "Total Refunds by Patient"
FROM PUBLIC.SVW_PATIENT_CREDIT
WHERE PATIENT_CREDIT_TYPE = 7
GROUP BY PATIENT_ACCOUNT_NUMBER

Balances: Insurance vs. Patient

SELECT CHARGE_ID,
--Charge_id can be swapped for some other granularity
sum(CASE ifnull(CUR_INS_CODE,0)
WHEN 0 THEN 0 ELSE CUR_BALANCE END) AS "Ins Balance",
sum(CASE ifnull(CUR_INS_CODE,0)
WHEN 0 THEN CUR_BALANCE ELSE 0 END) AS "Pat Balance"
FROM PUBLIC.SVW_BILLING_CHARGES
WHERE CPT_CODE NOT IN ('COPAY','INSOVER')
GROUP BY CHARGE_ID
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.