Răsfoiți Sursa

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

Samson Mutunga 3 ani în urmă
părinte
comite
a120c2e854
43 a modificat fișierele cu 781 adăugiri și 448 ștergeri
  1. 4 0
      app/Http/Controllers/NoteController.php
  2. 1 1
      config/app.php
  3. 35 1
      public/css/style.css
  4. 4 4
      resources/views/app/admin/patients-table-extended.blade.php
  5. 6 6
      resources/views/app/patient/coverage-status.blade.php
  6. 222 0
      resources/views/app/patient/medications-add-multi-preexisting.blade.php
  7. 10 0
      resources/views/app/patient/medications-center.blade.php
  8. 1 1
      resources/views/app/patient/point-based-partials/allergies.blade.php
  9. 1 1
      resources/views/app/patient/point-based-partials/care-team.blade.php
  10. 1 1
      resources/views/app/patient/point-based-partials/dx.blade.php
  11. 2 1
      resources/views/app/patient/point-based-partials/fhx.blade.php
  12. 2 1
      resources/views/app/patient/point-based-partials/pmhx.blade.php
  13. 2 1
      resources/views/app/patient/point-based-partials/shx.blade.php
  14. 2 1
      resources/views/app/patient/point-based-partials/sochx.blade.php
  15. 1 1
      resources/views/app/patient/point-based-partials/supplements.blade.php
  16. 37 0
      resources/views/app/patient/segment-templates/_common_actions/toggle-relevance.blade.php
  17. 3 0
      resources/views/app/patient/segment-templates/history_family/edit.blade.php
  18. 2 0
      resources/views/app/patient/segment-templates/history_social/edit.blade.php
  19. 3 0
      resources/views/app/patient/segment-templates/history_surgical/edit.blade.php
  20. 1 1
      resources/views/app/patient/segment-templates/omega_allergies/summary.blade.php
  21. 1 1
      resources/views/app/patient/segment-templates/omega_care_team/summary.blade.php
  22. 1 1
      resources/views/app/patient/segment-templates/omega_goals/summary.blade.php
  23. 3 1
      resources/views/app/patient/segment-templates/omega_history_family/summary.blade.php
  24. 3 1
      resources/views/app/patient/segment-templates/omega_history_past_medical/summary.blade.php
  25. 3 1
      resources/views/app/patient/segment-templates/omega_history_social/summary.blade.php
  26. 3 1
      resources/views/app/patient/segment-templates/omega_history_surgical/summary.blade.php
  27. 1 1
      resources/views/app/patient/segment-templates/omega_medications/summary.blade.php
  28. 1 1
      resources/views/app/patient/segment-templates/omega_plan_allergies/summary.blade.php
  29. 1 1
      resources/views/app/patient/segment-templates/omega_plan_care_team/summary.blade.php
  30. 1 1
      resources/views/app/patient/segment-templates/omega_plan_goals/summary.blade.php
  31. 1 1
      resources/views/app/patient/segment-templates/omega_plan_medications/summary.blade.php
  32. 1 1
      resources/views/app/patient/segment-templates/omega_plan_problems/summary.blade.php
  33. 1 1
      resources/views/app/patient/segment-templates/omega_problems/summary.blade.php
  34. 3 0
      resources/views/app/patient/segment-templates/omega_ros/edit.blade.php
  35. 3 1
      resources/views/app/patient/segment-templates/omega_ros/summary.blade.php
  36. 23 18
      resources/views/app/patient/segment-templates/omega_vitals/edit.blade.php
  37. 7 10
      resources/views/app/patient/segment-templates/omega_vitals/summary.blade.php
  38. 3 0
      resources/views/app/patient/segment-templates/past_medical_history/edit.blade.php
  39. 152 171
      resources/views/app/patient/segment-templates/typical_day_lifestyle/edit.blade.php
  40. 3 0
      resources/views/app/patient/segment-templates/typical_day_lifestyle/summary.blade.php
  41. 1 1
      resources/views/app/practice-management/visit-templates/visit-template-segment-templates/create.blade.php
  42. 224 213
      resources/views/layouts/patient.blade.php
  43. 1 0
      routes/web.php

+ 4 - 0
app/Http/Controllers/NoteController.php

@@ -400,6 +400,10 @@ class NoteController extends Controller
         return view('app.patient.medications-center', compact('patient', 'note'));
     }
 
+    public function medicationsAddMultiPreexisting(Request $request, Note $note) {
+        return view('app.patient.medications-add-multi-preexisting', compact('note'));
+    }
+
     public function medicationsReconcile(Request $request, Client $patient, Note $note) {
         return view('app.patient.medications-reconcile', compact('patient', 'note'));
     }

+ 1 - 1
config/app.php

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

+ 35 - 1
public/css/style.css

