Procházet zdrojové kódy

Intake/plan - logic + UI updates

Vijayakrishnan před 3 roky
rodič
revize
19eec68a05

+ 18 - 12
app/Models/Point.php

@@ -120,19 +120,18 @@ class Point extends Model
             ->where('is_removed_due_to_entry_error', false)
             ->where(function ($query1) use ($_note) {
                 $query1
-                    ->where('addition_reason_category', 'ON_INTAKE')
-                    ->orWhere(function ($query2) use ($_note) {
-                        $query2->where('addition_reason_category', 'DURING_VISIT')
-                            ->where('added_in_note_id', '<>', $_note->id);
-                    });
-            })
-            ->where(function ($query1) use ($_note) {
-                $query1
-                    ->where('is_removed', false)
+                    ->where(function ($query2) use ($_note) {
+                        $query2->where('is_removed', false)
+                            ->where('addition_reason_category', 'ON_INTAKE')
+                            ->where('added_in_note_id', $_note->id);
+                    })
                     ->orWhere(function ($query2) use ($_note) {
                         $query2->where('is_removed', true)
+                            ->where('removal_reason_category', 'ON_INTAKE')
                             ->where('removed_in_note_id', $_note->id);
-                    });
+                    })
+                    ->orWhere('last_child_review_point_scoped_note_id', $_note->id)
+                    ->orWhereRaw("(SELECT count(id) from note_point WHERE is_active Is TRUE AND note_id = {$_note->id} AND point_id = point.id) > 0");
             })
             ->orderBy('created_at')
             ->get();
@@ -151,11 +150,18 @@ class Point extends Model
             ->where('is_removed_due_to_entry_error', false)
             ->where(function ($query1) use ($_note) {
                 $query1
-                    ->where('is_removed', false)
+                    ->where(function ($query2) use ($_note) {
+                        $query2->where('is_removed', false)
+                            ->where('addition_reason_category', 'DURING_VISIT')
+                            ->where('added_in_note_id', $_note->id);
+                    })
                     ->orWhere(function ($query2) use ($_note) {
                         $query2->where('is_removed', true)
+                            ->where('removal_reason_category', 'DURING_VISIT')
                             ->where('removed_in_note_id', $_note->id);
-                    });
+                    })
+                    ->orWhere('last_child_plan_point_scoped_note_id', $_note->id)
+                    ->orWhereRaw("(SELECT count(id) from note_point WHERE is_active IS TRUE AND note_id = {$_note->id} AND point_id = point.id) > 0");
             })
             ->orderBy('created_at')
             ->get();

+ 4 - 17
resources/views/app/patient/note/sign-confirmation.blade.php

@@ -161,24 +161,11 @@
 
         function init() {
 
-            /*if($('.relevant-without-review.block-signing[data-target-segment]').length) {
-                alert('Review missing for one or more problems relevant to this note!');
+            let blockSigningMarker = $('.relevant-without-review-critical[data-target-segment]').first();
+            if(blockSigningMarker.length) {
+                toastr.error('Need at least 1 relevant problem with associated HPI before the note can be signed.');
                 closeStagPopup(true);
-                $('.note-tree-node [data-segment-internal-name="' + $('.relevant-without-review.block-signing[data-target-segment]').first().attr('data-target-segment') + '"]').trigger('click');
-                return false;
-            }*/
-
-            /*if($('.relevant-without-plan.block-signing[data-target-segment]').length) {
-                alert('Plan missing for one or more problems relevant to this note!');
-                closeStagPopup(true);
-                $('.note-tree-node [data-segment-internal-name="' + $('.relevant-without-plan.block-signing[data-target-segment]').first().attr('data-target-segment') + '"]').trigger('click');
-                return false;
-            }*/
-
-            if($('.no-relevant-with-icd.block-signing[data-target-segment]').length) {
-                alert('Need at least 1 relevant problem (with ICD) with associated Subjective/HPI before the note can be signed.');
-                closeStagPopup(true);
-                $('.note-tree-node [data-segment-internal-name="' + $('.no-relevant-with-icd.block-signing[data-target-segment]').first().attr('data-target-segment') + '"]').trigger('click');
+                $('.note-tree-node [data-segment-internal-name="' + blockSigningMarker.attr('data-target-segment') + '"]').trigger('click');
                 return false;
             }
 

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

@@ -4,24 +4,25 @@ use App\Models\Point;
 
 /** @var \App\Models\Client $patient */
 
-$allergies = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
+$points = Point::getIntakePointsOfCategory($patient, 'ALLERGY', $note);
 $tracker = Point::getGlobalSingletonOfCategory($patient, 'NO_KNOWN_TRACKER');
 $numRelevant = 0;
+$plural = 'Allergies';
 ?>
 
 <?php if($tracker && @($tracker->data->no_known_drug_allergies)): ?>
-    <div class="text-secondary"><span>No Known Drug Allergies</span></div>
+    <div class="text-secondary mb-2"><span>No Known Drug {{$plural}}</span></div>
 <?php endif; ?>
 <?php if($tracker && @($tracker->data->no_known_allergies_of_any_type)): ?>
-    <div class="text-secondary"><span>No Known Allergies of Any Type</span></div>
+    <div class="text-secondary mb-2"><span>No Known {{$plural}} of Any Type</span></div>
 <?php endif; ?>
 
 <?php if(!$tracker || !@($tracker->data->no_known_allergies_of_any_type)): ?>
-<?php if (!count($allergies)): ?>
-    <div class="text-secondary">No allergies</div>
+<?php if (!count($points)): ?>
+    <div class="text-secondary">No {{$plural}}</div>
 <?php else: ?>
-    <?php foreach ($allergies as $allergy): ?>
-        <?php $rel = $allergy->relevanceToNote($note); ?>
+    <?php foreach ($points as $point): ?>
+        <?php $rel = $point->relevanceToNote($note); ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if($rel)
@@ -30,35 +31,34 @@ $numRelevant = 0;
                     </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) : '' ?>
+                <div class="<?= $point->is_removed ? 'strike-through' : '' ?>">
+                    <b><?= !!@($point->data->name) ? @($point->data->name) : '-' ?></b>
                 </div>
-                <?php if ($allergy->is_removed): ?>
-                    @if($allergy->removal_reason_category === 'DURING_VISIT')
+                <?php if ($point->is_removed): ?>
+                    @if($point->removal_reason_category === 'DURING_VISIT')
                         <span class="ml-2 text-sm text-secondary">Removed during visit</span>
