[613] | 1 | IBCICMEP ;DSI/JSR - ClaimsManager ERROR REPORT ;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 | ;; ** Program Description **
|
---|
| 5 | ; This routine has only 1 entry point EN.
|
---|
| 6 | ; This routine is invoked when ^IBCICME is run from the menu option.
|
---|
| 7 | ; ^IBCICME is and extraction routine which collects claims which
|
---|
| 8 | ; the user defined report extracted for reporting purposes.
|
---|
| 9 | ; This routine ^IBCICMEP is the print routine which permits the
|
---|
| 10 | ; user to print the report to the screen or to queue as a background
|
---|
| 11 | ; job which can be stopped at any time using TaskManager.
|
---|
| 12 | ; Variables
|
---|
| 13 | ; IBCIPXT = (0 or 1) halts job if report is stopped.
|
---|
| 14 | ; SORT1 = will always be a 1 (reserved for future use)
|
---|
| 15 | ; SORT2 = space concatenated with the Error Code Mnemonic or a 1
|
---|
| 16 | ; this is a flag type indicator. 1 indicates that the
|
---|
| 17 | ; report will print all errors for a bill
|
---|
| 18 | ; Sort2'=1 indicates that the report will print all Bills
|
---|
| 19 | ; for a ClaimsManager Error Code (JSR 6/12/01)
|
---|
| 20 | ; SORT3 = "1" or the Assigned to person name
|
---|
| 21 | ; SORT4 = a space concatenated with whatever data the user is
|
---|
| 22 | ; sorting by (terminal digit, Insurance company name,
|
---|
| 23 | ; patient last name, negative charge amount or bill #.
|
---|
| 24 | ; SORT5 = Sort5 will always be a 1 (reserved for future use
|
---|
| 25 | ; possible insurance group ID).
|
---|
| 26 | ; MAXCNT = Kernel determines the Max Lines per Page for each device
|
---|
| 27 | ; CRT = Determines if output is sent to screen.
|
---|
| 28 | ; RPTTYP = Identifies type of report being compiled.
|
---|
| 29 | EN ; this is the only entry point
|
---|
| 30 | N ASSIGN,AUDIT,COMMEN,CRT,DATE,EFLAG,ERRSEQ,GROUPBY,I,IBCI1,IBCI10
|
---|
| 31 | N IBCI11,IBCI12,IBCI2,IBCI3,IBCI4,IBCI5,IBCI6,IBCI7,IBCI8,IBCI9,IBCIARR
|
---|
| 32 | N IBCIBEG,IBCID2,IBCIDATA,IBCIDT,IBCIEND,IBCIPGCT,IBCIARR,IBCIEMN
|
---|
| 33 | N IBCIQT,IBCIRUN,IBCISEQ,IBCITOT,IBCITXT,IBCIX,IBIFN,MAXCNT,PREV
|
---|
| 34 | N IBCIPXT,RPTTYP,SORT1,SORT2,SORT3,SORT4,SORT5,IBCIX,Y,Z,X,STOP,NAME
|
---|
| 35 | S ASSIGN=RPTSPECS("ASNSORT") ; PRIMARY SORT BY ASSIGN TO PERSON 1 YES 0 NO
|
---|
| 36 | S COMMEN=RPTSPECS("IBCICOMM") ; FLAG PRINT COMMENT 1 YES 0 NO
|
---|
| 37 | S GROUPBY=RPTSPECS("SORTBY") ;TYPE 2=INS LOGIC DIFF SORT4
|
---|
| 38 | S IBCIBEG=RPTSPECS("BEGDATE")
|
---|
| 39 | S DATE=RPTSPECS("DATYP")
|
---|
| 40 | S IBCIEND=RPTSPECS("ENDDATE")
|
---|
| 41 | S EFLAG=RPTSPECS("DISPLAY ERROR TEXT") ; 1 print error txt 0 don't
|
---|
| 42 | S (IBCIPXT,IBCIPGCT)=0 ; flags quit and header
|
---|
| 43 | S Z=($P($G(^IBA(351.91,0)),U,4))
|
---|
| 44 | F I=1:1:Z S (IBCIARR(I))=$P($G(^IBA(351.91,I,0)),U,2) ; CM status
|
---|
| 45 | S RPTTYP(1)="Terminal Digit"
|
---|
| 46 | S RPTTYP(2)="Insurance Company"
|
---|
| 47 | S RPTTYP(3)="Patient Last Name"
|
---|
| 48 | S RPTTYP(4)="Dollar Impact"
|
---|
| 49 | S RPTTYP(5)="Bill Number" ;JSR 6/12/2001
|
---|
| 50 | ;
|
---|
| 51 | I IOST["C" S MAXCNT=IOSL-4,CRT=1
|
---|
| 52 | E S MAXCNT=IOSL-6,CRT=0
|
---|
| 53 | I RPTSPECS("TYPE")="D" D PRINT ; Detailed Report ;DSI/DJW 3/21/02
|
---|
| 54 | I IBCIPXT=0 D PRINT2
|
---|
| 55 | I CRT,IBCIPGCT>0,'$D(ZTQUEUED),IBCIPXT=0 S DIR(0)="E" D ^DIR K DIR I $D(DTOUT)!($D(DUOUT)) S IBCIPXT=1 Q
|
---|
| 56 | G XIT
|
---|
| 57 | Q
|
---|
| 58 | PRINT ; prints data extracted
|
---|
| 59 | I '$D(^TMP($J,IBCIRTN)) D HEADER W ?35,"N O D A T A F O U N D",!!
|
---|
| 60 | S SORT1="" F S SORT1=$O(^TMP($J,IBCIRTN,SORT1)) Q:SORT1=""!(IBCIPXT=1)!($G(ZTSTOP)) D
|
---|
| 61 | . S SORT2="" F S SORT2=$O(^TMP($J,IBCIRTN,SORT1,SORT2)) Q:SORT2=""!(IBCIPXT=1)!($G(ZTSTOP)) D
|
---|
| 62 | . . S SORT3="" F S SORT3=$O(^TMP($J,IBCIRTN,SORT1,SORT2,SORT3)) Q:SORT3=""!(IBCIPXT=1)!($G(ZTSTOP)) D
|
---|
| 63 | . . . I ASSIGN D HEADER
|
---|
| 64 | . . . S SORT4="" F S SORT4=$O(^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4)) Q:SORT4=""!(IBCIPXT=1)!($G(ZTSTOP)) D
|
---|
| 65 | . . . . S PREV=SORT4
|
---|
| 66 | . . . . I GROUPBY=2,IBCIPXT=0,IBCIPGCT>0 D HEAD2
|
---|
| 67 | . . . . S SORT5="" F S SORT5=$O(^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5)) Q:SORT5=""!(IBCIPXT=1)!($G(ZTSTOP)) D
|
---|
| 68 | . . . . . S NAME="" F S NAME=$O(^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME)) Q:NAME=""!(IBCIPXT=1)!($G(ZTSTOP)) D
|
---|
| 69 | . . . . . . S IBIFN="" F S IBIFN=$O(^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN)) Q:IBIFN=""!(IBCIPXT=1)!($G(ZTSTOP)) D
|
---|
| 70 | . . . . . . . S IBCIEMN="" F S IBCIEMN=$O(^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN,IBCIEMN)) Q:IBCIEMN=""!(IBCIPXT=1)!($G(ZTSTOP)) D
|
---|
| 71 | . . . . . . . . D DATA
|
---|
| 72 | . . . . . . . . D LINE
|
---|
| 73 | . . . . . . . . I EFLAG D ERROR
|
---|
| 74 | . . . . . . . I COMMEN D COMM
|
---|
| 75 | Q
|
---|
| 76 | PRINT2 ; print audit report
|
---|
| 77 | I RPTSPECS("TYPE")="D",('$D(^TMP($J,IBCIRTN))) Q
|
---|
| 78 | D HEADA
|
---|
| 79 | I IBCIPXT=1 Q
|
---|
| 80 | ; JSR 6/12/01 change to accommodate new request PRINT2+2 thru PRINT2+9
|
---|
| 81 | I '$D(^TMP($J,IBCIRTN)) W ?35,"N O D A T A F O U N D",! Q
|
---|
| 82 | S SORT1="" F S SORT1=$O(^TMP($J,IBCIRTN_"-TOTALS",SORT1)) Q:SORT1=""!(IBCIPXT=1)!($G(ZTSTOP)) D
|
---|
| 83 | . I $Y+1>MAXCNT D HEADER
|
---|
| 84 | . S AUDIT=^TMP($J,IBCIRTN_"-TOTALS",SORT1)
|
---|
| 85 | . W ?20,SORT1,?40,$J($FN(AUDIT,","),9),!
|
---|
| 86 | W !
|
---|
| 87 | S IBCITOT=$G(^TMP($J,IBCIRTN_"-TOTALS"))
|
---|
| 88 | ; JSR ===
|
---|
| 89 | W ?20,"Total # Claims",?40,$J($FN($P($G(IBCITOT),U,1),","),9),!
|
---|
| 90 | W ?20,"Total # Errors",?40,$J($FN($P($G(IBCITOT),U,2),","),9),!
|
---|
| 91 | Q
|
---|
| 92 | HEADER ; header for main report
|
---|
| 93 | I CRT,IBCIPGCT>0,'$D(ZTQUEUED),IBCIPXT=0 S DIR(0)="E" D ^DIR K DIR I $D(DTOUT)!($D(DUOUT)) S IBCIPXT=1 Q
|
---|
| 94 | I $D(ZTQUEUED),$$S^%ZTLOAD() S ZTSTOP=1 Q
|
---|
| 95 | S IBCIPGCT=IBCIPGCT+1
|
---|
| 96 | W @IOF,!,"ClaimsManager Detailed Error Report sort by "_RPTTYP(GROUPBY)_" for "
|
---|
| 97 | W $E(IBCIBEG,4,5)_"/"_$E(IBCIBEG,6,7)_"/"_$E(IBCIBEG,2,3)_" thru "_$E(IBCIEND,4,5)_"/"_$E(IBCIEND,6,7)_"/"_$E(IBCIEND,2,3)
|
---|
| 98 | W ?100,"Page :"_IBCIPGCT,!
|
---|
| 99 | S Y=$$NOW^XLFDT X ^DD("DD") S IBCIRUN=Y
|
---|
| 100 | W "Detailed Report",?100,"Run Date: "_IBCIRUN,!!
|
---|
| 101 | I DATE=1 W ?1,"ERROR",?8,"BILL NO.",?18,"PATIENT NAME",?44,"PID",?50," EVENT",?60,"BILLER",?68,"CODER",?76,"ASSIGN",?84,"ERROR CODES",?102,"TYPE",?108,"CHARGES",?116,"CM STATUS"
|
---|
| 102 | E W ?1,"ERROR",?8,"BILL NO.",?18,"PATIENT NAME",?44,"PID",?50," ENTER",?60,"BILLER",?68,"CODER",?76,"ASSIGN",?84,"ERROR CODES",?102,"TYPE",?108,"CHARGES",?116,"CM STATUS"
|
---|
| 103 | N X S $P(X,"=",130)="" W !,X,!
|
---|
| 104 | Q
|
---|
| 105 | HEAD2 ; only printed when insurance is a selected sort
|
---|
| 106 | Q:GROUPBY'=2
|
---|
| 107 | Q:IBCIPXT=1
|
---|
| 108 | I $Y+4>MAXCNT,IBCIPXT=0 D HEADER
|
---|
| 109 | I $Y=6,IBCIPXT=0 W ?2,"INSURANCE: "_SORT4,!
|
---|
| 110 | E W:IBCIPXT=0 !,?2,"INSURANCE: "_SORT4,!
|
---|
| 111 | Q
|
---|
| 112 | HEADA ; only for audit header
|
---|
| 113 | I CRT,IBCIPGCT>0,'$D(ZTQUEUED),IBCIPXT=0 S DIR(0)="E" D ^DIR K DIR I $D(DTOUT)!($D(DUOUT)) S IBCIPXT=1 Q
|
---|
| 114 | I $D(ZTQUEUED),$$S^%ZTLOAD() S ZTSTOP=1 Q
|
---|
| 115 | S IBCIPGCT=IBCIPGCT+1
|
---|
| 116 | W @IOF,!,"ClaimsManager Audit Error Report for "
|
---|
| 117 | W $E(IBCIBEG,4,5)_"/"_$E(IBCIBEG,6,7)_"/"_$E(IBCIBEG,2,3)_" thru "_$E(IBCIEND,4,5)_"/"_$E(IBCIEND,6,7)_"/"_$E(IBCIEND,2,3)
|
---|
| 118 | W ?100,"Page :"_IBCIPGCT,!
|
---|
| 119 | I RPTSPECS("TYPE")="S" W "Summary Report"
|
---|
| 120 | E W "Detailed Report"
|
---|
| 121 | S Y=$$NOW^XLFDT X ^DD("DD") S IBCIRUN=Y
|
---|
| 122 | W ?100,"Run Date: "_IBCIRUN,!!
|
---|
| 123 | Q
|
---|
| 124 | DATA ; formats line item data - note claims with same edit error mnemonic
|
---|
| 125 | ; may print mulitple times if the HFCA line item is an unique line
|
---|
| 126 | ; with the same error type. The report prints the error mnemonic and
|
---|
| 127 | ; the HCFA line # as it relates to IB.
|
---|
| 128 | S IBCIDATA=^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN)
|
---|
| 129 | S IBCI1=$P(IBCIDATA,U,1) ; [1] External Bill#
|
---|
| 130 | S IBCI2=$P(IBCIDATA,U,2) ; [2] Patient SSN
|
---|
| 131 | S IBCI3=$P(IBCIDATA,U,3) ; ck logic [3] EventDate or Bill
|
---|
| 132 | S IBCIDT=$E(IBCI3,4,5)_"/"_$E(IBCI3,6,7)_"/"_$E(IBCI3,2,3)
|
---|
| 133 | S IBCI4=$P(IBCIDATA,U,4) ; [4] Biller name
|
---|
| 134 | S IBCI5=$P(IBCIDATA,U,5) ; [5] Coder name
|
---|
| 135 | S IBCI6=$P(IBCIDATA,U,6) ; [6] Assigned to person name
|
---|
| 136 | S IBCI7=$P(IBCIDATA,U,7) ;[7] inpatient/outpatient flag
|
---|
| 137 | S IBCI8=$P(IBCIDATA,U,8) ;[8] Charges
|
---|
| 138 | S IBCI9=$P(IBCIDATA,U,9) ;[9] ien of current ClaimsManager
|
---|
| 139 | S IBCI10=$P(IBCIDATA,U,10) ;[10] String of error code mne
|
---|
| 140 | S IBCID2=^TMP($J,IBCIRTN,SORT1,SORT2,SORT3,SORT4,SORT5,NAME,IBIFN,IBCIEMN)
|
---|
| 141 | S IBCI11=$P(IBCID2,U,1)
|
---|
| 142 | S IBCI12=$P(IBCID2,U,2) ; jsr 6/12/01
|
---|
| 143 | S IBCIX=(IBCIARR(IBCI9))
|
---|
| 144 | Q
|
---|
| 145 | ERROR ; this is a unique error which CM reports
|
---|
| 146 | S ERRSEQ=0 F S ERRSEQ=$O(^IBA(351.9,IBIFN,1,IBCIEMN,1,ERRSEQ)) Q:'ERRSEQ!(IBCIPXT=1) D
|
---|
| 147 | . I $Y+2>MAXCNT D HEADER
|
---|
| 148 | . Q:IBCIPXT=1
|
---|
| 149 | . S IBCITXT=$G(^IBA(351.9,IBIFN,1,IBCIEMN,1,ERRSEQ,0))
|
---|
| 150 | . I ERRSEQ=1 W ?10,"CM Error Message: "
|
---|
| 151 | . I $Y+1>MAXCNT,IBCIPXT=0 D HEADER
|
---|
| 152 | . W ?28,IBCITXT,!
|
---|
| 153 | W !
|
---|
| 154 | Q
|
---|
| 155 | COMM ; print CM user comments these comments are keyed by the user
|
---|
| 156 | Q:'$D(^IBA(351.9,IBIFN,2,0))
|
---|
| 157 | I $Y+2>MAXCNT,IBCIPXT=0 D HEADER
|
---|
| 158 | Q:IBCIPXT=1
|
---|
| 159 | W ?10,$$CMTINFO^IBCIUT5(IBIFN),!
|
---|
| 160 | S IBCISEQ=0 F S IBCISEQ=$O(^IBA(351.9,IBIFN,2,IBCISEQ)) Q:'IBCISEQ!(IBCIPXT=1) D
|
---|
| 161 | . S IBCITXT=$G(^IBA(351.9,IBIFN,2,IBCISEQ,0))
|
---|
| 162 | . I $Y+1>MAXCNT,IBCIPXT=0 D HEADER
|
---|
| 163 | . Q:IBCIPXT=1
|
---|
| 164 | . W ?28,IBCITXT,!
|
---|
| 165 | W !
|
---|
| 166 | Q
|
---|
| 167 | LINE ; print report detail line
|
---|
| 168 | Q:IBCIPXT=1
|
---|
| 169 | I $Y+1>MAXCNT,IBCIPXT=0 D HEADER
|
---|
| 170 | I IBCIPGCT=0,IBCIPXT=0 D HEADER D HEAD2
|
---|
| 171 | Q:IBCIPXT=1
|
---|
| 172 | W ?1,IBCI12_"*"_IBCI11,?8,IBCI1,?19,$E(NAME,1,23),?44,$E(IBCI2,6,9)
|
---|
| 173 | W ?50,IBCIDT,?60,$E(IBCI4,1,6),?68,$E(IBCI5,1,6),?76,$E(IBCI6,1,6)
|
---|
| 174 | W ?84,IBCI10,?102,IBCI7,?108,$J($FN(IBCI8,",",0),6),?116,IBCIX,!
|
---|
| 175 | Q
|
---|
| 176 | XIT ; one exit point
|
---|
| 177 | Q
|
---|