Parcourir la source

Merge branch 'dev' into dev-vj

Vijayakrishnan il y a 3 ans
Parent
commit
fb58b845fe
33 fichiers modifiés avec 942 ajouts et 74 suppressions
  1. 6 0
      app/Http/Controllers/PatientController.php
  2. 32 2
      app/Http/Controllers/PracticeManagementController.php
  3. 2 2
      app/Models/Client.php
  4. 18 0
      app/Models/VisitTemplateSegmentTemplate.php
  5. 0 1
      public/css/style.css
  6. 2 0
      resources/views/app/admin/patients-table-extended.blade.php
  7. 22 3
      resources/views/app/patient/appointment-calendar.blade.php
  8. 81 0
      resources/views/app/patient/client-pro-access.blade.php
  9. 5 0
      resources/views/app/patient/note/dashboard.blade.php
  10. 51 0
      resources/views/app/patient/pros.blade.php
  11. 11 8
      resources/views/app/patient/segment-templates/covid_follow-up/edit.blade.php
  12. 5 4
      resources/views/app/patient/segment-templates/covid_follow-up/summary.blade.php
  13. 7 4
      resources/views/app/patient/segment-templates/covid_intake/summary.blade.php
  14. 0 49
      resources/views/app/practice-management/segment-templates.blade.php
  15. 27 0
      resources/views/app/practice-management/segment-templates/activate-deactivate.blade.php
  16. 17 0
      resources/views/app/practice-management/segment-templates/create.blade.php
  17. 81 0
      resources/views/app/practice-management/segment-templates/index.blade.php
  18. 19 0
      resources/views/app/practice-management/segment-templates/update-memo.blade.php
  19. 18 0
      resources/views/app/practice-management/segment-templates/update.blade.php
  20. 27 0
      resources/views/app/practice-management/visit-templates/activate-deactivate.blade.php
  21. 69 0
      resources/views/app/practice-management/visit-templates/change-note-visit-template.blade.php
  22. 17 0
      resources/views/app/practice-management/visit-templates/create.blade.php
  23. 81 0
      resources/views/app/practice-management/visit-templates/index.blade.php
  24. 19 0
      resources/views/app/practice-management/visit-templates/update-memo.blade.php
  25. 18 0
      resources/views/app/practice-management/visit-templates/update.blade.php
  26. 27 0
      resources/views/app/practice-management/visit-templates/visit-template-segment-templates/activate-deactivate.blade.php
  27. 79 0
      resources/views/app/practice-management/visit-templates/visit-template-segment-templates/create.blade.php
  28. 143 0
      resources/views/app/practice-management/visit-templates/visit-template-segment-templates/index.blade.php
  29. 19 0
      resources/views/app/practice-management/visit-templates/visit-template-segment-templates/update-memo.blade.php
  30. 28 0
      resources/views/app/practice-management/visit-templates/visit-template-segment-templates/update.blade.php
  31. 6 0
      resources/views/layouts/patient.blade.php
  32. 1 1
      resources/views/layouts/template.blade.php
  33. 4 0
      routes/web.php

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

@@ -8,6 +8,7 @@ use App\Models\CareMonth;
 use App\Models\Client;
 use App\Models\ClientBDTDevice;
 use App\Models\ClientInfoLine;
+use App\Models\ClientProAccess;
 use App\Models\Erx;
 use App\Models\Facility;
 use App\Models\Handout;
@@ -619,4 +620,9 @@ class PatientController extends Controller
             'careMonth' => $careMonth,
         ]);
     }
+
+    public function clientProAccess(Request $request, Client $patient) {
+        $rows = ClientProAccess::where('client_id', $patient->id)->get();
+        return view('app.patient.client-pro-access', compact('patient', 'rows'));
+    }
 }

+ 32 - 2
app/Http/Controllers/PracticeManagementController.php

@@ -44,6 +44,8 @@ use DateTime;
 use DateTimeZone;
 use Illuminate\Http\Request;
 use App\Models\SegmentTemplate;
