| 1 | IBCCPT1 ;OAK/ELZ - MCCR OUTPATIENT VISITS LISTING CONT.(2) ;30-JUL-2003
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**260**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | NBOEP(IBOEO,IBBCPT,IBDXDAT) ; returnes if a procedure is billable
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  N IBRMARK,IBPCEX,IBARR,IBP,IBDX,IBL,IBT,IBVST800,IBCPT800,IBDX800,DFN,IBDT,IBCPT
 | 
|---|
| 9 |  S IBRMARK="",IBPCEX=$P(IBOEO,"^",5)
 | 
|---|
| 10 |  S DFN=$P(IBOEO,"^",2),IBDT=IBOEO/1
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  ; look up classification info needed (if any)
 | 
|---|
| 13 |  D CL^SDCO21(DFN,IBDT,"",.IBARR) ;I '$D(IBARR) G NBOEPQ
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ; look up PCE info
 | 
|---|
| 16 |  D ENCEVENT^PXKENC(IBPCEX)
 | 
|---|
| 17 |  S IBVST800=$G(^TMP("PXKENC",$J,IBPCEX,"VST",IBPCEX,800))
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ; do comparison to find dx to cpt relations
 | 
|---|
| 20 |  S IBCPT=0 F  S IBCPT=$O(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT)) Q:IBCPT<1  S IBDX=0 I IBBCPT=+^(IBCPT,0) F  S IBDX=$O(^TMP("PXKENC",$J,IBPCEX,"POV",IBDX)) Q:IBDX<1  D
 | 
|---|
| 21 |  . F IBP=5,9,10,11 Q:'$D(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,0))  I $P(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,0),"^",IBP)=+$G(^TMP("PXKENC",$J,IBPCEX,"POV",IBDX,0)) D
 | 
|---|
| 22 |  .. S IBDXDAT=$G(IBDXDAT)_+$G(^TMP("PXKENC",$J,IBPCEX,"POV",IBDX,0))_"^"
 | 
|---|
| 23 |  .. S IBDX800=$G(^TMP("PXKENC",$J,IBPCEX,"POV",IBDX,800))
 | 
|---|
| 24 |  .. S IBCPT800=$G(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,800))
 | 
|---|
| 25 |  .. ;
 | 
|---|
| 26 |  .. ; is classification filled in as true on dx level?
 | 
|---|
| 27 |  .. F IBL=2:1  S IBT=$P($T(CLDATA+IBL^IBTRKR41),";",3) Q:IBT=""  I $D(IBARR(+IBT)),$P(IBDX800,"^",$P(IBT,"^",2)) S IBRMARK=$P(IBT,"^",3) Q
 | 
|---|
| 28 |  .. ;
 | 
|---|
| 29 |  .. ; if no cl filled in for dx, then check cpt level for true
 | 
|---|
| 30 |  .. I $D(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,0)) F IBL=2:1  S IBT=$P($T(CLDATA+IBL^IBTRKR41),";",3) Q:IBT=""  I $D(IBARR(+IBT)),$P(IBDX800,"^",$P(IBT,"^",2))="",$P(IBCPT800,"^",$P(IBT,"^",2)) S IBRMARK=$P(IBT,"^",3) Q
 | 
|---|
| 31 |  .. ;
 | 
|---|
| 32 |  .. ; if no cl for dx or cpt, use visit level
 | 
|---|
| 33 |  .. I $D(^TMP("PXKENC",$J,IBPCEX,"CPT",IBCPT,0)) F IBL=2:1  S IBT=$P($T(CLDATA+IBL^IBTRKR41),";",3) Q:IBT=""  D
 | 
|---|
| 34 |  ... I $D(IBARR(+IBT)),$P(IBDX800,"^",$P(IBT,"^",2))="",$P(IBCPT800,"^",$P(IBT,"^",2))="",$P(IBVST800,"^",$P(IBT,"^",2)) S IBRMARK=$P(IBT,"^",3) Q
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 | NBOEPQ K ^TMP("PXKENC",$J)
 | 
|---|
| 38 |  Q IBRMARK
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | ADDDX(IBIFN,IBPROCP,IBDX,IBDR) ; file assoc dx, add to DR string for bill
 | 
|---|
| 41 |  N DIC,X,Y,DLAYGO,IBP,IBDXDA,DD,DO
 | 
|---|
| 42 |  F IBP=1:1:4 S X=$P(IBDX,"^",IBP) D:X
 | 
|---|
| 43 |  . S IBDXDA=$O(^IBA(362.3,"AIFN"_IBIFN,X,0)) I IBDXDA S IBDR=$G(IBDR)_$S($L($G(IBDR)):";",1:"")_(IBP+9)_"////"_IBDXDA Q
 | 
|---|
| 44 |  . S DIC("DR")=".02////"_IBIFN,DIC="^IBA(362.3,",DIC(0)="L",DLAYGO=362.3 K DD,DO D FILE^DICN I Y>0 S IBDR=$G(IBDR)_$S($L($G(IBDR)):";",1:"")_(IBP+9)_"////"_(+Y)
 | 
|---|
| 45 |  Q
 | 
|---|