ManagementStatsController.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\DB;
  5. use Illuminate\Support\Facades\Http;
  6. class ManagementStatsController extends Controller
  7. {
  8. public function index(Request $request)
  9. {
  10. $filters = $request->all();
  11. $clientsWePaidToAcquire = [
  12. ['date_trunc' => '2022-01-01 00:00:00', 'count' => 1445]
  13. ];
  14. $activeClients = [
  15. ['date_trunc' => '2022-01-01 00:00:00', 'count' => 1445]
  16. ];
  17. <<<<<<< HEAD
  18. $startDate = '2022-01-01';
  19. $endDate = '2022-02-01';
  20. $resultMap = [
  21. "AcquiredClients" => $this->getAcquiredClients($startDate, $endDate),
  22. "AcquiredClientsCount" => $this->getAcquiredClientsCount($startDate, $endDate),
  23. "NoteCountByMonth" => $this->getNoteCountByMonth($startDate, $endDate),
  24. "ActiveClientsByMonth" => $this->getActiveClientsByMonth($startDate, $endDate),
  25. "ActiveProsByMonth" => $this->getActiveProsByMonth($startDate, $endDate),
  26. "CptCodesBilled" => $this->getCptCodesBilled($startDate, $endDate),
  27. "CptCodesBilledByMonth" => $this->getCptCodesBilledByMonth($startDate, $endDate),
  28. "TotalBilledAmount" => $this->getTotalBilledAmount($startDate, $endDate)
  29. ];
  30. =======
  31. $activeHCPs = [
  32. ['date_trunc' => '2022-01-01 00:00:00', 'count' => 1445]
  33. ];
  34. $cptCodesBilled = [
  35. ['cpt' => '99202', 'count' => 6]
  36. ];
  37. >>>>>>> 1021d9aba5bf2f62e51facd8d3bbc59c495ab73c
  38. return view('app.admin.management-stats.index', compact('clientsWePaidToAcquire', 'activeClients', 'activeHCPs', 'cptCodesBilled','filters'));
  39. }
  40. private function getAcquiredClients($startDate, $endDate){
  41. $query = "SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY'";
  42. return DB::select( DB::raw($query), array($startDate,$endDate));
  43. }
  44. private function getAcquiredClientsCount($startDate, $endDate){
  45. $query = "SELECT COUNT(*) FROM client WHERE id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ?) AND client_engagement_status_category != 'DUMMY'";
  46. return DB::select( DB::raw($query), array($startDate,$endDate));
  47. }
  48. private function getNoteCountByMonth($startDate, $endDate){
  49. $query= "
  50. SELECT COUNT(*), DATE_TRUNC('month', created_at)
  51. FROM note
  52. WHERE (is_signed_by_hcp IS NOT FALSE AND is_bill_closed IS NOT FALSE AND is_claim_closed IS NOT FALSE AND is_cancelled IS NOT TRUE)
  53. AND client_id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY')
  54. GROUP BY 2
  55. ORDER BY 2 ASC;
  56. ";
  57. return DB::select( DB::raw($query), array($startDate,$endDate));
  58. }
  59. private function getActiveClientsByMonth($startDate, $endDate){
  60. $query= "
  61. SELECT COUNT(DISTINCT(client_id)), DATE_TRUNC('month', created_at)
  62. FROM note
  63. WHERE (is_signed_by_hcp IS NOT FALSE AND is_bill_closed IS NOT FALSE AND is_claim_closed IS NOT FALSE AND is_cancelled IS NOT TRUE)
  64. AND client_id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY')
  65. GROUP BY 2
  66. ORDER BY 2 ASC;
  67. ";
  68. return DB::select( DB::raw($query), array($startDate,$endDate));
  69. }
  70. private function getActiveProsByMonth($startDate, $endDate){
  71. $query= "
  72. SELECT COUNT(DISTINCT(hcp_pro_id)), DATE_TRUNC('month', created_at)
  73. FROM note
  74. WHERE (is_signed_by_hcp IS NOT FALSE AND is_bill_closed IS NOT FALSE AND is_claim_closed IS NOT FALSE AND is_cancelled IS NOT TRUE)
  75. AND client_id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY')
  76. GROUP BY 2
  77. ORDER BY 2 ASC;
  78. ";
  79. return DB::select( DB::raw($query), array($startDate,$endDate));
  80. }
  81. private function getCptCodesBilled($startDate, $endDate){
  82. $query= "
  83. SELECT COUNT(*), cpt
  84. FROM claim_line
  85. JOIN claim ON claim_line.claim_id = claim.id
  86. JOIN note ON claim.note_id = note.id
  87. JOIN client ON note.client_id = client.id
  88. WHERE client.id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY')
  89. GROUP BY cpt ORDER BY cpt ASC;
  90. ";
  91. return DB::select( DB::raw($query), array($startDate,$endDate));
  92. }
  93. private function getCptCodesBilledByMonth($startDate, $endDate){
  94. $query= "
  95. SELECT COUNT(*), cpt, DATE_TRUNC('month', note.effective_dateest)
  96. FROM claim_line
  97. JOIN claim ON claim_line.claim_id = claim.id
  98. JOIN note ON claim.note_id = note.id
  99. JOIN client ON note.client_id = client.id
  100. WHERE client.id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY')
  101. GROUP BY 3, 2;
  102. " ;
  103. return DB::select( DB::raw($query), array($startDate,$endDate));
  104. }
  105. private function getTotalBilledAmount($startDate, $endDate){
  106. $query= "
  107. SELECT SUM(bill.total_paid)
  108. FROM bill
  109. JOIN note ON bill.note_id = note.id
  110. JOIN client ON bill.client_id = client.id
  111. WHERE client.id IN (SELECT id FROM client WHERE created_at::DATE >= ? AND created_at::DATE < ? AND client_engagement_status_category != 'DUMMY');
  112. ";
  113. return DB::select( DB::raw($query), array($startDate,$endDate));
  114. }
  115. }