| 1 | IBTRD ;ALB/AAS - CLAIMS TRACKING - DENIAL/ APPEALS ; 10-AUG-1993 | 
|---|
| 2 | ;;2.0; INTEGRATED BILLING ;**1,199**; 21-MAR-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | % ; | 
|---|
| 6 | EN ; -- main entry point for IBT APPEAL/DENAIL EDITOR | 
|---|
| 7 | I '$D(DT) D DT^DICRW | 
|---|
| 8 | K XQORS,VALMEVL,IBTRD,DFN,IBCNS,IBTRN,IBTRV,IBTRC,IBFASTXT,VALMQUIT | 
|---|
| 9 | D ASK | 
|---|
| 10 | G:$D(VALMQUIT) ENQ | 
|---|
| 11 | I IBTRD["DPT(" S IBTYPE="P",DFN=+IBTRD D EN^VALM("IBT APPEAL/DENIAL EDITOR") G ENQ | 
|---|
| 12 | I IBTRD["DIC(" S IBTYPE="I",IBCNS=+IBTRD D EN^VALM("IBT APPEAL/DENIAL INS EDITOR") | 
|---|
| 13 | ENQ K XQORS,VALMEVL,IBTRD,DFN,IBCNS,IBTRN,IBTRV,IBTRC,IBFASTXT,VALMQUIT | 
|---|
| 14 | K IBAMT,IBAPR,IBADG,IBDA,IBDGCR,IBDGCRU1,IBDV,IBETYP,IBETYPD,IBI,IBICD,IBLCNT,IBSEL,IBT,IBTEXT,IBTNOD,IBTSAV,VAUTD | 
|---|
| 15 | K IBAPEAL,IBCDFN,IBCNT,IBDEN,IBDENIAL,IBDENIAL,IBPARNT,IBPEN,IBPENAL,IBTCOD,IBTRDD,IBTRSV,IBTYPE,VAINDT,VA,VALMBCK,OFFSET,I1,I3,IBNEW,IBDENT,IBOE,Z1,T,SDCNT | 
|---|
| 16 | D KVAR^VADPT | 
|---|
| 17 | Q | 
|---|
| 18 | ; | 
|---|
| 19 | HDR ; -- header code | 
|---|
| 20 | I $G(IBTYPE)="P" D HDRP | 
|---|
| 21 | I $G(IBTYPE)="I" D HDRI | 
|---|
| 22 | Q | 
|---|
| 23 | ; | 
|---|
| 24 | HDRI ; -- header code for by ins. co. | 
|---|
| 25 | S VALMHDR(1)="Denials and Appeals for: "_$P(^DIC(36,+IBCNS,0),"^") | 
|---|
| 26 | S VALMHDR(2)=" " | 
|---|
| 27 | Q | 
|---|
| 28 | ; | 
|---|
| 29 | HDRP ; -- header code for by pat. | 
|---|
| 30 | D PID^VADPT | 
|---|
| 31 | S VALMHDR(1)="Denials and Appeals for: "_$$PT^IBTUTL1(DFN) | 
|---|
| 32 | S VALMHDR(2)=" " | 
|---|
| 33 | Q | 
|---|
| 34 | ; | 
|---|
| 35 | INIT ; -- init variables and list array | 
|---|
| 36 | S U="^",VALMCNT=0,VALMBG=1 | 
|---|
| 37 | K ^TMP("IBTRC",$J),^TMP("IBTRCDX",$J) | 
|---|
| 38 | K I,X,XQORNOD,DA,DR,DIE,DNM,DQ,IBTRC | 
|---|
| 39 | I '$G(IBTRD),$G(DFN) S IBTRD=DFN_";DPT(" | 
|---|
| 40 | I '$G(IBTRD) S VALMQUIT="" | 
|---|
| 41 | S IBTRSV="" | 
|---|
| 42 | Q:$D(VALMQUIT) | 
|---|
| 43 | ; | 
|---|
| 44 | BLD ; -- build list | 
|---|
| 45 | K ^TMP("IBTRD",$J),^TMP("IBTRDDX",$J) | 
|---|
| 46 | N IBI,J,IBTRC,IBTRCD,IBTRCD1,IBTRN | 
|---|
| 47 | I IBTRD["DPT(" S IBTYPE="P",DFN=+IBTRD D BLDP | 
|---|
| 48 | I IBTRD["DIC(" S IBTYPE="I",IBCNS=+IBTRD D BLDI | 
|---|
| 49 | Q | 
|---|
| 50 | ; | 
|---|
| 51 | BLDI ; -- Build list of appeals/denials by ins. co. | 
|---|
| 52 | D HDRI | 
|---|
| 53 | S (IBTRC,IBCNT,VALMCNT)=0 | 
|---|
| 54 | S IBDEN=$O(^IBE(356.7,"ACODE",20,0)) | 
|---|
| 55 | S IBTRC=0 F  S IBTRC=$O(^IBT(356.2,"AIACT",IBCNS,IBDEN,IBTRC)) Q:'IBTRC  D 1 | 
|---|
| 56 | S IBPEN=$O(^IBE(356.7,"ACODE",30,0)) | 
|---|
| 57 | S IBTRC=0 F  S IBTRC=$O(^IBT(356.2,"AIACT",IBCNS,IBPEN,IBTRC)) Q:'IBTRC  D 1 | 
|---|
| 58 | Q | 
|---|
| 59 | ; | 
|---|
| 60 | BLDP ; -- Build list of appeals/denials by patient | 
|---|
| 61 | D HDRP | 
|---|
| 62 | S (IBTRC,IBCNT,VALMCNT)=0 | 
|---|
| 63 | S VALMSG=$$MSG^IBTUTL3(DFN) | 
|---|
| 64 | S IBDEN=$O(^IBE(356.7,"ACODE",20,0)) | 
|---|
| 65 | S IBTRC=0 F  S IBTRC=$O(^IBT(356.2,"APACT",DFN,IBDEN,IBTRC)) Q:'IBTRC  D 1 | 
|---|
| 66 | S IBPEN=$O(^IBE(356.7,"ACODE",30,0)) | 
|---|
| 67 | S IBTRC=0 F  S IBTRC=$O(^IBT(356.2,"APACT",DFN,IBPEN,IBTRC)) Q:'IBTRC  D 1 | 
|---|
| 68 | Q | 
|---|
| 69 | 1 ; -- first add denial, then add appeal | 
|---|
| 70 | S IBTRN=$P(^IBT(356.2,+IBTRC,0),"^",2) | 
|---|
| 71 | S IBTRSV=+IBTRC | 
|---|
| 72 | D 2 | 
|---|
| 73 | N IBTRC,IBTRCD,IBTRCD1 | 
|---|
| 74 | S IBAPEAL=$O(^IBE(356.11,"ACODE",60,0)) ; find appeals | 
|---|
| 75 | S IBTRC=0 F  S IBTRC=$O(^IBT(356.2,"AP",IBTRSV,IBTRC)) Q:'IBTRC  D 2 | 
|---|
| 76 | ; | 
|---|
| 77 | Q | 
|---|
| 78 | 2 ; -- add items to list | 
|---|
| 79 | S IBTRCD=$G(^IBT(356.2,+IBTRC,0)) | 
|---|
| 80 | S IBTRCD1=$G(^IBT(356.2,+IBTRC,1)) | 
|---|
| 81 | Q:'+$P(IBTRCD,"^",19)  ;quit if inactive | 
|---|
| 82 | ; | 
|---|
| 83 | ; -- if not the denial, must be from parent | 
|---|
| 84 | I IBTRC'=IBTRSV&($P(IBTRCD,"^",18)'=IBTRSV) Q | 
|---|
| 85 | ; | 
|---|
| 86 | S IBCNT=IBCNT+1 | 
|---|
| 87 | W "." | 
|---|
| 88 | I IBTYPE="I" S DFN=$P(IBTRCD,"^",5) D PID^VADPT | 
|---|
| 89 | S X="" | 
|---|
| 90 | S X=$$SETFLD^VALM1(IBCNT,X,"NUMBER") | 
|---|
| 91 | ; | 
|---|
| 92 | I IBTYPE="I" D | 
|---|
| 93 | .S X=$$SETFLD^VALM1($P(^DPT(DFN,0),"^"),X,"PATIENT") | 
|---|
| 94 | .S X=$$SETFLD^VALM1(VA("BID"),X,"ID") | 
|---|
| 95 | ; | 
|---|
| 96 | I IBTYPE="P" D | 
|---|
| 97 | .S X=$$SETFLD^VALM1($P($G(^DIC(36,+$P(IBTRCD,"^",8),0)),"^"),X,"INS CO") | 
|---|
| 98 | .S X=$$SETFLD^VALM1($$GRP^IBCNS(+$P($G(^DPT(DFN,.312,+$P(IBTRCD1,"^",5),0)),"^",18)),X,"POLICY") | 
|---|
| 99 | ; | 
|---|
| 100 | S X=$$SETFLD^VALM1($P($$DAT1^IBOUTL(+IBTRCD,"2P")," "),X,"DATE") | 
|---|
| 101 | I $P(IBTRCD,"^",11) S X=$$SETFLD^VALM1($$EXPAND^IBTRE(356.2,.11,$P(IBTRCD,"^",11)),X,"ACTION") | 
|---|
| 102 | I $P(IBTRCD,"^",11)="" S X=$$SETFLD^VALM1($P($G(^IBE(356.11,+$P(IBTRCD,"^",4),0)),"^",3),X,"ACTION") | 
|---|
| 103 | ; | 
|---|
| 104 | S X=$$SETFLD^VALM1($P($G(^IBE(356.6,+$P(^IBT(356,+IBTRN,0),"^",18),0)),"^",2),X,"EVENT") | 
|---|
| 105 | S X=$$SETFLD^VALM1($$DAT1^IBOUTL(+$P(^IBT(356,+IBTRN,0),"^",6),"2P"),X,"EV DATE") | 
|---|
| 106 | S X=$$SETFLD^VALM1($$EXPAND^IBTRE(356.2,.04,$P(IBTRCD,"^",4)),X,"TYPE") | 
|---|
| 107 | S X=$$SETFLD^VALM1($J($$DAY^IBTUTL3($P(IBTRCD,"^",15),$P(IBTRCD,"^",16),IBTRN),3),X,"DAYS") | 
|---|
| 108 | S X=$$SETFLD^VALM1($$EXPAND^IBTRE(356,.31,$P(^IBT(356,IBTRN,0),"^",31)),X,"ROI") | 
|---|
| 109 | S X=$$SETFLD^VALM1($P(IBTRCD,"^",6),X,"CONTACT") | 
|---|
| 110 | S X=$$SETFLD^VALM1($P(IBTRCD,"^",7),X,"PHONE") | 
|---|
| 111 | S X=$$SETFLD^VALM1($P(IBTRCD,"^",9),X,"REF NO") | 
|---|
| 112 | D SET(X) | 
|---|
| 113 | Q | 
|---|
| 114 | ; | 
|---|
| 115 | SET(X) ; -- set arrays | 
|---|
| 116 | S VALMCNT=VALMCNT+1 | 
|---|
| 117 | S ^TMP("IBTRD",$J,VALMCNT,0)=X | 
|---|
| 118 | S ^TMP("IBTRD",$J,"IDX",VALMCNT,IBCNT)="" | 
|---|
| 119 | S ^TMP("IBTRDDX",$J,IBCNT)=VALMCNT_"^"_IBTRC | 
|---|
| 120 | Q | 
|---|
| 121 | HELP ; -- help code | 
|---|
| 122 | S X="?" D DISP^XQORM1 W !! | 
|---|
| 123 | Q | 
|---|
| 124 | ; | 
|---|
| 125 | EXIT ; -- exit code | 
|---|
| 126 | K ^TMP("IBTRD",$J),^TMP("IBTRDDX",$J),IBTRD | 
|---|
| 127 | D CLEAN^VALM10 | 
|---|
| 128 | Q | 
|---|
| 129 | ; | 
|---|
| 130 | ASK ; -- ask for patient or ins. co. | 
|---|
| 131 | N DIR | 
|---|
| 132 | S DIR(0)="350.9,4.02",DIR("A")="Select Patient Name or Insurance Co." | 
|---|
| 133 | N DPTNOFZY S DPTNOFZY=1  ;Suppress PATIENT file fuzzy lookups | 
|---|
| 134 | D ^DIR K DIR I $D(DIRUT) S VALMQUIT="" G ASKQ | 
|---|
| 135 | S IBTRD=Y | 
|---|
| 136 | I +IBTRD<1 S VALMQUIT="" | 
|---|
| 137 | ASKQ Q | 
|---|