= 4 жил өмнө
parent
commit
a1dc1fc626

+ 5 - 1
app/Http/Controllers/HomeController.php

@@ -12,6 +12,7 @@ use DateTime;
 
 use App\Models\Client;
 use App\Models\Bill;
+use App\Models\Measurement;
 use App\Models\Note;
 use App\Models\Pro;
 use App\Models\ProTransaction;
@@ -286,7 +287,10 @@ class HomeController extends Controller
 
         $milliseconds = strtotime(date('Y-m-d')) . '000';
 
-        return view('app/dashboard', compact('keyNumbers', 'reimbursement', 'milliseconds'));
+        $measurements_filter = $request->get('measurements_filter');
+        $measurements = $performer->pro->getMeasurements($measurements_filter != 'ALL');
+
+        return view('app/dashboard', compact('keyNumbers', 'reimbursement', 'milliseconds', 'measurements', 'measurements_filter'));
     }
 
     public function dashboardAppointments(Request $request, $from, $to) {

+ 2 - 0
app/Models/Pro.php

@@ -361,6 +361,8 @@ class Pro extends Model
             unset($measurement->client); // we do not need this travelling to the frontend
         }
 
+
+
         return $measurements;
     }
 }

+ 1 - 140
resources/views/app/dashboard.blade.php

@@ -161,146 +161,7 @@
                     </div>
                     </div>
                     <div v-show="tab==='measurements'">
