Selaa lähdekoodia

Process claims [wip]

Vijayakrishnan 4 vuotta sitten
vanhempi
commit
d4ec914d73

+ 13 - 5
app/Http/Controllers/PracticeManagementController.php

@@ -1034,6 +1034,17 @@ class PracticeManagementController extends Controller
         $from = $request->input('from') ? $request->input('from') : '1900-01-01';
         $to = $request->input('to') ? $request->input('to') : '2100-01-01';
 
+        $params = [
+            'q' => '%' . $q . '%',
+            'from' => $from,
+            'to' => $to
+        ];
+
+        $hcpPro = $request->input('hcp') ? Pro::where('uid', $request->input('hcp'))->first() : null;
+        if($hcpPro) {
+            $params['hcp'] = $hcpPro->id;
+        }
+
         $claims = DB::select(DB::raw("
 SELECT claim.uid as uid,
        DATE(claim.created_at) as created,
@@ -1064,13 +1075,10 @@ AND (client.name_first ILIKE :q OR
      client.chart_number ILIKE :q OR 
      client.mcn ILIKE :q)
 AND (claim.created_at >= :from AND claim.created_at <= :to)
+" . ($hcpPro ? "AND claim.pro_id = :hcp" : '') . "
 ORDER BY claim.created_at ASC
 --OFFSET 0 LIMIT 15
-"), [
-    'q' => '%' . $q . '%',
-    'from' => $from,
-    'to' => $to
-]);
+"), $params);
 
         if($request->input('json')) {
             return json_encode($claims);

+ 1 - 1
config/app.php

@@ -65,7 +65,7 @@ return [
 
     'hrm2_url' => env('HRM2_URL'),
 
-    'asset_version' => 3,
+    'asset_version' => 4,
 
     /*
     |--------------------------------------------------------------------------

+ 3 - 0
public/css/style.css

@@ -245,6 +245,9 @@ body>nav.navbar {
 .mcp-theme-1 .form-control.form-control-sm:not(.min-width-unset) {
     min-width: 200px;
 }
+.mcp-theme-1 .min-width-unset>.form-control.form-control-sm {
+    min-width: unset !important;
+}
 .mcp-theme-1 [large] .form-control.form-control-sm {
     min-width: unset;
 }

+ 1 - 2
public/js/pro-suggest.js

@@ -1,5 +1,4 @@
-// shortcut suggest functionality
-// auto attaches to all [with-shortcuts] elements
+// pro suggest functionality
 (function() {
 
     let suggestionsOuter = null;

+ 0 - 3
resources/views/app/practice-management/pro-availability.blade.php

@@ -12,9 +12,6 @@
                     <select name="proUid" class="form-control form-control-sm mr-2" provider-search data-pro-uid="{{ @$selectedProUid }}"
                             required>
                         <option value="">-- select pro --</option>
-                        @foreach($pros as $apro)
-                        <option value="{{$apro->uid}}" {{$selectedProUid === $apro->uid ? 'selected' : ''}}>{{$apro->name_first}} {{$apro->name_last}}</option>
-                        @endforeach
                     </select>
                 </div>
                 <div class="form-group">

+ 67 - 9
resources/views/app/practice-management/process-claims.blade.php

@@ -4,17 +4,46 @@
     <div id="process-claims" class="px-3 mcp-theme-1 mt-3" v-cloak>
         <div class="row">
             <div class="col-9">
-                <div class="d-flex align-items-center">
+                <div class="d-flex align-items-end">
                     <div class="font-weight-bold py-3 font-size-14 text-secondary">
                         To Do
                     </div>
-                    <form class="ml-4 mr-auto d-inline-flex align-items-center" v-on:submit.prevent="doFilter()">
-                        <input type="text" v-model="filter.q" class="form-control form-control-sm width-200px mr-2" placeholder="Name/MCN/Chart #">
-                        <input type="date" v-model="filter.from" class="form-control form-control-sm width-150px mr-2">
-                        <input type="date" v-model="filter.to" class="form-control form-control-sm width-150px mr-2">
-                        <button class="btn btn-sm btn-primary mr-2">Filter</button>
-                        <button class="btn btn-sm btn-default border" v-on:click.prevent="resetFilter()">Reset</button>
+                    <form class="ml-4 d-inline-flex align-items-center py-3" v-on:submit.prevent="doFilter()">
+                        <div class="width-150px mr-2">
+                            <label class="mb-1 text-sm text-secondary">Search</label>
+                            <input type="text" v-model="filter.q"
+                                   class="form-control form-control-sm w-100 min-width-unset"
+                                   :class="filter.q ? 'bg-aliceblue' : ''"
+                                   placeholder="Name/MCN/Chart #">
+                        </div>
+                        <div class="width-150px min-width-unset mr-2">
+                            <label class="mb-1 text-sm text-secondary">HCP</label>
+                            <select class="form-control form-control-sm mr-2 filter-hcp" provider-search
+                                    v-model="filter.hcp">
+                                <option value="">-- HCP --</option>
+                            </select>
+                        </div>
+                        <div class="width-150px mr-2">
+                            <label class="mb-1 text-sm text-secondary">From Date</label>
+                            <input type="date" v-model="filter.from"
+                                   class="form-control form-control-sm w-100 min-width-unset"
+                                   :class="filter.from ? 'bg-aliceblue' : ''">
+                        </div>
+                        <div class="width-150px mr-2">
+                            <label class="mb-1 text-sm text-secondary">To Date</label>
+                            <input type="date" v-model="filter.to"
+                                   class="form-control form-control-sm w-100 min-width-unset"
+                                   :class="filter.to ? 'bg-aliceblue' : ''">
+                        </div>
+                        <div class="">
+                            <label class="mb-1 text-sm text-secondary">&nbsp;</label>
+                            <div class="d-flex align-items-center">
+                                <button class="btn btn-sm btn-primary mr-2">Filter</button>
+                                <button class="btn btn-sm btn-default border" v-on:click.prevent="resetFilter()">Reset</button>
+                            </div>
+                        </div>
                     </form>
+                    <div class="py-3 ml-auto">Unsubmitted: <b>@{{ numUnsubmitted }}</b></div>
                 </div>
                 <div v-for="(claim, claimIndex) in claims"
                      v-if="!claim.status || claim.status === 'NEW' || (claim.status === 'PICKED_UP' && claim.status_pro_id === proId)">
@@ -250,7 +279,9 @@
                             q: '',
                             from: '',
                             to: '',
-                        }
+                            hcp: '',
+                        },
+                        numUnsubmitted: 0
                     },
                     methods: {
                         hasError: function (_data) {
@@ -295,7 +326,8 @@
                         resetCurrentClaim: function() {
                             if(this.claims && this.claims.length) {
                                 for (let i = 0; i < this.claims.length; i++) {
-                                    if (!this.claims[i].status || this.claims[i].status === 'NEW' || this.claims[i].status === 'PICKED_UP') {
+                                    if (!this.claims[i].status || this.claims[i].status === 'NEW' ||
+                                        (this.claims[i].status === 'PICKED_UP' && this.claims[i].status_pro_id === this.proId)) {
                                         this.setCurrentClaim(i);
                                         break;
                                     }
@@ -308,10 +340,12 @@
                             if($.trim(this.filter.q)) ql.push('q=' + encodeURIComponent($.trim(this.filter.q)));
                             if($.trim(this.filter.from)) ql.push('from=' + encodeURIComponent($.trim(this.filter.from)));
                             if($.trim(this.filter.to)) ql.push('to=' + encodeURIComponent($.trim(this.filter.to)));
+                            if($.trim(this.filter.hcp)) ql.push('hcp=' + encodeURIComponent($.trim(this.filter.hcp)));
                             ql = ql.join('&');
                             $.get('{{route('practice-management.process-claims')}}?' + ql, _data => {
                                 this.claims = _data;
                                 this.resetCurrentClaim();
+                                this.recaclculateNumUnsubmitted();
                                 hideMask();
                             }, 'json');
                         },
@@ -319,11 +353,35 @@
                             this.filter.q = '';
                             this.filter.from = '';
                             this.filter.to = '';
+                            this.filter.hcp = '';
                             this.doFilter();
+                        },
+                        recaclculateNumUnsubmitted: function() {
+                            let count = 0;
+                            if(this.claims && this.claims.length) {
+                                for (let i = 0; i < this.claims.length; i++) {
+                                    if (!this.claims[i].status || this.claims[i].status === 'NEW' ||
+                                        (this.claims[i].status === 'PICKED_UP' && this.claims[i].status_pro_id === this.proId)) {
+                                        count++;
+                                    }
+                                }
+                            }
+                            this.numUnsubmitted = count;
                         }
                     },
                     mounted: function() {
+                        let self = this;
                         this.resetCurrentClaim();
+                        this.recaclculateNumUnsubmitted();
+                        window.setTimeout(() => {
+                            $('[pro-suggest-initialized]').removeAttr('pro-suggest-initialized');
+                            $('.pro-suggest-input').remove();
+                            $('.pro-suggestions-container').remove();
+                            window.initProSuggest();
+                        }, 500);
+                        $(document).on('pro-changed', '.filter-hcp', function() {
+                            self.filter.hcp = this.value;
+                        });
                     }
                 })