| 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 | 
|---|