source: WorldVistAEHR/trunk/r/INTEGRATED_BILLING-IB-PRQ--IBD--IBQ--PRQS/IBCEP81.m@ 613

Last change on this file since 613 was 613, checked in by George Lilly, 15 years ago

initial load of WorldVistAEHR

File size: 9.5 KB
Line 
1IBCEP81 ;ALB/KJH - NPI and Taxonomy Functions ;19 Apr 2008 5:17 PM
2 ;;2.0;INTEGRATED BILLING;**343,391**;21-MAR-94;Build 39
3 ;;Per VHA Directive 2004-038, this routine should not be modified.
4 ;
5 ; Must call at an entry point
6 Q
7 ;
8 ; NPIREQ - Extrinsic function that will return a flag indicating
9 ; if the NPI 'drop dead date' has passed.
10 ; Input
11 ; IBDT - Date to check (internal Fileman format)
12 ; Output
13 ; 1 - On or after the May 23, 2008 drop dead date
14 ; 0 - Prior to the May 23, 2008 drop dead date
15NPIREQ(IBDT) ; Check NPI drop dead date
16 N IBCHKDT
17 S IBCHKDT=3080523
18 Q $S(IBDT<IBCHKDT:0,1:1)
19 ;
20 ; TAXREQ - Extrinsic function that will return a flag indicating
21 ; if the Taxonomy 'drop dead date' has passed.
22 ; Input
23 ; IBDT - Date to check (internal Fileman format)
24 ; Output
25 ; 1 - On or after the May 23, 2008 drop dead date
26 ; 0 - Prior to the May 23, 2008 drop dead date
27TAXREQ(IBDT) ; Check Taxonomy drop dead date
28 N IBCHKDT
29 S IBCHKDT=3080523
30 Q $S(IBDT<IBCHKDT:0,1:1)
31 ;
32 ; NPIGET - Extrinsic function to retrieve the NPI of a specified
33 ; record from file 355.93.
34 ; Input
35 ; IBIEN - IEN of the record from file 355.93
36 ; Output
37 ; NPI of that record or "" if not yet defined
38NPIGET(IBIEN) ; Get NPI
39 I IBIEN="" Q ""
40 N NPI
41 S NPI=$$GET1^DIQ(355.93,IBIEN_",",41.01,"I")
42 Q NPI
43 ;
44 ; TAXGET - Extrinsic function to retrieve the Taxonomy of a specified
45 ; record from file 355.93. (NOTE: Returns data for the 'active'
46 ; primary record from the Taxonomy multiple or the earliest
47 ; 'active' secondary record if no primary is present.)
48 ;
49 ; The 'optional' array parameter returns all Taxonomies in a
50 ; formatted array so they can be displayed.
51 ; Input
52 ; IBIEN - IEN of the record from file 355.93
53 ; Output
54 ; Piece 1 = Taxonomy (X12 value) of that record as defined in file 8932.1
55 ; Piece 2 = IEN from file 8932.1
56 ;
57 ; IBARR = IEN of the record from the main output
58 ; IBARR(IEN) = 3 pieces for each Taxonomy record
59 ; Piece 1 = Taxonomy (X12 value) of that record as defined in file 8932.1
60 ; Piece 2 = IEN from file 8932.1
61 ; Piece 3 = Primary/Secondary (1/0)
62 ;
63TAXGET(IBIEN,IBARR) ; Get Taxonomy
64 I IBIEN="" Q U
65 N TAX,IBPTR,IEN,IENS
66 S IEN=0,IBPTR=""
67 F S IEN=$O(^IBA(355.93,IBIEN,"TAXONOMY",IEN)) Q:'IEN D
68 . S IENS=IEN_","_IBIEN_","
69 . I $$GET1^DIQ(355.9342,IENS,.03,"E")'="ACTIVE" Q
70 . S IBARR(IEN)=U_$$GET1^DIQ(355.9342,IENS,.01,"I")_U_$$GET1^DIQ(355.9342,IENS,.02,"I")
71 . S $P(IBARR(IEN),U)=$$GET1^DIQ(8932.1,$P(IBARR(IEN),U,2),"X12 CODE")
72 . I $$GET1^DIQ(355.9342,IENS,.02,"E")="YES" S IBPTR=$P(IBARR(IEN),U,2),IBARR=IEN Q
73 . I IBPTR="" S IBPTR=$P(IBARR(IEN),U,2),IBARR=IEN
74 S TAX=$$GET1^DIQ(8932.1,IBPTR,"X12 CODE")
75 Q TAX_U_IBPTR
76 ;
77 ; TAXDEF - Extrinsic function to retrieve the Taxonomy for the Default
78 ; Division from a record in file 399.
79 ; Input
80 ; IBIEN399 - IEN of the record from file 399
81 ; Output
82 ; Piece 1 = Taxonomy (X12 value) of that record as defined in file 8932.1
83 ; Piece 2 = IEN from file 8932.1
84TAXDEF(IBIEN399) ; Get Taxonomy for Default Division
85 I IBIEN399="" Q U
86 N IBRETVAL,IBORG,IBEVDT,IBDIV,TAX
87 S IBDIV=$$GET1^DIQ(399,IBIEN399_",",.22,"I")
88 S IBEVDT=$$GET1^DIQ(399,IBIEN399_",",.03,"I")
89 S IBORG=$P($$SITE^VASITE(IBEVDT,IBDIV),U)
90 Q $$TAXORG^XUSTAX(IBORG)
91 ;
92 ; NPIUSED - Extrinsic function to determine whether a given NPI is already being used in files 200, 4, or 355.93.
93 ;
94 ; Input
95 ; IBNPI - NPI number to check.
96 ; IBOLDNPI - NPI that is being replaced or deleted
97 ; IBIEN - entry number for file 355.93 of entry being edited
98 ; IBCHECK - Is this a new NPI entry or existing
99 ; IBKEY - They security key XUSNPIMTL
100 ; Output
101 ; 1 = NPI is already being used.
102 ; 0 = NPI is not currently being used.
103 ;
104NPIUSED(IBNPI,IBOLDNPI,IBIEN,IBCHECK,IBKEY) ; Check whether NPI is already used within files 200, 4, or 355.93.
105 N IBNOTIFY,IBVA200,DUP,DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
106 S (IBNOTIFY,IBVA200,DUP)=""
107 S IBNOTIFY=$S(IBCHECK=2:1,1:$$RULES(IBNPI,IBIEN,IBOLDNPI))
108 I IBNOTIFY=0!(IBNOTIFY="") Q ""
109 ;Associating NPI to an entry in NEW PERSON file
110 ;IBNOTIFY of 14 = Replacing an NPI from NEW PERSON file with an NPI from NEW PERSON file
111 I IBNOTIFY=1!(IBNOTIFY=14) D:$G(IBOLDNPI)'=$G(IBNPI) Q $S($G(Y)=1:0,$G(IBCHECK)=2:0,1:1)
112 . D EN^DDIOL("The NPI of "_IBNPI_" is also associated with the INDIVIDUAL provider","","!!")
113 . I $G(IBVA200)="" S IBVA200=$$QI^XUSNPI(IBNPI)
114 . D EN^DDIOL($$GET1^DIQ(200,$P(IBVA200,U,2),.01))
115 . D EN^DDIOL(" in the NEW PERSON file. You are trying to associate","","?0")
116 . D EN^DDIOL("it with "_$S($$GET1^DIQ(355.93,IBIEN,.02,"I")=1:"a FACILITY/GROUP",$$GET1^DIQ(355.93,IBIEN,.02,"I")=2:"an INDIVIDUAL",1:"a")_" provider")
117 . D EN^DDIOL(" in the IB NON/OTHER VA BILLING PROVIDER file.","","?0"),EN^DDIOL("")
118 . S DIR(0)="Y",DIR("A")="Do you still want to add this NPI to provider "_$$GET1^DIQ(355.93,IBIEN,.01),DIR("B")="NO"
119 . S DIR("?")="Answer YES if you wish to associate the NPI from the IB NON/OTHER VA PROVIDER file with the entry in the NEW PERSON file."
120 . D ^DIR,EN^DDIOL("") Q
121 ; NPI is now or was in the past in use in File 4
122 I IBNOTIFY=9 D EN^DDIOL("The NPI of "_IBNPI_" is now, or was in the past, associated with "_$$GET1^DIQ(4,$O(^DIC(4,"ANPI",IBNPI,"")),.01),"","!!"),EN^DDIOL(" in the INSTITUTION file.") Q 1
123 ; NPI is now or was in the past in use in 355.93
124 I IBNOTIFY=11 D EN^DDIOL("The NPI of "_IBNPI_" is now, or was in the past, associated with "_$$GET1^DIQ(355.93,$$DUP(IBNPI),.01),"","!!"),EN^DDIOL(" in the IB NON/OTHER VA BILLING PROVIDER file.") Q 1
125 ;Inactive NPI in 355.93
126 I IBNOTIFY=12 D EN^DDIOL("The NPI of "_IBNPI_" is already associated with the provider "_$$GET1^DIQ(355.93,$$DUP(IBNPI),.01)_" as","","!!") D Q 1
127 . D EN^DDIOL("INACTIVE in the IB NON/OTHER VA BILLING PROVIDER file.")
128 . D EN^DDIOL("You are updating "_$S($$GET1^DIQ(355.93,IBIEN,.02,"I")=1:"a FACILITY/GROUP",$$GET1^DIQ(355.93,IBIEN,.02,"I")=2:"an INDIVIDUAL",1:""),"","!!")
129 . D EN^DDIOL("in the IB NON/OTHER VA BILLING PROVIDER file.")
130 ;Inactive NPI in NEW PERSON file
131 I IBNOTIFY=13 D Q 1
132 .D EN^DDIOL("The NPI of "_IBNPI_" is also associated with the INDIVIDUAL provider","","!!"),EN^DDIOL($$GET1^DIQ(200,$P(IBVA200,U,2),.01)_" in the NEW PERSON file."),EN^DDIOL("The NPI is INACTIVE and may not be used."),EN^DDIOL("")
133 Q ""
134 ;
135 ; DUP - Extrinsic function to determine whether a given NPI is already being used in file# 355.93.
136 ;
137 ; Input
138 ; IBNPI - NPI number to check.
139 ; Output
140 ; NULL - NPI is not currently being used.
141 ; Otherwise, the IEN of the entry in file# 355.93 associated with that NPI.
142 ;
143DUP(IBNPI) ; Check whether this is a duplicate NPI within file# 355.93
144 I IBNPI="" Q ""
145 Q $O(^IBA(355.93,"NPIHISTORY",IBNPI,""))
146 ;
147 ; DISPTAX - Function to display extra Taxonomy info in the input templates in screens 6, 7, and 8 in IB EDIT BILLING INFO
148 ;
149 ; Input
150 ; IBIEN - IEN of the entry in file 8932.1 to be displayed
151 ; IBTXT - (optional) extra text to be displayed before the entry (i.e. "Default Division" or "Non-VA Facility")
152 ;
153DISPTAX(IBIEN,IBTXT) ; Display extra Taxonomy info (when available)
154 N IBX
155 I $G(IBIEN)="" Q
156 S IBX=$$GET1^DIQ(8932.1,IBIEN,1) I IBX]"" W !," ",$G(IBTXT)," Classification: ",IBX
157 S IBX=$$GET1^DIQ(8932.1,IBIEN,2) I IBX]"" W !," ",$G(IBTXT)," Area of Specialization: ",IBX
158 S IBX=$$GET1^DIQ(8932.1,IBIEN,8) I IBX]"" W !," ",$G(IBTXT)," Specialty Code: ",IBX
159 S IBX=$$GET1^DIQ(8932.1,IBIEN,6) W !," ",$G(IBTXT)," Taxonomy X12 Code: ",IBX
160 Q
161RULES(IBNPI,IBIEN,IBOLDNPI) ;Verify that the NPI meets all rules for usage
162 N IBIEN1,IBIEN2,DUP
163 I $G(IBOLDNPI)>0,IBNPI=IBOLDNPI,$D(^VA(200,"ANPI",IBOLDNPI)) Q 1
164 I IBNPI="" Q ""
165 S DUP=$$DUP(IBNPI)
166 ;Duplicate in 355.93
167 I DUP'="",DUP'=IBIEN Q 11
168 ;Replacing an NPI that is associated to NEW PERSON file with another NPI that is associated with the NEW PERSON file
169 I $G(IBOLDNPI)>0,$D(^VA(200,"ANPI",IBOLDNPI)),$D(^VA(200,"ANPI",IBNPI)) Q 14
170 ;Already an inactive NPI
171 S IBIEN2=$O(^IBA(355.93,"NPIHISTORY",IBNPI,"")) D:$G(IBIEN2)'=""
172 . S IBIEN1=$O(^IBA(355.93,IBIEN2,"NPISTATUS","C",IBNPI,""),-1)
173 I $G(IBIEN1)'="",$D(^IBA(355.93,IBIEN2,"NPISTATUS","NPISTATUS",0,IBIEN1)) Q 12
174 ;Check for existence in New Person
175 ;file (#200) and/or Institution file (#4)
176 S IBVA200=$$QI^XUSNPI(IBNPI)
177 I $E($P(IBVA200,U,4),1,8)="Inactive" Q 13
178 I $P(IBVA200,U)="Individual_ID",$P(IBVA200,U,4)["Active" Q 1
179 I $P(IBVA200,U)="Organization_ID",$P(IBVA200,U,4)["Active" Q 9
180 I $D(^DIC(4,"ANPI",IBNPI)) Q 9
181 Q 0
182 ;
183PRENPI(IBIEN) ;Pre-NPI edit messages
184 N IBNPI,IBVA200
185 Q:$G(IBIEN)=""
186 S IBNPI=$P($G(^IBA(355.93,IBIEN,0)),U,14)
187 Q:$G(IBNPI)=""
188 S IBVA200=$$QI^XUSNPI(IBNPI)
189 ;NPI that exists in 355.93 also is used in 200
190 I $P(IBVA200,U,1)="Individual_ID",$P(IBVA200,U,4)["Active" D
191 . W !!,"The NPI of ",IBNPI," is also associated with the INDIVIDUAL provider ",!,$$GET1^DIQ(200,$P(IBVA200,U,2),.01)," in the NEW PERSON file."
192 . W !!,"You are updating ",$S($$GET1^DIQ(355.93,IBIEN,.02,"I")=1:"a FACILITY/GROUP",$$GET1^DIQ(355.93,IBIEN,.02,"I")=2:"an INDIVIDUAL",1:"a")," provider in the"
193 . W !,"IB NON/OTHER VA BILLING PROVIDER file.",!
194 ;The NPI used in 355.93 is inactive in 200
195 I $P(IBVA200,U,1)="Individual_ID",$P(IBVA200,U,4)["Inactive" D
196 . W !!,"The NPI of ",IBNPI," is also associated with the INDIVIDUAL provider ",!,$$GET1^DIQ(200,$P(IBVA200,U,2),.01)," as INACTIVE in the NEW PERSON file."
197 . W !!,"You are updating ",$S($$GET1^DIQ(355.93,IBIEN,.02,"I")=1:"a FACILITY/GROUP",$$GET1^DIQ(355.93,IBIEN,.02,"I")=2:"an INDIVIDUAL",1:"a")," provider in the"
198 . W !,"IB NON/OTHER VA BILLING PROVIDER file.",!
199 Q
Note: See TracBrowser for help on using the repository browser.