| [613] | 1 | IBCICME1 ;DSI/ESG - IBCI CLAIMSMANAGER ERROR REPORT <CONT> ;6-APR-2001 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**161**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | BUILD ; Build the scratch global based on the selection and sort criteria | 
|---|
|  | 6 | ; | 
|---|
|  | 7 | NEW REF,MNEMONIC,RDT,IBIFN,CMDATA,IBDATA,CMSTATUS,BILLID,PATDATA | 
|---|
|  | 8 | NEW NAME,SSN,BILLER,CODER,OIFLG,ASSIGNED,CHARGES,ERR,ERRCODES | 
|---|
|  | 9 | NEW SORT1,SORT2,SORT3,SORT4,SORT5,RPTDATA,ERRIEN,LINENO | 
|---|
|  | 10 | NEW COUNT,BILCOUNT,ERRCOUNT,INSNAME | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | KILL ^TMP($J,IBCIRTN),^TMP($J,IBCIRTN_"-LIST-OF-BILLS") | 
|---|
|  | 13 | KILL ^TMP($J,IBCIRTN_"-TOTALS") | 
|---|
|  | 14 | ; | 
|---|
|  | 15 | ; which array are we looping through?  Find out here. | 
|---|
|  | 16 | S REF="RPTSPECS(""SELECTED ERRCODES"")" | 
|---|
|  | 17 | I RPTSPECS("ALL ERRCODES") S REF="^IBA(351.9,""AEC"")" | 
|---|
|  | 18 | ; | 
|---|
|  | 19 | S MNEMONIC="",(COUNT,BILCOUNT,ERRCOUNT)=0 | 
|---|
|  | 20 | F  S MNEMONIC=$O(@REF@(MNEMONIC)) Q:MNEMONIC=""!$G(ZTSTOP)  D | 
|---|
|  | 21 | . S IBIFN=0 | 
|---|
|  | 22 | . F  S IBIFN=$O(^IBA(351.9,"AEC",MNEMONIC,IBIFN)) Q:'IBIFN!$G(ZTSTOP)  D | 
|---|
|  | 23 | .. S COUNT=COUNT+1 | 
|---|
|  | 24 | .. I $D(ZTQUEUED),COUNT#100=0,$$S^%ZTLOAD() S ZTSTOP=1 Q | 
|---|
|  | 25 | .. S CMDATA=$G(^IBA(351.9,IBIFN,0)) | 
|---|
|  | 26 | .. I CMDATA="" Q | 
|---|
|  | 27 | .. S IBDATA=$G(^DGCR(399,IBIFN,0)) | 
|---|
|  | 28 | .. I IBDATA="" Q | 
|---|
|  | 29 | .. ; | 
|---|
|  | 30 | .. ; Get the date that the user selected and check it | 
|---|
|  | 31 | .. S RDT=9999999 | 
|---|
|  | 32 | .. I RPTSPECS("DATYP")=1 S RDT=$P($P(IBDATA,U,3),".",1) | 
|---|
|  | 33 | .. I RPTSPECS("DATYP")=2 S RDT=$P($P($G(^DGCR(399,IBIFN,"S")),U,1),".",1) | 
|---|
|  | 34 | .. I RDT<RPTSPECS("BEGDATE") Q   ; date too early | 
|---|
|  | 35 | .. I RDT>RPTSPECS("ENDDATE") Q   ; date too late | 
|---|
|  | 36 | .. ; | 
|---|
|  | 37 | .. ; If the user chose a specific ClaimsManager status to report | 
|---|
|  | 38 | .. ; on, then make sure this bill has the status they want. | 
|---|
|  | 39 | .. S CMSTATUS=$P(CMDATA,U,2) | 
|---|
|  | 40 | .. I RPTSPECS("STATYP")=2,CMSTATUS'=RPTSPECS("IBCISTAT") Q | 
|---|
|  | 41 | .. ; | 
|---|
|  | 42 | .. ; If the user wants to see bills that are still open for editing | 
|---|
|  | 43 | .. I RPTSPECS("STATYP")=3,'$F(".1.","."_$P(IBDATA,U,13)_".") Q  ;DSI/DJW 3/21/02 | 
|---|
|  | 44 | .. ; | 
|---|
|  | 45 | .. ; If the user wants to include a specific assigned to person, | 
|---|
|  | 46 | .. ; then make sure the assigned to person is the one they want. | 
|---|
|  | 47 | .. I RPTSPECS("ASNDUZ"),RPTSPECS("ASNDUZ")'=$P(CMDATA,U,12) Q | 
|---|
|  | 48 | .. ; | 
|---|
|  | 49 | .. ; At this point, we know we want to include this bill. | 
|---|
|  | 50 | .. D GETDATA | 
|---|
|  | 51 | .. I '$D(^TMP($J,IBCIRTN_"-LIST-OF-BILLS",IBIFN)) S ^TMP($J,IBCIRTN_"-LIST-OF-BILLS",IBIFN)="",BILCOUNT=BILCOUNT+1 | 
|---|
|  | 52 | .. ; | 
|---|
|  | 53 | .. ; esg - 6/12/01 | 
|---|
|  | 54 | .. ; Determine what the value of SORT2 should be based on the user's | 
|---|
|  | 55 | .. ; response to the Error Display Type question. | 
|---|
|  | 56 | .. ; | 
|---|
|  | 57 | .. I RPTSPECS("ERROR DISPLAY TYPE")=2 S SORT2=" "_MNEMONIC | 
|---|
|  | 58 | .. S ^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN)=RPTDATA | 
|---|
|  | 59 | .. ; | 
|---|
|  | 60 | .. ; continue looping to get the error level data and the totals | 
|---|
|  | 61 | .. S ERRIEN=0 | 
|---|
|  | 62 | .. F  S ERRIEN=$O(^IBA(351.9,"AEC",MNEMONIC,IBIFN,ERRIEN)) Q:'ERRIEN  D | 
|---|
|  | 63 | ... S ERRCOUNT=ERRCOUNT+1 | 
|---|
|  | 64 | ... S LINENO=$G(^IBA(351.9,IBIFN,1,ERRIEN,0)) | 
|---|
|  | 65 | ... S LINENO=$P($P(LINENO,U,2),"~",1) | 
|---|
|  | 66 | ... S ^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN,ERRIEN)=LINENO_U_MNEMONIC | 
|---|
|  | 67 | ... S ^TMP($J,IBCIRTN_"-TOTALS",MNEMONIC)=$G(^TMP($J,IBCIRTN_"-TOTALS",MNEMONIC))+1 | 
|---|
|  | 68 | ... Q | 
|---|
|  | 69 | .. Q | 
|---|
|  | 70 | . Q | 
|---|
|  | 71 | S ^TMP($J,IBCIRTN_"-TOTALS")=BILCOUNT_U_ERRCOUNT | 
|---|
|  | 72 | KILL ^TMP($J,IBCIRTN_"-LIST-OF-BILLS") | 
|---|
|  | 73 | ; | 
|---|
|  | 74 | BUILDX ; | 
|---|
|  | 75 | Q | 
|---|
|  | 76 | ; | 
|---|
|  | 77 | ; | 
|---|
|  | 78 | GETDATA ; Retrieve the data for this bill | 
|---|
|  | 79 | S BILLID=$P(IBDATA,U,1)                              ; bill number | 
|---|
|  | 80 | S PATDATA=$G(^DPT(+$P(IBDATA,U,2),0)) | 
|---|
|  | 81 | I PATDATA="" Q | 
|---|
|  | 82 | S NAME=$P(PATDATA,U,1)                               ; patient name | 
|---|
|  | 83 | I NAME="" S NAME="UNKNOWN" | 
|---|
|  | 84 | S NAMESUB=$E(NAME,1,15)_+$P(IBDATA,U,2)              ; name subscript | 
|---|
|  | 85 | S SSN=$P(PATDATA,U,9)                                ; patient ssn | 
|---|
|  | 86 | S BILLER=$P($$BILLER^IBCIUT5(IBIFN),U,2) | 
|---|
|  | 87 | I BILLER="" S BILLER="UNKNOWN" | 
|---|
|  | 88 | S CODER=$$CODER^IBCIUT5(IBIFN) | 
|---|
|  | 89 | S OIFLG=$P(CODER,U,1)               ; inpatient/outpatient flag | 
|---|
|  | 90 | S CODER=$P(CODER,U,3) | 
|---|
|  | 91 | I CODER="" S CODER="UNKNOWN" | 
|---|
|  | 92 | S ASSIGNED=$P($G(^VA(200,+$P(CMDATA,U,12),0)),U,1)   ; assigned to | 
|---|
|  | 93 | I ASSIGNED="" S ASSIGNED="UNASSIGNED" | 
|---|
|  | 94 | S ASNSUB=$E(ASSIGNED,1,12)_+$P(CMDATA,U,12)     ; assigned to subscript | 
|---|
|  | 95 | S CHARGES=+$P($G(^DGCR(399,IBIFN,"U1")),U,1)         ; total charges | 
|---|
|  | 96 | S (ERR,ERRCODES)="" | 
|---|
|  | 97 | F  S ERR=$O(^IBA(351.9,IBIFN,1,"B",ERR)) Q:ERR=""  D | 
|---|
|  | 98 | . I ERRCODES="" S ERRCODES=ERR | 
|---|
|  | 99 | . E  S ERRCODES=ERRCODES_","_ERR    ; build the list of error codes | 
|---|
|  | 100 | . Q | 
|---|
|  | 101 | ; | 
|---|
|  | 102 | ; set the sort variables and build the scratch global | 
|---|
|  | 103 | S (SORT1,SORT2,SORT3,SORT4,SORT5)=1 | 
|---|
|  | 104 | I RPTSPECS("ASNSORT") S SORT3=" "_ASNSUB | 
|---|
|  | 105 | I RPTSPECS("SORTBY")=1 S SORT4=" "_$P($$TD^IBCIUT5(IBIFN),U,1) | 
|---|
|  | 106 | I RPTSPECS("SORTBY")=2 D | 
|---|
|  | 107 | . S INSNAME=$P($G(^DIC(36,+$$FINDINS^IBCEF1(IBIFN),0)),U,1) | 
|---|
|  | 108 | . I INSNAME="" S INSNAME="~~~ NO INSURANCE ~~~" | 
|---|
|  | 109 | . S SORT4=" "_$E(INSNAME,1,25) | 
|---|
|  | 110 | . Q | 
|---|
|  | 111 | I RPTSPECS("SORTBY")=3 S SORT4=" "_NAMESUB | 
|---|
|  | 112 | I RPTSPECS("SORTBY")=4 S SORT4=-CHARGES | 
|---|
|  | 113 | I RPTSPECS("SORTBY")=5 S SORT4=" "_BILLID | 
|---|
|  | 114 | ; | 
|---|
|  | 115 | S RPTDATA=BILLID_U_SSN_U_$P(RDT,".",1)_U_BILLER_U_CODER_U_ASSIGNED_U_OIFLG_U_CHARGES_U_CMSTATUS_U_ERRCODES | 
|---|
|  | 116 | ; | 
|---|
|  | 117 | ; Build an array with the total number of bills in each status | 
|---|
|  | 118 | ; This array will be used in the report print routines and it is | 
|---|
|  | 119 | ; available in both the status report and the error report. | 
|---|
|  | 120 | ; esg - 5/22/01 | 
|---|
|  | 121 | ; | 
|---|
|  | 122 | ; bill count by status | 
|---|
|  | 123 | S IBCISCNT(1,CMSTATUS)=$G(IBCISCNT(1,CMSTATUS))+1 | 
|---|
|  | 124 | S IBCISCNT(1)=$G(IBCISCNT(1))+1 | 
|---|
|  | 125 | ; | 
|---|
|  | 126 | ; charges by status | 
|---|
|  | 127 | S IBCISCNT(2,CMSTATUS)=$G(IBCISCNT(2,CMSTATUS))+CHARGES | 
|---|
|  | 128 | S IBCISCNT(2)=$G(IBCISCNT(2))+CHARGES | 
|---|
|  | 129 | ; | 
|---|
|  | 130 | GETDATX ; | 
|---|
|  | 131 | Q | 
|---|
|  | 132 | ; | 
|---|