فهرست منبع

Vitals settings - autocalc BMI

Vijayakrishnan 3 سال پیش
والد
کامیت
2b8d5a123b

+ 9 - 0
app/Helpers/helpers.php

@@ -633,4 +633,13 @@ if(!function_exists('vsElement')) {
             'name="' . $name . '" ' .
             'value="' . (@($patient->{$_v}) ? $patient->{$_v} : '') . '">';
     }
+}
+
+if(!function_exists('vsRoElement')) {
+    function vsRoElement($_v, $type, $name, $patient)
+    {
+        return '<input type="' . $type . '" readonly class="form-control form-control-sm min-width-unset rounded-0" ' .
+            'name="' . $name . '" ' .
+            'value="' . (@($patient->{$_v}) ? $patient->{$_v} : '') . '">';
+    }
 }

+ 67 - 0
resources/views/app/patient/vitals-settings.blade.php

@@ -29,4 +29,71 @@
         </div>
     </div>
 
+    <script>
+        (function () {
+            function calculateUsualBmi() {
+                let h = $('#bmi-management-settings [name="currentHeightInInches"]').val(),
+                    w = $('#bmi-management-settings [name="usualWeightInPounds"]').val();
+                let bmiElem = $('#bmi-management-settings [name="usualBmi"]').val(''),
+                    bmiCategoryElem = $('#bmi-management-settings [name="usualBmiCategory"]').val('');
+                calculateBmi(h, w, bmiElem, bmiCategoryElem);
+                return false;
+            }
+
+            function calculateIdealBmi() {
+                let h = $('#bmi-management-settings [name="currentHeightInInches"]').val(),
+                    w = $('#bmi-management-settings [name="idealWeightInPounds"]').val();
+                let bmiElem = $('#bmi-management-settings [name="idealBmi"]').val(''),
+                    bmiCategoryElem = $('#bmi-management-settings [name="idealBmiCategory"]').val('');
+                calculateBmi(h, w, bmiElem, bmiCategoryElem);
+                return false;
+            }
+
+            function calculateBmi(h, w, bmiElem, bmiCategoryElem) {
+                let bmi = 0,
+                    bmiCategory = '';
+                try {
+                    h = +h;
+                    w = +w;
+                    bmi = (w / (h * h)) * 703;
+                    bmiElem.val(bmi.toFixed(1));
+                    if (bmi < 18.5) {
+                        bmiCategory = '(Underweight)';
+                    }
+                    if (bmi >= 18.5 && bmi < 25) {
+                        bmiCategory = '(Healthy)';
+                    }
+                    if (bmi >= 25 && bmi < 30) {
+                        bmiCategory = '(Overweight)';
+                    }
+                    if (bmi >= 30) {
+                        bmiCategory = '(Obese)';
+                    }
+                    bmiCategoryElem.val(bmiCategory);
+                } catch (e) {
+                    return false;
+                }
+            }
+
+            function init() {
+                $(document)
+                    .off('change input paste keyup',
+                        '#bmi-management-settings [name="currentHeightInInches"], #bmi-management-settings [name="usualWeightInPounds"]')
+                    .on('change input paste keyup',
+                        '#bmi-management-settings [name="currentHeightInInches"], #bmi-management-settings [name="usualWeightInPounds"]', function () {
+                            return calculateUsualBmi();
+                        });
+                $(document)
+                    .off('change input paste keyup',
+                        '#bmi-management-settings [name="currentHeightInInches"], #bmi-management-settings [name="idealWeightInPounds"]')
+                    .on('change input paste keyup',
+                        '#bmi-management-settings [name="currentHeightInInches"], #bmi-management-settings [name="idealWeightInPounds"]', function () {
+                            return calculateIdealBmi();
+                        });
+            }
+
+            addMCInitializer('vitals-settings-{{$patient->uid}}', init, '#vitals-settings-{{$patient->uid}}')
+        }).call(window);
+    </script>
+
 @endsection

+ 15 - 5
resources/views/app/patient/vitals-settings/bmi-management-form.blade.php

@@ -1,4 +1,4 @@
-<div moe large>
+<div moe large id="bmi-management-settings">
     <a href="#" start show>Update</a>
     <form url="/api/client/updateBmiManagementSettingsValue">
         <input type="hidden" name="uid" value="{{$patient->uid}}">
@@ -25,8 +25,13 @@
         </div>
         <div class="mb-3 d-flex align-items-center">
             <span class="text-secondary min-width-140px">BMI (usual):</span>
-            <div class="width-100px mr-2"><?= vsElement('usual_bmi', 'number', 'usualBmi', $patient) ?></div>
-            <span class="text-secondary"><?= vsElement('usual_bmi_category', 'hidden', 'usualBmiCategory', $patient) ?></span>
+            <div class="width-100px mr-2"><?= vsRoElement('usual_bmi', 'number', 'usualBmi', $patient) ?></div>
+            <span class="text-secondary">
+                <input type="text" readonly=""
+                       class="form-control form-control-sm min-width-unset rounded-0 border-0 bg-transparent font-weight-bold"
+                       name="usualBmiCategory"
+                       value="{{$patient->usual_bmi_category ?: ''}}">
+            </span>
         </div>
 
         <hr class="my-3">
@@ -44,8 +49,13 @@
         </div>
         <div class="mb-3 d-flex align-items-center">
             <span class="text-secondary min-width-140px">BMI (ideal):</span>
-            <div class="width-100px mr-2"><?= vsElement('ideal_bmi', 'number', 'idealBmi', $patient) ?></div>
-            <span class="text-secondary"><?= vsElement('ideal_bmi_category', 'hidden', 'idealBmiCategory', $patient) ?></span>
+            <div class="width-100px mr-2"><?= vsRoElement('ideal_bmi', 'number', 'idealBmi', $patient) ?></div>
+            <span class="text-secondary">
+                <input type="text" readonly=""
+                       class="form-control form-control-sm min-width-unset rounded-0 border-0 bg-transparent font-weight-bold"
+                       name="idealBmiCategory"
+                       value="{{$patient->ideal_bmi_category ?: ''}}">
+            </span>
         </div>
 
         <hr class="my-3">

+ 2 - 2
resources/views/app/patient/vitals-settings/bmi-management-summary.blade.php

@@ -17,7 +17,7 @@
 <div class="mb-3 ml-3">
     <span class="text-secondary">BMI (usual):</span>
     <b><?= vsValue('usual_bmi', $patient) ?></b>
-    <span class="text-secondary">(<?= vsValue('usual_bmi_category', $patient) ?>)</span>
+    <span class="text-secondary"><?= vsValue('usual_bmi_category', $patient) ?></span>
 </div>
 
 <div class="mb-1">
@@ -31,7 +31,7 @@
 <div class="mb-3 ml-3">
     <span class="text-secondary">BMI (ideal):</span>
     <b><?= vsValue('ideal_bmi', $patient) ?></b>
-    <span class="text-secondary">(<?= vsValue('ideal_bmi_category', $patient) ?>)</span>
+    <span class="text-secondary"><?= vsValue('ideal_bmi_category', $patient) ?></span>
 </div>
 
 <div class="mb-3">