-                    @elseif($allergy->removal_reason_category === 'ON_INTAKE')
+                    @elseif($point->removal_reason_category === 'ON_INTAKE')
                         <span class="ml-2 text-sm text-secondary">Removed on intake</span>
                     @endif
-                <?php elseif ($allergy->added_in_note_id === $note->id): ?>
+                <?php elseif ($point->added_in_note_id === $note->id): ?>
                     <span class="ml-2 text-sm text-success">* Added on intake</span>
                 <?php endif; ?>
             </div>
-            <?php $review = $allergy->childReviewAddedInNote($note); ?>
+            <?php $review = $point->childReviewAddedInNote($note); ?>
             <?php if(!!$review): ?>
-                <div class="pl-3 mt-1">
-                    <div class="text-secondary font-weight-bold">Subjective</div>
-                    <div>{!! $review->data->value !!}</div>
+                <div class="pl-3 mt-1 d-flex align-items-baseline">
+                    <span class="text-secondary font-weight-bold mr-2">Subjective:</span>
+                    <span>{!! $review->data->value !!}</span>
                 </div>
             <?php elseif($rel): ?>
-                <div class="relevant-without-review text-danger mt-1 text-sm" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Subjective missing</div>
+                <div class="relevant-without-review text-warning-mellow mt-1 text-sm" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Subjective 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>
+            <span class="text-sm">{{$plural}} relevant to this note</span>
         </div>
     @endif
 <?php endif; ?>

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

@@ -4,17 +4,16 @@ use App\Models\Point;
 
 /** @var \App\Models\Client $patient */
 
-$careTeamMembers = Point::getIntakePointsOfCategory($patient, 'CARE_TEAM_MEMBER', $note);
-
+$points = Point::getIntakePointsOfCategory($patient, 'CARE_TEAM_MEMBER', $note);
 $numRelevant = 0;
-
+$plural = 'Care team members';
 ?>
 
-<?php if (!count($careTeamMembers)): ?>
-    <div class="text-secondary">No care team members</div>
+<?php if (!count($points)): ?>
+    <div class="text-secondary">No {{$plural}}</div>
 <?php else: ?>
-    <?php foreach($careTeamMembers as $careTeamMember): ?>
-        <?php $rel = $careTeamMember->relevanceToNote($note); ?>
+    <?php foreach ($points as $point): ?>
+        <?php $rel = $point->relevanceToNote($note); ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if($rel)
@@ -23,39 +22,39 @@ $numRelevant = 0;
                     </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>' : '' ?>
-                    <?= !!@($careTeamMember->data->organization) ? '/&nbsp;' . @($careTeamMember->data->organization) . '<br>' : '' ?>
-                    <?= !!@($careTeamMember->data->phone) ? 'Ph: ' . @($careTeamMember->data->phone) . '<br>' : '' ?>
-                    <?= !!@($careTeamMember->data->fax) ? '/&nbsp;Fax: ' . @($careTeamMember->data->fax) . '<br>' : '' ?>
-                    <?= !!@($careTeamMember->data->date) ? 'Date: ' . @($careTeamMember->data->date) : '' ?>
-                </div>
-                <?php if ($careTeamMember->is_removed): ?>
-                    @if($careTeamMember->removal_reason_category === 'DURING_VISIT')
+                    <div class="<?= $point->is_removed ? 'strike-through' : '' ?>">
+                        <b><?= !!@($point->data->name) ? @($point->data->name) : '-' ?></b>
+                        <?= !!@($point->data->spacialty) ? '/&nbsp;' . @($point->data->spacialty) . '<br>' : '' ?>
+                        <?= !!@($point->data->organization) ? '/&nbsp;' . @($point->data->organization) . '<br>' : '' ?>
+                        <?= !!@($point->data->phone) ? 'Ph: ' . @($point->data->phone) . '<br>' : '' ?>
+                        <?= !!@($point->data->fax) ? '/&nbsp;Fax: ' . @($point->data->fax) . '<br>' : '' ?>
+                        <?= !!@($point->data->date) ? 'Date: ' . @($point->data->date) : '' ?>
+                    </div>
+                <?php if ($point->is_removed): ?>
+                    @if($point->removal_reason_category === 'DURING_VISIT')
                         <span class="ml-2 text-sm text-secondary">Removed during visit</span>
-                    @elseif($careTeamMember->removal_reason_category === 'ON_INTAKE')
+                    @elseif($point->removal_reason_category === 'ON_INTAKE')
                         <span class="ml-2 text-sm text-secondary">Removed on intake</span>
                     @endif
-                <?php elseif ($careTeamMember->added_in_note_id === $note->id): ?>
-                <span class="ml-2 text-sm text-success">* Added on intake</span>
+                <?php elseif ($point->added_in_note_id === $note->id): ?>
+                    <span class="ml-2 text-sm text-success">* Added on intake</span>
                 <?php endif; ?>
             </div>
-            <?php $review = $careTeamMember->childReviewAddedInNote($note); ?>
+            <?php $review = $point->childReviewAddedInNote($note); ?>
             <?php if(!!$review): ?>
-            <div class="pl-3 mt-1">
-                <div class="text-secondary font-weight-bold">Subjective</div>
-                <div>{!! $review->data->value !!}</div>
-            </div>
+                <div class="pl-3 mt-1 d-flex align-items-baseline">
+                    <span class="text-secondary font-weight-bold mr-2">Subjective:</span>
+                    <span>{!! $review->data->value !!}</span>
+                </div>
             <?php elseif($rel): ?>
-            <div class="relevant-without-review text-danger mt-1 text-sm" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Subjective missing</div>
+                <div class="relevant-without-review text-warning-mellow mt-1 text-sm" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Subjective 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>
+            <span class="text-sm">{{$plural}} relevant to this note</span>
         </div>
     @endif
 <?php endif; ?>

+ 34 - 35
resources/views/app/patient/segment-templates/intake_goals/summary.blade.php

@@ -4,53 +4,52 @@ use App\Models\Point;
 
 /** @var \App\Models\Client $patient */
 
-$goals = Point::getIntakePointsOfCategory($patient, 'GOAL', $note);
-
+$points = Point::getIntakePointsOfCategory($patient, 'GOAL', $note);
 $numRelevant = 0;
