1 | RCTOPD ;WASH IRMFO@ALTOONA,PA/TJK-TOP TRANSMISSION ;2/11/00 3:34 PM
|
---|
2 | V ;;4.5;Accounts Receivable;**141,187,224,236,229**;Mar 20, 1995
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ENTER ;Entry point from nightly process
|
---|
5 | Q:'$D(RCDOC)
|
---|
6 | N DEBTOR,BILL,DEBTOR0,B0,B6,B7,P181DT,PRIN,INT,ADMIN,B4
|
---|
7 | N EFFDT,DFN,CNTR,SITE,LN,FN,MN,DOB,SITE,F60DT,VADM
|
---|
8 | N PHONE,QUIT,TOTAL,ZIPCODE,FULLNM,RCNT,REPAY,X1,X2
|
---|
9 | N ERROR,ADDR,CAT,BILLDT,P10YDT,CURRTOT,HOLD,SITECD,RCNEW
|
---|
10 | ;
|
---|
11 | ;initialize temporary global, variables
|
---|
12 | ;
|
---|
13 | K ^XTMP("RCTOPD") S ^XTMP("RCTOPD",0)=DT_U_DT
|
---|
14 | S SITE=$E($$SITE^RCMSITE(),1,3),SITECD=$P(^RC(342,1,3),U,5)
|
---|
15 | S X1=DT,X2=-181 D C^%DTC S (P181DT,EFFDT)=X
|
---|
16 | S X1=DT,X2=-3650 D C^%DTC S P10YDT=X
|
---|
17 | S X1=DT,X2=+60 D C^%DTC S F60DT=X
|
---|
18 | S (CNTR(1),CNTR(2),CNTR(4),DEBTOR,RCNT)=0
|
---|
19 | ;
|
---|
20 | ;branch if recertification document
|
---|
21 | I RCDOC="Y" D RECERT G EXIT
|
---|
22 | ;
|
---|
23 | ;branch to do update documents
|
---|
24 | D UPDATE I RCDOC="U" G EXIT
|
---|
25 | ;
|
---|
26 | ;master sheet compilation
|
---|
27 | ;
|
---|
28 | F S DEBTOR=$O(^PRCA(430,"C",DEBTOR)) Q:DEBTOR'?1N.N D
|
---|
29 | .N X,RCDFN
|
---|
30 | .S RCDFN=$G(^RCD(340,DEBTOR,0))
|
---|
31 | .I $P(RCDFN,";",2)["DPT",$$EMERES^PRCAUTL(+RCDFN)]"" Q ;stop the master sheet compilation for hurricane Katrina sites (patients)
|
---|
32 | .Q:$D(^RCD(340,"TOP",DEBTOR))
|
---|
33 | .; quit if debtor address marked unknown
|
---|
34 | .Q:$P($G(^RCD(340,+DEBTOR,1)),"^",9)=1
|
---|
35 | .S DEBTOR6=$G(^RCD(340,DEBTOR,6)),DEBTOR0=$G(^(0)),HOLD=0,RCNEW=1
|
---|
36 | .I $P(DEBTOR6,U,2),'$P(DEBTOR6,U,3) Q
|
---|
37 | .S QUIT=1,FILE=$$FILE(DEBTOR0) Q:'FILE
|
---|
38 | .S EFFDT=P181DT
|
---|
39 | .D PROC(DEBTOR,.QUIT,FILE,.HOLD,.EFFDT) Q:QUIT
|
---|
40 | .D EN1^RCTOP2(DEBTOR,"M",FILE)
|
---|
41 | .D EN1^RCTOP1(DEBTOR,TOTAL,"M",EFFDT,0,FILE)
|
---|
42 | .;set hold date in file for employee, ex-employee, vendor records
|
---|
43 | .;Austin holds these for 60 days before transmitting to TOP
|
---|
44 | .I $G(HOLD) S $P(^RCD(340,DEBTOR,6),U,6)=F60DT
|
---|
45 | .Q
|
---|
46 | ;compile documents into mail messages--sets referral date in 430
|
---|
47 | D COMPILE
|
---|
48 | EXIT K RCDOC,^XTMP("RCTOPD"),^TMP("RCTOPD"),XMDUZ D KVAR^VADPT
|
---|
49 | Q
|
---|
50 | ;
|
---|
51 | UPDATE ;weekly update compilation
|
---|
52 | F S DEBTOR=$O(^RCD(340,"TOP",DEBTOR)) Q:DEBTOR'?1N.N D
|
---|
53 | .S QUIT=1,DEBTOR0=^RCD(340,DEBTOR,0),DEBTOR6=^(6),DEBTOR4=^(4),FILE=$$FILE(DEBTOR0),EFFDT=$P(DEBTOR4,U,6),RCNEW=0
|
---|
54 | .D EN1^RCTOP2(DEBTOR,"U",FILE)
|
---|
55 | .D PROC(DEBTOR,.QUIT,FILE,0,.EFFDT) I QUIT D Q
|
---|
56 | ..;process type 4 document if necessary
|
---|
57 | ..S TAXID=$$TAXID^RCTOP1(DEBTOR,FILE),OTAXID=$P(DEBTOR4,U)
|
---|
58 | ..S NAME=$$NAME^RCTOP1(+DEBTOR0,FILE),ONAME=$P(DEBTOR4,U,2),NAME=$P(NAME,U)
|
---|
59 | ..I NAME=ONAME,TAXID=OTAXID Q
|
---|
60 | ..D EN1^RCTOP4(NAME,TAXID,DEBTOR4,DEBTOR,FILE)
|
---|
61 | ..Q
|
---|
62 | .D EN1^RCTOP1(DEBTOR,TOTAL,"U",EFFDT,0,FILE)
|
---|
63 | .Q
|
---|
64 | ;refund/refund reversal documents
|
---|
65 | D REFDOC
|
---|
66 | ;compile documents into mail messages--sets referral date in 430
|
---|
67 | D:$G(RCDOC)="U" COMPILE
|
---|
68 | Q
|
---|
69 | ;
|
---|
70 | RECERT ;send yearly recertification documents
|
---|
71 | F S DEBTOR=$O(^RCD(340,"TOP",DEBTOR)) Q:DEBTOR'?1N.N D
|
---|
72 | .S DEBTOR4=$G(^RCD(340,DEBTOR,4)),TOTAL=$P(DEBTOR4,U,3),EFFDT=$P(DEBTOR4,U,6),DEBTOR0=$G(^(0)),FILE=$$FILE(DEBTOR0)
|
---|
73 | .I TOTAL D EN1^RCTOP1(DEBTOR,TOTAL,"Y",EFFDT,0,FILE)
|
---|
74 | .Q
|
---|
75 | ;compile documents into mail messages
|
---|
76 | D COMPILE
|
---|
77 | Q
|
---|
78 | ;
|
---|
79 | REFDOC ; refund, refund reversal documents
|
---|
80 | N CODE,BILL,DEBTOR,TOTAL,EFFDT,FILE,RFCODE
|
---|
81 | F RFCODE=1,3 S CODE=$S(RFCODE=1:"R",1:"RV") D
|
---|
82 | .S BILL=0 F S BILL=$O(^PRCA(430,"TREF",RFCODE,BILL)) Q:'BILL D
|
---|
83 | ..S DEBTOR=$P($G(^PRCA(430,BILL,0)),U,9) Q:'DEBTOR
|
---|
84 | ..S TOTAL=$P($G(^(7)),U,18) Q:'TOTAL ;NAKED TO LINE ABOVE
|
---|
85 | ..S EFFDT=$P($G(^RCD(340,+DEBTOR,4)),U,6),FILE=$$FILE(^(0))
|
---|
86 | ..D EN1^RCTOP1(DEBTOR,TOTAL,CODE,EFFDT,BILL,FILE)
|
---|
87 | ..Q
|
---|
88 | .Q
|
---|
89 | Q
|
---|
90 | ;
|
---|
91 | COMPILE ;compiles documents into mail messages and transmits them
|
---|
92 | ;builds message array
|
---|
93 | N CNT,SEQ,REC,XMDUZ,DOCTYPE,LRTYPE,XMSUB,XMTEXT,XMY,TSEQ,DOCAMT
|
---|
94 | S (SEQ,TSEQ)=0
|
---|
95 | F I=1,2,4 S TSEQ=TSEQ+($G(CNTR(I))\150)+$S($G(CNTR(I))#150:1,1:0)
|
---|
96 | F DOCTYPE=1,2,4 D:$D(^XTMP("RCTOPD",$J,DOCTYPE)) COMPILE1(DOCTYPE,CNTR(DOCTYPE))
|
---|
97 | D USRMSG
|
---|
98 | Q
|
---|
99 | COMPILE1(DOCTYPE,CNTR) ; compiles each type of document separately
|
---|
100 | S RCNT=RCNT+CNTR
|
---|
101 | I '$G(LRTYPE) F I=1,2,4 S:$D(^XTMP("RCTOPD",$J,I)) LRTYPE=I
|
---|
102 | F CNT=1:1:CNTR D
|
---|
103 | .D:CNT#150=1
|
---|
104 | ..K ^XTMP("RCTOPD",$J,"BUILD") S SEQ=SEQ+1
|
---|
105 | ..S REC=1,DOCAMT=0
|
---|
106 | ..Q
|
---|
107 | .S REC=REC+1,^XTMP("RCTOPD",$J,"BUILD",REC)=^XTMP("RCTOPD",$J,DOCTYPE,CNT)_U S:DOCTYPE=1 DOCAMT=DOCAMT+($E(^(REC),135,146)/100)
|
---|
108 | .I CNTR=CNT,LRTYPE=DOCTYPE S ^XTMP("RCTOPD",$J,"BUILD",REC+1)="END OF TRANSMISSION FOR SITE# "_SITE_": TOTAL RECORDS: "_RCNT
|
---|
109 | .I $S(CNTR=CNT:1,CNT#150=0:1,1:0) D
|
---|
110 | ..S ^XTMP("RCTOPD",$J,"BUILD",1)=SITE_U_$TR($J(SEQ,2)," ",0)_U_$TR($J(TSEQ,2)," ",0)_U_(REC-1)_U_DOCAMT_U
|
---|
111 | ..S XMDUZ="AR PACKAGE"
|
---|
112 | ..S XMY("XXX@Q-TOP.MED.VA.GOV")=""
|
---|
113 | ..S XMY("G.TOP")=""
|
---|
114 | ..S XMSUB=SITE_"/TOP TRANSMISSION/SEQ#: "_SEQ_"/"_$$NOW()
|
---|
115 | ..S XMTEXT="^XTMP(""RCTOPD"","_$J_",""BUILD"","
|
---|
116 | ..D ^XMD
|
---|
117 | ..Q
|
---|
118 | .Q
|
---|
119 | Q
|
---|
120 | ;
|
---|
121 | USRMSG ;sends mailman message of documents sent to user
|
---|
122 | N XMY,XMDUZ,XMSUB,X,RCNT
|
---|
123 | S XMDUZ="AR PACKAGE",XMY("G.TOP")=""
|
---|
124 | S XMSUB="TOP "_$S(RCDOC="M":"MASTER/UPDATE",RCDOC="U":"UPDATE",1:"RECERTIFICATION")_" RECORDS SENT ON "_$E(DT,4,5)_"/"_$E(DT,6,7)_"/"_$E(DT,2,3)
|
---|
125 | S ^XTMP("RCTOPD",$J,"REC1",1)="Name TIN TYPE AMOUNT"
|
---|
126 | S ^XTMP("RCTOPD",$J,"REC1",2)="---- --- ---- ------"
|
---|
127 | S X="",RCNT=3 F S X=$O(^XTMP("RCTOPD",$J,"REC",X)) Q:X="" S ^XTMP("RCTOPD",$J,"REC1",RCNT)=^(X),RCNT=RCNT+1
|
---|
128 | S ^XTMP("RCTOPD",$J,"REC1",RCNT)="Total Records: "_(RCNT-3)
|
---|
129 | S XMTEXT="^XTMP(""RCTOPD"","_$J_",""REC1"","
|
---|
130 | D ^XMD
|
---|
131 | ;
|
---|
132 | THIRD ;sends mailman message to user if no third letter found
|
---|
133 | Q:'$D(^XTMP("RCTOPD",$J,"THIRD"))
|
---|
134 | K ^XTMP("RCTOPD",$J,"REC1")
|
---|
135 | S XMDUZ="AR PACKAGE",XMY("G.TOP")=""
|
---|
136 | N TCT,TDEB,TDEB0,TBIL,TSP,FST
|
---|
137 | S XMSUB="TOP QUALIFIED/NO 3RD LETTER SENT ON "_$E(DT,4,5)_"/"_$E(DT,6,7)_"/"_$E(DT,2,3)
|
---|
138 | S ^XTMP("RCTOPD",$J,"REC1",1)="The following list of debtor bills were not sent to TOP."
|
---|
139 | S ^XTMP("RCTOPD",$J,"REC1",2)="Please review debtor's account to determine why the third"
|
---|
140 | S ^XTMP("RCTOPD",$J,"REC1",3)="notice letter has not been sent:"
|
---|
141 | S ^XTMP("RCTOPD",$J,"REC1",4)="Name Bill #"
|
---|
142 | S ^XTMP("RCTOPD",$J,"REC1",5)="---- ------"
|
---|
143 | S TCT=6,TSP=0,TDEB=""
|
---|
144 | F S TDEB=$O(^XTMP("RCTOPD",$J,"THIRD",TDEB)) Q:TDEB="" D
|
---|
145 | .S FST=1,TBIL=""
|
---|
146 | .I FST,TCT'=6 S ^XTMP("RCTOPD",$J,"REC1",TCT)="",TCT=TCT+1,TSP=TSP+1
|
---|
147 | .F S TBIL=$O(^XTMP("RCTOPD",$J,"THIRD",TDEB,TBIL)) Q:TBIL="" D
|
---|
148 | ..S TDEB0=$S(FST:TDEB,1:"")
|
---|
149 | ..S ^XTMP("RCTOPD",$J,"REC1",TCT)=TDEB0_$J(" ",35-$L(TDEB0))_TBIL
|
---|
150 | ..S TCT=TCT+1,FST=0
|
---|
151 | S ^XTMP("RCTOPD",$J,"REC1",TCT)="Total records: "_(TCT-(6+TSP))
|
---|
152 | S XMTEXT="^XTMP(""RCTOPD"","_$J_",""REC1"","
|
---|
153 | D ^XMD
|
---|
154 | COMPQ Q
|
---|
155 | ;
|
---|
156 | PROC(DEBTOR,QUIT,FILE,HOLD,EFFDT) ;process bills for a specific debtor
|
---|
157 | K ^TMP("RCTOPD",$J,"BILL")
|
---|
158 | S DEBTOR0=$G(^RCD(340,DEBTOR,0))
|
---|
159 | Q:'FILE
|
---|
160 | I FILE=2 S DFN=+DEBTOR0 D DEM^VADPT Q:$E(VADM(2),1,5)="00000"
|
---|
161 | S (BILL,TOTAL,REPAY)=0
|
---|
162 | I RCNEW,FILE=440 S HOLD=1
|
---|
163 | I 'RCNEW,$P(^RCD(340,DEBTOR,6),U,2),'$P(^(6),U,3) G TOTAL
|
---|
164 | I RCNEW,$D(^RCD(340,"DMC",1,DEBTOR)) G TOTAL
|
---|
165 | F S BILL=$O(^PRCA(430,"C",DEBTOR,BILL)) Q:BILL'?1N.N D
|
---|
166 | .I FILE=2,+VADM(6) S TOTAL=0,REPAY=1 Q
|
---|
167 | .S B0=$G(^PRCA(430,BILL,0)),B4=$G(^(4)),B6=$G(^(6)),B7=$G(^(7))
|
---|
168 | .Q:$P(B0,U,8)'=16
|
---|
169 | .Q:B4
|
---|
170 | .Q:'$P(B0,U,2) S CAT=$P($G(^PRCA(430.2,$P(B0,U,2),0)),U,7)
|
---|
171 | .Q:'CAT I ",16,17,21,22,23,26,27,33,"[(","_CAT_",") Q
|
---|
172 | .;check for DOJ referral here
|
---|
173 | .I $P(B6,U,4),($P(B6,U,5)="DOJ") Q
|
---|
174 | .S BILLDT=$P(B6,U,21) I (BILLDT<P10YDT)!(BILLDT>P181DT)!(BILLDT<$P(DEBTOR6,U,3)) Q
|
---|
175 | .I '$P(B6,U,3) D Q
|
---|
176 | ..;no 3rd letter being sent
|
---|
177 | ..N TDEB,TFIL
|
---|
178 | ..S TDEB=$G(^RCD(340,DEBTOR,0)),TFIL=$$FILE(TDEB),TDEB=$$NAME^RCTOP1(+TDEB,TFIL),TDEB=$P(TDEB,U,2),^XTMP("RCTOPD",$J,"THIRD",TDEB,$P(B0,U))=""
|
---|
179 | .I RCNEW,CAT>12,CAT<15 S HOLD=1
|
---|
180 | .I BILLDT,BILLDT<EFFDT S EFFDT=BILLDT
|
---|
181 | .S TOTAL=TOTAL+$P(B7,U)+$P(B7,U,2)+$P(B7,U,3)+$P(B7,U,4)+$P(B7,U,5)
|
---|
182 | .S ^TMP("RCTOPD",$J,"BILL",BILL)=""
|
---|
183 | .Q
|
---|
184 | ;
|
---|
185 | TOTAL ;set transmission total, reset quit variable
|
---|
186 | N RCSWINFO S RCSWINFO=$$SWSTAT^IBBAPI() ;PRCA*4.5*229
|
---|
187 | I RCNEW,'+RCSWINFO Q:TOTAL<25 ;PRCA*4.5*229
|
---|
188 | I RCNEW,+RCSWINFO Q:TOTAL'>0 ;PRCA*4.5*229
|
---|
189 | ;
|
---|
190 | I 'RCNEW S:TOTAL<25 TOTAL=0 S CURRTOT=$P($G(^RCD(340,DEBTOR,4)),U,3) Q:CURRTOT=TOTAL S TOTAL=TOTAL-CURRTOT
|
---|
191 | S QUIT=0
|
---|
192 | PROCQ Q
|
---|
193 | ;
|
---|
194 | NOW() ;compiles current date,time
|
---|
195 | N X,Y,%,%H
|
---|
196 | S %H=$H D YX^%DTC
|
---|
197 | Q Y
|
---|
198 | ;
|
---|
199 | FILE(DEBTOR0) ;gets file number for debtor
|
---|
200 | S FILE=$P($P(DEBTOR0,U),";",2)
|
---|
201 | S FILE=$S(FILE["DPT(":2,FILE["PRC(440":440,FILE["VA(200":200,1:0)
|
---|
202 | FILEQ Q FILE
|
---|