[613] | 1 | RCDPESR1 ;ALB/TMP - Server interface to AR from Austin ;06/03/02
|
---|
| 2 | ;;4.5;Accounts Receivable;**173,214,208,202**;Mar 20, 1995
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | Q
|
---|
| 5 | ;
|
---|
| 6 | PERROR(RCERR,RCEMG,RCXMZ) ; Process Errors - Send bulletin to mail group
|
---|
| 7 | ; RCERR = Error text array
|
---|
| 8 | ; RCEMG = name of the mail group to which these errors should be sent
|
---|
| 9 | ; RCXMZ = internal entry # of the mailman msg
|
---|
| 10 | ; RCTYPE = msg type, if known
|
---|
| 11 | N CT,XMDUZ,XMSUBJ,XMBODY,XMB,XMINSTR,XMTYPE,XMFULL,XMTO,RCXM,XMZ,XMERR,Z
|
---|
| 12 | ;
|
---|
| 13 | S CT=0
|
---|
| 14 | ;
|
---|
| 15 | I $G(RCEMG)="" S CT=CT+1,RCXM(CT)=$P($T(ERROR+2),";;",2),XMTO(.5)=""
|
---|
| 16 | ;
|
---|
| 17 | I $D(RCEMG) D
|
---|
| 18 | . S:RCEMG="" RCEMG="RCDPE PAYMENTS EXCEPTIONS"
|
---|
| 19 | . S:$E(RCEMG,1,2)'="G." RCEMG="G."_RCEMG
|
---|
| 20 | . S XMTO("I:"_RCEMG)=""
|
---|
| 21 | ;
|
---|
| 22 | S Z=$O(XMTO("")) I Z=.5,'$O(XMTO(.5)) S XMTO("I:G.RCDPE PAYMENTS EXCEPTIONS")=""
|
---|
| 23 | D EMFORM(CT,.RCERR,.RCXM,RCXMZ)
|
---|
| 24 | ;
|
---|
| 25 | S XMDUZ=""
|
---|
| 26 | S XMSUBJ="EDI LBOX SERVER OPTION ERROR",XMBODY="RCXM"
|
---|
| 27 | D
|
---|
| 28 | . N DUZ S DUZ=.5,DUZ(0)="@"
|
---|
| 29 | . D SENDMSG^XMXAPI(.5,XMSUBJ,XMBODY,.XMTO,,.XMZ)
|
---|
| 30 | K ^TMP("RCRAW",$J)
|
---|
| 31 | Q
|
---|
| 32 | ;
|
---|
| 33 | EMFORM(CT,RCERR,RCXM,RCXMZ) ; Format error msgs
|
---|
| 34 | ; INPUT:
|
---|
| 35 | ; CT = # of lines previously populated in error msg
|
---|
| 36 | ; RCERR = array of errors
|
---|
| 37 | ; RCXMZ = internal entry # of mailman msg
|
---|
| 38 | ;
|
---|
| 39 | ; OUTPUT:
|
---|
| 40 | ; RCXM = array containing the complete error msg text
|
---|
| 41 | ;
|
---|
| 42 | N TTYPE,TDATE,TTIME,Z
|
---|
| 43 | ;
|
---|
| 44 | S TDATE=$G(^TMP("RCERR",$J,"DATE")),TTIME=$P(TDATE,".",2)_"000000",TDATE=$$FMTE^XLFDT($P(TDATE,"."),"2D")
|
---|
| 45 | S TTYPE=$G(^TMP("RCMSG",$J))
|
---|
| 46 | ;
|
---|
| 47 | S CT=CT+1
|
---|
| 48 | S RCXM(CT)="** AN EXCEPTION HAS BEEN DETECTED FOR AN EDI LOCKBOX RETURN MESSAGE **",CT=CT+1,RCXM(CT)=" "
|
---|
| 49 | S CT=CT+1
|
---|
| 50 | S RCXM(CT)=" Return Message Code: "_$S(TTYPE="":$S($G(^TMP("RCERR",$J,"TYPE"))'="":^("TYPE"),1:"Cannot be determined"),1:TTYPE)
|
---|
| 51 | ;
|
---|
| 52 | S CT=CT+2
|
---|
| 53 | S RCXM(CT-1)=" ",RCXM(CT)=$J("",13)_"Return Message Date: "_TDATE_" Message Time: "_$E(TTIME,1,2)_":"_$E(TTIME,3,4)_":"_$E(TTIME,5,6),CT=CT+1
|
---|
| 54 | ;
|
---|
| 55 | S CT=CT+2,RCXM(CT-1)=" ",RCXM(CT)=$J("",15)_"Mailman Message #: "_$G(RCXMZ)
|
---|
| 56 | ;
|
---|
| 57 | I $G(RCERR)'="",RCERR?1A.E S CT=CT+2,RCXM(CT-1)=" ",RCXM(CT)=RCERR
|
---|
| 58 | I $G(^TMP("RCERR",$J,"TEXT"))'="" S CT=CT+2,RCXM(CT)=^("TEXT"),RCXM(CT-1)=" "
|
---|
| 59 | ;
|
---|
| 60 | S Z="" F S Z=$O(RCERR(Z)) Q:Z="" S:$G(^TMP("RCERR",$J,"TEXT"))="" CT=CT+1,RCXM(CT)=" " I $G(RCERR(Z))'="",RCERR(Z)'=" " S CT=CT+1,RCXM(CT)=RCERR(Z)
|
---|
| 61 | S Z=0 F S Z=$O(^TMP("RCERR",$J,"MSG",Z)) Q:'Z S CT=CT+1,RCXM(CT)=^(Z)
|
---|
| 62 | ;
|
---|
| 63 | Q
|
---|
| 64 | ;
|
---|
| 65 | EXTERR(RCERR,RCE) ; Put error into error array
|
---|
| 66 | ; Returns: (must be passed by reference)
|
---|
| 67 | ; RCERR = specific error encountered, returned as 4
|
---|
| 68 | ; RCE = error text from the word processing field update error global
|
---|
| 69 | N RCZ,Q
|
---|
| 70 | S RCE="",RCERR=4 ; error reported as 'record was partially stored'
|
---|
| 71 | S RCZ=0 F S RCZ=$O(RCE("DIERR",RCZ)) Q:'RCZ S Q=$G(RCE("DIERR",RCZ,"TEXT",1)) I $L(Q),$L(Q)+$L(RCE)<99 S RCE=RCE_Q_";;"
|
---|
| 72 | Q
|
---|
| 73 | ;
|
---|
| 74 | ERRUPD(RCGBL,RCD,RCTYPE,RCERR) ; Set up global array to hold msg data
|
---|
| 75 | ; RCGBL = name of the global or array where msg data is found
|
---|
| 76 | ; RCD = array containing mail header data for the msg
|
---|
| 77 | ; RCTYPE = type of msg (835ERA/835XFR/etc)
|
---|
| 78 | ; RCERR = error array - text or reference to error tables below
|
---|
| 79 | ;
|
---|
| 80 | ; Returns ^TMP("RCERR",$J,"MSG" array with formatted error text
|
---|
| 81 | ;
|
---|
| 82 | N Z,Z0,Z1,Z2,CT,RCE
|
---|
| 83 | ;
|
---|
| 84 | Q:$G(RCERR)<0
|
---|
| 85 | K ^TMP("RCERR",$J)
|
---|
| 86 | S CT=0
|
---|
| 87 | ;
|
---|
| 88 | S ^TMP("RCERR",$J,"DATE")=$G(RCD("DATE"))
|
---|
| 89 | S ^TMP("RCERR",$J,"TYPE")=$G(RCTYPE)
|
---|
| 90 | S ^TMP("RCERR",$J,"SUBJ")=$G(RCD("SUBJ"))
|
---|
| 91 | ;
|
---|
| 92 | I $G(RCERR)>0,RCERR<20 D
|
---|
| 93 | . S Z="ERROR2+"_RCERR
|
---|
| 94 | . S RCE=$P($T(@Z),";;",2)
|
---|
| 95 | . I RCE'="" S ^TMP("RCERR",$J,"TEXT")=RCE
|
---|
| 96 | ;
|
---|
| 97 | S Z="" F S Z=$O(RCERR(Z)) Q:Z="" S Z0="" F S Z0=$O(RCERR(Z,Z0)) Q:Z0="" S RCE=$G(RCERR(Z,Z0)) D
|
---|
| 98 | . I $L(RCE) S CT=CT+1,^TMP("RCERR",$J,"MSG",CT)=$S(RCE:$P($T(ERROR+RCE),";;",2),1:RCE)
|
---|
| 99 | . S RCTYPE=$P($G(@RCGBL@(0)),U)
|
---|
| 100 | . S:$G(^TMP("RCERR",$J,"TYPE"))="" ^("TYPE")=RCTYPE
|
---|
| 101 | . S Z1=""
|
---|
| 102 | . F S Z1=$O(@RCGBL@(1,"D",Z1)) Q:Z1="" S CT=CT+1,^TMP("RCERR",$J,"MSG",CT)=$G(@RCGBL@(1,"D",Z1))
|
---|
| 103 | ;
|
---|
| 104 | I $D(@RCGBL@(2,"D")) D
|
---|
| 105 | . S CT=CT+2,^TMP("RCERR",$J,"MSG",CT-1)=" ",^TMP("RCERR",$J,"MSG",CT)="**** RAW MESSAGE DATA ****:"
|
---|
| 106 | . I $G(^TMP("RCMSGH",$J,0))'="" S CT=CT+1,^TMP("RCERR",$J,"MSG",CT)=^TMP("RCMSGH",$J,0)
|
---|
| 107 | . S Z2="" F S Z2=$O(@RCGBL@(2,"D",Z2)) Q:Z2="" S CT=CT+1,^TMP("RCERR",$J,"MSG",CT)=$G(@RCGBL@(2,"D",Z2))
|
---|
| 108 | E D
|
---|
| 109 | . Q:'$D(^TMP("RCRAW",$J))
|
---|
| 110 | . S CT=CT+2,^TMP("RCERR",$J,"MSG",CT-1)=" ",^TMP("RCERR",$J,"MSG",CT)="**** RAW MESSAGE DATA ****:"
|
---|
| 111 | . I $G(^TMP("RCMSGH",$J,0))'="" S CT=CT+1,^TMP("RCERR",$J,"MSG",CT)=^TMP("RCMSGH",$J,0)
|
---|
| 112 | . S Z2="" F S Z2=$O(^TMP("RCRAW",$J,Z2)) Q:Z2="" S CT=CT+1,^TMP("RCERR",$J,"MSG",CT)=$G(^TMP("RCRAW",$J,Z2))
|
---|
| 113 | ;
|
---|
| 114 | Q
|
---|
| 115 | ;
|
---|
| 116 | DKILL(RCXMZ) ; Delete server mail msg from postmaster mailbox
|
---|
| 117 | ; RCXMZ = ien of mailman msg
|
---|
| 118 | ;
|
---|
| 119 | D ZAPSERV^XMXAPI("S.RCDPE EDI LOCKBOX SERVER",RCXMZ)
|
---|
| 120 | Q
|
---|
| 121 | ;
|
---|
| 122 | TEMPDEL(DA) ; Delete msg from temporary msg file
|
---|
| 123 | ; DA = ien of the entry in file 344.5
|
---|
| 124 | ;
|
---|
| 125 | N DIK,Y,X
|
---|
| 126 | S DIK="^RCY(344.5," D ^DIK
|
---|
| 127 | L -^RCY(344.5,DA,0)
|
---|
| 128 | Q
|
---|
| 129 | ;
|
---|
| 130 | RESTMSG(RCD,RCARRAY,XMZ) ; Read rest of msg, store in array
|
---|
| 131 | ; RCD = last line # already in the msg
|
---|
| 132 | ; RCARRAY = name of the array to store the data in
|
---|
| 133 | ; XMZ = ien of the mailman msg
|
---|
| 134 | ;
|
---|
| 135 | F X XMREC Q:XMER<0 S RCD=RCD+1,@RCARRAY@(RCD)=XMRG
|
---|
| 136 | Q
|
---|
| 137 | ;
|
---|
| 138 | TAXERR(RCTYPE,RCINS,RCTID,RCCHG) ; Send a bulletin for a bad tax id
|
---|
| 139 | ; RCTYPE = "ERA" for an ERA record, "EFT" for an EFT record
|
---|
| 140 | ; RCINS = name and id to identify the ins co
|
---|
| 141 | ; RCTID = tax id sent in error
|
---|
| 142 | ; RCCHG = code describing how correction was made
|
---|
| 143 | ; 'E'=EPHRA, 'C'=Changed by looking at claim #'s
|
---|
| 144 | ;
|
---|
| 145 | N XMBODY,XMB,XMINSTR,XMTYPE,XMFULL,XMTO,RCDXM,XMZ,XMERR,RCCT,RCDXM,RCCT
|
---|
| 146 | S RCCT=0
|
---|
| 147 | S RCCT=RCCT+1,RCDXM(RCCT)="An "_RCTYPE_" was received at your site "_$$FMTE^XLFDT($$NOW^XLFDT(),2)_" with an invalid tax id.",RCCT=RCCT+1,RCDXM(RCCT)=" From: "_RCINS
|
---|
| 148 | S RCCT=RCCT+1,RCDXM(RCCT)=" The tax id sent was: "_RCTID_" and it was corrected by: "
|
---|
| 149 | S RCCT=RCCT+1,RCDXM(RCCT)=" "_$S(RCCHG="E":"EPHRA",1:"Extracting it based on bill numbers in the ERA")
|
---|
| 150 | S RCCT=RCCT+2,RCDXM(RCCT-1)=" ",RCDXM(RCCT)="If your site continues to receive these bulletins for this payer,",RCCT=RCCT+1,RCDXM(RCCT)="contact the payer and request they correct their tax id for your site"
|
---|
| 151 | ;
|
---|
| 152 | S XMTO("I:G.RCDPE PAYMENTS")="",XMBODY="RCDXM"
|
---|
| 153 | D
|
---|
| 154 | . N DUZ S DUZ=.5,DUZ(0)="@"
|
---|
| 155 | . D SENDMSG^XMXAPI(.5,"EDI LBOX ERRONEOUS TAX ID ON "_RCTYPE,XMBODY,.XMTO,,.XMZ)
|
---|
| 156 | Q
|
---|
| 157 | ;
|
---|
| 158 | BILL(X,RCDT,RCIB) ; Returns ien of bill in X or -1 if not valid
|
---|
| 159 | ; RCDT = the Statement from date (used for Rx bills)
|
---|
| 160 | ; and, if passed by reference, RCIB = 1 if an insurance bill
|
---|
| 161 | N DIC,Y
|
---|
| 162 | S RCIB=0
|
---|
| 163 | S X=$TR(X," "),X=$TR(X,"O","0") ; Remove spaces, change ohs to zeroes
|
---|
| 164 | I X'["-",$E(X,1,3)?3N,$L(X)>7 S X=$E(X,1,3)_"-"_$E(X,4,$L(X))
|
---|
| 165 | S DIC="^PRCA(430,",DIC(0)="MZ" D ^DIC
|
---|
| 166 | I Y<0,X?1.7N D ; Rx lookup
|
---|
| 167 | . N ARRAY
|
---|
| 168 | . S ARRAY("ECME")=X,ARRAY("FILLDT")=$G(RCDT)
|
---|
| 169 | . S Y=$$RXBIL^IBNCPDPU(.ARRAY)
|
---|
| 170 | . I Y>0 S Y(0)=$G(^PRCA(430,+Y,0))
|
---|
| 171 | I Y>0 S RCIB=($P($G(^RCD(340,+$P(Y(0),U,9),0)),U)["DIC(36,")
|
---|
| 172 | Q +Y
|
---|
| 173 | ;
|
---|
| 174 | FMDT(X) ; Format date (X) in YYYYMMDD to Fileman format
|
---|
| 175 | I $L(X)=8 D
|
---|
| 176 | . S X=$E(X,1,4)-1700_$E(X,5,8)
|
---|
| 177 | Q X
|
---|
| 178 | ;
|
---|
| 179 | ERROR ; Top level error msgs for msgs
|
---|
| 180 | ;;Invalid mailgroup designated for EDI Lockbox errors
|
---|
| 181 | ;;Message header error
|
---|
| 182 | ;
|
---|
| 183 | ERROR2 ; Error condition msgs for msgs
|
---|
| 184 | ;;Message code is invalid for EDI Lockbox.
|
---|
| 185 | ;;This message has no ending $ or 99 record.
|
---|
| 186 | ;;Message file problem - no message stored.
|
---|
| 187 | ;;Message file problem - message partially stored.
|
---|
| 188 | ;;No valid claims for the site found on the ERA.
|
---|
| 189 | ;
|
---|