소스 검색

CM/RM details in client hdr + top-level manage cm/rm impl

Vijayakrishnan Krishnan 2 주 전
부모
커밋
6952f71cc8

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

@@ -957,5 +957,13 @@ class PatientController extends Controller
         return $this->pass();
         return $this->pass();
     }
     }
 
 
+    public function manageCCM(Request $request, Client $patient){
+        return view('app.patient.manage-ccm', compact('patient'));
+    }
+
+    public function manageRPM(Request $request, Client $patient){
+        return view('app.patient.manage-rpm', compact('patient'));
+    }
+
     
     
 }
 }

+ 19 - 0
public/css/style.css

@@ -1407,6 +1407,13 @@ body .node input[type="number"] {
     /*overflow: auto !important;*/   /* trouble */
     /*overflow: auto !important;*/   /* trouble */
 }
 }
 
 
+/* vertically centered */
+.stag-popup.v-center.draggable .stag-popup-content {
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+}
+
 /* slide-in stag-popups */
 /* slide-in stag-popups */
 .stag-popup.stag-slide {
 .stag-popup.stag-slide {
     display: block;
     display: block;
@@ -3841,4 +3848,16 @@ table.v-top th {
     opacity: 0.4;
     opacity: 0.4;
     height: 30px;
     height: 30px;
     line-height: 30px;
     line-height: 30px;
+}
+.color-cm {
+    color: #8a5be3 !important;
+}
+.bg-cm {
+    background-color: #8a5be3 !important;
+}
+.color-rm {
+    color: #c522a8 !important;
+}
+.bg-rm {
+    background-color: #c522a8 !important;
 }
 }

+ 3 - 0
resources/views/app/patient/manage-ccm.blade.php

@@ -0,0 +1,3 @@
+<div class="container-fluid h-100 popup-content-container pb-3">
+    @include('app.patient.partials.cm-setup')
+</div>

+ 3 - 0
resources/views/app/patient/manage-rpm.blade.php

@@ -0,0 +1,3 @@
+<div class="container-fluid h-100 popup-content-container pb-3">
+    @include('app.patient.partials.rm-setup')
+</div>

+ 321 - 0
resources/views/app/patient/partials/cm-setup.blade.php

@@ -0,0 +1,321 @@
+<div id="patient-cm-setup">
+
+    <div class="font-weight-bold pb-2 mb-2 border-bottom">Eligibility</div>
+
+    <div class="mb-2 d-flex align-items-baseline">
+        <span class="mr-2 min-width-110px">CCM Eligibility:</span>
+        <span class="font-weight-bold ">{{ ucwords($patient->is_eligible_for_cm ? $patient->is_eligible_for_cm : '-') }}</span>
+        <div moe class="ml-3">
+            <a start show><i class="fa fa-edit on-hover-opaque"></i></a>
+            <form url="/api/client/updateCmEligibility" class="mcp-theme-1">
+                <input type="hidden" name="uid" value="{{$patient->uid}}">
+                <div class="mb-2">
+                    <label class="text-sm mb-1 text-secondary">Is Eligible?</label>
+                    <select name="isEligibleForCm"
+                            class="form-control form-control-sm"
+                            {{$patient->is_enrolled_in_cm === 'YES' ? 'disabled' : '' }}
+                            onchange="toggleDisabledAsNeeded(this, 'NO', 'not-eligible-for-cm')">
+                        <option value="">-- Select Status --</option>
+                        <option value="YES" {{ $patient->is_eligible_for_cm === 'YES' ? 'selected' : '' }}>YES</option>
+                        <option value="NO" {{ $patient->is_eligible_for_cm === 'NO' ? 'selected' : '' }}>NO</option>
+                        <option value="UNKNOWN" {{ $patient->is_eligible_for_cm === 'UNKNOWN' ? 'selected' : '' }}>UNKNOWN</option>
+                    </select>
+                </div>
+                <div class="mb-2">
+                    <label class="text-sm mb-1 text-secondary">Why not eligible category</label>
+                    <input type="text" class="not-eligible-for-cm form-control form-control-sm"
+                           {{$patient->is_eligible_for_cm === 'NO' ? '' : 'disabled' }}
+                           name="whyNotEligibleForCmCategory" value="{{$patient->why_not_eligible_for_cm_category}}">
+                </div>
+                <div class="mb-2">
+                    <label class="text-sm mb-1 text-secondary">Why not eligible memo</label>
+                    <input type="text" class="not-eligible-for-cm form-control form-control-sm"
+                           {{$patient->is_eligible_for_cm === 'NO' ? '' : 'disabled' }}
+                           name="whyNotEligibleForCmMemo" value="{{$patient->why_not_eligible_for_cm_memo}}">
+                </div>
+                <div>
+                    <button submit class="btn btn-sm btn-primary mr-1">Submit</button>
+                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                </div>
+            </form>
+        </div>
+        @if($patient->is_eligible_for_cm === 'NO')
+            <span class="ml-1 on-hover-show d-inline-block on-hover-opaque">
+                <i class="fa fa-info-circle"></i>
+                <div class="on-hover-content py-2 pl-3 text-nowrap text-dark" style="left:0;right:auto;">
+                    <div>
+                        <small class="text-sm"><b>Category:</b> {{$patient->why_not_eligible_for_cm_category ?: '-'}}</small>
+                    </div>
+                    <div>
+                        <small class="text-sm"><b>Memo:</b> {{$patient->why_not_eligible_for_cm_memo ?: '-'}}</small>
+                    </div>
+                </div>
+            </span>
+        @endif
+    </div>
+
+    <div class="font-weight-bold py-2 mb-2 border-bottom">Enrollment</div>
+
+    <div class="mb-2 d-flex align-items-baseline">
+        <span class="mr-2 min-width-110px">CCM Enrollment:</span>
+        <div class="width-300px d-inline-flex align-items-center">
+            @if($patient->is_enrolled_in_cm === 'YES')
+                <span class="text-nowrap text-success">
+                    <i class="fa fa-check"></i>
+                    <b>Enrolled</b>
+                </span>
+                <div moe class="ml-3">
+                    <a href="" show start>Undo</a>
+                    <form url="/api/client/setIsEnrolledInCmToFalse" >
+                        <input type="hidden" name="uid" value="{{$patient->uid}}">
+                        <p>Un-enroll from CCM?</p>
+                        <div class="mb-0">
+                            <button class="btn btn-primary btn-sm" submit>Submit</button>
+                            <button class="btn btn-default border btn-sm" cancel>Cancel</button>
+                        </div>
+                    </form>
+                </div>
+            @else
+                <span class="text-nowrap text-warning-mellow">
+                    <i class="fa fa-times"></i>
+                    <b>Not Enrolled</b>
+                    <span class="text-secondary">&nbsp;(to be done from within a note)</span>
+                </span>
+            @endif
+        </div>
+    </div>
+
+    <div class="d-flex align-items-baseline mb-2">
+        <span class="mr-2 min-width-110px">CCM Reasons:</span>
+        <div class="width-300px">
+            @if(!$patient->cmReasons || !count($patient->cmReasons))
+                <span class="text-secondary">None Specified</span>
+            @endif
+            <div class="w-100">
+                @if($patient->cmReasons && count($patient->cmReasons))
+                    @foreach($patient->cmReasons as $reason)
+                        <div class="border-bottom pb-1 mb-1 d-flex align-items-start">
+                            <b class="min-width-70px">{{$reason->code}}</b>
+                            <span class="max-width-200px mr-3">{{$reason->description}}</span>
+                            <div moe relative class="ml-auto">
+                                <a start show><i class="fa fa-edit"></i></a>
+                                <form url="/api/clientCmRmReason/updateBasic" class="mcp-theme-1" right >
+                                    <input type="hidden" name="uid" value="{{$reason->uid}}">
+                                    <div class="mb-2">
+                                        <label class="text-sm mb-1 text-secondary">Code *</label>
+                                        <input type="text" class="form-control form-control-sm"
+                                               icd-autocomplete-code
+                                               name="code" value="{{$reason->code}}" required>
+                                    </div>
+                                    <div class="mb-2">
+                                        <label class="text-sm mb-1 text-secondary">Description</label>
+                                        <input type="text" class="form-control form-control-sm"
+                                               icd-autocomplete-description
+                                               name="description" value="{{$reason->description}}">
+                                    </div>
+                                    <div>
+                                        <button submit class="btn btn-sm btn-primary mr-1">Submit</button>
+                                        <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                                    </div>
+                                </form>
+                            </div>
+                            <div moe relative class="ml-2">
+                                <a start show><i class="fa fa-trash-alt text-danger on-hover-opaque"></i></a>
+                                <form url="/api/clientCmRmReason/remove" class="mcp-theme-1" right >
+                                    <input type="hidden" name="uid" value="{{$reason->uid}}">
+                                    <p>Remove this CM reason?</p>
+                                    <div>
+                                        <button submit class="btn btn-sm btn-primary mr-1">Submit</button>
+                                        <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                                    </div>
+                                </form>
+                            </div>
+                        </div>
+                    @endforeach
+                @endif
+                @if(!$patient->cmReasons || count($patient->cmReasons) < 2)
+                    <div class="d-flex align-items-baseline">
+                        <div moe>
+                            <a start show>+ Add From Dx</a>
+                            <form url="/api/clientCmRmReason/create" class="mcp-theme-1" >
+                                <input type="hidden" name="clientUid" value="{{$patient->uid}}">
+                                <input type="hidden" name="cmOrRm" value="CM">
+                                <input type="hidden" name="code" value="">
+                                <input type="hidden" name="description" value="">
+                                <div class="mb-2">
+                                    <label class="text-sm mb-1 text-secondary">Reason *</label>
+                                    <select type="text" class="form-control form-control-sm problem-select" name="problem" required>
+                                            <?php $problems = \App\Models\Point::getPointsOfCategory($patient, "PROBLEM"); ?>
+                                        <option value="">-- select --</option>
+                                        @foreach($problems as $problem)
+                                            @if(!!@($problem->data->icd))
+                                                <option value="{{$problem->uid}}" data-icd="{{$problem->data->icd}}" data-name="{{$problem->data->name}}">{{$problem->data->icd}} - {{$problem->data->name}}</option>
+                                            @endif
+                                        @endforeach
+                                    </select>
+                                </div>
+                                <div>
+                                    <button submit class="btn btn-sm btn-primary mr-1">Submit</button>
+                                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                                </div>
+                            </form>
+                        </div>
+                        <span class="mx-2 text-secondary text-sm">|</span>
+                        <div moe>
+                            <a start show>+ Add</a>
+                            <form url="/api/clientCmRmReason/create" class="mcp-theme-1" >
+                                <input type="hidden" name="clientUid" value="{{$patient->uid}}">
+                                <input type="hidden" name="cmOrRm" value="CM">
+                                <div class="mb-2">
+                                    <label class="text-sm mb-1 text-secondary">Code *</label>
+                                    <input type="text" class="form-control form-control-sm"
+                                           icd-autocomplete-code
+                                           name="code" value="" required>
+                                </div>
+                                <div class="mb-2">
+                                    <label class="text-sm mb-1 text-secondary">Description</label>
+                                    <input type="text" class="form-control form-control-sm"
+                                           icd-autocomplete-description
+                                           name="description" value="">
+                                </div>
+                                <div>
+                                    <button submit class="btn btn-sm btn-primary mr-1">Submit</button>
+                                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                                </div>
+                            </form>
+                        </div>
+                    </div>
+                @endif
+            </div>
+        </div>
+    </div>
+
+    <div class="font-weight-bold py-2 mb-2 border-bottom">Setup</div>
+
+    <div class="mb-2 d-flex align-items-baseline">
+        <span class="mr-2 min-width-110px">CCM Setup:</span>
+        <div class="width-300px d-inline-flex align-items-center">
+            @if($patient->has_cm_setup_been_performed)
+                <span class="text-nowrap text-success">
+                    @if($patient->cmSetupNote)
+                        <i class="fa fa-check"></i>
+                        <b>Performed on</b>
+                        <a native target="_blank"
+                           href="<?= route('patients.view.notes.view.dashboard', ['patient' => $patient, 'note' => $patient->cmSetupNote]) ?>"
+                           class="font-weight-bold">{{friendly_date($patient->cmSetupNote->effective_dateest)}}</a>
+                    @else
+                        <i class="fa fa-exclamation-triangle text-warning-mellow"></i>
+                        <b class="text-warning-mellow">Performed, but CM setup note missing!</b>
+                    @endif
+                </span>
+            @else
+                <span class="text-nowrap text-warning-mellow">
+                    <i class="fa fa-times"></i>
+                    <b>Not Performed</b>
+                </span>
+            @endif
+        </div>
+    </div>
+
+    <?php $note = $patient->cmSetupNote; ?>
+
+    @if($note && $note->was_cm_setup_performed)
+
+        <div class="mb-2 d-flex align-items-baseline">
+            <div class="width-300px d-inline-flex align-items-center">
+                <span class="mr-2 min-width-110px">MCP Signature:</span>
+                @if($note->cm_setup_mcp_signature_status !== 'SIGNED')
+                    <b>Not Signed</b>
+                    @if($pro->id === $patient->mcp_pro_id)
+                        <div moe class="">
+                            <a start show>Sign</a>
+                            <form url="/api/note/updateCmSetupMcpSignatureStatus" class="mcp-theme-1">
+                                <input type="hidden" name="uid" value="{{$note->uid}}">
+                                <input type="hidden" name="mcpSignatureStatus" value="SIGNED">
+                                <p>Sign CM Setup Performed as MCP?</p>
+                                <div>
+                                    <button submit class="btn btn-sm btn-success mr-1">Sign</button>
+                                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                                </div>
+                            </form>
+                        </div>
+                    @endif
+                @else
+                    <b>SIGNED</b>
+                    @if($pro->id === $patient->mcp_pro_id || $pro->is_admin)
+                        <div moe class="ml-3">
+                            <a start show>Undo</a>
+                            <form url="/api/note/updateCmSetupMcpSignatureStatus" class="mcp-theme-1">
+                                <input type="hidden" name="uid" value="{{$note->uid}}">
+                                <input type="hidden" name="mcpSignatureStatus" value="">
+                                <p>Undo sign as MCP for CM Setup Performed?</p>
+                                <div>
+                                    <button submit class="btn btn-sm btn-primary mr-1">Undo</button>
+                                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                                </div>
+                            </form>
+                        </div>
+                    @endif
+                @endif
+            </div>
+        </div>
+
+        <div class="mb-2 d-flex align-items-baseline">
+            <span class="mr-2 min-width-110px">CC Signature:</span>
+            <div class="d-inline-flex align-items-center mr-2">
+                @if($note->cm_setup_na_signature_status !== 'SIGNED')
+                    <b>Not Signed</b>
+                    @if($pro->id === $patient->default_na_pro_id)
+                        <div moe class="">
+                            <a start show>Sign</a>
+                            <form url="/api/note/updateCmSetupNaSignatureStatus" class="mcp-theme-1">
+                                <input type="hidden" name="uid" value="{{$note->uid}}">
+                                <input type="hidden" name="naSignatureStatus" value="SIGNED">
+                                <p>Sign CM Setup Performed as Care Coordinator?</p>
+                                <div>
+                                    <button submit class="btn btn-sm btn-success mr-1">Sign</button>
+                                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                                </div>
+                            </form>
+                        </div>
+                    @endif
+                @else
+                    <b>SIGNED</b>
+                    @if($pro->id === $patient->default_na_pro_id || $pro->is_admin)
+                        <div moe class="ml-3">
+                            <a start show>Undo</a>
+                            <form url="/api/note/updateCmSetupNaSignatureStatus" class="mcp-theme-1">
+                                <input type="hidden" name="uid" value="{{$note->uid}}">
+                                <input type="hidden" name="naSignatureStatus" value="">
+                                <p>Undo sign as Care Coordinator for CM Setup Performed?</p>
+                                <div>
+                                    <button submit class="btn btn-sm btn-primary mr-1">Sign</button>
+                                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                                </div>
+                            </form>
+                        </div>
+                    @endif
+                @endif
+            </div>
+        </div>
+
+    @endif
+
+</div>
+
+<script>
+    (function () {
+        function init() {
+            $(document)
+                .off('change', '.problem-select')
+                .on('change', '.problem-select', function() {
+                    let form = $(this).closest('form'),
+                        selected = $(this).find('option:selected').first();
+                    form.find('[name="code"]').val(selected.attr('data-icd'));
+                    form.find('[name="description"]').val(selected.attr('data-name'));
+                    return false;
+                });
+        }
+        addMCInitializer('patient-cm-setup', init, '#patient-cm-setup')
+    }).call(window);
+</script>

+ 217 - 0
resources/views/app/patient/partials/rm-setup.blade.php

@@ -0,0 +1,217 @@
+<div id="patient-rm-setup">
+
+    <div class="font-weight-bold pb-2 mb-2 border-bottom">Eligibility</div>
+
+    <div class="mb-2 d-flex align-items-center">
+        <span class="min-width-110px">RPM Eligibility:</span>
+        <span class="mr-1">{{ ucwords($patient->is_eligible_for_rm ? $patient->is_eligible_for_rm : '-') }}</span>
+        <div moe class="ml-3">
+            <a start show><i class="fa fa-edit on-hover-opaque"></i></a>
+            <form url="/api/client/updateRmEligibility" class="mcp-theme-1">
+                <input type="hidden" name="uid" value="{{$patient->uid}}">
+                @if($patient->is_enrolled_in_rm == 'YES')
+                    <div class="alert alert-info p-1 mb-1">
+                        Patient is currently enrolled in RPM. Un-enroll the patient to make changes.
+                    </div>
+                @endif
+                <div class="mb-2">
+                    <label class="text-sm mb-1 text-secondary">Is Eligible?</label>
+                    <select name="isEligibleForRm"
+                            class="form-control form-control-sm"
+                            {{$patient->is_enrolled_in_rm === 'YES' ? 'disabled' : '' }}
+                            onchange="toggleDisabledAsNeeded(this, 'NO', 'not-eligible-for-rm')">
+                        <option value="">-- Select Status --</option>
+                        <option value="YES" {{ $patient->is_eligible_for_rm === 'YES' ? 'selected' : '' }}>YES</option>
+                        <option value="NO" {{ $patient->is_eligible_for_rm === 'NO' ? 'selected' : '' }}>NO</option>
+                        <option value="UNKNOWN" {{ $patient->is_eligible_for_rm === 'UNKNOWN' ? 'selected' : '' }}>UNKNOWN</option>
+                    </select>
+                </div>
+                <div class="mb-2">
+                    <label class="text-sm mb-1 text-secondary">Why not eligible category</label>
+                    <input type="text" class="not-eligible-for-rm form-control form-control-sm"
+                           {{$patient->is_eligible_for_rm === 'NO' ? '' : 'disabled' }}
+                           name="whyNotEligibleForRmCategory" value="{{$patient->why_not_eligible_for_rm_category}}">
+                </div>
+                <div class="mb-2">
+                    <label class="text-sm mb-1 text-secondary">Why not eligible memo</label>
+                    <input type="text" class="not-eligible-for-rm form-control form-control-sm"
+                           {{$patient->is_eligible_for_rm === 'NO' ? '' : 'disabled' }}
+                           name="whyNotEligibleForRmMemo" value="{{$patient->why_not_eligible_for_rm_memo}}">
+                </div>
+                <div>
+                    <button submit class="btn btn-sm btn-primary mr-1">Submit</button>
+                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                </div>
+            </form>
+        </div>
+        @if($patient->is_eligible_for_rm === 'NO')
+            <span class="ml-1 on-hover-show d-inline-block on-hover-opaque">
+                <i class="fa fa-info-circle"></i>
+                <div class="on-hover-content py-2 pl-3 text-nowrap text-dark" style="left:0;right:auto;">
+                    <div>
+                        <small class="text-sm"><b>Category:</b> {{$patient->why_not_eligible_for_rm_category ?: '-'}}</small>
+                    </div>
+                    <div>
+                        <small class="text-sm"><b>Memo:</b> {{$patient->why_not_eligible_for_rm_memo ?: '-'}}</small>
+                    </div>
+                </div>
+            </span>
+        @endif
+    </div>
+
+    <div class="font-weight-bold py-2 mb-2 border-bottom">Enrollment</div>
+
+    <div class="mb-2 d-flex align-items-center">
+        <span class="min-width-110px">Enrollment:</span>
+        <span>{{ ucwords($patient->is_enrolled_in_rm ? $patient->is_enrolled_in_rm : '-') }}</span> {{-- correct --}}
+        @if($patient->is_enrolled_in_rm === 'NO' && $patient->why_not_enrolled_in_rm_category) {{-- correct --}}
+        <span class="text-sm ml-2">({{$patient->why_not_enrolled_in_rm_category}})</span>
+        @endif
+
+        <span class="ml-2 text-secondary">|</span>
+        <div moe class="ml-2">
+            <a start show>{{$patient->is_enrolled_in_rm === 'YES' ? 'Un-enroll' : ($patient->is_enrolled_in_rm === 'NO' ? 'Edit Reason' : 'Not interested/other')}}</a> {{-- correct --}}
+            <form url="/api/client/setIsEnrolledInRmToFalse" class="mcp-theme-1">
+                <input type="hidden" name="uid" value="{{$patient->uid}}">
+                <p class="mb-2 text-nowrap">
+                    {{$patient->is_enrolled_in_rm === 'YES' ? 'Mark as not enrolled' : ($patient->is_enrolled_in_rm === 'NO' ? 'Edit Reason' : 'Not interested/other')}} {{-- correct --}}
+                </p>
+                <div class="mb-2">
+                    <label class="text-secondary text-sm mb-1">Reason</label>
+                    <select name="whyNotEnrolledInRmCategory" class="form-control" required>
+                        <option value="">-- select --</option>
+                        <option {{$patient->why_not_enrolled_in_rm_category === 'Withdrawn' ? 'selected' : ''}} value="Withdrawn">Withdrawn</option>
+                        <option {{$patient->why_not_enrolled_in_rm_category === 'Inactive' ? 'selected' : ''}} value="Inactive">Inactive</option>
+                        <option {{$patient->why_not_enrolled_in_rm_category === 'Entry Error' ? 'selected' : ''}} value="Entry Error">Entry Error</option>
+                        <option {{$patient->why_not_enrolled_in_rm_category === 'Test Chart' ? 'selected' : ''}} value="Test Chart">Test Chart</option>
+                        <option {{$patient->why_not_enrolled_in_rm_category === 'Deceased' ? 'selected' : ''}} value="Deceased">Deceased</option>
+                        <option {{$patient->why_not_enrolled_in_rm_category === 'No Longer Eligible' ? 'selected' : ''}} value="No Longer Eligible">No Longer Eligible</option>
+                    </select>
+                </div>
+                <div class="mb-2">
+                    <label class="text-secondary text-sm mb-1">Memo</label>
+                    <textarea type="text" name="whyNotEnrolledInRmMemo" class="form-control">{{$patient->why_not_enrolled_in_rm_memo}}</textarea>
+                </div>
+                <div>
+                    <button submit class="btn btn-sm btn-primary mr-1">Submit</button>
+                    <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                </div>
+            </form>
+        </div>
+
+        @if(!$patient->is_enrolled_in_rm || $patient->is_enrolled_in_rm === 'NO' || $patient->is_enrolled_in_rm === 'UNKNOWN') {{-- correct --}}
+            <?php
+            $rmDisplayData = [
+                'icd_1' => [
+                    'title' => 'ICD 1',
+                    'reason' => $patient->rm_reason_icd1,
+                    'description' => $patient->rm_reason_icd1description
+                ],
+                'icd_2' => [
+                    'title' => 'ICD 2',
+                    'reason' => $patient->rm_reason_icd2,
+                    'description' => $patient->rm_reason_icd2description
+                ],
+                'icd_3' => [
+                    'title' => 'ICD 3',
+                    'reason' => $patient->rm_reason_icd3,
+                    'description' => $patient->rm_reason_icd3description
+                ],
+                'icd_4' => [
+                    'title' => 'ICD 4',
+                    'reason' => $patient->rm_reason_icd4,
+                    'description' => $patient->rm_reason_icd4description
+                ],
+            ];
+            ?>
+            <?php $emptyICDs = true; ?>
+        @foreach($rmDisplayData as $rmKey=>$rmData)
+                <?php
+                $emptyICD = true;
+                if (!empty($rmData['reason']) || !empty($rmData['description'])) {
+                    $emptyICDs = false;
+                    $emptyICD = false;
+                }
+                ?>
+        @endforeach
+        <span class="ml-2 text-secondary">|</span>
+        <div moe wide class="ml-2">
+            <a start show>Enroll</a>
+            @if($emptyICDs)
+                <form url="" class="mcp-theme-1">
+                    <div class="text-danger p-1 mb-0">
+                        Please specify relevant RM reason(s) before enrolling the patient.
+                    </div>
+                </form>
+            @else
+                <form url="/api/client/setIsEnrolledInRmToTrue" class="mcp-theme-1">
+                    <input type="hidden" name="uid" value="{{$patient->uid}}">
+                    <h2 class="font-weight-bold">RPM Enrollment:</h2>
+                    <h3>Please confirm the following with patient:</h3>
+                    <p class="mb-2">I understand that:</p>
+                    <ul style="list-style:none;" class="pl-2">
+                        <li class="d-flex mb-1 align-items-start">
+                            <input type="checkbox" required="true" class="mt-1 mr-2" id="x" name="x">
+                            <label class="c-pointer" for="x">I am the only person who should be using the remote monitoring equipment as instructed. I will
+                                not use the device for reasons other than my own personal health monitoring. I understand that
+                                I can only participate in this program with one Medical Provider at a time.</label>
+                        </li>
+                        <li class="d-flex mb-1 align-items-start">
+                            <input type="checkbox" required="true" class="mt-1 mr-2" id="y" name="y">
+                            <label class="c-pointer" for="y">I will not tamper with the equipment. I understand that I am responsible for any fees associated
+                                with misuse of the equipment.</label>
+                        </li>
+                        <li class="d-flex mb-1 align-items-start">
+                            <input type="checkbox" required="true" class="mt-1 mr-2" id="z" name="z">
+                            <label class="c-pointer" for="z">I understand the devices are only designed for the RPM program.</label>
+                        </li>
+                    </ul>
+                    <div class="mb-2">
+                        <button submit class="btn btn-sm btn-primary mr-1">Submit</button>
+                        <button cancel class="btn btn-sm btn-default border">Cancel</button>
+                    </div>
+                </form>
+            @endif
+        </div>
+        @endif
+    </div>
+
+    <div class="d-flex align-items-baseline mb-1">
+        <div class="flex-grow-1">
+            <div>
+                <div class="d-flex align-items-baseline mb-1">
+                    <span class="min-width-110px">RPM Reasons:</span>
+                    <div>
+                        <div class="mb-2">
+                            @include('app.patient.partials.put-rm-reasons', ['recordType' => 'CLIENT', 'record' => $patient])
+                        </div>
+                        @include('app.patient.partials.rm-reasons-display', ['recordType' => 'CLIENT', 'record' => $patient])
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    @if(@$note)
+        <div class="my-2">
+            @include('app.patient.note.partials.care-plan-details')
+        </div>
+    @endif
+
+</div>
+<script>
+    (function () {
+        function init() {
+            $(document)
+                .off('change', '.problem-select')
+                .on('change', '.problem-select', function() {
+                    let form = $(this).closest('form'),
+                        selected = $(this).find('option:selected').first();
+                    form.find('[name="code"]').val(selected.attr('data-icd'));
+                    form.find('[name="description"]').val(selected.attr('data-name'));
+                    return false;
+                });
+        }
+        addMCInitializer('patient-rm-setup', init, '#patient-rm-setup')
+    }).call(window);
+</script>

+ 116 - 4
resources/views/layouts/patient-header.blade.php

@@ -269,7 +269,9 @@ $addressParts .= implode(", ", $addressPart2);
                             @endif
                             @endif
                         @endif
                         @endif
                         @if($patientMcp && $pro->pro_type === 'ADMIN' && $pro->uid !== $patientMcp->uid)
                         @if($patientMcp && $pro->pro_type === 'ADMIN' && $pro->uid !== $patientMcp->uid)
-                            <form action="{{route('process-log-in-as')}}?redir={{request()->url()}}" onsubmit="window.top.localStorage.currentProUid = '{{$patientMcp->uid}}';" method="POST" target="_top" class="d-inline-block">
+                            <form action="{{route('process-log-in-as')}}?redir={{request()->url()}}"
+                                  onsubmit="window.top.localStorage.currentProUid = '{{$patientMcp->uid}}';" method="POST" target="_top"
+                                  class="d-inline-block mb-0">
                                 @csrf
                                 @csrf
                                 <input type="hidden" name="proUid" value="{{$patientMcp->uid}}">
                                 <input type="hidden" name="proUid" value="{{$patientMcp->uid}}">
                                 <button class="bg-transparent text-primary border-0 text-sm"><i class="fa fa-user on-hover-opaque"></i></button>
                                 <button class="bg-transparent text-primary border-0 text-sm"><i class="fa fa-user on-hover-opaque"></i></button>
@@ -324,7 +326,9 @@ $addressParts .= implode(", ", $addressPart2);
                             @endif
                             @endif
                         @endif
                         @endif
                         @if($patient->defaultNaPro && $pro->pro_type === 'ADMIN' && $pro->uid !== $patient->defaultNaPro->uid)
                         @if($patient->defaultNaPro && $pro->pro_type === 'ADMIN' && $pro->uid !== $patient->defaultNaPro->uid)
-                            <form action="{{route('process-log-in-as')}}?redir={{request()->url()}}" onsubmit="window.top.localStorage.currentProUid = '{{$patient->defaultNaPro->uid}}';" method="POST" target="_top" class="d-inline-block">
+                            <form action="{{route('process-log-in-as')}}?redir={{request()->url()}}"
+                                  onsubmit="window.top.localStorage.currentProUid = '{{$patient->defaultNaPro->uid}}';" method="POST" target="_top"
+                                  class="d-inline-block mb-0">
                                 @csrf
                                 @csrf
                                 <input type="hidden" name="proUid" value="{{$patient->defaultNaPro->uid}}">
                                 <input type="hidden" name="proUid" value="{{$patient->defaultNaPro->uid}}">
                                 <button class="bg-transparent text-primary border-0 text-sm"><i class="fa fa-user on-hover-opaque"></i></button>
                                 <button class="bg-transparent text-primary border-0 text-sm"><i class="fa fa-user on-hover-opaque"></i></button>
@@ -332,7 +336,7 @@ $addressParts .= implode(", ", $addressPart2);
                         @endif
                         @endif
                     </div>
                     </div>
                     @if($patient->rd || $pro->pro_type == 'ADMIN')
                     @if($patient->rd || $pro->pro_type == 'ADMIN')
-                    <div class="mb-1">
+                    <div>
                         <label>RD:</label> {{ $patient->rd ? $patient->rd->displayName() : '-'}}
                         <label>RD:</label> {{ $patient->rd ? $patient->rd->displayName() : '-'}}
                         @if($pro->pro_type === 'ADMIN')
                         @if($pro->pro_type === 'ADMIN')
                         <div moe class="ml-2 hide-inside-popup">
                         <div moe class="ml-2 hide-inside-popup">
@@ -352,7 +356,9 @@ $addressParts .= implode(", ", $addressPart2);
                             </form>
                             </form>
                         </div>
                         </div>
                         @if($patient->rd)
                         @if($patient->rd)
-                          <form action="{{route('process-log-in-as')}}?redir={{request()->url()}}" onsubmit="window.top.localStorage.currentProUid = '{{$patient->rd->uid}}';" method="POST" target="_top" class="d-inline-block">
+                          <form action="{{route('process-log-in-as')}}?redir={{request()->url()}}"
+                                onsubmit="window.top.localStorage.currentProUid = '{{$patient->rd->uid}}';" method="POST" target="_top"
+                                class="d-inline-block mb-0">
                             @csrf
                             @csrf
                             <input type="hidden" name="proUid" value="{{$patient->rd->uid}}">
                             <input type="hidden" name="proUid" value="{{$patient->rd->uid}}">
                             <button class="bg-transparent text-primary border-0 text-sm"><i class="fa fa-user on-hover-opaque"></i></button>
                             <button class="bg-transparent text-primary border-0 text-sm"><i class="fa fa-user on-hover-opaque"></i></button>
@@ -694,3 +700,109 @@ $parsed = json_decode($patient->latest_vitals_json);
 catch (Exception $ex) {}
 catch (Exception $ex) {}
 }
 }
 ?>
 ?>