-
+$plural = 'Goals';
 ?>
 
-<?php if (!count($goals)): ?>
-    <div class="text-secondary">No goals</div>
+<?php if (!count($points)): ?>
+    <div class="text-secondary">No {{$plural}}</div>
 <?php else: ?>
-    <?php foreach($goals as $goal): ?>
-            <?php $rel = $goal->relevanceToNote($note); ?>
-            <div class="pl-2 mb-2">
-                <div class="d-flex align-items-baseline">
-                    @if($rel)
-                        <span class="text-info mr-1">
+    <?php foreach ($points as $point): ?>
+        <?php $rel = $point->relevanceToNote($note); ?>
+        <div class="mb-2">
+            <div class="d-flex align-items-baseline">
+                @if($rel)
+                    <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>
-                    <?php if ($goal->is_removed): ?>
-                        @if($goal->removal_reason_category === 'DURING_VISIT')
-                            <span class="ml-2 text-sm text-secondary">Removed during visit</span>
-                        @elseif($goal->removal_reason_category === 'ON_INTAKE')
-                            <span class="ml-2 text-sm text-secondary">Removed on intake</span>
-                        @endif
-                    <?php elseif ($goal->added_in_note_id === $note->id): ?>
-                        <span class="ml-2 text-sm text-success">* Added on intake</span>
-                    <?php endif; ?>
-                </div>
-                <?php $review = $goal->childReviewAddedInNote($note); ?>
-                <?php if(!!$review): ?>
-                <div class="pl-3 mt-1">
-                    <div class="text-secondary font-weight-bold">Subjective</div>
-                    <div>{!! $review->data->value !!}</div>
+                    <?php $numRelevant++; ?>
+                @endif
+                <div class="<?= $point->is_removed ? 'strike-through' : '' ?>">
+                    <b><?= !!@($point->data->goal) ? @($point->data->goal) : '-' ?></b>
                 </div>
-                <?php elseif($rel): ?>
-                <div class="relevant-without-review text-danger mt-1 text-sm" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Subjective missing</div>
+                <?php if ($point->is_removed): ?>
+                    @if($point->removal_reason_category === 'DURING_VISIT')
+                        <span class="ml-2 text-sm text-secondary">Removed during visit</span>
+                    @elseif($point->removal_reason_category === 'ON_INTAKE')
+                        <span class="ml-2 text-sm text-secondary">Removed on intake</span>
+                    @endif
+                <?php elseif ($point->added_in_note_id === $note->id): ?>
+                    <span class="ml-2 text-sm text-success">* Added on intake</span>
                 <?php endif; ?>
             </div>
-        <?php endforeach; ?>
+            <?php $review = $point->childReviewAddedInNote($note); ?>
+            <?php if(!!$review): ?>
+                <div class="pl-3 mt-1 d-flex align-items-baseline">
+                    <span class="text-secondary font-weight-bold mr-2">Subjective:</span>
+                    <span>{!! $review->data->value !!}</span>
+                </div>
+            <?php elseif($rel): ?>
+                <div class="relevant-without-review text-warning-mellow mt-1 text-sm" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Subjective 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">Goals relevant to this note</span>
+            <span class="text-sm">{{$plural}} relevant to this note</span>
         </div>
     @endif
 <?php endif; ?>

+ 20 - 21
resources/views/app/patient/segment-templates/intake_medications/summary.blade.php

@@ -4,21 +4,21 @@ use App\Models\Point;
 
 /** @var \App\Models\Client $patient */
 
-$medications = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
+$points = Point::getIntakePointsOfCategory($patient, 'MEDICATION', $note);
 $tracker = Point::getGlobalSingletonOfCategory($patient, 'NO_KNOWN_TRACKER');
 $numRelevant = 0;
-
+$plural = 'Medications';
 ?>
 
 <?php if($tracker && @($tracker->data->no_known_medications)): ?>
     <div class="text-secondary"><span>No Known Medications</span></div>
 <?php endif; ?>
 <?php if(!$tracker || !@($tracker->data->no_known_medications)): ?>
-<?php if (!count($medications)): ?>
-    <div class="text-secondary">No medications</div>
+<?php if (!count($points)): ?>
+    <div class="text-secondary">No {{$plural}}</div>
 <?php else: ?>
-    <?php foreach ($medications as $medication): ?>
-        <?php $rel = $medication->relevanceToNote($note); ?>
+    <?php foreach ($points as $point): ?>
+        <?php $rel = $point->relevanceToNote($note); ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if($rel)
@@ -27,35 +27,34 @@ $numRelevant = 0;
                     </span>
                     <?php $numRelevant++; ?>
                 @endif
-                <div class="<?= $medication->is_removed ? 'strike-through' : '' ?>">
-                    <b><?= !!@($medication->data->name) ? @($medication->data->name) : '-' ?></b>
-                    <?= !!@($medication->data->start_date) ? '/&nbsp;From ' . @($medication->data->start_date) : '' ?>
+                <div class="<?= $point->is_removed ? 'strike-through' : '' ?>">
+                    <b><?= !!@($point->data->name) ? @($point->data->name) : '-' ?></b>
                 </div>
-                <?php if ($medication->is_removed): ?>
-                    @if($medication->removal_reason_category === 'DURING_VISIT')
+                <?php if ($point->is_removed): ?>
+                    @if($point->removal_reason_category === 'DURING_VISIT')
                         <span class="ml-2 text-sm text-secondary">Removed during visit</span>
-                    @elseif($medication->removal_reason_category === 'ON_INTAKE')
+                    @elseif($point->removal_reason_category === 'ON_INTAKE')
                         <span class="ml-2 text-sm text-secondary">Removed on intake</span>
                     @endif
-                <?php elseif ($medication->added_in_note_id === $note->id): ?>
-                <span class="ml-2 text-sm text-success">* Added on intake</span>
+                <?php elseif ($point->added_in_note_id === $note->id): ?>
+                    <span class="ml-2 text-sm text-success">* Added on intake</span>
                 <?php endif; ?>
             </div>
-            <?php $review = $medication->childReviewAddedInNote($note); ?>
+            <?php $review = $point->childReviewAddedInNote($note); ?>
             <?php if(!!$review): ?>
