Browse Source

Merge branch 'master' of rav.triplestart.com:jmudaka/stagfe2

root 3 years ago
parent
commit
4aa32d39a3
35 changed files with 947 additions and 94 deletions
  1. 14 0
      app/Helpers/helpers.php
  2. 1 1
      app/Http/Controllers/NoteController.php
  3. 38 0
      app/Http/Controllers/PracticeManagementController.php
  4. 29 0
      app/Models/Point.php
  5. 2 2
      app/Models/Segment.php
  6. 18 0
      app/Models/VisitTemplateSegmentTemplate.php
  7. 1 1
      config/app.php
  8. 48 0
      js-dev/mc.js
  9. 0 1
      public/css/style.css
  10. 0 6
      public/css/z.css
  11. 7 2
      resources/views/app/patient/note/dashboard.blade.php
  12. 11 8
      resources/views/app/patient/segment-templates/covid_follow-up/edit.blade.php
  13. 5 4
      resources/views/app/patient/segment-templates/covid_follow-up/summary.blade.php
  14. 8 6
      resources/views/app/patient/segment-templates/covid_intake/edit.blade.php
  15. 7 4
      resources/views/app/patient/segment-templates/covid_intake/summary.blade.php
  16. 18 9
      resources/views/app/patient/send_email.blade.php
  17. 27 0
      resources/views/app/practice-management/segment-templates/activate-deactivate.blade.php
  18. 17 0
      resources/views/app/practice-management/segment-templates/create.blade.php
  19. 81 0
      resources/views/app/practice-management/segment-templates/index.blade.php
  20. 19 0
      resources/views/app/practice-management/segment-templates/update-memo.blade.php
  21. 18 0
      resources/views/app/practice-management/segment-templates/update.blade.php
  22. 27 0
      resources/views/app/practice-management/visit-templates/activate-deactivate.blade.php
  23. 69 0
      resources/views/app/practice-management/visit-templates/change-note-visit-template.blade.php
  24. 17 0
      resources/views/app/practice-management/visit-templates/create.blade.php
  25. 81 0
      resources/views/app/practice-management/visit-templates/index.blade.php
  26. 19 0
      resources/views/app/practice-management/visit-templates/update-memo.blade.php
  27. 18 0
      resources/views/app/practice-management/visit-templates/update.blade.php
  28. 27 0
      resources/views/app/practice-management/visit-templates/visit-template-segment-templates/activate-deactivate.blade.php
  29. 79 0
      resources/views/app/practice-management/visit-templates/visit-template-segment-templates/create.blade.php
  30. 143 0
      resources/views/app/practice-management/visit-templates/visit-template-segment-templates/index.blade.php
  31. 19 0
      resources/views/app/practice-management/visit-templates/visit-template-segment-templates/update-memo.blade.php
  32. 28 0
      resources/views/app/practice-management/visit-templates/visit-template-segment-templates/update.blade.php
  33. 46 49
      resources/views/layouts/patient.blade.php
  34. 2 1
      resources/views/layouts/template.blade.php
  35. 3 0
      routes/web.php

+ 14 - 0
app/Helpers/helpers.php

@@ -11,6 +11,7 @@ use App\Models\Client;
 use App\Models\Pro;
 use App\Models\Bill;
 //require_once './class.Diff.php';
+use Illuminate\Support\Facades\Http;
 use Soundasleep\Html2Text as Html2Text;
 
 if(!function_exists('toFeetAndInches')) {
@@ -23,6 +24,19 @@ if(!function_exists('toFeetAndInches')) {
     }
 }
 
