| 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
 | 
|---|