-            <div class="pl-3 mt-1">
-                <div class="text-secondary font-weight-bold">Subjective</div>
-                <div>{!! $review->data->value !!}</div>
-            </div>
+                <div class="pl-3 mt-1 d-flex align-items-baseline">
+                    <span class="text-secondary font-weight-bold mr-2">Subjective:</span>
+                    <span>{!! $review->data->value !!}</span>
+                </div>
             <?php elseif($rel): ?>
-            <div class="relevant-without-review text-danger mt-1 text-sm" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Subjective missing</div>
+                <div class="relevant-without-review text-warning-mellow mt-1 text-sm" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Subjective 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 relevant to this note</span>
+            <span class="text-sm">{{$plural}} relevant to this note</span>
         </div>
     @endif
 <?php endif; ?>

+ 20 - 22
resources/views/app/patient/segment-templates/intake_problems/summary.blade.php

@@ -4,16 +4,16 @@ use App\Models\Point;
 
 /** @var \App\Models\Client $patient */
 
-$problems = Point::getIntakePointsOfCategory($patient, 'PROBLEM', $note);
-
+$points = Point::getIntakePointsOfCategory($patient, 'PROBLEM', $note);
 $numRelevant = 0;
+$plural = 'Problems';
 ?>
 
-<?php if (!count($problems)): ?>
-    <div class="text-secondary">No problems</div>
+<?php if (!count($points)): ?>
+    <div class="text-secondary">No {{$plural}}</div>
 <?php else: ?>
-    <?php foreach ($problems as $problem): ?>
-        <?php $rel = $problem->relevanceToNote($note); ?>
+    <?php foreach ($points as $point): ?>
+        <?php $rel = $point->relevanceToNote($note); ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if($rel)
@@ -22,36 +22,34 @@ $numRelevant = 0;
                     </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) : '' ?>
-                    <?= !!@($problem->data->description) ? '/&nbsp;' . @($problem->data->description) : '' ?>
+                <div class="<?= $point->is_removed ? 'strike-through' : '' ?>">
+                    <b><?= !!@($point->data->name) ? @($point->data->name) : '-' ?></b>
                 </div>
-                <?php if ($problem->is_removed): ?>
-                    @if($problem->removal_reason_category === 'DURING_VISIT')
+                <?php if ($point->is_removed): ?>
+                    @if($point->removal_reason_category === 'DURING_VISIT')
                         <span class="ml-2 text-sm text-secondary">Removed during visit</span>
-                    @elseif($problem->removal_reason_category === 'ON_INTAKE')
+                    @elseif($point->removal_reason_category === 'ON_INTAKE')
                         <span class="ml-2 text-sm text-secondary">Removed on intake</span>
                     @endif
-                <?php elseif ($problem->added_in_note_id === $note->id): ?>
+                <?php elseif ($point->added_in_note_id === $note->id): ?>
                     <span class="ml-2 text-sm text-success">* Added on intake</span>
                 <?php endif; ?>
             </div>
-            <?php $hpi = $problem->childReviewAddedInNote($note); ?>
-            <?php if(!!$hpi): ?>
-            <div class="pl-3 mt-1">
-                <div class="text-secondary font-weight-bold">HPI</div>
-                <div>{!! $hpi->data && @($hpi->data->value) ? $hpi->data->value : '-' !!}</div>
-            </div>
+            <?php $review = $point->childReviewAddedInNote($note); ?>
+            <?php if(!!$review): ?>
+                <div class="pl-3 mt-1 d-flex align-items-baseline">
+                    <span class="text-secondary font-weight-bold mr-2">HPI:</span>
+                    <span>{!! $review->data->value !!}</span>
+                </div>
             <?php elseif($rel): ?>
-            <div class="relevant-without-review block-signing text-danger mt-1 text-sm" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Subjective missing</div>
+                <div class="relevant-without-review-critical text-danger mt-1 text-sm" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>HPI 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>
+            <span class="text-sm">{{$plural}} relevant to this note</span>
         </div>
     @endif
 <?php endif; ?>

+ 26 - 34
resources/views/app/patient/segment-templates/plan_allergies/summary.blade.php

@@ -4,36 +4,30 @@ use App\Models\Point;
 
 /** @var \App\Models\Client $patient */
 
-list($allergies, $counts) = Point::getPointsOfCategoryExtended($patient, 'ALLERGY', $note);
+$points = Point::getPlanPointsOfCategory($patient, 'ALLERGY', $note);
 $tracker = Point::getGlobalSingletonOfCategory($patient, 'NO_KNOWN_TRACKER');
 $numRelevant = 0;
 $numVisible = 0;
+$plural = 'Allergies';
 ?>
 
 <?php if($tracker && @($tracker->data->no_known_drug_allergies)): ?>
-    <div class="text-secondary"><span>No Known Drug Allergies</span></div>
+    <div class="text-secondary mb-2"><span>No Known Drug {{$plural}}</span></div>
 <?php endif; ?>
 <?php if($tracker && @($tracker->data->no_known_allergies_of_any_type)): ?>
-    <div class="text-secondary"><span>No Known Allergies of Any Type</span></div>
+    <div class="text-secondary mb-2"><span>No Known {{$plural}} of Any Type</span></div>
 <?php endif; ?>
 
 <?php if(!$tracker || !@($tracker->data->no_known_allergies_of_any_type)): ?>
-<?php if (!count($allergies)): ?>
-    <div class="text-secondary">No allergies</div>
+<?php if (!count($points)): ?>
+    <div class="text-secondary">No {{$plural}}</div>
 <?php else: ?>
-    <?php foreach ($allergies as $allergy): ?>
-        <?php if($allergy->is_removed && $allergy->is_removed_due_to_entry_error) continue; ?>
-        <?php $rel = $allergy->relevanceToNote($note); ?>
-        <?php $review = $allergy->childPlanAddedInNote($note); ?>
-
-        <!--show only if: relevant || added-in-note || removed-in-note || added-plan-in-note-->
-        @if($rel ||
-            (!$allergy->is_removed && $allergy->added_in_note_id === $note->id) ||
-            ($allergy->is_removed && $allergy->removed_in_note_id === $note->id) ||
-            !!$review
-            )
-
-            <?php $numVisible++; ?>
+    <?php foreach ($points as $point): ?>
+        <?php if($point->is_removed && $point->is_removed_due_to_entry_error) continue; ?>
+        <?php $rel = $point->relevanceToNote($note); ?>
+        <?php $plan = $point->lastChildPlan; ?>
+        <?php if($plan && @($plan->data)) $plan->data = json_decode($plan->data); ?>
+        <?php $numVisible++; ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if($rel)
@@ -42,44 +36,42 @@ $numVisible = 0;
                     </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) : '' ?>
