1 | IBTRKR41 ;ALB/AAS - CLAIMS TRACKING - ADD/TRACK OUTPATIENT ENCOUNTERS ;13-AUG-93
|
---|
2 | ;;2.0;INTEGRATED BILLING;**43,55,91,132,174,247,260,315,292,312,339**;21-MAR-94;Build 2
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | OPCHK ; -- check and add rx
|
---|
6 | N Y,Y0
|
---|
7 | N IBSWINFO S IBSWINFO=$$SWSTAT^IBBAPI() ;IB*2.0*312
|
---|
8 | ; IBDT is set from IBTRKR4
|
---|
9 | ; Do NOT PROCESS on VistA if IBDT>=Switch Eff Date ;CCR-930
|
---|
10 | I +IBSWINFO,(IBDT+1)>$P(IBSWINFO,"^",2) Q ;IB*2.0*312
|
---|
11 | ;
|
---|
12 | K IBRMARK
|
---|
13 | I '$D(ZTQUEUED),($G(IBTALK)) W "."
|
---|
14 | ;
|
---|
15 | S IBOEDATA=$$SCE^IBSDU(IBOE),IBOESTAT=$P(IBOEDATA,"^",15)
|
---|
16 | S DFN=$P(IBOEDATA,"^",2)
|
---|
17 | I 'DFN G OPCHKQ
|
---|
18 | I $P(IBOEDATA,"^",5) S IBVSIT=$P(IBOEDATA,"^",5) I '$$BDSRC^IBEFUNC3(IBVSIT) G OPCHKQ ;non-billable data sources
|
---|
19 | ; -- do not allow date/time duplicate claims before Jan. 1, 2006
|
---|
20 | I $O(^IBT(356,"APTY",DFN,IBOETYP,IBDT,0)),IBDT<3060101 G OPCHKQ
|
---|
21 | ;
|
---|
22 | ; -- see if tracking only insured and pt is insured/insured for outpt visits
|
---|
23 | I $P(IBTRKR,"^",3)=1,'$$INSURED^IBCNS1(DFN,IBDT) G OPCHKQ ; patient not insured
|
---|
24 | ;
|
---|
25 | ; -- see if outpatient services are covered
|
---|
26 | I '$$PTCOV^IBCNSU3(DFN,IBDT,"OUTPATIENT",.IBANY) S IBRMARK=$S($G(IBANY):"SERVICE NOT COVERED",1:"NOT INSURED")
|
---|
27 | ;
|
---|
28 | ; -- see if appointment type is billable
|
---|
29 | I '$$RPT^IBEFUNC($P(IBOEDATA,"^",10),+IBOEDATA) S IBRMARK="NON-BILLABLE APPOINTMENT TYPE"
|
---|
30 | ;
|
---|
31 | ; -- check sc status, special conditions etc.
|
---|
32 | I $G(IBRMARK)="" S IBRMARK=$$CL(IBOEDATA)
|
---|
33 | ;
|
---|
34 | ; -- check for non-billable stops or clinic
|
---|
35 | S X=$P(IBOEDATA,"^",4) I X,$$NBCT^IBEFUNC(X,+IBOEDATA) S IBRMARK="NON-BILLABLE CLINIC"
|
---|
36 | S X=$P(IBOEDATA,"^",3) I X,$$NBST^IBEFUNC(X,+IBOEDATA) S IBRMARK="NON-BILLABLE STOP CODE"
|
---|
37 | ;
|
---|
38 | ; -- ok to add to tracking module
|
---|
39 | D OPT^IBTUTL1(DFN,IBOETYP,IBDT,IBOE,IBRMARK,$G(IBVSIT)) I '$D(ZTQUEUED),$G(IBTALK) W "+"
|
---|
40 | I IBRMARK'="" S IBCNT2=IBCNT2+1
|
---|
41 | I IBRMARK="" S IBCNT1=IBCNT1+1
|
---|
42 | OPCHKQ K IBANY,IBRMARK,VAEL,VA,IBOEDATA,IBVSIT,DFN,X,Y
|
---|
43 | Q
|
---|
44 | ;
|
---|
45 | BULL ; -- send bulletin
|
---|
46 | ;
|
---|
47 | S XMSUB="Outpatient Encounters added to Claims Tracking Complete"
|
---|
48 | S IBT(1)="The process to automatically add Opt Encounters has successfully completed."
|
---|
49 | S IBT(1.1)=""
|
---|
50 | S IBT(2)=" Start Date: "_$$DAT1^IBOUTL(IBTSBDT)
|
---|
51 | S IBT(3)=" End Date: "_$$DAT1^IBOUTL(IBTSEDT)
|
---|
52 | I $D(IBMESS) S IBT(3.1)=IBMESS
|
---|
53 | S IBT(4)=""
|
---|
54 | S IBT(5)=" Total Encounters Checked: "_$G(IBCNT)
|
---|
55 | S IBT(6)=" Total Encounters Added: "_$G(IBCNT1)
|
---|
56 | S IBT(7)=" Total Non-billable Encounters Added: "_$G(IBCNT2)
|
---|
57 | S IBT(8)=""
|
---|
58 | S IBT(9)="*The SC, Agent Orange, Southwest Asia, Ionizing Radiation,"
|
---|
59 | S IBT(10)="Military Sexual Trauma, Head Neck Cancer, Combat Veteran and Project 112/SHAD"
|
---|
60 | S IBT(11)="status visits have been added for insured patients but automatically"
|
---|
61 | S IBT(12)="indicated as not billable."
|
---|
62 | D SEND^IBTRKR31
|
---|
63 | BULLQ Q
|
---|
64 | ;
|
---|
65 | CL(IBOEDATA,IBR) ; check out classification questions for encounter
|
---|
66 | ; this new check will look at the V POV level then to the Visit level
|
---|
67 | ; as necessary to determine if it relates or not. This will indicate
|
---|
68 | ; if the WHOLE visit is not billable, otherwise it will say it is
|
---|
69 | ; (even if just part is billable).
|
---|
70 | ; call with the zero node of 409.68 in IBOEDATA
|
---|
71 | ; assumes DFN and IBDT defined
|
---|
72 | ; pass in IBR by ref to get values back
|
---|
73 | ;
|
---|
74 | N IBRMARK,IBPCEX,IBCPT,IBARR,IBP,IBDX,IBVRNB,IBENCL
|
---|
75 | S IBRMARK="",IBPCEX=$P(IBOEDATA,"^",5)
|
---|
76 | ;
|
---|
77 | ; look up classification info needed (if any)
|
---|
78 | D CL^SDCO21(DFN,IBDT,"",.IBARR) I '$D(IBARR) G CLQ
|
---|
79 | ;
|
---|
80 | ; if no PCE event use old approach
|
---|
81 | I 'IBPCEX D:$G(IBOE) G CLQ
|
---|
82 | . S IBENCL=$$ENCL^IBAMTS2(IBOE) I IBENCL["1" D ; return 1 in string if true "ao^ir^sc^swa^mst^hnc^cv^shad"
|
---|
83 | . I $P(IBENCL,"^",3) S IBRMARK="SC TREATMENT" Q
|
---|
84 | . I $P(IBENCL,"^",1) S IBRMARK="AGENT ORANGE" Q
|
---|
85 | . I $P(IBENCL,"^",2) S IBRMARK="IONIZING RADIATION" Q
|
---|
86 | . I $P(IBENCL,"^",4) S IBRMARK="SOUTHWEST ASIA" Q
|
---|
87 | . I $P(IBENCL,"^",5) S IBRMARK="MILITARY SEXUAL TRAUMA" Q
|
---|
88 | . I $P(IBENCL,"^",6) S IBRMARK="HEAD/NECK CANCER" Q
|
---|
89 | . I $P(IBENCL,"^",7) S IBRMARK="COMBAT VETERAN" Q
|
---|
90 | . I $P(IBENCL,"^",8) S IBRMARK="PROJECT 112/SHAD" Q
|
---|
91 | ;
|
---|
92 | ; look up PCE info
|
---|
93 | D ENCEVENT^PXKENC(IBPCEX)
|
---|
94 | ;
|
---|
95 | S IBVRNB=$$RNB($G(^TMP("PXKENC",$J,IBPCEX,"VST",IBPCEX,800)),.IBARR)
|
---|
96 | ;
|
---|
97 | ; find dx rnb's
|
---|
98 | S IBDX=0 F S IBDX=$O(^TMP("PXKENC",$J,IBPCEX,"POV",IBDX)) Q:'IBDX S IBDX(+$G(^TMP("PXKENC",$J,IBPCEX,"POV",IBDX,0)))=$$RNB($G(^TMP("PXKENC",$J,IBPCEX,"POV",IBDX,800)),.IBARR)
|
---|
99 | ;
|
---|
100 | ; look for v cpt's with IBDX
|
---|
101 | S IBCPT=0 F S IBCPT=$O(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT)) Q:'IBCPT F IBP=5,9,10,11 Q:'$D(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,0)) D
|
---|
102 | . ;
|
---|
103 | . ; dx exists in v cpt but not v pov use visit level determination
|
---|
104 | . I $P(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,0),"^",IBP),'$D(IBDX($P(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,0),"^",IBP))) D:IBVRNB REL(IBVRNB) Q
|
---|
105 | . ;
|
---|
106 | . ; use dx determination (where dx exists on v cpt)
|
---|
107 | . I $P(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,0),"^",IBP) D:$G(IBDX($P(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,0),"^",IBP))) REL($G(IBDX($P(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,0),"^",IBP)))) Q
|
---|
108 | ;
|
---|
109 | ; check for no assoc dx and apply visit level determination
|
---|
110 | S IBCPT=0 F S IBCPT=$O(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT)) Q:'IBCPT D
|
---|
111 | . S IBDX=0 F IBP=5,9,10,11 Q:IBDX I +$P($G(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,0)),"^",IBP) S IBDX=1
|
---|
112 | . I 'IBDX,IBVRNB D REL(IBVRNB)
|
---|
113 | ;
|
---|
114 | ; if some procedures left, then we need to bill, set return array
|
---|
115 | I $D(^TMP("PXKENC",$J,IBPCEX,"CPT")) S IBRMARK="" M IBR=^TMP("PXKENC",$J,IBPCEX)
|
---|
116 | ;
|
---|
117 | CLQ K ^TMP("PXKENC",$J)
|
---|
118 | Q IBRMARK
|
---|
119 | ;
|
---|
120 | RNB(IBDATA,IBARR) ; find rnb's
|
---|
121 | ; pass in PCE 800 data (visit or v pov) to find any reasons not billalbe
|
---|
122 | ; IBARR = classifications that could apply to patient
|
---|
123 | ; the RNB number returned is from the IBARR number (SDCO21 array)
|
---|
124 | N IBX,IBR S IBR=""
|
---|
125 | S IBX=0 F S IBX=$O(IBARR(IBX)) Q:'IBX!(IBR) I $P(IBDATA,"^",$P($T(CLDATA+(IBX+1)),"^",2)) S IBR=IBX
|
---|
126 | Q IBR
|
---|
127 | ;
|
---|
128 | REL(IBRNB) ; kills of tmp if related and set IBRMARK
|
---|
129 | K ^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT)
|
---|
130 | S IBRMARK=$P($T(CLDATA+(IBRNB+1)),"^",3)
|
---|
131 | Q
|
---|
132 | ;
|
---|
133 | CLDATA ; classification data
|
---|
134 | ; format is: SCDO21 array^vpov/vcpt/visit 800 piece^reason not billable
|
---|
135 | ;;1^2^AGENT ORANGE
|
---|
136 | ;;2^3^IONIZING RADIATION
|
---|
137 | ;;3^1^SC TREATMENT
|
---|
138 | ;;4^4^SOUTHWEST ASIA
|
---|
139 | ;;5^5^MILITARY SEXUAL TRAUMA
|
---|
140 | ;;6^6^HEAD/NECK CANCER
|
---|
141 | ;;7^7^COMBAT VETERAN
|
---|
142 | ;;8^8^PROJECT 112/SHAD
|
---|
143 | ;
|
---|