Bladeren bron

Incoming reports UI (wip)

Vijayakrishnan 4 jaren geleden
bovenliggende
commit
d2f6475695

+ 5 - 0
app/Http/Controllers/PatientController.php

@@ -269,6 +269,11 @@ class PatientController extends Controller
         return view('app.patient.documents', compact('patient'));
     }
 
+    public function incomingReports(Request $request, Client $patient )
+    {
+        return view('app.patient.incoming-reports', compact('patient'));
+    }
+
     public function education(Request $request, Client $patient )
     {
         return view('app.patient.education', compact('patient'));

+ 5 - 0
app/Models/Client.php

@@ -146,6 +146,11 @@ class Client extends Model
             ->orderBy('created_at', 'desc');
     }
 
+    public function incomingReports() {
+        return $this->hasMany(IncomingReport::class, 'client_id', 'id')
+            ->orderBy('created_at', 'desc');
+    }
+
     public function smsNumbers() {
         return $this->hasMany(ClientSMSNumber::class, 'client_id', 'id')
             ->orderBy('created_at', 'desc');

+ 10 - 0
app/Models/IncomingReport.php

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

+ 203 - 0
resources/views/app/patient/incoming-reports.blade.php

@@ -0,0 +1,203 @@
+@extends ('layouts.patient')
+@section('inner-content')
+    <div>
+        <div class="d-flex align-items-center pb-2">
+            <h4 class="font-weight-bold m-0">Incoming Reports</h4>
+            <span class="mx-2 text-secondary">|</span>
+            <div moe>
+                <a start show class="">Upload</a>
+                <form url="dummy" action="/api/incomingReport/create"
+                      method="post"
+                      onsubmit="return submitIncomingReport(this)"
+                      enctype="multipart/form-data">
+                    <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
+                    <div class="mb-2">
+                        <label for="" class="text-sm text-secondary mb-1">Category</label>
+                        <input type="text" class="form-control form-control-sm" name="category"
+                               value="" placeholder="Category">
+                    </div>
+                    <div class="mb-2">
+                        <label for="" class="text-sm text-secondary mb-1">Sub-category</label>
+                        <input type="text" class="form-control form-control-sm" name="subcategory"
+                               value="" placeholder="Sub-category">
+                    </div>
+                    <div class="mb-2">
+                        <label for="" class="text-sm text-secondary mb-1">Report Date</label>
+                        <input type="date" class="form-control form-control-sm" name="reportDate"
+                               value="" placeholder="Report Date">
+                    </div>
+                    <div class="mb-2">
+                        <label for="" class="text-sm text-secondary mb-1">Title</label>
+                        <input type="text" class="form-control form-control-sm" name="title"
+                               value="" placeholder="Title">
+                    </div>
+                    <div class="mb-2">
+                        <label for="" class="text-sm text-secondary mb-1">File *</label>
+                        <input type="file" class="form-control form-control-sm" name="pdf"
+                               value="" placeholder="File" required>
+                    </div>
+                    <div class="mb-2">
+                        <label for="" class="text-sm text-secondary mb-1">Memo</label>
+                        <input type="text" class="form-control form-control-sm" name="memo"
+                               value="" placeholder="Memo">
+                    </div>
+                    <div class="d-flex align-items-center">
+                        <button class="btn btn-sm btn-primary mr-2" type="submit">Send</button>
+                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
+                    </div>
+                </form>
+            </div>
+        </div>
+        <table class="table table-striped table-sm table-bordered mb-0">
+            <thead>
+            <tr>
+                <th class="px-2 text-secondary">Created</th>
+                <th class="px-2 text-secondary">Report</th>
+                <th class="px-2 text-secondary">Title</th>
+                <th class="px-2 text-secondary">Category</th>
+                <th class="px-2 text-secondary">Memo</th>
+                <th class="px-2"></th>
+            </tr>
+            </thead>
+            <tbody>
+            @foreach($patient->incomingReports as $document)
+                <tr class="{{$document->is_entry_error ? 'entry-error' : ''}}">
+                    <td class="px-2">{{ friendly_date_time($document->created_at) }}</td>
+                    <td class="px-2">
+                        <div class="d-flex align-items-center">
+                            <a class="pdf-viewer-trigger" native target="_blank"
+                               href="/api/incomingReport/download/{{ $document->uid }}"
+                               title="View">View</a>
+                            <span class="mx-2 text-secondary">|</span>
+                            <div moe relative class="mr-2">
+                                <a start show class="">Sign</a>
+                                <form url="/api/incomingReport/signAsHcp" right>
+                                    <input type="hidden" name="uid" value="{{ $document->uid }}">
+                                    <p class="small">Are you sure you want to sign this report as HCP?</p>
+                                    <div class="d-flex align-items-center">
+                                        <button class="btn btn-sm btn-success mr-2" submit>Sign</button>
+                                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
+                                    </div>
+                                </form>
+                            </div>
+                            @if($document->is_entry_error)
+                                <span class="ml-auto text-danger on-hover-opaque" title="Entry Error"><i class="fa fa-exclamation-triangle"></i></span>
+                            @endif
+                        </div>
+                    </td>
+                    <td class="px-2">{{ $document->title }}</td>
+                    <td class="px-2">{{ $document->category }}{{ $document->subcategory ? ' / ' . $document->subcategory : '' }}</td>
+                    <td class="px-2">{{ $document->memo }}</td>
+                    <td class="px-2">
+                        <div class="d-flex align-items-center">
+                            <a class="on-hover-opaque mr-3" native target="_blank"
+                               href="/api/incomingReport/download/{{ $document->uid }}"
+                               title="Download"><i class="fa fa-download"></i></a>
+                            <div moe relative class="mr-3">
+                                <a href="#" start show class="on-hover-opaque" title="Edit"><i class="fa fa-edit text-primary"></i></a>
+                                <form url="dummy" action="/api/incomingReport/updateBasic"
+                                      method="post"
+                                      onsubmit="return submitIncomingReport(this)"
+                                      enctype="multipart/form-data">
+                                    <input type="hidden" name="uid" value="{{ $document->uid }}">
+
+                                    <div class="mb-2">
+                                        <label for="" class="text-sm text-secondary mb-1">Category</label>
+                                        <input type="text" class="form-control form-control-sm" name="category"
+                                               value="{{$document->category}}" placeholder="Category">
+                                    </div>
+                                    <div class="mb-2">
+                                        <label for="" class="text-sm text-secondary mb-1">Sub-category</label>
+                                        <input type="text" class="form-control form-control-sm" name="subcategory"
+                                               value="{{$document->subcategory}}" placeholder="Sub-category">
+                                    </div>
+                                    <div class="mb-2">
+                                        <label for="" class="text-sm text-secondary mb-1">Report Date</label>
+                                        <input type="date" class="form-control form-control-sm" name="reportDate"
+                                               value="{{$document->reportDate}}" placeholder="Report Date">
+                                    </div>
+                                    <div class="mb-2">
+                                        <label for="" class="text-sm text-secondary mb-1">Title</label>
+                                        <input type="text" class="form-control form-control-sm" name="title"
+                                               value="{{$document->title}}" placeholder="Title">
+                                    </div>
+                                    <div class="mb-2">
+                                        <label for="" class="text-sm text-secondary mb-1">File *</label>
+                                        <input type="file" class="form-control form-control-sm" name="pdf"
+                                               value="" placeholder="File">
+                                        <span class="text-sm text-secondary">Leave blank if not changing</span>
+                                    </div>
+                                    <div class="mb-2">
+                                        <label for="" class="text-sm text-secondary mb-1">Memo</label>
+                                        <input type="text" class="form-control form-control-sm" name="memo"
+                                               value="{{$document->memo}}" placeholder="Memo">
+                                    </div>
+
+                                    <div class="d-flex align-items-center">
+                                        <button class="btn btn-sm btn-primary mr-2" submit>Submit</button>
+                                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
+                                    </div>
+                                </form>
+                            </div>
+                            @if(!$document->is_entry_error)
+                                <div moe relative class="mr-3">
+                                    <a start show class="on-hover-opaque" title="Mark as entry-error"><i class="fa fa-trash-alt text-danger"></i></a>
+                                    <form url="/api/incomingReport/setIsEntryErrorToTrue" right>
+                                        <input type="hidden" name="uid" value="{{ $document->uid }}">
+                                        <p class="small">Are you sure you want to set this report as entry error?</p>
+                                        <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>
+                            @else
+                                <div moe relative class="mr-3">
+                                    <a start show class="on-hover-opaque" title="Undo mark as entry-error"><i class="fa fa-undo"></i></a>
+                                    <form url="/api/incomingReport/setIsEntryErrorToFalse" right>
+                                        <input type="hidden" name="uid" value="{{ $document->uid }}">
+                                        <p class="small">Are you sure you want to set unset this report as entry error?</p>
+                                        <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>
+            @endforeach
+            </tbody>
+        </table>
+    </div>
+    <script>
+        function submitIncomingReport(_form) {
+            showMask();
+            $.ajax({
+                type: "POST",
+                enctype: 'multipart/form-data',
+                url: _form.action,
+                data: new FormData(_form),
+                processData: false,
+                contentType: false,
+                cache: false,
+                timeout: 600000,
+                success: function (data) {
+                    hideMask();
+                    if(data.success) {
+                        fastReload();
+                    }
+                    else {
+                        toastr.error(data.message);
+                    }
+                },
+                error: function (e) {
+                    hideMask();
+                    toastr.error('Unable to upload document!');
+                }
+            });
+            return false;
+        }
+    </script>
+@endsection

+ 4 - 0
resources/views/layouts/patient.blade.php

@@ -77,6 +77,10 @@
                             <a class="nav-link {{ strpos($routeName, 'patients.view.tickets') === 0 ? 'active' : '' }}"
                                href="{{ route('patients.view.patient-tickets', ['patient' => $patient]) }}">Tickets</a>
                         </li>
+                        <li class="nav-item">
+                            <a class="nav-link {{ strpos($routeName, 'patients.view.incoming-reports') === 0 ? 'active' : '' }}"
+                               href="{{ route('patients.view.incoming-reports', ['patient' => $patient]) }}">Incoming Reports</a>
+                        </li>
                         <li class="nav-item">
                             <a class="nav-link {{ strpos($routeName, 'patients.view.allergies') === 0 ? 'active' : '' }}"
                                href="{{ route('patients.view.allergies', ['patient' => $patient]) }}">Allergies</a>

+ 1 - 1
routes/web.php

@@ -102,7 +102,6 @@ Route::middleware('pro.auth')->group(function () {
         Route::get('memos', 'PatientController@memos')->name('memos');
         Route::get('sms', 'PatientController@sms')->name('sms');
         Route::get('sms-numbers', 'PatientController@smsNumbers')->name('sms-numbers');
-        Route::get('documents', 'PatientController@documents')->name('documents');
         Route::get('immunizations', 'PatientController@immunizations')->name('immunizations');
         Route::get('allergies', 'PatientController@allergies')->name('allergies');
         Route::get('action-items', 'PatientController@actionItems')->name('action-items');
@@ -127,6 +126,7 @@ Route::middleware('pro.auth')->group(function () {
         Route::get('account', 'PatientController@account')->name('account');
         Route::get('care-checklist', 'PatientController@careChecklist')->name('care-checklist');
         Route::get('documents', 'PatientController@documents')->name('documents');
+        Route::get('incoming-reports', 'PatientController@incomingReports')->name('incoming-reports');
         Route::get('education', 'PatientController@education')->name('education');
         Route::get('messaging', 'PatientController@messaging')->name('messaging');
         Route::get('duplicate', 'PatientController@duplicate')->name('duplicate');