| [613] | 1 | IBAMTEDU ;ALB/CPM - MEANS TEST BULLETIN UTILITIES ; 15-JUN-93 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**15,91,153**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | CHG(IBDAT) ; Any charges billed on or after IBDAT? | 
|---|
|  | 6 | ;  Input:  IBDAT  --  Date on or after which charges have been billed | 
|---|
|  | 7 | ; Output:    0    --  No charges billed | 
|---|
|  | 8 | ;            1    --  Charges were billed; IBARR contains array | 
|---|
|  | 9 | ;                      of those charges | 
|---|
|  | 10 | N IBFND,IBD,IBN,IBX,IBJOB,IBWHER K IBARR | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | ; - if the effective date of the test is today, cancel today's charges. | 
|---|
|  | 13 | I $P(IBDAT,".")=DT D CANC G CHGQ | 
|---|
|  | 14 | ; | 
|---|
|  | 15 | ; - find all charges which may need to be cancelled. | 
|---|
|  | 16 | S IBX="" F  S IBX=$O(^IB("AFDT",DFN,IBX)) Q:'IBX  S IBD=0 F  S IBD=$O(^IB("AFDT",DFN,IBX,IBD)) Q:'IBD  D | 
|---|
|  | 17 | .I $P($G(^IB(IBD,0)),"^",8)'["ADMISSION" D:-IBX'<IBDAT CHK(IBD) Q | 
|---|
|  | 18 | .S IBN=0 F  S IBN=$O(^IB("AF",IBD,IBN)) Q:'IBN  D CHK(IBN) | 
|---|
|  | 19 | CHGQ Q +$G(IBFND) | 
|---|
|  | 20 | ; | 
|---|
|  | 21 | CHK(IBN) ; Place charge into the array. | 
|---|
|  | 22 | ;  Input:  IBN   --  Charge to check | 
|---|
|  | 23 | N IBND,IBNDL,IBLAST | 
|---|
|  | 24 | S IBND=$G(^IB(IBN,0)) I $P(IBND,"^",15)<IBDAT G CHKQ | 
|---|
|  | 25 | S IBLAST=$$LAST^IBECEAU(+$P(IBND,"^",9)),IBNDL=$G(^IB(+IBLAST,0)) | 
|---|
|  | 26 | I $P($G(^IBE(350.1,+$P(IBNDL,"^",3),0)),"^",5)'=2,"^1^2^3^4^8^20^21^"[("^"_$P(IBNDL,"^",5)_"^") S IBARR(+$P(IBNDL,"^",14),IBLAST)="",IBFND=1 | 
|---|
|  | 27 | CHKQ Q | 
|---|
|  | 28 | ; | 
|---|
|  | 29 | CANC ; Cancel any charges for the patient for today. | 
|---|
|  | 30 | N IBD,IBN,IBCRES,IBFAC,IBSITE,IBSERV,IBDUZ | 
|---|
|  | 31 | Q:'$$CHECK^IBECEAU | 
|---|
|  | 32 | S IBCRES=+$O(^IBE(350.3,"B","MT STATUS CHANGED FROM YES",0)) | 
|---|
|  | 33 | S:'IBCRES IBCRES=22 S IBJOB=7,IBWHER=30,IBDUZ=DUZ | 
|---|
|  | 34 | S IBD=0 F  S IBD=$O(^IB("AFDT",DFN,-DT,IBD)) Q:'IBD  D | 
|---|
|  | 35 | .I $P($G(^IB(IBD,0)),"^",8)'["ADMISSION" D CANCH^IBECEAU4(IBD,IBCRES,1) Q | 
|---|
|  | 36 | .S IBN=0 F  S IBN=$O(^IB("AF",IBD,IBN)) Q:'IBN  D CANCH^IBECEAU4(IBN,IBCRES,1) | 
|---|
|  | 37 | Q | 
|---|
|  | 38 | ; | 
|---|
|  | 39 | ; | 
|---|
|  | 40 | EP(IBDAT) ; Any billable episodes of care since IBDAT? | 
|---|
|  | 41 | ;  Input:  IBDAT  --  Date on or after which patient received care | 
|---|
|  | 42 | ; Output:    0    --  No billable episodes found | 
|---|
|  | 43 | ;            1    --  Billable episodes were found; IBARR contains an | 
|---|
|  | 44 | ;                      array of those episodes | 
|---|
|  | 45 | ; | 
|---|
|  | 46 | N IBD,IBAD,IBNOW,IBEP,IBDT,IBI,IBPM,VA,VAIP,VAERR,IBVAL,IBCBK,IBZ,IBPB | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | ; - quit if the effective date of the test is today | 
|---|
|  | 49 | I $P(IBDAT,".")=DT G EPQ | 
|---|
|  | 50 | ; | 
|---|
|  | 51 | ; - find scheduled visits, stand-alone encounters and dispositions | 
|---|
|  | 52 | ;   on or after IBDAT from the outpatient encounters file | 
|---|
|  | 53 | D NOW^%DTC S IBNOW=% | 
|---|
|  | 54 | K IBARR,^TMP("IBOE",$J) | 
|---|
|  | 55 | S IBVAL("DFN")=DFN,IBVAL("BDT")=IBDAT,IBVAL("EDT")=IBNOW | 
|---|
|  | 56 | ;Consider only parent encounters | 
|---|
|  | 57 | S IBFILTER="" | 
|---|
|  | 58 | S IBCBK="I '$P(Y0,U,6) S ^TMP(""IBOE"",$J,Y)=Y0" | 
|---|
|  | 59 | D SCAN^IBSDU("PATIENT/DATE",.IBVAL,IBFILTER,IBCBK,1) K ^TMP("DIERR",$J) | 
|---|
|  | 60 | F IBZ=0,1,2,9,13 S IBCK(IBZ)="" | 
|---|
|  | 61 | S IBOE=0 F  S IBOE=$O(^TMP("IBOE",$J,IBOE)) Q:'IBOE  S IBOE0=$G(^(IBOE)) D | 
|---|
|  | 62 | . K IBPB | 
|---|
|  | 63 | . S IBEP=$$BILLCK(IBOE,IBOE0,.IBCK,.IBPB) | 
|---|
|  | 64 | . S IBZ=0 F  S IBZ=$O(IBPB(IBZ)) Q:'IBZ  D | 
|---|
|  | 65 | .. I IBZ=1 S IBARR(+IBOE0,"APP")=$P(IBOE0,U,4)_U_$P(IBOE0,U,10) | 
|---|
|  | 66 | .. I IBZ=2 S IBARR(IBOE0\1,"SC"_IBOE)=$P(IBOE0,U,3)_U_$P(IBOE0,U,10) | 
|---|
|  | 67 | .. I IBZ=3 S IBARR(+IBOE0,"R")=$P(IBPB(3),U,7) | 
|---|
|  | 68 | K ^TMP("IBOE",$J) | 
|---|
|  | 69 | ; | 
|---|
|  | 70 | ; - find admissions since IBDAT | 
|---|
|  | 71 | S VAIP("D")=IBDAT D IN5^VADPT I VAIP(13) S IBPM=$G(^DGPM(+VAIP(13),0)),IBARR(+IBPM,"ADM")=$P(IBPM,"^",6),IBEP=1 | 
|---|
|  | 72 | S IBD="" F  S IBD=$O(^DGPM("ATID1",DFN,IBD)) Q:'IBD!(9999999.999999-IBD<IBDAT)  S IBPM=$G(^DGPM(+$O(^(IBD,0)),0)),IBARR(+IBPM,"ADM")=$P(IBPM,"^",6),IBEP=1 | 
|---|
|  | 73 | ; | 
|---|
|  | 74 | EPQ Q +$G(IBEP) | 
|---|
|  | 75 | ; | 
|---|
|  | 76 | BILLCK(IBOE,IBOE0,IBCK,IBPB) ; Check for potentially billable outpt enctr | 
|---|
|  | 77 | ; IBOE = encounter ien in file 409.68 | 
|---|
|  | 78 | ; IBOE0 = encounter 0-node | 
|---|
|  | 79 | ; IBCK = array subscriptd by # that, if defined, specifies edit to check | 
|---|
|  | 80 | ;        and exclude if it doesn't pass it | 
|---|
|  | 81 | ;        (0) = check if pt claimed exposure | 
|---|
|  | 82 | ;        (1) = check if non-billable appt type for means test | 
|---|
|  | 83 | ;        (2) = check if non-count clinic | 
|---|
|  | 84 | ;        (3) = check if non-billable clinic | 
|---|
|  | 85 | ;        (4) = check if pt not Means Test copay pt | 
|---|
|  | 86 | ;        (5) = check if pt admitted by midnight same date | 
|---|
|  | 87 | ;        (6) = check if C&P exam same date | 
|---|
|  | 88 | ;        (7) = check if non-billable stop code (third party) | 
|---|
|  | 89 | ;        (8) = check if non-billable stop code (auto-biller) | 
|---|
|  | 90 | ;        (9) = check if disposition and application without exam | 
|---|
|  | 91 | ;       (10) = check if non-billable disposition | 
|---|
|  | 92 | ;       (11) = check if service connected (ck parent only) | 
|---|
|  | 93 | ;       (12) = check if non-billable clinic | 
|---|
|  | 94 | ;       (13) = check if appt status is set (cancelled/noshow/inpt/etc) | 
|---|
|  | 95 | ;       (13.1) = same as (13) except don't exclude if encounter status is non-count | 
|---|
|  | 96 | ;       (14) = check if non-billable appt type for report | 
|---|
|  | 97 | ; Returns IBPB = the # of the edit that failed | 
|---|
|  | 98 | ;         IBPB(1) = "" if valid appt | 
|---|
|  | 99 | ;         IBPB(2) = "" if valid add/edit stop code | 
|---|
|  | 100 | ;         IBPB(3) = 0-node of disposition file entry if valid disp | 
|---|
|  | 101 | ; Function returns true if potentially billable or false if not | 
|---|
|  | 102 | N DFN,IBAD,IBD,IBSRCE,QUIT | 
|---|
|  | 103 | S DFN=$P(IBOE0,U,2),IBSRCE=$P(IBOE0,U,8),IBD=IBOE0\1 | 
|---|
|  | 104 | I $D(IBCK(0))!($D(IBCK(11))) S QUIT=0 D  G:QUIT BILLCKQ | 
|---|
|  | 105 | . N Z | 
|---|
|  | 106 | . I $D(IBCK(11)),$P(IBOE0,U,6) D  Q:QUIT  ;Check parent encounter | 
|---|
|  | 107 | .. S Z=$$ENCL^IBAMTS2($P(IBOE0,U,6)) | 
|---|
|  | 108 | .. I $P(Z,U,3)=1 S QUIT=1,IBPB=11 | 
|---|
|  | 109 | . S Z=$$ENCL^IBAMTS2(IBOE) | 
|---|
|  | 110 | . I $D(IBCK(0)),Z[1 S QUIT=1,IBPB=0 Q | 
|---|
|  | 111 | . I $D(IBCK(11)),'$P(IBOE0,U,6),$P(Z,U,3)=1 S QUIT=1,IBPB=11 | 
|---|
|  | 112 | I $D(IBCK(4)),'$$BIL^DGMTUB(DFN,+IBOE0) S IBPB=4 G BILLCKQ | 
|---|
|  | 113 | I $D(IBCK(5)),$$INPT^IBAMTS1(DFN,IBD_.2359) S IBPB=5 G BILLCKQ | 
|---|
|  | 114 | I $D(IBCK(6)),$$CNP^IBECEAU(DFN,IBD) S IBPB=6 G BILLCKQ | 
|---|
|  | 115 | ; | 
|---|
|  | 116 | ; - Appointment or stop code | 
|---|
|  | 117 | I "12"[IBSRCE D  G BILLCKQ | 
|---|
|  | 118 | . I $D(IBCK(13))!($D(IBCK(13.1))),IBSRCE=1 D  Q:$G(IBPB) | 
|---|
|  | 119 | .. I '$$APPTCT^IBEFUNC(IBOE0),$S('$D(IBCK(13.1)):1,1:$P(IBOE0,U,12)'=12) S IBPB=13 | 
|---|
|  | 120 | . I $D(IBCK(14)),$$RPT^IBEFUNC(+$P(IBOE0,U,10),IBD) S IBPB=14 Q | 
|---|
|  | 121 | . I $D(IBCK(1)),$$IGN^IBEFUNC(+$P(IBOE0,U,10),IBD) S IBPB=1 Q | 
|---|
|  | 122 | . I $D(IBCK(2)),$$NCTCL^IBEFUNC(IBOE) S IBPB=2 Q | 
|---|
|  | 123 | . I $D(IBCK(3)),$$NBCL^IBEFUNC(+$P(IBOE0,U,4),IBD) S IBPB=3 Q | 
|---|
|  | 124 | . I $D(IBCK(7)),$$NBST^IBEFUNC(+$P(IBOE0,U,3),IBD) S IBPB=7 Q | 
|---|
|  | 125 | . I $D(IBCK(8)),$$NBCSC^IBEFUNC(+$P(IBOE0,U,3),IBD) S IBPB=8 Q | 
|---|
|  | 126 | . I $D(IBCK(12)),$$NBCT^IBEFUNC(+$P(IBOE0,U,4),IBD) S IBPB=12 Q | 
|---|
|  | 127 | . ; | 
|---|
|  | 128 | . S IBPB(IBSRCE)="" | 
|---|
|  | 129 | ; | 
|---|
|  | 130 | ; - Disposition | 
|---|
|  | 131 | S IBAD=$$DISND^IBSDU(IBOE,IBOE0) | 
|---|
|  | 132 | I $D(IBCK(9)),'$$DISCT^IBEFUNC(IBOE,IBOE0) S IBPB=9 G BILLCKQ | 
|---|
|  | 133 | I $D(IBCK(10)),$$NBDIS^IBEFUNC(+$P(IBAD,U,7),IBD) S IBPB=10 G BILLCKQ | 
|---|
|  | 134 | S IBPB(3)=IBAD | 
|---|
|  | 135 | ; | 
|---|
|  | 136 | BILLCKQ Q ($G(IBPB)="") | 
|---|
|  | 137 | ; | 
|---|