-                        <div class="d-flex align-items-end mb-3">
-                            <b class="large">Measurements in {{friendly_month(date('Y-m-d'))}}</b>
-                            @if($pro->pro_type !== 'ADMIN')
-                            <div class="ml-auto d-inline-flex align-items-center">
-                                <label class="text-secondary mr-2 my-0 text-nowrap">Filter by status:</label>
-                                <select v-model="measurementFilterStatus"
-                                        class="form-control form-control-sm"
-                                        v-on:change="updateMeasurements()">
-                                    <option value="ALL">All</option>
-                                    <option value="NEED_ACK">Needs Stamping</option>
-                                </select>
-                            </div>
-                            @endif
-                        </div>
-                        <table class="table table-striped table-sm table-bordered mb-0">
-                            <thead>
-                            <tr>
-                                <th class="border-0 px-2 text-secondary">Patient</th>
-                                <th class="border-0 px-2 text-secondary">Category</th>
-                                <th class="border-0 px-2 text-secondary">Value</th>
-                                <th class="border-0 px-2 text-secondary">Timestamp</th>
-                                <th class="border-0 px-2 text-secondary">Mins this month</th>
-                                <th class="border-0 px-2 text-secondary text-center">Stamp</th>
-                                <th class="border-0 px-2 text-secondary text-center">Entry</th>
-                            </tr>
-                            </thead>
-                            <tbody>
-                            <tr v-for="measurement in measurements">
-                                <td class="px-2">
-                                    <a native
-                                       target="_top" :href="'/mc/patients/view/' + measurement.patient.uid"
-                                       class="font-weight-bold">
-                                        @{{ measurement.patient.name }}
-                                    </a>
-                                </td>
-                                <td class="px-2">@{{ measurement.label }}</td>
-                                <td class="px-2">
-                                    <div v-if="!measurement.client_bdt_measurement_id"><b>@{{ measurement.value }}</b></div>
-                                    <div v-else>
-                                        <div v-if="measurement.label === 'BP'">
-                                            <b>@{{ measurement.bdtMeasurement.systolic_bp_in_mm_hg }}</b>/<b>@{{ measurement.bdtMeasurement.diastolic_bp_in_mm_hg }}</b> mmHg
-                                        </div>
-                                        <div v-if="measurement.label === 'SBP'">
-                                            <b>@{{ measurement.bdtMeasurement.systolic_bp_in_mm_hg }}</b> mmHg
-                                        </div>
-                                        <div v-if="measurement.label === 'DBP'">
-                                            <b>@{{ measurement.bdtMeasurement.diastolic_bp_in_mm_hg }}</b> mmHg
-                                        </div>
-                                        <div v-if="measurement.label === 'Wt. (lbs.)'">
-                                            <b>@{{ parseFloat(measurement.bdtMeasurement.weight_in_pounds).toFixed(1) }}</b> lbs
-                                        </div>
-                                    </div>
-                                </td>
-                                <td>
-                                    @{{measurement.timestamp}}
-                                </td>
-                                <td class="px-2">
-                                    @{{Math.floor(measurement.careMonth.rm_total_time_in_seconds/60).toFixed(0)}}
-                                </td>
-                                <td colspan="px-2">
-                                    <div v-if="measurement.client_bdt_measurement_id" class="d-flex align-items-center justify-content-center">
-                                        <button class="btn btn-sm py-0 px-1 width-22px" v-on:click.prevent="setMeasurementStatus(measurement.uid, 'ACK')"
-                                                :class="measurement.status === 'ACK' ? 'bg-success text-white' : 'text-success'">
-                                            <i class="fa fa-check"></i>
-                                        </button>
-                                        <button class="btn btn-sm py-0 px-1 width-22px ml-0" v-on:click.prevent="setMeasurementStatus(measurement.uid, 'INVALID_ACK')"
-                                                :class="measurement.status === 'INVALID_ACK' ? 'bg-danger text-white' : 'text-danger'">
-                                            <i class="fa fa-times"></i>
-                                        </button>
-                                    </div>
-                                    <div v-else class="text-center">-</div>
-                                </td>
-                                <td colspan="px-2">
-                                    <div v-if="measurement.client_bdt_measurement_id" class="text-center">
-                                        <span moe large relative>
-                                            <a start show class="py-0 mb-3 font-weight-bold">Add</a>
-                                            <form url="/api/careMonthEntry/createForRm" right>
-                                                <p class="mb-2 d-block text-left"><b>Add RM Entry</b></p>
-                                                <input type="hidden" name="careMonthUid" :value="measurement.careMonth.uid">
-                                                <input type="hidden" name="proUid" value="{{$pro->uid}}">
-                                                <input type="hidden" name="effectiveDate" value="{{date('Y-m-d')}}">
-                                                <div class="bg-light border rounded p-2 mb-2">
-                                                    <div class="mb-1 d-flex align-items-center">
-                                                        <span class="width-50px text-left text-secondary">Type</span>
-                                                        <div><b>@{{ measurement.label }}</b></div>
-                                                    </div>
-                                                    <div class="d-flex align-items-center">
-                                                        <span class="width-50px text-left text-secondary">Value</span>
-                                                        <div v-if="!measurement.client_bdt_measurement_id"><b>@{{ measurement.value }}</b></div>
-                                                        <div v-else>
-                                                            <div v-if="measurement.label === 'BP'">
-                                                                <b>@{{ measurement.bdtMeasurement.systolic_bp_in_mm_hg }}</b>/<b>@{{ measurement.bdtMeasurement.diastolic_bp_in_mm_hg }}</b> mmHg
-                                                            </div>
-                                                            <div v-if="measurement.label === 'SBP'">
-                                                                <b>@{{ measurement.bdtMeasurement.systolic_bp_in_mm_hg }}</b> mmHg
-                                                            </div>
-                                                            <div v-if="measurement.label === 'DBP'">
-                                                                <b>@{{ measurement.bdtMeasurement.diastolic_bp_in_mm_hg }}</b> mmHg
-                                                            </div>
-                                                            <div v-if="measurement.label === 'Wt. (lbs.)'">
-                                                                <b>@{{ parseFloat(measurement.bdtMeasurement.weight_in_pounds).toFixed(1) }}</b> lbs
-                                                            </div>
-                                                        </div>
-                                                    </div>
-                                                </div>
-                                                <div class="mb-2">
-                                                    <div class="row">
-                                                        <div class="col-6 d-flex align-items-center">
-                                                            <label class="text-secondary text-sm my-0 mr-3 text-nowrap">Time (mins)</label>
-                                                            <input type="number" min="0" max="5400"
-                                                                   class="form-control form-control-sm w-100 cm-time-value"
-                                                                   name="timeInMinutes" value="" placeholder="Time (mins.)" required>
-                                                        </div>
-                                                    </div>
-                                                </div>
-                                                <div class="mb-2">
-                                                    <div class="row">
-                                                        <div class="col-12 text-left">
-                                                            <label class="text-secondary text-sm mb-1">Details</label>
-                                                            <textarea class="form-control form-control-sm" rows="4"
-                                                                      name="contentText">@{{ 'Reviewed ' + measurement.label + ' measurement' }}</textarea>
-                                                        </div>
-                                                    </div>
-                                                </div>
-                                                <div class="d-flex align-items-center">
-                                                    <button class="btn btn-sm btn-success mr-2" submit>Submit</button>
-                                                    <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                                                </div>
-                                            </form>
-                                        </span>
-                                    </div>
-                                </td>
-                            </tr>
-                            <tr v-if="!measurements || !measurements.length">
-                                <td class="text-secondary p-0 border-0 p-3" colspan="6">
-                                    No items to show
-                                </td>
-                            </tr>
-                            </tbody>
-                        </table>
+                        @include('app.dashboard.measurements')
                     </div>
                 </div>
             </div>

