RCDPEWLD	;ALB/CLT - Continuation of routine RCDPEWL0 ;12 DEC 2007
	;;4.5;Accounts Receivable;**252**;Mar 20, 1995;Build 63
	;;Per VHA Directive 2004-038, this routine should not be modified.
	Q
	;
PROV(RCSCR,RCSCR1,RCXM1,RC)	;Get prov data from ERA (FILE 344.4) and claim (FILE 399)
	N RCXXX,RCYYY,RCDPEPV,RCCLAIM,RCIEN,RCBILL,RCID,RCBLANK,RCNPI,DIC,X,Y
	N RCPROV,RCEXP,XUSNPI,RCRTN,RCBNM,RCCOM1,RCCOM2,RCWARN,RCYNODE3
	;
	S RCBLANK="" F X=1:1:30 S RCBLANK=RCBLANK_" "
	S RC=RC+1 S RCXM1(RC-1)=RCBLANK
	S RCYNODE3=$G(^RCY(344.4,RCSCR,1,RCSCR1,3))
	;
LKBOX	;Get provider data from ELECTRONIC REMITTANCE ADVICE file (#344.4)
	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
	S RC=RC+1,RCXM1(RC-1)=$E("---------------------"_$J(" ",39),1,39)_"-----------------------"
	;
	S RCPROV="BILLING",$P(RCYYY(RCPROV),U,3)=0        ; piece 3 initialize for error msgs
	I $P(RCYNODE3,U)'="" S RCYYY(RCPROV)="/"_$P(RCYNODE3,U)   ; Billing Prov NPI 
	;
	S RCPROV="RENDERING"
	I $P(RCYNODE3,U,3)=2 S RCPROV="SERVICING"
	I $P(RCYNODE3,U,3)="",($P(RCYNODE3,U,4)'[","),($P(RCYNODE3,U,4)'="") S RCPROV="SERVICING"
	I $P(RCYNODE3,U,2)'=""!($P(RCYNODE3,U,4)'="") S RCYYY(RCPROV)=$E($P(RCYNODE3,U,4),1,20)_"/"_$P(RCYNODE3,U,2)
	S $P(RCYYY(RCPROV),U,3)=0                          ; initialize for error msgs
	D NPICHK        ; RCPROV has to be "RENDERING" or "SERVICING" when this tag is called !
	;
CLAIM	;Retrieve provider data from the claim
	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
	S DIC="^DGCR(399,",DIC(0)="",X=RCCLAIM D ^DIC S RCCLAIM=+Y      ;find ien for file 399
	D GETS^DIQ(399,RCCLAIM,"222*","IE","RCXXX")         ;retrieve prov information
	S RCBILL=$$GET1^DIQ(399,RCCLAIM,.22,"I")            ;retrieve default division
	S RCBNM=$$GET1^DIQ(4,$$GET1^DIQ(40.8,RCBILL,.07,"I"),.01)  ;get name from institution file
	S RCBILL=$$GET1^DIQ(4,$$GET1^DIQ(40.8,RCBILL,.07,"I"),41.99)  ;get NPI from institution file
	;
	S $P(RCYYY("BILLING"),U,2)=RCBNM_"/"_RCBILL_"^"_0  ;NPI set into local array
	I $D(RCXXX) S RCPROV="" F  S RCPROV=$O(RCXXX(399.0222,RCPROV)) Q:RCPROV=""  D  ;loop through claim providers
	. S RCIEN=$P(RCXXX(399.0222,RCPROV,.02,"I"),";",1)
	. S RCID=$S($P(RCXXX(399.0222,RCPROV,.02,"I"),";",2)["VA(200":"Individual_ID",1:"Non_VA_Provider_ID")
	. S RCNPI=$$NPI^XUSNPI(RCID,RCIEN)                  ;retrieve provider NPI
	. 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)
	. S:$P(RCYYY(RCXXX(399.0222,RCPROV,.01,"E")),U,3)="" $P(RCYYY(RCXXX(399.0222,RCPROV,.01,"E")),U,3)=0
