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