+ 157 - 0
resources/views/app/dashboard/measurements.blade.php

@@ -0,0 +1,157 @@
+<div class="d-flex align-items-end mb-3">
+    <b class="large">Measurements in {{friendly_month(date('Y-m-d'))}}</b>
+    @if($pro->pro_type !== 'ADMIN')
+    <form method="GET" action="/mc/" class="ml-auto d-inline-flex align-items-center">
+        <div class="ml-auto d-inline-flex align-items-center">
+            <label class="text-secondary mr-2 my-0 text-nowrap">Filter by status:</label>
+            <select name="measurements_filter" class="form-control form-control-sm">
+                <option {{$measurements_filter == 'ALL'? 'selected':''}} value="ALL">All</option>
+                <option {{$measurements_filter == 'NEED_ACK'? 'selected':''}} value="NEED_ACK">Needs Stamping</option>
+            </select>
+        </div>
+        <div class="ml-2">
+            <button  class="btn btn-primary btn-sm">Filter</button>
+        </div>
+    </form>
+    @endif
+</div>
+<table class="table table-striped table-sm table-bordered mb-0">
+    <thead>
+        <tr>
+            <th class="border-0 px-2 text-secondary">Patient</th>
+            <th class="border-0 px-2 text-secondary">Category</th>
+            <th class="border-0 px-2 text-secondary">Value</th>
+            <th class="border-0 px-2 text-secondary">Timestamp</th>
+            <th class="border-0 px-2 text-secondary">Mins this month</th>
+            <th class="border-0 px-2 text-secondary text-center">Stamp</th>
+            <th class="border-0 px-2 text-secondary text-center">Entry</th>
+        </tr>
+    </thead>
+    <tbody>
+        @if(count($measurements))
+            <?php foreach($measurements as $measurement): ?>
+                <?php if(in_array($measurement->label, ['SBP', 'DBP']) ) continue; ?>
+                <tr>
+                    <td class="px-2">
+                        <a native target="_top" href="/mc/patients/view/{{$measurement->client->uid}}" class="font-weight-bold">
+                            {{ $measurement->client->name_first }} {{ $measurement->client->name_last }}
+                        </a>
+                    </td>
+                    <td class="px-2">{{ $measurement->label }}</td>
+                    <td class="px-2">
+                        @if(!$measurement->clientBDTMeasurement)
+                         <div><b>{{ $measurement->value }}</b></div>
+                        @else 
+                        <div>
+                            @if($measurement->label == 'BP')
+                            <div>
+                                <b>{{ $measurement->clientBdtMeasurement->systolic_bp_in_mm_hg }}</b>/<b>{{ $measurement->clientBdtMeasurement->diastolic_bp_in_mm_hg }}</b> mmHg
+                            </div>
+                            @endif
+                            @if($measurement->label == 'Wt. (lbs.)')
+                            <div>
+                                <b>{{ floor($measurement->clientBdtMeasurement->weight_in_pounds)}}</b> lbs
+                            </div>
+                            @endif
+                        </div>
+                        @endif
+                    </td>
+                    <td>
+                        {{$measurement->timestamp}}
+                    </td>
+                    <td class="px-2">
+                        @if($measurement->careMonth)
+                        {{ floor($measurement->careMonth->rm_total_time_in_seconds/60) }}
+                        @endif
+                    </td>
+                    <td colspan="px-2">
+                        @if($measurement->clientBdtMeasurement) 
+                        <span moe large relative>
+                            <a start show class="py-0 mb-3 font-weight-bold">Update status</a>
+                            <form url="url="/api/measurement/updateStatus" right>   
+                                <input type="hidden" name="uid" value="{{$measurement->uid}}">
+                                <select name="status" id="" class="form-control input-sm">
+                                    <option value="">--select--</option>
+                                    <option value="ACK">Ok</option> 
+                                    <option value="INVALID_ACK">Invalid</option>
+                                </select>
+                                <div class="d-flex align-items-center">
+                                    <button class="btn btn-sm btn-success mr-2" submit>Submit</button>
+                                    <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
+                                </div>
+                            </form>
+                        </span>
+                        <div v-else class="text-center">-</div>
+                        @endif
+                    </td>
+                    <td colspan="px-2">
+                        @if($measurement->clientBdtMeasurement)
+                        <div class="text-center">
+                            <span moe large relative>
+                                <a start show class="py-0 mb-3 font-weight-bold">Add</a>
+                                <form url="/api/careMonthEntry/createForRm" right>
+                                    <p class="mb-2 d-block text-left"><b>Add RM Entry</b></p>
+                                    <input type="hidden" name="careMonthUid" value="{{$measurement->careMonth->uid}}">
+                                    <input type="hidden" name="proUid" value="{{$pro->uid}}">
+                                    <input type="hidden" name="effectiveDate" value="{{date('Y-m-d')}}">
+                                    <div class="bg-light border rounded p-2 mb-2">
+                                        <div class="mb-1 d-flex align-items-center">
+                                            <span class="width-50px text-left text-secondary">Type</span>
+                                            <div><b>{{ $measurement->label }} </b></div>
+                                        </div>
+                                        <div class="d-flex align-items-center">
+                                            <span class="width-50px text-left text-secondary">Value</span>
+                                            @if(!$measurement->clientBDTMeasurement)
+                                                <div><b>{{ $measurement->value }}</b></div>
+                                            @else 
+                                                <div>
+                                                    @if($measurement->label == 'BP')
+                                                    <div>
+                                                        <b>{{ $measurement->clientBdtMeasurement->systolic_bp_in_mm_hg }}</b>/<b>{{ $measurement->clientBdtMeasurement->diastolic_bp_in_mm_hg }}</b> mmHg
+                                                    </div>
+                                                    @endif
+                                                    @if($measurement->label == 'Wt. (lbs.)')
+                                                    <div>
+                                                        <b>{{ floor($measurement->clientBdtMeasurement->weight_in_pounds)}}</b> lbs
+                                                    </div>
+                                                    @endif
+                                                </div>
+                                            @endif
+                                        </div>
+                                    </div>
+                                    <div class="mb-2">
+                                        <div class="row">
+                                            <div class="col-6 d-flex align-items-center">
+                                                <label class="text-secondary text-sm my-0 mr-3 text-nowrap">Time (mins)</label>
+                                                <input type="number" min="0" max="5400" class="form-control form-control-sm w-100 cm-time-value" name="timeInMinutes" value="" placeholder="Time (mins.)" required>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="mb-2">
+                                        <div class="row">
+                                            <div class="col-12 text-left">
+                                                <label class="text-secondary text-sm mb-1">Details</label>
+                                                <textarea class="form-control form-control-sm" rows="4" name="contentText">{{ 'Reviewed ' . $measurement->label . ' measurement' }}</textarea>
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <div class="d-flex align-items-center">
+                                        <button class="btn btn-sm btn-success mr-2" submit>Submit</button>
+                                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
+                                    </div>
+                                </form>
+                            </span>
+                        </div>
+                        @endif
+                    </td>
+                </tr>
+            <?php endforeach ?>
+        @else
+            <tr>
+                <td class="text-secondary p-0 border-0 p-3" colspan="6">
+                    No items to show
+                </td>
+            </tr>
+        @endif
+    </tbody>
+</table>