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