+
+{{-- new --}}
+<div class="mx-2 mb-2 p-0 mcp-theme-1 rounded-0 border bg-aliceblue">
+    {{-- ccm --}}
+    <div class="d-inline-flex align-items-baseline flex-wrap p-2 border-right">
+        <div class="font-weight-bold text-secondary mr-3 color-cm">CCM</div>
+        <span class="mr-3">Eligible&nbsp;
+            @if($patient->is_eligible_for_cm === 'YES')
+                <i class="text-success fa fa-check"></i>
+            @elseif($patient->is_eligible_for_cm === 'NO')
+                <i title="{{$patient->why_not_eligible_for_cm_category}}{{$patient->why_not_eligible_for_cm_memo ? ': ' . $patient->why_not_eligible_for_cm_memo : ''}}"
+                   class="text-danger-dark fa fa-times"></i>
+            @else
+                <i title="Pending/Unknown" class="text-secondary fa fa-hourglass"></i>
+            @endif
+        </span>
+        <span class="mr-3">Enrolled&nbsp;
+            @if($patient->is_enrolled_in_cm === 'YES')
+                <i class="text-success fa fa-check"></i>
+            @elseif($patient->is_enrolled_in_cm === 'NO')
+                <i title="{{$patient->why_not_enrolled_for_cm_category}}{{$patient->why_not_enrolled_for_cm_memo ? ': ' . $patient->why_not_enrolled_for_cm_memo : ''}}"
+                   class="text-danger-dark fa fa-times"></i>
+            @else
+                <i title="Pending/Unknown" class="text-secondary fa fa-hourglass"></i>
+            @endif
+        </span>
+        <span class="mr-3">Setup&nbsp;
+            @if($patient->has_cm_setup_been_performed === 'YES')
+                <i class="text-success fa fa-check"></i>
+            @elseif($patient->has_cm_setup_been_performed === 'NO')
+                <i title="Setup not yet performed" class="text-danger-dark fa fa-times"></i>
+            @else
+                <i title="Pending/Unknown" class="text-secondary fa fa-hourglass"></i>
+            @endif
+        </span>
+        <a href="/manage-ccm/{{$patient->uid}}"
+           native="" target="_blank"
+           open-in-stag-popup
+           update-parent
+           popup-style="stag-popup-sm v-center overflow-visible"
+           title="Manage CCM"
+           mc-initer="patient-cm-setup"
+           class="font-weight-bold">
+            <span class="sort-data">Manage</span>
+        </a>
+    </div>
+
+    {{-- rpm --}}
+    <div class="d-inline-flex align-items-baseline flex-wrap p-2 border-right mr-auto">
+        <div class="font-weight-bold text-secondary mr-3 color-rm">RPM</div>
+        <span class="mr-3">Eligible&nbsp;
+            @if($patient->is_eligible_for_rm === 'YES')
+                <i class="text-success fa fa-check"></i>
+            @elseif($patient->is_eligible_for_rm === 'NO')
+                <i title="{{$patient->why_not_eligible_for_rm_category}}{{$patient->why_not_eligible_for_rm_memo ? ': ' . $patient->why_not_eligible_for_rm_memo : ''}}"
+                   class="text-danger-dark fa fa-times"></i>
+            @else
+                <i title="Pending/Unknown" class="text-secondary fa fa-hourglass"></i>
+            @endif
+        </span>
+        <span class="mr-3">Enrolled&nbsp;
+            @if($patient->is_enrolled_in_rm === 'YES')
+                <i class="text-success fa fa-check"></i>
+            @elseif($patient->is_enrolled_in_rm === 'NO')
+                <i title="{{$patient->why_not_enrolled_for_rm_category}}{{$patient->why_not_enrolled_for_rm_memo ? ': ' . $patient->why_not_enrolled_for_rm_memo : ''}}"
+                   class="text-danger-dark fa fa-times"></i>
+            @else
+                <i title="Pending/Unknown" class="text-secondary fa fa-hourglass"></i>
+            @endif
+        </span>
+        <span class="mr-3">BP&nbsp;
+            @if($patient->has_cellular_bp_meter_been_ordered && $patient->is_assigned_cellular_bp_device)
+                <i title="Ordered &amp; Assigned" class="text-success fa fa-check"></i>
+            @elseif($patient->has_cellular_bp_meter_been_ordered)
+                <i title="Ordered" class="text-dark fa fa-shopping-cart"></i>
+            @elseif($patient->is_assigned_cellular_bp_device)
+                <i title="Not ordered, but is assigned!" class="text-warning-mellow fa fa-exclamation-triangle"></i>
+            @else
+                <i title="Not Ordered" class="text-danger-dark fa fa-times"></i>
+            @endif
+        </span>
+        <span class="mr-3">Weight&nbsp;
+            @if($patient->has_cellular_weight_scale_been_ordered && $patient->is_assigned_cellular_weight_scale_device)
+                <i title="Ordered &amp; Assigned" class="text-success fa fa-check"></i>
+            @elseif($patient->has_cellular_weight_scale_been_ordered)
+                <i title="Ordered" class="text-dark fa fa-shopping-cart"></i>
+            @elseif($patient->is_assigned_cellular_weight_scale_device)
+                <i title="Not ordered, but is assigned!" class="text-warning-mellow fa fa-exclamation-triangle"></i>
+            @else
+                <i title="Not Ordered" class="text-danger-dark fa fa-times"></i>
+            @endif
+        </span>
+        <a href="/manage-rpm/{{$patient->uid}}"
+           native="" target="_blank"
+           open-in-stag-popup
+           update-parent
+           popup-style="stag-popup-sm v-center overflow-visible"
+           title="Manage RPM"
+           mc-initer="patient-rm-setup"
+           class="font-weight-bold">
+            <span class="sort-data">Manage</span>
+        </a>
+    </div>
+</div>
+
+

+ 3 - 0
routes/web.php

@@ -697,6 +697,9 @@ Route::middleware('pro.auth')->group(function () {
 
 
     });
     });
 
 
+    Route::get('/manage-ccm/{patient}', 'PatientController@manageCCM')->name('manage-ccm');
+    Route::get('/manage-rpm/{patient}', 'PatientController@manageRPM')->name('manage-rpm');
+
     Route::get('/protocol-builder/{patient}', 'PatientController@protocolBuilder')->name('protocol-builder');
     Route::get('/protocol-builder/{patient}', 'PatientController@protocolBuilder')->name('protocol-builder');
     Route::get('/point/edit-hpi/{note}/{point}', 'NoteController@editHPI')->name('point-edit-hpi');
     Route::get('/point/edit-hpi/{note}/{point}', 'NoteController@editHPI')->name('point-edit-hpi');
     Route::get('/point/hpi-log/{point}', 'NoteController@hpiLog')->name('point-hpi-log');
     Route::get('/point/hpi-log/{point}', 'NoteController@hpiLog')->name('point-hpi-log');