瀏覽代碼

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

= 3 年之前
父節點
當前提交
15746b90f7
共有 42 個文件被更改,包括 1254 次插入388 次删除
  1. 25 0
      app/Http/Controllers/HomeController.php
  2. 39 0
      app/Http/Controllers/PracticeManagementController.php
  3. 1 1
      config/app.php
  4. 52 0
      public/css/style.css
  5. 1 1
      public/js/stag-popup.js
  6. 10 0
      resources/views/app/dashboard.blade.php
  7. 14 3
      resources/views/app/patient/note/dashboard.blade.php
  8. 2 0
      resources/views/app/patient/note/dashboard_script.blade.php
  9. 0 1
      resources/views/app/patient/note/section_script.blade.php
  10. 75 15
      resources/views/app/patient/note/segment.blade.php
  11. 16 0
      resources/views/app/patient/note/segment_script.blade.php
  12. 15 0
      resources/views/app/patient/note/sign-confirmation.blade.php
  13. 3 1
      resources/views/app/patient/notes.blade.php
  14. 1 1
      resources/views/app/patient/prescriptions/list.blade.php
  15. 24 1
      resources/views/app/patient/prescriptions/pdf/DRUG.blade.php
  16. 13 1
      resources/views/app/patient/prescriptions/pdf/pdf-preview.blade.php
  17. 4 2
      resources/views/app/patient/segment-templates/_child_plan/edit-plan.php
  18. 97 36
      resources/views/app/patient/segment-templates/intake_allergies/edit.blade.php
  19. 26 0
      resources/views/app/patient/segment-templates/intake_allergies/summary.blade.php
  20. 116 43
      resources/views/app/patient/segment-templates/intake_care_team/edit.blade.php
  21. 27 0
      resources/views/app/patient/segment-templates/intake_care_team/summary.blade.php
  22. 155 93
      resources/views/app/patient/segment-templates/intake_goals/edit.blade.php
  23. 28 0
      resources/views/app/patient/segment-templates/intake_goals/summary.blade.php
  24. 114 48
      resources/views/app/patient/segment-templates/intake_medications/edit.blade.php
  25. 27 0
      resources/views/app/patient/segment-templates/intake_medications/summary.blade.php
  26. 105 38
      resources/views/app/patient/segment-templates/intake_problems/edit.blade.php
  27. 25 0
      resources/views/app/patient/segment-templates/intake_problems/summary.blade.php
  28. 12 6
      resources/views/app/patient/segment-templates/medrisk_vigilence/summary.blade.php
  29. 32 19
      resources/views/app/patient/segment-templates/plan_allergies/edit.blade.php
  30. 5 3
      resources/views/app/patient/segment-templates/plan_allergies/summary.blade.php
  31. 31 17
      resources/views/app/patient/segment-templates/plan_care_team/edit.blade.php
  32. 5 3
      resources/views/app/patient/segment-templates/plan_care_team/summary.blade.php
  33. 19 10
      resources/views/app/patient/segment-templates/plan_goals/edit.blade.php
  34. 5 3
      resources/views/app/patient/segment-templates/plan_goals/summary.blade.php
  35. 17 7
      resources/views/app/patient/segment-templates/plan_interventions/edit.blade.php
  36. 3 3
      resources/views/app/patient/segment-templates/plan_interventions/summary.blade.php
  37. 29 13
      resources/views/app/patient/segment-templates/plan_medications/edit.blade.php
  38. 5 3
      resources/views/app/patient/segment-templates/plan_medications/summary.blade.php
  39. 27 13
      resources/views/app/patient/segment-templates/plan_problems/edit.blade.php
  40. 5 3
      resources/views/app/patient/segment-templates/plan_problems/summary.blade.php
  41. 43 0
      resources/views/app/practice-management/patients-without-coverage.blade.php
  42. 1 0
      routes/web.php

+ 25 - 0
app/Http/Controllers/HomeController.php

@@ -569,6 +569,31 @@ WHERE ((client.mcp_pro_id = {$performer->pro->id}) OR (client.rmm_pro_id = {$per
         // num measurements that need stamping
         $keyNumbers['measurementsToBeStamped'] = $this->performer()->pro->getUnstampedMeasurementsFromCurrentMonth(true, null, null);
 
+        if($performer->pro->pro_type === 'ADMIN') {
+
+            // patients without coverage information
+            $keyNumbers['patientsWithoutCoverageInformation'] = DB::select(DB::raw("
+SELECT count(DISTINCT (cl.id)) as cnt
+FROM client cl
+WHERE cl.latest_client_primary_coverage_id IS NULL -- no coverage record"
+            ))[0]->cnt;
+
+            // patients pending coverage verification
+            $keyNumbers['patientsPendingCoverageVerification'] = DB::select(DB::raw("
+SELECT count(DISTINCT (cl.id)) as cnt
+FROM client cl
+         LEFT JOIN client_primary_coverage cpc ON cl.latest_client_primary_coverage_id = cpc.id
+WHERE (cl.latest_client_primary_coverage_id IS NOT NULL -- coverage exists, but status is null or unknown
+    AND (
+               (cpc.plan_type = 'MEDICARE' AND (cpc.is_partbprimary = 'UNKNOWN' OR cpc.is_partbprimary IS NULL))
+               OR
+               (cpc.plan_type != 'MEDICARE' AND
+                (cpc.manual_determination_category = 'UNKNOWN' OR cpc.manual_determination_category IS NULL))
+           ))"
+            ))[0]->cnt;
+
+        }
+
         return view('app/dashboard', compact('keyNumbers', 'reimbursement', 'milliseconds',
             'businessNumbers',
             'incomingReports', 'tickets', 'supplyOrders',

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

@@ -372,6 +372,45 @@ class PracticeManagementController extends Controller
         return view('app.practice-management.my-favorites', compact('myFavorites', 'filter'));
     }
 
+    public function patientsWithoutCoverage(Request $request, $filter = 'all')
+    {
+        $performer = $this->performer();
+
+        $sql = "SELECT cl.uid, cl.name_first, cl.name_last FROM client cl ";
+
+        $joinClause = 'LEFT JOIN client_primary_coverage cpc ON cl.latest_client_primary_coverage_id = cpc.id ';
+        $withoutCondition = "cl.latest_client_primary_coverage_id IS NULL";
+        $pendingCondition = "
+(cl.latest_client_primary_coverage_id IS NOT NULL -- coverage exists, but status is null or unknown
+    AND (
+               (cpc.plan_type = 'MEDICARE' AND (cpc.is_partbprimary = 'UNKNOWN' OR cpc.is_partbprimary IS NULL))
+               OR
+               (cpc.plan_type != 'MEDICARE' AND
+                (cpc.manual_determination_category = 'UNKNOWN' OR cpc.manual_determination_category IS NULL))
+           ))";
+
+        switch ($filter) {
+            case 'without-coverage-information':
+                $sql .= 'WHERE ';
+                $sql .= $withoutCondition;
+                break;
+            case 'pending-coverage-verification':
+                $sql .= $joinClause . 'WHERE ';
+                $sql .= $pendingCondition;
+                break;
+            default:
+                $sql .= $joinClause . 'WHERE ';
+                $sql .= $withoutCondition . ' OR ' . $pendingCondition;
+                break;
+        }
+
+        $sql .= ' ORDER BY cl.name_first ASC';
+
+        $pendingCoverage = DB::select(DB::raw($sql));
+
+        return view('app.practice-management.patients-without-coverage', compact('pendingCoverage', 'filter'));
+    }
+
     public function proAvailability(Request $request, $proUid = null)
     {
         $performer = $this->performer();

+ 1 - 1
config/app.php

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

+ 52 - 0
public/css/style.css

@@ -2022,4 +2022,56 @@ body.in-iframe .main-row > .sidebar {
     top: 100%;
     right: 0;
     z-index: 1;
+}
+.zero-height {
+    height: 0 !important;
+    padding: 0 !important;
+    border: 0 !important;
+    overflow: hidden;
+}
+.note-section[data-segment-template-name="medrisk_vigilence"] {
+    position: fixed;
+    right: 0;
+    top: 55px;
+    width: 40px;
+    height: calc(100vh - 54px);
+    background: aliceblue;
+    padding: 0 !important;
+    border-left: 1px solid #ddd;
+    transition: width 0.1s ease;
+}
+.note-section[data-segment-template-name="medrisk_vigilence"] .on-hover-only {
+    display: none;
+}
+.note-section[data-segment-template-name="medrisk_vigilence"]:hover {
+    padding: 1rem !important;
+    width: 550px;
+    border-left: 1px solid #ddd;
+    overflow: auto;
+}
+.note-section[data-segment-template-name="medrisk_vigilence"]:hover .on-hover-only {
+    display: block;
+}
+.note-section[data-segment-template-name="medrisk_vigilence"]:hover .on-hover-hide {
+    display: none;
+}
+.mrv-badge {
+    border-radius: 100%;
+    height: 24px;
+    width: 24px;
+    min-height: 24px;
+    min-width: 24px;
+    max-height: 24px;
+    max-width: 24px;
+    text-align: center;
+    font-weight: 400;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    background-color: #6457f9;
+    color: #fff;
+    opacity: 0.85;
+}
+.mrv-badge>span {
+    font-size: 10px !important;
 }

+ 1 - 1
public/js/stag-popup.js

@@ -44,7 +44,7 @@ function closeStagPopup(_noEvent = false) {
         }
     }
     else {
-        if(popup.is('[update-parent]')) {
+        if(popup.is('[update-parent]') && !_noEvent) {
             if(stagPopupsQueue.length) {
                 refreshDynamicStagPopup();
             }

+ 10 - 0
resources/views/app/dashboard.blade.php

@@ -93,6 +93,16 @@
                                         <a href="/practice-management/rm-bills-to-sign">RM Bills to Sign</a>
                                     </th>
                                 </tr>
+                                @if($pro->pro_type === 'ADMIN')
+                                    <tr>
+                                        <th class="px-2 text-center">{{$keyNumbers['patientsWithoutCoverageInformation']}}</th>
+                                        <th class="pl-2"><a href="/practice-management/patients-without-coverage/without-coverage-information">Without coverage information</a></th>
+                                    </tr>
+                                    <tr>
+                                        <th class="px-2 text-center">{{$keyNumbers['patientsPendingCoverageVerification']}}</th>
+                                        <th class="pl-2"><a href="/practice-management/patients-without-coverage/pending-coverage-verification">Pending coverage verification</a></th>
+                                    </tr>
+                                @endif
                             </tbody>
                         </table>
                     </div>

+ 14 - 3
resources/views/app/patient/note/dashboard.blade.php

@@ -455,7 +455,7 @@
                             }
                             if (!empty($segment->subheading)) {
                                 echo '<div class="note-tree-node note-tree-heading">' .
-                                    '<a class="">' . $segment->subheading . '</a>' .
+                                    '<a class="c-pointer">' . $segment->subheading . '</a>' .
                                     '<div class="note-tree-children">'; // <!-- open new node -->
                             }
                             $previousSubHeading = $segment->subheading;
@@ -466,13 +466,17 @@
                             }
                             if (!empty($segment->heading)) {
                                 echo '<div class="note-tree-node note-tree-heading">' .
-                                    '<a class="">' . $segment->heading . '</a>' .
+                                    '<a class="c-pointer">' . $segment->heading . '</a>' .
                                     '<div class="note-tree-children">'; // <!-- open new node -->
                             }
                             $previousHeading = $segment->heading;
                         }
                         echo '<div class="note-tree-node">' .
-                            '<a native target="_top" data-segment-uid="' . $segment->uid . '" href="#" >' . $segment->display_title . '</a>' .
+                            '<a native target="_top" ' .
+                            'data-segment-uid="' . $segment->uid . '" ' .
+                            'data-segment-internal-name="' . $segment->segmentTemplate->internal_name . '" ' .
+                            'href="#" ' .
+                            'class="' . ($segment->display_title === 'MedRisk Vigilence' || $segment->subheading === 'Lifestyle' ? 'd-none' : '') . '">' . $segment->display_title . '</a>' .
                             '</div>';
                         ?>
                     @endforeach
@@ -2239,6 +2243,13 @@
                         }
                         return false;
                     });
+                // clicking node parent - go to first child
+                $('.note-tree-node.note-tree-heading>a:not([data-segment-uid])')
+                    .off('click.scroll-to-first-child-segment')
+                    .on('click.scroll-to-first-child-segment', function() {
+                         $(this).parent().find('>.note-tree-children>.note-tree-node>a[data-segment-uid]').first().trigger('click');
+                         return false;
+                    });
                 $('.note-tree-node>a[data-non-segment-target]')
                     .off('click.scroll-to-non-segment')
                     .on('click.scroll-to-non-segment', function() {

+ 2 - 0
resources/views/app/patient/note/dashboard_script.blade.php

@@ -341,6 +341,8 @@
                         $(this).find('.edit-trigger').first().click();
                         return false;
                     });
+                @else
+                    $('#patient-header').closest('[role="main"]').css('padding-right', '50px');
                 @endif
 
                 // $(document)

+ 0 - 1
resources/views/app/patient/note/section_script.blade.php

@@ -174,7 +174,6 @@
                 if(_elem.closest('.note-section').is('.edit')) {
                     // console.log('ALIX: In edit mode. Auto-saving', _elem.closest('.note-section').attr('data-section-template-name'))
                     $('body').addClass('blocking-mode');
-                    showMoeFormMask('blocking-overlay');
                     doSave(_elem.closest('.note-section'));
                 }
                 else {

+ 75 - 15
resources/views/app/patient/note/segment.blade.php

@@ -1,9 +1,10 @@
-<div class="p-3 border-bottom note-section visit-segment {{$note->is_signed_by_hcp ? '' : 'edit-trigger'}}"
+<?php $iName = $segment->segmentTemplate->internal_name; ?>
+<div class="p-3 border-bottom note-section visit-segment {{$note->is_signed_by_hcp ? '' : 'edit-trigger'}} {{strpos($iName, 'lifestyle_') === 0 && $iName !== 'lifestyle_general' ? 'zero-height' : ''}}"
      data-segment-uid="{{ $segment->uid }}"
      data-segment-template-uid="{{ $segment->segmentTemplate->uid }}"
      data-segment-template-name="{{ $segment->segmentTemplate->internal_name }}">
 
-    <?php $isLSSegment = strpos($segment->segmentTemplate->internal_name, 'lifestyle_') === 0; ?>
+    <?php $isLSSegment = strpos($iName, 'lifestyle_') === 0; ?>
 
     <div class="d-flex align-items-baseline">
 
@@ -18,31 +19,90 @@
         @endif--}}
 
     <!-- title -->
-        <span class="font-weight-bold d-flex align-items-center {{$isLSSegment ? '' : 'mb-2'}}">
-			{{$segment->display_title}}
 
