|
@@ -108,6 +108,40 @@ class AdminController extends Controller
|
|
|
$this->filterMultiQuery($request, $patients, 'most_recent_weight_at', 'last_weighed_in_category', 'last_weighed_in_value_1', 'last_weighed_in_value_2');
|
|
|
$this->filterMultiQuery($request, $patients, 'most_recent_bp_at', 'last_bp_category', 'last_bp_value_1', 'last_bp_value_2');
|
|
|
|
|
|
+ if($request->input('number_of_measurements')){
|
|
|
+ $keyName = $request->input('number_of_measurements');
|
|
|
+ $measurementCountQuery = '(SELECT COUNT(*) FROM measurement WHERE measurement.client_id = client.id AND is_active IS TRUE AND is_cellular IS TRUE AND is_cellular_zero IS NOT TRUE)';
|
|
|
+ switch($keyName) {
|
|
|
+ case 'EXACTLY':
|
|
|
+ if($request->input('number_of_measurements_value_1')) {
|
|
|
+ $patients->whereRaw($measurementCountQuery . '='.$request->input('number_of_measurements_value_1'));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'LESS_THAN':
|
|
|
+ if($request->input('number_of_measurements_value_1')) {
|
|
|
+ $patients->whereRaw($measurementCountQuery . '<='.$request->input('number_of_measurements_value_1'));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'GREATER_THAN':
|
|
|
+ if($request->input('number_of_measurements_value_1')) {
|
|
|
+ $patients->whereRaw($measurementCountQuery . '>='.$request->input('number_of_measurements_value_1'));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'BETWEEN':
|
|
|
+ if($request->input('number_of_measurements_value_1') && $request->input('number_of_measurements_value_2')) {
|
|
|
+ $patients->whereRaw($measurementCountQuery.'>='.$request->input('number_of_measurements_value_1') .' AND '. $measurementCountQuery . '<='.$request->input('number_of_measurements_value_2'));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 'NOT_BETWEEN':
|
|
|
+ if($request->input('number_of_measurements_value_1') && $request->input('number_of_measurements_value_2')) {
|
|
|
+ $patients->where(function ($q) use ($request, $measurementCountQuery) {
|
|
|
+ $q->whereRaw($measurementCountQuery . '<'.$request->input('number_of_measurements_value_1') .' OR '. $measurementCountQuery . '>'.$request->input('number_of_measurements_value_2'));
|
|
|
+ });
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
switch($request->input('status')) {
|
|
|
case 'ACTIVE':
|
|
|
$patients->where('is_active', true)->where('has_mcp_done_onboarding_visit', true);
|