1 | RCDMB1MT ;ALB/MR-REPAYMENT PLAN MONITOR ;16-AUG-00
|
---|
2 | ;;4.5;Accounts Receivable;**167,171,188**;Mar 20, 1995
|
---|
3 | ;
|
---|
4 | EN ; - Entry point for this program (Called by PRCABJ - AR Nightly Process)
|
---|
5 | N BILL,CNT,DATA,DFN,FLG,I,J,LINE,RCPT,PTDA,RCAR,RCAT,RCDA,RCDB,RCRP,RPDT
|
---|
6 | N TXT,TYPE,X
|
---|
7 | ;
|
---|
8 | K ^TMP("RCDMBDAT",$J)
|
---|
9 | ;
|
---|
10 | ; - Find data required for report.
|
---|
11 | S RCDA=""
|
---|
12 | F S RCDA=$O(^PRCA(430,"AC",16,RCDA)) Q:'RCDA D
|
---|
13 | . S RCAR=$G(^PRCA(430,RCDA,0)) Q:'RCAR
|
---|
14 | . I '$P($G(^PRCA(430,RCDA,4)),"^") Q ; No Repayment Plan
|
---|
15 | . S RCAT=+$P(RCAR,"^",2) ; Gets AR category.
|
---|
16 | . S RCDB=$P(RCAR,"^",9) ; Gets the pointer to the Debtor file (#340)
|
---|
17 | . S RCPT=$$PAT(RCDB) Q:RCPT="" ; Gets patient info.
|
---|
18 | . S DFN=$P(RCPT,"^",4) ; Gets the pointer to the Patient file (#2)
|
---|
19 | . S RCRP=$$RP(RCDA,RCDB) ; Defaulted Repymt.Plan/New Bill entered
|
---|
20 | . I 'RCRP,'$P(RCRP,"^",2) Q ; Neither case was found
|
---|
21 | . ;
|
---|
22 | . ; - Sets the temporary global
|
---|
23 | . I $P(RCRP,"^") D ; Defaulted on the Repayment Plan
|
---|
24 | . . S ^TMP("RCDMBDAT",$J,1,DFN)=RCPT
|
---|
25 | . . S ^TMP("RCDMBDAT",$J,1,DFN,$P(RCAR,"^"))=""
|
---|
26 | . I $P(RCRP,"^",2) D ; Had a new bill entered
|
---|
27 | . . S ^TMP("RCDMBDAT",$J,2,DFN)=RCPT
|
---|
28 | . . S X=""
|
---|
29 | . . F S X=$O(^TMP("RCDMBDAT",$J,"BILL",X)) Q:X="" D
|
---|
30 | . . . S ^TMP("RCDMBDAT",$J,2,DFN,X)=""
|
---|
31 | . . K ^TMP("RCDMBDAT",$J,"BILL")
|
---|
32 | ;
|
---|
33 | ; - No cases to report were found
|
---|
34 | S LINE=0 I '$D(^TMP("RCDMBDAT",$J)) G SND
|
---|
35 | ;
|
---|
36 | ; - Formats and set the data on ^TMP("RCDMBMSG",$J)
|
---|
37 | K ^TMP("RCDMBMSG",$J)
|
---|
38 | S (TYPE,PTDA,BILL)="",LINE=1
|
---|
39 | F S TYPE=$O(^TMP("RCDMBDAT",$J,TYPE)) Q:TYPE="" D
|
---|
40 | . ;
|
---|
41 | . ; - Prints the Header (Name SSN...) and updates LINE
|
---|
42 | . D HDR(TYPE,.LINE) S CNT=0
|
---|
43 | . F S PTDA=$O(^TMP("RCDMBDAT",$J,TYPE,PTDA)) Q:PTDA="" D
|
---|
44 | . . S DATA=$G(^TMP("RCDMBDAT",$J,TYPE,PTDA))
|
---|
45 | . . S CNT=CNT+1,X=""
|
---|
46 | . . S $E(X,1)=$P(DATA,"^") ; Debtor Name
|
---|
47 | . . S $E(X,38)=$P(DATA,"^",2) ; SSN
|
---|
48 | . . S $E(X,51)=$P(DATA,"^",3) ; Phone Number
|
---|
49 | . . S FLG=0 I $P(DATA,"^",5)'="" S FLG=1 ; Date of Death
|
---|
50 | . . F S BILL=$O(^TMP("RCDMBDAT",$J,TYPE,PTDA,BILL)) Q:BILL="" D
|
---|
51 | . . . I FLG,X="" S $E(X,6)="DOD: "_$P(DATA,"^",5),FLG=0
|
---|
52 | . . . S $E(X,65)=BILL ; Bill Number
|
---|
53 | . . . S ^TMP("RCDMBMSG",$J,LINE)=X,X=""
|
---|
54 | . . . S LINE=LINE+1
|
---|
55 | . . I FLG D
|
---|
56 | . . . S ^TMP("RCDMBMSG",$J,LINE)=" DOD: "_$P(DATA,"^",5)
|
---|
57 | . . . S LINE=LINE+1
|
---|
58 | . I CNT'>1 Q
|
---|
59 | . S ^TMP("RCDMBMSG",$J,LINE)="",LINE=LINE+1 ; Skip a line
|
---|
60 | . S ^TMP("RCDMBMSG",$J,LINE)="Total of "_CNT_" debtor(s)",LINE=LINE+1
|
---|
61 | . S ^TMP("RCDMBMSG",$J,LINE)="",LINE=LINE+1 ; Skip a line
|
---|
62 | ;
|
---|
63 | SND ; - If one of the two situations or none of them were found, it will
|
---|
64 | ; informed in the e-mail
|
---|
65 | ;
|
---|
66 | F I=1,2 D
|
---|
67 | . I $D(^TMP("RCDMBDAT",$J,I)) Q
|
---|
68 | . F J=1:1:3 S LINE=LINE+1,^TMP("RCDMBMSG",$J,LINE)=""
|
---|
69 | . I I=1 D Q
|
---|
70 | . . S ^TMP("RCDMBMSG",$J,LINE)="There were no debtors who defaulted on their repayment plan yesterday."
|
---|
71 | . S ^TMP("RCDMBMSG",$J,LINE)="There were no debtors with repayment plans who had new active bills yesterday."
|
---|
72 | ;
|
---|
73 | D XMD ; Sends the Mailman message
|
---|
74 | ;
|
---|
75 | ENQ K ^TMP("RCDMBDAT",$J),^TMP("RCDMBMSG",$J)
|
---|
76 | Q
|
---|
77 | ;
|
---|
78 | XMD ; Sets the Mailman variables and send the message
|
---|
79 | N DUZ,XMSUB,XMDUZ,XMY,XMDUN,XMMG,XMSCR,XMTEXT,XMZ
|
---|
80 | ;
|
---|
81 | S XMSUB="AR REPAYMENT PLAN MONITOR",XMDUZ="AR PACKAGE"
|
---|
82 | S XMY("G.RC REPAY PLANS")="",XMTEXT="^TMP(""RCDMBMSG"","_$J_","
|
---|
83 | ;
|
---|
84 | D ^XMD
|
---|
85 | ;
|
---|
86 | Q
|
---|
87 | ;
|
---|
88 | PAT(DEB) ; - Returns Debtor information
|
---|
89 | ; Input: DEB=AR pointer to Debtor file (#340)
|
---|
90 | ; Output: Name ^ SSN ^ Phone Number ^ Pointer to Patient file ^
|
---|
91 | ; Date of Death (MM/DD/YY)
|
---|
92 | ;
|
---|
93 | N DEATH,DEBTOR,DFN,NAME,PHONE,SSN,VA,VADM,VAERR,VAPA
|
---|
94 | I 'DEB Q ""
|
---|
95 | S DEBTOR=$G(^RCD(340,DEB,0)) I $P(DEBTOR,"^")'["DPT" Q ""
|
---|
96 | S DFN=+DEBTOR
|
---|
97 | D DEM^VADPT S NAME=VADM(1),SSN=$P(VADM(2),"^",2),DEATH=$P(VADM(6),".")
|
---|
98 | I DEATH'="" S DEATH=$$DAT(DEATH)
|
---|
99 | D ADD^VADPT S PHONE=VAPA(8)
|
---|
100 | ;
|
---|
101 | Q (NAME_"^"_SSN_"^"_PHONE_"^"_DFN_"^"_DEATH)
|
---|
102 | ;
|
---|
103 | RP(X,DEB) ; - Checks if a Repayment Plan became defaulted or if a new
|
---|
104 | ; bill has been entered to a patient under a Repayment Plan established
|
---|
105 | ; Input: X=Pointer to the AR file #430
|
---|
106 | ; DEB=Pointer to the Detor file #340
|
---|
107 | ; Output: Y=Defaulted? (1-YES/0-NO) ^ New bill entered? (1-YES/0-NO) ^
|
---|
108 | ; Bill(s) # separated by "," (If piece 2 = 1)
|
---|
109 | ;
|
---|
110 | N ARZ,DEF,ELM,I,NEW,NPMT,RCBL,RP,YST
|
---|
111 | ;
|
---|
112 | S (DEF,NEW)=0
|
---|
113 | S RP=$G(^PRCA(430,X,4)),NPMT=$P(RP,"^",4),YST=$$HTFM^XLFDT($H-1,1)
|
---|
114 | ;
|
---|
115 | ; - Checks if the patient defaulted on his Repayment Plan
|
---|
116 | F I=1:1:NPMT D Q:DEF
|
---|
117 | . S ELM=$G(^PRCA(430,X,5,I,0)) Q:ELM=""
|
---|
118 | . I $P(ELM,"^",2) Q
|
---|
119 | . I $$FMDIFF^XLFDT(YST,$P(ELM,"^"))=1 D Q
|
---|
120 | . . S DEF=1
|
---|
121 | ;
|
---|
122 | ; Checks if a Bill became active for the debtor yesterday
|
---|
123 | S RCBL=""
|
---|
124 | F S RCBL=$O(^PRCA(430,"C",DEB,RCBL)) Q:RCBL="" D
|
---|
125 | . I RCBL=X Q
|
---|
126 | . S ARZ=$G(^PRCA(430,RCBL,0))
|
---|
127 | . I $P(ARZ,"^",8)'=16!($P(ARZ,"^",14)'=YST) Q
|
---|
128 | . S NEW=1,^TMP("RCDMBDAT",$J,"BILL",$P($G(^PRCA(430,RCBL,0)),"^"))=""
|
---|
129 | Q (DEF_"^"_NEW)
|
---|
130 | ;
|
---|
131 | HDR(TP,LN) ; Sets the temporary global with the header of the E-mail
|
---|
132 | ; Input: TP=Type of problem (1-Defaulted / 2-New bill)
|
---|
133 | ; LN=Next line to be set on the ^TMP("RCDMBMSG",$J,LN) global
|
---|
134 | ;
|
---|
135 | N X,I
|
---|
136 | I TP=1 D
|
---|
137 | . S ^TMP("RCDMBMSG",$J,LN)="The following debtors just defaulted on a Repayment Plan by not making a"
|
---|
138 | . S LN=LN+1
|
---|
139 | . S ^TMP("RCDMBMSG",$J,LN)="scheduled payment on or before the scheduled payment date: "
|
---|
140 | I TP=2 D
|
---|
141 | . F I=1,2 S ^TMP("RCDMBMSG",$J,LN)="",LN=LN+1
|
---|
142 | . S ^TMP("RCDMBMSG",$J,LN)="The following debtors with a Repayment Plan had a new active bill entered: "
|
---|
143 | ;
|
---|
144 | S LN=LN+1,^TMP("RCDMBMSG",$J,LN)=""
|
---|
145 | S X="",$E(X,1)="Name",$E(X,38)="SSN",$E(X,51)="Phone Number"
|
---|
146 | S $E(X,65)=$S(TP=1:"Bill",1:"New Bill")
|
---|
147 | S LN=LN+1,^TMP("RCDMBMSG",$J,LN)=X
|
---|
148 | S X="",$P(X,"=",79)="" S LN=LN+1,^TMP("RCDMBMSG",$J,LN)=X
|
---|
149 | S LN=LN+1
|
---|
150 | Q
|
---|
151 | ;
|
---|
152 | DAT(DAT) ;Changes date from FM to MM/DD/YYYY
|
---|
153 | N YR
|
---|
154 | S YR=DAT\10000+1700
|
---|
155 | Q $E(DAT,4,5)_"/"_$E(DAT,6,7)_"/"_YR
|
---|