-            @if($segment->heading)
-                <span class="text-secondary ml-2 text-sm font-weight-normal">({{$segment->heading}})</span>
-            @endif
+        @if($iName === 'medrisk_vigilence')
+            <div class="font-weight-bold text-center flex-grow-1">
+                <div class="on-hover-hide font-weight-normal text-info font-weight-bold text-center pt-2 font-size-11">MRV</div>
+                <span class="on-hover-only text-left">MedRisk Vigilence</span>
+            </div>
+        @else
+            <span class="font-weight-bold d-flex align-items-center {{$isLSSegment || $iName === 'medrisk_vigilence' ? '' : 'mb-2'}}">
+			@if($isLSSegment && $iName === 'lifestyle_general')
+                    Lifestyle
+                @else
+                    {{$segment->display_title}}
+                @endif
 
+                @if($segment->heading && $iName !== 'medrisk_vigilence')
+                    <span class="text-secondary ml-2 text-sm font-weight-normal">({{$segment->heading}})</span>
+                @endif
 		</span>
+        @endif
 
-        @if(!$note->is_signed_by_hcp)
+        @if($isLSSegment)
+            @if($iName === 'lifestyle_general')
+                <a href="#" class="ls-segment-trigger ml-2" data-target="lifestyle_general">General</a>
+                <span class="mx-2 text-secondary text-sm">|</span>
+                <a href="#" class="ls-segment-trigger" data-target="lifestyle_nutrition">Nutrition</a>
+                <span class="mx-2 text-secondary text-sm">|</span>
+                <a href="#" class="ls-segment-trigger" data-target="lifestyle_physical_activity">Physical Act.</a>
+                <span class="mx-2 text-secondary text-sm">|</span>
+                <a href="#" class="ls-segment-trigger" data-target="lifestyle_sleep">Sleep</a>
+                <span class="mx-2 text-secondary text-sm">|</span>
+                <a href="#" class="ls-segment-trigger" data-target="lifestyle_social">Social Relns.</a>
+                <span class="mx-2 text-secondary text-sm">|</span>
+                <a href="#" class="ls-segment-trigger" data-target="lifestyle_substances">Subst. Use</a>
+                <span class="mx-2 text-secondary text-sm">|</span>
+                <a href="#" class="ls-segment-trigger" data-target="lifestyle_stress">Stress</a>
+            @else
+                <span class="text-info ml-auto font-weight-normal">(click to view)</span>
+            @endif
+        @endif
+
+        @if(!$note->is_signed_by_hcp && !$isLSSegment)
             <a class="edit-trigger d-none if-edit c-pointer ml-3">Close</a>
 
             <!-- refresh -->
-            <span class="mx-2 text-secondary text-sm">|</span>
-            <a class="font-weight-normal refresh-segment c-pointer"
+            <span class="mx-2 text-secondary text-sm {{$iName === 'medrisk_vigilence' ? 'd-none' : ''}}">|</span>
+            <a class="font-weight-normal refresh-segment c-pointer {{$iName === 'medrisk_vigilence' ? 'on-hover-only' : ''}}"
                data-segment-uid="{{$segment->uid}}"
                title="Update with latest patient data">
                 Refresh
             </a>
 
-            @include('app/patient/note/_templates-v2-index', ['sectionInternalName' => $segment->segmentTemplate->internal_name])
-        @endif
+            <!-- if intake - link to plan segment-->
+            <?php
+            $isIntake = strpos($iName, 'intake_') === 0;
+            ?>
+            @if($isIntake)
+                <?php
+                $targetSegment = 'plan_' . substr($iName, 7);
+                ?>
+                <span class="mx-2 text-secondary text-sm">|</span>
+                <a class="segment-trigger"
+                   href="#"
+                   data-target="{{$targetSegment}}">
+                    Changes During this Visit
+                </a>
+            @endif
 
-        @if($isLSSegment)
-            <span class="text-info ml-auto font-weight-normal">(click to view)</span>
+            <!-- if plan - link to intake segment-->
+            <?php
+            $isPlan = strpos($iName, 'plan_') === 0 && $iName !== 'plan_free_text';
+            ?>
+            @if($isPlan)
+                <?php
+                $targetSegment = 'intake_' . substr($iName, 5);
+                ?>
+                <span class="mx-2 text-secondary text-sm">|</span>
+                <a class="segment-trigger"
+                   href="#"
+                   data-target="{{$targetSegment}}">
+                    On Intake
+                </a>
+            @endif
+
+            @include('app/patient/note/_templates-v2-index', ['sectionInternalName' => $segment->segmentTemplate->internal_name])
         @endif
 
     </div>
@@ -50,7 +110,7 @@
     <!-- popup hack for LS segments -->
     <?php if(!$isLSSegment): ?>
 
-    <div class="d-none if-not-edit inset-comment summary-container">
+    <div class="d-none if-not-edit inset-comment summary-container {{$iName === 'medrisk_vigilence' ? 'px-0' : ''}}">
         {!! $segment->summary_html !!}
     </div>
 

+ 16 - 0
resources/views/app/patient/note/segment_script.blade.php

@@ -278,6 +278,22 @@
                     return false;
                 });
 
