Parcourir la source

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

Samson Mutunga il y a 3 ans
Parent
commit
8390a9d4cb

+ 26 - 0
app/Helpers/helpers.php

@@ -13,6 +13,32 @@ use App\Models\Bill;
 //require_once './class.Diff.php';
 use Soundasleep\Html2Text as Html2Text;
 
+if(!function_exists('toFeetAndInches')) {
+    function toFeetAndInches($value) {
+        if(!$value) return '-';
+        $value = round($value);
+        $ft = round(floor($value / 12));
+        $in = $value % 12;
+        return "$ft ft. $in in.";
+    }
+}
+
+if(!function_exists('feetFromInches')) {
+    function feetFromInches($value) {
+        if(!$value) return 0;
+        $value = round($value);
+        return round(floor($value / 12));
+    }
+}
+
+if(!function_exists('inchesAfterFeetFromInches')) {
+    function inchesAfterFeetFromInches($value) {
+        if(!$value) return 0;
+        $value = round($value);
+        return round($value % 12);
+    }
+}
+
 if(!function_exists('genericBills')) {
     function genericBills(Pro $performerPro, $patient, $entityType, $entityUid) {
         $genericBills = Bill::where('bill_service_type', 'GENERIC');

+ 1 - 1
resources/views/app/dashboard-mcp.blade.php

@@ -286,7 +286,7 @@
                 <div class="col-md-9 pl-1">
                     <div class="row mcp-theme-1">
                         <div class="col-md-6 mcp-theme-1">
-                            <div id="mcp-dashboard-appointments" class="mb-4  max-height-200px overflow-auto">
+                            <div id="mcp-dashboard-appointments" class="mb-4">
 
                             </div>
                             <div class="card mb-4">

+ 2 - 2
resources/views/app/mcp/dashboard/appointments-list.blade.php

@@ -1,4 +1,4 @@
-<div class="card">
+<div class="card overflow-hidden">
     <div class="card-header pl-2">
         <div class="font-weight-bold">
             @if(@$from)
@@ -8,7 +8,7 @@
             @endif
         </div>
     </div>
-    <div class="card-body p-0">
+    <div class="card-body p-0 max-height-200px overflow-auto">
         @if(@$appointments && count($appointments))
             <table class="mb-0 table table-sm appointments border-top-0">
                 @foreach($appointments as $appointment)

+ 2 - 2
resources/views/app/new-patient.blade.php

@@ -163,10 +163,10 @@ $medicaidStates = Config::get('constants.medicaid_states');
 						</div>
 						<div class="col-md-7">
 							<div class="border-lighter">
-								<div class="col-md-12 bg-light py-3 px-1 mb-2 ">
+								<div class="col-md-12 bg-light py-3 px-3 mb-2 ">
 									<h5 class="m-0 font-weight-bold">Insurance Coverage:</h5>
 								</div>
-								<div class="px-4">
+								<div class="px-3">
 									<div class="row">
 										<div class="form-group col-md-12">
 											<p class="mb-1 font-weight-bold">Type of insurance card:</p>

+ 2 - 2
resources/views/app/patient/messages-thread.blade.php

@@ -3,7 +3,7 @@
         @if($patient->smses && count($patient->smses))
             <thead>
             <tr>
-                <th class="px-2 text-secondary border-bottom-0">Date &amp; Time</th>
+                <th class="px-2 text-secondary border-bottom-0 text-nowrap">Date &amp; Time</th>
                 <th class="px-2 text-secondary border-bottom-0 w-25">Type</th>
                 <th class="px-2 text-secondary border-bottom-0 w-25">From</th>
                 <th class="px-2 text-secondary border-bottom-0 w-25">To</th>
@@ -13,7 +13,7 @@
             <tbody>
             @foreach($patient->smses as $sms)
                 <tr>
-                    <td class="px-2">{{ friendly_date_time($sms->created_at) }}</td>
+                    <td class="px-2 text-nowrap">{{ friendly_date_time($sms->created_at) }}</td>
                     <td class="px-2">{{ ucwords($sms->incoming_or_outgoing) }}</td>
                     <td class="px-2">{{ $sms->from_number }}</td>
                     <td class="px-2">{{ $sms->to_number }}</td>

+ 106 - 23
resources/views/app/patient/segment-templates/vitals/edit.blade.php

@@ -110,7 +110,7 @@ $copyTriggerAdded = [];
                         <td>
                             <input type="text" tabindex="-1"
                                    class="form-control form-control-sm events-none border-0"
-                                   value="{{ $k === 'systolicBP' ? 'Blood Pressure' : $v }}" readonly>
+                                   value="{{ $k === 'systolicBP' ? 'Blood Pressure' : ($k === 'heightInInches' ? 'Height' : $v) }}" readonly>
                         </td>
                         <td class="position-relative">
                             @if($k === "bmi")
@@ -118,20 +118,20 @@ $copyTriggerAdded = [];
                                     <input type="text" readonly bmi
                                            class="form-control form-control-sm vitals-title border-bottom-0 border-top-0 border-left-0 border-right width-70px"
                                            data-name="bmi" value="{{$contentData['bmi']}}">
-                                    <div class="flex-grow-1 py-1 m-0 px-2 font-weight-bold bg-light">
+                                    <div class="flex-grow-1 py-1 m-0 px-2 font-weight-bold bg-light" bmi-category>
                                         @if(isset($contentData['bmi']) && $contentData['bmi'] != "" )
                                             <?php $bmi = $contentData['bmi']; ?>
                                             @if($bmi < 18.5)
-                                                <span class="text-sm text-warning-mellow" v-if="+bmi < 18.5">Underweight</span>
+                                                <span class="text-sm text-warning-mellow">Underweight</span>
                                             @endif
                                             @if($bmi >= 18.5 && $bmi < 25)
-                                                <span class="text-sm text-success" v-if="+bmi >= 18.5 && +bmi < 25">Healthy Weight</span>
+                                                <span class="text-sm text-success">Healthy Weight</span>
                                             @endif
                                             @if($bmi >= 25 && $bmi > 30)
-                                                <span class="text-sm text-warning-mellow" v-if="+bmi >= 25 && +bmi < 30">Overweight</span>
+                                                <span class="text-sm text-warning-mellow">Overweight</span>
                                             @endif
                                             @if($bmi >= 30)
-                                                <span class="text-sm text-warning-mellow" v-if="+bmi >= 30">Obese</span>
+                                                <span class="text-sm text-warning-mellow">Obese</span>
                                             @endif
                                         @endif
                                     </div>
@@ -162,6 +162,18 @@ $copyTriggerAdded = [];
                                            data-name="diastolicBP" diastolicBP
                                            value="{{$contentData['diastolicBP']}}" placeholder="Diastolic">
                                 </div>
+                            @elseif($k === 'heightInInches')
+                                <div class="d-flex align-items-center bg-white">
+                                    <input type="text" class="form-control form-control-sm min-width-unset w-auto-input width-30px border-0 edit"
+                                           heightFeetInput
+                                           value="{{feetFromInches($contentData['heightInInches'])}}">
+                                    <span class="pl-1 pr-2 text-secondary bg-white">ft.</span>
+                                    <input type="text" class="form-control form-control-sm min-width-unset w-auto-input width-30px border-0 edit"
+                                           heightInchesInput
+                                           value="{{inchesAfterFeetFromInches($contentData['heightInInches'])}}">
+                                    <span class="pl-1 text-secondary bg-white">in.</span>
+                                    <input type="hidden" data-name="heightInInches" value="{{$contentData['heightInInches']}}">
+                                </div>
                             @else
                                 <input type="text"
                                        class="form-control form-control-sm border-0" data-name="{{$k}}" {{$k}}
@@ -175,11 +187,32 @@ $copyTriggerAdded = [];
                         @else
                             @foreach($previousData as $pDay)
                                 <td class="bg-light {{!isset($copyTriggerAdded[$k]) ? 'px-2' : 'px-2'}} py-1 text-secondary position-relative">
+                                    <span data-type="{{$k}}">
                                     @if($k === 'systolicBP')
                                         {{ @$previousDataAssoc[$pDay['date']]['systolicBP'] ?: '-' }}/{{ @$previousDataAssoc[$pDay['date']]['diastolicBP'] ?: '-' }}
+                                    @elseif($k === 'heightInInches')
+                                        {{$previousDataAssoc[$pDay['date']][$k] ? toFeetAndInches($previousDataAssoc[$pDay['date']][$k]) : '-' }}
+                                    @elseif($k === 'bmi')
+                                        {{$previousDataAssoc[$pDay['date']][$k] ?: '-' }}
+                                        <?php
+                                        $prevBMI = $previousDataAssoc[$pDay['date']][$k] ? +($previousDataAssoc[$pDay['date']][$k]) : false;
+                                        ?>
+                                        @if($prevBMI < 18.5)
+                                            <span class="text-sm text-warning-mellow ml-1">Underweight</span>
+                                        @endif
+                                        @if($prevBMI >= 18.5 && $prevBMI < 25)
+                                            <span class="text-sm text-success ml-1">Healthy Weight</span>
+                                        @endif
+                                        @if($prevBMI >= 25 && $prevBMI > 30)
+                                            <span class="text-sm text-warning-mellow ml-1">Overweight</span>
+                                        @endif
+                                        @if($prevBMI >= 30)
+                                            <span class="text-sm text-warning-mellow ml-1">Obese</span>
+                                        @endif
                                     @else
                                         {{$previousDataAssoc[$pDay['date']][$k] ?: '-' }}
                                     @endif
+                                    </span>
                                     @if(!isset($copyTriggerAdded[$k]) && $k !== "bmi")
                                         <a href="#" title="Copy to this note" class="vitals-copy-trigger"><i class="fa fa-chevron-circle-left font-size-14"></i></a>
                                     @endif
@@ -208,30 +241,80 @@ $copyTriggerAdded = [];
     window.segmentInitializers.<?= $segment->segmentTemplate->internal_name ?> = function () {
         let parentSegment = $('[data-segment-template-name="<?= $segment->segmentTemplate->internal_name ?>"] ');
 
-        parentSegment.find('[refresh-bmi]').off('change input');
-        parentSegment.find('[refresh-bmi]').on('change input', function () {
-            var height = parseInt(parentSegment.find('[heightInInches]').val());
-            var weight = parseInt(parentSegment.find('[weightPounds]').val());
-            var bmi = Math.round((weight / (height * height)) * 703.06957964)
+        function __refreshBMI() {
+            var height = parseInt(parentSegment.find('[data-name="heightInInches"]').val());
+            var weight = parseInt(parentSegment.find('[data-name="weightPounds"]').val());
+            var bmi = '', bmiCategory = '';
+            if(!isNaN(height) && !isNaN(weight)) {
+                bmi = Math.round((weight / (height * height)) * 703.06957964);
+                if(bmi < 18.5) {
+                    bmiCategory = '<span class="text-sm text-warning-mellow">Underweight</span>';
+                }
+                else if(bmi >= 18.5 && bmi < 25) {
+                    bmiCategory = '<span class="text-sm text-success">Healthy Weight</span>';
+                }
+                else if(bmi >= 25 && bmi > 30) {
+                    bmiCategory = '<span class="text-sm text-warning-mellow">Overweight</span>';
+                }
+                else if(bmi >= 30) {
+                    bmiCategory = '<span class="text-sm text-warning-mellow">Obese</span>';
+                }
+            }
             parentSegment.find('[bmi]').val(bmi);
-            parentSegment.find('[bmi-date]').val(parentSegment.find('[weight-date]').val());
+            parentSegment.find('[bmi-category]').empty().append(bmiCategory);
+        }
+
+        parentSegment.find('[refresh-bmi]').off('change input');
+        parentSegment.find('[refresh-bmi]').on('change input', __refreshBMI);
+
+        parentSegment.find('[heightFeetInput], [heightInchesInput]').off('change input paste');
+        parentSegment.find('[heightFeetInput], [heightInchesInput]').on('change input paste', function () {
+            let inches = 0;
+            let ft = +(parentSegment.find('[heightFeetInput]').val()),
+                inc = +(parentSegment.find('[heightInchesInput]').val());
+            inches = Math.round(ft * 12 + inc);
+            parentSegment.find('[data-name="heightInInches"]').val(inches);
+            __refreshBMI();
         });
 
         parentSegment.find('.vitals-copy-trigger').off('click.copy-vital');
         parentSegment.find('.vitals-copy-trigger').on('click.copy-vital', function () {
             let td = $(this).closest('td'), value = $.trim(td.text());
-            if(value.indexOf('/') === -1) {
-                td.prev().find('input').val(value).trigger('change');
-            }
-            else {
-                let parts = value.split('/');
-                if(parts.length >= 1 && parts[0] !== '-') {
-                    td.prev().find('input:eq(0)').val(parts[0]).trigger('change');
-                }
-                if(parts.length >= 2 && parts[1] !== '-') {
-                    td.prev().find('input:eq(1)').val(parts[1]).trigger('change');
-                }
+            let type = td.find('>span').first().attr('data-type');
+            if(!type) return false;
+            switch (type) {
+                case 'heightInInches':
+                    if(value.indexOf('ft.') !== -1 && value.indexOf('in.') !== -1) {
+                        value = value.replace('in.', '');
+                        value = value.replace('ft.', '|');
+                        value = value.replace('/\s/gi', '');
+                        let parts = value.split('|');
+                        if (parts.length >= 1 && parts[0] !== '-') {
+                            td.prev().find('input:eq(0)').val(parts[0]).trigger('change');
+                        }
+                        if (parts.length >= 2 && parts[1] !== '-') {
+                            td.prev().find('input:eq(1)').val(parts[1]).trigger('change');
+                        }
+                    }
+                    break;
+                case 'systolicBP':
+                    if(value.indexOf('/') !== -1) {
+                        let parts = value.split('/');
+                        if (parts.length >= 1 && parts[0] !== '-') {
+                            td.prev().find('input:eq(0)').val(parts[0]).trigger('change');
+                        }
+                        if (parts.length >= 2 && parts[1] !== '-') {
+                            td.prev().find('input:eq(1)').val(parts[1]).trigger('change');
+                        }
+                    }
+                    break;
+                default:
+                    if(value && value !== '-') {
+                        td.prev().find('input').val(value).trigger('change');
+                    }
+                    break;
             }
+
             return false;
         });
 

+ 5 - 2
resources/views/app/patient/segment-templates/vitals/summary.blade.php

@@ -56,8 +56,11 @@ if(!$contentData) {
                 @if($k === 'systolicBP')
                     <span>Blood Pressure:</span>
                     <b>{{ @$contentData['systolicBP'] ?: '-' }}/{{ @$contentData['diastolicBP'] ?: '-' }}</b>
-                @elseif($k === 'diastolicBP') <!--ignore-->
-
+                @elseif($k === 'diastolicBP')
+                    <!--ignore-->
+                @elseif($k === 'heightInInches')
+                    <span>Height:</span>
+                    <b>{{ !empty($vital) ? toFeetAndInches($vital) : '-' }}</b>
                 @else
                     <span>{{$v}}:</span>
                     <b>{{ !empty($vital) ? $vital : '-' }}</b>

+ 3 - 2
resources/views/layouts/patient.blade.php

@@ -3,6 +3,7 @@
 /** @var \App\Models\Client $patient */
 ?>
 <?php
+$trimLayout = false;
 $routeName = request()->route()->getName();
 $isVisitNote = ($routeName === 'patients.view.notes.view.dashboard' && @$note && !!$note->visitTemplate);
 ?>
@@ -275,7 +276,7 @@ $isVisitNote = ($routeName === 'patients.view.notes.view.dashboard' && @$note &&
 				</div>
 			</nav>
 			@endif
-			<main role="main" class="w-100 {{$isVisitNote ? 'p-0' : ''}}">
+			<main role="main" class="w-100 {{$trimLayout || $isVisitNote ? 'p-0' : ''}}">
 				@if($pro->is_enrolled_as_mcp && !$patient->mcp)
 					<div class="alert alert-info bg-white mt-3 mcp-theme-1 p-3 hide-inside-ticket-popup">
 						<div class="font-size-16">
@@ -317,7 +318,7 @@ $isVisitNote = ($routeName === 'patients.view.notes.view.dashboard' && @$note &&
 						</div>
 					</div>
 				@endif
-				<div class="card {{$isVisitNote ? 'card m-0 border-0 rounded-0' : 'my-3'}}" id="patient-header">
+				<div class="card {{$trimLayout || $isVisitNote ? 'card m-0 border-0 rounded-0' : 'my-3'}}" id="patient-header">
 					<div id="patient-header-content">
 					<div class="card-header @if($patient->client_engagement_status_category == 'DUMMY') alert-warning @endif py-1 hide-inside-ticket-popup">
 						<?php