| [623] | 1 | IBJTBA ;ALB/ARH - TPI BILL CHARGE INFO SCREEN ;01-MAR-1995 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**39,80,51,137,135,309,349**;21-MAR-94;Build 46 | 
|---|
|  | 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | EN ; -- main entry point for IBJ TP BILL CHARGES | 
|---|
|  | 6 | D EN^VALM("IBJT BILL CHARGES") | 
|---|
|  | 7 | Q | 
|---|
|  | 8 | ; | 
|---|
|  | 9 | HDR ; -- header code | 
|---|
|  | 10 | D HDR^IBJTU1(+IBIFN,+DFN,12) | 
|---|
|  | 11 | Q | 
|---|
|  | 12 | ; | 
|---|
|  | 13 | INIT ; -- init variables and list array | 
|---|
|  | 14 | N IBOK,IBEOBDET | 
|---|
|  | 15 | K ^TMP("IBJTBA",$J) N IBFT | 
|---|
|  | 16 | I '$G(DFN)!'$G(IBIFN) S VALMQUIT="" G INITQ | 
|---|
|  | 17 | S IBFT=+$P($G(^DGCR(399,+IBIFN,0)),U,19),IBOK=1 | 
|---|
|  | 18 | I $D(^IBM(361.1,"B",IBIFN))!$D(^IBM(361.1,"C",IBIFN)) D  G:'IBOK INITQ | 
|---|
|  | 19 | . S DIR("A")="DO YOU WANT ALL EEOB DETAILS?: ",DIR("B")="NO",DIR(0)="YA" | 
|---|
|  | 20 | . D FULL^VALM1 W ! D ^DIR K DIR | 
|---|
|  | 21 | . I $D(DTOUT)!$D(DUOUT) S IBOK=0 Q | 
|---|
|  | 22 | . S IBEOBDET=+Y | 
|---|
|  | 23 | D BLD | 
|---|
|  | 24 | INITQ Q | 
|---|
|  | 25 | ; | 
|---|
|  | 26 | MRA ; -- mra/eob | 
|---|
|  | 27 | N IBI,Z,IBSTR,IBSHEOB,IBCT | 
|---|
|  | 28 | S IBCT=0 | 
|---|
|  | 29 | S IBI=0 F  S IBI=$O(^IBM(361.1,"B",IBIFN,IBI)) Q:'IBI  S Z=+$O(^IBM(361.1,IBI,8,0)) I '$O(^(Z)) S IBCT=IBCT+1,IBSHEOB(IBI)=0  ; Entire EOB belongs to the bill | 
|---|
|  | 30 | S IBI=0 F  S IBI=$O(^IBM(361.1,"C",IBIFN,IBI)) Q:'IBI  S IBCT=IBCT+1,IBSHEOB(IBI)=1 ; EOB has been reapportioned at the site | 
|---|
|  | 31 | I 'IBCT D | 
|---|
|  | 32 | . S IBSTR=$$SETLN("No EEOB/MRA Information","",1,79) | 
|---|
|  | 33 | . S IBLN=$$SET(IBSTR,IBLN) | 
|---|
|  | 34 | I IBCT D | 
|---|
|  | 35 | . S Z=0 | 
|---|
|  | 36 | . S IBI=0 F  S IBI=$O(IBSHEOB(IBI)) Q:'IBI  S Z=Z+1 D SHEOB^IBJTBA1(IBI,+IBSHEOB(IBI),Z,IBCT) | 
|---|
|  | 37 | ; | 
|---|
|  | 38 | Q | 
|---|
|  | 39 | ; | 
|---|
|  | 40 | HELP ; -- help code | 
|---|
|  | 41 | S X="?" D DISP^XQORM1 W !! | 
|---|
|  | 42 | Q | 
|---|
|  | 43 | ; | 
|---|
|  | 44 | EXIT ; -- exit code | 
|---|
|  | 45 | K ^TMP("IBJTBA",$J) | 
|---|
|  | 46 | D CLEAR^VALM1 | 
|---|
|  | 47 | Q | 
|---|
|  | 48 | ; | 
|---|
|  | 49 | BLD ; charges, as they would display on the bill | 
|---|
|  | 50 | N IBXDATA,IBXSAVE | 
|---|
|  | 51 | I $P($G(^DGCR(399,+IBIFN,0)),U,19)=2 D H1500 Q | 
|---|
|  | 52 | D UB04 | 
|---|
|  | 53 | K ^TMP("IBXSAVE",$J) | 
|---|
|  | 54 | Q | 
|---|
|  | 55 | ; | 
|---|
|  | 56 | H1500 ; block 24 | 
|---|
|  | 57 | N X,IBI,IBJ,IBLN,IBX,IBSTR,IBLKLN,IBPFORM,IBLIN | 
|---|
|  | 58 | K ^TMP("IBXSAVE",$J) | 
|---|
|  | 59 | S IBLIN=$$BOX24D^IBCEF11("",1),IBLKLN=0,IBLN=1 | 
|---|
|  | 60 | Q:'$G(IBIFN)  K ^TMP("IBXDISP",$J) | 
|---|
|  | 61 | S IBPFORM=$S($P($G(^IBE(353,2,2)),U,8):$P(^(2),U,8),1:2),IBLN=1 | 
|---|
|  | 62 | S IBX=$$BILLN^IBCEFG0(1,"1^99",IBLIN,+IBIFN,IBPFORM) | 
|---|
|  | 63 | S IBI=$O(^TMP("IBXDISP",$J,""),-1) | 
|---|
|  | 64 | S IBJ="" F  S IBJ=$O(^TMP("IBXDISP",$J,IBI,IBJ),-1) Q:$S('IBJ:1,1:$TR($G(^(IBJ))," ")'="")  K ^TMP("IBXDISP",$J,IBI,IBJ) | 
|---|
|  | 65 | I '$O(^TMP("IBXDISP",$J,IBI,0)) S VALMSG="No charges or procedures defined.",VALMQUIT="" G H1500Q | 
|---|
|  | 66 | S IBI="" F  S IBI=$O(^TMP("IBXDISP",$J,IBI)) Q:'IBI  S IBJ=0 F  S IBJ=$O(^TMP("IBXDISP",$J,IBI,IBJ)) Q:'IBJ  D | 
|---|
|  | 67 | . S IBX=$G(^TMP("IBXDISP",$J,IBI,IBJ)),IBLN=$$SET(IBX,IBLN) | 
|---|
|  | 68 | K ^TMP("IBXDISP",$J) | 
|---|
|  | 69 | D COB,MRA | 
|---|
|  | 70 | I $$ISRX^IBCEF1(IBIFN) D RX | 
|---|
|  | 71 | I $$ISPROS^IBCEF1(IBIFN) D PROS | 
|---|
|  | 72 | S VALMCNT=IBLN-1 | 
|---|
|  | 73 | H1500Q Q | 
|---|
|  | 74 | ; | 
|---|
|  | 75 | UB04 ;form locator 42-49,   IBIFN required | 
|---|
|  | 76 | N X,Y,DIR,IBI,IBJ,IBX,IBLN,IBLC,IBLIN,IBPFORM,IBSTATE,IBCBILL,IBINPAT,IBQ,Z,Z0 | 
|---|
|  | 77 | K ^TMP("IBXSAVE",$J) | 
|---|
|  | 78 | S IBLIN=$$RCBOX^IBCEF11() | 
|---|
|  | 79 | S IBQ=0,IBLC=9 Q:'$G(IBIFN)  K ^TMP("IBXDISP",$J) | 
|---|
|  | 80 | S IBPFORM=$S($P($G(^IBE(353,3,2)),U,8):$P(^(2),U,8),1:3) | 
|---|
|  | 81 | S IBX=$$BILLN^IBCEFG0(1,"1^99",IBLIN,+IBIFN,IBPFORM) | 
|---|
|  | 82 | I '$O(^TMP("IBXDISP",$J,0)) S VALMSG="No charges defined.",VALMQUIT="" G UB04Q | 
|---|
|  | 83 | S Z="" F  S Z=$O(^TMP("IBXDISP",$J,1,Z),-1) Q:Z=""  S Z0=$G(^(Z)) Q:$TR(Z0," ")'=""  K ^(Z) | 
|---|
|  | 84 | S:Z ^TMP("IBXDISP",$J,1,Z+1)=" " | 
|---|
|  | 85 | S IBINPAT=$$INPAT^IBCEF(IBIFN,1) | 
|---|
|  | 86 | S IBSTATE=$G(^DGCR(399,IBIFN,"U")),IBCBILL=$G(^DGCR(399,IBIFN,0)) | 
|---|
|  | 87 | ; | 
|---|
|  | 88 | S (VALMCNT,IBLN)=1,IBLKLN=0 | 
|---|
|  | 89 | I +IBINPAT D  S IBLN=$$SET(IBSTR,IBLN) | 
|---|
|  | 90 | . S IBX=$P(IBSTATE,U,15),IBSTR=+IBX_" DAY"_$S(IBX'=1:"S",1:"")_" INPATIENT CARE" | 
|---|
|  | 91 | . S IBX=$$LOS^IBCU64(+IBSTATE,+$P(IBSTATE,U,2),+$P(IBCBILL,U,6)),IBX=IBX-$$LOS1^IBCU64(IBIFN) I IBX>0 S IBSTR=IBSTR_$J("Pass Days: "_IBX,55) | 
|---|
|  | 92 | ; | 
|---|
|  | 93 | S IBI="" F  S IBI=$O(^TMP("IBXDISP",$J,IBI)) Q:'IBI  S IBJ=0 F  S IBJ=$O(^TMP("IBXDISP",$J,IBI,IBJ)) Q:'IBJ  D | 
|---|
|  | 94 | . S IBX=$G(^TMP("IBXDISP",$J,IBI,IBJ)),IBLN=$$SET(IBX,IBLN) | 
|---|
|  | 95 | . I $E(IBX,1,3)="001" D COB | 
|---|
|  | 96 | ; | 
|---|
|  | 97 | K ^TMP("IBXDISP",$J) | 
|---|
|  | 98 | ; | 
|---|
|  | 99 | D MRA | 
|---|
|  | 100 | S VALMCNT=IBLN-1 | 
|---|
|  | 101 | UB04Q Q | 
|---|
|  | 102 | ; | 
|---|
|  | 103 | SETLN(STR,IBX,COL,WD) ; | 
|---|
|  | 104 | S IBX=$$SETSTR^VALM1(STR,IBX,COL,WD) | 
|---|
|  | 105 | Q IBX | 
|---|
|  | 106 | ; | 
|---|
|  | 107 | SET(STR,LN) ; set up TMP array with screen data (allows 2 blank lines, if not at end of array) | 
|---|
|  | 108 | N IBX,IBI I STR?80" " S IBLKLN=IBLKLN+1 G SETQ | 
|---|
|  | 109 | F IBI=1:1:IBLKLN D SET^VALM10(LN," ") S LN=LN+1 Q:IBI>1 | 
|---|
|  | 110 | D SET^VALM10(LN,STR) | 
|---|
|  | 111 | S LN=LN+1,IBLKLN=0 | 
|---|
|  | 112 | SETQ Q LN | 
|---|
|  | 113 | ; | 
|---|
|  | 114 | COB ; if there is an offset or a secondary/tertiary payer add it to the display, with ins co, and prior bill # | 
|---|
|  | 115 | ; IBIFN and IBLN must exist upon entry, IBLN is updated with new line count | 
|---|
|  | 116 | N IBM,IBM1,IBI,IBJ,IBD,IBSTR,IBCU2,IBCU1 Q:'$G(IBIFN) | 
|---|
|  | 117 | S IBM=$G(^DGCR(399,IBIFN,"M")),IBM1=$G(^DGCR(399,IBIFN,"M1")) | 
|---|
|  | 118 | S IBCU2=$G(^DGCR(399,IBIFN,"U2")),IBCU1=$G(^DGCR(399,IBIFN,"U1")) | 
|---|
|  | 119 | S IBJ=$P($G(^DGCR(399,IBIFN,0)),U,21),IBJ=$S(IBJ="P":3,IBJ="S":3,IBJ="T":3,1:0),IBSTR="" | 
|---|
|  | 120 | I +$P(IBM,U,2)!(+$P(IBM,U,3)) F IBI=1:1:IBJ I +$P(IBM,U,IBI) D  S IBLN=$$SET(IBSTR,IBLN) | 
|---|
|  | 121 | . I IBSTR="" S IBLN=$$SET("",IBLN) | 
|---|
|  | 122 | . S IBD=$S(IBI=1:"Primary",IBI=2:"Secondary",1:"Tertiary")_": " S IBSTR=$$SETLN(IBD,"",5,11) | 
|---|
|  | 123 | . S IBD=$P($G(^DIC(36,+$P(IBM,U,IBI),0)),U,1) S IBSTR=$$SETLN(IBD,IBSTR,17,25) | 
|---|
|  | 124 | . I $P(IBCU2,U,(IBI+3))'="" S IBD=$J(+$P(IBCU2,U,(IBI+3)),9,2) S IBSTR=$$SETLN(IBD,IBSTR,44,11) | 
|---|
|  | 125 | . I $P(IBM1,U,(IBI+4))'="" S IBD=$$BN1^PRCAFN(+$P(IBM1,U,(IBI+4))) S IBSTR=$$SETLN(IBD,IBSTR,60,11) | 
|---|
|  | 126 | I +$P(IBCU1,U,2) D  S IBLN=$$SET(IBSTR,IBLN) | 
|---|
|  | 127 | . I IBSTR="" S IBLN=$$SET("",IBLN) | 
|---|
|  | 128 | . S IBD="Offset: " S IBSTR=$$SETLN(IBD,"",5,11) | 
|---|
|  | 129 | . S IBD=$P(IBCU1,U,3) S IBSTR=$$SETLN(IBD,IBSTR,17,25) | 
|---|
|  | 130 | . S IBD=$J($P(IBCU1,U,2),9,2) S IBSTR=$$SETLN(IBD,IBSTR,44,11) | 
|---|
|  | 131 | . S IBD=$P(IBCU1,U,1)-$P(IBCU1,U,2),IBD="Billed: "_$J(IBD,0,2) S IBSTR=$$SETLN(IBD,IBSTR,60,17) | 
|---|
|  | 132 | Q | 
|---|
|  | 133 | ; | 
|---|
|  | 134 | RX ;RX refill info for CMS-1500 TPJI display | 
|---|
|  | 135 | N Z,Z0,Z1,IBSPC,IBD,IBI,IBSTR,IBARRAY,IBRXX | 
|---|
|  | 136 | S IBLN=IBLN+1 | 
|---|
|  | 137 | S IBSPC=$J("",5) | 
|---|
|  | 138 | D SET^IBCSC5A(IBIFN,.IBARRAY) | 
|---|
|  | 139 | I $D(IBARRAY) D | 
|---|
|  | 140 | . S (Z,Z0)=0 F  S Z0=$O(IBARRAY(Z0)) Q:Z0=""  S Z1=0 F  S Z1=$O(IBARRAY(Z0,Z1)) Q:'Z1  S Z=Z+1 S IBXDATA(Z)=$$DAT1^IBOUTL(Z1)_U_$G(IBARRAY(Z0,Z1)) | 
|---|
|  | 141 | S IBD=$$SET("",IBLN) | 
|---|
|  | 142 | S IBD="PRESCRIPTION REFILLS: (For TPJI display only)" | 
|---|
|  | 143 | S IBSTR=$$SETLN(IBD,"",1,79),IBLN=$$SET(IBSTR,IBLN) | 
|---|
|  | 144 | S IBI=0 F  S IBI=$O(IBXDATA(IBI)) Q:IBI=""  D | 
|---|
|  | 145 | . S IBRXX=$G(IBXDATA(IBI)) | 
|---|
|  | 146 | . D ZERO^IBRXUTL($P(IBRXX,U,3)) | 
|---|
|  | 147 | . S IBD=$J($P(IBRXX,U,7),9,2)_IBSPC_$P(IBRXX,U)_IBSPC_$G(^TMP($J,"IBDRUG",+$P(IBRXX,U,3),.01)) | 
|---|
|  | 148 | . K ^TMP($J,"IBDRUG") | 
|---|
|  | 149 | . S IBSTR=$$SETLN(IBD,"",1,79),IBLN=$$SET(IBSTR,IBLN) | 
|---|
|  | 150 | . S IBD="QTY: "_$P(IBRXX,U,5)_" for "_$P(IBRXX,U,4)_" days supply "_"NDC# "_$P(IBRXX,U,6) | 
|---|
|  | 151 | . S IBSTR=$$SETLN(IBD,"",23,79),IBLN=$$SET(IBSTR,IBLN) | 
|---|
|  | 152 | Q | 
|---|
|  | 153 | ; | 
|---|
|  | 154 | PROS ;prosthetic info for CMS-1500 TPJI display | 
|---|
|  | 155 | N Z,Z0,Z1,IBARRAY,IBSPC,IBD,IBI,IBSTR | 
|---|
|  | 156 | S IBSPC=$J("",10),IBLN=IBLN+1 | 
|---|
|  | 157 | D SET^IBCSC5B(IBIFN,.IBARRAY) | 
|---|
|  | 158 | I $D(IBARRAY) D | 
|---|
|  | 159 | . S (Z,Z0)=0 F  S Z0=$O(IBARRAY(Z0)) Q:Z0=""  S Z1=0 F  S Z1=$O(IBARRAY(Z0,Z1)) Q:'Z1  S Z=Z+1,IBXDATA(Z)=$$DAT1^IBOUTL(Z0)_U_$E($P($$PIN^IBCSC5B(Z1),U,2),1,39) | 
|---|
|  | 160 | S IBD=$$SET("",IBLN) | 
|---|
|  | 161 | S IBD="PROSTHETIC REFILLS: (For TPJI display only)" | 
|---|
|  | 162 | S IBSTR=$$SETLN(IBD,"",1,79),IBLN=$$SET(IBSTR,IBLN) | 
|---|
|  | 163 | S IBI=0 F  S IBI=$O(IBXDATA(IBI)) Q:IBI=""  D | 
|---|
|  | 164 | . S IBD=$P(IBXDATA(IBI),U)_IBSPC_$P(IBXDATA(IBI),U,2) | 
|---|
|  | 165 | . S IBSTR=$$SETLN(IBD,"",1,79),IBLN=$$SET(IBSTR,IBLN) | 
|---|
|  | 166 | Q | 
|---|
|  | 167 | ; | 
|---|