+use App\Models\VisitTemplate;
+use App\Models\VisitTemplateSegmentTemplate;
 
 class PracticeManagementController extends Controller
 {
@@ -2457,10 +2459,38 @@ ORDER BY c.name_last, c.name_first
     public function segmentTemplates(Request $request){
         $segmentTemplates = SegmentTemplate::query();
         $segmentTemplates = $segmentTemplates->orderBy('created_at', 'DESC');
-        $segmentTemplates = $segmentTemplates->paginate(20);
-        return view('app.practice-management.segment-templates', compact('segmentTemplates'));
+        
+        $responseType = $request->get('response_type');
+        if($responseType && $responseType == 'json'){
+            $segmentTemplates = $segmentTemplates->where('is_active', true)->get();
+            return $this->pass($segmentTemplates);
+        }
+
+        $segmentTemplates = $segmentTemplates->paginate(30);
+        return view('app.practice-management.segment-templates.index', compact('segmentTemplates'));
     }
 
+    public function visitTemplates(Request $request){
+        $visitTemplates = VisitTemplate::query();
+        $visitTemplates = $visitTemplates->orderBy('created_at', 'DESC');
+
+        $responseType = $request->get('response_type');
+        if($responseType && $responseType == 'json'){
+            $visitTemplates = $visitTemplates->where('is_active', true)->get();
+            return $this->pass($visitTemplates);
+        }
+
+        $visitTemplates = $visitTemplates->paginate(30);
+        return view('app.practice-management.visit-templates.index', compact('visitTemplates'));
+    }
+
+    public function visitTemplate(Request $request, VisitTemplate $visitTemplate){
+        $visitTemplateSegmentTemplates = VisitTemplateSegmentTemplate::query();
+        $visitTemplateSegmentTemplates = $visitTemplateSegmentTemplates->where('visit_template_id', $visitTemplate->id);
+        $visitTemplateSegmentTemplates = $visitTemplateSegmentTemplates->orderBy('position_index', 'DESC');
+        $visitTemplateSegmentTemplates = $visitTemplateSegmentTemplates->paginate(30);
+        return view('app.practice-management.visit-templates.visit-template-segment-templates.index', compact('visitTemplate','visitTemplateSegmentTemplates'));
+    }
 
     public function clientCcmRmStatus(Request $request){
         $filters = $request->all();

+ 2 - 2
app/Models/Client.php

@@ -521,13 +521,13 @@ class Client extends Model
         $pro = $this->rme;
         if ($pro && $pro->id) $pros[] = ["pro" => $pro->displayName(), "association" => 'RME'];
         $pro = $this->defaultNaPro;
-        if ($pro && $pro->id) $pros[] = ["pro" => $pro->displayName(), "association" => 'Nurse'];
+        if ($pro && $pro->id) $pros[] = ["pro" => $pro->displayName(), "association" => 'Care Coordinator'];
 
         // via client pro access
         $cpAccesses = ClientProAccess::where('client_id', $this->id)->where('is_active', true)->get();
         foreach ($cpAccesses as $cpAccess) {
             if (!$cpAccess->pro) continue;
-            $pros[] = ["pro" => $cpAccess->pro->displayName(), "association" => 'Via Client-Pro Access'];
+            $pros[] = ["pro" => $cpAccess->pro->displayName(), "association" => $cpAccess->reason_category. ' - Via Client Pro Access', 'isClientProAccess'=>true, 'clientProAccess'=>$cpAccess];
         }
 
         // via appointments

+ 18 - 0
app/Models/VisitTemplateSegmentTemplate.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Models;
+
+# use Illuminate\Database\Eloquent\Model;
+
+class VisitTemplateSegmentTemplate extends Model
+{
+    protected $table = 'visit_template_segment_template';
+
+    public function segmentTemplate(){
+        return $this->hasOne(SegmentTemplate::class, 'id', 'segment_template_id');
+    }
+
+    public function visitTemplate(){
+        return $this->hasOne(VisitTemplate::class, 'id', 'visit_template_id');
+    }
+}

+ 0 - 1
public/css/style.css

@@ -2932,7 +2932,6 @@ body .vakata-context .vakata-context-separator>a {
 
 .phq .btn-select {
     padding: 5px 13px;
-    border-radius: 100%;
 }
 
 .phq .btn-blank {

+ 2 - 0
resources/views/app/admin/patients-table-extended.blade.php

@@ -40,6 +40,7 @@
                 <th class="border-0">Initiative</th>
                 <th class="border-0">Source</th>
             @endif
+            <th class="border-0">Email Address</th>
         </tr>
         </thead>
         <tbody>
@@ -310,6 +311,7 @@
                     <td>{{$patient->initiative}}</td>
                     <td>{{$patient->source}}</td>
                 @endif
+                <td>{{$patient->email_address}}</td>
             </tr>
         @endforeach
 

+ 22 - 3
resources/views/app/patient/appointment-calendar.blade.php

@@ -312,9 +312,23 @@
                         Pro
                     </div>
                     <div class="col-9 font-weight-bold">
-                        <input type="text"
+                        <!-- <input type="text"
                                class="form-control form-control-sm"
-                               :value="editAppointment.proName" readonly>
+                               :value="editAppointment.proName" readonly> -->
+                        <!-- -- -->
+                        <select id="updateApptPro" name="proUid" {{$pro->pro_type !== 'ADMIN' ? '' : 'provider-search'}}
+                                v-model="editAppointment.proUid"
+                                :data-pro-uid="editAppointment.proUid"
+                                no-auto-pro-suggest-init
+                                class="form-control form-control-sm">
+                            @if($pro->pro_type !== 'ADMIN')
+                                @foreach($pros as $iPro)
+                                    <option value="{{$iPro->uid}}">
+                                        {{$iPro->displayName()}}
+                                    </option>
+                                @endforeach
+                            @endif
+                        </select>
                     </div>
                 </div>
                 <div class="row mb-2">
@@ -808,7 +822,7 @@
                             $('#addApptPro').on('change', function() {
                                 self.newAppointment.proUid = $(this).val();
                             });
-                            $('#editApptPro').on('change', function() {
+                            $('#editApptPro, #updateApptPro').on('change', function() {
                                 self.editAppointment.proUid = $(this).val();
                             });
                         },
@@ -1145,7 +1159,12 @@
                             this.editAppointment.status = this.selectedEvent.extendedProps.status;
                             this.editAppointment.isTrainingEvent = this.selectedEvent.extendedProps.isTrainingEvent;
                             Vue.nextTick(function() {
+                                $('#updateApptPro').find('option').prop('selected', false);
+                                $('#updateApptPro').trigger('change');
                                 showStagPopup('client-edit-appointment', true);
+                                $('#updateApptPro').removeAttr('no-auto-pro-suggest-init').removeAttr('pro-suggest-initialized');
+                                initProSuggest();
+
                             });
 
                             setTimeout(() => {

+ 81 - 0
resources/views/app/patient/client-pro-access.blade.php

@@ -0,0 +1,81 @@
+@extends ('layouts.patient')
+@section('inner-content')
+    <div class="">
+        <div class="d-flex align-items-center pb-2">
+            <h4 class="font-weight-bold m-0">Pros With Access</h4>
+            <div class="d-inline ml-2">
+                <div moe>
+                    <a href="" start>Add Client Pro Access</a>
+                    <form action="" url="/api/clientProAccess/create">
+                        <input type="hidden" value="{{$patient->uid}}" name="clientUid">
+                        <div class="form-group">
+                            <label for="" class="control-label">Pro</label>
+                            <select provider-search name="proUid" id="" class="form-control input-sm">
+                            </select>
+                        </div>
+                        <div class="form-group">
+                            <label for="" class="control-label">Reason category</label>
+                            <input type="text" name="reasonCategory" class="form-control input-sm">
+                        </div>
+                        <div class="form-group">
+                            <label for="" class="control-label">Reason memo</label>
+                            <textarea name="reasonMemo" class="form-control input-sm"></textarea>
+                        </div>
+                        <div class="form-group">
+                            <button class="btn btn-primary btn-sm" submit>Submit</button>
+                            <button class="btn btn-danger btn-sm" cancel>Cancel</button>
+                        </div>
+                    </form>
+                </div>
+            </div>
+        </div>
+        <table class="table table-striped table-sm table-bordered mb-0">
+            @if($rows && count($rows))
+                <thead class="bg-light">
+                <tr>
+                    <th class="border-0 text-secondary">Pro</th>
+                    <th class="border-0 text-secondary">Reason category</th>
+                    <th class="border-0 text-secondary">Reason memo</th>
+                    <th></th>
+                </tr>
+                </thead>
+                <tbody>
+                @foreach($rows as $row)
+                    <tr>
+                        <td class="">{{ $row->pro->name_display }}</td>
+                        <td>{{ $row->reason_category}}</td>
+                        <td>{{ $row->reason_memo}}</td>
+                        <td>
+                            <div moe>
+                                <a href="" show start>Update Reason</a>
+                                <form action="" url="/api/clientProAccess/updateReason">
+                                    <input type="hidden" value="{{$row->uid}}" name="uid">
+                                    
+                                    <div class="form-group">
+                                        <label for="" class="control-label">Reason category</label>
+                                        <input type="text" name="reasonCategory" class="form-control input-sm" value="{{$row->reason_category}}">
+                                    </div>
+                                    <div class="form-group">
+                                        <label for="" class="control-label">Reason memo</label>
+                                        <textarea name="reasonMemo" class="form-control input-sm">{{$row->reason_memo}}</textarea>
+                                    </div>
+                                    <div class="form-group">
+                                        <button class="btn btn-primary btn-sm" submit>Submit</button>
+                                        <button class="btn btn-danger btn-sm" cancel>Cancel</button>
+                                    </div>
+                                </form>
+                            </div>
+                        </td>
+                    </tr>
+                @endforeach
+                </tbody>
+            @else
+                <tbody>
+                    <tr>
+                        <td class="text-secondary p-3">No client pro access records.</td>
+                    </tr>
+                </tbody>
+            @endif
+        </table>
+    </div>
+@endsection

+ 5 - 0
resources/views/app/patient/note/dashboard.blade.php

@@ -158,6 +158,11 @@
                         </div>
                     </form>
                 </div>
+                {{--
+                <div class="d-inline border-left pl-2">
+                    @include('app.practice-management.visit-templates.change-note-visit-template')
+                </div>
+                --}}
                 @endif
             </div>
             <div class="px-2 border-left border-right">

+ 51 - 0
resources/views/app/patient/pros.blade.php

@@ -3,6 +3,31 @@
     <div class="">
         <div class="d-flex align-items-center pb-2">
             <h4 class="font-weight-bold m-0">Pros With Access</h4>
+            <div class="d-inline ml-2">
+                <div moe>
+                    <a show href="" start>Add Client Pro Access</a>
+                    <form action="" url="/api/clientProAccess/create">
+                        <input type="hidden" value="{{$patient->uid}}" name="clientUid">
+                        <div class="form-group">
+                            <label for="" class="control-label">Pro</label>
+                            <select provider-search name="proUid" id="" class="form-control input-sm">
+                            </select>
+                        </div>
+                        <div class="form-group">
+                            <label for="" class="control-label">Reason category</label>
+                            <input type="text" name="reasonCategory" class="form-control input-sm">
+                        </div>
+                        <div class="form-group">
+                            <label for="" class="control-label">Reason memo</label>
+                            <textarea name="reasonMemo" class="form-control input-sm"></textarea>
+                        </div>
+                        <div class="form-group">
+                            <button class="btn btn-primary btn-sm" submit>Submit</button>
+                            <button class="btn btn-danger btn-sm" cancel>Cancel</button>
+                        </div>
+                    </form>
+                </div>
+            </div>
         </div>
         <table class="table table-striped table-sm table-bordered mb-0">
             @php $prosWithAccess = $patient->prosWithAccess(); @endphp
@@ -11,6 +36,7 @@
                 <tr>
                     <th class="border-0 text-secondary">Pro</th>
                     <th class="border-0 text-secondary w-75">Association</th>
+                    <th></th>
                 </tr>
                 </thead>
                 <tbody>
@@ -20,13 +46,38 @@
                         @if($pro->pro_type === 'ADMIN')
                             <td class="{{ $aPro['pro'] !== $prevPro ? 'font-weight-bold' : 'text-secondary' }}">{{ $aPro['pro'] }}</td>
                             <td>{{ $aPro['association'] }}</td>
+                            <td>
+                                @if(isset($aPro['isClientProAccess']))
+                                <div moe>
+                                    <a href="" show start>Update Reason</a>
+                                    <form action="" url="/api/clientProAccess/updateReason">
+                                        <input type="hidden" value="{{$aPro['clientProAccess']->uid}}" name="uid">
+                                       
+                                        <div class="form-group">
+                                            <label for="" class="control-label">Reason category</label>
+                                            <input type="text" name="reasonCategory" class="form-control input-sm" value="{{$aPro['clientProAccess']->reason_category}}">
+                                        </div>
+                                        <div class="form-group">
+                                            <label for="" class="control-label">Reason memo</label>
+                                            <textarea name="reasonMemo" class="form-control input-sm">{{$aPro['clientProAccess']->reason_memo}}</textarea>
+                                        </div>
+                                        <div class="form-group">
+                                            <button class="btn btn-primary btn-sm" submit>Submit</button>
+                                            <button class="btn btn-danger btn-sm" cancel>Cancel</button>
+                                        </div>
+                                    </form>
+                                </div>
+                                @endif
+                            </td>
                         @else
                             @if($aPro['pro'] !== $prevPro)
                                 <td class="{{ $aPro['pro'] !== $prevPro ? 'font-weight-bold' : 'text-secondary' }}">{{ $aPro['pro'] }}</td>
                                 <td>{{ $aPro['association'] }}</td>
+                                <td></td>
                             @endif
                         @endif
                         @php $prevPro = $aPro['pro']; @endphp
+                    
                     </tr>
                 @endforeach
                 </tbody>

+ 11 - 8
resources/views/app/patient/segment-templates/covid_follow-up/edit.blade.php

@@ -3,9 +3,9 @@
 use App\Models\Point;
 
 $category = 'COVID_FOLLOW-UP';
-$endPoint = 'upsertNoteSingleton';
 
-$point = Point::getGlobalSingletonOfCategory($patient, $category, true);
+$point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, $category, $sessionKey, true);
+
 $contentData = [
         "ans_has_received_printed_cdc_covid_matrials" => null, // yes/no
         "ans_has_signed_up_for_gvt_covid_kit" => null, // yes/no/not_sure
@@ -42,13 +42,16 @@ $contentData = [
 	"follow_up_for" => null
 ];
 
-if (!!@$point->data) {
-        $contentData = $point->data;
+if ($point->lastChildReview && $point->lastChildReview->data) {
+        $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
+        $contentData = $point->lastChildReview->data;
 }
 
 ?>
-<div visit-moe close-on-save close-on-cancel class="d-block p-3">
-        <form id="visitNoteForm" show url="/api/visitPoint/<?= $endPoint ?>" class="mcp-theme-1">
+<div visit-moe close-on-save close-on-cancel class="d-block p-3">       
+        <form id="visitNoteForm" show url="/api/visitPoint/upsertChildReview" class="mcp-theme-1">
+                <input type="hidden" name="uid" value="<?= $point->uid ?>">
+                <input type="hidden" name="noteUid" value="<?= $note->uid ?>">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
                 <input type="hidden" name="category" value="<?= $category ?>">
                 <input id="mainData" type="hidden" name="data" value="{{json_encode($contentData)}}">
@@ -271,14 +274,14 @@ if (!!@$point->data) {
                                                 <tbody>
                                                         <tr>
                                                                 <td>1. Little interest or pleasure in doing things</td>
-                                                                <td class="text-center"><button type="button" class="btn btn-blank">0</button></td>
+                                                                <td class="text-center"><button type="button" onclick="onValueChange(this, 'no_interest', 'phq2')" class="no_interest_phq2 btn btn-select zero_phq2 {{ @$contentData['no_interest_phq2'] === 0 ? 'active':'' }}" data-id="0">0</button></td>
                                                                 <td class="text-center"><button type="button" onclick="onValueChange(this, 'no_interest', 'phq2')" class="no_interest_phq2 btn btn-select one_phq2 {{ @$contentData['no_interest_phq2'] == 1 ? 'active':'' }}" data-id="1">1</button></td>
                                                                 <td class="text-center"><button type="button" onclick="onValueChange(this, 'no_interest', 'phq2')" class="no_interest_phq2 btn btn-select two_phq2 {{ @$contentData['no_interest_phq2'] == 2 ? 'active':'' }}" data-id="2">2</button></td>
                                                                 <td class="text-center"><button type="button" onclick="onValueChange(this, 'no_interest', 'phq2')" class="no_interest_phq2 btn btn-select three_phq2 {{ @$contentData['no_interest_phq2'] == 3 ? 'active':'' }}" data-id="3">3</button></td>
                                                         </tr>
                                                         <tr>
                                                                 <td>2. Feeling down, depressed, or hopeless</td>
-                                                                <td class="text-center"><button type="button" class="btn btn-blank">0</button></td>
+                                                                <td class="text-center"><button type="button" onclick="onValueChange(this, 'depressed', 'phq2')" class="depressed_phq2 btn btn-select zero_phq2 {{ @$contentData['depressed_phq2'] === 0 ? 'active':'' }}" data-id="0">0</button></td>
                                                                 <td class="text-center"><button type="button" onclick="onValueChange(this, 'depressed', 'phq2')" class="depressed_phq2 btn btn-select one_phq2 {{ @$contentData['depressed_phq2'] == 1 ? 'active':'' }}" data-id="1">1</button></td>
                                                                 <td class="text-center"><button type="button" onclick="onValueChange(this, 'depressed', 'phq2')" class="depressed_phq2 btn btn-select two_phq2 {{ @$contentData['depressed_phq2'] == 2 ? 'active':'' }}" data-id="2">2</button></td>
                                                                 <td class="text-center"><button type="button" onclick="onValueChange(this, 'depressed', 'phq2')" class="depressed_phq2 btn btn-select three_phq2 {{ @$contentData['depressed_phq2'] == 3 ? 'active':'' }}" data-id="3">3</button></td>

+ 5 - 4
resources/views/app/patient/segment-templates/covid_follow-up/summary.blade.php

@@ -3,9 +3,8 @@
 use App\Models\Point;
 
 $category = 'COVID_FOLLOW-UP';
-$endPoint = 'upsertNoteSingleton';
 
-$point = Point::getGlobalSingletonOfCategory($patient, $category, true);
+$point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, $category, $sessionKey, true);
 
 $contentData = [
     "ans_has_received_printed_cdc_covid_matrials" => null, // yes/no
@@ -39,8 +38,10 @@ $contentData = [
     "ans_hypertension_rpm_education" => null,
 
 ];
-if (!!@$point->data) {
-    $contentData = $point->data;
+
+if ($point->lastChildReview && $point->lastChildReview->data) {
+    $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
+    $contentData = $point->lastChildReview->data;
 }
 
 ?>

+ 7 - 4
resources/views/app/patient/segment-templates/covid_intake/summary.blade.php

@@ -3,9 +3,9 @@
 use App\Models\Point;
 
 $category = 'COVID_INTAKE';
-$endPoint = 'upsertGlobalSingleton';
 
-$point = Point::getGlobalSingletonOfCategory($patient, 'COVID_INTAKE', true);
+$point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'COVID_INTAKE', $sessionKey, true);
+
 
 $contentData = [
     "ans_how_are_you" => '',
@@ -115,10 +115,13 @@ $contentData = [
     "ans_total_mins_spent" => ''
 
 ];
-if (!!@$point->data) {
-    $contentData = $point->data;
+
+if ($point->lastChildReview && $point->lastChildReview->data) {
+    $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
+    $contentData = $point->lastChildReview->data;
 }
 
+
 ?>
 <div class="events-none form-read-mode">
     <div class="mb-2">

+ 0 - 49
resources/views/app/practice-management/segment-templates.blade.php

@@ -1,49 +0,0 @@
-@extends ('layouts/template')
-
-@section('content')
-<div class="p-3 mcp-theme-1" id="patients-list">
-    <div class="card">
-
-        <div class="card-header border-bottom-0 px-1 py-2 d-flex align-items-center">
-            <strong class="mr-4">
-                <i class="fas fa-notes-medical"></i>
-                Segment Templates
-            </strong>
-        </div>
-
-        <div class="card-body p-0">
-            <table class="table table-sm table-striped border-top p-0 m-0">
-                <thead class="bg-light">
-                    <tr>
-                        <th class="border-0">Category</th>
-                        <th class="border-0">Patient</th>
-                        <th class="border-0">MCP</th>
-                        <th class="border-0 w-25">Summary</th>
-                        <th class="border-0">Created</th>
-                        <th class="border-0 delete-column">&nbsp;</th>
-                    </tr>
-                </thead>
-                <tbody>
-                    @foreach($segmentTemplates as $memo)
-                    <tr>
-                        <td></td>
-                        
-                    </tr>
-                    @endforeach
-
-                    @if(count($segmentTemplates) === 0)
-                    <tr>
-                        <td colspan="5">No records found!</td>
-                    </tr>
-                    @endif
-                </tbody>
-
-            </table>
-
-        </div>
-    </div>
-    <div class="mt-3">
-        {{ $segmentTemplates->appends(request()->input())->links() }}
-    </div>
-</div>
-@endsection

+ 27 - 0
resources/views/app/practice-management/segment-templates/activate-deactivate.blade.php

@@ -0,0 +1,27 @@
+<div moe>
+		<a start show href="#">
+			@if($template->is_active)
+				<span class="text-danger">Deactivate</span>
+			@else
+			<span class="text-success">Reactivate</span>
+			@endif
+		</a>
+		<form url="{{ $template->is_active ? '/api/segmentTemplate/deactivate' : '/api/segmentTemplate/reactivate' }}" class="mt-2" right>
+			<input type="hidden" name="uid" value="{{ $template->uid }}">
+			<div class="mb-2 w-100">
+				<label>Are you sure?</label>
+			</div>
+			<div class="mb-2 w-100">
+				<label>Memo</label>
+				<textarea name="memo" class="form-control"><?= $template->is_active ? $template->deactivation_memo: $template->reactivation_memo ?></textarea>
+			</div>
+			<div class="mt-3">
+				@if($template->is_active)
+				<button submit class="btn btn-sm btn-danger mr-2">Deactivate</button>
+				@else
+				<button submit class="btn btn-sm btn-primary mr-2">Reactivate</button>
+				@endif
+				<button cancel class="btn btn-default border">Cancel</button>
+			</div>
+		</form>
+	</div>

+ 17 - 0
resources/views/app/practice-management/segment-templates/create.blade.php

@@ -0,0 +1,17 @@
+<div moe>
+	<a class="" href="" show start>+ Create</a>
+	<form url="/api/segmentTemplate/create"> 
+		<div class="mb-2">
+			<label>Internal Name<sup class="text-danger">*</sup></label>
+			<input type="text" name="internalName" class="form-control" required/>
+		</div>
+		<div class="mb-2">
+			<label>Default Display Title<sup class="text-danger">*</sup></label>
+			<input type="text" name="defaultDisplayTitle" class="form-control" required/>
+		</div>
+		<div class="mb-0">
+			<button class="btn btn-success btn-sm" submit>Create</button>
+			<button class="btn btn-default border btn-sm" cancel>Cancel</button>
+		</div>
+	</form>
+</div>

+ 81 - 0
resources/views/app/practice-management/segment-templates/index.blade.php

@@ -0,0 +1,81 @@
+@extends ('layouts/template')
+
+@section('content')
+<div class="p-3 mcp-theme-1" id="patients-list">
+    <div class="card">
+
+        <div class="card-header border-bottom-0 px-1 py-2 d-flex align-items-center">
+            <strong class="mr-4">
+                <i class="fas fa-notes-medical"></i>
+                Segment Templates
+            </strong>
+            @include('app.practice-management.segment-templates.create')
+        </div>
+
+        <div class="card-body p-0">
+            <table class="table table-sm table-striped border-top p-0 m-0">
+                <thead class="bg-light">
+                    <tr>
+                        <th class="border-0">Internal Name</th>
+                        <th class="border-0">Default Display Title</th>
+                        <th class="border-0">Created At</th>
+                        <th class="border-0">Status</th>
+                        <th class="border-0">&nbsp;</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    @foreach($segmentTemplates as $template)
+                    <tr>
+                        <td>{{ $template->internal_name }}</td>
+                        <td>{{ $template->default_display_title }}</td>
+                        <td>{{ friendly_date_time($template->created_at) }}</td>
+                        <td>
+                            <div>
+                                @if($template->is_active)
+                                    <span class="text-success">ACTIVE</span>
+                                    @if($template->reactivation_memo)
+                                        <div style="width:300px;">
+                                            <small class="text-muted"><b>Memo: </b>{{ $template->reactivation_memo }}</small>
+                                            @include('app.practice-management.segment-templates.update-memo')
+                                        </div>
+                                    @endif
+                                @else
+                                    <span class="text-danger">INACTIVE</span>
+                                    @if($template->deactivation_memo)
+                                        <div style="width:300px;">
+                                            <small class="text-muted"><b>Memo: </b>{{ $template->deactivation_memo }}</small>
+                                            @include('app.practice-management.segment-templates.update-memo')
+                                        </div>
+                                    @endif
+                                @endif
+                            </div>
+                        </td>
+                        <td>
+                            <div class="d-flex align-items-center">
+                                <div class="mr-2">
+                                @include('app.practice-management.segment-templates.update')
+                                </div>
+                                <div>
+                                @include('app.practice-management.segment-templates.activate-deactivate')
+                                </div>
+                            </div>
+                        </td>                
+                    </tr>
+                    @endforeach
+
+                    @if(count($segmentTemplates) === 0)
+                    <tr>
+                        <td colspan="5">No records found!</td>
+                    </tr>
+                    @endif
+                </tbody>
+
+            </table>
+
+        </div>
+    </div>
+    <div class="mt-3">
+        {{ $segmentTemplates->appends(request()->input())->links() }}
+    </div>
+</div>
+@endsection

+ 19 - 0
resources/views/app/practice-management/segment-templates/update-memo.blade.php

@@ -0,0 +1,19 @@
+<div moe>
+		<a start show href="#">
+			<i class="far fa-edit"></i>
+		</a>
+		<form url="{{ $template->is_active ? '/api/segmentTemplate/update-reactivation-memo' : '/api/segmentTemplate/update-deactivation-memo' }}" class="mt-2">
+			<input type="hidden" name="uid" value="{{ $template->uid }}">
+			<div class="mb-2 w-100">
+				<label>Are you sure?</label>
+			</div>
+			<div class="mb-2 w-100">
+				<label>Memo</label>
+				<textarea name="memo" class="form-control"><?= $template->is_active ? $template->reactivation_memo: $template->deactivation_memo ?></textarea>
+			</div>
+			<div class="mt-3">
+				<button submit class="btn btn-sm btn-primary mr-2">Update</button>
+				<button cancel class="btn btn-default border">Cancel</button>
+			</div>
+		</form>
+	</div>

+ 18 - 0
resources/views/app/practice-management/segment-templates/update.blade.php

@@ -0,0 +1,18 @@
+<div moe>
+	<a class="" href="" show start><i class="far fa-edit"></i></a>
+	<form url="/api/segmentTemplate/updateBasic" right> 
+	<input type="hidden" name="uid" value="{{ $template->uid }}" />
+		<div class="mb-2">
+			<label>Internal Name<sup class="text-danger">*</sup></label>
+			<input type="text" name="internalName" class="form-control" value="{{ $template->internal_name }}" required/>
+		</div>
+		<div class="mb-2">
+			<label>Default Display Title<sup class="text-danger">*</sup></label>
+			<input type="text" name="defaultDisplayTitle" class="form-control" value="{{ $template->default_display_title }}" required/>
+		</div>
+		<div class="mb-0">
+			<button class="btn btn-success btn-sm" submit>Update</button>
+			<button class="btn btn-default border btn-sm" cancel>Cancel</button>
+		</div>
+	</form>
+</div>

+ 27 - 0
resources/views/app/practice-management/visit-templates/activate-deactivate.blade.php

@@ -0,0 +1,27 @@
+<div moe>
+		<a start show href="#">
+			@if($template->is_active)
+				<span class="text-danger">Deactivate</span>
+			@else
+			<span class="text-success">Reactivate</span>
+			@endif
+		</a>
+		<form url="{{ $template->is_active ? '/api/visitTemplate/deactivate' : '/api/visitTemplate/reactivate' }}" class="mt-2" <?= @$leftPosition ? '':'right' ?>>
+			<input type="hidden" name="uid" value="{{ $template->uid }}">
+			<div class="mb-2 w-100">
+				<label>Are you sure?</label>
+			</div>
+			<div class="mb-2 w-100">
+				<label>Memo</label>
+				<textarea name="memo" class="form-control"><?= $template->is_active ? $template->deactivation_memo: $template->reactivation_memo ?></textarea>
+			</div>
+			<div class="mt-3">
+				@if($template->is_active)
+				<button submit class="btn btn-sm btn-danger mr-2">Deactivate</button>
+				@else
+				<button submit class="btn btn-sm btn-primary mr-2">Reactivate</button>
+				@endif
+				<button cancel class="btn btn-default border">Cancel</button>
+			</div>
+		</form>
+	</div>

+ 69 - 0
resources/views/app/practice-management/visit-templates/change-note-visit-template.blade.php

@@ -0,0 +1,69 @@
+<link href="/select2/select2.min.css" rel="stylesheet" />
+<script src="/select2/select2.min.js"></script>
+
+<style>
+    #changeNoteVisitTemplateSegmentTemplate .select2-container {
+        width: 100% !important;
+    }
+</style>
+
+<div id="changeNoteVisitTemplateSegmentTemplate" class="d-inline">
+	<div moe>
+		<a class="" href="" show start>Change Visit Template</a>
+		<form url="/api/visit/swapTemplate">
+			<input type="hidden" name="uid" value="{{ $note->uid }}">
+			<div id="changeNoteVisitTemplateSegmentTemplateComponent" v-cloak>
+				<div class="mb-2">
+					<label>Visit Template<sup class="text-danger">*</sup></label>
+					<select name="visitTemplateUid" class="form-control" select-2 required>
+						<option value=""></option>
+						<option v-for="t in visitTemplates" v-bind:value="t.uid" v-bind:selected="t.id == {{ $note->visit_template_id }}">@{{ t.title }}</option>
+					</select>
+				</div>
+			</div>
+			<div class="mb-0">
+				<button class="btn btn-success btn-sm" submit>Change Template</button>
+				<button class="btn btn-default border btn-sm" cancel>Cancel</button>
+			</div>
+		</form>
+	</div>
+</div>
+
+<script>
+	var visitTemplateComponent = null;
+	(function() {
+		function init() {
+			visitTemplateComponent = new Vue({
+				el: '#changeNoteVisitTemplateSegmentTemplateComponent',
+				data: {
+					visitTemplates:[]
+				},
+				methods: {
+					initSelect2: function(){
+						var self = this;
+						$('[select-2]').select2();
+					},
+					loadVisitTemplates: function() {
+						var self = this;
+						$.get("{{ route('practice-management.visitTemplates') }}", {response_type:'json'}, function(response) {
+							self.visitTemplates = response.data;
+						}, 'json');
+					},
+					init: function() {
+						this.loadVisitTemplates();
+					}
+				},
+				mounted: function() {
+					this.init();
+				},
+				updated: function(){
+					var self = this;
+					self.$nextTick(function(){
+						self.initSelect2();
+					});
+				}
+			});
+		}
+		addMCInitializer('changeNoteVisitTemplateSegmentTemplate', init);
+	})();
+</script>

+ 17 - 0
resources/views/app/practice-management/visit-templates/create.blade.php

@@ -0,0 +1,17 @@
+<div moe>
+	<a class="" href="" show start>+ Create</a>
+	<form url="/api/visitTemplate/create"> 
+		<div class="mb-2">
+			<label>Internal Name<sup class="text-danger">*</sup></label>
+			<input type="text" name="internalName" class="form-control" required/>
+		</div>
+		<div class="mb-2">
+			<label>Title<sup class="text-danger">*</sup></label>
+			<input type="text" name="title" class="form-control" required/>
+		</div>
+		<div class="mb-0">
+			<button class="btn btn-success btn-sm" submit>Create</button>
+			<button class="btn btn-default border btn-sm" cancel>Cancel</button>
+		</div>
+	</form>
+</div>

+ 81 - 0
resources/views/app/practice-management/visit-templates/index.blade.php

@@ -0,0 +1,81 @@
+@extends ('layouts/template')
+
+@section('content')
+<div class="p-3 mcp-theme-1" id="patients-list">
+    <div class="card">
+
+        <div class="card-header border-bottom-0 px-1 py-2 d-flex align-items-center">
+            <strong class="mr-4">
+                <i class="fas fa-notes-medical"></i>
+                Visit Templates
+            </strong>
+            @include('app.practice-management.visit-templates.create')
+        </div>
+
+        <div class="card-body p-0">
+            <table class="table table-sm table-striped border-top p-0 m-0">
+                <thead class="bg-light">
+                    <tr>
+                        <th class="border-0">Internal Name</th>
+                        <th class="border-0">Title</th>
+                        <th class="border-0">Created At</th>
+                        <th class="border-0">Status</th>
+                        <th class="border-0">&nbsp;</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    @foreach($visitTemplates as $template)
+                    <tr>
+                        <td><a href="{{ route('practice-management.visitTemplate', $template) }}">{{ $template->internal_name }}</a></td>
+                        <td>{{ $template->title }}</td>
+                        <td>{{ friendly_date_time($template->created_at) }}</td>
+                        <td>
+                            <div>
+                                @if($template->is_active)
+                                    <span class="text-success">ACTIVE</span>
+                                    @if($template->reactivation_memo)
+                                        <div style="width:300px;">
+                                            <small class="text-muted"><b>Memo: </b>{{ $template->reactivation_memo }}</small>
+                                            @include('app.practice-management.visit-templates.update-memo')
+                                        </div>
+                                    @endif
+                                @else
+                                    <span class="text-danger">INACTIVE</span>
+                                    @if($template->deactivation_memo)
+                                        <div style="width:300px;">
+                                            <small class="text-muted"><b>Memo: </b>{{ $template->deactivation_memo }}</small>
+                                            @include('app.practice-management.visit-templates.update-memo')
+                                        </div>
+                                    @endif
+                                @endif
+                            </div>
+                        </td>
+                        <td>
+                            <div class="d-flex align-items-center">
+                                <div class="mr-2">
+                                @include('app.practice-management.visit-templates.update')
+                                </div>
+                                <div>
+                                @include('app.practice-management.visit-templates.activate-deactivate')
+                                </div>
+                            </div>
+                        </td>                
+                    </tr>
+                    @endforeach
+
+                    @if(count($visitTemplates) === 0)
+                    <tr>
+                        <td colspan="5">No records found!</td>
+                    </tr>
+                    @endif
+                </tbody>
+
+            </table>
+
+        </div>
+    </div>
+    <div class="mt-3">
+        {{ $visitTemplates->appends(request()->input())->links() }}
+    </div>
+</div>
+@endsection

+ 19 - 0
resources/views/app/practice-management/visit-templates/update-memo.blade.php

@@ -0,0 +1,19 @@
+<div moe>
+		<a start show href="#">
+			<i class="far fa-edit"></i>
+		</a>
+		<form url="{{ $template->is_active ? '/api/visitTemplate/update-reactivation-memo' : '/api/visitTemplate/update-deactivation-memo' }}" class="mt-2">
+			<input type="hidden" name="uid" value="{{ $template->uid }}">
+			<div class="mb-2 w-100">
+				<label>Are you sure?</label>
+			</div>
+			<div class="mb-2 w-100">
+				<label>Memo</label>
+				<textarea name="memo" class="form-control"><?= $template->is_active ? $template->reactivation_memo: $template->deactivation_memo ?></textarea>
+			</div>
+			<div class="mt-3">
+				<button submit class="btn btn-sm btn-primary mr-2">Update</button>
+				<button cancel class="btn btn-default border">Cancel</button>
+			</div>
+		</form>
+	</div>

+ 18 - 0
resources/views/app/practice-management/visit-templates/update.blade.php

@@ -0,0 +1,18 @@
+<div moe>
+	<a class="" href="" show start><i class="far fa-edit"></i></a>
+	<form url="/api/visitTemplate/updateBasic" right> 
+	<input type="hidden" name="uid" value="{{ $template->uid }}" />
+		<div class="mb-2">
+			<label>Internal Name<sup class="text-danger">*</sup></label>
+			<input type="text" name="internalName" class="form-control" value="{{ $template->internal_name }}" required/>
+		</div>
+		<div class="mb-2">
+			<label>Title<sup class="text-danger">*</sup></label>
+			<input type="text" name="title" class="form-control" value="{{ $template->title }}" required/>
+		</div>
+		<div class="mb-0">
+			<button class="btn btn-success btn-sm" submit>Update</button>
+			<button class="btn btn-default border btn-sm" cancel>Cancel</button>
+		</div>
+	</form>
+</div>

+ 27 - 0
resources/views/app/practice-management/visit-templates/visit-template-segment-templates/activate-deactivate.blade.php

@@ -0,0 +1,27 @@
+<div moe>
+		<a start show href="#">
+			@if($template->is_active)
+				<span class="text-danger">Deactivate</span>
+			@else
+			<span class="text-success">Reactivate</span>
+			@endif
+		</a>
+		<form url="{{ $template->is_active ? '/api/visitTemplateSegmentTemplate/deactivate' : '/api/visitTemplateSegmentTemplate/reactivate' }}" class="mt-2" right>
+			<input type="hidden" name="uid" value="{{ $template->uid }}">
+			<div class="mb-2 w-100">
+				<label>Are you sure?</label>
+			</div>
+			<div class="mb-2 w-100">
+				<label>Memo</label>
+				<textarea name="memo" class="form-control"><?= $template->is_active ? $template->deactivation_memo: $template->reactivation_memo ?></textarea>
+			</div>
+			<div class="mt-3">
+				@if($template->is_active)
+				<button submit class="btn btn-sm btn-danger mr-2">Deactivate</button>
+				@else
+				<button submit class="btn btn-sm btn-primary mr-2">Reactivate</button>
+				@endif
+				<button cancel class="btn btn-default border">Cancel</button>
+			</div>
+		</form>
+	</div>

+ 79 - 0
resources/views/app/practice-management/visit-templates/visit-template-segment-templates/create.blade.php

@@ -0,0 +1,79 @@
+<div id="createVisitTemplateSegmentTemplate" class="d-inline">
+	<div moe>
+		<a class="" href="" show start>+ Create</a>
+		<form url="/api/visitTemplateSegmentTemplate/create">
+			<div id="createVisitTemplateSegmentTemplateComponent" v-cloak>
+				<input type="hidden" name="visitTemplateUid" value="{{ $visitTemplate->uid }}" />
+				<div class="mb-2">
+					<label>Segment Template<sup class="text-danger">*</sup></label>
+					<select name="segmentTemplateUid" class="form-control" select-2 required>
+						<option value=""></option>
+						<option v-for="t in segmentTemplates" v-bind:value="t.uid">@{{ t.default_display_title }}</option>
+					</select>
+				</div>
+				<div class="mb-2">
+					<label>Position Index<sup class="text-danger">*</sup></label>
+					<input type="number" name="positionIndex" class="form-control" required />
+				</div>
+				<div class="mb-2">
+					<label>Heading</label>
+					<input type="text" name="heading" class="form-control" />
+				</div>
+				<div class="mb-2">
+					<label>Sub-heading</label>
+					<input type="text" name="subheading" class="form-control" />
+				</div>
+				<div class="mb-2">
+					<label>Display title<sup class="text-danger">*</sup></label>
+					<input type="text" name="displayTitle" class="form-control" required />
+				</div>
+			</div>
+			<div class="mb-0">
+				<button class="btn btn-success btn-sm" submit>Create</button>
+				<button class="btn btn-default border btn-sm" cancel>Cancel</button>
+			</div>
+		</form>
+	</div>
+</div>
+
+<script>
+	var visitTemplateComponent = null;
+	(function() {
+		function init() {
+			visitTemplateComponent = new Vue({
+				el: '#createVisitTemplateSegmentTemplateComponent',
+				data: {
+					segmentTemplates:[]
+				},
+				methods: {
+					initSelect2: function(){
+						var self = this;
+						$('[select-2]').select2();
+					},
+					loadSegmentTemplates: function() {
+						var self = this;
+						$.get("{{ route('practice-management.segmentTemplates') }}", {response_type:'json'}, function(response) {
+							self.segmentTemplates = response.data;
+						}, 'json');
+					},
+					getSegmentTemplates: function(){
+						return this.segmentTemplates;
+					},
+					init: function() {
+						this.loadSegmentTemplates();
+					}
+				},
+				mounted: function() {
+					this.init();
+				},
+				updated: function(){
+					var self = this;
+					self.$nextTick(function(){
+						self.initSelect2();
+					});
+				}
+			});
+		}
+		addMCInitializer('createVisitTemplateSegmentTemplate', init);
+	})();
+</script>

+ 143 - 0
resources/views/app/practice-management/visit-templates/visit-template-segment-templates/index.blade.php

@@ -0,0 +1,143 @@
+@extends ('layouts/template')
+
+@section('content')
+<link href="/select2/select2.min.css" rel="stylesheet" />
+<script src="/select2/select2.min.js"></script>
+
+<style>
+    #visit-template-segment-template-list .select2-container {
+        width: 100% !important;
+    }
+</style>
+
+<div class="p-3 mcp-theme-1" id="visit-template-segment-template-list">
+    <a href="{{ route('practice-management.visitTemplates') }}" class="d-block mb-1"><i class="fas fa-arrow-left"></i> Back to Visit Templates</a>
+    <div class="card mb-3">
+        <div class="card-header">
+            <div class="d-flex align-items-center justify-content-between">
+            <strong>{{ $visitTemplate->title }}</strong>
+            <div>
+            @include('app.practice-management.visit-templates.update', ['template' => $visitTemplate ])
+            </div>
+            </div>
+        </div>
+        <div class="card-body">
+                <div class="d-flex align-items-start">
+                    <span class="mr-3"><b>Internal Name:</b> {{ $visitTemplate->internal_name }}</span>
+                    <span class="mr-3"><b>Title:</b> {{ $visitTemplate->title }}</span>
+                    <span class="mr-3"><b>Created At:</b> {{ friendly_date_time($visitTemplate->created_at) }}</span>
+                    <span class="mr-3">
+                        <b>Status:</b> 
+                    @if($visitTemplate->is_active)
+                        <span class="text-success mr-2">ACTIVE</span>
+                    @else
+                        <span class="text-danger mr-2">INACTIVE</span>
+                    @endif
+                    @include('app.practice-management.visit-templates.activate-deactivate', ['template' => $visitTemplate, 'leftPosition' => true ])
+                    </span>
+
+                    <div class="mr-3 d-flex align-items-start">
+                    @if($visitTemplate->is_active)
+                        @if($visitTemplate->reactivation_memo)
+                            <span class="mr-3"><b>Reactivation Memo:</b></span>
+                            <div style="width:300px;">
+                                <small class="text-muted"><b>Memo: </b>{{ $visitTemplate->reactivation_memo }}</small>
+                                @include('app.practice-management.visit-templates.update-memo', ['template' => $visitTemplate ])
+                            </div>
+                        @endif
+                    @else
+                        @if($visitTemplate->deactivation_memo)
+                            <span class="mr-3"><b>Deactivation Memo:</b></span>
+                            <div style="width:300px;">
+                                <small class="text-muted"><b>Memo: </b>{{ $visitTemplate->deactivation_memo }}</small>
+                                @include('app.practice-management.visit-templates.update-memo', ['template' => $visitTemplate ])
+                            </div>
+                        @endif
+                    @endif
+                    </div>
+                </div>
+        </div>
+    </div>
+    <div class="card">
+
+        <div class="card-header border-bottom-0 px-1 py-2 d-flex align-items-center">
+            <strong class="mr-4">
+                <i class="fas fa-notes-medical"></i>
+                Visit Template Segment Templates
+            </strong>
+            @include('app.practice-management.visit-templates.visit-template-segment-templates.create')
+        </div>
+
+        <div class="card-body p-0">
+            <table class="table table-sm table-striped border-top p-0 m-0">
+                <thead class="bg-light">
+                    <tr>
+                        <th class="border-0">Display title</th>
+                        <th class="border-0">Heading</th>
+                        <th class="border-0">Sub-heading</th>
+                        <th class="border-0">Position Index</th>
+                        <th class="border-0">Segment Template</th>
+                        <th class="border-0">Created At</th>
+                        <th class="border-0">Status</th>
+                        <th class="border-0">&nbsp;</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    @foreach($visitTemplateSegmentTemplates as $template)
+                    <tr>
+                        <td>{{ $template->display_title }}</td>
+                        <td>{{ $template->heading }}</td>
+                        <td>{{ $template->subheading }}</td>
+                        <td>{{ $template->position_index }}</td>
+                        <td>{{ $template->segmentTemplate ? $template->segmentTemplate->default_display_title : '---' }}</td>
+                        <td>{{ friendly_date_time($template->created_at) }}</td>
+                        <td>
+                            <div>
+                                @if($template->is_active)
+                                    <span class="text-success">ACTIVE</span>
+                                    @if($template->reactivation_memo)
+                                        <div style="width:300px;">
+                                            <small class="text-muted"><b>Memo: </b>{{ $template->reactivation_memo }}</small>
+                                            @include('app.practice-management.visit-templates.visit-template-segment-templates.update-memo')
+                                        </div>
+                                    @endif
+                                @else
+                                    <span class="text-danger">INACTIVE</span>
+                                    @if($template->deactivation_memo)
+                                        <div style="width:300px;">
+                                            <small class="text-muted"><b>Memo: </b>{{ $template->deactivation_memo }}</small>
+                                            @include('app.practice-management.visit-templates.visit-template-segment-templates.update-memo')
+                                        </div>
+                                    @endif
+                                @endif
+                            </div>
+                        </td>
+                        <td>
+                            <div class="d-flex align-items-center">
+                                <div class="mr-2">
+                                @include('app.practice-management.visit-templates.visit-template-segment-templates.update')
+                                </div>
+                                <div>
+                                @include('app.practice-management.visit-templates.visit-template-segment-templates.activate-deactivate')
+                                </div>
+                            </div>
+                        </td>                
+                    </tr>
+                    @endforeach
+
+                    @if(count($visitTemplateSegmentTemplates) === 0)
+                    <tr>
+                        <td colspan="8">No records found!</td>
+                    </tr>
+                    @endif
+                </tbody>
+
+            </table>
+
+        </div>
+    </div>
+    <div class="mt-3">
+        {{ $visitTemplateSegmentTemplates->appends(request()->input())->links() }}
+    </div>
+</div>
+@endsection

+ 19 - 0
resources/views/app/practice-management/visit-templates/visit-template-segment-templates/update-memo.blade.php

@@ -0,0 +1,19 @@
+<div moe>
+		<a start show href="#">
+			<i class="far fa-edit"></i>
+		</a>
+		<form url="{{ $template->is_active ? '/api/visitTemplateSegmentTemplate/update-reactivation-memo' : '/api/visitTemplateSegmentTemplate/update-deactivation-memo' }}" class="mt-2">
+			<input type="hidden" name="uid" value="{{ $template->uid }}">
+			<div class="mb-2 w-100">
+				<label>Are you sure?</label>
+			</div>
+			<div class="mb-2 w-100">
+				<label>Memo</label>
+				<textarea name="memo" class="form-control"><?= $template->is_active ? $template->reactivation_memo: $template->deactivation_memo ?></textarea>
+			</div>
+			<div class="mt-3">
+				<button submit class="btn btn-sm btn-primary mr-2">Update</button>
+				<button cancel class="btn btn-default border">Cancel</button>
+			</div>
+		</form>
+	</div>

+ 28 - 0
resources/views/app/practice-management/visit-templates/visit-template-segment-templates/update.blade.php

@@ -0,0 +1,28 @@
+<div moe>
+	<a class="" href="" show start><i class="far fa-edit"></i></a>
+	<form url="/api/visitTemplateSegmentTemplate/updateBasic" right>
+		<div>
+			<input type="hidden" name="uid" value="{{ $template->uid }}" />
+			<div class="mb-2">
+				<label>Position Index<sup class="text-danger">*</sup></label>
+				<input type="number" name="positionIndex" class="form-control" value="{{ $template->position_index }}" required />
+			</div>
+			<div class="mb-2">
+				<label>Heading</label>
+				<input type="text" name="heading" class="form-control" value="{{ $template->heading }}" />
+			</div>
+			<div class="mb-2">
+				<label>Sub-heading</label>
+				<input type="text" name="subheading" class="form-control" value="{{ $template->subheading }}" />
+			</div>
+			<div class="mb-2">
+				<label>Display title<sup class="text-danger">*</sup></label>
+				<input type="text" name="displayTitle" class="form-control" required value="{{ $template->display_title }}" />
+			</div>
+		</div>
+		<div class="mb-0">
+			<button class="btn btn-success btn-sm" submit>Update</button>
+			<button class="btn btn-default border btn-sm" cancel>Cancel</button>
+		</div>
+	</form>
+</div>

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

@@ -243,6 +243,12 @@ $isOldClient = (date_diff(date_create(config('app.point_impl_date')), date_creat
 							<a class="nav-link {{ strpos($routeName, 'patients.view.pros') === 0 ? 'active' : '' }}"
 							   href="{{ route('patients.view.pros', ['patient' => $patient]) }}">Pros</a>
 						</li>
+						@if($performer->pro->pro_type == 'ADMIN')
+						<li class="nav-item">
+							<a class="nav-link {{ strpos($routeName, 'patients.view.client-pro-access') === 0 ? 'active' : '' }}"
+							   href="{{ route('patients.view.client-pro-access', ['patient' => $patient]) }}">Client Pro Access</a>
+						</li>
+						@endif
 						<li class="nav-item">
 							<a class="nav-link" href="/patients/view/{{ $patient->uid }}/intake">Intake</a>
 						</li>

+ 1 - 1
resources/views/layouts/template.blade.php

@@ -181,7 +181,7 @@
                             <a class="dropdown-item" href="{{ route('practice-management.clientsBdtDevices') }}">Clients BDT Devices</a>
                             <a class="dropdown-item" href="{{ route('practice-management.memos') }}">Memos</a>
                             <a class="dropdown-item" href="{{ route('practice-management.segmentTemplates') }}">Segment Templates</a>
-
+                            <a class="dropdown-item" href="{{ route('practice-management.visitTemplates') }}">Visit Templates</a>
                         @elseif($pro->is_enrolled_as_mcp && $pro->is_considered_for_mcp_assignment)
 
                             <a class="dropdown-item" href="{{ route('practice-management.financialTransactions') }}">Financial Transactions</a>

+ 4 - 0
routes/web.php

@@ -255,6 +255,8 @@ Route::middleware('pro.auth')->group(function () {
         Route::get('clients-bdt-devices', 'PracticeManagementController@clientsBdtDevices')->name('clientsBdtDevices');
         Route::get('memos', 'PracticeManagementController@memos')->name('memos');
         Route::get('segment-templates', 'PracticeManagementController@segmentTemplates')->name('segmentTemplates');
+        Route::get('visit-templates', 'PracticeManagementController@visitTemplates')->name('visitTemplates');
+        Route::get('visit-template/{visitTemplate}', 'PracticeManagementController@visitTemplate')->name('visitTemplate');
         Route::get('client-ccm-rm-status', 'PracticeManagementController@clientCcmRmStatus')->name('client-ccm-rm-status');
 
         Route::get('hcp-note-activity', 'PracticeManagementController@hcpNoteActivity')->name('hcp-note-activity');
@@ -399,6 +401,8 @@ Route::middleware('pro.auth')->group(function () {
         Route::get('patients/view/insurance-coverage/{patient}', 'PatientController@insuranceCoverage')->name('patients.view.insurance-coverage');
         Route::get('patients/view/client-primarycoverages/{patient}', 'PatientController@clientPrimaryCoverages')->name('patients.view.client-primary-coverages');
         Route::get('patients/view/primary-coverage/{patient}', 'PatientController@primaryCoverage')->name('patients.view.primary-coverage');
+        Route::get('patients/view/client-pro-access/{patient}', 'PatientController@clientProAccess')->name('patients.view.client-pro-access');
+
         Route::get('patients/view/primary-coverage-form/{patient}', 'PatientController@primaryCoverageForm')->name('patients.view.primary-coverage-form');
         Route::get('patients/view/primary-coverage-manual-determination-modal/{patient}', 'PatientController@primaryCoverageManualDeterminationModal')->name('patients.view.primary-coverage-manual-determination-modal');
     // });