| 1 | IBTRE6 ;ALB/AAS - CLAIMS TRACKING OUTPUT CLIN DATA ;2-SEP-1993 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**210**;21-MAR-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | ADMDIAG(IBTRN) ; -- output admitting diagnosis (inpatient) | 
|---|
| 6 | ; | 
|---|
| 7 | N IBRES,IBDX,X | 
|---|
| 8 | S IBRES="" | 
|---|
| 9 | I '$G(IBTRN) G ADMDQ | 
|---|
| 10 | S IBETYP=$$TRTP^IBTRE1(IBTRN) I IBETYP>1 G ADMDQ | 
|---|
| 11 | S IBDX=+$O(^IBT(356.9,"ADG",+$P(^IBT(356,+IBTRN,0),"^",5),0)) | 
|---|
| 12 | I $D(VAIN(9)) S IBRES=VAIN(9) G ADMDQ | 
|---|
| 13 | N VAIN,VAINDT,VA200 | 
|---|
| 14 | S VAINDT=$P($G(^IBT(356,+IBTRN,0)),U,6) | 
|---|
| 15 | S VA200="" D INP^VADPT | 
|---|
| 16 | S IBRES=VAIN(9) | 
|---|
| 17 | ADMDQ Q IBRES | 
|---|
| 18 | ; | 
|---|
| 19 | PDIAG(IBTRN) ; -- return primary diagnosis (inpatient) | 
|---|
| 20 | N IBRES,IBDX | 
|---|
| 21 | S IBRES="" | 
|---|
| 22 | I '$G(IBTRN) G PDIAGQ | 
|---|
| 23 | S IBDX=+$G(^IBT(356.9,+$O(^IBT(356.9,"ATP",+$P(^IBT(356,+IBTRN,0),"^",5),1,0)),0)) | 
|---|
| 24 | S IBRES=$$DIAG(IBDX,1,$$TRNDATE^IBACSV(IBTRN)) | 
|---|
| 25 | PDIAGQ Q IBRES | 
|---|
| 26 | ; | 
|---|
| 27 | SDIAG ; -- return secondary diagnosis (inpatient | 
|---|
| 28 | Q | 
|---|
| 29 | ; | 
|---|
| 30 | ODIAG ; -- return outpatient diagnosis | 
|---|
| 31 | Q | 
|---|
| 32 | ; | 
|---|
| 33 | DIAG(IBDX,IBTXT,IBDT) ; -- Expand diagnosis from pointer | 
|---|
| 34 | ; -- input IBDX  = pointer to diag | 
|---|
| 35 | ;          IBTXT = if want text added (zero = number only) | 
|---|
| 36 | N IBRES,IBZ | 
|---|
| 37 | I '$G(IBDX) Q "" | 
|---|
| 38 | S IBZ=$$ICD9^IBACSV(+IBDX,$G(IBDT)) I IBZ="" Q "" | 
|---|
| 39 | S IBRES=$P(IBZ,U) | 
|---|
| 40 | I $G(IBTXT) S IBRES=IBRES_" - "_$P(IBZ,U,3) | 
|---|
| 41 | Q IBRES | 
|---|
| 42 | ; | 
|---|
| 43 | ; | 
|---|
| 44 | APROV(IBTRN) ; -- return  provider (inpatient) | 
|---|
| 45 | ; | 
|---|
| 46 | N X S X="" | 
|---|
| 47 | I '$G(IBTRN) G APROVQ | 
|---|
| 48 | S X=$O(^IBT(356.94,"ATP",+$P(^IBT(356,+IBTRN,0),"^",5),2,0)) I X S X=$P($G(^IBT(356.94,+X,0)),"^",3) G APROVQ | 
|---|
| 49 | S X=+$O(^IBT(356.94,"ATP",+$P(^IBT(356,+IBTRN,0),"^",5),1,0)) I X S X=$P($G(^IBT(356.94,+X,0)),"^",3) G APROVQ | 
|---|
| 50 | I $D(VAIN(2)) S X=VAIN(2) I 'X S X=$G(VAIN(11)) | 
|---|
| 51 | I '$D(VAIN(2)) D | 
|---|
| 52 | .N VAIN,VAINDT | 
|---|
| 53 | .S VAINDT=$P(^IBT(356,IBTRN,0),U,6) | 
|---|
| 54 | .S VA200="" D INP^VADPT | 
|---|
| 55 | .S X=VAIN(2) | 
|---|
| 56 | .I 'X S X=VAIN(11) | 
|---|
| 57 | APROVQ Q $P($G(^VA(200,+X,0)),"^") | 
|---|
| 58 | ; | 
|---|
| 59 | ATTEND ; -- return attendings (inpatient) | 
|---|
| 60 | Q | 
|---|
| 61 | ; | 
|---|
| 62 | PROV ; -- return providers (inpatient) | 
|---|
| 63 | Q | 
|---|
| 64 | ; | 
|---|
| 65 | OPROV ; -- returns outpatient providers | 
|---|
| 66 | Q | 
|---|
| 67 | ; | 
|---|
| 68 | PROC(IBPR,IBTXT) ; -- Expand procedure from pointer | 
|---|
| 69 | ; input IBPR=proc^^date (format of ^IBT(356.91,IEN,0)) | 
|---|
| 70 | ;       IBTXT = if want text added (zero = number only) | 
|---|
| 71 | N IBRES,IBZ | 
|---|
| 72 | I '$G(Z) S Z=1 ; what is that? | 
|---|
| 73 | I '$G(IBPR) Q "" | 
|---|
| 74 | S IBZ=$$ICD0^IBACSV(+IBPR,$P(IBPR,U,3)) | 
|---|
| 75 | S IBRES=$P(IBZ,U) | 
|---|
| 76 | I $G(IBTXT),IBZ'="" S IBRES=IBRES_" - "_$P(IBZ,U,4) | 
|---|
| 77 | Q IBRES | 
|---|
| 78 | ; | 
|---|
| 79 | ; | 
|---|
| 80 | OPROC ; -- outpatient procedures | 
|---|
| 81 | Q | 
|---|
| 82 | ; | 
|---|
| 83 | IPROC ; -- inpatient procedures | 
|---|
| 84 | Q | 
|---|
| 85 | ; | 
|---|
| 86 | LISTP(IBTRN,IBXY) ; -- return last y  procedures for a tracking entry | 
|---|
| 87 | ; -- input  ibtrn = tracking file pointer | 
|---|
| 88 | ; -- output array of procedure by date - ibxy(date)=procedure node | 
|---|
| 89 | ; | 
|---|
| 90 | N IBDGPM,IBDT,IBDA,IBX,IBCNT | 
|---|
| 91 | S (IBX,IBDT)="",IBXY=0 | 
|---|
| 92 | I '$G(IBTRN) G LISTPQ | 
|---|
| 93 | S IBDGPM=$P($G(^IBT(356,IBTRN,0)),"^",5) | 
|---|
| 94 | Q:'IBDGPM | 
|---|
| 95 | F  S IBDT=$O(^IBT(356.91,"APP",IBDGPM,IBDT)) Q:'IBDT  S IBDA="" F  S IBDA=$O(^IBT(356.91,"APP",IBDGPM,IBDT,IBDA)) Q:'IBDA  D | 
|---|
| 96 | .S IBX(-IBDT,IBDA)=$G(^IBT(356.91,IBDA,0)) | 
|---|
| 97 | ; | 
|---|
| 98 | S IBDT="" F  S IBDT=$O(IBX(IBDT)) Q:'IBDT  S IBDA=0 F  S IBDA=$O(IBX(IBDT,IBDA)) Q:'IBDA  D | 
|---|
| 99 | .S IBXY=IBXY+1 | 
|---|
| 100 | .S IBXY(IBXY)=IBX(IBDT,IBDA) | 
|---|
| 101 | LISTPQ Q | 
|---|
| 102 | ; | 
|---|
| 103 | LSTPDG(X,IBDT,Y) ; -- return current diagnosis for a tracking entry | 
|---|
| 104 | ; -- input      X = tracking file pointer | 
|---|
| 105 | ;            ibdt = date for current diagnosis (null = last) | 
|---|
| 106 | ;               y = 1= primary (default) | 
|---|
| 107 | ;                   2= secondary | 
|---|
| 108 | ; | 
|---|
| 109 | N IBY,IBX S (IBY,IBX)="" | 
|---|
| 110 | I '$G(X) G LSTPDQ | 
|---|
| 111 | S:'$G(IBDT) IBDT=DT S IBDT=-(IBDT+.9) | 
|---|
| 112 | S:'$G(Y) Y=1 I Y'=1,Y'=2 S Y=1 | 
|---|
| 113 | F  S IBDT=$O(^IBT(356.9,"APD",X,IBDT)) Q:'IBDT!($G(IBY))  S IBDA="" F  S IBDA=$O(^IBT(356.9,"APD",X,IBDT,IBDA)) Q:'IBDA!($G(IBY))  D | 
|---|
| 114 | .I $P(^IBT(356.9,IBDA,0),U,4)=Y S IBY=+^(0) | 
|---|
| 115 | LSTPDQ Q IBY | 
|---|
| 116 | ; | 
|---|
| 117 | DTCHK(DA,X) ; -- input transform for 356.94;.01.  date not before admission or after discharge | 
|---|
| 118 | N IBTRN,IBOK,IBCDT | 
|---|
| 119 | S IBOK=1 | 
|---|
| 120 | G:'DA!($G(X)<1) DTCHKQ | 
|---|
| 121 | S IBTRN=+$O(^IBT(356,"AD",+$P(^IBT(356.94,DA,0),"^",2),0)) | 
|---|
| 122 | G:'IBTRN DTCHKQ | 
|---|
| 123 | S IBCDT=$$CDT^IBTODD1(IBTRN) | 
|---|
| 124 | I X<$P(+IBCDT,".") S IBOK=0 G DTCHKQ ;before adm | 
|---|
| 125 | I $P(IBCDT,"^",2),X>$P(IBCDT,"^",2) S IBOK=0 G DTCHKQ ; after disch | 
|---|
| 126 | I X>$$FMADD^XLFDT(DT,7) S IBOK=0 G DTCHKQ | 
|---|
| 127 | ; | 
|---|
| 128 | DTCHKQ Q IBOK | 
|---|