[613] | 1 | RCDPEWLD ;ALB/CLT - Continuation of routine RCDPEWL0 ;12 DEC 2007
|
---|
| 2 | ;;4.5;Accounts Receivable;**252**;Mar 20, 1995;Build 63
|
---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
| 4 | Q
|
---|
| 5 | ;
|
---|
| 6 | PROV(RCSCR,RCSCR1,RCXM1,RC) ;Get prov data from ERA (FILE 344.4) and claim (FILE 399)
|
---|
| 7 | N RCXXX,RCYYY,RCDPEPV,RCCLAIM,RCIEN,RCBILL,RCID,RCBLANK,RCNPI,DIC,X,Y
|
---|
| 8 | N RCPROV,RCEXP,XUSNPI,RCRTN,RCBNM,RCCOM1,RCCOM2,RCWARN,RCYNODE3
|
---|
| 9 | ;
|
---|
| 10 | S RCBLANK="" F X=1:1:30 S RCBLANK=RCBLANK_" "
|
---|
| 11 | S RC=RC+1 S RCXM1(RC-1)=RCBLANK
|
---|
| 12 | S RCYNODE3=$G(^RCY(344.4,RCSCR,1,RCSCR1,3))
|
---|
| 13 | ;
|
---|
| 14 | LKBOX ;Get provider data from ELECTRONIC REMITTANCE ADVICE file (#344.4)
|
---|
| 15 | S RC=RC+1,RCXM1(RC-1)=$E("**EOB PROVIDER(S)/NPI"_$J(" ",39),1,39)_"CLAIM PROVIDER(S)/NPI**" ;setting sub-header for worklist
|
---|
| 16 | S RC=RC+1,RCXM1(RC-1)=$E("---------------------"_$J(" ",39),1,39)_"-----------------------"
|
---|
| 17 | ;
|
---|
| 18 | S RCPROV="BILLING",$P(RCYYY(RCPROV),U,3)=0 ; piece 3 initialize for error msgs
|
---|
| 19 | I $P(RCYNODE3,U)'="" S RCYYY(RCPROV)="/"_$P(RCYNODE3,U) ; Billing Prov NPI
|
---|
| 20 | ;
|
---|
| 21 | S RCPROV="RENDERING"
|
---|
| 22 | I $P(RCYNODE3,U,3)=2 S RCPROV="SERVICING"
|
---|
| 23 | I $P(RCYNODE3,U,3)="",($P(RCYNODE3,U,4)'[","),($P(RCYNODE3,U,4)'="") S RCPROV="SERVICING"
|
---|
| 24 | I $P(RCYNODE3,U,2)'=""!($P(RCYNODE3,U,4)'="") S RCYYY(RCPROV)=$E($P(RCYNODE3,U,4),1,20)_"/"_$P(RCYNODE3,U,2)
|
---|
| 25 | S $P(RCYYY(RCPROV),U,3)=0 ; initialize for error msgs
|
---|
| 26 | D NPICHK ; RCPROV has to be "RENDERING" or "SERVICING" when this tag is called !
|
---|
| 27 | ;
|
---|
| 28 | CLAIM ;Retrieve provider data from the claim
|
---|
| 29 | S RCCLAIM=$$GET1^DIQ(361.1,$P(^RCY(344.4,RCSCR,1,RCSCR1,0),U,2),.01) ;determine claim num based on entry in 344.4
|
---|
| 30 | S DIC="^DGCR(399,",DIC(0)="",X=RCCLAIM D ^DIC S RCCLAIM=+Y ;find ien for file 399
|
---|
| 31 | D GETS^DIQ(399,RCCLAIM,"222*","IE","RCXXX") ;retrieve prov information
|
---|
| 32 | S RCBILL=$$GET1^DIQ(399,RCCLAIM,.22,"I") ;retrieve default division
|
---|
| 33 | S RCBNM=$$GET1^DIQ(4,$$GET1^DIQ(40.8,RCBILL,.07,"I"),.01) ;get name from institution file
|
---|
| 34 | S RCBILL=$$GET1^DIQ(4,$$GET1^DIQ(40.8,RCBILL,.07,"I"),41.99) ;get NPI from institution file
|
---|
| 35 | ;
|
---|
| 36 | S $P(RCYYY("BILLING"),U,2)=RCBNM_"/"_RCBILL_"^"_0 ;NPI set into local array
|
---|
| 37 | I $D(RCXXX) S RCPROV="" F S RCPROV=$O(RCXXX(399.0222,RCPROV)) Q:RCPROV="" D ;loop through claim providers
|
---|
| 38 | . S RCIEN=$P(RCXXX(399.0222,RCPROV,.02,"I"),";",1)
|
---|
| 39 | . S RCID=$S($P(RCXXX(399.0222,RCPROV,.02,"I"),";",2)["VA(200":"Individual_ID",1:"Non_VA_Provider_ID")
|
---|
| 40 | . S RCNPI=$$NPI^XUSNPI(RCID,RCIEN) ;retrieve provider NPI
|
---|
| 41 | . S $P(RCYYY(RCXXX(399.0222,RCPROV,.01,"E")),U,2)=$E(RCXXX(399.0222,RCPROV,.02,"E"),1,20)_"/"_$S(+RCNPI=0:"No NPI on file",+RCNPI=-1:"Can't look up NPI",1:+RCNPI)
|
---|
| 42 | . S:$P(RCYYY(RCXXX(399.0222,RCPROV,.01,"E")),U,3)="" $P(RCYYY(RCXXX(399.0222,RCPROV,.01,"E")),U,3)=0
|
---|
| 43 | LINESET ;SET THE PRINT LINES
|
---|
| 44 | S (RCWARN,RCPROV)="" F S RCPROV=$O(RCYYY(RCPROV)) Q:RCPROV="" D ;loop through the found provider types
|
---|
| 45 | . S RC=RC+1 ;increment line counter
|
---|
| 46 | . ; build display detail line
|
---|
| 47 | . S RCXM1(RC-1)=RCPROV_": "_$P(RCYYY(RCPROV),U,1)
|
---|
| 48 | . I $L(RCXM1(RC-1))>39 D
|
---|
| 49 | .. S RCXM1(RC-1)=$E($P(RCXM1(RC-1),"/"),1,27)_"/"_$P(RCXM1(RC-1),"/",2)
|
---|
| 50 | . S RCXM1(RC-1)=$E(RCXM1(RC-1)_RCBLANK,1,39)_$P(RCYYY(RCPROV),U,2)
|
---|
| 51 | . I $P(RCYYY(RCPROV),U,3)'=0 S RCWARN=$P(RCYYY(RCPROV),U,3)
|
---|
| 52 | I RCWARN'="" D
|
---|
| 53 | . S RC=RC+1,RCXM1(RC-1)=" " ;Blank line for separation
|
---|
| 54 | . S RC=RC+1,RCXM1(RC-1)="Rendering/Servicing Provider NPI Warning:"
|
---|
| 55 | . S RC=RC+1,RCXM1(RC-1)=RCWARN
|
---|
| 56 | S RC=RC+1,RCXM1(RC-1)=" " ;Blank line to separate from possible comments
|
---|
| 57 | S RCCOM1=$P(RCYNODE3,U,5),RCCOM2=$P(RCYNODE3,U,6) D ;Error in NPI format
|
---|
| 58 | . I $G(RCCOM1)'="" S RC=RC+1,RCXM1(RC-1)=RCCOM1
|
---|
| 59 | . I $G(RCCOM2)'="" S RC=RC+1,RCXM1(RC-1)=RCCOM2
|
---|
| 60 | Q
|
---|
| 61 | ;
|
---|
| 62 | NPICHK ;CHECK THAT THE NPI RETURNED MATCHES THE ENTITY TYPE QUALIFIER
|
---|
| 63 | S RCEXP="" Q:$P(RCYNODE3,U,3)="" ; ENTITY TYPE QUALIFIER
|
---|
| 64 | ;
|
---|
| 65 | S RCCOM2=$P(RCYNODE3,U,6) ; Ren/Serv comment
|
---|
| 66 | S XUSNPI=$P(RCYNODE3,U,2)
|
---|
| 67 | I RCCOM2="",(XUSNPI="") S RCEXP="**NO SERVICING/RENDERING NPI INCLUDED IN 835**" D EXPSET Q
|
---|
| 68 | S RCRTN=$$QI^XUSNPI(XUSNPI)
|
---|
| 69 | I $P(RCRTN,U,1)="Individual_ID" D Q
|
---|
| 70 | . I $P(RCYNODE3,U,3)'=1 S RCEXP="**NPI from 835 indicated organizational but is associated with an individual**" D EXPSET Q
|
---|
| 71 | I $P(RCRTN,U,1)="Organization_ID" D Q
|
---|
| 72 | . I $P(RCYNODE3,U,3)'=2 S RCEXP="**NPI from 835 indicated individual but is associated with an organization**" D EXPSET Q
|
---|
| 73 | I $E($P(RCRTN,U,1),1,3)="Non" D Q
|
---|
| 74 | . N RCIEN,RCTYPE S RCIEN=$P(RCRTN,U,2),RCTYPE=$$GET1^DIQ(355.93,RCIEN,.02,"I") Q:$G(RCTYPE)=""
|
---|
| 75 | . I $P(RCYNODE3,U,3)=1,RCTYPE=1 S RCEXP="**NPI from 835 indicated individual but is associated with an organization**" D EXPSET Q
|
---|
| 76 | . I $P(RCYNODE3,U,3)=2,RCTYPE=2 S RCEXP="**NPI from 835 indicated organizational but is associated with an individual**" D EXPSET Q
|
---|
| 77 | I RCCOM2="",(+RCRTN=0) S RCEXP="**The NPI returned on the 835 is not associated with this VistA system**" D EXPSET Q
|
---|
| 78 | Q
|
---|
| 79 | ;
|
---|
| 80 | EXPSET ;SET THE PRINT LINE WITH THE ERROR AS DEFINED IN RCEXP
|
---|
| 81 | S $P(RCYYY(RCPROV),U,3)=RCEXP
|
---|
| 82 | Q
|
---|
| 83 | ;
|
---|
| 84 | PARAMS(RCQUIT) ;PARAMETERS ENTRY CONTINUED FROM RCDPEWL0
|
---|
| 85 | I $G(RCQUIT) K ^TMP("RCERA_PARAMS",$J)
|
---|
| 86 | PARMSQ ;
|
---|
| 87 | Q
|
---|