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