@@ -318,7 +318,8 @@ body>nav.navbar {
 .mcp-theme-1 .form-control.form-control-sm:not(.min-width-unset) {
     min-width: 200px;
 }
-.mcp-theme-1 .min-width-unset>.form-control.form-control-sm {
+.mcp-theme-1 .min-width-unset>.form-control.form-control-sm,
+.mcp-theme-1 select.min-width-unset+.pro-suggest-input {
     min-width: unset !important;
 }
 .mcp-theme-1 .width-auto {
@@ -1251,6 +1252,9 @@ body .node input[type="number"] {
 .stag-popup.stag-popup-sm>form, .stag-popup.stag-popup-sm>.stag-popup-content {
     max-width: 500px;
 }
+.stag-popup.stag-popup-900>form, .stag-popup.stag-popup-900>.stag-popup-content {
+    max-width: 900px;
+}
 .stag-popup.stag-popup-md>form, .stag-popup.stag-popup-md>.stag-popup-content {
     max-width: 632pt;
 }
@@ -1286,6 +1290,10 @@ body .node input[type="number"] {
     transition: right 0.3s ease;
     width: 0;
 }
+.stag-popup.stag-slide.stag-popup-900>form {
+    width: 900px;
+    right: -900px;
+}
 .stag-popup.stag-slide.stag-popup-sm>form {
     width: 500px;
     right: -500px;
@@ -2151,6 +2159,9 @@ form.non-interactive .form-content * {
 table.dashboard-stats-table th {
     padding: 0.5rem 0.75rem
 }
+.max-height-100px {
+    max-height: 100px;
+}
 .max-height-200px {
     max-height: 200px;
 }
@@ -3273,4 +3284,27 @@ body.forced-masking #mask {
 }
 .customized-form .form-check-inline .form-check-input[type="radio"] {
     margin-top: -3px;
+}
+/* stag sheet */
+.stag-sheet tbody tr td {
+    padding: 0;
+    background: #fff;
+}
+.stag-sheet tbody tr td input,
+.stag-sheet tbody tr td textarea {
+    border: 1px solid transparent;
+    resize: none;
+    width: 100%;
+    outline: none;
+    margin: 0;
+    display: block;
+    padding: 3px;
+    min-height: 28px;
+    overflow: hidden;
+}
+.stag-sheet tbody tr td input:focus,
+.stag-sheet tbody tr td input:focus-visible,
+.stag-sheet tbody tr td textarea:focus,
+.stag-sheet tbody tr td textarea:focus-visible{
+    border: 1px solid steelblue;
 }

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

@@ -27,10 +27,10 @@
             <th class="border-0">Assigned On</th>
             <th class="border-0">Notes</th>
             <th class="border-0">Status</th>
-            <th class="border-0">Temparature Gun Delivery Status</th>
-            <th class="border-0">Pulse Oximeter Delivery Status</th>
-            <th class="border-0">Cellular Bp Delivery Status</th>
-            <th class="border-0">Weight Scale Delivery Status</th>
+            <th class="border-0">Temp. Gun</th>
+            <th class="border-0">Pulse Ox.</th>
+            <th class="border-0">Cell. Bp</th>
+            <th class="border-0">Wt. Scale</th>
 
 
             {{--<th class="border-0">DOB</th>--}}

+ 6 - 6
resources/views/app/patient/coverage-status.blade.php

@@ -15,7 +15,7 @@
       @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
       <table class="table table-sm table-bordered">
         <tr>
-          <td class="font-weight-bold">Medicare Part B (Primary)</td>
+          <td class="font-weight-bold">Medicare Part B<br>(Primary)</td>
           <td>
             @if($mcnDetails && $mcnDetails->plan_details)
             <span class="font-weight-bold">{{ $mcnDetails->plan_details->MC->payer_name }}</span> <br>
@@ -60,7 +60,7 @@
       <!-- Manual determination -->
       <table class="table table-sm table-bordered">
         <tr>
-          <td class="font-weight-bold">Medicare Part B (Primary)</td>
+          <td class="font-weight-bold">Medicare Part B<br>(Primary)</td>
           <td>
             @if($mcnDetails && $mcnDetails->plan_details)
               <span class="font-weight-bold">{{ $mcnDetails->plan_details->MC->payer_name }}</span> <br>
@@ -110,7 +110,7 @@
       @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
       <table class="table table-sm table-bordered">
         <tr>
-          <td class="font-weight-bold">Medicaid (Primary):</td>
+          <td class="font-weight-bold">Medicaid<br>(Primary):</td>
           <td>
             <span><b>{{$coverage->mcdPayer->name ?? '-'}}</b></span> <br>
             <span><i class="fas fa-hourglass-half text-warning"></i> Pending Validation</span> <br>
@@ -130,7 +130,7 @@
       @else
         <table class="table table-sm table-bordered">
           <tr>
-            <td class="font-weight-bold">Medicaid (Primary):</td>
+            <td class="font-weight-bold">Medicaid<br>(Primary):</td>
             <td>
               <span><b>{{$coverage->mcd_payer_name ?? '-'}}</b></span> <br>
               @if($coverage->manual_determination_category == 'COVERED')
@@ -158,7 +158,7 @@
       @if($coverage->creation_strategy == 'NEW' || $coverage->creation_strategy == 'AUTO_REFRESH')
       <table class="table table-sm table-bordered">
         <tr>
-          <td class="font-weight-bold">Commercial (Primary):</td>
+          <td class="font-weight-bold">Commercial<br>(Primary):</td>
           <td>
             <span><b>{{$coverage->payer->name ?? '-'}}</b></span> <br>
             <span><i class="fas fa-hourglass-half text-warning"></i> Pending Validation</span> <br>
@@ -178,7 +178,7 @@
       @else
         <table class="table table-sm table-bordered">
           <tr>
-            <td class="font-weight-bold">Commercial (Primary):</td>
+            <td class="font-weight-bold">Commercial<br>(Primary):</td>
             <td>
               <span><b>{{$coverage->payer->name ?? '-'}}</b></span> <br>
               @if($coverage->manual_determination_category == 'COVERED')

+ 222 - 0
resources/views/app/patient/medications-add-multi-preexisting.blade.php

@@ -0,0 +1,222 @@
+<div class="popup-content-container">
+    <div visit-moe no-auto-save id="medications-add-multi-preexisting-{{$note->id}}" class="w-100">
+        <form show url="/api/visitPoint/addTopLevelBulkPreExisting" class="mcp-theme-1 w-100 px-3 pb-3" novalidate>
+            <input type="hidden" name="noteUid" value="<?= $note->uid ?>">
+            <input type="hidden" name="category" value="MEDICATION">
+            <input type="hidden" name="dataJson">
+
+            <table class="table table-sm table-bordered stag-sheet allow-row-addition bg-white mb-2 point-table read">
+                <thead>
+                <tr class="bg-light">
+                    <th class="border-bottom-0 text-secondary">Medication</th>
+                    <th class="border-bottom-0 text-secondary width-100px">Start Date</th>
+                    <th class="border-bottom-0 text-secondary width-100px">Prescriber</th>
+                    <th class="border-bottom-0 text-secondary w-25">Subjective</th>
+                    <th class="border-bottom-0 text-secondary w-25">Plan</th>
+                    <th class="border-bottom-0 text-secondary width-40px"></th>
+                </tr>
+                </thead>
+                <tbody>
+                <tr>
+                    <td class="p-0">
+                        <input type="text" key="name" bucket="data" required
+                               stag-suggest
+                               stag-suggest-ep="/fdb-med-suggest-v2/json">
+                        <input type="hidden" key="routedMedId" bucket="data">
+                        <input type="hidden" key="routedDosageFormMedId" bucket="data">
+                        <input type="hidden" key="gcnSeqno" bucket="data">
+                        <input type="hidden" key="medId" bucket="data">
+                    </td>
+                    <td class="p-0">
+                        <input type="date" key="start_date" bucket="data">
+                    </td>
+                    <td class="p-0">
+                        <input type="text" key="prescriber" bucket="data">
+                    </td>
+                    <td class="p-0">
+                        <textarea rows="1" key="value" bucket="childReviewData"></textarea>
+                    </td>
+                    <td class="p-0">
+                        <textarea rows="1" key="value" bucket="childPlanData"></textarea>
+                    </td>
+                    <td class="px-2 align-middle text-center text-nowrap">
+                        <a href="#" class="delete-line mr-2"><i class="fa fa-trash-alt text-danger on-hover-opaque"></i></a>
+                        <a href="#" class="add-line mr-2"><i class="fa fa-plus text-primary on-hover-opaque"></i></a>
+                    </td>
+                </tr>
+                </tbody>
+            </table>
+            <div class="d-flex align-items-center">
+                <button class="btn-save-lines btn btn-sm btn-primary mr-2">Save</button>
+                <button class="btn btn-sm btn-default border bg-white" onclick="closeStagPopup(); return false;">Close</button>
+            </div>
+        </form>
+    </div>
+</div>
+<script>
+    (function () {
+        function init() {
+
+            let parentSegment = $('#medications-add-multi-preexisting-{{$note->id}}');
+            parentSegment.find('input[stag-suggest][key="name"]')
+                .off('stag-suggest-selected')
+                .on('stag-suggest-selected', (_e, _input, _data) => {
+                    $(_input).closest('tr').find('input[key="routedMedId"]').val(_data.routed_med_id);
+                    $(_input).closest('tr').find('input[key="routedDosageFormMedId"]').val(_data.routed_dosage_form_med_id);
+                    $(_input).closest('tr').find('input[key="gcnSeqno"]').val(_data.gcn_seqno);
+                    $(_input).closest('tr').find('input[key="medId"]').val(_data.medid);
+                    return false;
+                });
+
+            function getRowBefore(_tr) {
+                return _tr.prev();
+            }
+
+            function moveToPrevRowInput(_td) {
+                let tr = getRowBefore(_td.closest('tr'));
+                tr.find('td:eq(' + _td.index() + ')').find('input, textarea').first().focus();
+            }
+
+            function getRowAfter(_tr) {
+                return _tr.next();
+            }
+
+            function getOrCreateRowAfter(_tr) {
+                let tr = getRowAfter(_tr);
+                if(!tr.length) {
+                    tr = newRow(_tr).insertAfter(_tr);
+                }
+                return tr;
+            }
+
+            function createRowAfter(_tr) {
+                return newRow(_tr).insertAfter(_tr);
+            }
+
+            function newRow(_tr) {
+                let newTr = _tr.clone(true);
+                newTr.find('input, textarea').val('');
+                newTr.find('textarea').attr('rows', 1);
+                newTr.find('[stag-suggest-initialized]').removeAttr('stag-suggest-initialized');
+                return newTr;
+            }
+
+            function createAndMoveToNextRowInput(_td) {
+                let tr = createRowAfter(_td.closest('tr'));
+                tr.find('td:eq(' + _td.index() + ')').find('input, textarea').first().focus();
+            }
+
+            function moveToNextRowInput(_td, _forceCreate = false) {
+                let tr = _forceCreate ? getOrCreateRowAfter(_td.closest('tr')) : getRowAfter(_td.closest('tr'));
+                if(tr.length) {
+                    tr.find('td:eq(' + _td.index() + ')').find('input, textarea').first().focus();
+                }
+            }
+
+            function moveToPrevInput(_td) {
+                _td.prev().find('input, textarea').first().focus();
+            }
+
+            function moveToNextInput(_td) {
+                _td.next().find('input, textarea').first().focus();
+            }
+
+            function generateData(_parentSegment) {
+                let lines = [];
+                _parentSegment.find('.stag-sheet tbody tr').each(function() {
+                    let line = {
+                        data: {},
+                        childReviewData: {},
+                        childPlanData: {}
+                    };
+                    $(this).find('input, textarea').each(function() {
+                        line[$(this).attr('bucket')][$(this).attr('key')] = this.value;
+                    });
+                    line.data = JSON.stringify(line.data);
+                    line.childReviewData = JSON.stringify(line.childReviewData);
+                    line.childPlanData = JSON.stringify(line.childPlanData);
+                    lines.push(line);
+                });
+                return JSON.stringify(lines);
+            }
+
+            parentSegment
+                .off('keydown', '.stag-sheet input, .stag-sheet textarea')
+                .on('keydown', '.stag-sheet input, .stag-sheet textarea', function(_e) {
+                    switch (_e.which) {
+                        case 13: // ENTER: If shift NOT pressed, move to next row same column
+                            if (!_e.shiftKey) {
+                                if($(this).closest('.stag-sheet').is('.allow-row-addition')) {
+                                    createAndMoveToNextRowInput($(this).closest('td'), );
+                                }
+                                else {
+                                    moveToNextRowInput($(this).closest('td'), false);
+                                }
+                                return false;
+                            }
+                            break;
+                        case 38: // UP: If caret already at 0, move up to prev row same column
+                            if (this.selectionStart === this.selectionEnd && this.selectionStart === 0) {
+                                moveToPrevRowInput($(this).closest('td'));
+                                return false;
+                            }
+                            break;
+                        case 40: // DOWN: If caret already at end, move down to next row same column
+                            if (this.selectionStart === this.selectionEnd && this.selectionStart === this.value.length) {
+                                moveToNextRowInput($(this).closest('td'));
+                                return false;
+                            }
+                            break;
+                        case 37: // LEFT: If caret already at 0, move left to prev column
+                            if (this.selectionStart === this.selectionEnd && this.selectionStart === 0) {
+                                moveToPrevInput($(this).closest('td'));
+                                return false;
+                            }
+                            break;
+                        case 39: // DOWN: If caret already at end, move right to next column
+                            if (this.selectionStart === this.selectionEnd && this.selectionStart === this.value.length) {
+                                moveToNextInput($(this).closest('td'));
+                                return false;
+                            }
+                            break;
+                        case 8: // BACKSPACE: If caret already at 0, move left to prev column
+                            break;
+                    }
+
+                });
+
+            parentSegment
+                .off('click.delete-line', '.stag-sheet .delete-line')
+                .on('click.delete-line', '.stag-sheet .delete-line', function() {
+                    let tr = $(this).closest('tr');
+                    let isFirst = (tr.index() === 0);
+                    if(isFirst) {
+                        newRow(tr).insertAfter(tr);
+                    }
+                    tr.remove();
+                    return false;
+                });
+
+            parentSegment
+                .off('click.add-line', '.stag-sheet .add-line')
+                .on('click.add-line', '.stag-sheet .add-line', function() {
+                    let tr = $(this).closest('tr');
+                    newRow(tr).insertAfter(tr);
+                    initStagSuggest();
+                    return false;
+                });
+
+            parentSegment
+                .off('click.btn-save-lines', '.btn-save-lines')
+                .on('click.btn-save-lines', '.btn-save-lines', function() {
+                    parentSegment.find('[name="dataJson"]').val(generateData(parentSegment));
+                    saveVisitForm(this, false, true);
+                    return false;
+                });
+
+            initStagSuggest();
+        }
+
+        addMCInitializer('medications-add-multi-preexisting-{{$note->id}}', init, '#medications-add-multi-preexisting-{{$note->id}}');
+    }).call(window);
+</script>

+ 10 - 0
resources/views/app/patient/medications-center.blade.php

@@ -302,6 +302,16 @@ if(!@$summaryView) {
                                         </div>
                                     </div>
                                 @endif
+                                <a class="ml-4"
+                                   native target="_blank"
+                                   open-in-stag-popup
+                                   popup-style="stag-popup-900 overflow-visible"
+                                   update-parent
+                                   title="Add Multiple Pre-existing"
+                                   mc-initer="medications-add-multi-preexisting-{{$note->id}}"
+                                   href="/medications-add-multi-preexisting/{{$note->uid}}">
+                                    Add Multiple Pre-existing
+                                </a>
                             </div>
                             <div class="mb-2">
                                 <label class="mb-0 font-weight-bold">Name</label>

+ 1 - 1
resources/views/app/patient/point-based-partials/allergies.blade.php

@@ -15,7 +15,7 @@ $allergies = \App\Models\Point::getPointsOfCategory($patient, "ALLERGY");
                update-parent
                mc-initer="allergies-center-{{$patient->coreNote->id}}"
                title="Allergies Center"
-               popup-style="wide overflow-visible"
+               popup-style="overflow-visible"
                href="/allergies-center/{{$patient->uid}}/{{$patient->coreNote->uid}}">
                 <i class="fa fa-bolt mr-1"></i>
                 <span>Manage</span>

+ 1 - 1
resources/views/app/patient/point-based-partials/care-team.blade.php

@@ -15,7 +15,7 @@ $careTeamMembers = \App\Models\Point::getPointsOfCategory($patient, "CARE_TEAM_M
                update-parent
                mc-initer="careteam-center-{{$patient->coreNote->id}}"
                title="Care Team Center"
-               popup-style="wide overflow-visible"
+               popup-style="overflow-visible"
                href="/careteam-center/{{$patient->uid}}/{{$patient->coreNote->uid}}">
                 <i class="fa fa-bolt mr-1"></i>
                 <span>Manage</span>

+ 1 - 1
resources/views/app/patient/point-based-partials/dx.blade.php

@@ -15,7 +15,7 @@ $problems = \App\Models\Point::getPointsOfCategory($patient, "PROBLEM");
                update-parent
                mc-initer="problems-center-{{$patient->coreNote->id}}"
                title="Problems Center"
-               popup-style="wide overflow-visible"
+               popup-style="overflow-visible"
                href="/problems-center/{{$patient->uid}}/{{$patient->coreNote->uid}}">
                 <i class="fa fa-bolt mr-1"></i>
                 <span>Manage</span>

+ 2 - 1
resources/views/app/patient/point-based-partials/fhx.blade.php

@@ -8,7 +8,8 @@
            class="c-pointer d-inline-flex align-items-center ml-3 text-decoration-none fhx-trigger"
            open-in-stag-popup="" update-parent=""
            mc-initer="history_family_{{$patient->id}}"
-           title="Family History" popup-style="wide overflow-visible"
+           title="Family History"
+           popup-style="overflow-visible"
            href="/chart-segment-view/{{$patient->uid}}/history_family/edit">
             <i class="fa fa-bolt mr-1"></i>
             <span>Manage</span>

+ 2 - 1
resources/views/app/patient/point-based-partials/pmhx.blade.php

@@ -8,7 +8,8 @@
            class="c-pointer d-inline-flex align-items-center ml-3 text-decoration-none pmhx-trigger"
            open-in-stag-popup="" update-parent=""
            mc-initer="past_medical_history_{{$patient->id}}"
-           title="Past Medical History" popup-style="wide overflow-visible"
+           title="Past Medical History"
+           popup-style="overflow-visible"
            href="/chart-segment-view/{{$patient->uid}}/past_medical_history/edit">
             <i class="fa fa-bolt mr-1"></i>
             <span>Manage</span>

+ 2 - 1
resources/views/app/patient/point-based-partials/shx.blade.php

@@ -8,7 +8,8 @@
            class="c-pointer d-inline-flex align-items-center ml-3 text-decoration-none shx-trigger"
            open-in-stag-popup="" update-parent=""
            mc-initer="history_surgical_{{$patient->id}}"
-           title="Surgical History" popup-style="wide overflow-visible"
+           title="Surgical History"
+           popup-style="overflow-visible"
            href="/chart-segment-view/{{$patient->uid}}/history_surgical/edit">
             <i class="fa fa-bolt mr-1"></i>
             <span>Manage</span>

+ 2 - 1
resources/views/app/patient/point-based-partials/sochx.blade.php

@@ -8,7 +8,8 @@
            class="c-pointer d-inline-flex align-items-center ml-3 text-decoration-none sochx-trigger"
            open-in-stag-popup="" update-parent=""
            mc-initer="history_social_{{$patient->id}}"
-           title="Social History" popup-style="wide overflow-visible"
+           title="Social History"
+           popup-style="overflow-visible"
            href="/chart-segment-view/{{$patient->uid}}/history_social/edit">
             <i class="fa fa-bolt mr-1"></i>
             <span>Manage</span>

+ 1 - 1
resources/views/app/patient/point-based-partials/supplements.blade.php

@@ -12,7 +12,7 @@ $supplements = \App\Models\Point::getPointsOfCategory($patient, "SUPPLEMENT");
                update-parent
                mc-initer="supplements-center-{{$patient->coreNote->id}}"
                title="Supplements Center"
-               popup-style="wide overflow-visible"
+               popup-style="overflow-visible"
                href="/supplements-center/{{$patient->uid}}/{{$patient->coreNote->uid}}">
                 <i class="fa fa-bolt mr-1"></i>
                 <span>Manage</span>

+ 37 - 0
resources/views/app/patient/segment-templates/_common_actions/toggle-relevance.blade.php

@@ -0,0 +1,37 @@
+let parentPopup = $('{{$container}}').closest('.stag-popup');
+if(parentPopup.length) {
+    <?php $rel = $point->relevanceToNote($note); ?>
+    parentPopup.find('.toggle-relevance-ui').remove();
+    let relUI = $('<div/>')
+        .addClass('toggle-relevance-ui border p-2 ml-4 mr-auto {{ !!$rel ? 'bg-aliceblue' : 'bg-light' }}')
+        .html('Relevant to visit: <b>{{ !!$rel ? 'Yes' : 'No' }}</b>');
+    let toggleBtn = $('<a/>')
+        .attr('href', '#')
+        .addClass('ml-2')
+        .text('Toggle')
+        .on('click', function() {
+            @if(!!$rel)
+            $.post('/api/visitPoint/undoMarkPointRelevantToNote', {
+                'uid': '{{$rel->uid}}'
+            }, _data => {
+                if(!hasResponseError(_data)) {
+                    refreshDynamicStagPopup();
+                    $('.visit-segment[data-segment-template-name="{{$segmentName}}"]').find('.refresh-segment').trigger('click');
+                }
+            }, 'json');
+            @else
+            $.post('/api/visitPoint/markPointRelevantToNote', {
+                'noteUid': '{{$note->uid}}',
+                'pointUid': '{{$point->uid}}'
+            }, _data => {
+                if(!hasResponseError(_data)) {
+                    refreshDynamicStagPopup();
+                    $('.visit-segment[data-segment-template-name="{{$segmentName}}"]').find('.refresh-segment').trigger('click');
+                }
+            }, 'json');
+            @endif
+            return false;
+        })
+        .appendTo(relUI);
+    relUI.insertAfter($('{{$container}}').closest('.stag-popup').find('.stag-popup-title>span').first());
+}

+ 3 - 0
resources/views/app/patient/segment-templates/history_family/edit.blade.php

@@ -420,6 +420,9 @@ if(!$contentData) {
                 }
             });
 
+            // if in popup (omega template), add provision to toggle relevance
+            @include('app.patient.segment-templates._common_actions.toggle-relevance', ['container' => '#edit-univ_history_family-container', 'segmentName' => 'omega_history_family'])
+
         }
 
         window.segmentInitializers.history_family = init;

+ 2 - 0
resources/views/app/patient/segment-templates/history_social/edit.blade.php

@@ -233,6 +233,8 @@ for ($i = 0; $i < count($fields); $i++) {
                 }
             });
 
+            // if in popup (omega template), add provision to toggle relevance
+            @include('app.patient.segment-templates._common_actions.toggle-relevance', ['container' => '#edit-univ_history_social-container', 'segmentName' => 'omega_history_social'])
         }
 
         window.segmentInitializers.history_social = init;

+ 3 - 0
resources/views/app/patient/segment-templates/history_surgical/edit.blade.php

@@ -234,6 +234,9 @@ for ($i = 0; $i < count($fields); $i++) {
                 }
             });
 
