1 | IBTUTL1 ;ALB/AAS - CLAIMS TRACKING UTILITY ROUTINE ;21-JUN-93
|
---|
2 | ;;2.0;INTEGRATED BILLING;**13,223,249,292**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | OPT(DFN,IBETYP,IBTDT,ENCTR,IBRMARK,IBVSIT) ; -- add outpatient care entries
|
---|
6 | ; -- input dfn := patient pointer to 2
|
---|
7 | ; ibetyp := pointer to type entry in 356.6
|
---|
8 | ; ibtdt := episode date
|
---|
9 | ; enctr := pointer to opt. encounter file (optional)
|
---|
10 | ; ibrmark := text of reason not billable (optional)
|
---|
11 | ; ibvsit := pointer to visit file (optional)
|
---|
12 | ;
|
---|
13 | N X,Y,DA,DR,DIE,DIC,IBSCRN
|
---|
14 | S IBSCRN=0
|
---|
15 | ;Allow user inter-actions if not queued and IBTALK=1 or not exist.
|
---|
16 | I '$D(ZTQUEUED) D I IBSCRN G OPTSCRN
|
---|
17 | . I $D(IBTALK),'$G(IBTALK) Q
|
---|
18 | . I IBTDT<3060101 Q ;Don't use new code for claims prior to 1/1/2006
|
---|
19 | . S IBSCRN=1
|
---|
20 | I $G(IBETYP) S IBETYP=$O(^IBE(356.6,"AC",2,0))
|
---|
21 | I IBTDT<3060101 S X=$O(^IBT(356,"APTY",DFN,IBETYP,IBTDT,0)) I X S IBTRN=X G OPTQ ;Prevent duplicate date/time claims prior to 1/1/2006
|
---|
22 | ;Check for encounter already in claims tracking.
|
---|
23 | I $D(ENCTR),$D(^IBT(356,"AENC",+DFN,+ENCTR)) S IBTRN=$O(^IBT(356,"AENC",+DFN,+ENCTR,0)) G OPTQ
|
---|
24 | D ADDT^IBTUTL
|
---|
25 | S DA=IBTRN,DIE="^IBT(356,"
|
---|
26 | I IBTRN<1 G OPTQ
|
---|
27 | L +^IBT(356,+IBTRN):10 I '$T G OPTQ
|
---|
28 | S DR=".02////"_$G(DFN)_";.03////"_$G(IBVSIT)_";.04////"_$G(ENCTR)_";.06////"_+IBTDT_";.18////"_IBETYP_";.2////1;.24////"_$$INSURED^IBCNS1(DFN)_";1.01///NOW;1.02////"_DUZ_";.17////"_$$EABD^IBTUTL(IBETYP)
|
---|
29 | I $G(IBRMARK)'="" S DR=DR_";.19///"_IBRMARK
|
---|
30 | D ^DIE K DA,DR,DIE
|
---|
31 | L -^IBT(356,+IBTRN)
|
---|
32 | OPTQ Q
|
---|
33 | ;
|
---|
34 | REFILL(DFN,IBETYP,IBTDT,IBRXN,IBRXN1,IBRMARK,IBEABD) ; -- add refill
|
---|
35 | ; -- input dfn := patient pointer to 2
|
---|
36 | ; ibetyp := pointer to type entry in 356.6
|
---|
37 | ; ibtdt := episode date (refill date)
|
---|
38 | ; ibrxn := pointer to 52
|
---|
39 | ; ibrxn1 := refill multiple entry
|
---|
40 | ; ibrmark := non billable reason if unsure
|
---|
41 | ; ibeabd := optional, can specify an earliest auto bill date
|
---|
42 | ;
|
---|
43 | N X,Y,DA,DR,DIE,DIC
|
---|
44 | ;S X=$O(^IBT(356,"APTY",DFN,IBETYP,IBTDT,0)) I X S IBTRN=X G REFILLQ
|
---|
45 | S X=$O(^IBT(356,"ARXFL",IBRXN,IBRXN1,0)) I X S IBTRN=X G REFILLQ
|
---|
46 | D ADDT^IBTUTL
|
---|
47 | I IBTRN<1 G REFILLQ
|
---|
48 | S DA=IBTRN,DIE="^IBT(356,"
|
---|
49 | L +^IBT(356,+IBTRN):10 I '$T G REFILLQ
|
---|
50 | S DR=".02////"_$G(DFN)_";.06////"_+IBTDT_";.08////"_IBRXN_";.1////"_IBRXN1_";.18////"_IBETYP_";.2////1;.24////"_$$INSURED^IBCNS1(DFN)_";1.01///NOW;1.02////"_$S($G(IBDUZ):IBDUZ,1:DUZ)_";.17////"_$S($G(IBEABD):IBEABD,1:$$EABD^IBTUTL(IBETYP))
|
---|
51 | I $G(IBRMARK)'="" S DR=DR_";.19///"_IBRMARK
|
---|
52 | D ^DIE K DA,DR,DIE
|
---|
53 | L -^IBT(356,+IBTRN)
|
---|
54 | REFILLQ Q
|
---|
55 | ;
|
---|
56 | PRO(DFN,IBTDT,IBPRO,IBRMARK) ; -- add prosthetic entries
|
---|
57 | ; -- input dfn := patient pointer to 2
|
---|
58 | ; ibetyp := pointer to type entry in 356.6
|
---|
59 | ; ibtdt := episode date
|
---|
60 | ;
|
---|
61 | N X,Y,DA,DR,DIE,DIC,IBETYP
|
---|
62 | ;S IBETYP=$O(^IBE(356.6,"ACODE",4,0))
|
---|
63 | S IBETYP=$O(^IBE(356.6,"AC",3,0)) ;prosthetics type
|
---|
64 | S X=$O(^IBT(356,"APRO",IBPRO,0)) I X S IBTRN=X G PROQ
|
---|
65 | D ADDT^IBTUTL
|
---|
66 | I IBTRN<1 G PROQ
|
---|
67 | S DA=IBTRN,DIE="^IBT(356,"
|
---|
68 | L +^IBT(356,+IBTRN):10 I '$T G PROQ
|
---|
69 | S DR=".02////"_$G(DFN)_";.06////"_+IBTDT_";.09////"_IBPRO_";.18////"_IBETYP_";.2////1;.24////"_$$INSURED^IBCNS1(DFN)_";1.01///NOW;1.02////"_DUZ_";.17////"_$$EABD^IBTUTL(IBETYP)
|
---|
70 | I $G(IBRMARK)'="" S DR=DR_";.19///"_IBRMARK
|
---|
71 | D ^DIE K DA,DR,DIE
|
---|
72 | L -^IBT(356,+IBTRN)
|
---|
73 | PROQ Q
|
---|
74 | ;
|
---|
75 | PT(DFN) ; -- format patient name - last 4 for output
|
---|
76 | S Y="" I '$G(DFN) G PTQ
|
---|
77 | I '$D(VA("PID")) D PID^VADPT
|
---|
78 | S Y=$E($P($G(^DPT(DFN,0)),"^"),1,20)_" "_$E($G(^(0)),1)_VA("BID")
|
---|
79 | PTQ Q Y
|
---|
80 | ;
|
---|
81 | PRODATA(IBDA) ; -- return data from prosthetics file
|
---|
82 | N IBDA0,DA,DIC,DIE,DR
|
---|
83 | K IBRMPR ; only one array at a time
|
---|
84 | I '$G(IBDA) G PRODAQ
|
---|
85 | S IBDA0=$G(^RMPR(660,+IBDA,0))
|
---|
86 | G:IBDA0="" PRODAQ
|
---|
87 | DIQ S DIC="^RMPR(660,",DR=".01;1:5;7;10;12:17;24"
|
---|
88 | S DIQ="IBRMPR",DIQ(0)="E",DA=IBDA
|
---|
89 | D EN^DIQ1
|
---|
90 | PRODAQ Q
|
---|
91 | ;
|
---|
92 | OPTSCRN ; -- add outpatient care entries with user feedback
|
---|
93 | ; called from OPT^IBTUTL1 which has following inputs
|
---|
94 | ; -- input dfn := patient pointer to 2
|
---|
95 | ; ibetyp := pointer to type entry in 356.6
|
---|
96 | ; ibtdt := episode date
|
---|
97 | ; enctr := pointer to opt. encounter file (optional)
|
---|
98 | ; ibrmark := text of reason not billable (optional)
|
---|
99 | ; ibvsit := pointer to visit file (optional)
|
---|
100 | ;
|
---|
101 | N CNT,DIR,DIROUT,DIRUT,DTOUT,DUOUT,IB3560,IBACT,IBDATE,IBENC,IBETYPNM
|
---|
102 | N IBID,IBPATNM,IBQUIT,LINE,TEMP,TMP
|
---|
103 | ;If encounter passed in already exists in claims Tracking, remove it.
|
---|
104 | I $D(ENCTR),$D(^IBT(356,"AENC",+DFN,+ENCTR)) S ENCTR=""
|
---|
105 | I $G(IBETYP) S IBETYP=$O(^IBE(356.6,"AC",2,0))
|
---|
106 | S IBQUIT=0
|
---|
107 | I $O(^IBT(356,"APTY",DFN,IBETYP,IBTDT,0)) D I X S IBTRN=X G OPTSCRNQ
|
---|
108 | . S (CNT,LINE)=1,(TEMP,TMP,X)=""
|
---|
109 | . S Y=IBTDT D DD^%DT S IBDATE=$E(Y_" ",1,18) S Y=""
|
---|
110 | . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
|
---|
111 | . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
|
---|
112 | . S TMP("DIMSG",LINE)="There are match(es) for the episode date you have entered:",LINE=LINE+1
|
---|
113 | . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
|
---|
114 | . S TMP("DIMSG",LINE)=" EPISODE DATE PATIENT NAME CT ID TYPE ENCOUNTER ACTIVE",LINE=LINE+1
|
---|
115 | . S TMP("DIMSG",LINE)=" ------------ ------------ ----- ---- --------- ------",LINE=LINE+1
|
---|
116 | . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
|
---|
117 | . F S X=$O(^IBT(356,"APTY",DFN,IBETYP,IBTDT,X)) Q:X="" D
|
---|
118 | .. S IB3560=$G(^IBT(356,X,0)) I IB3560="" Q
|
---|
119 | .. S IBID=$P($G(IB3560),U,1) S IBID=$S(IBID="":"ID_UNKNOWN",1:$E(IBID_" ",1,10))
|
---|
120 | .. S IBPATNM=$P($G(^DPT(DFN,0)),U,1) S IBPATNM=$S(IBPATNM="":"PATIENT_UNKNOWN",1:$E(IBPATNM_" ",1,15))
|
---|
121 | .. S IBENC=$P($G(IB3560),U,4) S IBENC=$S(IBENC="":"NONE ",1:$E(IBENC_" ",1,10))
|
---|
122 | .. S IBACT=$S($P($G(IB3560),U,20)=1:"YES",1:"NO ")
|
---|
123 | .. S IBETYPNM=$P($G(^IBE(356.6,IBETYP,0)),U,2) S IBETYPNM=$S(IBETYPNM="":"NONE ",1:$E(IBETYPNM_" ",1,8))
|
---|
124 | .. S TMP("DIMSG",LINE)=$E(CNT_" ",1,3)_IBDATE_" "_IBPATNM_" "_IBID_" "_IBETYPNM_" "_IBENC_" "_IBACT
|
---|
125 | .. S TEMP(CNT)=X_"^"_$TR(IBENC," ",""),CNT=CNT+1
|
---|
126 | .. S LINE=LINE+1
|
---|
127 | . I CNT>0 D
|
---|
128 | .. S TMP("DIMSG",LINE+1)=$E(CNT_" ",1,3)_"*** CREATE A NEW CLAIMS TRACKING ENTRY ***"
|
---|
129 | .. D MSG^DIALOG("WM",,,,"TMP")
|
---|
130 | .. S DIR(0)="NA^1:"_CNT_":0"
|
---|
131 | .. S DIR("A")="Select a Claims Tracking entry: "
|
---|
132 | .. S DIR("?",1)="Choose a Claims Tracking entry from the previous list to continue processing."
|
---|
133 | .. S DIR("?")="Valid responses are 1 thru "_CNT_" or ^ to exit."
|
---|
134 | .. D ^DIR
|
---|
135 | .. I ($G(DTOUT))!($G(DUOUT))!($G(DIRUT))!($G(DIROUT)) S IBQUIT=1
|
---|
136 | .. I Y>0 S X=+$G(TEMP(Y)) I +$P($G(TEMP(Y)),U,2)>0 S ENCTR=$P($G(TEMP(Y)),U,2)
|
---|
137 | I IBQUIT Q
|
---|
138 | I '$G(ENCTR) D
|
---|
139 | . N CNT,DIR,IBDATA,IBDATA1,IBDATA2,IBERR,IBMSG,IBSCRN,IBTMP,LINE,TMP,X
|
---|
140 | . N DIOUT,DIROUT,DTOUT,DUOUT
|
---|
141 | . S X(1)=IBTDT
|
---|
142 | . S IBSCRN="I $P($G(^(0)),U,2)="_DFN
|
---|
143 | . S IBMSG="IBTMP(""ENC"")"
|
---|
144 | . S IBERR="IBTMP(""ERR"")"
|
---|
145 | . D FIND^DIC(409.68,,,"PQX",.X,,"B",IBSCRN,,IBMSG,IBERR)
|
---|
146 | . I +IBTMP("ENC","DILIST",0)=0 S ENCTR="" Q
|
---|
147 | . S CNT=+IBTMP("ENC","DILIST",0)+1
|
---|
148 | . S (LINE,X)=0
|
---|
149 | . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
|
---|
150 | . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
|
---|
151 | . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
|
---|
152 | . S TMP("DIMSG",LINE)="There are encounters for the episode date you have selected:",LINE=LINE+1
|
---|
153 | . S TMP("DIMSG",LINE)=" ",LINE=LINE+1
|
---|
154 | . F S X=$O(IBTMP("ENC","DILIST",X)) Q:X="" D
|
---|
155 | .. S LINE=LINE+1
|
---|
156 | .. S IBDATA1=$P($G(IBTMP("ENC","DILIST",X,0)),"^"_IBTDT,1)
|
---|
157 | .. S IBDATA2=$P($G(IBTMP("ENC","DILIST",X,0)),"^"_IBTDT,2)
|
---|
158 | .. S IBDATA=$TR(IBDATA1_IBDATA2,"^"," ")
|
---|
159 | .. S TMP("DIMSG",LINE)=$E(X_" ",1,4)_IBDATA
|
---|
160 | . S TMP("DIMSG",LINE+1)=$E(+IBTMP("ENC","DILIST",0)+1_" ",1,4)_"*** CREATE A NEW CLAIMS TRACKING ENTRY WITHOUT AN ENCOUNTER ***"
|
---|
161 | . D MSG^DIALOG("WM",,,,"TMP")
|
---|
162 | . S DIR(0)="NA^1:"_CNT_":0"
|
---|
163 | . S DIR("A")="Select an Encounter for the Claims Tracking entry: "
|
---|
164 | . S DIR("?",1)="Choose an Encounter from the previous list to continue processing."
|
---|
165 | . S DIR("?")="Valid responses are 1 thru "_CNT_" or ^ to exit."
|
---|
166 | . D ^DIR
|
---|
167 | . I ($G(DTOUT))!($G(DUOUT))!($G(DIRUT))!($G(DIROUT)) S IBQUIT=1
|
---|
168 | . I +$G(Y)<1 Q
|
---|
169 | . S ENCTR=+$G(IBTMP("ENC","DILIST",+Y,0)) I 'ENCTR Q
|
---|
170 | . I $D(^IBT(356,"AENC",+DFN,ENCTR)) S IBTRN=$O(^IBT(356,"AENC",+DFN,ENCTR,0)) Q
|
---|
171 | I IBQUIT Q
|
---|
172 | G:$G(IBTRN)'="" OPTSCRNQ
|
---|
173 | D ADDT^IBTUTL
|
---|
174 | S DA=IBTRN,DIE="^IBT(356,"
|
---|
175 | I IBTRN<1 G OPTSCRNQ
|
---|
176 | L +^IBT(356,+IBTRN):10 I '$T G OPTSCRNQ
|
---|
177 | S DR=".02////"_$G(DFN)_";.03////"_$G(IBVSIT)_";.04////"_$G(ENCTR)_";.06////"_+IBTDT_";.18////"_IBETYP_";.2////1;.24////"_$$INSURED^IBCNS1(DFN)_";1.01///NOW;1.02////"_DUZ_";.17////"_$$EABD^IBTUTL(IBETYP)
|
---|
178 | I $G(IBRMARK)'="" S DR=DR_";.19///"_IBRMARK
|
---|
179 | D ^DIE K DA,DR,DIE
|
---|
180 | L -^IBT(356,+IBTRN)
|
---|
181 | OPTSCRNQ Q
|
---|