+                <div class="<?= $point->is_removed ? 'strike-through' : '' ?>">
+                    <b><?= !!@($point->data->name) ? @($point->data->name) : '-' ?></b>
                 </div>
-                <?php if ($allergy->is_removed): ?>
-                    @if($allergy->removal_reason_category === 'DURING_VISIT')
+                <?php if ($point->is_removed): ?>
+                    @if($point->removal_reason_category === 'DURING_VISIT')
                         <span class="ml-2 text-sm text-secondary">Removed during visit</span>
-                    @elseif($allergy->removal_reason_category === 'ON_INTAKE')
+                    @elseif($point->removal_reason_category === 'ON_INTAKE')
                         <span class="ml-2 text-sm text-secondary">Removed on intake</span>
                     @endif
-                <?php elseif ($allergy->added_in_note_id === $note->id): ?>
-                    <?php if ($allergy->addition_reason_category === 'DURING_VISIT'): ?>
+                <?php elseif ($point->added_in_note_id === $note->id): ?>
+                    <?php if ($point->addition_reason_category === 'DURING_VISIT'): ?>
                         <span class="ml-2 text-sm text-success">* Added during visit</span>
                     <?php else: ?>
                         <span class="ml-2 text-sm text-info">* Added on intake</span>
                     <?php endif;?>
                 <?php endif; ?>
             </div>
-            <?php if(!!$review): ?>
-            <div class="pl-3 mt-1">
-                <div class="text-secondary font-weight-bold">Plan</div>
-                <div>{!! $review->data->value !!}</div>
+            <?php if(!!$plan): ?>
+            <div class="pl-3 mt-1 d-flex align-items-baseline">
+                <span class="text-secondary font-weight-bold mr-2">Plan:</span>
+                <span>{!! $plan->data->value !!}</span>
             </div>
             <?php elseif($rel): ?>
-            <div class="relevant-without-plan text-danger text-sm mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
+            <div class="relevant-without-plan text-warning-mellow text-sm mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
             <?php endif; ?>
         </div>
-        @endif
     <?php endforeach; ?>
     @if(!$numVisible)
         <div class="d-flex align-items-baseline mr-1">
-            <span class="text-secondary">No allergies</span>
+            <span class="text-secondary">No {{$plural}}</span>
         </div>
     @endif
     @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>
+            <span class="text-sm">{{$plural}} relevant to this note</span>
         </div>
     @endif
 <?php endif; ?>

+ 24 - 38
resources/views/app/patient/segment-templates/plan_care_team/summary.blade.php

@@ -4,28 +4,21 @@ use App\Models\Point;
 
 /** @var \App\Models\Client $patient */
 
-list($careTeamMembers, $counts) = Point::getPointsOfCategoryExtended($patient, 'CARE_TEAM_MEMBER', $note);
-
+$points = Point::getPlanPointsOfCategory($patient, 'CARE_TEAM_MEMBER', $note);
 $numRelevant = 0;
 $numVisible = 0;
+$plural = 'Care team members';
 ?>
 
-<?php if (!count($careTeamMembers)): ?>
-    <div class="text-secondary">No care team members</div>
+<?php if (!count($points)): ?>
+    <div class="text-secondary">No {{$plural}}</div>
 <?php else: ?>
-    <?php foreach($careTeamMembers as $careTeamMember): ?>
-        <?php if($careTeamMember->is_removed && $careTeamMember->is_removed_due_to_entry_error) continue; ?>
-        <?php $rel = $careTeamMember->relevanceToNote($note); ?>
-        <?php $review = $careTeamMember->childPlanAddedInNote($note); ?>
-
-        <!--show only if: relevant || added-in-note || removed-in-note || added-plan-in-note-->
-        @if($rel ||
-            (!$careTeamMember->is_removed && $careTeamMember->added_in_note_id === $note->id) ||
-            ($careTeamMember->is_removed && $careTeamMember->removed_in_note_id === $note->id) ||
-            !!$review
-            )
-
-            <?php $numVisible++; ?>
+    <?php foreach ($points as $point): ?>
+        <?php if($point->is_removed && $point->is_removed_due_to_entry_error) continue; ?>
+        <?php $rel = $point->relevanceToNote($note); ?>
+        <?php $plan = $point->lastChildPlan; ?>
+        <?php if($plan && @($plan->data)) $plan->data = json_decode($plan->data); ?>
+        <?php $numVisible++; ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if($rel)
@@ -34,49 +27,42 @@ $numVisible = 0;
                     </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>' : '' ?>
-                    <?= !!@($careTeamMember->data->organization) ? '/&nbsp;' . @($careTeamMember->data->organization) . '<br>' : '' ?>
-                    <?= !!@($careTeamMember->data->phone) ? 'Ph: ' . @($careTeamMember->data->phone) . '<br>' : '' ?>
-                    <?= !!@($careTeamMember->data->fax) ? '/&nbsp;Fax: ' . @($careTeamMember->data->fax) . '<br>' : '' ?>
-                    <?= !!@($careTeamMember->data->date) ? 'Date: ' . @($careTeamMember->data->date) : '' ?>
+                <div class="<?= $point->is_removed ? 'strike-through' : '' ?>">
+                    <b><?= !!@($point->data->goal) ? @($point->data->goal) : '-' ?></b>
                 </div>
-                <?php if ($careTeamMember->is_removed): ?>
-                    @if($careTeamMember->removal_reason_category === 'DURING_VISIT')
+                <?php if ($point->is_removed): ?>
+                    @if($point->removal_reason_category === 'DURING_VISIT')
                         <span class="ml-2 text-sm text-secondary">Removed during visit</span>
-                    @elseif($careTeamMember->removal_reason_category === 'ON_INTAKE')
+                    @elseif($point->removal_reason_category === 'ON_INTAKE')
                         <span class="ml-2 text-sm text-secondary">Removed on intake</span>
                     @endif
