Prechádzať zdrojové kódy

Process claims [wip]

Vijayakrishnan 4 rokov pred
rodič
commit
9b60184c77

+ 12 - 2
app/Http/Controllers/PracticeManagementController.php

@@ -1037,14 +1037,24 @@ SELECT claim.uid as uid,
        client.uid as client_uid,
        (client.name_last || ' ' || client.name_first) as client ,
        client.chart_number as client_chart_number,
-       (pro.name_last || ' ' || pro.name_first) as pro,
+       cp.id as claim_pro_id,
+       (cp.name_last || ' ' || cp.name_first) as claim_pro,
+       sp.id as status_pro_id,
+       (sp.name_last || ' ' || sp.name_first) as status_pro,
+       -- claim.status_updated_at,
+       (DATE(claim.status_updated_at) || ' ' || 
+            LPAD(EXTRACT(hour FROM claim.status_updated_at)::text, 2, '0') || ':' || 
+            LPAD(EXTRACT(minute FROM claim.status_updated_at)::text, 2, '0')) as status_updated_at,
        (SELECT string_agg(claim_line.cpt, ', ') FROM claim_line where claim_id = claim.id) as cpts,
        (SELECT count(claim_line_icd.id) FROM claim_line_icd where claim_line_id IN (SELECT id FROM claim_line WHERE claim_id = claim.id)) as icds,
        ROUND(claim.expected_total, 2) as expected_total
 FROM claim
     join client on claim.client_id = client.id
-    join pro on claim.pro_id = pro.id
+    join pro cp on claim.pro_id = cp.id
+    left join app_session on claim.status_updated_by_session_id = app_session.id
+    left join pro sp on app_session.pro_id = sp.id
 --WHERE claim.status IS NULL OR claim.status = 'NEW'
+WHERE claim.status is NULL OR claim.status NOt IN ('CANCELLED', 'ABANDONED')
 ORDER BY claim.created_at ASC
 --OFFSET 0 LIMIT 15
 "));

+ 40 - 8
resources/views/app/practice-management/process-claims.blade.php

@@ -4,10 +4,11 @@
     <div id="process-claims" class="px-3 mcp-theme-1 mt-3" v-cloak>
         <div class="row">
             <div class="col-9">
-                <div class="font-weight-bold py-3 font-size-16 text-secondary">
-                    <i class="fa fa-asterisk mr-2"></i>To Do
+                <div class="font-weight-bold py-3 font-size-14 text-secondary">
+                    To Do
                 </div>
-                <div v-for="(claim, claimIndex) in claims" v-if="!claim.status || claim.status === 'NEW' || claim.status === 'PICKED_UP'">
+                <div v-for="(claim, claimIndex) in claims"
+                     v-if="!claim.status || claim.status === 'NEW' || (claim.status === 'PICKED_UP' && claim.status_pro_id === proId)">
                     <div class="border rounded mb-3 border rounded mb-3 overflow-hidden"
                          :class="currentClaim && currentClaim.uid === claim.uid ? 'border-info bg-white' : (claim.status === 'PICKED_UP' ? 'border-warning' : 'bg-light text-secondary')"
                          v-on:click.prevent="setCurrentClaim(claimIndex)">
@@ -20,7 +21,7 @@
 
                             <span class="mx-2 text-secondary">/</span>
                             <span class="text-secondary text-sm mr-1">Pro</span>
-                            <span>@{{ claim.pro }}</span>
+                            <span>@{{ claim.claim_pro }}</span>
 
                             <span class="mx-2 text-secondary">/</span>
                             <span class="text-secondary text-sm mr-1">CPT</span>
@@ -154,6 +155,14 @@
 
                                     <hr class="my-2">
 
+                                    <!--total-->
+                                    <div class="d-flex align-items-center mb-1">
+                                        <div class="text-secondary mr-3 min-width-140px">Claim Total</div>
+                                        <b class="text-secondary">$ @{{ claim.expected_total ? claim.expected_total : 0 }}</b>
+                                    </div>
+
+                                    <hr class="my-2">
+
                                     <!--cpt, doc, icd-->
                                     <div class="d-flex align-items-start mb-1">
                                         <div class="text-secondary mr-3 min-width-140px">CPT Codes</div>
