| 1 | IBOHLD2 ;ALB/CJM  -  REPORT OF CHARGES ON HOLD W/INS ;MAR 6,1991 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**70,95,133,153,347**;21-MAR-94;Build 24 | 
|---|
| 3 | REPORT ; | 
|---|
| 4 | N IBQUIT,IBPAGE,IBNOW,IBLINE,IBLINE2,IBCRT,IBBOT,DFN,IBNAME,IBN | 
|---|
| 5 | S IBCRT=0,IBBOT=7,IBQUIT=0 I $E(IOST,1,2)="C-" S IBCRT=1,IBBOT=7 | 
|---|
| 6 | S IBLINE="",$P(IBLINE,"=",86)="||",IBLINE=IBLINE_$E(IBLINE,1,45) | 
|---|
| 7 | S IBLINE2="",$P(IBLINE2,"-",75)="--" | 
|---|
| 8 | D NOW^%DTC S Y=X X ^DD("DD") S IBNOW=Y | 
|---|
| 9 | I IBCRT W @IOF | 
|---|
| 10 | LOOP ; | 
|---|
| 11 | S IBPAGE=1 D HEADER Q:IBQUIT | 
|---|
| 12 | S IBNAME="" F  S IBNAME=$O(^TMP($J,"HOLD",IBNAME)) Q:IBNAME=""!(IBQUIT)  S DFN=0 F  S DFN=$O(^TMP($J,"HOLD",IBNAME,DFN)) Q:'DFN!(IBQUIT)  D | 
|---|
| 13 | .D PRNTPAT,PRNTINS W:IBII ?35,IBLINE2,! Q:IBQUIT  S IBN=0 F  S IBN=$O(^TMP($J,"HOLD",IBNAME,DFN,IBN)) Q:'IBN!(IBQUIT)  D | 
|---|
| 14 | ..D PRNTCHG,PRNTBILL:'IBQUIT | 
|---|
| 15 | Q | 
|---|
| 16 | PRNTBILL ; prints bills for a charge | 
|---|
| 17 | N IB,IB0,IBSTAT,IBCHG,IBPD,C,Y,I,IBT | 
|---|
| 18 | D:$Y+IBBOT>IOSL HEADER Q:IBQUIT | 
|---|
| 19 | S IB="" F I=1:1 S IB=$O(^TMP($J,"HOLD",IBNAME,DFN,IBN,IB)) W:'IB&(I<2) ?85,"||",! Q:'IB!(IBQUIT)  D | 
|---|
| 20 | .W ?85,"||" | 
|---|
| 21 | .S IB0=$G(^DGCR(399,IB,0)) Q:IB0="" | 
|---|
| 22 | .W ?88,$P(IB0,"^",1) ; bill # | 
|---|
| 23 | .S IBSTAT=$$STA^PRCAFN(IB) | 
|---|
| 24 | .W:+IBSTAT>0 ?97,$E($P(IBSTAT,"^",2),1,14) | 
|---|
| 25 | .S IBT=$J((+^DGCR(399,IB,"U1")-$P(^("U1"),"^",2)),9,2) | 
|---|
| 26 | .W ?112,IBT ; total charges | 
|---|
| 27 | .S IBPD=$$TPR^PRCAFN(IB) S:IBPD<0 IBPD="" S IBPD=$J(IBPD,9,2) W ?123,IBPD,! D:$Y+IBBOT>IOSL HEADER | 
|---|
| 28 | Q | 
|---|
| 29 | PRNTPAT ; prints patient data | 
|---|
| 30 | N VAERR,VADM,IBSSN D DEM^VADPT S:'VAERR IBSSN=VA("BID") ; pt id,brief | 
|---|
| 31 | D:$Y+IBBOT>IOSL HEADER Q:IBQUIT | 
|---|
| 32 | W IBLINE,! | 
|---|
| 33 | W $E(IBNAME,1,20),?22,IBSSN | 
|---|
| 34 | W:IBII ?35,"Insurance Co.",?53,"Subscriber ID",?71,"Group",?88,"Eff Dt",?102,"Exp Dt",! | 
|---|
| 35 | Q | 
|---|
| 36 | PRNTINS ; prints insurance information | 
|---|
| 37 | Q:'$D(DFN)!(IBII=0) | 
|---|
| 38 | N X,IBINS,IBX | 
|---|
| 39 | D ALL^IBCNS1(DFN,"IBINS") | 
|---|
| 40 | D:$Y+IBBOT>IOSL HEADER Q:IBQUIT | 
|---|
| 41 | W IBLINE,! | 
|---|
| 42 | I '$D(IBINS) W ?35,"No Insurance Information" | 
|---|
| 43 | S X=0 F  S X=$O(IBINS(X)) Q:'X  S IBINS=IBINS(X,0) D | 
|---|
| 44 | .D:$Y+IBBOT>IOSL HEADER Q:IBQUIT | 
|---|
| 45 | .N COV,COVD,COVFN,IBCNT,LEDT,LIM,PLN,SP,X,X1,X2,Z0 Q:'$D(IBINS) | 
|---|
| 46 | .W ?36,$S($D(^DIC(36,+IBINS,0)):$E($P(^(0),"^",1),1,16),1:"UNKNOWN") | 
|---|
| 47 | .W ?54,$E($P(IBINS,"^",2),1,16) | 
|---|
| 48 | .W ?72,$E($$GRP($P(IBINS,"^",18)),1,10) S PLN=$P(IBINS,"^",18) | 
|---|
| 49 | .W ?88,$$DAT1^IBOUTL($P(IBINS,"^",8)),?102,$$DAT1^IBOUTL($P(IBINS,"^",4)) | 
|---|
| 50 | .I PLN="" W !,?38,"* No Group Plan Information for this Patient - Verify Insurance Info!",! Q | 
|---|
| 51 | .W !,?40,"Plan Coverage   Effective Date   Covered?     Limit Comments",! | 
|---|
| 52 | .W ?40,"-------------   --------------   --------     --------------",! | 
|---|
| 53 | .S LIM=0 F  S LIM=$O(^IBE(355.31,LIM)) Q:'LIM  S COV=$P($G(^(LIM,0)),U),IBCNT=0,LEDT="" F  S LEDT=$O(^IBA(355.32,"APCD",PLN,LIM,LEDT)) Q:$S(LEDT="":IBCNT,1:0)  D  Q:LEDT="" | 
|---|
| 54 | ..D:$Y+IBBOT>IOSL HEADER Q:IBQUIT | 
|---|
| 55 | ..S COVFN=+$O(^IBA(355.32,"APCD",PLN,LIM,+LEDT,"")),COVD=$G(^IBA(355.32,+COVFN,0)) | 
|---|
| 56 | ..I COVD="" W ?40,COV,?86,"BY DEFAULT",! Q | 
|---|
| 57 | ..S IBCNT=IBCNT+1 | 
|---|
| 58 | ..S X1="  "_$S(IBCNT=1:COV,1:"") ;Don't duplicate category | 
|---|
| 59 | ..S X2=$$PR(X1,18)_$$PR($$DAT1^IBOUTL($P(LEDT,"-",2)),16)_$$PR($S($P(COVD,U,4):$S($P(COVD,U,4)<2:"YES",$P(COVD,U,4)=2:"CONDITIONAL",1:"UNKNOWN"),1:"NO"),14) | 
|---|
| 60 | ..I '$O(^IBA(355.32,COVFN,2,0)) W ?40,X2,! Q | 
|---|
| 61 | ..S Z0=0 F  S Z0=$O(^IBA(355.32,COVFN,2,Z0)) Q:'Z0  S SP="" W ?40,$S(Z0=1:X2_$G(^IBA(355.32,COVFN,2,Z0,0)),1:$$PR(SP,48)_$G(^IBA(355.32,COVFN,2,Z0,0))),! | 
|---|
| 62 | Q | 
|---|
| 63 | GRP(IBCPOL) ; get group name/group policy | 
|---|
| 64 | N X,Y S X="" | 
|---|
| 65 | S X=$G(^IBA(355.3,+$G(IBCPOL),0)) | 
|---|
| 66 | S Y=$S($P(X,"^",4)'="":$P(X,"^",4),1:$P(X,"^",3)) | 
|---|
| 67 | I $P(X,"^",10) S Y="Ind Plan "_Y | 
|---|
| 68 | GRPQ Q Y | 
|---|
| 69 | PR(STR,LEN) ; pad right | 
|---|
| 70 | N B S STR=$E(STR,1,LEN),$P(B," ",LEN-$L(STR))=" " | 
|---|
| 71 | Q STR_$G(B) | 
|---|
| 72 | PRNTCHG ; prints a charge | 
|---|
| 73 | N IBACT,IBTYPE,IBBILL,IBFR,IBTO,IBCHG,IBND,IBND1 | 
|---|
| 74 | N IBRX,IBRXN,IBRF,IBRDT,IBX,IENS | 
|---|
| 75 | S IBND=$G(^IB(IBN,0)) | 
|---|
| 76 | S IBND1=$G(^IB(IBN,1)) | 
|---|
| 77 | S (IBRX,IBRXN,IBRF,IBRDT,IBX)=0 | 
|---|
| 78 | ; action id | 
|---|
| 79 | S IBACT=+IBND | 
|---|
| 80 | ; type | 
|---|
| 81 | S IBTYPE=$P(IBND,"^",3),IBTYPE=$P($G(^IBE(350.1,IBTYPE,0)),"^",1),IBTYPE=$S(IBTYPE["PSO NSC":"RXNSC",IBTYPE["PSO SC":"RX SC",1:$E(IBTYPE,4,7)) | 
|---|
| 82 | ; bill # | 
|---|
| 83 | S IBBILL=$P($P(IBND,"^",11),"-",2) | 
|---|
| 84 | ; rx info | 
|---|
| 85 | I $P(IBND,"^",4)["52:" S IBRXN=$P($P(IBND,"^",4),":",2),IBRX=$P($P(IBND,"^",8),"-"),IBRF=$P($P(IBND,"^",4),":",3) | 
|---|
| 86 | I $P(IBND,"^",4)["52:"  D | 
|---|
| 87 | .I +IBRF>0  D | 
|---|
| 88 | ..S IENS=+IBRF | 
|---|
| 89 | ..S IBRDT=$$SUBFILE^IBRXUTL(+IBRXN,+IENS,52,.01) | 
|---|
| 90 | .I +IBRF=0  D | 
|---|
| 91 | ..S IENS=+IBRXN | 
|---|
| 92 | ..S IBRDT=$$FILE^IBRXUTL(+IENS,22) | 
|---|
| 93 | S IBX=$$APPT^IBCU3(IBRDT,DFN) | 
|---|
| 94 | ; from/rx fill date | 
|---|
| 95 | S IBFR=$$DAT1^IBOUTL($S(IBRXN>0:IBRDT,1:$P(IBND,"^",15))) | 
|---|
| 96 | ; to date | 
|---|
| 97 | S IBTO=$$DAT1^IBOUTL($S($P(IBND,"^",15)'="":($P(IBND,"^",15)),1:$P(IBND1,"^",2))) | 
|---|
| 98 | ; charge$ | 
|---|
| 99 | S IBCHG=$J(+$P(IBND,"^",7),9,2) | 
|---|
| 100 | W ?29,IBACT,?39,IBTYPE,?46,IBBILL W:IBRX>0 ?55,"Rx #: "_IBRX_$S(IBRF>0:"("_IBRF_")",1:""),?85,"||",! | 
|---|
| 101 | W:IBX=1 ?54,"*" | 
|---|
| 102 | W ?55,IBFR,?66,IBTO,?75,IBCHG | 
|---|
| 103 | Q | 
|---|
| 104 | HEADER ; writes the report header | 
|---|
| 105 | Q:IBQUIT | 
|---|
| 106 | I IBCRT,$Y>1 D  Q:IBQUIT  ;F  Q:$Y>(IOSL-1)  W ! | 
|---|
| 107 | .W ! N T R "    Press RETURN to continue",T:DTIME I '$T!(T["^") S IBQUIT=1 Q | 
|---|
| 108 | I IBPAGE>1 W !,@IOF | 
|---|
| 109 | W ?53,"MEANS TEST CHARGES ON HOLD",?110,IBNOW,"  PAGE ",IBPAGE,!,"HELD CHARGES",?87,"CORRESPONDING THIRD PARTY BILLS",!,IBLINE | 
|---|
| 110 | W !,"Name",?22,"Pt.ID",?29,"Act.ID",?39,"Type",?46,"Bill#",?55,"Fr/Fl Dt",?66,"To/Rls Dt",?78,"Charge",?85,"||",?88,"Bill#",?97,"AR-Status",?115,"Charge",?128,"Paid" | 
|---|
| 111 | W !,IBLINE,! | 
|---|
| 112 | W ?20,"'*' = outpt visit on same day as Rx fill date",?85,"||",!,IBLINE,! | 
|---|
| 113 | S IBPAGE=IBPAGE+1 | 
|---|
| 114 | Q | 
|---|