Prechádzať zdrojové kódy

Claim properties: pos & modifier

Vijayakrishnan Krishnan 11 hodín pred
rodič
commit
180be2eb8e

+ 27 - 0
app/Http/Controllers/AdminController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Models\Claim;
 use App\Models\Lead;
 use App\Models\Appointment;
 use App\Models\BDTDevice;
@@ -904,4 +905,30 @@ class AdminController extends Controller
     public function manageAccountingItemsForBill(Request $request, Bill $bill) {
         return view('app.admin.accounting-items-for-bill', ['bill' => $bill]);
     }
+
+    public function putClaimProperty(Request $request)
+    {
+        $claim = Claim::where('uid', $request->get('uid'))->first();
+        if($claim){
+            $json = $claim->detail_json;
+            if($json) {
+                $parsed = json_decode($json, true);
+                if(!$parsed) $parsed = [];
+            }
+            else $parsed = [];
+            $parsed[$request->get('name')] = $request->get('value');
+            $json = json_encode($parsed);
+
+            DB::select("UPDATE claim SET detail_json = '$json' WHERE uid = '$claim->uid'");
+
+            return json_encode([
+                "success" => true,
+                "data" => $claim->uid
+            ]);
+        }
+        return json_encode([
+            "success" => false,
+            "error" => "Claim does not exist."
+        ]);
+    }
 }

+ 11 - 0
app/Models/Claim.php

@@ -49,4 +49,15 @@ class Claim extends Model
         return $this->hasOne(Payer::class, 'id', 'primary_payer_id');
     }
 
+    public function claimProperty($_name) {
+        $json = $this->detail_json;
+        if($json) {
+            $parsed = json_decode($json, true);
+            if($parsed && isset($parsed[$_name])) {
+                return $parsed[$_name];
+            }
+        }
+        return null;
+    }
+
 }

+ 186 - 0
resources/views/app/patient/note/partials/cpp-bills-claims-container.blade.php

