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