-                <?php elseif ($careTeamMember->added_in_note_id === $note->id): ?>
-                    <?php if ($careTeamMember->addition_reason_category === 'DURING_VISIT'): ?>
+                <?php elseif ($point->added_in_note_id === $note->id): ?>
+                    <?php if ($point->addition_reason_category === 'DURING_VISIT'): ?>
                         <span class="ml-2 text-sm text-success">* Added during visit</span>
                     <?php else: ?>
                         <span class="ml-2 text-sm text-info">* Added on intake</span>
                     <?php endif;?>
                 <?php endif; ?>
             </div>
-            <?php if(!!$review): ?>
-            <div class="pl-3 mt-1">
-                <div class="text-secondary font-weight-bold">Plan</div>
-                <div>{!! $review->data->value !!}</div>
+            <?php if(!!$plan): ?>
+            <div class="pl-3 mt-1 d-flex align-items-baseline">
+                <span class="text-secondary font-weight-bold mr-2">Plan:</span>
+                <span>{!! $plan->data->value !!}</span>
             </div>
             <?php elseif($rel): ?>
-            <div class="relevant-without-plan text-danger text-sm mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
+            <div class="relevant-without-plan text-warning-mellow text-sm mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
             <?php endif; ?>
         </div>
-        @endif
     <?php endforeach; ?>
     @if(!$numVisible)
         <div class="d-flex align-items-baseline mr-1">
-            <span class="text-secondary">No care team members</span>
+            <span class="text-secondary">No {{$plural}}</span>
         </div>
     @endif
     @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>
+            <span class="text-sm">{{$plural}} relevant to this note</span>
         </div>
     @endif
 <?php endif; ?>
-

+ 50 - 51
resources/views/app/patient/segment-templates/plan_goals/summary.blade.php

@@ -4,66 +4,65 @@ use App\Models\Point;
 
 /** @var \App\Models\Client $patient */
 
-list($goals, $counts) = Point::getPointsOfCategoryExtended($patient, 'GOAL', $note);
-
-$goals = array_filter($goals, function ($_x) use ($note) {
-    $rel = $_x->relevanceToNote($note);
-    $review = $_x->childPlanAddedInNote($note);
-    return ($rel ||
-        (!$_x->is_removed && $_x->added_in_note_id === $note->id) ||
-        ($_x->is_removed && $_x->removed_in_note_id === $note->id) ||
-        !!$review);
-});
-
+$points = Point::getPlanPointsOfCategory($patient, 'GOAL', $note);
 $numRelevant = 0;
+$numVisible = 0;
+$plural = 'Goals';
 ?>
 
-<?php if (!count($goals)): ?>
-    <div class="text-secondary">No goals</div>
+<?php if (!count($points)): ?>
+    <div class="text-secondary">No {{$plural}}</div>
 <?php else: ?>
-    <?php foreach ($goals as $goal): ?>
-            <?php $rel = $goal->relevanceToNote($note); ?>
-            <div class="pl-2 mb-2">
-                <div class="d-flex align-items-baseline">
-                    @if($rel)
-                        <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>
-                    <?php if ($goal->is_removed): ?>
-                        @if($goal->removal_reason_category === 'DURING_VISIT')
-                            <span class="ml-2 text-sm text-secondary">Removed during visit</span>
-                        @elseif($goal->removal_reason_category === 'ON_INTAKE')
-                            <span class="ml-2 text-sm text-secondary">Removed on intake</span>
-                        @endif
-                    <?php elseif ($goal->added_in_note_id === $note->id): ?>
-                        <?php if ($goal->addition_reason_category === 'DURING_VISIT'): ?>
-                            <span class="ml-2 text-sm text-success">* Added during visit</span>
-                        <?php else: ?>
-                            <span class="ml-2 text-sm text-info">* Added on intake</span>
-                        <?php endif;?>
-                    <?php endif; ?>
+    <?php foreach ($points as $point): ?>
+        <?php if($point->is_removed && $point->is_removed_due_to_entry_error) continue; ?>
+        <?php $rel = $point->relevanceToNote($note); ?>
+        <?php $plan = $point->lastChildPlan; ?>
+        <?php if($plan && @($plan->data)) $plan->data = json_decode($plan->data); ?>
+        <?php $numVisible++; ?>
+        <div class="mb-2">
+            <div class="d-flex align-items-baseline">
+                @if($rel)
+                    <span class="text-info mr-1">
+                        <i class="fa fa-star"></i>
+                    </span>
+                    <?php $numRelevant++; ?>
+                @endif
+                <div class="<?= $point->is_removed ? 'strike-through' : '' ?>">
+                    <b><?= !!@($point->data->goal) ? @($point->data->goal) : '-' ?></b>
                 </div>
-                <?php $review = $goal->childPlanAddedInNote($note); ?>
-                <?php if(!!$review): ?>
-                <div class="pl-3 mt-1">
-                    <div class="text-secondary font-weight-bold">Plan</div>
-                    <div>{!! $review->data->value !!}</div>
-                </div>
-                <?php elseif($rel): ?>
-                <div class="relevant-without-plan text-danger text-sm mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
+                <?php if ($point->is_removed): ?>
+                    @if($point->removal_reason_category === 'DURING_VISIT')
+                        <span class="ml-2 text-sm text-secondary">Removed during visit</span>
+                    @elseif($point->removal_reason_category === 'ON_INTAKE')
+                        <span class="ml-2 text-sm text-secondary">Removed on intake</span>
+                    @endif
+                <?php elseif ($point->added_in_note_id === $note->id): ?>
+                    <?php if ($point->addition_reason_category === 'DURING_VISIT'): ?>
+                        <span class="ml-2 text-sm text-success">* Added during visit</span>
+                    <?php else: ?>
+                        <span class="ml-2 text-sm text-info">* Added on intake</span>
+                    <?php endif;?>
                 <?php endif; ?>
             </div>
-        <?php endforeach; ?>
+            <?php if(!!$plan): ?>
+            <div class="pl-3 mt-1 d-flex align-items-baseline">
+                <span class="text-secondary font-weight-bold mr-2">Plan:</span>
+                <span>{!! $plan->data->value !!}</span>
+            </div>
+            <?php elseif($rel): ?>
+            <div class="relevant-without-plan text-warning-mellow text-sm 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; ?>
+    @if(!$numVisible)
+        <div class="d-flex align-items-baseline mr-1">
+            <span class="text-secondary">No {{$plural}}</span>
+        </div>
+    @endif
     @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>