@@ -1,3 +1,136 @@
+<?php
+$posOptions = [
+    "01" => "01 - PHARMACY",
+    "02" => "02 - TELEHEALTH PROVIDED OTHER THAN IN PATIENT'S HOME",
+    "03" => "03 - SCHOOL",
+    "04" => "04 - HOMELESS SHELTER",
+    "05" => "05 - INDIAN HEALTH SERVICE FREE-STANDING FACILITY",
+    "06" => "06 - INDIAN HEALTH SERVICE PROVIDER-BASED FACILITY",
+    "07" => "07 - TRIBAL 638 FREE-STANDING FACILITY",
+    "08" => "08 - TRIBAL 638 PROVIDER-BASED FACILITY",
+    "09" => "09 - PRISON/CORRECTIONAL FACILITY",
+    "10" => "10 - TELEHEALTH PROVIDED IN PATIENT'S HOME",
+    "11" => "11 - OFFICE",
+    "12" => "12 - HOME",
+    "13" => "13 - ASSISTED LIVING FACILITY",
+    "14" => "14 - GROUP HOME",
+    "15" => "15 - MOBILE UNIT",
+    "16" => "16 - TEMPORARY LODGING",
+    "17" => "17 - WALK-IN RETAIL HEALTH CLINIC",
+    "18" => "18 - PLACE OF EMPLOYMENT/WORKSITE",
+    "19" => "19 - OUTPATIENT HOSPITAL - OFF CAMPUS",
+    "20" => "20 - URGENT CARE FACILITY",
+    "21" => "21 - INPATIENT HOSPITAL",
+    "22" => "22 - OUTPATIENT HOSPITAL - ON CAMPUS",
+    "23" => "23 - EMERGENCY ROOM - HOSPITAL",
+    "24" => "24 - AMBULATORY SURGICAL CENTER",
+    "25" => "25 - BIRTHING CENTER",
+    "26" => "26 - MILITARY TREATMENT FACILITY",
+    "27" => "27 - OUTREACH SITE/STREET",
+    "31" => "31 - SKILLED NURSING FACILITY",
+    "32" => "32 - NURSING FACILITY",
+    "33" => "33 - CUSTODIAL CARE FACILITY",
+    "34" => "34 - HOSPICE",
+    "41" => "41 - AMBULANCE - LAND",
+    "42" => "42 - AMBULANCE AIR OR WATER",
+    "49" => "49 - INDEPENDENT CLINIC",
+    "50" => "50 - FEDERALLY QUALIFIED HEALTH CENTER",
+    "51" => "51 - INPATIENT PSYCHIATRIC FACILITY",
+    "52" => "52 - PSYCHIATRIC FACILITY PARTIAL HOSPITALIZATION",
+    "53" => "53 - COMMUNITY MENTAL HEALTH CENTER",
+    "54" => "54 - INTERMEDIATE CARE FACILITY/MENTALLY RETARDED",
+    "55" => "55 - RESIDENTIAL SUBSTANCE ABUSE TREATMENT FACILITY",
+    "56" => "56 - PSYCHIATRIC RESIDENTIAL TREATMENT CENTER",
+    "57" => "57 - NON-RESIDENTIAL SUBSTANCE ABUSE TREATMENT FACILITY",
+    "58" => "58 - NON-RESIDENTIAL OPIOID TREATMENT FACILITY",
+    "60" => "60 - MASS IMMUNIZATION CENTER",
+    "61" => "61 - COMPREHENSIVE INPATIENT REHABILITATION FACILITY",
+    "62" => "62 - COMPREHENSIVE OUTPATIENT REHABILITATION FACILITY",
+    "65" => "65 - END STAGE RENAL DISEASE TREATMENT FACILITY",
+    "71" => "71 - PUBLIC HEALTH CLINIC",
+    "72" => "72 - RURAL HEALTH CLINIC",
+    "81" => "81 - INDEPENDENT LABORATORY",
+    "99" => "99 - OTHER PLACE OF SERVICE",
+];
+$modifierOptions = [
+    "20" => "20 - MICROSURGERY",
+    "21" => "21 - PROLONGED EVALUATION &amp; MANAGEMENT SERVIC",
+    "22" => "22 - UNUSUAL PROCEDURAL SERVICES",
+    "23" => "23 - UNUSUAL ANESTHESIA",
+    "24" => "24 - UNRELATED EVALUATION &amp; MANAGEMENT SERVIC",
+    "25" => "25 - SIGNIFICANT, SEPARATELY IDENTIFIABLE EVA",
+    "26" => "26 - PROFESSIONAL COMPONENT",
+    "32" => "32 - MANDATED SERVICES",
+    "47" => "47 - ANESTHESIA BY SURGEON",
+    "50" => "50 - BILATERAL PROCEDURE",
+    "51" => "51 - MULTIPLE PROCEDURES",
+    "52" => "52 - REDUCED SERVICES",
+    "53" => "53 - DISCONTINUED PROCEDURE",
+    "54" => "54 - SURGICAL CARE ONLY",
+    "55" => "55 - POSTOPERATIVE MANAGEMENT ONLY",
+    "56" => "56 - PREOPERATIVE MANAGEMENT ONLY",
+    "57" => "57 - DECISION FOR SURGERY",
+    "58" => "58 - STAGED OR RELATED PROCEDURE OR SERVICE B",
+    "59" => "59 - DISTINCT PROCEDURAL SERVICE",
+    "62" => "62 - TWO SURGEONS",
+    "66" => "66 - SURGICAL TEAM",
+    "73" => "73 - DISCONTINUED OUT-PATIENT HOSPITAL/AMBULA",
+    "74" => "74 - DISCONTINUED OUT-PATIENT HOSPITAL/AMBULA",
+    "76" => "76 - REPEAT PROCEDURE BY SAME PHYSICIAN",
+    "77" => "77 - REPEAT PROCEDURE BY ANOTHER PHYSICIAN",
+    "78" => "78 - RETURN TO THE OPERATING ROOM FOR A RELAT",
+    "79" => "79 - UNRELATED PROCEDURE OR SERVICE BY THE SA",
+    "80" => "80 - ASSISTANT SURGEON",
+    "81" => "81 - MINIMUM ASSISTANT SURGEON",
+    "82" => "82 - ASSISTANT SURGEON (WHEN QUALIFIED RESIDE",
+    "90" => "90 - REFERENCE (OUTSIDE) LABORATORY",
+    "91" => "91 - REPEAT CLINICAL DIAGNOSTIC LAB TEST",
+    "93" => "93 - AUDIO-ONLY TELEMEDICINE SERVICES",
+    "95" => "95 - MCR TELEHEALTH VISIT",
+    "99" => "99 - MULTIPLE MODIFIERS",
+    "E1" => "E1 - UPPER LEFT, EYELID",
+    "E2" => "E2 - LOWER LEFT, EYELID",
+    "E3" => "E3 - UPPER RIGHT, EYELID",
+    "E4" => "E4 - LOWER RIGHT, EYELID",
+    "F1" => "F1 - LEFT HAND, SECOND DIGIT",
+    "F2" => "F2 - LEFT HAND, THIRD DIGIT",
+    "F3" => "F3 - LEFT HAND, FOURTH DIGIT",
+    "F4" => "F4 - LEFT HAND, FIFTH DIGIT",
+    "F5" => "F5 - RIGHT HAND, THUMB",
+    "F6" => "F6 - RIGHT HAND, SECOND DIGIT",
+    "F7" => "F7 - RIGHT HAND, THIRD DIGIT",
+    "F8" => "F8 - RIGHT HAND, FOURTH DIGIT",
+    "F9" => "F9 - RIGHT HAND, FIFTH DIGIT",
+    "FA" => "FA - LEFT HAND, THUMB",
+    "FQ" => "FQ - FURNISHED USING AUDIO-ONLY COMM TECH",
+    "GT" => "GT - VIA INTERACTIVE AUDIO AND VIDEO TELECOM",
+    "GW" => "GW - HOSPICE",
+    "LC" => "LC - LEFT CIRCUMFLEX CORONARY ARTERY (HOSPITA",
+    "LD" => "LD - LEFT ANTERIOR DESCENDING CORONARY ARTERY",
+    "LT" => "LT - LEFT SIDE (USED TO IDENTIFY PROCEDURES P",
+    "QM" => "QM - AMBULANCE SERVICE PROVIDED UNDER ARRANGE",
+    "QN" => "QN - AMBULANCE SERVICE FURNISHED DIRECTLY BY",
+    "QR" => "QR - REPEAT LABORATORY TEST PERFORMED ON THE",
+    "RC" => "RC - RIGHT CORONARY ARTERY (HOSPITALS USE WIT",
+    "RT" => "RT - RIGHT SIDE (USED TO IDENTIFY PROCEDURES",
+    "T1" => "T1 - LEFT FOOT, SECOND DIGIT",
+    "T2" => "T2 - LEFT FOOT, THIRD DIGIT",
+    "T3" => "T3 - LEFT FOOT, FOURTH DIGIT",
+    "T4" => "T4 - LEFT FOOT, FIFTH DIGIT",
+    "T5" => "T5 - RIGHT FOOT, GREAT TOE",
+    "T6" => "T6 - RIGHT FOOT, SECOND DIGIT",
+    "T7" => "T7 - RIGHT FOOT, THIRD DIGIT",
+    "T8" => "T8 - RIGHT FOOT, FOURTH DIGIT",
+    "T9" => "T9 - RIGHT FOOT, FIFTH DIGIT",
+    "TA" => "TA - LEFT FOOT, GREAT TOE",
+    "TC" => "TC - TECHNICAL COMPONENT",
+    "XE" => "XE - Separate Encounter",
+    "XP" => "XP - Separate Practitioner",
+    "XS" => "XS - Separate Structure",
+    "XU" => "XU - Unusual Non-Overlapping Service",
+];
+?>
+
 <div id="cpp-bills-claims-container" moe-refresh-container>
 
     {{-- companyPro, payer and location --}}