+            // if in popup (omega template), add provision to toggle relevance
+            @include('app.patient.segment-templates._common_actions.toggle-relevance', ['container' => '#edit-univ_history_surgical-container', 'segmentName' => 'omega_history_surgical'])
+
         }
 
         window.segmentInitializers.history_surgical = init;

+ 1 - 1
resources/views/app/patient/segment-templates/omega_allergies/summary.blade.php

@@ -25,7 +25,7 @@ $plural = 'Allergies';
     <?php $j = 0; foreach ($points as $point): $j++; ?>
 	<?php $rel = $point->relevanceToNote($note); ?>
         <tr>
-            <td class="width-40px px-2 {{ $rel ? ' text-info':'' }}">
+            <td class="width-40px pl-0 pr-2 {{ $rel ? ' text-info':'' }}">
                 @if($rel)
                     <?php $numRelevant++; ?>
                     {{ $j }}.*

+ 1 - 1
resources/views/app/patient/segment-templates/omega_care_team/summary.blade.php

@@ -16,7 +16,7 @@ $plural = 'Care team members';
     <?php $j = 0; foreach ($points as $point): $j++; ?>
         <?php $rel = $point->relevanceToNote($note); ?>
         <tr>
-            <td class="width-40px px-2 {{ $rel ? ' text-info':'' }}">
+            <td class="width-40px pl-0 pr-2 {{ $rel ? ' text-info':'' }}">
                 @if($rel)
                     <?php $numRelevant++; ?>
                     {{ $j }}.*