+            // ls segment special vase
+            $(document)
+                .off('click.ls-segment-trigger', '.ls-segment-trigger[data-target]')
+                .on('click.ls-segment-trigger', '.ls-segment-trigger[data-target]', function() {
+                    $('.note-section.edit-trigger[data-segment-template-name="' + $(this).attr('data-target') + '"]').trigger('click');
+                    return false;
+                });
+
+            // link to other segments by internal_name
+            $(document)
+                .off('click.segment-trigger', '.segment-trigger[data-target]')
+                .on('click.segment-trigger', '.segment-trigger[data-target]', function() {
+                    $('.note-tree-node [data-segment-internal-name="' + $(this).attr('data-target') + '"]').trigger('click');
+                    return false;
+                });
+
             /*
             $('[btn-save-form]').on('click', function() {
                 doSave($(this).closest('.note-section'));

+ 15 - 0
resources/views/app/patient/note/sign-confirmation.blade.php

@@ -158,6 +158,21 @@
     (function() {
 
         function init() {
+
+            if($('.relevant-without-review[data-target-segment]').length) {
+                alert('Review missing for one or more items relevant to this note!');
+                closeStagPopup(true);
+                $('.note-tree-node [data-segment-internal-name="' + $('.relevant-without-review[data-target-segment]').first().attr('data-target-segment') + '"]').trigger('click');
+                return false;
+            }
+
+            if($('.relevant-without-plan[data-target-segment]').length) {
+                alert('Plan missing for one or more items relevant to this note!');
+                closeStagPopup(true);
+                $('.note-tree-node [data-segment-internal-name="' + $('.relevant-without-plan[data-target-segment]').first().attr('data-target-segment') + '"]').trigger('click');
+                return false;
+            }
+
             $('#note-sign-confirmation-{{$note->id}} .btn-sign')
                 .off('click')
                 .on('click', function() {

+ 3 - 1
resources/views/app/patient/notes.blade.php

@@ -116,7 +116,9 @@
                     <i class="fa fa-exclamation-triangle"></i>
                     <b>Cannot create note.</b> Patient is not covered or coverage is pending verification.
                 </span>
-                <a class="ml-3" href="{{route('patients.view.client-primary-coverages', ['patient' => $patient])}}">View Coverages</a>
+                @if($pro->pro_type == 'ADMIN')
+                    <a class="ml-3" href="{{route('patients.view.client-primary-coverages', ['patient' => $patient])}}">View Coverages</a>
+                @endif
             @endif
 
             <select class="ml-auto max-width-300px form-control form-control-sm"

+ 1 - 1
resources/views/app/patient/prescriptions/list.blade.php

@@ -1,4 +1,4 @@
-<div id="prescriptions-{{$patient->id}}">
+<div id="prescriptions-{{$patient->id}}" v-cloak>
     <div class="d-flex align-items-baseline py-2">
         <h6 class="my-0 font-weight-bold text-secondary font-size-14">Prescriptions</h6>
         <span class="mx-2 text-secondary on-hover-opaque">|</span>

+ 24 - 1
resources/views/app/patient/prescriptions/pdf/DRUG.blade.php

@@ -1,12 +1,35 @@
 <section style="padding-top: 0.1rem;">
 
+    <div style="margin: 0 0 1rem; font-weight: bold; "><span style="font-size: 16px">Specimen/Physician Information</span></div>
+
+    <table cellpadding="0" cellspacing="0" border="0" style="width: 100%; font-size: 14px; margin-bottom: 1rem;">
+        <tr>
+            <td style="padding-bottom: 0.25rem; width: 20%; opacity: 0.75;">Order Date:</td>
+            <td style="padding-bottom: 0.25rem; width: 30%; opacity: 0.75; font-weight: bold;">{{date('Y-m-d h:i a')}}</td>
+            <td style="padding-bottom: 0.25rem; width: 20%; opacity: 0.75;">NPI:</td>
+            <td style="padding-bottom: 0.25rem; width: 30%; opacity: 0.75; font-weight: bold;">{{$prescription->hcpPro->hcp_npi}}</td>
+        </tr>
+        <tr>
+            <td style="padding-bottom: 0.25rem; width: 20%; opacity: 0.75;">Test Date:</td>
+            <td style="padding-bottom: 0.25rem; width: 30%; opacity: 0.75; font-weight: bold;">-</td>
+            <td style="padding-bottom: 0.25rem; width: 20%; opacity: 0.75;">Practice Phone:</td>
+            <td style="padding-bottom: 0.25rem; width: 30%; opacity: 0.75; font-weight: bold;">202-935-1033</td>
+        </tr>
+        <tr>
+            <td style="padding-bottom: 0.25rem; width: 20%; opacity: 0.75;">Ordering Physician:</td>
+            <td style="padding-bottom: 0.25rem; width: 30%; opacity: 0.75; font-weight: bold;">{{$prescription->hcpPro->displayName()}}</td>
+            <td style="padding-bottom: 0.25rem; width: 20%; opacity: 0.75;">Practice Fax:</td>
+            <td style="padding-bottom: 0.25rem; width: 30%; opacity: 0.75; font-weight: bold;">202-935-1033</td>
+        </tr>
+    </table>
+
     <table cellpadding="0" cellspacing="0" border="0" style="width: 100%">
         <tr>
             <td style="width: 70%">
                 <b>Patient Information</b>
             </td>
             <td style="">
-                <div style="text-align: right">Date: <b>{{date('Y-m-d')}}</b></div>
+
             </td>
         </tr>
     </table>

File diff suppressed because it is too large
+ 13 - 1
resources/views/app/patient/prescriptions/pdf/pdf-preview.blade.php


+ 4 - 2
resources/views/app/patient/segment-templates/_child_plan/edit-plan.php

@@ -5,7 +5,7 @@ if ($point->lastChildPlan && $point->last_child_plan_point_scoped_note_id === $n
     $currentValue = $parsedPlan->value;
 }
 ?>
-<div visit-moe relative>
+<div visit-moe large relative>
     <a start show href="#">Edit</a>
     <form url="/api/visitPoint/upsertChildPlan" class="mcp-theme-1" right>
         <input type="hidden" name="uid" value="<?= $point->uid ?>">
@@ -15,7 +15,9 @@ if ($point->lastChildPlan && $point->last_child_plan_point_scoped_note_id === $n
         <p class="mb-2"><b>Review</b></p>
 
         <div class="mb-2">
-            <textarea data-name="value" class="form-control form-control-sm" rows="3"><?= $currentValue ?></textarea>
+            <div note-rte
+                 class="form-group mb-2 border-left border-right rte-holder"
+                 data-field-name="value"><?= $currentValue ?></div>
         </div>
         <div>
             <button submit class="btn btn-sm btn-primary mr-2">Save</button>

+ 97 - 36
resources/views/app/patient/segment-templates/intake_allergies/edit.blade.php

@@ -11,13 +11,23 @@ use \App\Models\Segment;
 
 $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
 
+$relevance = Point::where('added_in_segment_id', $segment->id)
+    ->where('category', 'ALLERGIES_RELEVANT_TO_NOTE_ON_INTAKE')
+    ->orderBy('id', 'DESC')->first();
+if (!!@$relevance->data) {
+    $relevance = json_decode($relevance->data, true);
+}
+else {
+    $relevance = [];
+}
+
 ?>
 <div>
 
-    <div class="d-flex mb-2">
-        <table class="table table-sm table-bordered table-striped mb-0 bg-white">
+    <table class="table table-sm table-bordered table-striped mb-0 bg-white mb-2">
             <thead>
             <tr class="">
+                <th class="border-bottom-0 width-100px text-info">Relevant to<br>this visit</th>
                 <th class="border-bottom-0">Allergy</th>
                 <th class="border-bottom-0">Most Recent Review</th>
                 <th class="border-bottom-0">Most Recent Plan</th>
@@ -25,7 +35,15 @@ $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
             </tr>
             </thead>
             <?php foreach($allergies as $allergy): ?>
+                <?php $point = $allergy; ?>
                 <tr>
+                    <td class="p-0">
+                        <label class="d-flex align-items-center px-2 py-1 m-0 c-pointer">
+                            <input type="checkbox" class="m-0 chk-relevance"
+                                   data-uid="{{$allergy->uid}}" {{in_array($allergy->uid, $relevance) ? 'checked' : ''}}>
+                            <span>&nbsp;</span>
+                        </label>
+                    </td>
                     <td>
                         <div class="d-flex align-items-baseline">
                             <div class="<?= $allergy->is_removed ? 'strike-through' : '' ?>">
@@ -36,7 +54,6 @@ $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
                             <!-- common actions -->
                             <div class="ml-auto d-inline-flex align-items-baseline pr-2">
                                 <?php
-                                $point = $allergy;
                                 $label = 'Allergy';
                                 include resource_path('views/app/patient/segment-templates/_common_actions/remove-undo.php');
                                 ?>
@@ -79,7 +96,6 @@ $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
                         <div class="d-flex align-items-start">
                             <div class="flex-grow-1">
                                 <?php
-                                $point = $allergy;
                                 include resource_path('views/app/patient/segment-templates/_child_review/last-review.php');
                                 ?>
                             </div>
@@ -97,7 +113,6 @@ $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
                         <div class="d-flex align-items-start">
                             <div class="flex-grow-1">
                                 <?php
-                                $point = $allergy;
                                 include resource_path('views/app/patient/segment-templates/_child_plan/last-plan.php');
                                 ?>
                             </div>
@@ -113,43 +128,55 @@ $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
                     </td>
                     <td>
                         <?php
-                        $point = $allergy;
                         include resource_path('views/app/patient/segment-templates/_child_review/edit-review.php');
                         ?>
                     </td>
                 </tr>
             <?php endforeach; ?>
         </table>
-    </div>
 
-    <div visit-moe class="mt-1">
-        <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add allergy patient ALREADY is diagnosed with, prior to this visit</a>
-        <form url="/api/visitPoint/addTopLevelOnIntake" class="mcp-theme-1">
-            <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
-            <input type="hidden" name="category" value="ALLERGY">
-            <input type="hidden" name="data">
-
-            <p class="mb-2"><b>Add Allergy (on intake)</b></p>
-
-            <input type="hidden" data-name="damConceptId">
-            <input type="hidden" data-name="damConceptIdType">
-
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Name</label>
-                <input type="text" data-name="name" class="form-control form-control-sm"
-                       stag-suggest
-                       stag-suggest-ep="/fdb-allergy-suggest/json">
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Description</label>
-                <textarea type="text" data-name="description" class="form-control form-control-sm"></textarea>
-            </div>
-
-            <div>
-                <button submit class="btn btn-sm btn-primary mr-2">Submit</button>
-                <button cancel class="btn btn-sm btn-default border">Cancel</button>
-            </div>
-        </form>
+    <div class="d-flex align-items-center">
+        <div visit-moe>
+            <form start show url="/api/visitPoint/upsertNoteSingleton" class="d-none" id="<?= $segment->uid ?>-relevance-form">
+                <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+                <input type="hidden" name="category" value="ALLERGIES_RELEVANT_TO_NOTE_ON_INTAKE">
+                <input type="hidden" name="data">
+                <button submit class="btn btn-sm btn-info font-weight-bold">Save Relevance</button>
+            </form>
+        </div>
+        <div visit-moe large class="mt-1 w-100 border p-2 bg-white rounded">
+            <!--<a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add allergy patient ALREADY is diagnosed with, prior to this visit</a>-->
+            <form show url="/api/visitPoint/addTopLevelOnIntake" class="mcp-theme-1 w-100">
+                <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+                <input type="hidden" name="category" value="ALLERGY">
+                <input type="hidden" name="data">
+
+                <p class="mb-2"><b>Add Allergy (on intake)</b></p>
+
+                <input type="hidden" data-name="damConceptId">
+                <input type="hidden" data-name="damConceptIdType">
+
+                <div class="d-flex align-items-start">
+
+                <div class="mb-2 w-25">
+                    <label class="text-sm text-secondary mb-1">Name</label>
+                    <input type="text" data-name="name" class="form-control form-control-sm"
+                           stag-suggest
+                           stag-suggest-ep="/fdb-allergy-suggest/json">
+                </div>
+                <div class="mb-2 ml-2 flex-grow-1">
+                    <label class="text-sm text-secondary mb-1">Description</label>
+                    <textarea rows="1" data-name="description" class="form-control form-control-sm"></textarea>
+                </div>
+
+                </div>
+
+                <div>
+                    <button submit class="btn btn-sm btn-primary mr-2">Submit</button>
+                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                </div>
+            </form>
+        </div>
     </div>
 </div>
 
@@ -166,5 +193,39 @@ $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
                 _input.closest('form').find('input[data-name="damConceptIdType"]').val(_data.dam_concept_id_typ);
             });
 
+        // relevance
+        $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance');
+        $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance', function () {
+            let uids = $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val();
+            if(!!uids) {
+                uids = JSON.parse(uids);
+            }
+            else {
+                uids = [];
+            }
+            let uid = $(this).attr('data-uid'), found = uids.indexOf(uid) > -1;
+            if(this.checked === found) {
+                return false;
+            }
+            if(this.checked) {
+                uids.push(uid);
+            }
+            else {
+                uids = uids.filter(_x => _x !== uid);
+            }
+            $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
+            // auto save
+            $('#<?= $segment->uid ?>-relevance-form [submit]').trigger('click');
+
+            return false;
+        });
+
+        // pre-fill relevance data
+        let uids = [];
+        $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance:checked').each(function() {
+            uids.push($(this).attr('data-uid'));
+        });
+        $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
     };
-</script>
+</script>

+ 26 - 0
resources/views/app/patient/segment-templates/intake_allergies/summary.blade.php

@@ -6,6 +6,18 @@ use App\Models\Point;
 
 $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
 
+$relevance = Point::where('added_in_segment_id', $segment->id)
+    ->where('category', 'ALLERGIES_RELEVANT_TO_NOTE_ON_INTAKE')
+    ->orderBy('id', 'DESC')
+    ->first();
+if (!!@$relevance->data) {
+    $relevance = json_decode($relevance->data, true);
+}
+else {
+    $relevance = [];
+}
+
+$numRelevant = 0;
 ?>
 
 <?php if (!count($allergies)): ?>
@@ -14,6 +26,12 @@ $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
     <?php foreach ($allergies as $allergy): ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
+                @if(in_array($allergy->uid, $relevance))
+                    <span class="text-info mr-1">
+                        <i class="fa fa-star"></i>
+                    </span>
+                    <?php $numRelevant++; ?>
+                @endif
                 <div class="<?= $allergy->is_removed ? 'strike-through' : '' ?>">
                     <b><?= !!@($allergy->data->name) ? @($allergy->data->name) : '-' ?></b>
                     <?= !!@($allergy->data->description) ? '/&nbsp;' . @($allergy->data->description) : '' ?>
@@ -34,8 +52,16 @@ $allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
                     <div class="text-secondary font-weight-bold">Review</div>
                     <div>{!! $review->data->value !!}</div>
                 </div>
+            <?php elseif(in_array($allergy->uid, $relevance)): ?>
+                <div class="relevant-without-review text-danger mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Review missing</div>
             <?php endif; ?>
         </div>
     <?php endforeach; ?>
+    @if($numRelevant)
+        <div class="d-flex align-items-baseline text-info mr-1 mt-3">
+            <span class="text-sm mr-1"><i class="fa fa-star text-sm"></i></span>
+            <span class="text-sm">Allergies relevant to this note</span>
+        </div>
+    @endif
 <?php endif; ?>
 

+ 116 - 43
resources/views/app/patient/segment-templates/intake_care_team/edit.blade.php

@@ -11,6 +11,16 @@ use \App\Models\Segment;
 
 $careTeamMembers = Point::getIntakePointsOfCategory($patient, 'CARE_TEAM_MEMBER', $note);
 
+$relevance = Point::where('added_in_segment_id', $segment->id)
+    ->where('category', 'CARE_TEAM_MEMBERS_RELEVANT_TO_NOTE_ON_INTAKE')
+    ->orderBy('id', 'DESC')->first();
+if (!!@$relevance->data) {
+    $relevance = json_decode($relevance->data, true);
+}
+else {
+    $relevance = [];
+}
+
 ?>
 <div>
 
@@ -18,6 +28,7 @@ $careTeamMembers = Point::getIntakePointsOfCategory($patient, 'CARE_TEAM_MEMBER'
         <table class="table table-sm table-bordered table-striped mb-0 bg-white">
             <thead>
             <tr class="">
+                <th class="border-bottom-0 width-100px text-info">Relevant to<br>this visit</th>
                 <th class="border-bottom-0">Care Team Member</th>
                 <th class="border-bottom-0">Most Recent Review</th>
                 <th class="border-bottom-0">Most Recent Plan</th>
@@ -26,6 +37,13 @@ $careTeamMembers = Point::getIntakePointsOfCategory($patient, 'CARE_TEAM_MEMBER'
             </thead>
             <?php foreach($careTeamMembers as $careTeamMember): ?>
                 <tr>
+                    <td class="p-0">
+                        <label class="d-flex align-items-center px-2 py-1 m-0 c-pointer">
+                            <input type="checkbox" class="m-0 chk-relevance"
+                                   data-uid="{{$careTeamMember->uid}}" {{in_array($careTeamMember->uid, $relevance) ? 'checked' : ''}}>
+                            <span>&nbsp;</span>
+                        </label>
+                    </td>
                     <td>
                         <div class="d-flex align-items-baseline">
                             <div class="<?= $careTeamMember->is_removed ? 'strike-through' : '' ?>">
@@ -143,49 +161,104 @@ $careTeamMembers = Point::getIntakePointsOfCategory($patient, 'CARE_TEAM_MEMBER'
         </table>
     </div>
 
-    <div visit-moe class="mt-1">
-        <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add care team member patient is ALREADY having, prior to this visit</a>
-        <form url="/api/visitPoint/addTopLevelOnIntake" class="mcp-theme-1">
-            <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
-            <input type="hidden" name="category" value="CARE_TEAM_MEMBER">
-            <input type="hidden" name="data">
-
-            <p class="mb-2"><b>Add Care Team Member (on intake)</b></p>
-
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Name</label>
-                <input type="text" data-name="name" class="form-control form-control-sm">
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Specialty</label>
-                <input type="text" data-name="specialty" class="form-control form-control-sm">
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Organization</label>
-                <input type="text" data-name="organization" class="form-control form-control-sm">
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Phone</label>
-                <input type="text" data-name="phone" class="form-control form-control-sm">
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Fax</label>
-                <input type="text" data-name="fax" class="form-control form-control-sm">
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Date</label>
-                <input type="date" data-name="date" class="form-control form-control-sm">
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Memo</label>
-                <textarea type="text" data-name="memo" class="form-control form-control-sm"></textarea>
-            </div>
-
-            <div>
-                <button submit class="btn btn-sm btn-primary mr-2">Submit</button>
-                <button cancel class="btn btn-sm btn-default border">Cancel</button>
-            </div>
-        </form>
+    <div class="d-flex align-items-center">
+        <div visit-moe>
+            <form start show url="/api/visitPoint/upsertNoteSingleton" class="d-none" id="<?= $segment->uid ?>-relevance-form">
+                <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+                <input type="hidden" name="category" value="CARE_TEAM_MEMBERS_RELEVANT_TO_NOTE_ON_INTAKE">
+                <input type="hidden" name="data">
+                <button submit class="btn btn-sm btn-info font-weight-bold">Save Relevance</button>
+            </form>
+        </div>
+        <div visit-moe large class="mt-1 w-100 border p-2 bg-white rounded">
+            <!--<a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add care team member patient is ALREADY having, prior to this visit</a>-->
+            <form show url="/api/visitPoint/addTopLevelOnIntake" class="mcp-theme-1 w-100">
+                <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+                <input type="hidden" name="category" value="CARE_TEAM_MEMBER">
+                <input type="hidden" name="data">
+
+                <p class="mb-2"><b>Add Care Team Member (on intake)</b></p>
+
+                <div class="d-flex align-items-start">
+
+                <div class="mb-2">
+                    <label class="text-sm text-secondary mb-1">Name</label>
+                    <input type="text" data-name="name" class="form-control form-control-sm">
+                </div>
+                <div class="mb-2 ml-2">
+                    <label class="text-sm text-secondary mb-1">Specialty</label>
+                    <input type="text" data-name="specialty" class="form-control form-control-sm">
+                </div>
+                <div class="mb-2 ml-2">
+                    <label class="text-sm text-secondary mb-1">Organization</label>
+                    <input type="text" data-name="organization" class="form-control form-control-sm">
+                </div>
+                <div class="mb-2 ml-2">
+                    <label class="text-sm text-secondary mb-1">Phone</label>
+                    <input type="text" data-name="phone" class="form-control form-control-sm">
+                </div>
+                <div class="mb-2 ml-2">
+                    <label class="text-sm text-secondary mb-1">Fax</label>
+                    <input type="text" data-name="fax" class="form-control form-control-sm">
+                </div>
+                <div class="mb-2 ml-2">
+                    <label class="text-sm text-secondary mb-1">Date</label>
+                    <input type="date" data-name="date" class="form-control form-control-sm">
+                </div>
+                <div class="mb-2 ml-2 flex-grow-1">
+                    <label class="text-sm text-secondary mb-1">Memo</label>
+                    <textarea rows="1" data-name="memo" class="form-control form-control-sm"></textarea>
+                </div>
+
+                </div>
+
+                <div>
+                    <button submit class="btn btn-sm btn-primary mr-2">Submit</button>
+                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                </div>
+            </form>
+        </div>
     </div>
 </div>
 
+<script>
+    window.segmentInitializers.<?= $segment->segmentTemplate->internal_name ?> = function() {
+        // any JS can come here
+        // will be run on page-load as well as whenever this segment is refreshed
+
+        // relevance
+        $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance');
+        $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance', function () {
+            let uids = $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val();
+            if(!!uids) {
+                uids = JSON.parse(uids);
+            }
+            else {
+                uids = [];
+            }
+            let uid = $(this).attr('data-uid'), found = uids.indexOf(uid) > -1;
+            if(this.checked === found) {
+                return false;
+            }
+            if(this.checked) {
+                uids.push(uid);
+            }
+            else {
+                uids = uids.filter(_x => _x !== uid);
+            }
+            $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
+            // auto save
+            $('#<?= $segment->uid ?>-relevance-form [submit]').trigger('click');
+
+            return false;
+        });
+
+        // pre-fill relevance data
+        let uids = [];
+        $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance:checked').each(function() {
+            uids.push($(this).attr('data-uid'));
+        });
+        $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+    };
+</script>

+ 27 - 0
resources/views/app/patient/segment-templates/intake_care_team/summary.blade.php

@@ -6,6 +6,19 @@ use App\Models\Point;
 
 $careTeamMembers = Point::getIntakePointsOfCategory($patient, 'CARE_TEAM_MEMBER', $note);
 
+$relevance = Point::where('added_in_segment_id', $segment->id)
+    ->where('category', 'CARE_TEAM_MEMBERS_RELEVANT_TO_NOTE_ON_INTAKE')
+    ->orderBy('id', 'DESC')
+    ->first();
+if (!!@$relevance->data) {
+    $relevance = json_decode($relevance->data, true);
+}
+else {
+    $relevance = [];
+}
+
+$numRelevant = 0;
+
 ?>
 
 <?php if (!count($careTeamMembers)): ?>
@@ -14,6 +27,12 @@ $careTeamMembers = Point::getIntakePointsOfCategory($patient, 'CARE_TEAM_MEMBER'
     <?php foreach($careTeamMembers as $careTeamMember): ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
+                @if(in_array($careTeamMember->uid, $relevance))
+                    <span class="text-info mr-1">
+                        <i class="fa fa-star"></i>
+                    </span>
+                    <?php $numRelevant++; ?>
+                @endif
                 <div class="<?= $careTeamMember->is_removed ? 'strike-through' : '' ?>">
                     <b><?= !!@($careTeamMember->data->name) ? @($careTeamMember->data->name) : '-' ?></b>
                     <?= !!@($careTeamMember->data->spacialty) ? '/&nbsp;' . @($careTeamMember->data->spacialty) . '<br>' : '' ?>
@@ -38,7 +57,15 @@ $careTeamMembers = Point::getIntakePointsOfCategory($patient, 'CARE_TEAM_MEMBER'
                 <div class="text-secondary font-weight-bold">Review</div>
                 <div>{!! $review->data->value !!}</div>
             </div>
+            <?php elseif(in_array($careTeamMember->uid, $relevance)): ?>
+            <div class="relevant-without-review text-danger mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Review missing</div>
             <?php endif; ?>
         </div>
     <?php endforeach; ?>
+    @if($numRelevant)
+        <div class="d-flex align-items-baseline text-info mr-1 mt-3">
+            <span class="text-sm mr-1"><i class="fa fa-star text-sm"></i></span>
+            <span class="text-sm">Care team members relevant to this note</span>
+        </div>
+    @endif
 <?php endif; ?>

+ 155 - 93
resources/views/app/patient/segment-templates/intake_goals/edit.blade.php

@@ -11,6 +11,16 @@ use \App\Models\Segment;
 
 $goals = Point::getIntakePointsOfCategory($patient, 'GOAL', $note);
 
+$relevance = Point::where('added_in_segment_id', $segment->id)
+    ->where('category', 'GOALS_RELEVANT_TO_NOTE_ON_INTAKE')
+    ->orderBy('id', 'DESC')->first();
+if (!!@$relevance->data) {
+    $relevance = json_decode($relevance->data, true);
+}
+else {
+    $relevance = [];
+}
+
 ?>
 <div>
 
@@ -18,6 +28,7 @@ $goals = Point::getIntakePointsOfCategory($patient, 'GOAL', $note);
         <table class="table table-sm table-bordered table-striped mb-0 bg-white">
             <thead>
             <tr class="">
+                <th class="border-bottom-0 width-100px text-info">Relevant to<br>this visit</th>
                 <th class="border-bottom-0">Category</th>
                 <th class="border-bottom-0">Goal</th>
                 <th class="border-bottom-0">Most Recent Review</th>
@@ -30,6 +41,13 @@ $goals = Point::getIntakePointsOfCategory($patient, 'GOAL', $note);
                 <?php if(@($goal->data->category)): ?>
                 <?php $point = $goal; ?>
                 <tr>
+                    <td class="p-0">
+                        <label class="d-flex align-items-center px-2 py-1 m-0 c-pointer">
+                            <input type="checkbox" class="m-0 chk-relevance"
+                                   data-uid="{{$goal->uid}}" {{in_array($goal->uid, $relevance) ? 'checked' : ''}}>
+                            <span>&nbsp;</span>
+                        </label>
+                    </td>
                     <td>
                         <?php if($previousCategory === $goal->data->category): ?>
                             <span class="text-secondary"><?= $goal->data->category ?></span>
@@ -196,99 +214,109 @@ $goals = Point::getIntakePointsOfCategory($patient, 'GOAL', $note);
         </table>
     </div>
 
-    <div visit-moe class="mt-1">
-        <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add goal patient is ALREADY having, prior to this visit</a>
-        <form url="/api/visitPoint/addTopLevelOnIntake" class="mcp-theme-1 max-width-500px min-width-500px">
-            <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
-            <input type="hidden" name="category" value="GOAL">
-            <input type="hidden" name="data">
-
-            <p class="mb-2"><b>Add Goal (on intake)</b></p>
-
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Category</label>
-                <select type="text" data-name="category" class="form-control form-control-sm">
-                    <option value="">-- select --</option>
-                    <option value="NUTRITION">NUTRITION</option>
-                    <option value="ACTIVITY">ACTIVITY</option>
-                    <option value="SLEEP">SLEEP</option>
-                    <option value="SOCIAL CONNECTION">SOCIAL CONNECTION</option>
-                    <option value="STRESS REDUCTION">STRESS REDUCTION</option>
-                    <option value="RISKY SUBSTANCE AVOIDANCE">RISKY SUBSTANCE AVOIDANCE</option>
-                    <option value="OTHER">OTHER</option>
-                </select>
-            </div>
-
-            <div class="bg-light border mb-2 p-2 help-text d-none" data-category="NUTRITION">
-                <div class="mb-1">Specific - What specific food would you like to add/change?</div>
-                <div class="mb-1">Measurable - How much or how many will you add or change?</div>
-                <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
-                <div class="mb-1">Realistic - What can you do? (improvement over perfection)</div>
-                <div class="mb-2">Time-Connected - How often or for how long will you make this change?</div>
-                <div class="font-italic"><b>Example:</b> "I will add 1 cup of berries to breakfast and a small apple or orange as an afternoon snack at least five days this week."</div>
-            </div>
-
-            <div class="bg-light border mb-2 p-2 help-text d-none" data-category="ACTIVITY">
-                <div class="mb-1">Specific - What specific activity would you like to add/change?</div>
-                <div class="mb-1">Measurable - How much activity, how many sessions?</div>
-                <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
-                <div class="mb-1">Realistic - What can you actually do? (know your limits, start small, build)</div>
-                <div class="mb-2">Time-Connected - How frequent or how long will you do the activity?</div>
-                <div class="font-italic"><b>Example:</b> "I will walk with a friend or family member for at least 20 minutes after dinner, every weekday for the next two months."</div>
-            </div>
-
-            <div class="bg-light border mb-2 p-2 help-text d-none" data-category="SLEEP">
-                <div class="mb-1">Specific - What are you going to do to improve your sleep quality/quantity?</div>
-                <div class="mb-1">Measurable - How much time, how many sessions?</div>
-                <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
-                <div class="mb-1">Realistic - What can you actually do? (improvement over perfection)</div>
-                <div class="mb-2">Time-Connected - How frequent? How long will you commit?</div>
-                <div class="font-italic"><b>Example:</b> "I will begin a new bedtime routine of shutting off the television and instead, read a book for at least 30 minutes before bed, four nights this week."</div>
-            </div>
-
-            <div class="bg-light border mb-2 p-2 help-text d-none" data-category="SOCIAL CONNECTION">
-                <div class="mb-1">Specific - What are you going to do to improve feelings of connectedness?</div>
-                <div class="mb-1">Measurable - How much time, how many sessions?</div>
-                <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
-                <div class="mb-1">Realistic - What can you actually do? (improvement over perfection)</div>
-                <div class="mb-2">Time-Connected - How frequent? How long will you commit?</div>
-                <div class="font-italic"><b>Example:</b> "I will increase my feeling of social connectedness by joining a group fitness class that meets for an hour, three nights of the week."</div>
-            </div>
-
-            <div class="bg-light border mb-2 p-2 help-text d-none" data-category="STRESS REDUCTION">
-                <div class="mb-1">Specific - What are you going to do to manage your stress?</div>
-                <div class="mb-1">Measurable - How much time, how many sessions?</div>
-                <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
-                <div class="mb-1">Realistic - What can you actually do? (improvement over perfection)</div>
-                <div class="mb-2">Time-Connected - How frequent? How long will you commit?</div>
-                <div class="font-italic"><b>Example:</b> "I will write about what I am thankful for at least 10 minutes three times per week."</div>
-            </div>
-
-            <div class="bg-light border mb-2 p-2 help-text d-none" data-category="RISKY SUBSTANCE AVOIDANCE">
-                <div class="mb-1">Specific - What are you going to do to decrease your substance use?</div>
-                <div class="mb-1">Measurable - How much will you reduce it by?</div>
-                <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
-                <div class="mb-1">Realistic - What can you actually do? (improvement over perfection)</div>
-                <div class="mb-2">Time-Connected - How frequent? How long will you commit?</div>
-                <div class="font-italic"><b>Example:</b> "I will swap my morning cigarette with chewing gum at least 5 days this week for the next four weeks. I will ask my partner to help keep me on track and use the free texting service for more support."</div>
-            </div>
-
-            <div class="bg-light border mb-2 p-2 help-text d-none" data-category="OTHER">
-                <div class="">Ensure that the goal is Specific, Measurable, Attainable, Realistic and Time-Connected.</div>
-            </div>
-
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Goal</label>
-                <div note-rte
-                     class="form-group mb-2 border-left border-right rte-holder"
-                     data-field-name="goal"></div>
-            </div>
-
-            <div>
-                <button submit class="btn btn-sm btn-primary mr-2">Submit</button>
-                <button cancel class="btn btn-sm btn-default border">Cancel</button>
-            </div>
-        </form>
+    <div class="d-flex align-items-center">
+        <div visit-moe>
+            <form start show url="/api/visitPoint/upsertNoteSingleton" class="d-none" id="<?= $segment->uid ?>-relevance-form">
+                <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+                <input type="hidden" name="category" value="GOALS_RELEVANT_TO_NOTE_ON_INTAKE">
+                <input type="hidden" name="data">
+                <button submit class="btn btn-sm btn-info font-weight-bold">Save Relevance</button>
+            </form>
+        </div>
+        <div visit-moe large class="mt-1 w-100 border p-2 bg-white rounded">
+            <!--<a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add goal patient is ALREADY having, prior to this visit</a>-->
+            <form show url="/api/visitPoint/addTopLevelOnIntake" class="mcp-theme-1 w-100">
+                <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+                <input type="hidden" name="category" value="GOAL">
+                <input type="hidden" name="data">
+
+                <p class="mb-2"><b>Add Goal (on intake)</b></p>
+
+                <div class="mb-2">
+                    <label class="text-sm text-secondary mb-1">Category</label>
+                    <select type="text" data-name="category" class="form-control form-control-sm">
+                        <option value="">-- select --</option>
+                        <option value="NUTRITION">NUTRITION</option>
+                        <option value="ACTIVITY">ACTIVITY</option>
+                        <option value="SLEEP">SLEEP</option>
+                        <option value="SOCIAL CONNECTION">SOCIAL CONNECTION</option>
+                        <option value="STRESS REDUCTION">STRESS REDUCTION</option>
+                        <option value="RISKY SUBSTANCE AVOIDANCE">RISKY SUBSTANCE AVOIDANCE</option>
+                        <option value="OTHER">OTHER</option>
+                    </select>
+                </div>
+
+                <div class="bg-light border mb-2 p-2 help-text d-none" data-category="NUTRITION">
+                    <div class="mb-1">Specific - What specific food would you like to add/change?</div>
+                    <div class="mb-1">Measurable - How much or how many will you add or change?</div>
+                    <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
+                    <div class="mb-1">Realistic - What can you do? (improvement over perfection)</div>
+                    <div class="mb-2">Time-Connected - How often or for how long will you make this change?</div>
+                    <div class="font-italic"><b>Example:</b> "I will add 1 cup of berries to breakfast and a small apple or orange as an afternoon snack at least five days this week."</div>
+                </div>
+
+                <div class="bg-light border mb-2 p-2 help-text d-none" data-category="ACTIVITY">
+                    <div class="mb-1">Specific - What specific activity would you like to add/change?</div>
+                    <div class="mb-1">Measurable - How much activity, how many sessions?</div>
+                    <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
+                    <div class="mb-1">Realistic - What can you actually do? (know your limits, start small, build)</div>
+                    <div class="mb-2">Time-Connected - How frequent or how long will you do the activity?</div>
+                    <div class="font-italic"><b>Example:</b> "I will walk with a friend or family member for at least 20 minutes after dinner, every weekday for the next two months."</div>
+                </div>
+
+                <div class="bg-light border mb-2 p-2 help-text d-none" data-category="SLEEP">
+                    <div class="mb-1">Specific - What are you going to do to improve your sleep quality/quantity?</div>
+                    <div class="mb-1">Measurable - How much time, how many sessions?</div>
+                    <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
+                    <div class="mb-1">Realistic - What can you actually do? (improvement over perfection)</div>
+                    <div class="mb-2">Time-Connected - How frequent? How long will you commit?</div>
+                    <div class="font-italic"><b>Example:</b> "I will begin a new bedtime routine of shutting off the television and instead, read a book for at least 30 minutes before bed, four nights this week."</div>
+                </div>
+
+                <div class="bg-light border mb-2 p-2 help-text d-none" data-category="SOCIAL CONNECTION">
+                    <div class="mb-1">Specific - What are you going to do to improve feelings of connectedness?</div>
+                    <div class="mb-1">Measurable - How much time, how many sessions?</div>
+                    <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
+                    <div class="mb-1">Realistic - What can you actually do? (improvement over perfection)</div>
+                    <div class="mb-2">Time-Connected - How frequent? How long will you commit?</div>
+                    <div class="font-italic"><b>Example:</b> "I will increase my feeling of social connectedness by joining a group fitness class that meets for an hour, three nights of the week."</div>
+                </div>
+
+                <div class="bg-light border mb-2 p-2 help-text d-none" data-category="STRESS REDUCTION">
+                    <div class="mb-1">Specific - What are you going to do to manage your stress?</div>
+                    <div class="mb-1">Measurable - How much time, how many sessions?</div>
+                    <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
+                    <div class="mb-1">Realistic - What can you actually do? (improvement over perfection)</div>
+                    <div class="mb-2">Time-Connected - How frequent? How long will you commit?</div>
+                    <div class="font-italic"><b>Example:</b> "I will write about what I am thankful for at least 10 minutes three times per week."</div>
+                </div>
+
+                <div class="bg-light border mb-2 p-2 help-text d-none" data-category="RISKY SUBSTANCE AVOIDANCE">
+                    <div class="mb-1">Specific - What are you going to do to decrease your substance use?</div>
+                    <div class="mb-1">Measurable - How much will you reduce it by?</div>
+                    <div class="mb-1">Attainable - Do you have what it takes to follow through?</div>
+                    <div class="mb-1">Realistic - What can you actually do? (improvement over perfection)</div>
+                    <div class="mb-2">Time-Connected - How frequent? How long will you commit?</div>
+                    <div class="font-italic"><b>Example:</b> "I will swap my morning cigarette with chewing gum at least 5 days this week for the next four weeks. I will ask my partner to help keep me on track and use the free texting service for more support."</div>
+                </div>
+
+                <div class="bg-light border mb-2 p-2 help-text d-none" data-category="OTHER">
+                    <div class="">Ensure that the goal is Specific, Measurable, Attainable, Realistic and Time-Connected.</div>
+                </div>
+
+                <div class="mb-2">
+                    <label class="text-sm text-secondary mb-1">Goal</label>
+                    <div note-rte
+                         class="form-group mb-2 border-left border-right rte-holder"
+                         data-field-name="goal"></div>
+                </div>
+
+                <div>
+                    <button submit class="btn btn-sm btn-primary mr-2">Submit</button>
+                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                </div>
+            </form>
+        </div>
     </div>
 </div>
 
@@ -305,5 +333,39 @@ $goals = Point::getIntakePointsOfCategory($patient, 'GOAL', $note);
                 $(this).closest('form').find('.help-text[data-category="' + this.value + '"]').removeClass('d-none');
             });
 
+        // relevance
+        $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance');
+        $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance', function () {
+            let uids = $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val();
+            if(!!uids) {
+                uids = JSON.parse(uids);
+            }
+            else {
+                uids = [];
+            }
+            let uid = $(this).attr('data-uid'), found = uids.indexOf(uid) > -1;
+            if(this.checked === found) {
+                return false;
+            }
+            if(this.checked) {
+                uids.push(uid);
+            }
+            else {
+                uids = uids.filter(_x => _x !== uid);
+            }
+            $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
+            // auto save
+            $('#<?= $segment->uid ?>-relevance-form [submit]').trigger('click');
+
+            return false;
+        });
+
+        // pre-fill relevance data
+        let uids = [];
+        $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance:checked').each(function() {
+            uids.push($(this).attr('data-uid'));
+        });
+        $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
     };
 </script>

+ 28 - 0
resources/views/app/patient/segment-templates/intake_goals/summary.blade.php

@@ -14,6 +14,20 @@ foreach($goals as $goal) {
     }
     $grouped[$goal->data->category][] = $goal;
 }
+
+$relevance = Point::where('added_in_segment_id', $segment->id)
+    ->where('category', 'GOALS_RELEVANT_TO_NOTE_ON_INTAKE')
+    ->orderBy('id', 'DESC')
+    ->first();
+if (!!@$relevance->data) {
+    $relevance = json_decode($relevance->data, true);
+}
+else {
+    $relevance = [];
+}
+
+$numRelevant = 0;
+
 ?>
 
 <?php if (!count($grouped)): ?>
@@ -24,6 +38,12 @@ foreach($goals as $goal) {
         <?php foreach($group as $goal): ?>
             <div class="pl-2 mb-2">
                 <div class="d-flex align-items-baseline">
+                    @if(in_array($goal->uid, $relevance))
+                        <span class="text-info mr-1">
+                            <i class="fa fa-star"></i>
+                        </span>
+                        <?php $numRelevant++; ?>
+                    @endif
                     <div class="<?= $goal->is_removed ? 'strike-through' : '' ?>">
                         <?= !!@($goal->data->goal) ? @($goal->data->goal) : '' ?>
                     </div>
@@ -43,8 +63,16 @@ foreach($goals as $goal) {
                     <div class="text-secondary font-weight-bold">Review</div>
                     <div>{!! $review->data->value !!}</div>
                 </div>
+                <?php elseif(in_array($goal->uid, $relevance)): ?>
+                <div class="relevant-without-review text-danger mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Review missing</div>
                 <?php endif; ?>
             </div>
         <?php endforeach; ?>
     <?php endforeach; ?>
+    @if($numRelevant)
+        <div class="d-flex align-items-baseline text-info mr-1 mt-3">
+            <span class="text-sm mr-1"><i class="fa fa-star text-sm"></i></span>
+            <span class="text-sm">Goals relevant to this note</span>
+        </div>
+    @endif
 <?php endif; ?>

+ 114 - 48
resources/views/app/patient/segment-templates/intake_medications/edit.blade.php

@@ -11,6 +11,16 @@ use App\Models\Segment;
 
 $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
 
+$relevance = Point::where('added_in_segment_id', $segment->id)
+    ->where('category', 'MEDICATIONS_RELEVANT_TO_NOTE_ON_INTAKE')
+    ->orderBy('id', 'DESC')->first();
+if (!!@$relevance->data) {
+    $relevance = json_decode($relevance->data, true);
+}
+else {
+    $relevance = [];
+}
+
 ?>
 <div>
 
@@ -18,6 +28,7 @@ $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
         <table class="table table-sm table-bordered table-striped mb-0 bg-white">
             <thead>
             <tr class="">
+                <th class="border-bottom-0 width-100px text-info">Relevant to<br>this visit</th>
                 <th class="border-bottom-0">Medication</th>
                 <th class="border-bottom-0">Most Recent Review</th>
                 <th class="border-bottom-0">Most Recent Plan</th>
@@ -26,6 +37,13 @@ $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
             </thead>
             <?php foreach($medications as $medication): ?>
                 <tr>
+                    <td class="p-0">
+                        <label class="d-flex align-items-center px-2 py-1 m-0 c-pointer">
+                            <input type="checkbox" class="m-0 chk-relevance"
+                                   data-uid="{{$medication->uid}}" {{in_array($medication->uid, $relevance) ? 'checked' : ''}}>
+                            <span>&nbsp;</span>
+                        </label>
+                    </td>
                     <td>
                         <div class="d-flex align-items-baseline">
                             <div class="<?= $medication->is_removed ? 'strike-through' : '' ?>">
@@ -158,55 +176,68 @@ $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
         </table>
     </div>
 
-    <div visit-moe large class="mt-1">
-        <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add medication patient is ALREADY taking, prior to this visit</a>
-        <form url="/api/visitPoint/addTopLevelOnIntake" class="mcp-theme-1">
-            <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
-            <input type="hidden" name="category" value="MEDICATION">
-            <input type="hidden" name="data">
-
-            <input type="hidden" data-name="medId">
-            <input type="hidden" data-name="routedMedId">
-            <input type="hidden" data-name="routedDosageFormMedId">
-            <input type="hidden" data-name="gcnSeqno">
-
-            <p class="mb-2"><b>Add Medication (on intake)</b></p>
-
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Medication</label>
-                <input type="text"
-                       data-name="name"
-                       class="form-control form-control-sm"
-                       stag-suggest
-                       stag-suggest-ep="/fdb-med-suggest-v2/json">
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Frequency</label>
-                <input type="text" class="form-control form-control-sm" data-name="frequency"
-                       data-option-list="frequency-options" autocomplete="off">
-                <div id="frequency-options" class="data-option-list">
-                    <div>Once a day</div>
-                    <div>Twice a day</div>
+    <div class="d-flex align-items-center">
+        <div visit-moe>
+            <form start show url="/api/visitPoint/upsertNoteSingleton" class="d-none" id="<?= $segment->uid ?>-relevance-form">
+                <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+                <input type="hidden" name="category" value="MEDICATIONS_RELEVANT_TO_NOTE_ON_INTAKE">
+                <input type="hidden" name="data">
+                <button submit class="btn btn-sm btn-info font-weight-bold">Save Relevance</button>
+            </form>
+        </div>
+        <div visit-moe large class="mt-1 w-100 border p-2 bg-white rounded">
+            <!--<a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add medication patient is ALREADY taking, prior to this visit</a>-->
+            <form show url="/api/visitPoint/addTopLevelOnIntake" class="mcp-theme-1 w-100">
+                <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+                <input type="hidden" name="category" value="MEDICATION">
+                <input type="hidden" name="data">
+
+                <input type="hidden" data-name="medId">
+                <input type="hidden" data-name="routedMedId">
+                <input type="hidden" data-name="routedDosageFormMedId">
+                <input type="hidden" data-name="gcnSeqno">
+
+                <p class="mb-2"><b>Add Medication (on intake)</b></p>
+
+                <div class="d-flex align-items-start">
+
+                <div class="mb-2 w-25">
+                    <label class="text-sm text-secondary mb-1 text-nowrap">Medication</label>
+                    <input type="text"
+                           data-name="name"
+                           class="form-control form-control-sm"
+                           stag-suggest
+                           stag-suggest-ep="/fdb-med-suggest-v2/json">
+                </div>
+                <div class="mb-2 ml-2">
+                    <label class="text-sm text-secondary mb-1 text-nowrap">Frequency</label>
+                    <input type="text" class="form-control form-control-sm" data-name="frequency"
+                           data-option-list="frequency-options" autocomplete="off">
+                    <div id="frequency-options" class="data-option-list">
+                        <div>Once a day</div>
+                        <div>Twice a day</div>
+                    </div>
+                </div>
+                <div class="mb-2 ml-2">
+                    <label class="text-sm text-secondary mb-1 text-nowrap">Start Date</label>
+                    <input type="date" class="form-control form-control-sm" data-name="start_date">
+                </div>
+                <div class="mb-2 ml-2">
+                    <label class="text-sm text-secondary mb-1 text-nowrap">Prescribed By</label>
+                    <input type="text" class="form-control form-control-sm" data-name="prescriber">
+                </div>
+                <div class="mb-2 ml-2 flex-grow-1">
+                    <label class="text-sm text-secondary mb-1 text-nowrap">Description</label>
+                    <textarea rows="1" data-name="description" class="form-control form-control-sm"></textarea>
+                </div>
+                </div>
+
+                <div class="d-flex align-items-start">
+                    <button submit class="btn btn-sm btn-primary mr-2">Submit</button>
+                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
                 </div>
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Start Date</label>
-                <input type="date" class="form-control form-control-sm" data-name="start_date">
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Prescribed By</label>
-                <input type="text" class="form-control form-control-sm" data-name="prescriber">
-            </div>
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Description</label>
-                <textarea type="text" data-name="description" class="form-control form-control-sm"></textarea>
-            </div>
-
-            <div>
-                <button submit class="btn btn-sm btn-primary mr-2">Submit</button>
-                <button cancel class="btn btn-sm btn-default border">Cancel</button>
-            </div>
-        </form>
+            </form>
+        </div>
     </div>
 </div>
 
@@ -238,6 +269,41 @@ $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
                 return false;
             });
 
+        // relevance
+        $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance');
+        $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance', function () {
+            let uids = $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val();
+            if(!!uids) {
+                uids = JSON.parse(uids);
+            }
+            else {
+                uids = [];
+            }
+            let uid = $(this).attr('data-uid'), found = uids.indexOf(uid) > -1;
+            if(this.checked === found) {
+                return false;
+            }
+            if(this.checked) {
+                uids.push(uid);
+            }
+            else {
+                uids = uids.filter(_x => _x !== uid);
+            }
+            $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
+            // auto save
+            $('#<?= $segment->uid ?>-relevance-form [submit]').trigger('click');
+
+            return false;
+        });
+
+        // pre-fill relevance data
+        let uids = [];
+        $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance:checked').each(function() {
+            uids.push($(this).attr('data-uid'));
+        });
+        $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
     };
 </script>
 

+ 27 - 0
resources/views/app/patient/segment-templates/intake_medications/summary.blade.php

@@ -6,6 +6,19 @@ use App\Models\Point;
 
 $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
 
+$relevance = Point::where('added_in_segment_id', $segment->id)
+    ->where('category', 'MEDICATIONS_RELEVANT_TO_NOTE_ON_INTAKE')
+    ->orderBy('id', 'DESC')
+    ->first();
+if (!!@$relevance->data) {
+    $relevance = json_decode($relevance->data, true);
+}
+else {
+    $relevance = [];
+}
+
+$numRelevant = 0;
+
 ?>
 
 <?php if (!count($medications)): ?>
@@ -14,6 +27,12 @@ $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
     <?php foreach ($medications as $medication): ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
+                @if(in_array($medication->uid, $relevance))
+                    <span class="text-info mr-1">
+                        <i class="fa fa-star"></i>
+                    </span>
+                    <?php $numRelevant++; ?>
+                @endif
                 <div class="<?= $medication->is_removed ? 'strike-through' : '' ?>">
                     <b><?= !!@($medication->data->name) ? @($medication->data->name) : '-' ?></b>
                     <?= !!@($medication->data->frequency) ? '/&nbsp;' . @($medication->data->frequency) : '' ?>
@@ -35,8 +54,16 @@ $medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
                 <div class="text-secondary font-weight-bold">Review</div>
                 <div>{!! $review->data->value !!}</div>
             </div>
+            <?php elseif(in_array($medication->uid, $relevance)): ?>
+            <div class="relevant-without-review text-danger mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Review missing</div>
             <?php endif; ?>
         </div>
     <?php endforeach; ?>
+    @if($numRelevant)
+        <div class="d-flex align-items-baseline text-info mr-1 mt-3">
+            <span class="text-sm mr-1"><i class="fa fa-star text-sm"></i></span>
+            <span class="text-sm">Medications to this note</span>
+        </div>
+    @endif
 <?php endif; ?>
 

+ 105 - 38
resources/views/app/patient/segment-templates/intake_problems/edit.blade.php

@@ -11,6 +11,16 @@ use \App\Models\Segment;
 
 $problems = Point::getIntakePointsOfCategory($patient, 'PROBLEM', $note);
 
+$relevance = Point::where('added_in_segment_id', $segment->id)
+    ->where('category', 'PROBLEMS_RELEVANT_TO_NOTE_ON_INTAKE')
+    ->orderBy('id', 'DESC')->first();
+if (!!@$relevance->data) {
+    $relevance = json_decode($relevance->data, true);
+}
+else {
+    $relevance = [];
+}
+
 ?>
 <div>
 
@@ -18,6 +28,7 @@ $problems = Point::getIntakePointsOfCategory($patient, 'PROBLEM', $note);
         <table class="table table-sm table-bordered table-striped mb-0 bg-white">
             <thead>
             <tr class="">
+                <th class="border-bottom-0 width-100px text-info">Relevant to<br>this visit</th>
                 <th class="border-bottom-0">Problem</th>
                 <th class="border-bottom-0">Most Recent Review</th>
                 <th class="border-bottom-0">Most Recent Plan</th>
@@ -26,6 +37,13 @@ $problems = Point::getIntakePointsOfCategory($patient, 'PROBLEM', $note);
             </thead>
             <?php foreach($problems as $problem): ?>
             <tr>
+                <td class="p-0">
+                    <label class="d-flex align-items-center px-2 py-1 m-0 c-pointer">
+                        <input type="checkbox" class="m-0 chk-relevance"
+                               data-uid="{{$problem->uid}}" {{in_array($problem->uid, $relevance) ? 'checked' : ''}}>
+                        <span>&nbsp;</span>
+                    </label>
+                </td>
                 <td>
                     <div class="d-flex align-items-baseline">
                         <div class="<?= $problem->is_removed ? 'strike-through' : '' ?>">
@@ -132,44 +150,58 @@ $problems = Point::getIntakePointsOfCategory($patient, 'PROBLEM', $note);
         </table>
     </div>
 
-    <div visit-moe large class="mt-1 max-width-500px">
-        <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add Problem patient is ALREADY having, prior
-            to this visit</a>
-        <form url="/api/visitPoint/addTopLevelOnIntake" class="mcp-theme-1">
-            <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
-            <input type="hidden" name="category" value="PROBLEM">
-            <input type="hidden" name="data">
-
-            <input type="hidden" data-name="dxid">
-            <input type="hidden" data-name="icd-type">
-
-            <p class="mb-2"><b>Add Problem (on intake)</b></p>
-
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Name</label>
-                <input type="text" data-name="name" class="form-control form-control-sm"
-                       stag-suggest
-                       stag-suggest-ep="/fdb-dx-suggest/json">
-            </div>
-
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">ICD</label>
-                <select data-name="icd"
-                        class="form-control form-control-sm"
-                        disabled>
-                </select>
-            </div>
-
-            <div class="mb-2">
-                <label class="text-sm text-secondary mb-1">Description</label>
-                <textarea type="text" data-name="description" class="form-control form-control-sm"></textarea>
-            </div>
-
-            <div>
-                <button submit class="btn btn-sm btn-primary mr-2">Submit</button>
-                <button cancel class="btn btn-sm btn-default border">Cancel</button>
-            </div>
-        </form>
+    <div class="d-flex align-items-center">
+        <div visit-moe>
+            <form start show url="/api/visitPoint/upsertNoteSingleton" class="d-none" id="<?= $segment->uid ?>-relevance-form">
+                <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+                <input type="hidden" name="category" value="PROBLEMS_RELEVANT_TO_NOTE_ON_INTAKE">
+                <input type="hidden" name="data">
+                <button submit class="btn btn-sm btn-info font-weight-bold">Save Relevance</button>
+            </form>
+        </div>
+        <div visit-moe large class="mt-1 w-100 border p-2 bg-white rounded">
+            <!--<a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add Problem patient is ALREADY having, prior
+                to this visit</a>-->
+            <form show url="/api/visitPoint/addTopLevelOnIntake" class="mcp-theme-1 w-100">
+                <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+                <input type="hidden" name="category" value="PROBLEM">
+                <input type="hidden" name="data">
+
+                <input type="hidden" data-name="dxid">
+                <input type="hidden" data-name="icd-type">
+
+                <p class="mb-2"><b>Add Problem (on intake)</b></p>
+
+                <div class="d-flex align-items-start">
+
+                <div class="mb-2 w-25">
+                    <label class="text-sm text-secondary mb-1">Name</label>
+                    <input type="text" data-name="name" class="form-control form-control-sm"
+                           stag-suggest
+                           stag-suggest-ep="/fdb-dx-suggest/json">
+                </div>
+
+                <div class="mb-2 w-25 ml-2">
+                    <label class="text-sm text-secondary mb-1">ICD</label>
+                    <select data-name="icd"
+                            class="form-control form-control-sm"
+                            disabled>
+                    </select>
+                </div>
+
+                <div class="mb-2 ml-2 flex-grow-1">
+                    <label class="text-sm text-secondary mb-1">Description</label>
+                    <textarea rows="1" data-name="description" class="form-control form-control-sm"></textarea>
+                </div>
+
+                </div>
+
+                <div>
+                    <button submit class="btn btn-sm btn-primary mr-2">Submit</button>
+                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                </div>
+            </form>
+        </div>
     </div>
 </div>
 
@@ -210,5 +242,40 @@ $problems = Point::getIntakePointsOfCategory($patient, 'PROBLEM', $note);
             $(this).closest('form').find('input[data-name="icd-type"]').val($(this).find('option:selected').attr('data-icd-type'));
         });
 
+        // relevance
+        $(document).off('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance');
+        $(document).on('change', '[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance', function () {
+            let uids = $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val();
+            if(!!uids) {
+                uids = JSON.parse(uids);
+            }
+            else {
+                uids = [];
+            }
+            let uid = $(this).attr('data-uid'), found = uids.indexOf(uid) > -1;
+            if(this.checked === found) {
+                return false;
+            }
+            if(this.checked) {
+                uids.push(uid);
+            }
+            else {
+                uids = uids.filter(_x => _x !== uid);
+            }
+            $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
+            // auto save
+            $('#<?= $segment->uid ?>-relevance-form [submit]').trigger('click');
+
+            return false;
+        });
+
+        // pre-fill relevance data
+        let uids = [];
+        $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance:checked').each(function() {
+            uids.push($(this).attr('data-uid'));
+        });
+        $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
     };
 </script>

+ 25 - 0
resources/views/app/patient/segment-templates/intake_problems/summary.blade.php

@@ -6,6 +6,17 @@ use App\Models\Point;
 
 $problems = Point::getIntakePointsOfCategory($patient, 'PROBLEM', $note);
 
+$relevance = Point::where('added_in_segment_id', $segment->id)
+    ->where('category', 'PROBLEMS_RELEVANT_TO_NOTE_ON_INTAKE')
+    ->orderBy('id', 'DESC')
+    ->first();
+if (!!@$relevance->data) {
+    $relevance = json_decode($relevance->data, true);
+}
+else {
+    $relevance = [];
+}
+$numRelevant = 0;
 ?>
 
 <?php if (!count($problems)): ?>
@@ -14,6 +25,12 @@ $problems = Point::getIntakePointsOfCategory($patient, 'PROBLEM', $note);
     <?php foreach ($problems as $problem): ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
+                @if(in_array($problem->uid, $relevance))
+                    <span class="text-info mr-1">
+                        <i class="fa fa-star"></i>
+                    </span>
+                    <?php $numRelevant++; ?>
+                @endif
                 <div class="<?= $problem->is_removed ? 'strike-through' : '' ?>">
                     <b><?= !!@($problem->data->name) ? @($problem->data->name) : '-' ?></b>
                     <?= !!@($problem->data->icd) ? '/&nbsp;' . @($problem->data->icd) : '' ?>
@@ -38,8 +55,16 @@ $problems = Point::getIntakePointsOfCategory($patient, 'PROBLEM', $note);
                 include resource_path('views/app/patient/segment-templates/_review/problem/view.php');
                 ?>
             </div>
+            <?php elseif(in_array($problem->uid, $relevance)): ?>
+            <div class="relevant-without-review text-danger mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Review missing</div>
             <?php endif; ?>
         </div>
     <?php endforeach; ?>
+    @if($numRelevant)
+        <div class="d-flex align-items-baseline text-info mr-1 mt-3">
+            <span class="text-sm mr-1"><i class="fa fa-star text-sm"></i></span>
+            <span class="text-sm">Problems relevant to this note</span>
+        </div>
+    @endif
 <?php endif; ?>
 

+ 12 - 6
resources/views/app/patient/segment-templates/medrisk_vigilence/summary.blade.php

@@ -28,7 +28,8 @@ $hasMRVData = false;
 
 @if(!!$dptInfo)
     <?php $hasMRVData = true; ?>
-    <div class="m-neg-3 p-3 mb-3 mt-2 border bg-white mr-0">
+    <div class="mrv-badge mt-2 align-self-center on-hover-hide mx-auto" title="Duplicate Therapy Notes"><span>DT</span></div>
+    <div class="p-3 mb-3 mt-2 border bg-white mr-0 on-hover-only">
         <p class="font-weight-bold m-0 font-size-14 text-info">Duplicate Therapy Notes</p>
         <div class="mt-3 ml-3">
             {!! $dptInfo !!}
@@ -38,7 +39,8 @@ $hasMRVData = false;
 
 @if(!!$coadministration)
     <?php $hasMRVData = true; ?>
-    <div class="m-neg-3 p-3 mb-3 mt-2 border bg-white mr-0">
+    <div class="mrv-badge mt-2 align-self-center on-hover-hide mx-auto" title="Coadministration Notes"><span>CA</span></div>
+    <div class="p-3 mb-3 mt-2 border bg-white mr-0 on-hover-only">
         <p class="font-weight-bold m-0 font-size-14 text-info">Coadministration Notes</p>
         <div class="mt-3 ml-3">
             {!! $coadministration !!}
@@ -48,7 +50,8 @@ $hasMRVData = false;
 
 @if(!!$dam)
     <?php $hasMRVData = true; ?>
-    <div class="m-neg-3 p-3 mb-3 mt-2 border bg-white mr-0">
+    <div class="mrv-badge mt-2 align-self-center on-hover-hide mx-auto" title="Drug Allergy Notes"><span>DA</span></div>
+    <div class="p-3 mb-3 mt-2 border bg-white mr-0 on-hover-only">
         <p class="font-weight-bold m-0 font-size-14 text-info">Drug Allergy Notes</p>
         <div class="mt-3 ml-3">
             {!! $dam !!}
@@ -58,7 +61,8 @@ $hasMRVData = false;
 
 @if(!!$ddi)
     <?php $hasMRVData = true; ?>
-    <div class="m-neg-3 p-3 mb-3 mt-2 border bg-white mr-0">
+    <div class="mrv-badge mt-2 align-self-center on-hover-hide mx-auto" title="Drug-Drug Interaction Notes"><span>DI</span></div>
+    <div class="p-3 mb-3 mt-2 border bg-white mr-0 on-hover-only">
         <p class="font-weight-bold m-0 font-size-14 text-info">Drug-Drug Interaction Notes</p>
         <div class="mt-3 ml-3">
             {!! $ddi !!}
@@ -68,7 +72,8 @@ $hasMRVData = false;
 
 @if(count($sideeffects))
     <?php $hasMRVData = true; ?>
-    <div class="m-neg-3 p-3 mb-3 mt-2 border bg-white mr-0">
+    <div class="mrv-badge mt-2 align-self-center on-hover-hide mx-auto" title="Side Effects"><span>SE</span></div>
+    <div class="p-3 mb-3 mt-2 border bg-white mr-0 on-hover-only">
         <p class="font-weight-bold m-0 font-size-14 text-info">Side Effects</p>
         @foreach($sideeffects as $drug => $sideeffect)
             <div class="mt-3 ml-3">
@@ -85,7 +90,8 @@ $hasMRVData = false;
 
 @if(count($contraindications))
     <?php $hasMRVData = true; ?>
-    <div class="m-neg-3 p-3 mb-3 mt-2 border bg-white mr-0">
+    <div class="mrv-badge mt-2 align-self-center on-hover-hide mx-auto" title="Contraindications"><span>CI</span></div>
+    <div class="p-3 mb-3 mt-2 border bg-white mr-0 on-hover-only">
         <p class="font-weight-bold m-0 font-size-14 text-info">Contraindications</p>
         @foreach($contraindications as $drug => $contraindication)
             <div class="mt-3 ml-3">

+ 32 - 19
resources/views/app/patient/segment-templates/plan_allergies/edit.blade.php

@@ -13,7 +13,7 @@ $allergies = Point::getPlanPointsOfCategory($patient, 'ALLERGY', $note);
 $intakeOrVisit = 'PLAN';
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'ALLERGIES_RELEVANT_TO_NOTE')
+    ->where('category', 'ALLERGIES_RELEVANT_TO_NOTE_DURING_VISIT')
     ->orderBy('id', 'DESC')->first();
 if (!!@$relevance->data) {
     $relevance = json_decode($relevance->data, true);
@@ -38,14 +38,14 @@ else {
             <?php foreach($allergies as $allergy): ?>
                 <?php $point = $allergy; ?>
                 <tr>
+                    <td class="p-0">
+                        <label class="d-flex align-items-center px-2 py-1 m-0 c-pointer">
+                            <input type="checkbox" class="m-0 chk-relevance"
+                                   data-uid="{{$allergy->uid}}" {{in_array($allergy->uid, $relevance) ? 'checked' : ''}}>
+                            <span>&nbsp;</span>
+                        </label>
+                    </td>
                     <td>
-                    <div class="d-flex align-items-center">
-                        <input type="checkbox" class="m-0 chk-relevance"
-                               data-uid="{{$allergy->uid}}" {{in_array($allergy->uid, $relevance) ? 'checked' : ''}}>
-                        <span>&nbsp;</span>
-                    </div>
-                </td>
-                <td>
                         <div class="d-flex align-items-baseline">
                             <div class="<?= $allergy->is_removed ? 'strike-through' : '' ?>">
                                 <b><?= !!@($allergy->data->name) ? @($allergy->data->name) : '-' ?></b>
@@ -97,7 +97,6 @@ else {
                         <div class="d-flex align-items-start">
                             <div class="flex-grow-1">
                                 <?php
-                                $point = $allergy;
                                 include resource_path('views/app/patient/segment-templates/_child_review/last-review.php');
                                 ?>
                             </div>
@@ -139,16 +138,16 @@ else {
 
     <div class="d-flex align-items-center">
         <div visit-moe>
-            <form start show url="/api/visitPoint/upsertNoteSingleton" class="mcp-theme-1" id="<?= $segment->uid ?>-relevance-form">
+            <form start show url="/api/visitPoint/upsertNoteSingleton" class="d-none" id="<?= $segment->uid ?>-relevance-form">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
-                <input type="hidden" name="category" value="ALLERGIES_RELEVANT_TO_NOTE">
+                <input type="hidden" name="category" value="ALLERGIES_RELEVANT_TO_NOTE_DURING_VISIT">
                 <input type="hidden" name="data">
                 <button submit class="btn btn-sm btn-info font-weight-bold">Save Relevance</button>
             </form>
         </div>
-        <div visit-moe large class="ml-2 max-width-500px">
-            <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new allergy, added during this visit</a>
-            <form url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1">
+        <div visit-moe large class="mt-1 w-100 border p-2 bg-white rounded">
+            <!--<a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new allergy, added during this visit</a>-->
+            <form show url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1 w-100">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
                 <input type="hidden" name="category" value="ALLERGY">
                 <input type="hidden" name="data">
@@ -158,15 +157,19 @@ else {
                 <input type="hidden" data-name="damConceptId">
                 <input type="hidden" data-name="damConceptIdType">
 
-                <div class="mb-2">
+                <div class="d-flex align-items-start">
+
+                <div class="mb-2 w-25">
                     <label class="text-sm text-secondary mb-1">Name</label>
                     <input type="text" data-name="name" class="form-control form-control-sm"
                            stag-suggest
                            stag-suggest-ep="/fdb-allergy-suggest/json">
                 </div>
-                <div class="mb-2">
+                <div class="mb-2 ml-2 flex-grow-1">
                     <label class="text-sm text-secondary mb-1">Description</label>
-                    <textarea type="text" data-name="description" class="form-control form-control-sm"></textarea>
+                    <textarea rows="1" data-name="description" class="form-control form-control-sm"></textarea>
+                </div>
+
                 </div>
 
                 <div>
@@ -187,8 +190,8 @@ else {
         parentSegment.find('input[stag-suggest][data-name="name"]')
             .off('stag-suggest-selected')
             .on('stag-suggest-selected', (_e, _input, _data) => {
-                $('input[data-name="damConceptId"]').val(_data.dam_concept_id);
-                $('input[data-name="damConceptIdType"]').val(_data.dam_concept_id_typ);
+                _input.closest('form').find('input[data-name="damConceptId"]').val(_data.dam_concept_id);
+                _input.closest('form').find('input[data-name="damConceptIdType"]').val(_data.dam_concept_id_typ);
             });
 
         // relevance
@@ -212,8 +215,18 @@ else {
                 uids = uids.filter(_x => _x !== uid);
             }
             $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
+            // auto save
+            $('#<?= $segment->uid ?>-relevance-form [submit]').trigger('click');
+
             return false;
         });
 
+        // pre-fill relevance data
+        let uids = [];
+        $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance:checked').each(function() {
+            uids.push($(this).attr('data-uid'));
+        });
+        $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
     };
 </script>

+ 5 - 3
resources/views/app/patient/segment-templates/plan_allergies/summary.blade.php

@@ -7,7 +7,7 @@ use App\Models\Point;
 $allergies = Point::getPlanPointsOfCategory($patient, 'ALLERGY', $note);
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'ALLERGIES_RELEVANT_TO_NOTE')
+    ->where('category', 'ALLERGIES_RELEVANT_TO_NOTE_DURING_VISIT')
     ->orderBy('id', 'DESC')
     ->first();
 if (!!@$relevance->data) {
@@ -28,8 +28,8 @@ $numRelevant = 0;
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if(in_array($allergy->uid, $relevance))
-                    <span class="text-info mr-1 text-sm">
-                        <i class="fa fa-star text-sm"></i>
+                    <span class="text-info mr-1">
+                        <i class="fa fa-star"></i>
                     </span>
                     <?php $numRelevant++; ?>
                 @endif
@@ -57,6 +57,8 @@ $numRelevant = 0;
                 <div class="text-secondary font-weight-bold">Plan</div>
                 <div>{!! $review->data->value !!}</div>
             </div>
+            <?php elseif(in_array($allergy->uid, $relevance)): ?>
+            <div class="relevant-without-plan text-danger mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
             <?php endif; ?>
         </div>
     <?php endforeach; ?>

+ 31 - 17
resources/views/app/patient/segment-templates/plan_care_team/edit.blade.php

@@ -13,7 +13,7 @@ $careTeamMembers = Point::getPlanPointsOfCategory($patient, 'CARE_TEAM_MEMBER',
 $intakeOrVisit = 'PLAN';
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'CARE_TEAM_MEMBERS_RELEVANT_TO_NOTE')
+    ->where('category', 'CARE_TEAM_MEMBERS_RELEVANT_TO_NOTE_DURING_VISIT')
     ->orderBy('id', 'DESC')->first();
 if (!!@$relevance->data) {
     $relevance = json_decode($relevance->data, true);
@@ -38,12 +38,12 @@ else {
             <?php foreach($careTeamMembers as $careTeamMember): ?>
                 <?php $point = $careTeamMember; ?>
                 <tr>
-                    <td>
-                        <div class="d-flex align-items-center">
+                    <td class="p-0">
+                        <label class="d-flex align-items-center px-2 py-1 m-0 c-pointer">
                             <input type="checkbox" class="m-0 chk-relevance"
                                    data-uid="{{$careTeamMember->uid}}" {{in_array($careTeamMember->uid, $relevance) ? 'checked' : ''}}>
                             <span>&nbsp;</span>
-                        </div>
+                        </label>
                     </td>
                     <td>
                         <div class="d-flex align-items-baseline">
@@ -160,49 +160,53 @@ else {
 
     <div class="d-flex align-items-center">
         <div visit-moe>
-            <form start show url="/api/visitPoint/upsertNoteSingleton" class="mcp-theme-1" id="<?= $segment->uid ?>-relevance-form">
+            <form start show url="/api/visitPoint/upsertNoteSingleton" class="d-none" id="<?= $segment->uid ?>-relevance-form">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
-                <input type="hidden" name="category" value="CARE_TEAM_MEMBERS_RELEVANT_TO_NOTE">
+                <input type="hidden" name="category" value="CARE_TEAM_MEMBERS_RELEVANT_TO_NOTE_DURING_VISIT">
                 <input type="hidden" name="data">
                 <button submit class="btn btn-sm btn-info font-weight-bold">Save Relevance</button>
             </form>
         </div>
-        <div visit-moe large class="ml-2 max-width-500px">
-            <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new care team member, added during this visit</a>
-            <form url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1">
+        <div visit-moe large class="mt-1 w-100 border p-2 bg-white rounded">
+            <!--<a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new care team member, added during this visit</a>-->
+            <form show url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1 w-100">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
                 <input type="hidden" name="category" value="CARE_TEAM_MEMBER">
                 <input type="hidden" name="data">
 
-                <p class="mb-2"><b>Add Care Team Member (on intake)</b></p>
+                <p class="mb-2"><b>Add Care Team Member (plan)</b></p>
+
+                <div class="d-flex align-items-start">
 
                 <div class="mb-2">
                     <label class="text-sm text-secondary mb-1">Name</label>
                     <input type="text" data-name="name" class="form-control form-control-sm">
                 </div>
-                <div class="mb-2">
+                <div class="mb-2 ml-2">
                     <label class="text-sm text-secondary mb-1">Specialty</label>
                     <input type="text" data-name="specialty" class="form-control form-control-sm">
                 </div>
-                <div class="mb-2">
+                <div class="mb-2 ml-2">
                     <label class="text-sm text-secondary mb-1">Organization</label>
                     <input type="text" data-name="organization" class="form-control form-control-sm">
                 </div>
-                <div class="mb-2">
+                <div class="mb-2 ml-2">
                     <label class="text-sm text-secondary mb-1">Phone</label>
                     <input type="text" data-name="phone" class="form-control form-control-sm">
                 </div>
-                <div class="mb-2">
+                <div class="mb-2 ml-2">
                     <label class="text-sm text-secondary mb-1">Fax</label>
                     <input type="text" data-name="fax" class="form-control form-control-sm">
                 </div>
-                <div class="mb-2">
+                <div class="mb-2 ml-2">
                     <label class="text-sm text-secondary mb-1">Date</label>
                     <input type="date" data-name="date" class="form-control form-control-sm">
                 </div>
-                <div class="mb-2">
+                <div class="mb-2 ml-2 flex-grow-1">
                     <label class="text-sm text-secondary mb-1">Memo</label>
-                    <textarea type="text" data-name="memo" class="form-control form-control-sm"></textarea>
+                    <textarea rows="1" data-name="memo" class="form-control form-control-sm"></textarea>
+                </div>
+
                 </div>
 
                 <div>
@@ -242,8 +246,18 @@ else {
                 uids = uids.filter(_x => _x !== uid);
             }
             $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
+            // auto save
+            $('#<?= $segment->uid ?>-relevance-form [submit]').trigger('click');
+
             return false;
         });
 
+        // pre-fill relevance data
+        let uids = [];
+        $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance:checked').each(function() {
+            uids.push($(this).attr('data-uid'));
+        });
+        $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
     };
 </script>

+ 5 - 3
resources/views/app/patient/segment-templates/plan_care_team/summary.blade.php

@@ -7,7 +7,7 @@ use App\Models\Point;
 $careTeamMembers = Point::getPlanPointsOfCategory($patient, 'CARE_TEAM_MEMBER', $note);
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'CARE_TEAM_MEMBERS_RELEVANT_TO_NOTE')
+    ->where('category', 'CARE_TEAM_MEMBERS_RELEVANT_TO_NOTE_DURING_VISIT')
     ->orderBy('id', 'DESC')
     ->first();
 if (!!@$relevance->data) {
@@ -28,8 +28,8 @@ $numRelevant = 0;
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if(in_array($careTeamMember->uid, $relevance))
-                    <span class="text-info mr-1 text-sm">
-                        <i class="fa fa-star text-sm"></i>
+                    <span class="text-info mr-1">
+                        <i class="fa fa-star"></i>
                     </span>
                     <?php $numRelevant++; ?>
                 @endif
@@ -61,6 +61,8 @@ $numRelevant = 0;
                 <div class="text-secondary font-weight-bold">Plan</div>
                 <div>{!! $review->data->value !!}</div>
             </div>
+            <?php elseif(in_array($careTeamMember->uid, $relevance)): ?>
+            <div class="relevant-without-plan text-danger mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
             <?php endif; ?>
         </div>
     <?php endforeach; ?>

+ 19 - 10
resources/views/app/patient/segment-templates/plan_goals/edit.blade.php

@@ -13,7 +13,7 @@ $goals = Point::getPlanPointsOfCategory($patient, 'GOAL', $note);
 $intakeOrVisit = 'PLAN';
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'GOALS_RELEVANT_TO_NOTE')
+    ->where('category', 'GOALS_RELEVANT_TO_NOTE_DURING_VISIT')
     ->orderBy('id', 'DESC')->first();
 if (!!@$relevance->data) {
     $relevance = json_decode($relevance->data, true);
@@ -41,12 +41,12 @@ else {
                 <?php if(@($goal->data->category)): ?>
                 <?php $point = $goal; ?>
                 <tr>
-                    <td>
-                        <div class="d-flex align-items-center">
+                    <td class="p-0">
+                        <label class="d-flex align-items-center px-2 py-1 m-0 c-pointer">
                             <input type="checkbox" class="m-0 chk-relevance"
                                    data-uid="{{$goal->uid}}" {{in_array($goal->uid, $relevance) ? 'checked' : ''}}>
                             <span>&nbsp;</span>
-                        </div>
+                        </label>
                     </td>
                     <td>
                         <?php if($previousCategory === $goal->data->category): ?>
@@ -215,16 +215,16 @@ else {
 
     <div class="d-flex align-items-center">
         <div visit-moe>
-            <form start show url="/api/visitPoint/upsertNoteSingleton" class="mcp-theme-1" id="<?= $segment->uid ?>-relevance-form">
+            <form start show url="/api/visitPoint/upsertNoteSingleton" class="d-none" id="<?= $segment->uid ?>-relevance-form">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
-                <input type="hidden" name="category" value="GOALS_RELEVANT_TO_NOTE">
+                <input type="hidden" name="category" value="GOALS_RELEVANT_TO_NOTE_DURING_VISIT">
                 <input type="hidden" name="data">
                 <button submit class="btn btn-sm btn-info font-weight-bold">Save Relevance</button>
             </form>
         </div>
-        <div visit-moe large class="ml-2 max-width-500px">
-            <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new goal, added during this visit</a>
-            <form url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1 max-width-500px min-width-500px">
+        <div visit-moe large class="mt-1 w-100 border p-2 bg-white rounded">
+            <!--<a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new goal, added during this visit</a>-->
+            <form show url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1 w-100">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
                 <input type="hidden" name="category" value="GOAL">
                 <input type="hidden" name="data">
@@ -347,6 +347,10 @@ else {
                 uids = uids.filter(_x => _x !== uid);
             }
             $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
+            // auto save
+            $('#<?= $segment->uid ?>-relevance-form [submit]').trigger('click');
+
             return false;
         });
 
@@ -357,6 +361,11 @@ else {
                 $(this).closest('form').find('.help-text[data-category="' + this.value + '"]').removeClass('d-none');
             });
 
-        parentSegment.find('.chk-relevance').trigger('change');
+        // pre-fill relevance data
+        let uids = [];
+        $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance:checked').each(function() {
+            uids.push($(this).attr('data-uid'));
+        });
+        $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
     };
 </script>

+ 5 - 3
resources/views/app/patient/segment-templates/plan_goals/summary.blade.php

@@ -17,7 +17,7 @@ foreach($goals as $goal) {
 }
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'GOALS_RELEVANT_TO_NOTE')
+    ->where('category', 'GOALS_RELEVANT_TO_NOTE_DURING_VISIT')
     ->orderBy('id', 'DESC')
     ->first();
 if (!!@$relevance->data) {
@@ -39,8 +39,8 @@ $numRelevant = 0;
             <div class="pl-2 mb-2">
                 <div class="d-flex align-items-baseline">
                     @if(in_array($goal->uid, $relevance))
-                        <span class="text-info mr-1 text-sm">
-                            <i class="fa fa-star text-sm"></i>
+                        <span class="text-info mr-1">
+                            <i class="fa fa-star"></i>
                         </span>
                         <?php $numRelevant++; ?>
                     @endif
@@ -67,6 +67,8 @@ $numRelevant = 0;
                     <div class="text-secondary font-weight-bold">Plan</div>
                     <div>{!! $review->data->value !!}</div>
                 </div>
+                <?php elseif(in_array($goal->uid, $relevance)): ?>
+                <div class="relevant-without-plan text-danger mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
                 <?php endif; ?>
             </div>
         <?php endforeach; ?>

+ 17 - 7
resources/views/app/patient/segment-templates/plan_interventions/edit.blade.php

@@ -13,7 +13,7 @@ $interventions = Point::getPlanPointsOfCategory($patient, 'INTERVENTION', $note)
 $intakeOrVisit = 'PLAN';
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'INTERVENTIONS_RELEVANT_TO_NOTE')
+    ->where('category', 'INTERVENTIONS_RELEVANT_TO_NOTE_DURING_VISIT')
     ->orderBy('id', 'DESC')->first();
 if (!!@$relevance->data) {
     $relevance = json_decode($relevance->data, true);
@@ -40,12 +40,12 @@ else {
             <?php foreach($interventions as $intervention): ?>
                 <?php $point = $intervention; ?>
                 <tr>
-                    <td>
-                        <div class="d-flex align-items-center">
+                    <td class="p-0">
+                        <label class="d-flex align-items-center px-2 py-1 m-0 c-pointer">
                             <input type="checkbox" class="m-0 chk-relevance"
                                    data-uid="{{$intervention->uid}}" {{in_array($intervention->uid, $relevance) ? 'checked' : ''}}>
                             <span>&nbsp;</span>
-                        </div>
+                        </label>
                     </td>
                     <td>
                         <?php if($previousCategory === $intervention->data->category): ?>
@@ -162,14 +162,14 @@ else {
 
     <div class="d-flex align-items-center">
         <div visit-moe>
-            <form start show url="/api/visitPoint/upsertNoteSingleton" class="mcp-theme-1" id="<?= $segment->uid ?>-relevance-form">
+            <form start show url="/api/visitPoint/upsertNoteSingleton" class="d-none" id="<?= $segment->uid ?>-relevance-form">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
-                <input type="hidden" name="category" value="INTERVENTIONS_RELEVANT_TO_NOTE">
+                <input type="hidden" name="category" value="INTERVENTIONS_RELEVANT_TO_NOTE_DURING_VISIT">
                 <input type="hidden" name="data">
                 <button submit class="btn btn-sm btn-info font-weight-bold">Save Relevance</button>
             </form>
         </div>
-        <div visit-moe large class="ml-2 max-width-500px">
+        <div visit-moe large class="max-width-500px">
             <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new intervention, added during this visit</a>
             <form url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
@@ -241,8 +241,18 @@ else {
                 uids = uids.filter(_x => _x !== uid);
             }
             $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
+            // auto save
+            $('#<?= $segment->uid ?>-relevance-form [submit]').trigger('click');
+
             return false;
         });
 
+        // pre-fill relevance data
+        let uids = [];
+        $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance:checked').each(function() {
+            uids.push($(this).attr('data-uid'));
+        });
+        $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
     };
 </script>

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

@@ -17,7 +17,7 @@ foreach($interventions as $intervention) {
 }
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'INTERVENTIONS_RELEVANT_TO_NOTE')
+    ->where('category', 'INTERVENTIONS_RELEVANT_TO_NOTE_DURING_VISIT')
     ->orderBy('id', 'DESC')
     ->first();
 if (!!@$relevance->data) {
@@ -39,8 +39,8 @@ $numRelevant = 0;
             <div class="mb-2 pl-3">
                 <div class="d-flex align-items-baseline">
                     @if(in_array($intervention->uid, $relevance))
-                        <span class="text-info mr-1 text-sm">
-                            <i class="fa fa-star text-sm"></i>
+                        <span class="text-info mr-1">
+                            <i class="fa fa-star"></i>
                         </span>
                         <?php $numRelevant++; ?>
                     @endif

+ 29 - 13
resources/views/app/patient/segment-templates/plan_medications/edit.blade.php

@@ -13,7 +13,7 @@ $medications = Point::getPlanPointsOfCategory($patient, 'MEDICATION', $note);
 $intakeOrVisit = 'PLAN';
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'MEDICATIONS_RELEVANT_TO_NOTE')
+    ->where('category', 'MEDICATIONS_RELEVANT_TO_NOTE_DURING_VISIT')
     ->orderBy('id', 'DESC')->first();
 if (!!@$relevance->data) {
     $relevance = json_decode($relevance->data, true);
@@ -28,6 +28,7 @@ else {
         <table class="table table-sm table-bordered table-striped mb-0 bg-white mb-2">
             <thead>
             <tr class="">
+                <th class="border-bottom-0 width-100px text-info">Relevant to<br>this visit</th>
                 <th class="border-bottom-0">Medication</th>
                 <th class="border-bottom-0">Most Recent Review</th>
                 <th class="border-bottom-0">Most Recent Plan</th>
@@ -37,12 +38,12 @@ else {
             <?php foreach($medications as $medication): ?>
                 <?php $point = $medication; ?>
                 <tr>
-                    <td>
-                        <div class="d-flex align-items-center">
+                    <td class="p-0">
+                        <label class="d-flex align-items-center px-2 py-1 m-0 c-pointer">
                             <input type="checkbox" class="m-0 chk-relevance"
                                    data-uid="{{$medication->uid}}" {{in_array($medication->uid, $relevance) ? 'checked' : ''}}>
                             <span>&nbsp;</span>
-                        </div>
+                        </label>
                     </td>
                     <td>
                         <div class="d-flex align-items-baseline">
@@ -151,16 +152,16 @@ else {
 
     <div class="d-flex align-items-center">
         <div visit-moe>
-            <form start show url="/api/visitPoint/upsertNoteSingleton" class="mcp-theme-1" id="<?= $segment->uid ?>-relevance-form">
+            <form start show url="/api/visitPoint/upsertNoteSingleton" class="d-none" id="<?= $segment->uid ?>-relevance-form">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
-                <input type="hidden" name="category" value="MEDICATIONS_RELEVANT_TO_NOTE">
+                <input type="hidden" name="category" value="MEDICATIONS_RELEVANT_TO_NOTE_DURING_VISIT">
                 <input type="hidden" name="data">
                 <button submit class="btn btn-sm btn-info font-weight-bold">Save Relevance</button>
             </form>
         </div>
-        <div visit-moe large class="ml-2 max-width-500px">
-            <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new medication, prescribed during this visit</a>
-            <form url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1">
+        <div visit-moe large class="mt-1 w-100 border p-2 bg-white rounded">
+            <!--<a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new medication, prescribed during this visit</a>-->
+            <form show url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1 w-100">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
                 <input type="hidden" name="category" value="MEDICATION">
                 <input type="hidden" name="data">
@@ -172,7 +173,9 @@ else {
 
                 <p class="mb-2"><b>Add Medication (during visit)</b></p>
 
-                <div class="mb-2">
+                <div class="d-flex align-items-start">
+
+                <div class="mb-2 w-25">
                     <label class="text-sm text-secondary mb-1">Name</label>
                     <input type="text"
                            data-name="name"
@@ -180,7 +183,7 @@ else {
                            stag-suggest
                            stag-suggest-ep="/fdb-med-suggest-v2/json">
                 </div>
-                <div class="mb-2">
+                <div class="mb-2 ml-2">
                     <label class="text-sm text-secondary mb-1">Frequency</label>
                     <input type="text" class="form-control form-control-sm" data-name="frequency"
                            data-option-list="frequency-options" autocomplete="off">
@@ -189,9 +192,11 @@ else {
                         <div>Twice a day</div>
                     </div>
                 </div>
-                <div class="mb-2">
+                <div class="mb-2 ml-2 flex-grow-1">
                     <label class="text-sm text-secondary mb-1">Description</label>
-                    <textarea type="text" data-name="description" class="form-control form-control-sm"></textarea>
+                    <textarea rows="1" data-name="description" class="form-control form-control-sm"></textarea>
+                </div>
+
                 </div>
 
                 <div>
@@ -252,8 +257,19 @@ else {
                 uids = uids.filter(_x => _x !== uid);
             }
             $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
+            // auto save
+            $('#<?= $segment->uid ?>-relevance-form [submit]').trigger('click');
+
             return false;
         });
 
+        // pre-fill relevance data
+        let uids = [];
+        $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance:checked').each(function() {
+            uids.push($(this).attr('data-uid'));
+        });
+        $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
     };
 </script>

+ 5 - 3
resources/views/app/patient/segment-templates/plan_medications/summary.blade.php

@@ -7,7 +7,7 @@ use App\Models\Point;
 $medications = Point::getPlanPointsOfCategory($patient, 'MEDICATION', $note);
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'MEDICATIONS_RELEVANT_TO_NOTE')
+    ->where('category', 'MEDICATIONS_RELEVANT_TO_NOTE_DURING_VISIT')
     ->orderBy('id', 'DESC')
     ->first();
 if (!!@$relevance->data) {
@@ -28,8 +28,8 @@ $numRelevant = 0;
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if(in_array($medication->uid, $relevance))
-                    <span class="text-info mr-1 text-sm">
-                        <i class="fa fa-star text-sm"></i>
+                    <span class="text-info mr-1">
+                        <i class="fa fa-star"></i>
                     </span>
                     <?php $numRelevant++; ?>
                 @endif
@@ -57,6 +57,8 @@ $numRelevant = 0;
                 <div class="text-secondary font-weight-bold">Plan</div>
                 <div>{!! $review->data->value !!}</div>
             </div>
+            <?php elseif(in_array($medication->uid, $relevance)): ?>
+            <div class="relevant-without-plan text-danger mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
             <?php endif; ?>
         </div>
     <?php endforeach; ?>

+ 27 - 13
resources/views/app/patient/segment-templates/plan_problems/edit.blade.php

@@ -13,7 +13,7 @@ $problems = Point::getPlanPointsOfCategory($patient, 'PROBLEM', $note);
 $intakeOrVisit = 'PLAN';
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'PROBLEMS_RELEVANT_TO_NOTE')
+    ->where('category', 'PROBLEMS_RELEVANT_TO_NOTE_DURING_VISIT')
     ->orderBy('id', 'DESC')->first();
 if (!!@$relevance->data) {
     $relevance = json_decode($relevance->data, true);
@@ -38,12 +38,12 @@ else {
             <?php foreach($problems as $problem): ?>
                 <?php $point = $problem; ?>
             <tr>
-                <td>
-                    <div class="d-flex align-items-center">
+                <td class="p-0">
+                    <label class="d-flex align-items-center px-2 py-1 m-0 c-pointer">
                         <input type="checkbox" class="m-0 chk-relevance"
                                data-uid="{{$problem->uid}}" {{in_array($problem->uid, $relevance) ? 'checked' : ''}}>
                         <span>&nbsp;</span>
-                    </div>
+                    </label>
                 </td>
                 <td>
                     <div class="d-flex align-items-baseline">
@@ -148,16 +148,16 @@ else {
 
     <div class="d-flex align-items-center">
         <div visit-moe>
-            <form start show url="/api/visitPoint/upsertNoteSingleton" class="mcp-theme-1" id="<?= $segment->uid ?>-relevance-form">
+            <form start show url="/api/visitPoint/upsertNoteSingleton" class="d-none" id="<?= $segment->uid ?>-relevance-form">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
-                <input type="hidden" name="category" value="PROBLEMS_RELEVANT_TO_NOTE">
+                <input type="hidden" name="category" value="PROBLEMS_RELEVANT_TO_NOTE_DURING_VISIT">
                 <input type="hidden" name="data">
                 <button submit class="btn btn-sm btn-info font-weight-bold">Save Relevance</button>
             </form>
         </div>
-        <div visit-moe large class="ml-2 max-width-500px">
-            <a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new problem, added during this visit</a>
-            <form url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1">
+        <div visit-moe large class="mt-1 w-100 border p-2 bg-white rounded">
+            <!--<a href="#" start show class="btn btn-sm btn btn-outline-primary">+ Add new problem, added during this visit</a>-->
+            <form show url="/api/visitPoint/addTopLevelDuringVisit" class="mcp-theme-1 w-100">
                 <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
                 <input type="hidden" name="category" value="PROBLEM">
                 <input type="hidden" name="data">
@@ -167,14 +167,16 @@ else {
 
                 <p class="mb-2"><b>Add Problem (plan)</b></p>
 
-                <div class="mb-2">
+                <div class="d-flex align-items-start">
+
+                <div class="mb-2 w-25">
                     <label class="text-sm text-secondary mb-1">Name</label>
                     <input type="text" data-name="name" class="form-control form-control-sm"
                            stag-suggest
                            stag-suggest-ep="/fdb-dx-suggest/json">
                 </div>
 
-                <div class="mb-2">
+                <div class="mb-2 w-25 ml-2">
                     <label class="text-sm text-secondary mb-1">ICD</label>
                     <select data-name="icd"
                             class="form-control form-control-sm"
@@ -182,9 +184,11 @@ else {
                     </select>
                 </div>
 
-                <div class="mb-2">
+                <div class="mb-2 ml-2 flex-grow-1">
                     <label class="text-sm text-secondary mb-1">Description</label>
-                    <textarea type="text" data-name="description" class="form-control form-control-sm"></textarea>
+                    <textarea rows="1" data-name="description" class="form-control form-control-sm"></textarea>
+                </div>
+
                 </div>
 
                 <div>
@@ -254,8 +258,18 @@ else {
                 uids = uids.filter(_x => _x !== uid);
             }
             $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
+
+            // auto save
+            $('#<?= $segment->uid ?>-relevance-form [submit]').trigger('click');
+
             return false;
         });
 
+        // pre-fill relevance data
+        let uids = [];
+        $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] .chk-relevance:checked').each(function() {
+            uids.push($(this).attr('data-uid'));
+        });
+        $('#<?= $segment->uid ?>-relevance-form').find('[name="data"]').val(JSON.stringify(uids));
     };
 </script>

+ 5 - 3
resources/views/app/patient/segment-templates/plan_problems/summary.blade.php

@@ -7,7 +7,7 @@ use App\Models\Point;
 $problems = Point::getPlanPointsOfCategory($patient, 'PROBLEM', $note);
 
 $relevance = Point::where('added_in_segment_id', $segment->id)
-    ->where('category', 'PROBLEMS_RELEVANT_TO_NOTE')->orderBy('id', 'DESC')
+    ->where('category', 'PROBLEMS_RELEVANT_TO_NOTE_DURING_VISIT')->orderBy('id', 'DESC')
     ->first();
 if (!!@$relevance->data) {
     $relevance = json_decode($relevance->data, true);
@@ -27,8 +27,8 @@ $numRelevant = 0;
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if(in_array($problem->uid, $relevance))
-                    <span class="text-info mr-1 text-sm">
-                        <i class="fa fa-star text-sm"></i>
+                    <span class="text-info mr-1">
+                        <i class="fa fa-star"></i>
                     </span>
                     <?php $numRelevant++; ?>
                 @endif
@@ -57,6 +57,8 @@ $numRelevant = 0;
                 <div class="text-secondary font-weight-bold">Plan</div>
                 <div>{!! $review->data->value !!}</div>
             </div>
+            <?php elseif(in_array($problem->uid, $relevance)): ?>
+            <div class="relevant-without-plan text-danger mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
             <?php endif; ?>
         </div>
     <?php endforeach; ?>

+ 43 - 0
resources/views/app/practice-management/patients-without-coverage.blade.php

@@ -0,0 +1,43 @@
+@extends ('layouts/template')
+
+@section('content')
+
+    <div class="p-3 mcp-theme-1">
+    <div class="card">
+
+        <div class="card-header px-3 py-2 d-flex align-items-center">
+            <strong class="">
+                <i class="fas fa-user-injured"></i>
+                Patients pending coverage info/verification
+            </strong>
+            <select class="ml-auto max-width-300px form-control form-control-sm"
+                    onchange="fastLoad('/practice-management/patients-without-coverage/' + this.value, true, false, false)">
+                <option value="all" {{ !$filter || $filter === 'all' ? 'selected' : '' }}>All Pending</option>
+                <option value="without-coverage-information" {{ $filter === 'without-coverage-information' ? 'selected' : '' }}>Without coverage information</option>
+                <option value="pending-coverage-verification" {{ $filter === 'pending-coverage-verification' ? 'selected' : '' }}>Pending coverage verification</option>
+            </select>
+        </div>
+        <div class="card-body p-0">
+            <table class="table table-sm table-condensed p-0 m-0">
+                <thead class="bg-light">
+                <tr>
+                    <th class="px-3 border-0 w-25">Patient</th>
+                    <th class="border-0">Coverage</th>
+                </tr>
+                </thead>
+                <tbody>
+                @foreach($pendingCoverage as $pc)
+                    <tr>
+                        <td class="px-3 text-nowrap">{{ $pc->name_first }} {{ $pc->name_last }}</td>
+                        <td>
+                            <a href="/patients/view/client-primarycoverages/{{$pc->uid}}">Manage Coverage</a>
+                        </td>
+                    </tr>
+                @endforeach
+                </tbody>
+            </table>
+        </div>
+    </div>
+    </div>
+
+@endsection

+ 1 - 0
routes/web.php

@@ -95,6 +95,7 @@ Route::middleware('pro.auth')->group(function () {
         Route::get('my-tickets/{filter?}', 'PracticeManagementController@myTickets')->name('myTickets');
         Route::get('my-text-shortcuts', 'PracticeManagementController@myTextShortcuts')->name('myTextShortcuts');
         Route::get('my-favorites/{filter?}', 'PracticeManagementController@myFavorites')->name('myFavorites');
+        Route::get('patients-without-coverage/{filter?}', 'PracticeManagementController@patientsWithoutCoverage')->name('patients-without-coverage');
         Route::get('pro-availability/{proUid?}', 'PracticeManagementController@proAvailability')->name('proAvailability');
         Route::get('calendar/{proUid?}', 'PracticeManagementController@calendar')->name('proCalendar');
 

Some files were not shown because too many files changed in this diff