Эх сурвалжийг харах

Move CDB > measurements to own partial

Vijayakrishnan 4 жил өмнө
parent
commit
7a7941a793

+ 10 - 0
app/Models/ClientProgramMonthEntry.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace App\Models;
+
+# use Illuminate\Database\Eloquent\Model;
+
+class ClientProgramMonthEntry extends Model
+{
+    protected $table = "client_program_month_entry";
+}

+ 4 - 0
app/Models/Measurement.php

@@ -12,4 +12,8 @@ class Measurement extends Model
     {
         return $this->hasOne(Client::class, 'id', 'client_id');
     }
+
+    public function numCPMEntries() {
+        return ClientProgramMonthEntry::where('measurement_id', $this->id)->where('is_cancelled', false)->count();
+    }
 }

+ 1 - 1
app/Models/Pro.php

@@ -301,7 +301,7 @@ class Pro extends Model
             ->get();
     }
 
-    public function canAddEntryForMeasurement(Measurement $measurement, Pro $pro)
+    public function canAddCPMEntryForMeasurement(Measurement $measurement, Pro $pro)
     {
         // check if client has any programs where this measurement type is allowed
         $allowed = false;

+ 2 - 196
resources/views/app/patient/dashboard.blade.php

@@ -171,204 +171,10 @@
                 </div>
 
                 {{-- device measurements --}}
-                <div class="mt-2 pb-1">
-                    <div class="d-flex align-items-center mb-2 py-2 border-top border-bottom">
-                        <h6 class="my-0 font-weight-bold text-secondary">Cellular Measurements</h6>
-                        <span class="mx-2 text-secondary">|</span>
-                        <a start show class="py-0 font-weight-normal"
-                           href="/patients/view/{{ $patient->uid }}/measurements">
-                            View All
-                        </a>
-                    </div>
-                    <table class="table table-sm border-0 my-0 mx-2">
-                        <tbody>
-                        @foreach($patient->deviceMeasurements as $measurement)
-                            <tr>
-                                <td class="text-black p-0 border-0">
-                                    <div class="pb-1 d-flex align-items-center">
-                                        <span class="text-secondary mr-2">{{ $measurement->measurement->device_category }}:</span>
-                                        @if($measurement->measurement->device_category === 'WEIGHT')
-                                            <b>{{ round(($measurement->measurement->value_weight / 1000)*2.20462, 1) }} lb</b>
-                                        @elseif($measurement->measurement->device_category === 'BP')
-                                            <b>{{ $measurement->measurement->systolic_bp_in_mm_hg }}/{{ $measurement->measurement->diastolic_bp_in_mm_hg }} mmHg</b>
-                                        @endif
-                                        <span class="font-weight-normal text-secondary ml-2 text-sm">({{ friendly_date_time($measurement->measurement->created_at, true) }})</span>
-                                        <span class="ml-2 text-sm {{$measurement->status === 'NEW' ? 'text-info' : ($measurement->status === 'ACCEPTED' ? 'text-success' : 'text-sacondary')}}">{{$measurement->status}}</span>
-                                        <span>
-                                            <span moe class="ml-2" relative>
-                                                <a href="#" start show><i class="on-hover-opaque font-size-11 fa fa-edit text-primary"></i></a>
-                                                <form url="/api/clientBdtMeasurement/updateStatus" right>
-                                                    <input type="hidden" name="uid" value="{{ $measurement->uid }}">
-                                                    <div class="mb-2">
-                                                        <select name="status" class="form-control form-control-sm" required>
-                                                            <option value="">-- select --</option>
-                                                            <option {{$measurement->status === 'NEW' ? 'selected' : ''  }} value="NEW">NEW</option>
-                                                            <option {{$measurement->status === 'ACCEPTED' ? 'selected' : ''  }} value="ACCEPTED">ACCEPTED</option>
-                                                            <option {{$measurement->status === 'REJECTED' ? 'selected' : ''  }} value="REJECTED">REJECTED</option>
-                                                        </select>
-                                                    </div>
-                                                    <div class="mb-2">
-                                                        <input type="text" name="statusMemo" placeholder="Status memo" class="form-control form-control-sm">
-                                                    </div>
-                                                    <div class="d-flex align-items-center">
-                                                        <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
-                                                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                                                    </div>
-                                                </form>
-                                            </span>
-                                        </span>
-                                    </div>
-                                </td>
-                            </tr>
-                        @endforeach
-                        @if(!$patient->deviceMeasurements || count($patient->deviceMeasurements) === 0)
-                            <tr>
-                                <td class="text-secondary p-0 border-0">
-                                    No measurements
-                                </td>
-                            </tr>
-                        @endif
-                        </tbody>
-                    </table>
-                </div>
-
+                @include('app/patient/partials/device-measurements')
 
                 {{-- measurements --}}
-                <div class="mt-2 pb-1">
-                    <div class="d-flex align-items-center mb-2 py-2 border-top border-bottom">
-                        <h6 class="my-0 font-weight-bold text-secondary">Measurements</h6>
-                        <span class="mx-2 text-secondary">|</span>
-                        <div moe>
-                            <a start show class="py-0 font-weight-normal">Add</a>
-                            <form url="/api/measurement/create">
-                                <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                                <div class="mb-2">
-                                    <input required autofocus type="text" class="form-control form-control-sm" name="label" value="" placeholder="Type">
-                                </div>
-                                <div class="mb-2">
-                                    <input required type="text" class="form-control form-control-sm" name="value" value="" placeholder="Value">
-                                </div>
-                                <div class="mb-2">
-                                    <input required type="date" class="form-control form-control-sm" name="effectiveDate" max="{{ date('Y-m-d') }}" value="{{ date('Y-m-d') }}">
-                                </div>
-                                <div class="d-flex align-items-center">
-                                    <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
-                                    <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                                </div>
-                            </form>
-                        </div>
-                        <span class="mx-2 text-secondary">|</span>
-                        <a start show class="py-0 font-weight-normal"
-                           href="/patients/view/{{ $patient->uid }}/measurements">
-                            View All
-                        </a>
-                    </div>
-                    <table class="table table-sm border-0 m-0">
-                        <tbody>
-                        @foreach($patient->measurements as $measurement)
-                            @if(!empty($measurement->label) && !in_array($measurement->label, $vitalLabels))
-                                <tr>
-                                    <td class="text-black p-0 border-0">
-                                        <div class="d-flex align-items-center">
-                                            <div moe relative class="mr-2">
-                                                <a class="on-hover-opaque" start show title="Delete">
-                                                    <i class="font-size-11 fa fa-trash-alt text-danger"></i>
-                                                </a>
-                                                <form url="/api/measurement/remove">
-                                                    <input type="hidden" name="uid" value="{{ $measurement->uid }}">
-                                                    <p class="small min-width-200px">Are you sure you want to delete this entry?</p>
-                                                    <div class="d-flex align-items-center">
-                                                        <button class="btn btn-sm btn-danger mr-2" submit>Delete</button>
-                                                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                                                    </div>
-                                                </form>
-                                            </div>
-                                            <div moe class="mr-2">
-                                                <a class="on-hover-opaque" start show title="Update">
-                                                    <i class="font-size-11 fa fa-edit text-primary"></i>
-                                                </a>
-                                                <form url="/api/measurement/create">
-                                                    <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                                                    <div class="mb-2">
-                                                        <input required type="text" class="form-control form-control-sm" name="label" value="{{ $measurement->label }}" placeholder="Type">
-                                                    </div>
-                                                    <div class="mb-2">
-                                                        <input required autofocus type="text" class="form-control form-control-sm" name="value" value="{{ $measurement->value }}" placeholder="Value">
-                                                    </div>
-                                                    <div class="mb-2">
-                                                        <input required type="date" class="form-control form-control-sm" name="effectiveDate" max="{{ date('Y-m-d') }}" value="{{ date('Y-m-d') }}">
-                                                    </div>
-                                                    <div class="d-flex align-items-center">
-                                                        <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
-                                                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                                                    </div>
-                                                </form>
-                                            </div>
-                                            <span>{{ $measurement->label }}:</span>
-                                            <span class="font-weight-bold ml-1">{{ $measurement->value }}</span>
-                                            <span class="font-weight-normal text-secondary ml-2 text-sm">(as on {{ friendly_date_time($measurement->effective_date, false) }})</span>
-                                            @php $matchingClientPrograms = $pro->canAddEntryForMeasurement($measurement, $pro); @endphp
-                                            @if($matchingClientPrograms && count($matchingClientPrograms))
-                                            <div moe>
-                                                <a href="#" class="ml-2 font-weight-bold" start show><i class="fa fa-clock"></i> + Entry</a>
-                                                <form url="/api/clientProgramMonthEntry/create">
-                                                    <input type="hidden" name="measurementUid" value="{{ $measurement->uid }}">
-                                                    <input type="hidden" name="proUid" value="{{ $pro->uid }}">
-                                                    @if(count($matchingClientPrograms) === 1)
-                                                        <input type="hidden" name="clientProgramUid" value="{{ $matchingClientPrograms->first()->uid }}">
-                                                    @else
-                                                        <div class="mb-2">
-                                                            <label class="text-sm mb-1 text-secondary">Program</label>
-                                                            <select autofocus class="form-control form-control-sm" name="clientProgramUid" required>
-                                                                <option value="">-- select --</option>
-                                                                @foreach($matchingClientPrograms as $clientProgram)
-                                                                    <option value="{{$clientProgram->uid}}">{{$clientProgram->program->title}}</option>
-                                                                @endforeach
-                                                            </select>
-                                                        </div>
-                                                    @endif
-                                                    <div class="mb-2">
-                                                        <label class="text-sm mb-1 text-secondary">Effective Date</label>
-                                                        <input required type="date" class="form-control form-control-sm" name="effectiveDate" value="{{ date('Y-m-d') }}">
-                                                    </div>
-                                                    <div class="mb-2">
-                                                        <label class="text-sm mb-1 text-secondary">Quick Text</label>
-                                                        <input autofocus required type="text" class="form-control form-control-sm" name="quickText" value="">
-                                                    </div>
-                                                    <div class="mb-2">
-                                                        <label class="text-sm mb-1 text-secondary">Measurement Determination</label>
-                                                        <input type="text" class="form-control form-control-sm" name="measurementDetermination" value="">
-                                                    </div>
-                                                    <div class="mb-2">
-                                                        <label class="text-sm mb-1 text-secondary">Measurement Memo</label>
-                                                        <input type="text" class="form-control form-control-sm" name="measurementMemo" value="">
-                                                    </div>
-                                                    <div class="mb-2">
-                                                        <label class="text-sm mb-1 text-secondary">Time (minutes)</label>
-                                                        <input required type="number" class="form-control form-control-sm" name="timeInMinutes" value="">
-                                                    </div>
-                                                    <div class="d-flex align-items-center">
-                                                        <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
-                                                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                                                    </div>
-                                                </form>
-                                            </div>
-                                            @endif
-                                        </div>
-                                    </td>
-                                </tr>
-                            @endif
-                        @endforeach
-                        @if(!$patient->measurements || !count($patient->measurements) === 0)
-                            <tr>
-                                <td class="text-secondary p-0 border-0">
-                                    No items to show
-                                </td>
-                            </tr>
-                        @endif
-                        </tbody>
-                    </table>
-                </div>
+                @include('app/patient/partials/measurements')
 
                 {{-- vitals --}}
                 {{--@include('app/patient/partials/vitals')--}}

+ 60 - 0
resources/views/app/patient/partials/device-measurements.blade.php

@@ -0,0 +1,60 @@
+<div class="mt-2 pb-1">
+    <div class="d-flex align-items-center mb-2 py-2 border-top border-bottom">
+        <h6 class="my-0 font-weight-bold text-secondary">Cellular Measurements</h6>
+        <span class="mx-2 text-secondary">|</span>
+        <a start show class="py-0 font-weight-normal"
+           href="/patients/view/{{ $patient->uid }}/measurements">
+            View All
+        </a>
+    </div>
+    <table class="table table-sm border-0 my-0 mx-2">
+        <tbody>
+        @foreach($patient->deviceMeasurements as $measurement)
+            <tr>
+                <td class="text-black p-0 border-0">
+                    <div class="pb-1 d-flex align-items-center">
+                        <span class="text-secondary mr-2">{{ $measurement->measurement->device_category }}:</span>
+                        @if($measurement->measurement->device_category === 'WEIGHT')
+                            <b>{{ round(($measurement->measurement->value_weight / 1000)*2.20462, 1) }} lb</b>
+                        @elseif($measurement->measurement->device_category === 'BP')
+                            <b>{{ $measurement->measurement->systolic_bp_in_mm_hg }}/{{ $measurement->measurement->diastolic_bp_in_mm_hg }} mmHg</b>
+                        @endif
+                        <span class="font-weight-normal text-secondary ml-2 text-sm">({{ friendly_date_time($measurement->measurement->created_at, true) }})</span>
+                        <span class="ml-2 text-sm {{$measurement->status === 'NEW' ? 'text-info' : ($measurement->status === 'ACCEPTED' ? 'text-success' : 'text-sacondary')}}">{{$measurement->status}}</span>
+                        <span>
+                                        <span moe class="ml-2" relative>
+                                            <a href="#" start show><i class="on-hover-opaque font-size-11 fa fa-edit text-primary"></i></a>
+                                            <form url="/api/clientBdtMeasurement/updateStatus" right>
+                                                <input type="hidden" name="uid" value="{{ $measurement->uid }}">
+                                                <div class="mb-2">
+                                                    <select name="status" class="form-control form-control-sm" required>
+                                                        <option value="">-- select --</option>
+                                                        <option {{$measurement->status === 'NEW' ? 'selected' : ''  }} value="NEW">NEW</option>
+                                                        <option {{$measurement->status === 'ACCEPTED' ? 'selected' : ''  }} value="ACCEPTED">ACCEPTED</option>
+                                                        <option {{$measurement->status === 'REJECTED' ? 'selected' : ''  }} value="REJECTED">REJECTED</option>
+                                                    </select>
+                                                </div>
+                                                <div class="mb-2">
+                                                    <input type="text" name="statusMemo" placeholder="Status memo" class="form-control form-control-sm">
+                                                </div>
+                                                <div class="d-flex align-items-center">
+                                                    <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
+                                                    <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
+                                                </div>
+                                            </form>
+                                        </span>
+                                    </span>
+                    </div>
+                </td>
+            </tr>
+        @endforeach
+        @if(!$patient->deviceMeasurements || count($patient->deviceMeasurements) === 0)
+            <tr>
+                <td class="text-secondary p-0 border-0">
+                    No measurements
+                </td>
+            </tr>
+        @endif
+        </tbody>
+    </table>
+</div>

+ 135 - 0
resources/views/app/patient/partials/measurements.blade.php

@@ -0,0 +1,135 @@
+<div class="mt-2 pb-1">
+    <div class="d-flex align-items-center mb-2 py-2 border-top border-bottom">
+        <h6 class="my-0 font-weight-bold text-secondary">Measurements</h6>
+        <span class="mx-2 text-secondary">|</span>
+        <div moe>
+            <a start show class="py-0 font-weight-normal">Add</a>
+            <form url="/api/measurement/create">
+                <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
+                <div class="mb-2">
+                    <input required autofocus type="text" class="form-control form-control-sm" name="label" value="" placeholder="Type">
+                </div>
+                <div class="mb-2">
+                    <input required type="text" class="form-control form-control-sm" name="value" value="" placeholder="Value">
+                </div>
+                <div class="mb-2">
+                    <input required type="date" class="form-control form-control-sm" name="effectiveDate" max="{{ date('Y-m-d') }}" value="{{ date('Y-m-d') }}">
+                </div>
+                <div class="d-flex align-items-center">
+                    <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
+                    <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
+                </div>
+            </form>
+        </div>
+        <span class="mx-2 text-secondary">|</span>
+        <a start show class="py-0 font-weight-normal"
+           href="/patients/view/{{ $patient->uid }}/measurements">
+            View All
+        </a>
+    </div>
+    <table class="table table-sm border-0 m-0">
+        <tbody>
+        @foreach($patient->measurements as $measurement)
+            @if(!empty($measurement->label) && !in_array($measurement->label, $vitalLabels))
+                <tr>
+                    <td class="text-black p-0 border-0">
+                        <div class="d-flex align-items-center">
+                            <div moe relative class="mr-2">
+                                <a class="on-hover-opaque" start show title="Delete">
+                                    <i class="font-size-11 fa fa-trash-alt text-danger"></i>
+                                </a>
+                                <form url="/api/measurement/remove">
+                                    <input type="hidden" name="uid" value="{{ $measurement->uid }}">
+                                    <p class="small min-width-200px">Are you sure you want to delete this entry?</p>
+                                    <div class="d-flex align-items-center">
+                                        <button class="btn btn-sm btn-danger mr-2" submit>Delete</button>
+                                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
+                                    </div>
+                                </form>
+                            </div>
+                            <div moe class="mr-2">
+                                <a class="on-hover-opaque" start show title="Update">
+                                    <i class="font-size-11 fa fa-edit text-primary"></i>
+                                </a>
+                                <form url="/api/measurement/create">
+                                    <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
+                                    <div class="mb-2">
+                                        <input required type="text" class="form-control form-control-sm" name="label" value="{{ $measurement->label }}" placeholder="Type">
+                                    </div>
+                                    <div class="mb-2">
+                                        <input required autofocus type="text" class="form-control form-control-sm" name="value" value="{{ $measurement->value }}" placeholder="Value">
+                                    </div>
+                                    <div class="mb-2">
+                                        <input required type="date" class="form-control form-control-sm" name="effectiveDate" max="{{ date('Y-m-d') }}" value="{{ date('Y-m-d') }}">
+                                    </div>
+                                    <div class="d-flex align-items-center">
+                                        <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
+                                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
+                                    </div>
+                                </form>
+                            </div>
+                            <span>{{ $measurement->label }}:</span>
+                            <span class="font-weight-bold ml-1">{{ $measurement->value }}</span>
+                            <span class="font-weight-normal text-secondary ml-2 text-sm">(as on {{ friendly_date_time($measurement->effective_date, false) }})</span>
+                            @php $matchingClientPrograms = $pro->canAddCPMEntryForMeasurement($measurement, $pro); @endphp
+                            @if($matchingClientPrograms && count($matchingClientPrograms))
+                                <div moe>
+                                    <a href="#" class="ml-2 font-weight-normal" start show><i class="fa fa-clock"></i> <b>Entry</b> ({{ $measurement->numCPMEntries() }})</a>
+                                    <form url="/api/clientProgramMonthEntry/create">
+                                        <input type="hidden" name="measurementUid" value="{{ $measurement->uid }}">
+                                        <input type="hidden" name="proUid" value="{{ $pro->uid }}">
+                                        @if(count($matchingClientPrograms) === 1)
+                                            <input type="hidden" name="clientProgramUid" value="{{ $matchingClientPrograms->first()->uid }}">
+                                        @else
+                                            <div class="mb-2">
+                                                <label class="text-sm mb-1 text-secondary">Program</label>
+                                                <select autofocus class="form-control form-control-sm" name="clientProgramUid" required>
+                                                    <option value="">-- select --</option>
+                                                    @foreach($matchingClientPrograms as $clientProgram)
+                                                        <option value="{{$clientProgram->uid}}">{{$clientProgram->program->title}}</option>
+                                                    @endforeach
+                                                </select>
+                                            </div>
+                                        @endif
+                                        <div class="mb-2">
+                                            <label class="text-sm mb-1 text-secondary">Effective Date</label>
+                                            <input required type="date" class="form-control form-control-sm" name="effectiveDate" value="{{ date('Y-m-d') }}">
+                                        </div>
+                                        <div class="mb-2">
+                                            <label class="text-sm mb-1 text-secondary">Quick Text</label>
+                                            <input autofocus required type="text" class="form-control form-control-sm" name="quickText" value="">
+                                        </div>
+                                        <div class="mb-2">
+                                            <label class="text-sm mb-1 text-secondary">Measurement Determination</label>
+                                            <input type="text" class="form-control form-control-sm" name="measurementDetermination" value="">
+                                        </div>
+                                        <div class="mb-2">
+                                            <label class="text-sm mb-1 text-secondary">Measurement Memo</label>
+                                            <input type="text" class="form-control form-control-sm" name="measurementMemo" value="">
+                                        </div>
+                                        <div class="mb-2">
+                                            <label class="text-sm mb-1 text-secondary">Time (minutes)</label>
+                                            <input required type="number" class="form-control form-control-sm" name="timeInMinutes" value="">
+                                        </div>
+                                        <div class="d-flex align-items-center">
+                                            <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
+                                            <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
+                                        </div>
+                                    </form>
+                                </div>
+                            @endif
+                        </div>
+                    </td>
+                </tr>
+            @endif
+        @endforeach
+        @if(!$patient->measurements || !count($patient->measurements) === 0)
+            <tr>
+                <td class="text-secondary p-0 border-0">
+                    No items to show
+                </td>
+            </tr>
+        @endif
+        </tbody>
+    </table>
+</div>