+ 1 - 1
resources/views/app/patient/segment-templates/omega_goals/summary.blade.php

@@ -16,7 +16,7 @@ $plural = 'Goals';
     <?php $j = 0; foreach ($points as $point): $j++; ?>
         <?php $rel = $point->relevanceToNote($note); ?>
         <tr>
-            <td class="width-40px px-2 {{ $rel ? ' text-info':'' }}">
+            <td class="width-40px pl-0 pr-2 {{ $rel ? ' text-info':'' }}">
                 @if($rel)
                     <?php $numRelevant++; ?>
                     {{ $j }}.*

+ 3 - 1
resources/views/app/patient/segment-templates/omega_history_family/summary.blade.php

@@ -17,7 +17,9 @@ $point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'FAMILY_HISTORY',
 
 $contentData = $parsed = false;
 
-if ($point->lastChildReview && $point->lastChildReview->data) {
+$rel = !!$point->relevanceToNote($note);
+
+if ($point->lastChildReview && $point->lastChildReview->data && ($rel || $point->lastChildReview->added_in_note_id === $note->id)) {
     $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
     $contentData = $parsed = $point->lastChildReview->data;
 }

+ 3 - 1
resources/views/app/patient/segment-templates/omega_history_past_medical/summary.blade.php

@@ -54,7 +54,9 @@ $point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'PAST_MEDICAL_HIST
 
 $contentData = $parsed = false;
 
-if ($point->lastChildReview && $point->lastChildReview->data) {
+$rel = !!$point->relevanceToNote($note);
+
+if ($point->lastChildReview && $point->lastChildReview->data && ($rel || $point->lastChildReview->added_in_note_id === $note->id)) {
     $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
     $contentData = $parsed = $point->lastChildReview->data;
 }

+ 3 - 1
resources/views/app/patient/segment-templates/omega_history_social/summary.blade.php

@@ -36,7 +36,9 @@ $point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'SOCIAL_HISTORY',
 
 $contentData = $parsed = false;
 
-if ($point->lastChildReview && $point->lastChildReview->data) {
+$rel = !!$point->relevanceToNote($note);
+
+if ($point->lastChildReview && $point->lastChildReview->data && ($rel || $point->lastChildReview->added_in_note_id === $note->id)) {
     $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
     $contentData = $parsed = $point->lastChildReview->data;
 

+ 3 - 1
resources/views/app/patient/segment-templates/omega_history_surgical/summary.blade.php

@@ -33,7 +33,9 @@ $point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'SURGICAL_HISTORY'
 
 $contentData = $parsed = false;
 
-if ($point->lastChildReview && $point->lastChildReview->data) {
+$rel = !!$point->relevanceToNote($note);
+
+if ($point->lastChildReview && $point->lastChildReview->data && ($rel || $point->lastChildReview->added_in_note_id === $note->id)) {
     $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
     $contentData = $parsed = $point->lastChildReview->data;
 

+ 1 - 1
resources/views/app/patient/segment-templates/omega_medications/summary.blade.php

@@ -21,7 +21,7 @@ $plural = 'Medications';
     <?php $j = 0; foreach ($points as $point): $j++; ?>
         <?php $rel = $point->relevanceToNote($note); ?>
 	<tr>
-		<td class="width-40px px-2 {{ $rel ? ' text-info':'' }}">
+		<td class="width-40px pl-0 pr-2 {{ $rel ? ' text-info':'' }}">
 			@if($rel)
 				<?php $numRelevant++; ?>
 				{{ $j }}.*

+ 1 - 1
resources/views/app/patient/segment-templates/omega_plan_allergies/summary.blade.php

@@ -30,7 +30,7 @@ $plural = 'Allergies';
         <?php if($plan && @($plan->data)) $plan->data = json_decode($plan->data); ?>
         <?php $numVisible++; ?>
         <tr>
-            <td class="width-40px px-2 {{ $rel ? 'font-weight-bold text-info':'' }}">
+            <td class="width-40px pl-0 pr-2 {{ $rel ? 'font-weight-bold text-info':'' }}">
                 @if($rel)
                     <?php $numRelevant++; ?>
                     {{ $j }}.*

+ 1 - 1
resources/views/app/patient/segment-templates/omega_plan_care_team/summary.blade.php

@@ -21,7 +21,7 @@ $plural = 'Care team members';
         <?php if($plan && @($plan->data)) $plan->data = json_decode($plan->data); ?>
         <?php $numVisible++; ?>
         <tr>
-            <td class="width-40px px-2 {{ $rel ? 'font-weight-bold text-info':'' }}">
+            <td class="width-40px pl-0 pr-2 {{ $rel ? 'font-weight-bold text-info':'' }}">
                 @if($rel)
                     <?php $numRelevant++; ?>
                     {{ $j }}.*

+ 1 - 1
resources/views/app/patient/segment-templates/omega_plan_goals/summary.blade.php

@@ -21,7 +21,7 @@ $plural = 'Goals';
         <?php if($plan && @($plan->data)) $plan->data = json_decode($plan->data); ?>
         <?php $numVisible++; ?>
         <tr>
-            <td class="width-40px px-2 {{ $rel ? 'font-weight-bold text-info':'' }}">
+            <td class="width-40px pl-0 pr-2 {{ $rel ? 'font-weight-bold text-info':'' }}">
                 @if($rel)
                     <?php $numRelevant++; ?>
                     {{ $j }}.*

+ 1 - 1
resources/views/app/patient/segment-templates/omega_plan_medications/summary.blade.php

@@ -26,7 +26,7 @@ $plural = 'Medications';
         <?php if($plan && @($plan->data)) $plan->data = json_decode($plan->data); ?>
         <?php $numVisible++; ?>
         <tr>
-            <td class="width-40px px-2 {{ $rel ? 'font-weight-bold text-info':'' }}">
+            <td class="width-40px pl-0 pr-2 {{ $rel ? 'font-weight-bold text-info':'' }}">
                 @if($rel)
                     <?php $numRelevant++; ?>
                     {{ $j }}.*

+ 1 - 1
resources/views/app/patient/segment-templates/omega_plan_problems/summary.blade.php

@@ -21,7 +21,7 @@ $plural = 'Problems';
         <?php if($plan && @($plan->data)) $plan->data = json_decode($plan->data); ?>
         <?php $numVisible++; ?>
         <tr>
-            <td class="width-40px px-2 {{ $rel ? 'font-weight-bold text-info':'' }}">
+            <td class="width-40px pl-0 pr-2 {{ $rel ? 'font-weight-bold text-info':'' }}">
                 @if($rel)
                     <?php $numRelevant++; ?>
                     {{ $j }}.*

+ 1 - 1
resources/views/app/patient/segment-templates/omega_problems/summary.blade.php

@@ -16,7 +16,7 @@ $plural = 'Problems';
     <?php $j = 0; foreach ($points as $point): $j++; ?>
         <?php $rel = $point->relevanceToNote($note); ?>
        <tr>
-            <td class="width-40px px-2 {{ $rel ? ' text-info':'' }}">
+            <td class="width-40px pl-0 pr-2 {{ $rel ? ' text-info':'' }}">
                 @if($rel)
                     <?php $numRelevant++; ?>
                     {{ $j }}.*

+ 3 - 0
resources/views/app/patient/segment-templates/omega_ros/edit.blade.php

@@ -403,6 +403,9 @@ for ($i = 0; $i < count($fields); $i++) {
                 }
             });
 
+            // if in popup (omega template), add provision to toggle relevance
+            @include('app.patient.segment-templates._common_actions.toggle-relevance', ['container' => '#edit-ros-container', 'segmentName' => 'omega_ros'])
+
         }
 
         window.segmentInitializers.omega_ros = initROS;

+ 3 - 1
resources/views/app/patient/segment-templates/omega_ros/summary.blade.php

@@ -192,7 +192,9 @@ $fields = [
 
 $point = Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'ROS', $sessionKey, true);
 
-if ($point->lastChildReview && $point->lastChildReview->data) {
+$rel = !!$point->relevanceToNote($note);
+
+if ($point->lastChildReview && $point->lastChildReview->data && ($rel || $point->lastChildReview->added_in_note_id === $note->id)) {
     $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
     $contentData = $point->lastChildReview->data;
 

+ 23 - 18
resources/views/app/patient/segment-templates/omega_vitals/edit.blade.php

@@ -1,10 +1,8 @@
 <?php
-
-use App\Models\Point;
-
-$category = 'VITALS';
-$endPoint = 'upsertNoteSingleton';
-
+if(!@$sessionKey) {
+    $sessionKey = request()->cookie('sessionKey');
+}
+$point = App\Models\Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'VITALS', $sessionKey, true);
 $vitalLabels = [
     "heightInInches" => "Ht. (in.)",
     "weightPounds" => "Wt. (lbs.)",
@@ -17,11 +15,10 @@ $vitalLabels = [
     "pulseOx" => "Pulse Ox.",
     "smokingStatus" => "Smoking Status",
 ];
-
-$point = Point::where('added_in_note_id', $note->id)->where('category', $category)->orderBy('id', 'DESC')->first();
 $contentData = null;
-if (!!@$point->data) {
-    $contentData = json_decode($point->data, true);
+if ($point->lastChildReview && $point->lastChildReview->note->id === $note->id && $point->lastChildReview->data) {
+    $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
+    $contentData = $point->lastChildReview->data;
 }
 
 if(!$contentData) {
@@ -47,9 +44,11 @@ if(!$contentData) {
     }
 }
 
-$previousVitals = Point::where('client_id', $patient->id)
-    ->where('added_in_note_id', '<>', $note->id)
-    ->where('category', $category)
+$previousVitals = [];
+
+$previousVitals = \App\Models\Point::where('parent_point_id', $point->id)
+    ->where('category', 'REVIEW')
+    ->where('added_in_note_id', '!=', $note->id)
     ->orderBy('id', 'DESC')
     ->limit(4)
     ->get();
@@ -72,7 +71,7 @@ foreach ($previousVitals as $p) {
                 $newFormat[$k] = '';
             }
         }
-        $newFormat['date'] = $p->note->effective_dateest;
+        $newFormat['date'] = $p->note->effective_dateest; // unfriendly_date($p->created_at);
         $previousData[] = $newFormat;
         $previousDataAssoc[$newFormat['date']] = $newFormat; // for easy iter to cols
     }
@@ -80,11 +79,17 @@ foreach ($previousVitals as $p) {
 
 $copyTriggerAdded = [];
 
+if(!@$segment) {
+    $segment = $note->coreSegment;
+}
+
 ?>
 <div visit-moe close-on-save close-on-cancel class="d-block">
-    <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="category" value="VITALS">
         <input type="hidden" name="data" value="{{json_encode($contentData)}}">
 
         <table class="table table-sm table-bordered mb-2 table-edit-sheet">
@@ -238,8 +243,8 @@ $copyTriggerAdded = [];
     </form>
 </div>
 <script>
-    window.segmentInitializers.<?= $segment->segmentTemplate->internal_name ?> = function () {
-        let parentSegment = $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] ');
+    window.segmentInitializers.omega_vitals = function () {
+        let parentSegment = $('[data-segment-template-name="omega_vitals"] ');
 
         function __refreshBMI() {
             var height = parseInt(parentSegment.find('[data-name="heightInInches"]').val());

+ 7 - 10
resources/views/app/patient/segment-templates/omega_vitals/summary.blade.php

@@ -1,10 +1,8 @@
 <?php
-
-use App\Models\Point;
-
-$category = 'VITALS';
-$endPoint = 'upsertNoteSingleton';
-
+if(!@$sessionKey) {
+    $sessionKey = request()->cookie('sessionKey');
+}
+$point = App\Models\Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'VITALS', $sessionKey, true);
 $vitalLabels = [
     "heightInInches" => "Ht. (in.)",
     "weightPounds" => "Wt. (lbs.)",
@@ -17,11 +15,10 @@ $vitalLabels = [
     "pulseOx" => "Pulse Ox.",
     "smokingStatus" => "Smoking Status",
 ];
-
-$point = Point::where('added_in_note_id', $note->id)->where('category', $category)->orderBy('id', 'DESC')->first();
 $contentData = null;
-if (!!@$point->data) {
-    $contentData = json_decode($point->data, true);
+if ($point->lastChildReview && $point->lastChildReview->note->id === $note->id && $point->lastChildReview->data) {
+    $point->lastChildReview->data = json_decode($point->lastChildReview->data, true);
+    $contentData = $point->lastChildReview->data;
 }
 
 if(!$contentData) {

+ 3 - 0
resources/views/app/patient/segment-templates/past_medical_history/edit.blade.php

@@ -275,6 +275,9 @@ for ($i = 0; $i < count($fields); $i++) {
 
             window.segmentInitializers.past_medical_history = function() {};
 
+            // if in popup (omega template), add provision to toggle relevance
+            @include('app.patient.segment-templates._common_actions.toggle-relevance', ['container' => '#edit-univ_history_past_medical-container', 'segmentName' => 'omega_history_past_medical'])
+
         }
 
         window.segmentInitializers.past_medical_history = init;

+ 152 - 171
resources/views/app/patient/segment-templates/typical_day_lifestyle/edit.blade.php

@@ -31,7 +31,7 @@ if ($point->lastChildReview && $point->lastChildReview->data) {
 }
 ?>
 
-<div visit-moe no-auto-save close-on-save close-on-cancel class="d-block p-3">
+<div visit-moe no-auto-save close-on-save close-on-cancel class="d-block p-3" id="typical_day_lifestyle-{{$note->id}}">
     <form show url="/api/visitPoint/upsertChildReview" class="mcp-theme-1 frm-upsert-review-typical-day-ls">
         <input type="hidden" name="uid" value="<?= $point->uid ?>">
         <input type="hidden" name="noteUid" value="<?= $note->uid ?>">
@@ -107,201 +107,182 @@ if ($point->lastChildReview && $point->lastChildReview->data) {
         </div>
     </form>
 </div>
-<style>
-    .stag-sheet tbody tr td {
-        padding: 0;
-        background: #fff;
-    }
-    .stag-sheet tbody tr td textarea {
-        border: 1px solid transparent;
-        resize: none;
-        width: 100%;
-        outline: none;
-        margin: 0;
-        display: block;
-        padding: 3px;
-        min-height: 28px;
-    }
-    .stag-sheet tbody tr td textarea {
-        overflow: hidden;
-    }
-    .stag-sheet tbody tr td textarea:focus,
-    .stag-sheet tbody tr td textarea:focus-visible {
-        border: 1px solid steelblue;
-    }
-</style>
 <script>
-    window.segmentInitializers.<?= $segment->segmentTemplate->internal_name ?> = function () {
-        let parentSegment = $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] ');
+    (function() {
+        function init() {
+            let parentSegment = $('[data-segment-template-name="typical_day_lifestyle"] ');
 
-        function getRowBefore(_tr) {
-            return _tr.prev();
-        }
-
-        function moveToPrevRowInput(_td) {
-            let tr = getRowBefore(_td.closest('tr'));
-            tr.find('td:eq(' + _td.index() + ') textarea').first().focus();
-        }
+            function getRowBefore(_tr) {
+                return _tr.prev();
+            }
 
-        function getRowAfter(_tr) {
-            return _tr.next();
-        }
+            function moveToPrevRowInput(_td) {
+                let tr = getRowBefore(_td.closest('tr'));
+                tr.find('td:eq(' + _td.index() + ') textarea').first().focus();
+            }
 
-        function getOrCreateRowAfter(_tr) {
-            let tr = getRowAfter(_tr);
-            if(!tr.length) {
-                tr = newRow().insertAfter(_tr);
+            function getRowAfter(_tr) {
+                return _tr.next();
             }
-            return tr;
-        }
 
-        function createRowAfter(_tr) {
-            return newRow().insertAfter(_tr);
-        }
+            function getOrCreateRowAfter(_tr) {
+                let tr = getRowAfter(_tr);
+                if(!tr.length) {
+                    tr = newRow().insertAfter(_tr);
+                }
+                return tr;
+            }
 
-        function newRow() {
-            return $('<tr><td class="align-middle text-center bg-light"><a href="#" class="delete-line"><i class="fa fa-trash-alt on-hover-opaque text-danger"></i></a></td>' +
-                '<td><textarea rows="1" key="S"></textarea></td>' +
-                '<td><textarea rows="1" key="I"></textarea></td>' +
-                '<td><textarea rows="1" key="P"></textarea></td></tr>');
-        }
+            function createRowAfter(_tr) {
+                return newRow().insertAfter(_tr);
+            }
 
-        function createAndMoveToNextRowInput(_td) {
-            let tr = createRowAfter(_td.closest('tr'));
-            tr.find('td:eq(' + _td.index() + ') textarea').first().focus();
-        }
+            function newRow() {
+                return $('<tr><td class="align-middle text-center bg-light"><a href="#" class="delete-line"><i class="fa fa-trash-alt on-hover-opaque text-danger"></i></a></td>' +
+                    '<td><textarea rows="1" key="S"></textarea></td>' +
+                    '<td><textarea rows="1" key="I"></textarea></td>' +
+                    '<td><textarea rows="1" key="P"></textarea></td></tr>');
+            }
 
-        function moveToNextRowInput(_td, _forceCreate = false) {
-            let tr = _forceCreate ? getOrCreateRowAfter(_td.closest('tr')) : getRowAfter(_td.closest('tr'));
-            if(tr.length) {
+            function createAndMoveToNextRowInput(_td) {
+                let tr = createRowAfter(_td.closest('tr'));
                 tr.find('td:eq(' + _td.index() + ') textarea').first().focus();
             }
-        }
 
-        function moveToPrevInput(_td) {
-            _td.prev().find('textarea').first().focus();
-        }
+            function moveToNextRowInput(_td, _forceCreate = false) {
+                let tr = _forceCreate ? getOrCreateRowAfter(_td.closest('tr')) : getRowAfter(_td.closest('tr'));
+                if(tr.length) {
+                    tr.find('td:eq(' + _td.index() + ') textarea').first().focus();
+                }
+            }
 
-        function moveToNextInput(_td) {
-            _td.next().find('textarea').first().focus();
-        }
+            function moveToPrevInput(_td) {
+                _td.prev().find('textarea').first().focus();
+            }
+
+            function moveToNextInput(_td) {
+                _td.next().find('textarea').first().focus();
+            }
 
-        function generateData(_parentSegment) {
-            let data = {};
-            let lines = [];
-            _parentSegment.find('.stag-sheet[lines] tbody tr').each(function() {
-                let line = {};
-                $(this).find('textarea').each(function() {
-                    line[$(this).attr('key')] = this.value;
+            function generateData(_parentSegment) {
+                let data = {};
+                let lines = [];
+                _parentSegment.find('.stag-sheet[lines] tbody tr').each(function() {
+                    let line = {};
+                    $(this).find('textarea').each(function() {
+                        line[$(this).attr('key')] = this.value;
+                    });
+                    lines.push(line);
                 });
-                lines.push(line);
-            });
-            data.lines = lines;
-            data.estimated_daily_calories = {
-                S: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_calories->S"]').val(),
-                P: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_calories->P"]').val()
-            };
-            data.estimated_daily_protein_grams = {
-                S: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_protein_grams->S"]').val(),
-                P: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_protein_grams->P"]').val()
-            };
-            data.estimated_daily_vegetable_servings = {
-                S: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_vegetable_servings->S"]').val(),
-                P: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_vegetable_servings->P"]').val()
-            };
-            data.estimated_daily_hours_of_sleep = {
-                S: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_hours_of_sleep->S"]').val(),
-                P: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_hours_of_sleep->P"]').val()
-            };
-            return JSON.stringify(data);
-        }
+                data.lines = lines;
+                data.estimated_daily_calories = {
+                    S: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_calories->S"]').val(),
+                    P: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_calories->P"]').val()
+                };
+                data.estimated_daily_protein_grams = {
+                    S: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_protein_grams->S"]').val(),
+                    P: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_protein_grams->P"]').val()
+                };
+                data.estimated_daily_vegetable_servings = {
+                    S: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_vegetable_servings->S"]').val(),
+                    P: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_vegetable_servings->P"]').val()
+                };
+                data.estimated_daily_hours_of_sleep = {
+                    S: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_hours_of_sleep->S"]').val(),
+                    P: _parentSegment.find('.stag-sheet[aggregates] textarea[key="estimated_daily_hours_of_sleep->P"]').val()
+                };
+                return JSON.stringify(data);
+            }
 
-        function autoSave() {
-            parentSegment.find('[name="data"]').val(generateData(parentSegment));
-            parentSegment.find('[name="data"]').trigger('save-trigger');
-        }
+            function autoSave() {
+                parentSegment.find('[name="data"]').val(generateData(parentSegment));
+                parentSegment.find('[name="data"]').trigger('save-trigger');
+            }
 
-        function autoGrowTextarea(_textarea) {
-            _textarea.style.minHeight = "100%";
-            _textarea.style.height = "calc(1.5em + .5rem + 2px)";
-            _textarea.style.height = (_textarea.scrollHeight)+"px";
-        }
+            function autoGrowTextarea(_textarea) {
+                _textarea.style.minHeight = "100%";
+                _textarea.style.height = "calc(1.5em + .5rem + 2px)";
+                _textarea.style.height = (_textarea.scrollHeight)+"px";
+            }
 
-        parentSegment
-            .off('keydown', '.stag-sheet textarea')
-            .on('keydown', '.stag-sheet textarea', function(_e) {
-                switch (_e.which) {
-                    case 13: // ENTER: If shift NOT pressed, move to next row same column
-                        if (!_e.shiftKey) {
-                            if($(this).closest('.stag-sheet').is('.allow-row-addition')) {
-                                createAndMoveToNextRowInput($(this).closest('td'), );
+            parentSegment
+                .off('keydown', '.stag-sheet textarea')
+                .on('keydown', '.stag-sheet textarea', function(_e) {
+                    switch (_e.which) {
+                        case 13: // ENTER: If shift NOT pressed, move to next row same column
+                            if (!_e.shiftKey) {
+                                if($(this).closest('.stag-sheet').is('.allow-row-addition')) {
+                                    createAndMoveToNextRowInput($(this).closest('td'), );
+                                }
+                                else {
+                                    moveToNextRowInput($(this).closest('td'), false);
+                                }
+                                return false;
                             }
-                            else {
-                                moveToNextRowInput($(this).closest('td'), false);
+                            break;
+                        case 38: // UP: If caret already at 0, move up to prev row same column
+                            if (this.selectionStart === this.selectionEnd && this.selectionStart === 0) {
+                                moveToPrevRowInput($(this).closest('td'));
+                                return false;
                             }
-                            return false;
-                        }
-                        break;
-                    case 38: // UP: If caret already at 0, move up to prev row same column
-                        if (this.selectionStart === this.selectionEnd && this.selectionStart === 0) {
-                            moveToPrevRowInput($(this).closest('td'));
-                            return false;
-                        }
-                        break;
-                    case 40: // DOWN: If caret already at end, move down to next row same column
-                        if (this.selectionStart === this.selectionEnd && this.selectionStart === this.value.length) {
-                            moveToNextRowInput($(this).closest('td'));
-                            return false;
-                        }
-                        break;
-                    case 37: // LEFT: If caret already at 0, move left to prev column
-                        if (this.selectionStart === this.selectionEnd && this.selectionStart === 0) {
-                            moveToPrevInput($(this).closest('td'));
-                            return false;
-                        }
-                        break;
-                    case 39: // DOWN: If caret already at end, move right to next column
-                        if (this.selectionStart === this.selectionEnd && this.selectionStart === this.value.length) {
-                            moveToNextInput($(this).closest('td'));
-                            return false;
-                        }
-                        break;
-                    case 8: // BACKSPACE: If caret already at 0, move left to prev column
-                        break;
-                }
+                            break;
+                        case 40: // DOWN: If caret already at end, move down to next row same column
+                            if (this.selectionStart === this.selectionEnd && this.selectionStart === this.value.length) {
+                                moveToNextRowInput($(this).closest('td'));
+                                return false;
+                            }
+                            break;
+                        case 37: // LEFT: If caret already at 0, move left to prev column
+                            if (this.selectionStart === this.selectionEnd && this.selectionStart === 0) {
+                                moveToPrevInput($(this).closest('td'));
+                                return false;
+                            }
+                            break;
+                        case 39: // DOWN: If caret already at end, move right to next column
+                            if (this.selectionStart === this.selectionEnd && this.selectionStart === this.value.length) {
+                                moveToNextInput($(this).closest('td'));
+                                return false;
+                            }
+                            break;
+                        case 8: // BACKSPACE: If caret already at 0, move left to prev column
+                            break;
+                    }
 
-            });
+                });
 
-        parentSegment
-            .off('input paste cut change', '.stag-sheet textarea')
-            .on('input paste cut change', '.stag-sheet textarea', function() {
-                autoSave();
-            });
+            parentSegment
+                .off('input paste cut change', '.stag-sheet textarea')
+                .on('input paste cut change', '.stag-sheet textarea', function() {
+                    autoSave();
+                });
 
-        parentSegment
-            .off('click.delete-line', '.stag-sheet .delete-line')
-            .on('click.delete-line', '.stag-sheet .delete-line', function() {
-                let tr = $(this).closest('tr');
-                let isFirst = (tr.index() === 0);
-                if(isFirst) {
-                    newRow().insertAfter(tr);
-                }
-                tr.remove();
-                autoSave();
-                return false;
-            });
+            parentSegment
+                .off('click.delete-line', '.stag-sheet .delete-line')
+                .on('click.delete-line', '.stag-sheet .delete-line', function() {
+                    let tr = $(this).closest('tr');
+                    let isFirst = (tr.index() === 0);
+                    if(isFirst) {
+                        newRow().insertAfter(tr);
+                    }
+                    tr.remove();
+                    autoSave();
+                    return false;
+                });
 
-        parentSegment.find('.stag-sheet textarea').each(function() {
-            autoGrowTextarea(this);
-        });
+            parentSegment.find('.stag-sheet textarea').each(function() {
+                autoGrowTextarea(this);
+            });
 
-        parentSegment
-            .off('edit-mode-activated')
-            .on('edit-mode-activated', function() {
-                parentSegment.find('.stag-sheet textarea').each(function() {
-                    autoGrowTextarea(this);
+            parentSegment
+                .off('edit-mode-activated')
+                .on('edit-mode-activated', function() {
+                    parentSegment.find('.stag-sheet textarea').each(function() {
+                        autoGrowTextarea(this);
+                    });
                 });
-            });
 
-    };
+        }
+        window.segmentInitializers.typical_day_lifestyle = init;
+        addMCInitializer('typical_day_lifestyle-{{$note->id}}', init, '#typical_day_lifestyle-{{$note->id}}');
+    }).call(window);
 </script>

+ 3 - 0
resources/views/app/patient/segment-templates/typical_day_lifestyle/summary.blade.php

@@ -1,4 +1,7 @@
 <?php
+if(!@$sessionKey) {
+    $sessionKey = request()->cookie('sessionKey');
+}
 $point = App\Models\Point::getOrCreateOnlyTopLevelPointOfCategory($note, 'TYPICAL_DAY_LIFESTYLE', $sessionKey, true);
 $contentData = [
     "lines" => [

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

@@ -1,5 +1,5 @@
 <div id="createVisitTemplateSegmentTemplate{{@$position}}" class="d-inline">
-	<div moe relative>
+	<div moe large relative>
 		<a class="" href="" show start>+ Create</a>
 		<form url="/api/visitTemplateSegmentTemplate/create" right>
 			<div id="createVisitTemplateSegmentTemplate{{@$position}}Component{{@$position}}" v-cloak>

+ 224 - 213
resources/views/layouts/patient.blade.php

@@ -390,7 +390,7 @@ $isOldClient = (date_diff(date_create(config('app.point_impl_date')), date_creat
 											<i class="fa fa-video"></i>
 										</div>
 									</div>--}}
-									<section>
+									<section class="align-self-start mt-2">
 										<div class="hbox">
 											<h4 class="pt-name">{{$patientName}}</h4>
 											<div class="screen-only mr-1 patient-presence-indicator thumbnail {{$online}}"
@@ -466,95 +466,6 @@ $isOldClient = (date_diff(date_create(config('app.point_impl_date')), date_creat
 											</div>
 										</div>
 										<div class="screen-only">
-											<div class=separators>
-												<div>
-													<label>MCP:</label> {{$mcpName}}
-													@if($patient->has_mcp_done_onboarding_visit !== 'YES' && $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/putMcp" class="mcp-theme-1">
-																<input type="hidden" name="uid" value="{{$patient->uid}}">
-																<div class="mb-2">
-																	<label class="text-secondary text-sm">MCP Pro</label>
-																	<select name="mcpProUid" provider-search data-pro-uid="{{ @$patient->mcp->uid }}"
-																			class="form-control form-control-sm">
-																		<option value=""> --select--</option>
-																		@foreach($pros as $iPro)
-																			<option
-																				value="{{$iPro->uid}}" {{ $patient->mcp && $iPro->uid === $patient->mcp->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->mcp)
-															<div moe class="ml-2 hide-inside-popup">
-																<a start show><i class="fa fa-times"></i></a>
-																<form url="/api/client/removeMcp" class="mcp-theme-1">
-																	<input type="hidden" name="uid" value="{{$patient->uid}}">
-																	<div class="mb-2">
-																		<label class="text-secondary text-sm">Remove MCP Pro</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>
-												@if($patient->mcp && $patient->mcp->id === $pro->id || $pro->pro_type == 'ADMIN')
-													<div>
-														<label>Status (mcp):</label>
-														<b>{!! $patient->mcpEngagementAssessmentStatus && $patient->mcpEngagementAssessmentStatus->status_category ? ucwords(strtolower(str_replace('_', ' ', $patient->mcpEngagementAssessmentStatus->status_category))) : '<span class="text-danger">Not Set</span>'  !!}</b>
-														<div moe class="ml-2">
-															<a start show><i class="fa fa-edit"></i></a>
-															<form url="/api/client/updateMcpEngagementAssessmentStatus" class="mcp-theme-1">
-																<input type="hidden" name="uid" value="{{$patient->uid}}">
-																<div class="mb-2">
-																	<label class="text-sm text-secondary mb-1">Category </label>
-																	<select name="category" class="form-control form-control-sm">
-																		<option value="NULL">--</option>
-																		<option value="ACTIVE">ACTIVE</option>
-																		<option value="INACTIVE">INACTIVE</option>
-																		<option value="ENTRY_ERROR">ENTRY_ERROR</option>
-																		<option value="DUMMY">DUMMY</option>
-																		<option value="DECEASED">DECEASED</option>
-																		<option value="DUPLICATE">DUPLICATE</option>
-																		<option value="NO_LONGER_INTERESTED">NO_LONGER_INTERESTED</option>
-																		<option value="BAD_RECORD">BAD_RECORD</option>
-																	</select>
-																</div>
-																<div class="mb-2">
-																	<label class="text-sm text-secondary mb-1">Memo</label>
-																	<input type="text" name="memo" class="form-control form-control-sm">
-																</div>
-																<div class="mb-2">
-																	<label class="text-sm text-secondary mb-1">Detail</label>
-																	<input type="text" name="detail" class="form-control form-control-sm">
-																</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>
-													</div>
-												@endif
-											</div>
 											<div>
 												<div>
 													@if($patient->has_mcp_done_onboarding_visit !== 'YES')
@@ -623,126 +534,11 @@ $isOldClient = (date_diff(date_create(config('app.point_impl_date')), date_creat
 												</div>
 											</div>
 
-											<div class="separators">
-												<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>
-												@if($patient->defaultNaPro && $patient->defaultNaPro->id === $pro->id || $pro->pro_type == 'ADMIN')
-													<div>
-														<label>Status (cc):</label>
-														<b>{!! $patient->defaultNaEngagementAssessmentStatus && $patient->defaultNaEngagementAssessmentStatus->status_category ? ucwords(strtolower(str_replace('_', ' ', $patient->defaultNaEngagementAssessmentStatus->status_category))) : '<span class="text-danger">Not Set</span>'  !!}</b>
-														<div moe class="ml-2">
-															<a start show><i class="fa fa-edit"></i></a>
-															<form url="/api/client/updateDefaultNaEngagementAssessmentStatus" class="mcp-theme-1">
-																<input type="hidden" name="uid" value="{{$patient->uid}}">
-																<div class="mb-2">
-																	<label class="text-sm text-secondary mb-1">Category </label>
-																	<select name="category" class="form-control form-control-sm">
-																		<option value="NULL">--</option>
-																		<option value="ACTIVE">ACTIVE</option>
-																		<option value="INACTIVE">INACTIVE</option>
-																		<option value="ENTRY_ERROR">ENTRY_ERROR</option>
-																		<option value="DUMMY">DUMMY</option>
-																		<option value="DECEASED">DECEASED</option>
-																		<option value="DUPLICATE">DUPLICATE</option>
-																		<option value="NO_LONGER_INTERESTED">NO_LONGER_INTERESTED</option>
-																		<option value="BAD_RECORD">BAD_RECORD</option>
-																	</select>
-																</div>
-																<div class="mb-2">
-																	<label class="text-sm text-secondary mb-1">Memo</label>
-																	<input type="text" name="memo" class="form-control form-control-sm">
-																</div>
-																<div class="mb-2">
-																	<label class="text-sm text-secondary mb-1">Detail</label>
-																	<input type="text" name="detail" class="form-control form-control-sm">
-																</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>
-													</div>
-												@endif
-											</div>
-
-											<div class="separators">
-												<?php $currentCareMonth = $patient->currentCareMonth(); ?>
-												@if($currentCareMonth && $pro->id === $currentCareMonth->mcp_pro_id)
-													<div class="">
-														<?php $spoken = $currentCareMonth->has_anyone_interacted_with_client_about_rm_outside_note; ?>
-														<span class="">Communicated this month:</span>
-														<b class="{{$spoken ? 'text-success' : ''}}">
-															{{$spoken ? 'Yes' : 'No'}}
-															@if(!$spoken)
-																<i class="fa fa-exclamation-triangle"></i>
-															@else
-																<i class="fa fa-check"></i>
-															@endif
-														</b>
-														@if($currentCareMonth->mcp && $pro->id === $currentCareMonth->mcp->id)
-															<div moe relative class="ml-1">
-																<a href="#" start show class="text-sm"><i class="fa fa-edit"></i></a>
-																<form url="/api/careMonth/setHasAnyoneInteractedWithClientAboutRmOutsideNoteTo{{$spoken ? 'False' : 'True'}}" right>
-																	<input type="hidden" name="uid" value="{{$currentCareMonth->uid}}">
-																	<p>Set to {{$spoken ? 'No' : 'Yes'}}?</p>
-																	<div class="d-flex align-items-center">
-																		<button class="btn btn-sm btn-primary mr-2" submit>Save</button>
-																		<button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-																	</div>
-																</form>
-															</div>
-														@endif
-													</div>
-												@endif
+											<div class="">
 												@if($patient->mcp && $patient->mcp->id === $pro->id || $pro->pro_type == 'ADMIN')
 													<div>
 														<label>Follow-up Freq (days):</label>
-														<b>{!! is_null($patient->mcp_usual_follow_up_frequency_in_days) ? '<span class="text-danger">Not Set</span>' : $patient->mcp_usual_follow_up_frequency_in_days !!}</b>
+														<span>{!! is_null($patient->mcp_usual_follow_up_frequency_in_days) ? '<span class="text-danger">Not Set</span>' : $patient->mcp_usual_follow_up_frequency_in_days !!}</span>
 														<div moe relative class="ml-2">
 															<a href="#" start show class="text-sm"><i class="fa fa-edit"></i></a>
 															<form url="/api/client/putMcpUsualFollowUpFrequencyInDays">
@@ -763,6 +559,11 @@ $isOldClient = (date_diff(date_create(config('app.point_impl_date')), date_creat
 
 
                                         </div>
+										@if(!$patient->getPrimaryCoverage() || $patient->getPrimaryCoverageStatus() !== 'YES')
+											<div class="mt-2">
+												@include('app.patient.coverage-status')
+											</div>
+										@endif
                                     </section>
                                     <section class="hide-inside-popup screen-only vbox mt-2 align-self-start ml-3 pl-3 border-left mcp-theme-1">
                                         <div>
@@ -827,15 +628,225 @@ $isOldClient = (date_diff(date_create(config('app.point_impl_date')), date_creat
 											<a href="#" start show class="d-flex align-items-baseline" onclick="return openInRHS('/pro/meet/{{ $patient->uid }}')"><i class="fa fa-video text-sm mr-1"></i><span>Join</span></a>
 										</div>
                                     </section>
-									@if(!$patient->getPrimaryCoverage() || $patient->getPrimaryCoverageStatus() !== 'YES')
-									<section class="hide-inside-popup screen-only vbox align-self-start mt-2 mx-2">
-											@include('app.patient.coverage-status')
+									<section class="screen-only vbox align-self-start mt-2 mx-2 border-left pl-2">
+										<div>
+											<label>MCP:</label> {{$mcpName}}
+											@if($patient->has_mcp_done_onboarding_visit !== 'YES' && $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/putMcp" class="mcp-theme-1">
+														<input type="hidden" name="uid" value="{{$patient->uid}}">
+														<div class="mb-2">
+															<label class="text-secondary text-sm">MCP Pro</label>
+															<select name="mcpProUid" provider-search data-pro-uid="{{ @$patient->mcp->uid }}"
+																	class="form-control form-control-sm">
+																<option value=""> --select--</option>
+																@foreach($pros as $iPro)
+																	<option
+																			value="{{$iPro->uid}}" {{ $patient->mcp && $iPro->uid === $patient->mcp->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->mcp)
+													<div moe class="ml-2 hide-inside-popup">
+														<a start show><i class="fa fa-times"></i></a>
+														<form url="/api/client/removeMcp" class="mcp-theme-1">
+															<input type="hidden" name="uid" value="{{$patient->uid}}">
+															<div class="mb-2">
+																<label class="text-secondary text-sm">Remove MCP Pro</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>
+										@if($patient->mcp && $patient->mcp->id === $pro->id || $pro->pro_type == 'ADMIN')
+												<div>
+													<label>Status (mcp):</label>
+													<span>{!! $patient->mcpEngagementAssessmentStatus && $patient->mcpEngagementAssessmentStatus->status_category ? ucwords(strtolower(str_replace('_', ' ', $patient->mcpEngagementAssessmentStatus->status_category))) : '<span class="text-danger">Not Set</span>'  !!}</span>
+													<div moe class="ml-2">
+														<a start show><i class="fa fa-edit"></i></a>
+														<form url="/api/client/updateMcpEngagementAssessmentStatus" class="mcp-theme-1">
+															<input type="hidden" name="uid" value="{{$patient->uid}}">
+															<div class="mb-2">
+																<label class="text-sm text-secondary mb-1">Category </label>
+																<select name="category" class="form-control form-control-sm">
+																	<option value="NULL">--</option>
+																	<option value="ACTIVE">ACTIVE</option>
+																	<option value="INACTIVE">INACTIVE</option>
+																	<option value="ENTRY_ERROR">ENTRY_ERROR</option>
+																	<option value="DUMMY">DUMMY</option>
+																	<option value="DECEASED">DECEASED</option>
+																	<option value="DUPLICATE">DUPLICATE</option>
+																	<option value="NO_LONGER_INTERESTED">NO_LONGER_INTERESTED</option>
+																	<option value="BAD_RECORD">BAD_RECORD</option>
+																</select>
+															</div>
+															<div class="mb-2">
+																<label class="text-sm text-secondary mb-1">Memo</label>
+																<input type="text" name="memo" class="form-control form-control-sm">
+															</div>
+															<div class="mb-2">
+																<label class="text-sm text-secondary mb-1">Detail</label>
+																<input type="text" name="detail" class="form-control form-control-sm">
+															</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>
+												</div>
+											@endif
+										<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>
+										@if($patient->defaultNaPro && $patient->defaultNaPro->id === $pro->id || $pro->pro_type == 'ADMIN')
+											<div>
+												<label>Status (cc):</label>
+												<span>{!! $patient->defaultNaEngagementAssessmentStatus && $patient->defaultNaEngagementAssessmentStatus->status_category ? ucwords(strtolower(str_replace('_', ' ', $patient->defaultNaEngagementAssessmentStatus->status_category))) : '<span class="text-danger">Not Set</span>'  !!}</span>
+												<div moe class="ml-2">
+													<a start show><i class="fa fa-edit"></i></a>
+													<form url="/api/client/updateDefaultNaEngagementAssessmentStatus" class="mcp-theme-1">
+														<input type="hidden" name="uid" value="{{$patient->uid}}">
+														<div class="mb-2">
+															<label class="text-sm text-secondary mb-1">Category </label>
+															<select name="category" class="form-control form-control-sm">
+																<option value="NULL">--</option>
+																<option value="ACTIVE">ACTIVE</option>
+																<option value="INACTIVE">INACTIVE</option>
+																<option value="ENTRY_ERROR">ENTRY_ERROR</option>
+																<option value="DUMMY">DUMMY</option>
+																<option value="DECEASED">DECEASED</option>
+																<option value="DUPLICATE">DUPLICATE</option>
+																<option value="NO_LONGER_INTERESTED">NO_LONGER_INTERESTED</option>
+																<option value="BAD_RECORD">BAD_RECORD</option>
+															</select>
+														</div>
+														<div class="mb-2">
+															<label class="text-sm text-secondary mb-1">Memo</label>
+															<input type="text" name="memo" class="form-control form-control-sm">
+														</div>
+														<div class="mb-2">
+															<label class="text-sm text-secondary mb-1">Detail</label>
+															<input type="text" name="detail" class="form-control form-control-sm">
+														</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>
+											</div>
+										@endif
 									</section>
-									@endif
+									<section class="screen-only vbox align-self-start mt-2 mx-2 border-left pl-2 mcp-theme-1">
+										<div>Cell. BP: <b>{{$patient->hasBPDevice()?'Yes':'No'}}</b></div>
+										@if($patient->most_recent_cellular_bp_sbp_mm_hg && $patient->most_recent_cellular_bp_dbp_mm_hg)
+											<div>Last BP:
+												<b>{{$patient->most_recent_cellular_bp_sbp_mm_hg ?: '-'}}/{{$patient->most_recent_cellular_bp_dbp_mm_hg ?: '-'}}</b>
+												@if($patient->most_recent_cellular_bp_measurement_at)
+													<span class="text-sm text-secondary text-nowrap ml-1"
+														  title="{{friendly_date_time($patient->most_recent_cellular_bp_measurement_at)}}">({{friendly_date($patient->most_recent_cellular_bp_measurement_at)}})</span>
+												@endif
+											</div>
+										@endif
+										<div>Wt. Scale: <b>{{$patient->hasWeightScaleDevice()?'Yes':'No'}}</b></div>
+										@if($patient->most_recent_cellular_weight_value)
+											<div>Last Wt.:
+												<b>{{round($patient->most_recent_cellular_weight_value, 1)}}</b>
+												@if($patient->most_recent_cellular_weight_measurement_at)
+													<span class="text-sm text-secondary text-nowrap ml-1"
+														  title="{{friendly_date_time($patient->most_recent_cellular_weight_measurement_at)}}">({{friendly_date($patient->most_recent_cellular_weight_measurement_at)}})</span>
+												@endif
+											</div>
+										@endif
 
+										<?php $currentCareMonth = $patient->currentCareMonth(); ?>
+										@if($currentCareMonth && ($pro->pro_type === 'ADMIN' || $pro->id === $currentCareMonth->mcp_pro_id))
+											<div class="text-primary c-pointer"
+												 open-in-stag-popup
+												 mc-initer="care-month-dashboard-{{$patient->uid}}"
+												 title="Care Month: {{friendly_month($currentCareMonth->start_date)}}"
+												 popup-style="overflow-visible"
+												 href="/patients/view/{{ $patient->uid }}/care-months/view/{{$currentCareMonth->uid}}">
+												<?php $spoken = $currentCareMonth->has_anyone_interacted_with_client_about_rm_outside_note; ?>
+												<span class="">RPM comm. this month:</span>
+												<b class="{{$spoken ? 'text-success' : ''}}">
+													{{$spoken ? 'Yes' : 'No'}}
+													@if(!$spoken)
+														<i class="fa fa-exclamation-triangle"></i>
+													@else
+														<i class="fa fa-check"></i>
+													@endif
+												</b>
+											</div>
+										@endif
+									</section>
 									<section class="mr-4 align-self-start mt-2 ml-auto mcp-theme-1">
 										<div class="d-flex align-items-start">
-											<div class="max-width-300px max-height-200px overflow-auto d-inline-block">
+											<div class="max-width-300px max-height-100px overflow-auto d-inline-block">
 												<label>Sticky Note:</label> <span class="text-secondary">{{$patient->sticky_note ?? '-' }}</span>
 											</div>
 											<div moe relative wide class="ml-2 hide-inside-popup">
@@ -857,7 +868,7 @@ $isOldClient = (date_diff(date_create(config('app.point_impl_date')), date_creat
 											</div>
 										</div>
 										@if($pro->pro_type === 'ADMIN')
-											<div>
+											<div class="mt-1">
 												<label>Intake Data: - </label> <span class="text-secondary"></span>
 												@include('app.patient.intake-data.patient-intake-data-form')
 											</div>

+ 1 - 0
routes/web.php

@@ -571,6 +571,7 @@ Route::middleware('pro.auth')->group(function () {
     Route::get('/chart-segment-view/{patient}/{segmentInternalName}/{view}', 'NoteController@chartSegmentView')->name('chart-segment-view');
     Route::get('/note-rhs-sidebar/{patient}/{note}', 'NoteController@rhsSidebar')->name('note-rhs-sidebar');
     Route::get('/medications-center/{patient}/{note}', 'NoteController@medicationsCenter')->name('medications-center');
+    Route::get('/medications-add-multi-preexisting/{note}', 'NoteController@medicationsAddMultiPreexisting')->name('medications-add-multi-preexisting');
     Route::get('/medications-reconcile/{patient}/{note}', 'NoteController@medicationsReconcile')->name('medications-reconcile');
     Route::get('/problems-center/{patient}/{note}', 'NoteController@problemsCenter')->name('problems-center');
     Route::get('/goals-center/{patient}/{note}', 'NoteController@goalsCenter')->name('goals-center');