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