@@ -863,6 +996,7 @@
                 <tr>
                     <th class="border-bottom-0 pl-2">IID</th>
                     <th class="border-bottom-0">Details</th>
+                    <th class="border-bottom-0">POS & Modifier</th>
                     <th class="border-bottom-0">Status</th>
                     <th class="border-bottom-0">Submissions</th>
                 </tr>
@@ -935,6 +1069,58 @@
                                     <p>No lines for this claim</p>
                                 @endif
                             </td>
+                            <td>
+                                <?php
+                                    $pos = $claim->claimProperty('pos');
+                                    $modifier = $claim->claimProperty('modifier');
+                                ?>
+                                <div class="mb-2 d-flex">
+                                    POS:&nbsp;<b>{{$pos ?: '-'}}</b>
+                                    <div moe class="ml-1">
+                                        <a class="text-primary" href="" show start><i class="fa fa-edit"></i></a>
+                                        <form url="/put-claim-property">
+                                            <input type="hidden" name="uid" value="{{$claim->uid}}">
+                                            <input type="hidden" name="name" value="pos">
+                                            <div class="mb-2">
+                                                <label>POS:</label>
+                                                <select name="value" class="form-control form-control-sm">
+                                                    <option value="">-- select --</option>
+                                                    @foreach($posOptions as $kOpt => $vOpt)
+                                                        <option value="{{$kOpt}}" {{$pos == $kOpt ? 'selected' : ''}}>{{$vOpt}}</option>
+                                                    @endforeach
+                                                </select>
+                                            </div>
+                                            <div class="mb-0">
+                                                <button class="btn btn-primary btn-sm" submit>Submit</button>
+                                                <button class="btn btn-default border btn-sm" cancel>Cancel</button>
+                                            </div>
+                                        </form>
+                                    </div>
+                                </div>
+                                <div class="d-flex">
+                                    Modifier:&nbsp;<b>{{$modifier ?: '-'}}</b>
+                                    <div moe class="ml-1">
+                                        <a class="text-primary" href="" show start><i class="fa fa-edit"></i></a>
+                                        <form url="/put-claim-property">
+                                            <input type="hidden" name="uid" value="{{$claim->uid}}">
+                                            <input type="hidden" name="name" value="modifier">
+                                            <div class="mb-2">
+                                                <label>Modifier:</label>
+                                                <select name="value" class="form-control form-control-sm">
+                                                    <option value="">-- select --</option>
+                                                    @foreach($modifierOptions as $kOpt => $vOpt)
+                                                        <option value="{{$kOpt}}" {{$modifier == $kOpt ? 'selected' : ''}}>{{$vOpt}}</option>
+                                                    @endforeach
+                                                </select>
+                                            </div>
+                                            <div class="mb-0">
+                                                <button class="btn btn-primary btn-sm" submit>Submit</button>
+                                                <button class="btn btn-default border btn-sm" cancel>Cancel</button>
+                                            </div>
+                                        </form>
+                                    </div>
+                                </div>
+                            </td>
                             <td class="border-right p-0">
 
                                 <!-- payer, company, location -->

+ 2 - 0
routes/web.php

@@ -703,6 +703,8 @@ Route::middleware('pro.auth')->group(function () {
 
     Route::get('/manage-accounting-items-for-bill/{bill}', 'AdminController@manageAccountingItemsForBill')->name('manage-accounting-items-for-bill');
 
+    Route::post('/put-claim-property', 'AdminController@putClaimProperty')->name('put-claim-property');
+
     Route::get('/protocol-builder/{patient}', 'PatientController@protocolBuilder')->name('protocol-builder');
     Route::get('/point/edit-hpi/{note}/{point}', 'NoteController@editHPI')->name('point-edit-hpi');
     Route::get('/point/hpi-log/{point}', 'NoteController@hpiLog')->name('point-hpi-log');