Advertisement
kevinrossen

New Patients in Date Range

Nov 26th, 2018
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 11.72 KB | None | 0 0
  1. /*802 List of new patients in a date range, with their referral source and their overall net production*/
  2. /*Also shows referral source summaries at the bottom with # of patients referred, and total net production of the patients they have referred*/
  3. /*For Versions 17.1 and greater. Please update your version accordingly.*/
  4. /*Query code written/modified: 04/16/2018*/
  5.  
  6. /*Change dates between the ' ' in format 'YYYY-mm-dd'*/
  7. SET
  8.     @FromDate = '2018-10-01',
  9.     @ToDate = '2018-10-31'
  10. ;
  11.  
  12.  
  13. /*---------------------DO NOT MODIFY BELOW THIS LINE---------------------*/
  14. SELECT A.`Pat#`,
  15. A.PatientName AS 'Patient Name',
  16. A.ReferralSource AS 'Referral Source',
  17. A.`#Referred` AS '# Referred',
  18. A.Fees,
  19. A.Adjustments AS 'Adjusts',
  20. A.Writeoffs,
  21. A.NetProduction AS 'Net Production'
  22. FROM (
  23.     SELECT 1 AS ItemOrder,
  24.     patresult.PatNum AS 'Pat#',
  25.     CONCAT(patresult.LName ,', ',patresult.FName) AS 'PatientName',
  26.     patresult.ReferralSources AS 'ReferralSource',
  27.     '' AS '#Referred',
  28.     FORMAT(procfees.TotalFees,2) AS 'Fees',
  29.     FORMAT(COALESCE(adjusts.TotalAdjusts,0),2) AS 'Adjustments',
  30.     FORMAT(-procfees.Writeoffs,2) AS 'Writeoffs',
  31.     FORMAT(procfees.TotalFees+COALESCE(adjusts.TotalAdjusts,0)-procfees.Writeoffs,2) AS 'NetProduction'
  32.     FROM (
  33.         SELECT p.PatNum,p.LName,p.FName,ref.ReferralSources
  34.         FROM patient p
  35.         INNER JOIN (
  36.             SELECT ra.PatNum,GROUP_CONCAT(DISTINCT r.LName,', ',r.FName ORDER BY r.LName,r.FName SEPARATOR ' | ') AS ReferralSources
  37.             FROM refattach ra
  38.             INNER JOIN referral r ON r.ReferralNum=ra.ReferralNum
  39.             WHERE ra.RefType = 1 /*RefFrom*/
  40.             GROUP BY ra.PatNum
  41.         ) ref ON ref.PatNum=p.PatNum
  42.         INNER JOIN (
  43.             SELECT pl.PatNum,
  44.             MIN(pl.ProcDate) AS FirstVisitDate
  45.             FROM procedurelog pl
  46.             WHERE pl.ProcStatus=2 /*Complete*/
  47.             GROUP BY pl.PatNum
  48.         ) newpatsfilter ON newpatsfilter.PatNum=p.PatNum AND newpatsfilter.FirstVisitDate BETWEEN @FromDate AND @ToDate
  49.         GROUP BY p.PatNum
  50.     ) patresult
  51.     INNER JOIN (
  52.         SELECT A.PatNum,SUM(A.TotalFees) AS TotalFees,SUM(A.Writeoffs) AS Writeoffs
  53.         FROM (
  54.             SELECT pl.PatNum,
  55.             pl.ProcFee * (pl.UnitQty + pl.BaseUnits) AS TotalFees,
  56.             COALESCE(SUM((CASE
  57.                 WHEN cp.Status IN (1, 4)
  58.                 /*Received,Supplemental*/
  59.                     THEN cp.Writeoff
  60.                 WHEN cp.Status IN (0, 6)
  61.                 /*NotReceived,Estimate*/
  62.                     THEN ( CASE
  63.                         WHEN cp.WriteOffEstOverride != - 1
  64.                             THEN cp.WriteOffEstOverride
  65.                         ELSE (
  66.                             CASE
  67.                             WHEN cp.WriteoffEst != - 1
  68.                                 THEN cp.WriteoffEst
  69.                             ELSE 0
  70.                         END)
  71.                     END)
  72.                 END)
  73.             ), 0) AS WriteOffs
  74.             FROM procedurelog pl
  75.             INNER JOIN (
  76.                 SELECT p.PatNum
  77.                 FROM patient p
  78.                 INNER JOIN (
  79.                     SELECT ra.PatNum
  80.                     FROM refattach ra
  81.                     INNER JOIN referral r ON r.ReferralNum=ra.ReferralNum
  82.                     WHERE ra.RefType = 1 /*RefFrom*/
  83.                     GROUP BY ra.PatNum
  84.                 ) ref ON ref.PatNum=p.PatNum
  85.                 INNER JOIN (
  86.                     SELECT pl.PatNum,
  87.                     MIN(pl.ProcDate) AS FirstVisitDate
  88.                     FROM procedurelog pl
  89.                     WHERE pl.ProcStatus=2 /*Complete*/
  90.                     GROUP BY pl.PatNum
  91.                 ) newpatsfilter ON newpatsfilter.PatNum=p.PatNum AND newpatsfilter.FirstVisitDate BETWEEN @FromDate AND @ToDate
  92.                 GROUP BY p.PatNum
  93.             ) AS presult ON pl.PatNum=presult.PatNum
  94.             LEFT JOIN claimproc cp ON cp.ProcNum = pl.ProcNum AND cp.Status IN (0, 1, 4, 6)
  95.             WHERE pl.ProcStatus=2 /*Complete*/
  96.             GROUP BY pl.ProcNum
  97.         ) A
  98.         GROUP BY A.PatNum
  99.     ) procfees ON procfees.PatNum=patresult.PatNum
  100.     LEFT JOIN (
  101.         SELECT adj.PatNum, SUM(adj.AdjAmt) AS TotalAdjusts
  102.         FROM adjustment adj
  103.         INNER JOIN (SELECT p.PatNum
  104.             FROM patient p
  105.             INNER JOIN (
  106.                 SELECT ra.PatNum
  107.                 FROM refattach ra
  108.                 INNER JOIN referral r ON r.ReferralNum=ra.ReferralNum
  109.                 WHERE ra.RefType = 1 /*RefFrom*/
  110.                 GROUP BY ra.PatNum
  111.             ) ref ON ref.PatNum=p.PatNum
  112.             INNER JOIN (
  113.                 SELECT pl.PatNum,
  114.                 MIN(pl.ProcDate) AS FirstVisitDate
  115.                 FROM procedurelog pl
  116.                 WHERE pl.ProcStatus=2 /*Complete*/
  117.                 GROUP BY pl.PatNum
  118.             ) newpatsfilter ON newpatsfilter.PatNum=p.PatNum AND newpatsfilter.FirstVisitDate BETWEEN @FromDate AND @ToDate
  119.             GROUP BY p.PatNum) AS presult ON adj.PatNum=presult.PatNum
  120.         GROUP BY adj.PatNum
  121.     ) adjusts ON adjusts.PatNum=patresult.PatNum
  122.     GROUP BY patresult.PatNum
  123.    
  124.     UNION ALL
  125.    
  126.     SELECT 2 AS ItemOrder,
  127.     '--------' AS 'Pat#',
  128.     '--------' AS 'PatientName',
  129.     '--------' AS 'ReferralSource',
  130.     '--------' AS '#Referred',
  131.     '--------' AS 'Fees',
  132.     '--------' AS 'Adjustments',
  133.     '--------' AS 'Writeoffs',
  134.     '--------' AS 'NetProduction'
  135.  
  136.     UNION ALL
  137.    
  138.     SELECT 3 AS ItemOrder,
  139.     '' AS 'Pat#',
  140.     '' AS 'PatientName',
  141.     'Total of Above Patients:' AS 'ReferralSource',
  142.     COUNT(C.`Pat#`) AS '#Referred',
  143.     FORMAT(SUM(C.Fees),2) AS 'Fees',
  144.     FORMAT(SUM(C.Adjustments),2) AS 'Adjustments',
  145.     FORMAT(-SUM(C.Writeoffs),2) AS 'Writeoffs',
  146.     FORMAT(SUM(C.NetProduction),2) AS 'NetProduction'
  147.     FROM (
  148.         SELECT patresult.PatNum AS 'Pat#',
  149.         procfees.TotalFees AS 'Fees',
  150.         COALESCE(adjusts.TotalAdjusts,0) AS 'Adjustments',
  151.         procfees.Writeoffs AS 'Writeoffs',
  152.         procfees.TotalFees+COALESCE(adjusts.TotalAdjusts,0)-procfees.Writeoffs AS 'NetProduction'
  153.         FROM (
  154.             SELECT p.PatNum,p.LName,p.FName,ref.ReferralSources
  155.             FROM patient p
  156.             INNER JOIN (
  157.                 SELECT ra.PatNum,GROUP_CONCAT(DISTINCT r.LName,', ',r.FName ORDER BY r.LName,r.FName SEPARATOR ' | ') AS ReferralSources
  158.                 FROM refattach ra
  159.                 INNER JOIN referral r ON r.ReferralNum=ra.ReferralNum
  160.                 WHERE ra.RefType = 1 /*RefFrom*/
  161.                 GROUP BY ra.PatNum
  162.             ) ref ON ref.PatNum=p.PatNum
  163.             INNER JOIN (
  164.                 SELECT pl.PatNum,
  165.                 MIN(pl.ProcDate) AS FirstVisitDate
  166.                 FROM procedurelog pl
  167.                 WHERE pl.ProcStatus=2 /*Complete*/
  168.                 GROUP BY pl.PatNum
  169.             ) newpatsfilter ON newpatsfilter.PatNum=p.PatNum AND newpatsfilter.FirstVisitDate BETWEEN @FromDate AND @ToDate
  170.             GROUP BY p.PatNum
  171.         ) patresult
  172.         INNER JOIN (
  173.             SELECT A.PatNum,SUM(A.TotalFees) AS TotalFees,SUM(A.Writeoffs) AS Writeoffs
  174.             FROM (
  175.                 SELECT pl.PatNum,
  176.                 pl.ProcFee * (pl.UnitQty + pl.BaseUnits) AS TotalFees,
  177.                 COALESCE(SUM((CASE
  178.                     WHEN cp.Status IN (1, 4)
  179.                     /*Received,Supplemental*/
  180.                         THEN cp.Writeoff
  181.                     WHEN cp.Status IN (0, 6)
  182.                     /*NotReceived,Estimate*/
  183.                         THEN ( CASE
  184.                             WHEN cp.WriteOffEstOverride != - 1
  185.                                 THEN cp.WriteOffEstOverride
  186.                             ELSE (
  187.                                 CASE
  188.                                 WHEN cp.WriteoffEst != - 1
  189.                                     THEN cp.WriteoffEst
  190.                                 ELSE 0
  191.                             END)
  192.                         END)
  193.                     END)
  194.                 ), 0) AS WriteOffs
  195.                 FROM procedurelog pl
  196.                 INNER JOIN (
  197.                     SELECT p.PatNum
  198.                     FROM patient p
  199.                     INNER JOIN (
  200.                         SELECT ra.PatNum
  201.                         FROM refattach ra
  202.                         INNER JOIN referral r ON r.ReferralNum=ra.ReferralNum
  203.                         WHERE ra.RefType = 1 /*RefFrom*/
  204.                         GROUP BY ra.PatNum
  205.                     ) ref ON ref.PatNum=p.PatNum
  206.                     INNER JOIN (
  207.                         SELECT pl.PatNum,
  208.                         MIN(pl.ProcDate) AS FirstVisitDate
  209.                         FROM procedurelog pl
  210.                         WHERE pl.ProcStatus=2 /*Complete*/
  211.                         GROUP BY pl.PatNum
  212.                     ) newpatsfilter ON newpatsfilter.PatNum=p.PatNum AND newpatsfilter.FirstVisitDate BETWEEN @FromDate AND @ToDate
  213.                     GROUP BY p.PatNum
  214.                 ) AS presult ON pl.PatNum=presult.PatNum
  215.                 LEFT JOIN claimproc cp ON cp.ProcNum = pl.ProcNum AND cp.Status IN (0, 1, 4, 6)
  216.                 WHERE pl.ProcStatus=2 /*Complete*/
  217.                 GROUP BY pl.ProcNum
  218.             ) A
  219.             GROUP BY A.PatNum
  220.         ) procfees ON procfees.PatNum=patresult.PatNum
  221.         LEFT JOIN (
  222.             SELECT adj.PatNum, SUM(adj.AdjAmt) AS TotalAdjusts
  223.             FROM adjustment adj
  224.             INNER JOIN (SELECT p.PatNum
  225.                 FROM patient p
  226.                 INNER JOIN (
  227.                     SELECT ra.PatNum
  228.                     FROM refattach ra
  229.                     INNER JOIN referral r ON r.ReferralNum=ra.ReferralNum
  230.                     WHERE ra.RefType = 1 /*RefFrom*/
  231.                     GROUP BY ra.PatNum
  232.                 ) ref ON ref.PatNum=p.PatNum
  233.                 INNER JOIN (
  234.                     SELECT pl.PatNum,
  235.                     MIN(pl.ProcDate) AS FirstVisitDate
  236.                     FROM procedurelog pl
  237.                     WHERE pl.ProcStatus=2 /*Complete*/
  238.                     GROUP BY pl.PatNum
  239.                 ) newpatsfilter ON newpatsfilter.PatNum=p.PatNum AND newpatsfilter.FirstVisitDate BETWEEN @FromDate AND @ToDate
  240.                 GROUP BY p.PatNum) AS presult ON adj.PatNum=presult.PatNum
  241.             GROUP BY adj.PatNum
  242.         ) adjusts ON adjusts.PatNum=patresult.PatNum
  243.         GROUP BY patresult.PatNum
  244.     ) C
  245.    
  246.     UNION ALL
  247.  
  248.     SELECT 4 AS ItemOrder,
  249.     '--------' AS 'Pat#',
  250.     '--------' AS 'PatientName',
  251.     '--------' AS 'ReferralSource',
  252.     '--------' AS '#Referred',
  253.     '--------' AS 'Fees',
  254.     '--------' AS 'Adjustments',
  255.     '--------' AS 'Writeoffs',
  256.     '--------' AS 'NetProduction'
  257.  
  258.     UNION ALL
  259.  
  260.     SELECT 5 AS ItemOrder,
  261.     '' AS 'Pat#',
  262.     '' AS 'PatientName',
  263.     CONCAT(ref.LName,', ',ref.FName) AS 'ReferralSource',
  264.     COUNT(DISTINCT ref.PatNum) AS '#Referred',
  265.     FORMAT(SUM(procfees.TotalFees),2) AS 'Fees',
  266.     FORMAT(COALESCE(SUM(adjusts.TotalAdjusts),0),2) AS 'Adjustments',
  267.     FORMAT(-SUM(procfees.Writeoffs),2) AS 'Writeoffs',
  268.     FORMAT(SUM(procfees.TotalFees)+COALESCE(SUM(adjusts.TotalAdjusts),0)-SUM(procfees.Writeoffs),2) AS 'NetProduction'
  269.     FROM (
  270.         SELECT DISTINCT p.PatNum,ref.LName,ref.FName,ref.ReferralNum
  271.         FROM patient p
  272.         INNER JOIN (
  273.             SELECT ra.PatNum,r.LName,r.FName,r.ReferralNum
  274.             FROM refattach ra
  275.             INNER JOIN referral r ON r.ReferralNum=ra.ReferralNum
  276.             WHERE ra.RefType = 1 /*RefFrom*/
  277.         ) ref ON ref.PatNum=p.PatNum
  278.         INNER JOIN (
  279.             SELECT pl.PatNum,
  280.             MIN(pl.ProcDate) AS FirstVisitDate
  281.             FROM procedurelog pl
  282.             WHERE pl.ProcStatus=2 /*Complete*/
  283.             GROUP BY pl.PatNum
  284.         ) newpatsfilter ON newpatsfilter.PatNum=p.PatNum AND newpatsfilter.FirstVisitDate BETWEEN @FromDate AND @ToDate
  285.     ) ref
  286.     INNER JOIN (
  287.         SELECT A.PatNum, SUM(A.TotalFees) AS TotalFees, SUM(A.Writeoffs) AS Writeoffs
  288.         FROM (
  289.             SELECT pl.PatNum,
  290.             pl.ProcFee * (pl.UnitQty + pl.BaseUnits) AS TotalFees,
  291.             COALESCE(SUM((CASE
  292.                 WHEN cp.Status IN (1, 4)
  293.                 /*Received,Supplemental*/
  294.                     THEN cp.Writeoff
  295.                 WHEN cp.Status IN (0, 6)
  296.                 /*NotReceived,Estimate*/
  297.                     THEN ( CASE
  298.                         WHEN cp.WriteOffEstOverride != - 1
  299.                             THEN cp.WriteOffEstOverride
  300.                         ELSE (
  301.                             CASE
  302.                             WHEN cp.WriteoffEst != - 1
  303.                                 THEN cp.WriteoffEst
  304.                             ELSE 0
  305.                         END)
  306.                     END)
  307.                 END)
  308.             ), 0) AS WriteOffs
  309.             FROM procedurelog pl
  310.             INNER JOIN (SELECT p.PatNum
  311.                 FROM patient p
  312.                 INNER JOIN (
  313.                     SELECT ra.PatNum
  314.                     FROM refattach ra
  315.                     INNER JOIN referral r ON r.ReferralNum=ra.ReferralNum
  316.                     WHERE ra.RefType = 1 /*RefFrom*/
  317.                     GROUP BY ra.PatNum
  318.                 ) ref ON ref.PatNum=p.PatNum
  319.                 INNER JOIN (
  320.                     SELECT pl.PatNum,
  321.                     MIN(pl.ProcDate) AS FirstVisitDate
  322.                     FROM procedurelog pl
  323.                     WHERE pl.ProcStatus=2 /*Complete*/
  324.                     GROUP BY pl.PatNum
  325.                 ) newpatsfilter ON newpatsfilter.PatNum=p.PatNum AND newpatsfilter.FirstVisitDate BETWEEN @FromDate AND @ToDate
  326.                 GROUP BY p.PatNum
  327.             ) AS presult ON pl.PatNum=presult.PatNum
  328.             LEFT JOIN claimproc cp ON cp.ProcNum = pl.ProcNum AND cp.Status IN (0, 1, 4, 6)
  329.             WHERE pl.ProcStatus=2 /*Complete*/
  330.             GROUP BY pl.ProcNum
  331.         ) A
  332.         GROUP BY A.PatNum
  333.     ) procfees ON procfees.PatNum=ref.PatNum
  334.     LEFT JOIN (
  335.         SELECT adj.PatNum, SUM(adj.AdjAmt) AS TotalAdjusts
  336.         FROM adjustment adj
  337.         INNER JOIN (SELECT p.PatNum
  338.             FROM patient p
  339.             INNER JOIN (
  340.                 SELECT ra.PatNum
  341.                 FROM refattach ra
  342.                 INNER JOIN referral r ON r.ReferralNum=ra.ReferralNum
  343.                 WHERE ra.RefType = 1 /*RefFrom*/
  344.                 GROUP BY ra.PatNum
  345.             ) ref ON ref.PatNum=p.PatNum
  346.             INNER JOIN (
  347.                 SELECT pl.PatNum,
  348.                 MIN(pl.ProcDate) AS FirstVisitDate
  349.                 FROM procedurelog pl
  350.                 WHERE pl.ProcStatus=2 /*Complete*/
  351.                 GROUP BY pl.PatNum
  352.             ) newpatsfilter ON newpatsfilter.PatNum=p.PatNum AND newpatsfilter.FirstVisitDate BETWEEN @FromDate AND @ToDate
  353.             GROUP BY p.PatNum
  354.         ) AS presult ON adj.PatNum=presult.PatNum
  355.         GROUP BY adj.PatNum
  356.     ) adjusts ON adjusts.PatNum=ref.PatNum
  357.     GROUP BY ref.ReferralNum
  358. ) A
  359. ORDER BY ItemOrder,A.PatientName,A.`#Referred` DESC,A.NetProduction DESC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement