RCTCSJS1 ;ALBANY/LEG - RCTCS REFERRAL REJECTS SUPPORT RTN;02/19/14 3:21 PM
V ;;4.5;Accounts Receivable;**301,324**;Mar 20, 1995;Build 2
;;Per VA Directive 6402, this routine should not be modified.
;Overflow Program for RCTCSJS, to process CS REJECT server messages from AITC
;
;Patch PRCA*4.5*324 Modify internal resolution of reject reason
; display on profile view of bills
;
;Variables
; Input
; XMZ - (r) MailMan internal message number (IEN)
;
;;RCTCS REFERRAL REJECTS SUPPORT RTN
;===============================================================================
Q ;
PROFRJ(D0) ; displays Reject History on ACCOUNT RECEIVABLE PROFILE
;
; display summary
K ARY N CDINT
I '$D(^PRCA(430,D0,18)) Q ;
W !,"CS REJECTS:" S D1=0
; collapses rejects records
F S D1=$O(^PRCA(430,D0,18,D1)) Q:'D1 D ;
. S RJREC=^PRCA(430,D0,18,D1,0)
. S FDAT=$P(RJREC,"^") ; date
. S SRCE=$P(RJREC,"^",2) ;source
. S ERRCDS=$S($D(ARY(FDAT,SRCE)):ARY(FDAT,SRCE),1:",")
. F PC=3:1:11 S ERRCD=$P(RJREC,"^",PC) Q:'$L(ERRCD) D ;
. . S ARY(FDAT,SRCE,PC)=$P($G(^RC(348.5,ERRCD,0)),"^")_U_ERRCD,ERRCD=$P($G(^RC(348.5,ERRCD,0)),U) ;PRCA*4.5*324
. . I ERRCDS'[(","_ERRCD_",") S ERRCDS=ERRCDS_ERRCD_","
. S ARY(FDAT,SRCE)=ERRCDS
. ;
S FDAT=""
F S FDAT=$O(ARY(FDAT)),SRCE="" Q:FDAT="" D ;
. S Y=FDAT D DD^%DT S EXTDAT=Y ;
. F S SRCE=$O(ARY(FDAT,SRCE)),CDIDX="" Q:SRCE="" D ;
. . S ERRCDS=$TR($E(ARY(FDAT,SRCE),2,$L(ARY(FDAT,SRCE))-1),",","-")
. . W ?12,"DATE: ",EXTDAT
. . W ?33,"CODE(s): ",ERRCDS
. . W ?71,"SOURCE: ",SRCE
. W !
;
; display detail
S FDAT="" N CDINT
F S FDAT=$O(ARY(FDAT)),SRCE="" Q:FDAT="" D ;
. S Y=FDAT D DD^%DT S EXTDAT=Y ;
. F S SRCE=$O(ARY(FDAT,SRCE)),CDIDX="" Q:SRCE="" D ;
. . W !!,"CS REJECT DATE:",?16,EXTDAT
. . W ?34,"REJECT SOURCE: ",SRCE
. . F RR=1:1 S CDIDX=$O(ARY(FDAT,SRCE,CDIDX)) Q:CDIDX="" D ;
. . . W !?2,"REJECT REASON",RR,":"
. . . W ?18,$P(ARY(FDAT,SRCE,CDIDX),U) S CDINT=$P(ARY(FDAT,SRCE,CDIDX),U,2) ; code ;PRCA*4.5*324
. . . S (X,DESC)=$P(^RC(348.5,CDINT,0),"^",2)_"~"_$G(^RC(348.5,CDINT,1)) ;PRCA*4.5*324
. . . I $L(DESC)<60 S ARY(FDAT,SRCE,CDIDX,1)=X
. . . I $L(DESC)>59 D ;
. . . . F LN=1:1 S STR=$E(X,1,59) D Q:'$L(X) ;
. . . . . I $L(X)<60 S ARY(FDAT,SRCE,CDIDX,LN)=X,X="" Q
. . . . . F L=$L(STR):-1:1 I $F(STR," ",L) S ARY(FDAT,SRCE,CDIDX,LN)=$E(X,1,L),X=$E(X,L+1,999) Q ;
. . . F LN=1:1 Q:'$D(ARY(FDAT,SRCE,CDIDX,LN)) W:LN>1 ! W ?21,ARY(FDAT,SRCE,CDIDX,LN)
. W !
Q ;
;
PROFRJA(D0,LN,OUTARY) ; sets into ^TMP Reject History on BILL PROFILE
;
; display summary
S BLANK="",$P(BLANK," ",99)=""
K ARY,OUTARY N CDINT
I '$D(^PRCA(430,D0,18)) Q ;
S LN=LN+1,OUTARY(LN,0)="CS REJECTS: " S D1=0
; collapses rejects records
F S D1=$O(^PRCA(430,D0,18,D1)) Q:'D1 D ;
. S RJREC=^PRCA(430,D0,18,D1,0)
. S FDAT=$P(RJREC,"^") ; date
. S SRCE=$P(RJREC,"^",2) ;source
. S ERRCDS=$S($D(ARY(FDAT,SRCE)):ARY(FDAT,SRCE),1:",")
. F PC=3:1:11 S ERRCD=$P(RJREC,"^",PC) Q:'$L(ERRCD) D ;
. . S ARY(FDAT,SRCE,PC)=$P(^RC(348.5,ERRCD,0),"^")_U_ERRCD,ERRCD=$P($G(^RC(348.5,ERRCD,0)),U) ;PRCA*4.5*324
. . I ERRCDS'[(","_ERRCD_",") S ERRCDS=ERRCDS_ERRCD_","
. S ARY(FDAT,SRCE)=ERRCDS
. ;
S FDAT=""
F S FDAT=$O(ARY(FDAT)),SRCE="" Q:FDAT="" D ;
. S Y=FDAT D DD^%DT S EXTDAT=Y ;
. F S SRCE=$O(ARY(FDAT,SRCE)),CDIDX="" Q:SRCE="" D ;
. . S ERRCDS=$TR($E(ARY(FDAT,SRCE),2,$L(ARY(FDAT,SRCE))-1),",","-")
. . S OUTARY(LN,0)=$E(OUTARY(LN,0)_BLANK,1,11)_"DATE: "_EXTDAT
. . S OUTARY(LN,0)=$E(OUTARY(LN,0)_BLANK,1,32)_"CODE(s): "_ERRCDS
. . S OUTARY(LN,0)=$E(OUTARY(LN,0)_BLANK,1,70)_"SOURCE: "_SRCE
. S LN=LN+1,OUTARY(LN,0)=""
;
; display detail
S FDAT=""
F S FDAT=$O(ARY(FDAT)),SRCE="" Q:FDAT="" D ;
. S Y=FDAT D DD^%DT S EXTDAT=Y ;
. F S SRCE=$O(ARY(FDAT,SRCE)),CDIDX="" Q:SRCE="" D ;
. . S LN=LN+1,(OUTARY(LN,0),OUTARY(LN+1,0))=""
. . S LN=LN+1,OUTARY(LN,0)="CS REJECT DATE: "_EXTDAT
. . S OUTARY(LN,0)=$E(OUTARY(LN,0)_BLANK,1,34)_"REJECT SOURCE: "_SRCE
. . F RR=1:1 S CDIDX=$O(ARY(FDAT,SRCE,CDIDX)) Q:CDIDX="" D ;
. . . S LN=LN+1,OUTARY(LN,0)=" REJECT REASON"_RR_": "
. . . S OUTARY(LN,0)=OUTARY(LN,0)_$P(ARY(FDAT,SRCE,CDIDX),U)_" ",CDINT=$P(ARY(FDAT,SRCE,CDIDX),U,2) ; code ;PRCA*4.5*324
. . . S (X,DESC)=$P(^RC(348.5,CDINT,0),"^",2)_"~"_$G(^RC(348.5,CDINT,1)) ;PRCA*4.5*324
. . . I $L(DESC)<60 S ARY(FDAT,SRCE,CDIDX,1)=X
. . . I $L(DESC)>59 D ;
. . . . F LN2=1:1 S STR=$E(X,1,59) D Q:'$L(X) ;
. . . . . I $L(X)<60 S ARY(FDAT,SRCE,CDIDX,LN2)=X,X="" Q
. . . . . F L=$L(STR):-1:1 I $F(STR," ",L) S ARY(FDAT,SRCE,CDIDX,LN2)=$E(X,1,L),X=$E(X,L+1,999) Q ;
. . . F LN2=1:1 Q:'$D(ARY(FDAT,SRCE,CDIDX,LN2)) D ;
. . . . S:LN2>1 LN=LN+1,OUTARY(LN,0)=" "
. . . . S OUTARY(LN,0)=OUTARY(LN,0)_ARY(FDAT,SRCE,CDIDX,LN2)
. S LN=LN+1,OUTARY(LN,0)=""
Q ;
;
SENDBUL ;
I '$G(BADQUE) D ;
. S FROM=$G(H4DATE)_$G(ZBAT1),TO=$G(H4DATE)_$G(ZBAT2)
. S BATMSG=" from MM Message"_$S(XMZ1=XMZ2:": "_XMZ1,1:"es: "_XMZ1_" to "_XMZ2)
. S BATMSG=BATMSG_" from Batch"_$S(FROM=TO:": "_FROM,1:"es: "_FROM_" to "_TO)
;
D NOW^%DTC,YX^%DTC
S DTTM=$E(Y,5,6)_" "_$E(Y,1,3)_" "_$E(Y,11,12)_" "_$E(Y,14,18)_" "
;
; If there is no Source data or Errors, check and send Bulletin Data if available
I $O(^XTMP("RCTCSJS",$J,"SRC",""))=""&($O(^XTMP("RCTCSJS",$J,"ERR",""))="") D BULERR
;
F SOURCE="AITC","DMC","TREASURY" S SRC=$E(SOURCE) I $D(^XTMP("RCTCSJS",$J,"SRC",SRC)) D ;
. D REJMSG
. D ALPHA
. S XMSUB="CS REJECTS ("_SOURCE_") ["_XMZ_"] "_DTTM_" "_CNTR_" lines"
. D SEND
. ;
Q
SENDERR ;
I $D(^XTMP("RCTCSJS",$J,"ERR")) D ;
. S SOURCES=""
. F SRCPC=1:1:3 Q:$E(CSRCS,SRCPC)="" D
. . S SOURCE=$P("???,AITC,DMC,TREASURY",",",$F("ADT",$E(CSRCS,SRCPC)))
. . S SOURCES=SOURCES_","_$S(SOURCE="":"???",1:SOURCE)
. S SOURCES=$E(SOURCES,2,999)
. I '$L(SOURCES) S SOURCES="UNSPECIFIED SOURCE"
. D ERRMSG
. D ERRSFND
. S XMSUB="CS ("_SOURCES_") REJECT RECORD ***ERRORS FOUND*** ["_XMZ_"] "_DTTM_" "_CNTR_" lines"
. D SEND
. ;
Q ;
CLEANUP ; This cleans up the ^XTMP global.
;K ^XTMP("RCTCSJS",$J)
Q
;
BULERR ; If there is Bulletin data, send email with error or note
N HIT,CNT,CNTR
S HIT=0,CNT=""
I $O(^XTMP("RCTCSJS",$J,"BULTN",""))'="" S HIT=1
I 'HIT Q
S CNTR=$O(^XTMP("RCTCSJS",$J,"REC",$G(CNTR)),-1)
S CNTR=CNTR+1
S ^XTMP("RCTCSJS",$J,"REC",CNTR)="The following CS REJECTS transmissions have been processed"
S CNTR=CNTR+1
S ^XTMP("RCTCSJS",$J,"REC",CNTR)=BATMSG
F S CNT=$O(^XTMP("RCTCSJS",$J,"BULTN",CNT)) Q:CNT="" S BULDAT=^(CNT) D
. S CNTR=CNTR+1
. S ^XTMP("RCTCSJS",$J,"REC",CNTR)=BULDAT
S XMSUB="CS REJECTS ["_XMZ_"] "_DTTM_" "_CNTR_" lines"
D SEND
Q ; BULERR
;
REJMSG ;Send list of rejected documents
S ^XTMP("RCTCSJS",$J,"REC",1)="The following CS DEBT REFERRAL transmissions have been rejected"
S ^XTMP("RCTCSJS",$J,"REC",2)=BATMSG
S ^XTMP("RCTCSJS",$J,"REC",3)=""
S ^XTMP("RCTCSJS",$J,"REC",4)="NAME SSN BILL NUMBER TYPE ACTN ERROR CODES"
S ^XTMP("RCTCSJS",$J,"REC",5)=""
S CNTR=5
Q ; REJMSG
ALPHA ; orders BULLETIN by SRC, Patient NAME, BILL NO. sequence
S NAM=""
F S NAM=$O(^XTMP("RCTCSJS",$J,"SRC",SRC,NAM)),SBILL="" Q:NAM="" D ;
. F S SBILL=$O(^XTMP("RCTCSJS",$J,"SRC",SRC,NAM,SBILL)),BLTNCNT="" Q:SBILL="" D ;
.. F S BLTNCNT=$O(^XTMP("RCTCSJS",$J,"SRC",SRC,NAM,SBILL,BLTNCNT)) Q:BLTNCNT="" D ;
... S BLTNREC=^XTMP("RCTCSJS",$J,"BULTN",BLTNCNT)
... S CNTR=CNTR+1,^XTMP("RCTCSJS",$J,"REC",CNTR)=BLTNREC
Q ;
;
ERRMSG ;Send list of ERRORS FOUND document
S ^XTMP("RCTCSJS",$J,"REC",1)="The following **ERRORS** found in the ("_SOURCES_") CS DEBT REFERRAL Reject File"
S ^XTMP("RCTCSJS",$J,"REC",2)=BATMSG
S ^XTMP("RCTCSJS",$J,"REC",3)=""
S ^XTMP("RCTCSJS",$J,"REC",4)=" # REC# TYPE OF ERROR ENCOUNTERED "
S ^XTMP("RCTCSJS",$J,"REC",5)=""
S CNTR=5
Q ; ERRMSG
;
ERRSFND ; places ERRORS FOUND records into BULLETIN sequence
; S ^XTMP("RCTCSJS",$J,"ERR",ERRCNT)=RECN_U_ERRDATA
S ERRCNT=0
F S ERRCNT=$O(^XTMP("RCTCSJS",$J,"ERR",ERRCNT)) Q:'ERRCNT D ;
. S REC=^XTMP("RCTCSJS",$J,"ERR",ERRCNT)
. S RECN=$P(REC,U),ERRDATA=$P(REC,U,2)
. S ERRREC=$E($J(ERRCNT,4)_BLNKS,1,5)_$E(RECN_BLNKS,1,8)_$E(ERRDATA_BLNKS,1,66)
. S CNTR=CNTR+1
. S ^XTMP("RCTCSJS",$J,"REC",CNTR)=ERRREC
Q ; ERRSFND
;
SEND ;
S XMY("G.TCSP")="",XMDUZ="AR PACKAGE",XMTEXT="^XTMP(""RCTCSJS"","_$J_",""REC"","
D ^XMD
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRCTCSJS1 8631 printed Oct 16, 2024@17:49:34 Page 2
RCTCSJS1 ;ALBANY/LEG - RCTCS REFERRAL REJECTS SUPPORT RTN;02/19/14 3:21 PM
V ;;4.5;Accounts Receivable;**301,324**;Mar 20, 1995;Build 2
+1 ;;Per VA Directive 6402, this routine should not be modified.
+2 ;Overflow Program for RCTCSJS, to process CS REJECT server messages from AITC
+3 ;
+4 ;Patch PRCA*4.5*324 Modify internal resolution of reject reason
+5 ; display on profile view of bills
+6 ;
+7 ;Variables
+8 ; Input
+9 ; XMZ - (r) MailMan internal message number (IEN)
+10 ;
+11 ;;RCTCS REFERRAL REJECTS SUPPORT RTN
+12 ;===============================================================================
+13 ;
QUIT
PROFRJ(D0) ; displays Reject History on ACCOUNT RECEIVABLE PROFILE
+1 ;
+2 ; display summary
+3 KILL ARY
NEW CDINT
+4 ;
IF '$DATA(^PRCA(430,D0,18))
QUIT
+5 WRITE !,"CS REJECTS:"
SET D1=0
+6 ; collapses rejects records
+7 ;
FOR
SET D1=$ORDER(^PRCA(430,D0,18,D1))
if 'D1
QUIT
Begin DoDot:1
+8 SET RJREC=^PRCA(430,D0,18,D1,0)
+9 ; date
SET FDAT=$PIECE(RJREC,"^")
+10 ;source
SET SRCE=$PIECE(RJREC,"^",2)
+11 SET ERRCDS=$SELECT($DATA(ARY(FDAT,SRCE)):ARY(FDAT,SRCE),1:",")
+12 ;
FOR PC=3:1:11
SET ERRCD=$PIECE(RJREC,"^",PC)
if '$LENGTH(ERRCD)
QUIT
Begin DoDot:2
+13 ;PRCA*4.5*324
SET ARY(FDAT,SRCE,PC)=$PIECE($GET(^RC(348.5,ERRCD,0)),"^")_U_ERRCD
SET ERRCD=$PIECE($GET(^RC(348.5,ERRCD,0)),U)
+14 IF ERRCDS'[(","_ERRCD_",")
SET ERRCDS=ERRCDS_ERRCD_","
End DoDot:2
+15 SET ARY(FDAT,SRCE)=ERRCDS
+16 ;
End DoDot:1
+17 SET FDAT=""
+18 ;
FOR
SET FDAT=$ORDER(ARY(FDAT))
SET SRCE=""
if FDAT=""
QUIT
Begin DoDot:1
+19 ;
SET Y=FDAT
DO DD^%DT
SET EXTDAT=Y
+20 ;
FOR
SET SRCE=$ORDER(ARY(FDAT,SRCE))
SET CDIDX=""
if SRCE=""
QUIT
Begin DoDot:2
+21 SET ERRCDS=$TRANSLATE($EXTRACT(ARY(FDAT,SRCE),2,$LENGTH(ARY(FDAT,SRCE))-1),",","-")
+22 WRITE ?12,"DATE: ",EXTDAT
+23 WRITE ?33,"CODE(s): ",ERRCDS
+24 WRITE ?71,"SOURCE: ",SRCE
End DoDot:2
+25 WRITE !
End DoDot:1
+26 ;
+27 ; display detail
+28 SET FDAT=""
NEW CDINT
+29 ;
FOR
SET FDAT=$ORDER(ARY(FDAT))
SET SRCE=""
if FDAT=""
QUIT
Begin DoDot:1
+30 ;
SET Y=FDAT
DO DD^%DT
SET EXTDAT=Y
+31 ;
FOR
SET SRCE=$ORDER(ARY(FDAT,SRCE))
SET CDIDX=""
if SRCE=""
QUIT
Begin DoDot:2
+32 WRITE !!,"CS REJECT DATE:",?16,EXTDAT
+33 WRITE ?34,"REJECT SOURCE: ",SRCE
+34 ;
FOR RR=1:1
SET CDIDX=$ORDER(ARY(FDAT,SRCE,CDIDX))
if CDIDX=""
QUIT
Begin DoDot:3
+35 WRITE !?2,"REJECT REASON",RR,":"
+36 ; code ;PRCA*4.5*324
WRITE ?18,$PIECE(ARY(FDAT,SRCE,CDIDX),U)
SET CDINT=$PIECE(ARY(FDAT,SRCE,CDIDX),U,2)
+37 ;PRCA*4.5*324
SET (X,DESC)=$PIECE(^RC(348.5,CDINT,0),"^",2)_"~"_$GET(^RC(348.5,CDINT,1))
+38 IF $LENGTH(DESC)<60
SET ARY(FDAT,SRCE,CDIDX,1)=X
+39 ;
IF $LENGTH(DESC)>59
Begin DoDot:4
+40 ;
FOR LN=1:1
SET STR=$EXTRACT(X,1,59)
Begin DoDot:5
+41 IF $LENGTH(X)<60
SET ARY(FDAT,SRCE,CDIDX,LN)=X
SET X=""
QUIT
+42 ;
FOR L=$LENGTH(STR):-1:1
IF $FIND(STR," ",L)
SET ARY(FDAT,SRCE,CDIDX,LN)=$EXTRACT(X,1,L)
SET X=$EXTRACT(X,L+1,999)
QUIT
End DoDot:5
if '$LENGTH(X)
QUIT
End DoDot:4
+43 FOR LN=1:1
if '$DATA(ARY(FDAT,SRCE,CDIDX,LN))
QUIT
if LN>1
WRITE !
WRITE ?21,ARY(FDAT,SRCE,CDIDX,LN)
End DoDot:3
End DoDot:2
+44 WRITE !
End DoDot:1
+45 ;
QUIT
+46 ;
PROFRJA(D0,LN,OUTARY) ; sets into ^TMP Reject History on BILL PROFILE
+1 ;
+2 ; display summary
+3 SET BLANK=""
SET $PIECE(BLANK," ",99)=""
+4 KILL ARY,OUTARY
NEW CDINT
+5 ;
IF '$DATA(^PRCA(430,D0,18))
QUIT
+6 SET LN=LN+1
SET OUTARY(LN,0)="CS REJECTS: "
SET D1=0
+7 ; collapses rejects records
+8 ;
FOR
SET D1=$ORDER(^PRCA(430,D0,18,D1))
if 'D1
QUIT
Begin DoDot:1
+9 SET RJREC=^PRCA(430,D0,18,D1,0)
+10 ; date
SET FDAT=$PIECE(RJREC,"^")
+11 ;source
SET SRCE=$PIECE(RJREC,"^",2)
+12 SET ERRCDS=$SELECT($DATA(ARY(FDAT,SRCE)):ARY(FDAT,SRCE),1:",")
+13 ;
FOR PC=3:1:11
SET ERRCD=$PIECE(RJREC,"^",PC)
if '$LENGTH(ERRCD)
QUIT
Begin DoDot:2
+14 ;PRCA*4.5*324
SET ARY(FDAT,SRCE,PC)=$PIECE(^RC(348.5,ERRCD,0),"^")_U_ERRCD
SET ERRCD=$PIECE($GET(^RC(348.5,ERRCD,0)),U)
+15 IF ERRCDS'[(","_ERRCD_",")
SET ERRCDS=ERRCDS_ERRCD_","
End DoDot:2
+16 SET ARY(FDAT,SRCE)=ERRCDS
+17 ;
End DoDot:1
+18 SET FDAT=""
+19 ;
FOR
SET FDAT=$ORDER(ARY(FDAT))
SET SRCE=""
if FDAT=""
QUIT
Begin DoDot:1
+20 ;
SET Y=FDAT
DO DD^%DT
SET EXTDAT=Y
+21 ;
FOR
SET SRCE=$ORDER(ARY(FDAT,SRCE))
SET CDIDX=""
if SRCE=""
QUIT
Begin DoDot:2
+22 SET ERRCDS=$TRANSLATE($EXTRACT(ARY(FDAT,SRCE),2,$LENGTH(ARY(FDAT,SRCE))-1),",","-")
+23 SET OUTARY(LN,0)=$EXTRACT(OUTARY(LN,0)_BLANK,1,11)_"DATE: "_EXTDAT
+24 SET OUTARY(LN,0)=$EXTRACT(OUTARY(LN,0)_BLANK,1,32)_"CODE(s): "_ERRCDS
+25 SET OUTARY(LN,0)=$EXTRACT(OUTARY(LN,0)_BLANK,1,70)_"SOURCE: "_SRCE
End DoDot:2
+26 SET LN=LN+1
SET OUTARY(LN,0)=""
End DoDot:1
+27 ;
+28 ; display detail
+29 SET FDAT=""
+30 ;
FOR
SET FDAT=$ORDER(ARY(FDAT))
SET SRCE=""
if FDAT=""
QUIT
Begin DoDot:1
+31 ;
SET Y=FDAT
DO DD^%DT
SET EXTDAT=Y
+32 ;
FOR
SET SRCE=$ORDER(ARY(FDAT,SRCE))
SET CDIDX=""
if SRCE=""
QUIT
Begin DoDot:2
+33 SET LN=LN+1
SET (OUTARY(LN,0),OUTARY(LN+1,0))=""
+34 SET LN=LN+1
SET OUTARY(LN,0)="CS REJECT DATE: "_EXTDAT
+35 SET OUTARY(LN,0)=$EXTRACT(OUTARY(LN,0)_BLANK,1,34)_"REJECT SOURCE: "_SRCE
+36 ;
FOR RR=1:1
SET CDIDX=$ORDER(ARY(FDAT,SRCE,CDIDX))
if CDIDX=""
QUIT
Begin DoDot:3
+37 SET LN=LN+1
SET OUTARY(LN,0)=" REJECT REASON"_RR_": "
+38 ; code ;PRCA*4.5*324
SET OUTARY(LN,0)=OUTARY(LN,0)_$PIECE(ARY(FDAT,SRCE,CDIDX),U)_" "
SET CDINT=$PIECE(ARY(FDAT,SRCE,CDIDX),U,2)
+39 ;PRCA*4.5*324
SET (X,DESC)=$PIECE(^RC(348.5,CDINT,0),"^",2)_"~"_$GET(^RC(348.5,CDINT,1))
+40 IF $LENGTH(DESC)<60
SET ARY(FDAT,SRCE,CDIDX,1)=X
+41 ;
IF $LENGTH(DESC)>59
Begin DoDot:4
+42 ;
FOR LN2=1:1
SET STR=$EXTRACT(X,1,59)
Begin DoDot:5
+43 IF $LENGTH(X)<60
SET ARY(FDAT,SRCE,CDIDX,LN2)=X
SET X=""
QUIT
+44 ;
FOR L=$LENGTH(STR):-1:1
IF $FIND(STR," ",L)
SET ARY(FDAT,SRCE,CDIDX,LN2)=$EXTRACT(X,1,L)
SET X=$EXTRACT(X,L+1,999)
QUIT
End DoDot:5
if '$LENGTH(X)
QUIT
End DoDot:4
+45 ;
FOR LN2=1:1
if '$DATA(ARY(FDAT,SRCE,CDIDX,LN2))
QUIT
Begin DoDot:4
+46 if LN2>1
SET LN=LN+1
SET OUTARY(LN,0)=" "
+47 SET OUTARY(LN,0)=OUTARY(LN,0)_ARY(FDAT,SRCE,CDIDX,LN2)
End DoDot:4
End DoDot:3
End DoDot:2
+48 SET LN=LN+1
SET OUTARY(LN,0)=""
End DoDot:1
+49 ;
QUIT
+50 ;
SENDBUL ;
+1 ;
IF '$GET(BADQUE)
Begin DoDot:1
+2 SET FROM=$GET(H4DATE)_$GET(ZBAT1)
SET TO=$GET(H4DATE)_$GET(ZBAT2)
+3 SET BATMSG=" from MM Message"_$SELECT(XMZ1=XMZ2:": "_XMZ1,1:"es: "_XMZ1_" to "_XMZ2)
+4 SET BATMSG=BATMSG_" from Batch"_$SELECT(FROM=TO:": "_FROM,1:"es: "_FROM_" to "_TO)
End DoDot:1
+5 ;
+6 DO NOW^%DTC
DO YX^%DTC
+7 SET DTTM=$EXTRACT(Y,5,6)_" "_$EXTRACT(Y,1,3)_" "_$EXTRACT(Y,11,12)_" "_$EXTRACT(Y,14,18)_" "
+8 ;
+9 ; If there is no Source data or Errors, check and send Bulletin Data if available
+10 IF $ORDER(^XTMP("RCTCSJS",$JOB,"SRC",""))=""&($ORDER(^XTMP("RCTCSJS",$JOB,"ERR",""))="")
DO BULERR
+11 ;
+12 ;
FOR SOURCE="AITC","DMC","TREASURY"
SET SRC=$EXTRACT(SOURCE)
IF $DATA(^XTMP("RCTCSJS",$JOB,"SRC",SRC))
Begin DoDot:1
+13 DO REJMSG
+14 DO ALPHA
+15 SET XMSUB="CS REJECTS ("_SOURCE_") ["_XMZ_"] "_DTTM_" "_CNTR_" lines"
+16 DO SEND
+17 ;
End DoDot:1
+18 QUIT
SENDERR ;
+1 ;
IF $DATA(^XTMP("RCTCSJS",$JOB,"ERR"))
Begin DoDot:1
+2 SET SOURCES=""
+3 FOR SRCPC=1:1:3
if $EXTRACT(CSRCS,SRCPC)=""
QUIT
Begin DoDot:2
+4 SET SOURCE=$PIECE("???,AITC,DMC,TREASURY",",",$FIND("ADT",$EXTRACT(CSRCS,SRCPC)))
+5 SET SOURCES=SOURCES_","_$SELECT(SOURCE="":"???",1:SOURCE)
End DoDot:2
+6 SET SOURCES=$EXTRACT(SOURCES,2,999)
+7 IF '$LENGTH(SOURCES)
SET SOURCES="UNSPECIFIED SOURCE"
+8 DO ERRMSG
+9 DO ERRSFND
+10 SET XMSUB="CS ("_SOURCES_") REJECT RECORD ***ERRORS FOUND*** ["_XMZ_"] "_DTTM_" "_CNTR_" lines"
+11 DO SEND
+12 ;
End DoDot:1
+13 ;
QUIT
CLEANUP ; This cleans up the ^XTMP global.
+1 ;K ^XTMP("RCTCSJS",$J)
+2 QUIT
+3 ;
BULERR ; If there is Bulletin data, send email with error or note
+1 NEW HIT,CNT,CNTR
+2 SET HIT=0
SET CNT=""
+3 IF $ORDER(^XTMP("RCTCSJS",$JOB,"BULTN",""))'=""
SET HIT=1
+4 IF 'HIT
QUIT
+5 SET CNTR=$ORDER(^XTMP("RCTCSJS",$JOB,"REC",$GET(CNTR)),-1)
+6 SET CNTR=CNTR+1
+7 SET ^XTMP("RCTCSJS",$JOB,"REC",CNTR)="The following CS REJECTS transmissions have been processed"
+8 SET CNTR=CNTR+1
+9 SET ^XTMP("RCTCSJS",$JOB,"REC",CNTR)=BATMSG
+10 FOR
SET CNT=$ORDER(^XTMP("RCTCSJS",$JOB,"BULTN",CNT))
if CNT=""
QUIT
SET BULDAT=^(CNT)
Begin DoDot:1
+11 SET CNTR=CNTR+1
+12 SET ^XTMP("RCTCSJS",$JOB,"REC",CNTR)=BULDAT
End DoDot:1
+13 SET XMSUB="CS REJECTS ["_XMZ_"] "_DTTM_" "_CNTR_" lines"
+14 DO SEND
+15 ; BULERR
QUIT
+16 ;
REJMSG ;Send list of rejected documents
+1 SET ^XTMP("RCTCSJS",$JOB,"REC",1)="The following CS DEBT REFERRAL transmissions have been rejected"
+2 SET ^XTMP("RCTCSJS",$JOB,"REC",2)=BATMSG
+3 SET ^XTMP("RCTCSJS",$JOB,"REC",3)=""
+4 SET ^XTMP("RCTCSJS",$JOB,"REC",4)="NAME SSN BILL NUMBER TYPE ACTN ERROR CODES"
+5 SET ^XTMP("RCTCSJS",$JOB,"REC",5)=""
+6 SET CNTR=5
+7 ; REJMSG
QUIT
ALPHA ; orders BULLETIN by SRC, Patient NAME, BILL NO. sequence
+1 SET NAM=""
+2 ;
FOR
SET NAM=$ORDER(^XTMP("RCTCSJS",$JOB,"SRC",SRC,NAM))
SET SBILL=""
if NAM=""
QUIT
Begin DoDot:1
+3 ;
FOR
SET SBILL=$ORDER(^XTMP("RCTCSJS",$JOB,"SRC",SRC,NAM,SBILL))
SET BLTNCNT=""
if SBILL=""
QUIT
Begin DoDot:2
+4 ;
FOR
SET BLTNCNT=$ORDER(^XTMP("RCTCSJS",$JOB,"SRC",SRC,NAM,SBILL,BLTNCNT))
if BLTNCNT=""
QUIT
Begin DoDot:3
+5 SET BLTNREC=^XTMP("RCTCSJS",$JOB,"BULTN",BLTNCNT)
+6 SET CNTR=CNTR+1
SET ^XTMP("RCTCSJS",$JOB,"REC",CNTR)=BLTNREC
End DoDot:3
End DoDot:2
End DoDot:1
+7 ;
QUIT
+8 ;
ERRMSG ;Send list of ERRORS FOUND document
+1 SET ^XTMP("RCTCSJS",$JOB,"REC",1)="The following **ERRORS** found in the ("_SOURCES_") CS DEBT REFERRAL Reject File"
+2 SET ^XTMP("RCTCSJS",$JOB,"REC",2)=BATMSG
+3 SET ^XTMP("RCTCSJS",$JOB,"REC",3)=""
+4 SET ^XTMP("RCTCSJS",$JOB,"REC",4)=" # REC# TYPE OF ERROR ENCOUNTERED "
+5 SET ^XTMP("RCTCSJS",$JOB,"REC",5)=""
+6 SET CNTR=5
+7 ; ERRMSG
QUIT
+8 ;
ERRSFND ; places ERRORS FOUND records into BULLETIN sequence
+1 ; S ^XTMP("RCTCSJS",$J,"ERR",ERRCNT)=RECN_U_ERRDATA
+2 SET ERRCNT=0
+3 ;
FOR
SET ERRCNT=$ORDER(^XTMP("RCTCSJS",$JOB,"ERR",ERRCNT))
if 'ERRCNT
QUIT
Begin DoDot:1
+4 SET REC=^XTMP("RCTCSJS",$JOB,"ERR",ERRCNT)
+5 SET RECN=$PIECE(REC,U)
SET ERRDATA=$PIECE(REC,U,2)
+6 SET ERRREC=$EXTRACT($JUSTIFY(ERRCNT,4)_BLNKS,1,5)_$EXTRACT(RECN_BLNKS,1,8)_$EXTRACT(ERRDATA_BLNKS,1,66)
+7 SET CNTR=CNTR+1
+8 SET ^XTMP("RCTCSJS",$JOB,"REC",CNTR)=ERRREC
End DoDot:1
+9 ; ERRSFND
QUIT
+10 ;
SEND ;
+1 SET XMY("G.TCSP")=""
SET XMDUZ="AR PACKAGE"
SET XMTEXT="^XTMP(""RCTCSJS"","_$JOB_",""REC"","
+2 DO ^XMD
+3 QUIT