1 | IBCNBLE1 ;DAOU/ESG - Ins Buffer, Expand Entry, con't ;25-JUN-2002
|
---|
2 | ;;2.0;INTEGRATED BILLING;**184,271**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ; Can't be called from the top
|
---|
6 | Q
|
---|
7 | ;
|
---|
8 | BLD ; Continuation of Expand Entry list build procedure
|
---|
9 | ; --- Called by IBCNBLE
|
---|
10 | ;
|
---|
11 | NEW ERR,MSG,IBL,IBY,IBLINE,IBER,IBLN,EDITED,ORIGSYME,ORIGSYMI,EEUPDATE
|
---|
12 | NEW ORIGSYMS
|
---|
13 | ;
|
---|
14 | ; save the external and internal IIV status values
|
---|
15 | S ORIGSYMS=$$SYMBOL^IBCNBLL(IBBUFDA)
|
---|
16 | S ORIGSYME=$$GET1^DIQ(355.33,IBBUFDA,.12,"E")
|
---|
17 | S ORIGSYMI=$P(IB0,U,12)
|
---|
18 | ;
|
---|
19 | ; Determine if Expand Entry is allowed to update the IIV Status
|
---|
20 | S EEUPDATE=1 ; default Expand Entry update flag to true
|
---|
21 | I ORIGSYMI,'$P($G(^IBE(365.15,ORIGSYMI,0)),U,3) S EEUPDATE=0
|
---|
22 | ;
|
---|
23 | ; Do not update the IIV status if manually verified
|
---|
24 | I ORIGSYMS="*" S EEUPDATE=0
|
---|
25 | ;
|
---|
26 | ; If the current IIV Status allows updates by Expand Entry, then
|
---|
27 | ; invoke the function that trys to find a valid payer
|
---|
28 | I EEUPDATE D
|
---|
29 | . S ERR=$$INSERROR^IBCNEUT3("B",IBBUFDA,1,.MSG)
|
---|
30 | . ; If no errors, then remove the IIV Status
|
---|
31 | . I 'ERR S ERR=$$SIDERR(IBBUFDA,$P(ERR,U,2))
|
---|
32 | . I 'ERR D CLEAR^IBCNEUT4(IBBUFDA,.EDITED)
|
---|
33 | . ; If errors found, then update with the new IIV Status
|
---|
34 | . I ERR D BUFF^IBCNEUT2(IBBUFDA,$P(ERR,U,1)) S EDITED=1
|
---|
35 | . ; refresh the IB0 variable for the possible symbol change
|
---|
36 | . S $P(IB0,U,12)=$P($G(^IBA(355.33,IBBUFDA,0)),U,12)
|
---|
37 | . Q
|
---|
38 | ;
|
---|
39 | ; Possibly display information if the OVERRIDE FRESHNESS FLAG is on
|
---|
40 | I $P(IB0,U,13) D
|
---|
41 | . S IBL="User Requested Inquiry?: ",IBY="YES"
|
---|
42 | . S IBLINE=$$SETL^IBCNBLE("",IBY,IBL,18,3)
|
---|
43 | . D SET^IBCNBLE(IBLINE) S IBLINE=""
|
---|
44 | . Q
|
---|
45 | ;
|
---|
46 | ; Display the Current Status line
|
---|
47 | S IBL="Current IIV Status: "
|
---|
48 | S IBY=$$GET1^DIQ(355.33,IBBUFDA,.12,"E")
|
---|
49 | I IBY="",$$SYMBOL^IBCNBLL(IBBUFDA)'="*" S IBY="No problems identified, Awaiting electronic processing"
|
---|
50 | I $$SYMBOL^IBCNBLL(IBBUFDA)="*" S IBY="Manually verified, No IIV activity at this time"
|
---|
51 | S IBLINE=$$SETL^IBCNBLE("",IBY,IBL,18,80)
|
---|
52 | D SET^IBCNBLE(IBLINE) S IBLINE=""
|
---|
53 | ;
|
---|
54 | ; Display any text returned by the payer function
|
---|
55 | F IBER=1:1:$G(MSG) D SET^IBCNBLE(" ") F IBLN=1:1:$P($G(MSG(IBER)),U,2) D SET^IBCNBLE(" "_$G(MSG(IBER,IBLN)))
|
---|
56 | ;
|
---|
57 | ; Display the current IIV Status generic description
|
---|
58 | D SYMTXT($P(IB0,U,12),1)
|
---|
59 | D SYMTXT($P(IB0,U,12),2)
|
---|
60 | ;
|
---|
61 | ; If the IIV Status ien changed from what it once was, then display the
|
---|
62 | ; Prior Status line
|
---|
63 | I ORIGSYMI'=$P(IB0,U,12) D
|
---|
64 | . I $P(IB0,U,12) D SET^IBCNBLE(" ")
|
---|
65 | . S IBL="Prior Status: "
|
---|
66 | . S IBY=ORIGSYME
|
---|
67 | . I IBY="",ORIGSYMS'="*" S IBY="No problems identified, Awaiting electronic processing"
|
---|
68 | . I ORIGSYMS="*" S IBY="Manually verified, No IIV activity at this time"
|
---|
69 | . S IBLINE=$$SETL^IBCNBLE("",IBY,IBL,18,80)
|
---|
70 | . D SET^IBCNBLE(IBLINE) S IBLINE=""
|
---|
71 | . D SYMTXT(ORIGSYMI,1)
|
---|
72 | . Q
|
---|
73 | ;
|
---|
74 | ; Display any existing EC errors
|
---|
75 | D ECERR
|
---|
76 | ;D SET^IBCNBLE(" ")
|
---|
77 | ;
|
---|
78 | ; If the IIV Status was modified then refresh the visual display
|
---|
79 | I $G(EDITED) D UPDLN^IBCNBLL(IBBUFDA,"EDITED")
|
---|
80 | BLDX ;
|
---|
81 | Q
|
---|
82 | ;
|
---|
83 | SYMTXT(IEN,TYPE) ; Display the text from the IIV symbol file for this entry
|
---|
84 | ; TYPE=1 - Display Description from IIV Status Table file
|
---|
85 | ; TYPE=2 - Display Corrective Action from IIV Status Table file
|
---|
86 | NEW IBJ
|
---|
87 | I '$G(IEN) G SYMX
|
---|
88 | I '$P($G(^IBE(365.15,IEN,TYPE,0)),U,4) G SYMX
|
---|
89 | D SET^IBCNBLE(" ")
|
---|
90 | S IBJ=0
|
---|
91 | F S IBJ=$O(^IBE(365.15,IEN,TYPE,IBJ)) Q:'IBJ D SET^IBCNBLE(" "_$G(^IBE(365.15,IEN,TYPE,IBJ,0)))
|
---|
92 | SYMX ;
|
---|
93 | Q
|
---|
94 | ;
|
---|
95 | ECERR ; Display the Eligibility Communicator Error data from the
|
---|
96 | ; response file if it exists
|
---|
97 | ;
|
---|
98 | NEW RESP,RESPDATA,ERRTXT,IBY,IBLINE,ERRDATA,FUTDT,TQIEN,IBERR,IBCT
|
---|
99 | S RESP=$O(^IBCN(365,"AF",IBBUFDA,""),-1)
|
---|
100 | I 'RESP G ECERRX
|
---|
101 | S RESPDATA=$G(^IBCN(365,RESP,1))
|
---|
102 | S ERRTXT=$P($G(^IBCN(365,RESP,4)),U,1)
|
---|
103 | S TQIEN=+$P($G(^IBCN(365,RESP,0)),U,5) ; Trans Queue file ien
|
---|
104 | S FUTDT=$P($G(^IBCN(365.1,TQIEN,0)),U,9) ; Future date to transmit
|
---|
105 | I '$P(RESPDATA,U,14),'$P(RESPDATA,U,15),ERRTXT="",'FUTDT G ECERRX
|
---|
106 | ;
|
---|
107 | ; At this point, we know there's something to get displayed
|
---|
108 | ;
|
---|
109 | ; Display section header
|
---|
110 | D SET^IBCNBLE(" ")
|
---|
111 | S IBY=$J("",19)_"Eligibility Communicator Error Information"
|
---|
112 | D SET^IBCNBLE(IBY,"B") S IBLINE=""
|
---|
113 | ;
|
---|
114 | ; Display Error Condition data - field# 1.14
|
---|
115 | I $P(RESPDATA,U,14) D
|
---|
116 | . S ERRDATA=$G(^IBE(365.017,$P(RESPDATA,U,14),0))
|
---|
117 | . K IBERR
|
---|
118 | . S IBERR(1)=$P(ERRDATA,U,2)_" (Error Condition '"_$P(ERRDATA,U,1)_"')"
|
---|
119 | . D TXT^IBCNEUT7("IBERR")
|
---|
120 | . F IBCT=1:1:$O(IBERR(""),-1) D SET^IBCNBLE(IBERR(IBCT))
|
---|
121 | . Q
|
---|
122 | ;
|
---|
123 | ; Display Error Action data - field# 1.15
|
---|
124 | I $P(RESPDATA,U,15) D
|
---|
125 | . S ERRDATA=$G(^IBE(365.018,$P(RESPDATA,U,15),0))
|
---|
126 | . K IBERR
|
---|
127 | . S IBERR(1)=$P(ERRDATA,U,2)_" (Error Action '"_$P(ERRDATA,U,1)_"')"
|
---|
128 | . D TXT^IBCNEUT7("IBERR")
|
---|
129 | . F IBCT=1:1:$O(IBERR(""),-1) D SET^IBCNBLE(IBERR(IBCT))
|
---|
130 | . Q
|
---|
131 | ;
|
---|
132 | ; Display Error Text data - field# 4.01
|
---|
133 | I ERRTXT'="" D SET^IBCNBLE(ERRTXT)
|
---|
134 | ;
|
---|
135 | ; Display Date of Future Transmission - field# .09 in file 365.1
|
---|
136 | I FUTDT D
|
---|
137 | . S FUTDT=$$FMTE^XLFDT(FUTDT,"5Z")
|
---|
138 | . D SET^IBCNBLE(" ")
|
---|
139 | . S IBLINE=" Date of Future Transmission: "_FUTDT
|
---|
140 | . D SET^IBCNBLE(IBLINE) S IBLINE=""
|
---|
141 | . Q
|
---|
142 | ECERRX ;
|
---|
143 | Q
|
---|
144 | ;
|
---|
145 | SIDERR(BUF,PIEN) ;
|
---|
146 | ; If Subscriber ID is required and SSN cannot be substituted
|
---|
147 | ; and buffer does not have a sub id -> return error
|
---|
148 | ; BUF = buffer IEN
|
---|
149 | ; PIEN = payer IEN
|
---|
150 | ;
|
---|
151 | N ERR,SID,APPIEN,SIDSTR,SIDREQ,SIDSSN
|
---|
152 | S ERR=""
|
---|
153 | S SID=$P($G(^IBA(355.33,BUF,60)),U,4)
|
---|
154 | I SID]"" G SIDX ; Subscriber id is populated, further checking is moot
|
---|
155 | S APPIEN=$$PYRAPP^IBCNEUT5("IIV",PIEN)
|
---|
156 | S SIDSTR=$G(^IBE(365.12,PIEN,1,APPIEN,0))
|
---|
157 | S SIDREQ=$P(SIDSTR,U,8) I 'SIDREQ G SIDX ; if sub id is not req'd - ok
|
---|
158 | S SIDSSN=$P(SIDSTR,U,9)
|
---|
159 | I 'SIDSSN S ERR=18 ; if ssn cannot be used -> B15 status (IEN = 18)
|
---|
160 | SIDX Q ERR
|
---|
161 | ;
|
---|