@@ -166,12 +175,24 @@
                 </div>
             </div>
             <div class="col-3 border-left">
-                <div class="font-weight-bold py-3 font-size-16 text-success">
-                    <i class="fa fa-check mr-2"></i>Done
+                <div class="d-flex align-items-center">
+                    <div class="font-weight-bold py-3 font-size-14 text-success text-nowrap">
+                        <i class="fa fa-check mr-2"></i>Other
+                    </div>
+                    <select class="form-control form-control-sm ml-auto width-200px" v-model="doneStatus">
+                        <option value="ALL">All</option>
+                        <option value="PICKED_UP">Picked Up</option>
+                        <option value="SUBMITTED">Submitted</option>
+                        <option value="IN_PROCESS">In Process</option>
+                        <option value="ACCEPTED">Accepted</option>
+                        <option value="REJECTED">Rejected</option>
+                        <option value="ABANDONED">Abandoned</option>
+                    </select>
                 </div>
-                <div v-for="(claim, claimIndex) in claims" v-if="claim.status && claim.status !== 'NEW' && claim.status !== 'PICKED_UP'">
+                <div v-for="(claim, claimIndex) in claims"
+                     v-if="!(!claim.status || claim.status === 'NEW' || (claim.status === 'PICKED_UP' && claim.status_pro_id === proId)) && (doneStatus === 'ALL' || doneStatus === claim.status)">
                     <div class="border rounded border rounded mb-2 overflow-hidden text-secondary">
-                        <div class="d-flex align-items-center c-pointer position-relative flex-nowrap">
+                        <div class="d-flex align-items-center position-relative flex-nowrap">
 
                             <span class="text-secondary text-sm pl-2 py-2 font-weight-bold text-nowrap">@{{ claim.created }}</span>
                             <span class="mx-1 text-secondary text-sm">/</span>
@@ -190,6 +211,11 @@
                                 </a>
                             </div>
                         </div>
+                        <div class="border-top px-2 py-1">
+                            <span class="text-sm text-dark">@{{ claim.status }}</span>
+                            <span class="text-sm" v-if="claim.status_pro_id"> by @{{ claim.status_pro }}</span>
+                            <span class="text-sm" v-if="claim.status_updated_at"> on @{{ claim.status_updated_at }}</span>
+                        </div>
                     </div>
                 </div>
             </div>
@@ -207,6 +233,10 @@
                         currentClaim: null,
                         currentMBClaim: null,
                         currentClaimLines: null,
+                        proId: {{$pro->id}},
+                        proName: '{{$pro->name_first}} {{$pro->name_last}}',
+                        isAdmin: {{$pro->pro_type === 'ADMIN' ? 'true' : 'false'}},
+                        doneStatus: 'ALL',
                     },
                     methods: {
                         hasError: function (_data) {
@@ -239,6 +269,8 @@
                             }, (_data) => {
                                 if(!this.hasError(_data)) {
                                     claim.status = _status;
+                                    claim.status_pro_id = this.proId;
+                                    claim.status_pro = this.proName;
                                     this.claims.splice(_index, 1, claim);
                                     if(_status === 'SUBMITTED') {
                                         this.resetCurrentClaim();

+ 1 - 1
routes/web.php

@@ -94,6 +94,7 @@ Route::middleware('pro.auth')->group(function () {
 
         Route::get('cellular-device-manager/{proUid?}', 'PracticeManagementController@cellularDeviceManager')->name('cellularDeviceManager');
 
+        Route::get('process-claims', 'PracticeManagementController@processClaims')->name('process-claims');
 
 
         Route::middleware('pro.auth.admin')->group(function(){
@@ -117,7 +118,6 @@ Route::middleware('pro.auth')->group(function () {
             Route::get('treatment-service-util', 'PracticeManagementController@treatmentServiceUtil')->name('treatmentServiceUtil');
 
             Route::get('claims', 'PracticeManagementController@claims')->name('claims');
-            Route::get('process-claims', 'PracticeManagementController@processClaims')->name('process-claims');
 
             // old supply-orders & shipments matrices
             // Route::get('supply-orders', 'PracticeManagementController@supplyOrders')->name('supply-orders');