+            <span class="text-sm">{{$plural}} relevant to this note</span>
         </div>
     @endif
-<?php endif; ?>
-
+<?php endif; ?>

+ 25 - 36
resources/views/app/patient/segment-templates/plan_medications/summary.blade.php

@@ -4,33 +4,26 @@ use App\Models\Point;
 
 /** @var \App\Models\Client $patient */
 
-list($medications, $counts) = Point::getPointsOfCategoryExtended($patient, 'MEDICATION', $note);
+$points = Point::getPlanPointsOfCategory($patient, 'MEDICATION', $note);
 $tracker = Point::getGlobalSingletonOfCategory($patient, 'NO_KNOWN_TRACKER');
 $numRelevant = 0;
 $numVisible = 0;
+$plural = 'Medications';
 ?>
 
 <?php if($tracker && @($tracker->data->no_known_medications)): ?>
-    <div class="text-secondary"><span>No Known Medications</span></div>
+    <div class="text-secondary"><span>No Known {{$plural}}</span></div>
 <?php endif; ?>
 <?php if(!$tracker || !@($tracker->data->no_known_medications)): ?>
-<?php if (!count($medications)): ?>
-    <div class="text-secondary">No medications</div>
+<?php if (!count($points)): ?>
+    <div class="text-secondary">No {{$plural}}</div>
 <?php else: ?>
-    <?php foreach ($medications as $medication): ?>
-        <?php if($medication->is_removed && $medication->is_removed_due_to_entry_error) continue; ?>
-        <?php $rel = $medication->relevanceToNote($note); ?>
-        <?php $review = $medication->childPlanAddedInNote($note); ?>
-
-        <!--show only if: relevant || added-in-note || removed-in-note || added-plan-in-note-->
-        @if($rel ||
-            (!$medication->is_removed && $medication->added_in_note_id === $note->id) ||
-            ($medication->is_removed && $medication->removed_in_note_id === $note->id) ||
-            !!$review
-            )
-
-            <?php $numVisible++; ?>
-
+    <?php foreach ($points as $point): ?>
+        <?php if($point->is_removed && $point->is_removed_due_to_entry_error) continue; ?>
+        <?php $rel = $point->relevanceToNote($note); ?>
+        <?php $plan = $point->lastChildPlan; ?>
+        <?php if($plan && @($plan->data)) $plan->data = json_decode($plan->data); ?>
+        <?php $numVisible++; ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if($rel)
@@ -39,46 +32,42 @@ $numVisible = 0;
                     </span>
                     <?php $numRelevant++; ?>
                 @endif
-                <div class="<?= $medication->is_removed ? 'strike-through' : '' ?>">
-                    <b><?= !!@($medication->data->name) ? @($medication->data->name) : '-' ?></b>
+                <div class="<?= $point->is_removed ? 'strike-through' : '' ?>">
+                    <b><?= !!@($point->data->name) ? @($point->data->name) : '-' ?></b>
                 </div>
-                <?php if ($medication->is_removed): ?>
-                    @if($medication->removal_reason_category === 'DURING_VISIT')
+                <?php if ($point->is_removed): ?>
+                    @if($point->removal_reason_category === 'DURING_VISIT')
                         <span class="ml-2 text-sm text-secondary">Removed during visit</span>
-                    @elseif($medication->removal_reason_category === 'ON_INTAKE')
+                    @elseif($point->removal_reason_category === 'ON_INTAKE')
                         <span class="ml-2 text-sm text-secondary">Removed on intake</span>
                     @endif
-                <?php elseif ($medication->added_in_note_id === $note->id): ?>
-                    <?php if ($medication->addition_reason_category === 'DURING_VISIT'): ?>
+                <?php elseif ($point->added_in_note_id === $note->id): ?>
+                    <?php if ($point->addition_reason_category === 'DURING_VISIT'): ?>
                         <span class="ml-2 text-sm text-success">* Added during visit</span>
                     <?php else: ?>
                         <span class="ml-2 text-sm text-info">* Added on intake</span>
                     <?php endif;?>
                 <?php endif; ?>
             </div>
-            <?php $review = $medication->childPlanAddedInNote($note); ?>
-            <?php if(!!$review): ?>
-            <div class="pl-3 mt-1">
-                <div class="text-secondary font-weight-bold">Plan</div>
-                <div>{!! $review->data->value !!}</div>
+            <?php if(!!$plan): ?>
+            <div class="pl-3 mt-1 d-flex align-items-baseline">
+                <span class="text-secondary font-weight-bold mr-2">Plan:</span>
+                <span>{!! $plan->data->value !!}</span>
             </div>
             <?php elseif($rel): ?>
-            <div class="relevant-without-plan text-danger text-sm mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
+            <div class="relevant-without-plan text-warning-mellow text-sm mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
             <?php endif; ?>
         </div>
-
-        @endif
-
     <?php endforeach; ?>
     @if(!$numVisible)
         <div class="d-flex align-items-baseline mr-1">
-            <span class="text-secondary">No medications</span>
+            <span class="text-secondary">No {{$plural}}</span>
         </div>
     @endif
     @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 relevant to this note</span>
+            <span class="text-sm">{{$plural}} relevant to this note</span>
         </div>
     @endif
 <?php endif; ?>

+ 24 - 54
resources/views/app/patient/segment-templates/plan_problems/summary.blade.php

@@ -4,30 +4,21 @@ use App\Models\Point;
 
 /** @var \App\Models\Client $patient */
 
-list($problems, $counts) = Point::getPointsOfCategoryExtended($patient, 'PROBLEM', $note);
-
+$points = Point::getPlanPointsOfCategory($patient, 'PROBLEM', $note);
 $numRelevant = 0;
 $numVisible = 0;
-$numRelevantWithICD = 0;
+$plural = 'Problems';
 ?>
 
-<?php if (!count($problems)): ?>
-    <div class="text-secondary">No problems</div>
+<?php if (!count($points)): ?>
+    <div class="text-secondary">No {{$plural}}</div>
 <?php else: ?>