+if(!function_exists('callJava')) {
+    function callJava($endPoint, $data, $sessionKey) {
+        $url = config('stag.backendUrl') . $endPoint;
+        $response = Http::asForm()
+            ->withHeaders([
+                'sessionKey' => $sessionKey
+            ])
+            ->post($url, $data)
+            ->body();
+        return $response;
+    }
+}
+
 if(!function_exists('feetFromInches')) {
     function feetFromInches($value) {
         if(!$value) return 0;

+ 1 - 1
app/Http/Controllers/NoteController.php

@@ -108,7 +108,7 @@ class NoteController extends Controller
 
             $segment = Segment::where('uid', $segmentUid)->first();
 
-            $recalculatedHtml = $segment->getRecalculatedHtml($performer);
+            $recalculatedHtml = $segment->getRecalculatedHtml($performer, $sessionKey);
 
         } catch (\Throwable $e) {
             return response()->json([

+ 38 - 0
app/Http/Controllers/PracticeManagementController.php

@@ -43,6 +43,9 @@ use PDF;
 use DateTime;
 use DateTimeZone;
 use Illuminate\Http\Request;
+use App\Models\SegmentTemplate;
+use App\Models\VisitTemplate;
+use App\Models\VisitTemplateSegmentTemplate;
 
 class PracticeManagementController extends Controller
 {
@@ -2453,6 +2456,41 @@ ORDER BY c.name_last, c.name_first
         return view('app.practice-management.memos', compact('memos', 'filters'));
     }
 
+    public function segmentTemplates(Request $request){
+        $segmentTemplates = SegmentTemplate::query();
+        $segmentTemplates = $segmentTemplates->orderBy('created_at', 'DESC');
+        
+        $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();

+ 29 - 0
app/Models/Point.php

@@ -316,6 +316,35 @@ class Point extends Model
         return $point;
     }
 
+    public static function getOrCreateOnlyTopLevelPointOfCategory(Note $_note, String $_category, $_sessionKey, $_assoc = false) {
+        $point = Point
+            ::where('client_id', $_note->client_id)
+            ->where('category', $_category)
+            ->where('intention', 'TOP_LEVEL')
+            ->first();
+
+        if(!$point) {
+            $response = callJava('/visitPoint/addTopLevel', [
+                "category" => $_category,
+                "data" => '{}',
+                "noteUid" => $_note->uid,
+                "additionReasonCategory" => 'ON_INTAKE',
+            ], $_sessionKey);
+            // TODO: dont assume success
+            $point = Point
+                ::where('client_id', $_note->client_id)
+                ->where('category', $_category)
+                ->where('intention', 'TOP_LEVEL')
+                ->first();
+        }
+
+        if ($point && $point->data) {
+            $point->data = json_decode($point->data, $_assoc);
+        }
+
+        return $point;
+    }
+
     public static function fillPointStateAndBadge(Point $point, Note $note)
     {
 

+ 2 - 2
app/Models/Segment.php

@@ -37,7 +37,7 @@ class Segment extends Model
         return $this->hasOne(SegmentSummarySuggestion::class, 'id', 'accepted_segment_summary_suggestion_id');
     }
 
-    public function getRecalculatedHtml($performer){
+    public function getRecalculatedHtml($performer, $sessionKey){
         $pro = $performer->pro;
         $segment = $this; 
         $segmentTemplate = $this->segmentTemplate;
@@ -45,7 +45,7 @@ class Segment extends Model
         $note = $this->note;
         $patient = $note->client;
 
-        $data = compact('performer', 'pro', 'segment', 'segmentTemplate', 'note', 'patient');
+        $data = compact('performer', 'pro', 'segment', 'segmentTemplate', 'note', 'patient', 'sessionKey');
 
 
         $summaryHtml = view('app.patient.segment-templates.' . $segmentTemplate->internal_name . '/summary', $data)->render();

+ 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');
+    }
+}

+ 1 - 1
config/app.php

@@ -65,7 +65,7 @@ return [
 
     'hrm2_url' => env('HRM2_URL'),
 
-    'asset_version' => 44,
+    'asset_version' => 45,
 
     'temp_dir' => env('TEMP_DIR'),
 

+ 48 - 0
js-dev/mc.js

@@ -409,6 +409,54 @@ function initQuillEdit(_selector = '.note-content[auto-edit]') {
         .attr('with-shortcuts', 1);
 }
 
+function initQuillRTE(_selector, _config = false, _shortcuts = false) {
+    if(!_config) _config = stagQuillConfig;
+    $(_selector).each(function() {
+
+        $(this).wrap(
+            $('<div class="border-left border-right rte-holder"/>')
+                .attr('data-shortcuts', '')
+        );
+
+        // give a unique id to this editor instance
+        var editorID = Math.ceil(Math.random() * 99999),
+            fieldName = this.name;
+
+        var ti = $('<input type="hidden" />')
+            .val(this.value)
+            .attr('name', this.name)
+            .insertBefore(this);
+        var ce = $('<div data-editor-id="' + editorID + '" data-field="' + this.name + '"/>')
+            .html(this.value)
+            .insertBefore(this);
+        $(this).remove();
+
+        var qe = new Quill('[data-editor-id="' + editorID + '"]', {
+            theme: 'snow',
+            modules: _config ? _config : stagQuillConfig
+        });
+        var toolbar = $(qe.container).prev('.ql-toolbar');
+
+        // add button for new shortcut
+        if(_shortcuts) {
+            var newSCButton = $('<button class="btn bg-white btn-sm btn-default text-primary w-auto px-2 border py-0 ' +
+                'text-sm add-shortcut" data-editor-id="' + editorID + '">+ Shortcut</button>');
+            toolbar.append(newSCButton);
+        }
+
+        qe.on('text-change', function() {
+            ti.val(qe.root.innerHTML);
+        });
+
+        $(qe.container)
+            .find('.ql-editor[contenteditable]')
+            .attr('data-field', fieldName)
+            .attr('data-editor-id', editorID)
+            .attr('with-shortcuts', 1);
+
+    });
+}
+
 var patientPresenceTimer = false;
 function initFileInputs() {
     $(document)

+ 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 {

+ 0 - 6
public/css/z.css

@@ -1,11 +1,5 @@
 .z {
     font-size: 0.81em;
-} .z button:not(.btn) {
-    background: #efefef;
-    border: 1px solid #767676;
-    font-size: 0.9em;
-    min-width: 60px;
-    white-space: nowrap;
 } .z button:focus {
     outline: none;
 } .z form input {

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

@@ -139,7 +139,7 @@
         </h6>
     </div>
 
-    <span class="card mb-0 {{ $note->is_cancelled ? 'cancelled-item' : '' }} border-0 rounded-0">
+    <div class="card mb-0 {{ $note->is_cancelled ? 'cancelled-item' : '' }} border-0 rounded-0">
         <div class="card-header d-flex align-items-start px-3 py-2 border-bottom rounded-0" id="note-card-header">
             <div class="pr-2">
                 {{$note->title}}
@@ -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">
@@ -495,7 +500,7 @@
             </div>
         </div>
         <div class="card-body p-0">
-            <div class="note-container note_template_{{$note->visitTemplate ? $note->visitTemplate->internal_name : ''}}"">
+            <div class="note-container note_template_{{$note->visitTemplate ? $note->visitTemplate->internal_name : ''}}">
                 @if($isVisitTemplateBased && !$doesVisitTemplateUiConfigExist && $note->visitTemplate->internal_name !== 'soap_visit')
                     @include('app.patient.note.lhs-tree')
                 @endif

+ 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;
 }
 
 ?>

+ 8 - 6
resources/views/app/patient/segment-templates/covid_intake/edit.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_cdc_guidelines_aarp_mental_health" => '',
@@ -133,16 +133,18 @@ $contentData = [
 
 ];
 
-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 show url="/api/visitPoint/<?= $endPoint ?>" class="mcp-theme-1">
+    <form 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 type="hidden" name="data" value="{{json_encode($contentData)}}">
         <p class="mb-2">Hi {{strtolower($patient->sex) === 'M' ? 'Mr.' : 'Mrs.'}} {{$patient->displayName()}}, My name is {{$pro->displayName()}}. I'm a board-certified nurse practitioner.</p>
 

+ 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">

+ 18 - 9
resources/views/app/patient/send_email.blade.php

@@ -1,8 +1,3 @@
-<style>
-#outgoingEmailTemplate .ql-editor {
-    padding: 0 15px 15px 15px;
-}
-</style>
 <div class="d-inline" id="outgoingEmailTemplate">
     <div moe wide center class="ml-auto">
         <a show href="" start>Send Email</a>
@@ -42,7 +37,7 @@
             </div>
             <div class="form-group">
                 <button class="btn btn-primary btn-sm" submit>Submit</button>
-                <button class="btn btn-primary btn-sm" cancel>Cancel</button>
+                <button class="btn btn-secondary btn-sm" cancel>Cancel</button>
             </div>
         </form>
     </div>
@@ -61,7 +56,8 @@
                     },
                     fromEmailAddresses: [
                         'carelink@leadershiphealth.org'
-                    ]
+                    ],
+                    quill: null
                 },
                 methods: {
                     setTemplate: function(evt) {
@@ -75,7 +71,7 @@
                         self.template = self.templates[value];
                         self.quill.root.innerHTML = self.template.default_message_body_tpl;
                     },
-                    loadOugoingEmailTemplates: function() {
+                    loadOutgoingEmailTemplates: function() {
                         var self = this;
                         $.get("{{ route('outgoingEmailTemplates') }}", {}, function(response) {
                             self.templates = response.data;
@@ -85,13 +81,26 @@
                         var self = this;
                         self.quill = new Quill('#htmlBody', {
                             theme: 'snow',
+                            modules:{
+                                'toolbar': [
+                                [{ 'font': [] }, { 'size': [] }],
+                                [ 'bold', 'italic', 'underline', 'strike' ],
+                                [{ 'color': [] }, { 'background': [] }],
+                                [{ 'script': 'super' }, { 'script': 'sub' }],
+                                [{ 'header': '1' }, { 'header': '2' }],
+                                [{ 'list': 'ordered' }, { 'list': 'bullet'}, { 'indent': '-1' }, { 'indent': '+1' }],
+                                [ 'direction', { 'align': [] }],
+                                [ 'link', 'image', 'video'],
+                                [ 'clean' ]
+                            ]
+                            }
                         });
                         self.quill.on('text-change', function (delta, oldDelta, source) {
                             $('[name="htmlBody"]').val(self.quill.root.innerHTML);
                         });
                     },
                     init: function() {
-                        this.loadOugoingEmailTemplates();
+                        this.loadOutgoingEmailTemplates();
                         this.initQuillEditor();
                     }
                 },

+ 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>

+ 46 - 49
resources/views/layouts/patient.blade.php

@@ -527,58 +527,55 @@ $isOldClient = (date_diff(date_create(config('app.point_impl_date')), date_creat
 														</span>
 													</span>
 												@endif
-											</div>
+												</div>
 											</div>
 
-										<div>
-											<label>CC:</label> {{$patient->defaultNaPro ? $patient->defaultNaPro->displayName() : '-' }}
-											@if($pro->pro_type == 'ADMIN')
-												<div moe class="ml-2 hide-inside-popup">
-													<a start show><i class="fa fa-edit"></i></a>
-													<form url="/api/client/putDefaultNaPro" class="mcp-theme-1">
-														<input type="hidden" name="uid" value="{{$patient->uid}}">
-														<div class="mb-2">
-															<label class="text-secondary text-sm">Care Coordinator</label>
-															<select provider-search data-pro-uid="{{ @$patient->defaultNaPro->uid }}"
-																	name="defaultNaProUid"
-																	class="form-control form-control-sm">
-																<option value=""> --select--</option>
-																@foreach($pros as $iPro)
-																	<option
-																		value="{{$iPro->uid}}" {{ $patient->pcp && $iPro->uid === $patient->pcp->uid ? 'selected' : '' }}>{{$iPro->displayName()}}</option>
-																@endforeach
-															</select>
-														</div>
-														<div>
-															<button submit class="btn btn-sm btn-primary mr-1">Submit
-															</button>
-															<button cancel class="btn btn-sm btn-default border">
-																Cancel
-															</button>
-														</div>
-													</form>
-												</div>
-												@if($patient->pcp)
-												<div moe class="ml-2 hide-inside-popup">
-													<a start show><i class="fa fa-times"></i></a>
-													<form url="/api/client/removeDefaultNaPro" class="mcp-theme-1">
-														<input type="hidden" name="uid" value="{{$patient->uid}}">
-														<div class="mb-2">
-															<label class="text-secondary text-sm">Remove Care Coordinator</label>
+											<div>
+												<label>CC:</label> {{$patient->defaultNaPro ? $patient->defaultNaPro->displayName() : '-' }}
+												@if($pro->pro_type == 'ADMIN')
+													<div moe class="ml-2 hide-inside-popup">
+														<a start show><i class="fa fa-edit"></i></a>
+														<form url="/api/client/putDefaultNaPro" class="mcp-theme-1">
+															<input type="hidden" name="uid" value="{{$patient->uid}}">
+															<div class="mb-2">
+																<label class="text-secondary text-sm">Care Coordinator</label>
+																<select provider-search data-pro-uid="{{ @$patient->defaultNaPro->uid }}"
+																		name="defaultNaProUid"
+																		class="form-control form-control-sm">
+																	<option value=""> --select--</option>
+																	@foreach($pros as $iPro)
+																		<option
+																			value="{{$iPro->uid}}" {{ $patient->pcp && $iPro->uid === $patient->pcp->uid ? 'selected' : '' }}>{{$iPro->displayName()}}</option>
+																	@endforeach
+																</select>
+															</div>
+															<div>
+																<button submit class="btn btn-sm btn-primary mr-1">Submit
+																</button>
+																<button cancel class="btn btn-sm btn-default border">
+																	Cancel
+																</button>
+															</div>
+														</form>
+													</div>
+													@if($patient->pcp)
+													<div moe class="ml-2 hide-inside-popup">
+														<a start show><i class="fa fa-times"></i></a>
+														<form url="/api/client/removeDefaultNaPro" class="mcp-theme-1">
+															<input type="hidden" name="uid" value="{{$patient->uid}}">
+															<div class="mb-2">
+																<label class="text-secondary text-sm">Remove Care Coordinator</label>
 
-                                          </div>
-                                          <div>
-                                              <button submit class="btn btn-sm btn-primary mr-1">Submit
-                                              </button>
-                                              <button cancel class="btn btn-sm btn-default border">
-                                                  Cancel
-                                              </button>
-                                          </div>
-                                      </form>
-                                  </div>
-                              @endif
-                          @endif
-                      </div>
+															</div>
+															<div>
+																<button submit class="btn btn-sm btn-primary mr-1">Submit</button>
+																<button cancel class="btn btn-sm btn-default border">Cancel</button>
+															</div>
+														</form>
+													</div>
+													@endif
+												@endif
+											</div>
 
                                         </div>
                                     </section>

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

@@ -180,7 +180,8 @@
                             <a class="dropdown-item" href="{{ route('practice-management.patientsAccountsInvites') }}">Patients Accounts Invites</a>
                             <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>

+ 3 - 0
routes/web.php

@@ -252,6 +252,9 @@ Route::middleware('pro.auth')->group(function () {
         Route::get('patients-accounts-invites', 'PracticeManagementController@patientsAccountsInvites')->name('patientsAccountsInvites');
         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');