Przeglądaj źródła

Nutrition segments - fast food

Vijayakrishnan 3 lat temu
rodzic
commit
f95cc7ac46

+ 2 - 2
resources/views/app/patient/nutrition-center.blade.php

@@ -20,8 +20,8 @@ $dailyIntakeCalories = Point::getOnlyPointOfCategory($patient, 'DAILY_INTAKE_CAL
 $points = [
     ["category" => 'HIGH_SUGAR_BEVERAGES', "name" => 'High Sugar Beverages', "point" => $highSugarBeverages],
     ["category" => 'WATER_INTAKE', "name" => 'Water Intake', "point" => $waterIntake],
-    /*["category" => 'FAST_FOOD', "name" => 'Fast Food', "point" => $fastFood],
-    ["category" => 'SNACKS', "name" => 'Snacks', "point" => $snacks],*/
+    ["category" => 'FAST_FOOD', "name" => 'Fast Food', "point" => $fastFood],
+    /*["category" => 'SNACKS', "name" => 'Snacks', "point" => $snacks],*/
     ["category" => 'VEGETABLES', "name" => 'Vegetables', "point" => $vegetables],
     ["category" => 'PORTION_SIZES', "name" => 'Portion Sizes', "point" => $portionSizes],
     ["category" => 'DAILY_INTAKE_CARBOHYDRATES', "name" => 'Daily Intake Carbohydrates', "point" => $dailyIntakeCarbohydrates],

+ 118 - 0
resources/views/app/patient/segment-templates/_child_plan/FAST_FOOD/edit-plan.php

@@ -0,0 +1,118 @@
+<?php
+$currentValue = '';
+$previousValue = '';
+$previousChildPlan = null;
+if (@$point) {
+    if ($point->lastChildPlan && $point->last_child_plan_point_scoped_note_id === $note->id) {
+        $parsedPlan = json_decode($point->lastChildPlan->data);
+        if(@$parsedPlan->value) {
+            $currentValue = $parsedPlan->value;
+            $previousChildPlan = \App\Models\Point::where('id', '<', $point->lastChildPlan->id)
+                ->where('category', 'PLAN')
+                ->where('parent_point_id', $point->id)
+                ->orderBy('id', 'DESC')
+                ->first();
+            if($previousChildPlan && $previousChildPlan->data) {
+                $parsedPlan = json_decode($previousChildPlan->data);
+                $previousValue = $parsedPlan->value;
+            }
+        }
+    }
+    else {
+        $previousChildPlan = \App\Models\Point::where('parent_point_id', $point->id)
+            ->where('category', 'PLAN')
+            ->orderBy('id', 'DESC')
+            ->first();
+        if($previousChildPlan && $previousChildPlan->data) {
+            $parsedPlan = json_decode($previousChildPlan->data);
+            if(@$parsedPlan->value) {
+                $previousValue = $parsedPlan->value;
+            }
+        }
+    }
+}
+?>
+<div moe wide relative class="d-inline">
+    <a start show href="#" class="px-1 text-center d-block" title="<?= !empty($currentValue) ? 'Edit Plan' : 'Add Plan'?>">
+        <i class="fa <?= !empty($currentValue) ? 'fa-pencil-alt' : 'fa-plus-square'?>"></i>
+    </a>
+    <?php if($point): ?>
+        <form url="/api/visitPoint/upsertChildPlan" class="mcp-theme-1" right>
+            <input type="hidden" name="uid" value="<?= $point->uid ?>">
+            <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+            <input type="hidden" name="data">
+
+            <?php if($segment->segmentTemplate->internal_name === 'intake_problems' && $previousValue): ?>
+                <div class="d-none disallow-if-value-same-as"><?= str_compact($previousValue) ?></div>
+            <?php endif; ?>
+
+            <?php if($previousValue): ?>
+                <div class="mb-2">
+                    <div class="d-flex align-items-baseline mb-1">
+                        <span class="text-sm text-secondary">Previous Plan / <?= friendlier_date($previousChildPlan->created_at) ?>) (click to copy)</span>
+                    </div>
+                    <div class="p-2 bg-light border inline-html-container click-to-copy"><?= $previousValue ?></div>
+                </div>
+            <?php endif; ?>
+
+            <p class="mb-2"><b>Change goal:</b></p>
+
+            <div class="mb-2">
+                <div note-rte
+                    <?= $segment->segmentTemplate->internal_name === 'intake_problems' ? 'use-shortcuts="hpi,user"' : '' ?>
+                     class="form-group mb-2 border-left border-right rte-holder"
+                     data-field-name="value"><?= $currentValue ?></div>
+            </div>
+            <div>
+                <button submit class="btn btn-sm btn-primary mr-2">Save</button>
+                <button cancel class="btn btn-sm btn-default border">Cancel</button>
+            </div>
+        </form>
+    <?php else: ?>
+        <form url="/api/visitPoint/addTopLevel" class="mcp-theme-1 frm-add-review-plan-nutrition" right>
+            <input type="hidden" name="noteUid" value="<?= $note->uid ?>">
+            <input type="hidden" name="category" value="<?= $p['category'] ?>">
+            <input type="hidden" name="additionReasonCategory" value="ON_INTAKE">
+            <input type="hidden" name="data">
+
+            <?php if($previousValue): ?>
+                <div class="mb-2">
+                    <div class="d-flex align-items-baseline mb-1">
+                        <span class="text-sm text-secondary">Previous Plan / <?= friendlier_date($previousChildPlan->created_at) ?>) (click to copy)</span>
+                    </div>
+                    <div class="p-2 bg-light border inline-html-container click-to-copy"><?= $previousValue ?></div>
+                </div>
+            <?php endif; ?>
+
+            <p class="mb-2"><b>Current Consumption (soda, sweet-tea, coffee, juice, etc.)</b></p>
+
+            <div class="mb-2">
+                <div note-rte
+                     class="form-group mb-2 border-left border-right rte-holder"
+                     data-field-name="planValue"><?= $currentValue ?></div>
+            </div>
+            <div>
+                <button type="submit" class="btn btn-sm btn-primary mr-2">Save</button>
+                <button cancel class="btn btn-sm btn-default border">Cancel</button>
+            </div>
+        </form>
+    <?php endif; ?>
+</div>
+<?php if(!empty($currentValue)): ?>
+    <div visit-moe relative class="d-inline">
+        <a start show href="#" class="px-1 text-center d-block" title="Delete Plan">
+            <i class="fa fa-trash-alt text-danger on-hover-opaque"></i>
+        </a>
+        <form url="/api/visitPoint/destroyCurrentChildPlan" class="mcp-theme-1" right>
+            <input type="hidden" name="uid" value="<?= $point->uid ?>">
+
+            <p class="mb-2">Delete this plan?</p>
+
+            <div>
+                <button submit class="btn btn-sm btn-danger mr-2">Delete</button>
+                <button cancel class="btn btn-sm btn-default border">Cancel</button>
+            </div>
+        </form>
+    </div>
+<?php endif; ?>
+

+ 33 - 0
resources/views/app/patient/segment-templates/_child_plan/FAST_FOOD/last-plan.php

@@ -0,0 +1,33 @@
+<div class="mb-1 font-weight-bold text-secondary">Change Goal</div>
+<?php if ($point->lastChildPlan): ?>
+    <?php $parsedPlan = json_decode($point->lastChildPlan->data); ?>
+    <div class="<?= $point->last_child_plan_point_scoped_note_id === $note->id ? 'bg-warning-mellow p-2 rounded' : '' ?>">
+        <div class="inline-html-container"><?= $parsedPlan->value ?></div>
+        <div class="text-secondary text-sm"></div>
+
+        <?php if ($point->last_child_plan_point_scoped_note_id === $patient->core_note_id): ?>
+            <span class="text-sm">(updated on the patient's chart)</span>
+        <?php else: ?>
+            <?php if ($point->last_child_plan_point_scoped_note_id === $note->id): ?>
+                <span class="text-sm">(updated on this note)</span>
+            <?php else: ?>
+                <div class="d-inline position-relative on-click-menu">
+                    <span class="text-sm text-primary c-pointer">
+                        <?= relative_friendly_date($point->last_child_plan_effective_date) ?>
+                        <?php if($point->lastChildPlan->creatorPro): ?>
+                            by <?= $point->lastChildPlan->creatorPro->displayName() ?>
+                        <?php endif; ?>
+                    </span>
+                    <div menu right class="bg-white border">
+                        <a native target="_blank"
+                           href="<?= route('patients.view.notes.view.dashboard', ['patient' => $patient, 'note' => $point->lastChildPlanNote]) ?>"
+                           class="px-2 py-1 d-block text-nowrap text-sm">Go to note</a>
+                    </div>
+                </div>
+            <?php endif; ?>
+        <?php endif; ?>
+
+    </div>
+<?php else: ?>
+    <span class="text-secondary text-sm">None</span>
+<?php endif; ?>

+ 131 - 0
resources/views/app/patient/segment-templates/_child_review/FAST_FOOD/edit-review.php

@@ -0,0 +1,131 @@
+<?php
+$currentMealsPerWeek = '';
+$currentSelfPreparedMealsPerWeek = '';
+$previousValue = '';
+$previousChildReview = null;
+if (@$point) {
+    if ($point->lastChildReview && $point->last_child_review_point_scoped_note_id === $note->id) {
+        $parsedReview = json_decode($point->lastChildReview->data);
+        $currentMealsPerWeek = @($parsedReview->mealsPerWeek) ?: '';
+        $currentSelfPreparedMealsPerWeek = @($parsedReview->selfPrepMealsPerWeek) ?: '';
+        $previousChildReview = \App\Models\Point::where('id', '<', $point->lastChildReview->id)
+            ->where('category', 'REVIEW')
+            ->where('parent_point_id', $point->id)
+            ->orderBy('id', 'DESC')
+            ->first();
+        if($previousChildReview && $previousChildReview->data) {
+            $parsedReview = json_decode($previousChildReview->data);
+            $previousValue = 'Meals per week: ' . (@($parsedReview->mealsPerWeek) ?: '-') . '<br>' .
+                'Self-prepared meals per week: ' . (@($parsedReview->selfPrepMealsPerWeek) ?: '-');
+        }
+    }
+    else {
+        $previousChildReview = \App\Models\Point::where('parent_point_id', $point->id)
+            ->where('category', 'REVIEW')
+            ->orderBy('id', 'DESC')
+            ->first();
+        if($previousChildReview && $previousChildReview->data) {
+            $parsedReview = json_decode($previousChildReview->data);
+            $previousValue = 'Meals per week: ' . (@($parsedReview->mealsPerWeek) ?: '-') . '<br>' .
+                'Self-prepared meals per week: ' . (@($parsedReview->selfPrepMealsPerWeek) ?: '-');
+        }
+    }
+}
+?>
+<div moe wide relative class="d-inline">
+    <a start show href="#" class="px-1 text-center d-block" title="<?= !empty($currentMealsPerWeek) || !empty($currentSelfPreparedMealsPerWeek) ? 'Edit Subjective' : 'Add Subjective'?>">
+        <i class="fa <?= !empty($currentMealsPerWeek) || !empty($currentSelfPreparedMealsPerWeek) ? 'fa-pencil-alt' : 'fa-plus-square'?>"></i>
+    </a>
+    <?php if($point): ?>
+        <form url="/api/visitPoint/upsertChildReview" class="mcp-theme-1" right>
+            <input type="hidden" name="uid" value="<?= $point->uid ?>">
+            <input type="hidden" name="segmentUid" value="<?= $segment->uid ?>">
+            <input type="hidden" name="data">
+
+            <?php if($segment->segmentTemplate->internal_name === 'intake_problems' && $previousValue): ?>
+                <div class="d-none disallow-if-value-same-as"><?= str_compact($previousValue) ?></div>
+            <?php endif; ?>
+
+            <?php if($previousValue): ?>
+                <div class="mb-2">
+                    <div class="d-flex align-items-baseline mb-1">
+                        <span class="text-sm text-secondary">Previous Subjective / <?= friendlier_date($previousChildReview->created_at) ?>) (click to copy)</span>
+                    </div>
+                    <div class="p-2 bg-light border inline-html-container click-to-copy"><?= $previousValue ?></div>
+                </div>
+            <?php endif; ?>
+
+            <p class="mb-2"><b>Current Consumption (meals per week)</b></p>
+
+            <div class="mb-2">
+                <div note-rte slim-rte class="form-group mb-2 border-left border-right rte-holder"
+                     data-field-name="mealsPerWeek"><?= $currentMealsPerWeek ?></div>
+            </div>
+
+            <p class="mb-2"><b>Self prepared meals per week</b></p>
+
+            <div class="mb-2">
+                <div note-rte slim-rte class="form-group mb-2 border-left border-right rte-holder"
+                     data-field-name="selfPrepMealsPerWeek"><?= $currentSelfPreparedMealsPerWeek ?></div>
+            </div>
+
+            <div>
+                <button submit class="btn btn-sm btn-primary mr-2">Save</button>
+                <button cancel class="btn btn-sm btn-default border">Cancel</button>
+            </div>
+        </form>
+    <?php else: ?>
+        <form url="/api/visitPoint/addTopLevel" class="mcp-theme-1 frm-add-review-plan-nutrition" right>
+            <input type="hidden" name="noteUid" value="<?= $note->uid ?>">
+            <input type="hidden" name="category" value="<?= $p['category'] ?>">
+            <input type="hidden" name="additionReasonCategory" value="ON_INTAKE">
+            <input type="hidden" name="data">
+
+            <?php if($previousValue): ?>
+                <div class="mb-2">
+                    <div class="d-flex align-items-baseline mb-1">
+                        <span class="text-sm text-secondary">Previous Subjective / <?= friendlier_date($previousChildReview->created_at) ?>) (click to copy)</span>
+                    </div>
+                    <div class="p-2 bg-light border inline-html-container click-to-copy"><?= $previousValue ?></div>
+                </div>
+            <?php endif; ?>
+
+            <p class="mb-2"><b>Current Consumption (meals per week)</b></p>
+
+            <div class="mb-2">
+                <div note-rte slim-rte class="form-group mb-2 border-left border-right rte-holder"
+                     data-field-name="reviewValue__mealsPerWeek"></div>
+            </div>
+
+            <p class="mb-2"><b>Self prepared meals per week</b></p>
+
+            <div class="mb-2">
+                <div note-rte slim-rte class="form-group mb-2 border-left border-right rte-holder"
+                     data-field-name="reviewValue__selfPrepMealsPerWeek"></div>
+            </div>
+
+            <div>
+                <button type="submit" class="btn btn-sm btn-primary mr-2">Save</button>
+                <button cancel class="btn btn-sm btn-default border">Cancel</button>
+            </div>
+        </form>
+    <?php endif; ?>
+</div>
+<?php if(!empty($currentMealsPerWeek) || !empty($currentSelfPreparedMealsPerWeek)): ?>
+    <div visit-moe relative class="d-inline">
+        <a start show href="#" class="px-1 text-center d-block" title="Delete Subjective">
+            <i class="fa fa-trash-alt text-danger on-hover-opaque"></i>
+        </a>
+        <form url="/api/visitPoint/destroyCurrentChildReview" class="mcp-theme-1" right>
+            <input type="hidden" name="uid" value="<?= $point->uid ?>">
+
+            <p class="mb-2">Delete this subjective?</p>
+
+            <div>
+                <button submit class="btn btn-sm btn-danger mr-2">Delete</button>
+                <button cancel class="btn btn-sm btn-default border">Cancel</button>
+            </div>
+        </form>
+    </div>
+<?php endif; ?>
+

+ 33 - 0
resources/views/app/patient/segment-templates/_child_review/FAST_FOOD/last-review.php

@@ -0,0 +1,33 @@
+<div class="mb-1 font-weight-bold text-secondary">Current Consumption</div>
+<?php if ($point->lastChildReview): ?>
+    <?php $parsedReview = json_decode($point->lastChildReview->data); ?>
+    <div class="<?= $point->last_child_review_point_scoped_note_id === $note->id ? 'bg-warning-mellow p-2 rounded' : '' ?>">
+        <div class="inline-html-container mb-1"><span class="text-sm">Meals per week:</span> <?= @$parsedReview->mealsPerWeek ? strip_tags($parsedReview->mealsPerWeek) : '' ?></div>
+        <div class="inline-html-container mb-1"><span class="text-sm">Self-prepared meals per week:</span> <?= @$parsedReview->selfPrepMealsPerWeek ? strip_tags($parsedReview->selfPrepMealsPerWeek) : '' ?></div>
+
+        <?php if ($point->last_child_review_point_scoped_note_id === $patient->core_note_id): ?>
+            <span class="text-sm">(updated on the patient's chart)</span>
+        <?php else: ?>
+            <?php if ($point->last_child_review_point_scoped_note_id === $note->id): ?>
+                <span class="text-sm">(updated on this note)</span>
+            <?php else: ?>
+                <div class="d-inline position-relative on-click-menu">
+                    <span class="text-sm text-primary c-pointer">
+                        <?= relative_friendly_date($point->last_child_review_effective_date) ?>
+                        <?php if($point->lastChildReview->creatorPro): ?>
+                            by <?= $point->lastChildReview->creatorPro->displayName() ?>
+                        <?php endif; ?>
+                    </span>
+                    <div menu right class="bg-white border">
+                        <a native target="_blank"
+                           href="<?= route('patients.view.notes.view.dashboard', ['patient' => $patient, 'note' => $point->lastChildReviewNote]) ?>"
+                           class="px-2 py-1 d-block text-nowrap text-sm">Go to note</a>
+                    </div>
+                </div>
+            <?php endif; ?>
+        <?php endif; ?>
+
+    </div>
+<?php else: ?>
+    <span class="text-secondary text-sm">None</span>
+<?php endif; ?>

+ 45 - 23
resources/views/app/patient/wizard-partials/common-script.blade.php

@@ -464,17 +464,35 @@ parentSegment.find('.frm-add-review-plan-{{$label}}')
             parsed = JSON.parse(dataField.val());
         }
 
-        @if(1 || $patient->core_note_id !== $note->id)
-            // store plan content
-            let planContent = parsed && parsed.planValue ? parsed.planValue : '';
-            let reviewContent = parsed && parsed.reviewValue ? parsed.reviewValue : '';
-            // if(!$.trim($('<div/>').html(planContent).text())) {
-            //     toastr.error('Directions cannot be empty');
-            //     return false;
-            // }
-            if(parsed.planValue) delete parsed.planValue;
-            if(parsed.reviewValue) delete parsed.reviewValue;
-        @endif
+        // store plan content
+        let planContent = parsed && parsed.planValue ? parsed.planValue : '';
+        let reviewContent = parsed && parsed.reviewValue ? parsed.reviewValue : '';
+        if(parsed.planValue) delete parsed.planValue;
+        if(parsed.reviewValue) delete parsed.reviewValue;
+
+        // rich review content
+        let richReviewContent = false;
+        if(parsed) {
+            for(let x in parsed) {
+                if(parsed.hasOwnProperty(x) && x.indexOf('reviewValue__') === 0) {
+                    if(!richReviewContent) richReviewContent = {};
+                    richReviewContent[x.substr(13)] = parsed[x];
+                    delete parsed[x];
+                }
+            }
+        }
+
+        // rich plan content
+        let richPlanContent = false;
+        if(parsed) {
+            for(let x in parsed) {
+                if(parsed.hasOwnProperty(x) && x.indexOf('planValue__') === 0) {
+                    if(!richPlanContent) richPlanContent = {};
+                    richPlanContent[x.substr(11)] = parsed[x];
+                    delete parsed[x];
+                }
+            }
+        }
 
         form.find('[data-name]').each(function() {
             if(!parsed) parsed = {};
@@ -505,18 +523,22 @@ parentSegment.find('.frm-add-review-plan-{{$label}}')
 
         let payload = {};
         form.serializeArray().map(x => {payload[x.name] = x.value;});
-        @if(1 || $patient->core_note_id !== $note->id)
-            if(!!reviewContent && $.trim($('<div/>').html(reviewContent).text())) {
-                payload.childReviewData = JSON.stringify({
-                    value: reviewContent
-                })
-            }
-            if(!!planContent && $.trim($('<div/>').html(planContent).text())) {
-                payload.childPlanData = JSON.stringify({
-                    value: planContent
-                })
-            }
-        @endif
+        if(richReviewContent !== false) {
+            payload.childReviewData = JSON.stringify(richReviewContent);
+        }
+        else if(!!reviewContent && $.trim($('<div/>').html(reviewContent).text())) {
+            payload.childReviewData = JSON.stringify({
+                value: reviewContent
+            })
+        }
+        if(richPlanContent !== false) {
+            payload.childPlanData = JSON.stringify(richPlanContent);
+        }
+        else if(!!planContent && $.trim($('<div/>').html(planContent).text())) {
+            payload.childPlanData = JSON.stringify({
+                value: planContent
+            })
+        }
 
         $.post(form.attr('url'), payload, _data => {
             if(!hasResponseError(_data)) {