-    <?php foreach ($problems as $problem): ?>
-        <?php if($problem->is_removed && $problem->is_removed_due_to_entry_error) continue; ?>
-        <?php $rel = $problem->relevanceToNote($note); ?>
-        <?php $review = $problem->childPlanAddedInNote($note); ?>
-        <?php $hpi = $problem->childReviewAddedInNote($note); ?>
-
-        <!--show only if: relevant || added-in-note || removed-in-note || added-plan-in-note-->
-        @if($rel ||
-            (!$problem->is_removed && $problem->added_in_note_id === $note->id) ||
-            ($problem->is_removed && $problem->removed_in_note_id === $note->id) ||
-            !!$review
-            )
-
-            <?php $numVisible++; ?>
+    <?php foreach ($points as $point): ?>
+        <?php if($point->is_removed && $point->is_removed_due_to_entry_error) continue; ?>
+        <?php $rel = $point->relevanceToNote($note); ?>
+        <?php $plan = $point->lastChildPlan; ?>
+        <?php if($plan && @($plan->data)) $plan->data = json_decode($plan->data); ?>
+        <?php $numVisible++; ?>
         <div class="mb-2">
             <div class="d-flex align-items-baseline">
                 @if($rel)
@@ -35,65 +26,44 @@ $numRelevantWithICD = 0;
                         <i class="fa fa-star"></i>
                     </span>
                     <?php $numRelevant++; ?>
-                    @if(!!@($problem->data->icd) && !!$hpi)
-                        <?php $numRelevantWithICD++; ?>
-                    @endif
                 @endif
-                <div class="<?= $problem->is_removed ? 'strike-through' : '' ?> <?= !$rel ? 'on-hover-opaque' : '' ?>">
-                    <b><?= !!@($problem->data->name) ? @($problem->data->name) : '-' ?></b>
-                    <?= !!@($problem->data->icd) ? '/&nbsp;' . @($problem->data->icd) : '' ?>
-                    <?= !!@($problem->data->description) ? '/&nbsp;' . @($problem->data->description) : '' ?>
+                <div class="<?= $point->is_removed ? 'strike-through' : '' ?>">
+                    <b><?= !!@($point->data->name) ? @($point->data->name) : '-' ?></b>
                 </div>
-                <?php if ($problem->is_removed): ?>
-                    @if($problem->removal_reason_category === 'DURING_VISIT')
+                <?php if ($point->is_removed): ?>
+                    @if($point->removal_reason_category === 'DURING_VISIT')
                         <span class="ml-2 text-sm text-secondary">Removed during visit</span>
-                    @elseif($problem->removal_reason_category === 'ON_INTAKE')
+                    @elseif($point->removal_reason_category === 'ON_INTAKE')
                         <span class="ml-2 text-sm text-secondary">Removed on intake</span>
                     @endif
-                <?php elseif ($problem->added_in_note_id === $note->id): ?>
-                    <?php if ($problem->addition_reason_category === 'DURING_VISIT'): ?>
+                <?php elseif ($point->added_in_note_id === $note->id): ?>
+                    <?php if ($point->addition_reason_category === 'DURING_VISIT'): ?>
                         <span class="ml-2 text-sm text-success">* Added during visit</span>
                     <?php else: ?>
                         <span class="ml-2 text-sm text-info">* Added on intake</span>
                     <?php endif;?>
                 <?php endif; ?>
             </div>
-            <?php if(!!$hpi): ?>
-            <div class="pl-3 mt-1">
-                <div class="text-secondary font-weight-bold">HPI</div>
-                <div>{!! $hpi->data && @($hpi->data->value) ? $hpi->data->value : '-' !!}</div>
+            <?php if(!!$plan): ?>
+            <div class="pl-3 mt-1 d-flex align-items-baseline">
+                <span class="text-secondary font-weight-bold mr-2">Plan:</span>
+                <span>{!! $plan->data->value !!}</span>
             </div>
             <?php elseif($rel): ?>
-            <div class="relevant-without-review block-signing text-danger text-sm mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>">
-                <i class="fa fa-exclamation-triangle mr-1"></i>HPI missing
-            </div>
-            <?php endif; ?>
-            <?php if(!!$review): ?>
-            <div class="pl-3 mt-1">
-                <div class="text-secondary font-weight-bold">Plan</div>
-                <div>{!! @$review->data->value !!}</div>
-            </div>
-            <?php elseif($rel && !$problem->is_removed): ?>
-            <div class="relevant-without-plan block-signing text-danger text-sm mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>">
-                <i class="fa fa-exclamation-triangle mr-1"></i>Plan missing
-            </div>
+            <div class="relevant-without-plan text-warning-mellow text-sm mt-1" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Plan missing</div>
             <?php endif; ?>
         </div>
-        @endif
     <?php endforeach; ?>
     @if(!$numVisible)
         <div class="d-flex align-items-baseline mr-1">
-            <span class="text-secondary">No problems</span>
+            <span class="text-secondary">No {{$plural}}</span>
         </div>
     @endif
     @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>
+            <span class="text-sm">{{$plural}} relevant to this note</span>
         </div>
     @endif
-    @if(!$numRelevantWithICD)
-        <div class="no-relevant-with-icd block-signing text-danger mt-1 text-sm" data-target-segment="<?= $segment->segmentTemplate->internal_name ?>"><i class="fa fa-exclamation-triangle mr-1"></i>Need at least 1 relevant problem (with ICD) with associated Subjective/HPI before the note can be signed</div>
-    @endif
 <?php endif; ?>
 

+ 2 - 2
resources/views/app/patient/wizard-partials/common-fields.blade.php

@@ -18,7 +18,7 @@
 
     <div class="mb-2">
         <span class="font-weight-bold">Is this pre-existing, or being {{@$addVerbPT ? strtolower($addVerbPT) : 'added'}} during this visit?</span>
-        @if($point && $point->added_in_note_id !== $note->id)
+        @if($point && $point->added_in_note_id !== $note->id && !$point->is_removed)
             <div class="mt-1">
                 @if($point->addition_reason_category === 'ON_INTAKE')
                     Added as pre-existing on {{friendly_date($point->note->effective_dateest)}}
@@ -71,7 +71,7 @@
 
         <div class="mb-2">
             <span class="font-weight-bold">Was this {{$label}} removed PRIOR to this visit or DURING this visit?</span>
-            @if($point && $point->added_in_note_id !== $note->id)
+            @if($point && $point->added_in_note_id !== $note->id && $point->is_removed)
                 <div class="mt-1">
                     @if($point->removal_reason_category === 'ON_INTAKE')
                         Removed prior to the visit on {{friendly_date($point->note->effective_dateest)}}