Przeglądaj źródła

vitals-graph - use updated fields to plot

Vijayakrishnan 4 lat temu
rodzic
commit
09d352bf9f

+ 19 - 0
app/Models/Client.php

@@ -130,6 +130,25 @@ class Client extends Model
             ->orderBy('effective_date', 'desc');
     }
 
+    public function getNonZeroBpMeasurements(){
+        return $this->hasMany(Measurement::class, 'client_id', 'id')
+            /*->distinct('label')*/
+            ->where('is_removed', false)
+            ->where('label', '=', 'BP')
+            ->where('sbp_mm_hg', '>', 0)
+            ->where('dbp_mm_hg', '>', 0)
+            ->orderBy('ts', 'desc');
+    }
+
+    public function getNonZeroWeightMeasurements(){
+        return $this->hasMany(Measurement::class, 'client_id', 'id')
+            /*->distinct('label')*/
+            ->where('is_removed', false)
+            ->where('label', '=', 'Wt. (lbs.)')
+            ->where('numeric_value', '>', 0)
+            ->orderBy('ts', 'desc');
+    }
+
     public function currentCareMonth()
     {
         $cmStartDate = strtotime(date('Y-m-d'));

+ 19 - 30
resources/views/app/patient/vitals-graph.blade.php

@@ -46,7 +46,11 @@
         $nextDay = date_format(date_add(date_create($nextDay), date_interval_create_from_date_string('1 day')), 'Y-m-d');
     }
 
-    $allMeasurements = $patient->nonZeroMeasurements->toArray();
+    /** @var \App\Models\Client $patient */
+
+    // BP
+    $bpMeasurements = $patient->getNonZeroBpMeasurements->toArray();
+    $weightMeasurements = $patient->getNonZeroWeightMeasurements->toArray();
 
     $bpData = [];
     $weightData = [];
@@ -55,45 +59,30 @@
 
         $date = $dates[$i];
 
-        // sbp
-        $sbp = array_filter($allMeasurements, function($_measurement) use ($date) {
-            return $_measurement['label'] === 'SBP' && $_measurement['effective_date'] === $date && !!$_measurement['numeric_value'];
+        // bp
+        $bp = array_filter($bpMeasurements, function($_measurement) use ($date) {
+            return $_measurement['effective_date'] === $date;
         });
-        if(count($sbp)) {
-            $sbp = array_values($sbp);
-            $sbp = $sbp[count($sbp) - 1];
+        if(count($bp)) {
+            $bp = array_values($bp);
+            $bp = $bp[count($bp) - 1];
         }
         else {
-            $sbp = null;
-        }
-        // dbp
-        $dbp = null;
-        if($sbp) {
-            $dbp = array_filter($allMeasurements, function($_measurement) use ($date) {
-                $measurementDate = date('Y-m-d', strtotime($_measurement['effective_date']));
-                return $_measurement['label'] === 'DBP' && $measurementDate === $date && !!$_measurement['numeric_value'];
-            });
-            if(count($dbp)) {
-                $dbp = array_values($dbp);
-                $dbp = $dbp[count($dbp) - 1];
-            }
-            else {
-                $dbp = null;
-            }
+            $bp = null;
         }
-        if ($sbp && $dbp) {
+
+
+        if ($bp) {
             $bpData[] = [
                 "date" => $date,
-                "sbp" => $sbp["numeric_value"],
-                "dbp" => $dbp["numeric_value"]
+                "sbp" => $bp["sbp_mm_hg"],
+                "dbp" => $bp["dbp_mm_hg"]
             ];
         }
 
         // weight
-        $weight = array_filter($allMeasurements, function($_measurement) use ($date) {
-            return $_measurement['label'] === 'Wt. (lbs.)' &&
-                $_measurement['effective_date'] === $date &&
-                !!$_measurement['numeric_value'];
+        $weight = array_filter($weightMeasurements, function($_measurement) use ($date) {
+            return $_measurement['effective_date'] === $date;
         });
         if(count($weight)) {
             $weight = array_values($weight);