LINESET	;SET THE PRINT LINES
	S (RCWARN,RCPROV)="" F  S RCPROV=$O(RCYYY(RCPROV)) Q:RCPROV=""  D  ;loop through the found provider types
	. S RC=RC+1                                          ;increment line counter
	. ; build display detail line
	. S RCXM1(RC-1)=RCPROV_": "_$P(RCYYY(RCPROV),U,1)
	. I $L(RCXM1(RC-1))>39 D
	.. S RCXM1(RC-1)=$E($P(RCXM1(RC-1),"/"),1,27)_"/"_$P(RCXM1(RC-1),"/",2)
	. S RCXM1(RC-1)=$E(RCXM1(RC-1)_RCBLANK,1,39)_$P(RCYYY(RCPROV),U,2)
	. I $P(RCYYY(RCPROV),U,3)'=0 S RCWARN=$P(RCYYY(RCPROV),U,3)
	I RCWARN'="" D
	. S RC=RC+1,RCXM1(RC-1)=" "                          ;Blank line for separation
	. S RC=RC+1,RCXM1(RC-1)="Rendering/Servicing Provider NPI Warning:"
	. S RC=RC+1,RCXM1(RC-1)=RCWARN
	S RC=RC+1,RCXM1(RC-1)=" "                            ;Blank line to separate from possible comments
	S RCCOM1=$P(RCYNODE3,U,5),RCCOM2=$P(RCYNODE3,U,6) D  ;Error in NPI format
	. I $G(RCCOM1)'="" S RC=RC+1,RCXM1(RC-1)=RCCOM1
	. I $G(RCCOM2)'="" S RC=RC+1,RCXM1(RC-1)=RCCOM2
	Q
	;
NPICHK	;CHECK THAT THE NPI RETURNED MATCHES THE ENTITY TYPE QUALIFIER
	S RCEXP="" Q:$P(RCYNODE3,U,3)=""               ; ENTITY TYPE QUALIFIER
	;
	S RCCOM2=$P(RCYNODE3,U,6) ; Ren/Serv comment
	S XUSNPI=$P(RCYNODE3,U,2)
	I RCCOM2="",(XUSNPI="") S RCEXP="**NO SERVICING/RENDERING NPI INCLUDED IN 835**" D EXPSET Q
	S RCRTN=$$QI^XUSNPI(XUSNPI)
	I $P(RCRTN,U,1)="Individual_ID" D  Q
	. I $P(RCYNODE3,U,3)'=1 S RCEXP="**NPI from 835 indicated organizational but is associated with an individual**" D EXPSET Q
	I $P(RCRTN,U,1)="Organization_ID" D  Q
	. I $P(RCYNODE3,U,3)'=2 S RCEXP="**NPI from 835 indicated individual but is associated with an organization**" D EXPSET Q
	I $E($P(RCRTN,U,1),1,3)="Non" D  Q
	. N RCIEN,RCTYPE S RCIEN=$P(RCRTN,U,2),RCTYPE=$$GET1^DIQ(355.93,RCIEN,.02,"I") Q:$G(RCTYPE)=""
	. I $P(RCYNODE3,U,3)=1,RCTYPE=1 S RCEXP="**NPI from 835 indicated individual but is associated with an organization**" D EXPSET Q
	. I $P(RCYNODE3,U,3)=2,RCTYPE=2 S RCEXP="**NPI from 835 indicated organizational but is associated with an individual**" D EXPSET Q
	I RCCOM2="",(+RCRTN=0) S RCEXP="**The NPI returned on the 835 is not associated with this VistA system**" D EXPSET Q
	Q
	;
EXPSET	;SET THE PRINT LINE WITH THE ERROR AS DEFINED IN RCEXP
	S $P(RCYYY(RCPROV),U,3)=RCEXP
	Q
	;
PARAMS(RCQUIT)	;PARAMETERS ENTRY CONTINUED FROM RCDPEWL0
	I $G(RCQUIT) K ^TMP("RCERA_PARAMS",$J)
PARMSQ	;
	Q
