Example #1
0
 public function specialtyCoverageStats($mrId)
 {
     $totalVisits = [];
     $actualVisits = [];
     $specialtyCoverage = [];
     $specialty = NULL;
     $counter = 0;
     $allSpecialties = Customer::select('specialty')->where('mr_id', $mrId)->get()->toArray();
     $allCustomersSpecialties = Customer::whereIn('specialty', $allSpecialties)->get()->toArray();
     // Get all medical rep customers specialties
     foreach ($allCustomersSpecialties as $singleCustomer) {
         $allSpecialtyClasses[$singleCustomer['specialty']] = Customer::select('class')->where('specialty', $singleCustomer['specialty'])->get()->toArray();
     }
     // Get all customer classes based on specialty
     foreach ($allSpecialtyClasses as $specialty => $specialtyClasses) {
         // Calculate total visits based on classes and specialty
         foreach ($specialtyClasses as $singleSpecialtyClass) {
             if (isset($totalVisits[$specialty])) {
                 $totalVisits[$specialty] += VisitClass::where('name', $singleSpecialtyClass)->first()->visits_count;
             } else {
                 $totalVisits[$specialty] = VisitClass::where('name', $singleSpecialtyClass)->first()->visits_count;
             }
         }
     }
     // Get all doctors visited
     $doctorsVisited = Report::select('doctor_id')->where('month', date('M-Y'))->where('mr_id', $mrId)->get()->toArray();
     foreach ($doctorsVisited as $singleDoctor) {
         // calculate actual visits
         $specialty = Customer::select('specialty')->findOrFail($singleDoctor)->first()->specialty;
         if (isset($actualVisits[$specialty])) {
             $actualVisits[$specialty] += 1;
         } else {
             $actualVisits[$specialty] = 1;
         }
     }
     foreach ($allCustomersSpecialties as $singleCustomerSpecialty) {
         $specialty = $singleCustomerSpecialty['specialty'];
         $specialtyCoverage[$specialty] = 0;
         if (isset($specialtyCoverage[$specialty]) && isset($actualVisits[$specialty]) && isset($totalVisits[$specialty])) {
             $specialtyCoverage[$specialty] = number_format($actualVisits[$specialty] / $totalVisits[$specialty] * 100, 2);
         }
     }
     foreach ($specialtyCoverage as $specialty => $percentage) {
         if (isset($specialtyCoverage[$specialty])) {
             $stats[$counter]['label'] = $specialty;
             $stats[$counter]['data'] = $percentage;
         }
         $counter++;
     }
     return $stats;
 }