| 1 | RCDPESR0 ;ALB/TMK - Server auto-update utilities - EDI Lockbox ;06/03/02
|
---|
| 2 | ;;4.5;Accounts Receivable;**173,208**;Mar 20, 1995
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ; IA for read access to ^IBM(361.1 = 4051
|
---|
| 5 | ;
|
---|
| 6 | DISP(RCMIN,RCMOUT,RCFMT,RCFULL,RCW,RC3444) ; Format the 835 return msg
|
---|
| 7 | ; RCMIN = the name of the array that contains the raw message data
|
---|
| 8 | ; The data is contained at the next level and the subscript is
|
---|
| 9 | ; numeric and greater than 0 or the data can be at the
|
---|
| 10 | ; 0-node subsequent to the final subscript.
|
---|
| 11 | ; If the message array is a global ^TMP($J,"MSG",n), RCMIN
|
---|
| 12 | ; will equal "^TMP($J,""MSG"")" and the message text will be
|
---|
| 13 | ; in ^TMP($J,"MSG",1), ^TMP($J,"MSG",2), etc. OR
|
---|
| 14 | ; the message text can be defined at TMP($J,"MSG",1,0) ^...,2,0)
|
---|
| 15 | ; etc.
|
---|
| 16 | ; RCMOUT = the name of the array that should be returned. This array
|
---|
| 17 | ; will follow the same convention as the input array. The
|
---|
| 18 | ; array will be returned with a numeric final subscript. If
|
---|
| 19 | ; RCMOUT is passed as "^TMP($J,""MSG1"")", then the display
|
---|
| 20 | ; lines will be returned in ^TMP($J,"MSG1",1),
|
---|
| 21 | ; ^TMP($J,"MSG1",2), etc. Note the array RCMOUT is killed
|
---|
| 22 | ; on entry to this call
|
---|
| 23 | ; RCFMT = 0 or null if call should return raw data, 1 to execute the
|
---|
| 24 | ; transforms attached to the fields
|
---|
| 25 | ; RCFULL = the name of an array if the data should be returned in
|
---|
| 26 | ; this array, formatted into lines for display. If not sent,
|
---|
| 27 | ; only the display data by element is returned in RCMOUT. If
|
---|
| 28 | ; RCFULL is sent, the array is killed before populating it
|
---|
| 29 | ; RCW = max # of characters per line to return in array RCFULL
|
---|
| 30 | ; RC3444 = flag that indicates only return bill data, not header data
|
---|
| 31 | ;
|
---|
| 32 | N Z,Z0,Z1,RC,RCCT,RCREF,RCDATA,RCQ,R
|
---|
| 33 | S RCCT=0,RCREF="" K @RCMOUT
|
---|
| 34 | S Z=0 F S Z=$O(@RCMIN@(Z)) Q:'Z S Z0=$S($G(@RCMIN@(Z))'="":@RCMIN@(Z),1:$G(@RCMIN@(Z,0))) I Z0'="" S RCQ=0 D
|
---|
| 35 | . F Z1=1:1:$L(Z0,U) I $P(Z0,U,Z1)'="" D Q:RCQ
|
---|
| 36 | .. S RCDATA=$P(Z0,U,Z1)
|
---|
| 37 | .. I Z1=1 D Q:RCQ
|
---|
| 38 | ... S RC=""
|
---|
| 39 | ... I RCDATA'="",RCDATA?.N.A D
|
---|
| 40 | .... S RCREF=$S($E(RCDATA,1,3)'="835":$E(RCDATA,1,8),1:"835"),R=RCREF_"^RCDPESR9",RC=$P($T(@R),";;",2)
|
---|
| 41 | ... I RC="" S RCCT=RCCT+1,@RCMOUT@(RCCT)="<<<INVALID LINE TYPE - RAW DATA IS:",RCCT=RCCT+1,@RCMOUT@(RCCT)=Z0,RCDATA=""
|
---|
| 42 | .. Q:RCDATA=""!(RCREF="")!$S(RCREF="835":$G(RC3444),1:0)
|
---|
| 43 | .. S RC=""
|
---|
| 44 | .. I RCREF?.A.N D
|
---|
| 45 | ... S R=RCREF_"+"_Z1_"^RCDPESR9",RC=$P($T(@R),";;",2)
|
---|
| 46 | .. I RC=""!($P(RC,U)'=RCREF) S:$S(RCDATA'="":1,1:'$P(RC,U,2)) RCCT=RCCT+1,@RCMOUT@(RCCT)="NO DATA DEFINITION PC "_Z1_": "_RCDATA Q
|
---|
| 47 | .. I RC'="" D
|
---|
| 48 | ... N X,X1,Y
|
---|
| 49 | ... S X1=$P(RC,U,4,99)
|
---|
| 50 | ... I $G(RCFMT),X1'="" S X=RCDATA X X1 S RCDATA=Y ; Output transform
|
---|
| 51 | ... Q:RCDATA=""&($P(RC,U,2)) ; Don't output if null data
|
---|
| 52 | ... S RC=$P(RC,U,3)
|
---|
| 53 | ... S RCCT=RCCT+1,@RCMOUT@(RCCT)=$S(Z1=1:"<<<",1:"")_RC_": "_RCDATA_$S(Z1=1:">>>",1:"")
|
---|
| 54 | I $G(RCFULL)'="" D FMTDSP(RCMOUT,RCFULL,$G(RCW),$G(RC3444))
|
---|
| 55 | Q
|
---|
| 56 | ;
|
---|
| 57 | FMTDSP(RCMUN,RCMFO,RCW,RCNOH05) ; Format the display data in array named in
|
---|
| 58 | ; RCMUN into lines up to RCW characters wide RCMUN must be set up the
|
---|
| 59 | ; same as the output of the DISP call above
|
---|
| 60 | ; Returns array named in RCMFO with the last subscript being the line #
|
---|
| 61 | ; Note @RCMFO is killed on entry to this call
|
---|
| 62 | ; Default is 80 if RCW=0 or null
|
---|
| 63 | ; RCNOH05 = flag that if =1, suppresses the '05' header
|
---|
| 64 | ;
|
---|
| 65 | N Z,RCLINE,RCCT,RCCT1,RCMID,RCD,RCSTART,RCLINE,RCDASH
|
---|
| 66 | K @RCMFO
|
---|
| 67 | S:'$G(RCW) RCW=80
|
---|
| 68 | S RCDASH=" "_$TR($J("",RCW-2)," ","-")
|
---|
| 69 | S (RCCT,RCCT1)=0,RCLINE="",RCMID=RCW\2-1
|
---|
| 70 | S Z=0 F S Z=$O(@RCMUN@(Z)) Q:'Z S RCD=$G(@RCMUN@(Z)) D
|
---|
| 71 | . I $E(RCD,1,3)="<<<" D Q ; New line needed ... record start
|
---|
| 72 | .. I $L(RCLINE)>0 S RCCT=RCCT+1,@RCMFO@(RCCT)=RCLINE,RCLINE=""
|
---|
| 73 | .. I $L(RCLINE)=0 D
|
---|
| 74 | ... I Z>1 S RCCT=RCCT+1,@RCMFO@(RCCT)=" "
|
---|
| 75 | ... I RCD["<<<Line Type: 05 ",'$G(RCNOH05) S RCCT1=RCCT1+1,RCCT=RCCT+1,@RCMFO@(RCCT)=RCDASH,RCCT=RCCT+1,@RCMFO@(RCCT)="****** ERA DETAIL START ******",RCCT=RCCT+1,@RCMFO@(RCCT)=RCDASH
|
---|
| 76 | ... I $L(RCD)>RCW D Q
|
---|
| 77 | .... S RCSTART=1
|
---|
| 78 | .... F S RCCT=RCCT+1,@RCMFO@(RCCT)=$E(RCD,RCSTART,RCSTART+RCW-1),RCSTART=RCSTART+RCW Q:RCSTART>$L(RCD)
|
---|
| 79 | ... S RCCT=RCCT+1,@RCMFO@(RCCT)=RCD
|
---|
| 80 | . ;
|
---|
| 81 | . I $L(RCD)>RCW D Q ; Split line if greater than width given
|
---|
| 82 | .. I $L(RCLINE) S RCCT=RCCT+1,@RCMFO@(RCCT)=RCLINE
|
---|
| 83 | .. S RCSTART=1
|
---|
| 84 | .. F S RCCT=RCCT+1,@RCMFO@(RCCT)=$E(RCD,RCSTART,RCSTART+RCW-1),RCSTART=RCSTART+RCW Q:RCSTART>$L(RCD)
|
---|
| 85 | .. S RCLINE=""
|
---|
| 86 | . I $L(RCLINE)=0 D Q ; Format left side of line
|
---|
| 87 | .. S RCLINE=RCD
|
---|
| 88 | .. ;
|
---|
| 89 | .. I $L(RCLINE)>RCMID S RCCT=RCCT+1,@RCMFO@(RCCT)=RCLINE,RCLINE=""
|
---|
| 90 | . ;
|
---|
| 91 | . I (RCMID+$L(RCD)+1)>RCW D Q ; data too long for right side of line
|
---|
| 92 | .. S RCCT=RCCT+1,@RCMFO@(RCCT)=RCLINE,RCLINE=""
|
---|
| 93 | . S RCLINE=$E(RCLINE_$J("",RCMID),1,RCMID)_" "_RCD,RCCT=RCCT+1,@RCMFO@(RCCT)=RCLINE,RCLINE=""
|
---|
| 94 | I $L(RCLINE) S RCCT=RCCT+1,@RCMFO@(RCCT)=RCLINE
|
---|
| 95 | Q
|
---|
| 96 | ;
|
---|
| 97 | BULLERA(RC,RCTDA,RCXMG,RCSUBJ,RCERR,RCTYP) ; Send a bulletin for entries in 344.5
|
---|
| 98 | ; RC = flags for data to include (one or more can can be used)
|
---|
| 99 | ; 'D': display text 'R': raw data 'F': formatted data from raw
|
---|
| 100 | ; data in file 344.5
|
---|
| 101 | ; RCTDA = ien of the entry in file 344.5
|
---|
| 102 | ; RCXMG = mail msg # for the ERA
|
---|
| 103 | ; RCSUBJ = subject of the bulletin
|
---|
| 104 | ; RCERR = error text in array or name of error global
|
---|
| 105 | ; RCTYP = if 0:ERA 1:EEOB
|
---|
| 106 | ;
|
---|
| 107 | N XMBODY,XMB,XMINSTR,XMTYPE,XMFULL,XMTO,XMZ,XMERR,Z,Z0,CT,RCXM,RCVAR
|
---|
| 108 | K ^TMP("RCXM_344.5",$J)
|
---|
| 109 | S RCERR=$G(RCERR)
|
---|
| 110 | S RCVAR=$S($E(RCERR,1,5)="^TMP(":RCERR,1:"RCERR")
|
---|
| 111 | S XMTO("I:G.RCDPE PAYMENTS EXCEPTIONS")="",CT=0,RCTYP=$S('$G(RCTYP):"ERA",1:"EEOB")
|
---|
| 112 | S CT=CT+1,^TMP("RCXM_344.5",$J,CT)="The following electronic "_RCTYP_" was received at your site.",CT=CT+1,^TMP("RCXM_344.5",$J,CT)="It was received on: "_$$FMTE^XLFDT($$NOW^XLFDT(),2)_" in mail msg # "_RCXMG_"."
|
---|
| 113 | S CT=CT+1,^TMP("RCXM_344.5",$J,CT)="This message is sent to alert you to conditions regarding this "_RCTYP_".",CT=CT+1,^TMP("RCXM_344.5",$J,CT)=" "
|
---|
| 114 | I RC["D" D DTXT(RCTDA,.RCXM,.CT) M ^TMP("RCXM_344.5",$J)=RCXM K RCXM
|
---|
| 115 | S Z=0 F S Z=$O(@RCVAR@(Z)) Q:'Z I $D(@RCVAR@(Z,"*")) S CT=CT+1,^TMP("RCXM_344.5",$J,CT)=@RCVAR@(Z,"*")
|
---|
| 116 | I $G(RCERR)'="",RCVAR="RCERR" S CT=CT+1,^TMP("RCXM_344.5",$J,CT)=RCERR,CT=CT+1,^TMP("RCXM_344.5",$J,CT)=" "
|
---|
| 117 | I $O(@RCVAR@(""))'="" D
|
---|
| 118 | . S Z="" F S Z=$O(@RCVAR@(Z)) Q:Z="" D
|
---|
| 119 | .. I $G(@RCVAR@(Z))'="" S CT=CT+1,^TMP("RCXM_344.5",$J,CT)=@RCVAR@(Z)
|
---|
| 120 | .. I $O(@RCVAR@(Z,0)) S Z0="" F S Z0=$O(@RCVAR@(Z,Z0)) Q:Z0="" I Z0'="*" S CT=CT+1,^TMP("RCXM_344.5",$J,CT)=@RCVAR@(Z,Z0)
|
---|
| 121 | I RC["F" D
|
---|
| 122 | . N RCCT1
|
---|
| 123 | . S RCCT1=0
|
---|
| 124 | . K ^TMP($J,"PRCAZ_RAW"),^TMP($J,"PRCAZ_FMT1"),^TMP($J,"PRCAZ_FMT")
|
---|
| 125 | . D DISP("^RCY(344.5,"_RCTDA_",2)","^TMP($J,""PRCAZ_FMT1"")",1,"^TMP($J,""PRCAZ_FMT"")",75)
|
---|
| 126 | . S CT=CT+1,^TMP("RCXM_344.5",$J,CT)="FORMATTED DATA: "
|
---|
| 127 | . S Z=0 F S Z=$O(^TMP($J,"PRCAZ_FMT",Z)) Q:'Z S CT=CT+1,^TMP("RCXM_344.5",$J,CT)=^TMP($J,"PRCAZ_FMT",Z)
|
---|
| 128 | . S:RC["R" CT=CT+1,^TMP("RCXM_344.5",$J,CT)=" "
|
---|
| 129 | I RC["R" D
|
---|
| 130 | . S CT=CT+1,^TMP("RCXM_344.5",$J,CT)="RAW DATA: "
|
---|
| 131 | . S Z=0 F S Z=$O(^RCY(344.5,RCTDA,2,Z)) Q:'Z S CT=CT+1,^TMP("RCXM_344.5",$J,CT)=$G(^RCY(344.5,RCTDA,2,Z,0))
|
---|
| 132 | S XMBODY="^TMP(""RCXM_344.5"",$J)"
|
---|
| 133 | D
|
---|
| 134 | . N DUZ S DUZ=.5,DUZ(0)="@"
|
---|
| 135 | . D SENDMSG^XMXAPI(.5,$E(RCSUBJ,1,65),XMBODY,.XMTO,,.XMZ)
|
---|
| 136 | K ^TMP($J,"PRCAZ_RAW"),^TMP($J,"PRCAZ_FMT1"),^TMP($J,"PRCAZ_FMT"),^TMP("RCXM_344.5",$J)
|
---|
| 137 | Q
|
---|
| 138 | ;
|
---|
| 139 | BULLEFT(RCTDA,RCXMG,RCSUBJ,RCERR) ; Send a bulletin for 'bad' EFT entries
|
---|
| 140 | ; RCTDA = ien of the entry in file 344.3
|
---|
| 141 | ; RCXMG = mail msg # for the EFT
|
---|
| 142 | ; RCSUBJ = subject of the bulletin
|
---|
| 143 | ; RCERR = error text in array
|
---|
| 144 | N XMBODY,XMB,XMINSTR,XMTYPE,XMFULL,XMTO,RCXM,XMZ,XMERR,Z,Z0,CT
|
---|
| 145 | S XMTO("I:G.RCDPE PAYMENTS EXCEPTIONS")="",CT=0
|
---|
| 146 | S CT=CT+1,RCXM(CT)="The following electronic EFT deposit was received at your site.",CT=CT+1,RCXM(CT)="It was received on: "_$$FMTE^XLFDT($$NOW^XLFDT(),2)_" in mail msg # "_RCXMG_"."
|
---|
| 147 | S CT=CT+1,RCXM(CT)="This message is sent to alert you to conditions regarding this EFT.",CT=CT+1,RCXM(CT)=" "
|
---|
| 148 | I $G(RCERR)'="" S CT=CT+1,RCXM(CT)=RCERR,CT=CT+1,RCXM(CT)=" "
|
---|
| 149 | I $O(RCERR(""))'="" D
|
---|
| 150 | . S Z="" F S Z=$O(RCERR(Z)) Q:Z="" D
|
---|
| 151 | .. I $G(RCERR(Z))'="" S CT=CT+1,RCXM(CT)=RCERR(Z)
|
---|
| 152 | .. I $O(RCERR(Z,0)) S Z0="" F S Z0=$O(RCERR(Z,Z0)) Q:Z0="" S CT=CT+1,RCXM(CT)=RCERR(Z,Z0)
|
---|
| 153 | S XMBODY="RCXM"
|
---|
| 154 | D
|
---|
| 155 | . N DUZ S DUZ=.5,DUZ(0)="@"
|
---|
| 156 | . D SENDMSG^XMXAPI(.5,$E(RCSUBJ,1,65),XMBODY,.XMTO,,.XMZ)
|
---|
| 157 | Q
|
---|
| 158 | ;
|
---|
| 159 | DTXT(RCTDA,RCXM,RCNT) ; Add display text to array RCXM(CT)
|
---|
| 160 | ; RCTDA = ien of entry in file 344.5
|
---|
| 161 | ; Send RCNT and RCXM by reference for return values
|
---|
| 162 | N RCDIQ
|
---|
| 163 | D GETS^DIQ(344.5,RCTDA_",",1,"EN","RCDIQ")
|
---|
| 164 | D TXTDE^RCDPEX(RCTDA,.RCDIQ,1,.RCXM,.RCNT)
|
---|
| 165 | Q
|
---|
| 166 | ;
|
---|
| 167 | BILLREF(RC3444,RC34441) ; Returns the bill # for the EOB in file 344.4, entry
|
---|
| 168 | ; number RC3444 and subfile entry RC34441
|
---|
| 169 | N RCARR
|
---|
| 170 | D DIQ34441^RCDPEDS(RC3444,RC34441,99,"RCARR")
|
---|
| 171 | Q $G(RCARR(344.41,RC34441,99,"E"))
|
---|
| 172 | ;
|
---|
| 173 | GETBILL(DA) ; Called from computed field to find bill reference
|
---|
| 174 | ; Assumes DA(1)= ien of file 344.4, DA = ien of file 344.41
|
---|
| 175 | N Z,VAL
|
---|
| 176 | S Z=$G(^RCY(344.4,DA(1),1,DA,0))
|
---|
| 177 | I $P(Z,U,2) S VAL=$$BN1^PRCAFN(+$G(^IBM(361.1,+$P(Z,U,2),0))) ; IA 4051
|
---|
| 178 | I $G(VAL)="" S VAL=$P(Z,U,5)
|
---|
| 179 | Q VAL
|
---|
| 180 | ;
|
---|