| [613] | 1 | RCRJRCOL ;WISC/RFJ-start of the ar data collector ;1 Mar 97 | 
|---|
|  | 2 | ;;4.5;Accounts Receivable;**68,96,101,103,170,176,191**;Mar 20, 1995 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | Q | 
|---|
|  | 5 | ; | 
|---|
|  | 6 | ; | 
|---|
|  | 7 | START(PRCASITE,DATEBEG,DATEEND) ;  start ar1 collector and fms data collector | 
|---|
|  | 8 | N %,ACTDATE,AYEAROLD,BILLDA,CLOSED,CRITERIA,DATA0,DATASTOR,DATE,IBCNS,PREVSTAT,STAT,STRTTIME | 
|---|
|  | 9 | D KILLTMP | 
|---|
|  | 10 | ; | 
|---|
|  | 11 | ;  set start time | 
|---|
|  | 12 | D NOW^%DTC S STRTTIME=% | 
|---|
|  | 13 | ; | 
|---|
|  | 14 | S DATASTOR="^TMP($J,""RCRJRCOLNDB"",CRITERIA)" | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | ;  count new receivables | 
|---|
|  | 17 | S %=$$GETNEW(DATEBEG,DATEEND,1) | 
|---|
|  | 18 | ; | 
|---|
|  | 19 | ;  used to determine future payments less than a year old | 
|---|
|  | 20 | S AYEAROLD=$$FMADD^XLFDT(DATEEND,365) | 
|---|
|  | 21 | ; | 
|---|
|  | 22 | ;  count current receivables for period and decrease in debts | 
|---|
|  | 23 | ;  do not look at bills not approved/finished (18,20,27,31) | 
|---|
|  | 24 | S STAT=0 F  S STAT=$O(^PRCA(430,"ASDT",STAT)) Q:'STAT  I STAT'=18,STAT'=20,STAT'=27,STAT'=31 D | 
|---|
|  | 25 | .   S DATE=0,CLOSED=0 | 
|---|
|  | 26 | .   ;  do not look at bills closed before begin date | 
|---|
|  | 27 | .   ;  count decrease number of debts, must be closed in month | 
|---|
|  | 28 | .   ;  stat 17 (in-active)       ; stat 22 (collected/closed) | 
|---|
|  | 29 | .   ;  stat 23 (write-off)       ; stat 26 (cancelled) | 
|---|
|  | 30 | .   ;  stat 39 (cancellation)    ; stat 41 (refunded) | 
|---|
|  | 31 | .   I ",17,22,23,26,39,41,"[(","_STAT_",") S DATE=DATEBEG-1,CLOSED=1 | 
|---|
|  | 32 | .   F  S DATE=$O(^PRCA(430,"ASDT",STAT,DATE)) Q:'DATE  D | 
|---|
|  | 33 | .   .   S BILLDA=0 F  S BILLDA=$O(^PRCA(430,"ASDT",STAT,DATE,BILLDA)) Q:'BILLDA  D | 
|---|
|  | 34 | .   .   .   ;  do not count bills already skipped | 
|---|
|  | 35 | .   .   .   I $D(^TMP($J,"RCRJRCOL","COUNT",BILLDA,0)) Q | 
|---|
|  | 36 | .   .   .   S DATA0=$G(^PRCA(430,BILLDA,0)) | 
|---|
|  | 37 | .   .   .   I '$P(DATA0,"^",12) S ^TMP($J,"RCRJRCOL","COUNT",BILLDA,0)="" Q | 
|---|
|  | 38 | .   .   .   ;  no original amount | 
|---|
|  | 39 | .   .   .   I $P(DATA0,"^",3)="" S ^TMP($J,"RCRJRCOL","COUNT",BILLDA,0)="" Q | 
|---|
|  | 40 | .   .   .   ; | 
|---|
|  | 41 | .   .   .   ;  do not look at bills activated after end date | 
|---|
|  | 42 | .   .   .   S ACTDATE=$P($P($G(^PRCA(430,BILLDA,6)),"^",21),".") | 
|---|
|  | 43 | .   .   .   I 'ACTDATE!(ACTDATE>DATEEND) S ^TMP($J,"RCRJRCOL","COUNT",BILLDA,0)="" Q | 
|---|
|  | 44 | .   .   .   ; | 
|---|
|  | 45 | .   .   .   ;  bill is closed before end date, decrease debt | 
|---|
|  | 46 | .   .   .   I CLOSED,DATE'>DATEEND D  Q | 
|---|
|  | 47 | .   .   .   .   ;  if previous status was: | 
|---|
|  | 48 | .   .   .   .   ;  18 (new bill), 27 (incomplete), 20 (pend approval) | 
|---|
|  | 49 | .   .   .   .   ;  then the bill was never counted as a new receivable | 
|---|
|  | 50 | .   .   .   .   ;  and should not be counted as a decrease in debts | 
|---|
|  | 51 | .   .   .   .   S PREVSTAT=$P($G(^PRCA(430,BILLDA,9)),"^",6) | 
|---|
|  | 52 | .   .   .   .   I PREVSTAT=18!(PREVSTAT=20)!(PREVSTAT=27) S ^TMP($J,"RCRJRCOL","COUNT",BILLDA,0)="" Q | 
|---|
|  | 53 | .   .   .   .   D SETTOTAL^RCRJRCO1(17,0,0) | 
|---|
|  | 54 | .   .   .   ; | 
|---|
|  | 55 | .   .   .   D CURRENT^RCRJRCOB(BILLDA,DATEEND,AYEAROLD) | 
|---|
|  | 56 | ; | 
|---|
|  | 57 | ;  collect data from file 433 | 
|---|
|  | 58 | D START^RCRJRCO1 | 
|---|
|  | 59 | ;  send data to ndb and fms | 
|---|
|  | 60 | D SEND^RCRJRCOR | 
|---|
|  | 61 | ;  print summary report | 
|---|
|  | 62 | D SUMMARY^RCRJRCOR | 
|---|
|  | 63 | ; | 
|---|
|  | 64 | ;  compile and print bad debt report | 
|---|
|  | 65 | I '$G(RCRJFBDR) D START^RCRJRBD(DATEEND) | 
|---|
|  | 66 | ; | 
|---|
|  | 67 | KILLTMP ;  kill tmp globals | 
|---|
|  | 68 | K ^TMP($J,"RCRJRBD")        ;stores the bad debt report | 
|---|
|  | 69 | K ^TMP($J,"RCRJRCOL")       ;used internally | 
|---|
|  | 70 | K ^TMP($J,"RCRJRCOLNDB")    ;stores the ndb data | 
|---|
|  | 71 | K ^TMP($J,"RCRJROIG")       ;stores the data for the oig extract | 
|---|
|  | 72 | K ^TMP($J,"RCRJRCOLSV")     ;stores the fms sv code sheet | 
|---|
|  | 73 | K ^TMP($J,"RCRJRCOLWR")     ;stores the fms wr code sheet | 
|---|
|  | 74 | K ^TMP($J,"RCRJRCOLREPORT") ;stores the user report | 
|---|
|  | 75 | K ^TMP($J,"RCBMILLDATA")    ;stores the mccf/hsif payment split for rx | 
|---|
|  | 76 | Q | 
|---|
|  | 77 | ; | 
|---|
|  | 78 | ; | 
|---|
|  | 79 | GETNEW(DATEBEG,DATEEND,RCRJFSTO) ;  get new receivables between two dates | 
|---|
|  | 80 | ;  rcrjfsto is a flag which is set to 1 for the ndb rollup and it | 
|---|
|  | 81 | ;  will store the data in tmp.  If its not a 1, it will count the | 
|---|
|  | 82 | ;  new bills and just return the count ^ amount. | 
|---|
|  | 83 | N COUNT,DATE,ORIGAMT,PRINBAL | 
|---|
|  | 84 | S COUNT=0,PRINBAL=0 | 
|---|
|  | 85 | S DATE=DATEBEG-1 | 
|---|
|  | 86 | F  S DATE=$O(^PRCA(430,"ACTDT",DATE)) Q:'DATE!(DATE>DATEEND)  D | 
|---|
|  | 87 | .   S BILLDA=0 F  S BILLDA=$O(^PRCA(430,"ACTDT",DATE,BILLDA)) Q:'BILLDA  D | 
|---|
|  | 88 | .   .   S ORIGAMT=$$TESTNEW(BILLDA,DATEBEG,DATEEND) | 
|---|
|  | 89 | .   .   ;  not a new receivable | 
|---|
|  | 90 | .   .   I ORIGAMT="" S:RCRJFSTO ^TMP($J,"RCRJRCOL","COUNT",BILLDA,0)="" Q | 
|---|
|  | 91 | .   .   ;  store for ndb | 
|---|
|  | 92 | .   .   I RCRJFSTO D SETTOTAL^RCRJRCO1(13,ORIGAMT,0) | 
|---|
|  | 93 | .   .   S COUNT=COUNT+1,PRINBAL=PRINBAL+ORIGAMT | 
|---|
|  | 94 | ; | 
|---|
|  | 95 | Q COUNT_"^"_PRINBAL | 
|---|
|  | 96 | ; | 
|---|
|  | 97 | ; | 
|---|
|  | 98 | TESTNEW(BILLDA,DATEBEG,DATEEND) ;  test to see if a bill is a new receivable | 
|---|
|  | 99 | ;  returns the principal balance if a bill is new | 
|---|
|  | 100 | N DATA0,STAT | 
|---|
|  | 101 | S DATA0=$G(^PRCA(430,BILLDA,0)) | 
|---|
|  | 102 | ;  no site | 
|---|
|  | 103 | I '$P(DATA0,"^",12) Q "" | 
|---|
|  | 104 | ;  bill never had an original amount (prepayments would not be | 
|---|
|  | 105 | ;  picked up here since they do not have an original amount) | 
|---|
|  | 106 | I $P(DATA0,"^",3)="" Q "" | 
|---|
|  | 107 | ; | 
|---|
|  | 108 | S STAT=$P(DATA0,"^",8) | 
|---|
|  | 109 | ;  no status | 
|---|
|  | 110 | I 'STAT Q "" | 
|---|
|  | 111 | ;  bill was cancelled the same month | 
|---|
|  | 112 | ;I STAT=26,($E($P(DATA0,"^",14),1,5)=$E(DATEBEG,1,5)) Q "" | 
|---|
|  | 113 | I STAT=26&($P(DATA0,"^",14)<DATEBEG!($P(DATA0,"^",14)>DATEEND)) Q "" | 
|---|
|  | 114 | ;  bill incomplete | 
|---|
|  | 115 | I STAT=27 Q "" | 
|---|
|  | 116 | ;  bill new | 
|---|
|  | 117 | I STAT=18 Q "" | 
|---|
|  | 118 | ;  bill pending approval | 
|---|
|  | 119 | I STAT=20 Q "" | 
|---|
|  | 120 | ;  bill returned from AR (new) | 
|---|
|  | 121 | I STAT=31 Q "" | 
|---|
|  | 122 | ; | 
|---|
|  | 123 | ;  yes, its a new receivable, return its original amount | 
|---|
|  | 124 | Q +$P(DATA0,"^",3) | 
|---|
|  | 125 | ; | 
|---|
|  | 126 | ; | 
|---|
|  | 127 | CRITERIA(BILLDA) ;  find a bills criteria/category 1,3,4,5 | 
|---|
|  | 128 | ;  returns 1--3-4-5  where the number is the criteria number | 
|---|
|  | 129 | ;  the second piece is set at settotal^rcrjrco1 | 
|---|
|  | 130 | ; | 
|---|
|  | 131 | N %,CRITER1,CRITER35,DATA0,X | 
|---|
|  | 132 | S DATA0=$G(^PRCA(430,BILLDA,0)) | 
|---|
|  | 133 | ; | 
|---|
|  | 134 | ;  % = segment | 
|---|
|  | 135 | S %=$P(DATA0,"^",21) | 
|---|
|  | 136 | S CRITER1=$S(%=243:1,%=244:3,%=245:2,%=246:8,%=247:9,%=248:10,%=249:5,%=251:14,%=252:16,%=292:6,%=293:7,%=294:11,%=295:19,%=296:20,%=297:4,%=298:12,1:0) | 
|---|
|  | 137 | ; | 
|---|
|  | 138 | ;   acck = accrual | 
|---|
|  | 139 | I CRITER1=8,'$$ACCK^PRCAACC(BILLDA) S CRITER1=18 | 
|---|
|  | 140 | ; | 
|---|
|  | 141 | I 'CRITER1 D | 
|---|
|  | 142 | . S %=$P($G(^PRCA(430.2,+$P(DATA0,"^",2),0)),"^",7) | 
|---|
|  | 143 | . ; % = Category Number: | 
|---|
|  | 144 | . ; 22 TORT FEASOR | 
|---|
|  | 145 | . ; 18 SHARING AGREEMENTS | 
|---|
|  | 146 | . ; 33 PREPAYMENT | 
|---|
|  | 147 | . ; 40 ADULT DAY HEALTH CARE | 
|---|
|  | 148 | . ; 41 DOMICILIARY | 
|---|
|  | 149 | . ; 42 RESPITE CARE-INSTITUTIONAL | 
|---|
|  | 150 | . ; 43 RESPITE CARE-NON-INSTITUTIONAL | 
|---|
|  | 151 | . ; 44 GERIATRIC EVAL-INSTITUTIONAL | 
|---|
|  | 152 | . ; 45 GERIATRIC EVAL-NON-INSTITUTION | 
|---|
|  | 153 | . ; 46 NURSING HOME CARE-LTC | 
|---|
|  | 154 | . S CRITER1=$S(%=22:15,%=18:17,%=33:13,%=40:1,%=41:20,%=42:20,%=43:1,%=44:20,%=45:1,%=46:20,1:18) | 
|---|
|  | 155 | ; | 
|---|
|  | 156 | ;  determine criteria 3,4,5 | 
|---|
|  | 157 | S CRITER35="0-0-0" | 
|---|
|  | 158 | I CRITER1>3,CRITER1<8  D | 
|---|
|  | 159 | .   S %=$TR($$CRIT^IBRFN2(BILLDA),"^","-") ;integration agreement 1182 | 
|---|
|  | 160 | .   I %=-1 S CRITER35="3-1-4" Q | 
|---|
|  | 161 | .   I $P(%,"-")="" S $P(%,"-")=3 | 
|---|
|  | 162 | .   I $P(%,"-",2)="" S $P(%,"-",2)=1 | 
|---|
|  | 163 | .   I $P(%,"-",3)="" S $P(%,"-",3)=4 | 
|---|
|  | 164 | .   S CRITER35=% | 
|---|
|  | 165 | ; | 
|---|
|  | 166 | Q CRITER1_"--"_CRITER35 | 
|---|