1 | RCDMBWLA ;WISC/RFJ-diagnostic measures workload report (build it) (Cont.) ;1 Jan 01
|
---|
2 | ;;4.5;Accounts Receivable;**167,171**;Mar 20, 1995
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | RECTYP ; screen on receivable type
|
---|
7 | I ($P(RCDATA2,"^",8)'="")&($P(RCDATA2,"^",8)'=5) D
|
---|
8 | . S RCIFSTAT=RCIFSTAT_"I RCRECTYP="_$P(RCDATA2,"^",8)_" "
|
---|
9 | . S RCIFDESC=RCIFDESC_"[RECEIVABLE TYPE equals "_$S($P(RCDATA2,"^",8)=1:"INPATIENT",$P(RCDATA2,"^",8)=2:"OUTPATIENT",$P(RCDATA2,"^",8)=3:"PROSTHETICS",$P(RCDATA2,"^",8)=4:"PHARMACY REFILL",$P(RCDATA2,"^",8)=5:"ALL RECEIVABLES")_"]"
|
---|
10 | Q
|
---|
11 | ;
|
---|
12 | ;
|
---|
13 | BUILDIF ; build if statement by clerk
|
---|
14 | S ^TMP("RCDMBWLR",$J,RCCLERK,RCASSIGN,"IF")=RCIFSTAT
|
---|
15 | S ^TMP("RCDMBWLR",$J,RCCLERK,RCASSIGN,"DESC")=RCIFDESC
|
---|
16 | Q
|
---|
17 | ;
|
---|
18 | ;
|
---|
19 | PAYDAYS(RCBILLDA) ; return number of days since last payment
|
---|
20 | N DATA1,DAYS,RCDATE,RCTRANDA
|
---|
21 | ; loop all transactions in reverse order until you find last payment
|
---|
22 | S RCDATE=0
|
---|
23 | S RCTRANDA=99999999999 F S RCTRANDA=$O(^PRCA(433,"C",RCBILLDA,RCTRANDA),-1) Q:'RCTRANDA D I RCDATE Q
|
---|
24 | . S DATA1=$G(^PRCA(433,RCTRANDA,1))
|
---|
25 | . ; not a payment transaction
|
---|
26 | . I $P(DATA1,"^",2)'=2,$P(DATA1,"^",2)'=34 Q
|
---|
27 | . ; get the transaction date
|
---|
28 | . S RCDATE=+$P($P(DATA1,"^",9),".")
|
---|
29 | ;
|
---|
30 | ; if payment not found, use date bill activated
|
---|
31 | ; if there is a problem with AR and the bill does not have an
|
---|
32 | ; activation date, use default 1/1/1990
|
---|
33 | I 'RCDATE S RCDATE=+$P($P($G(^PRCA(430,RCBILLDA,6)),"^",21),".") I 'RCDATE S RCDATE=2900101
|
---|
34 | ;
|
---|
35 | ; calculate the number of days from today
|
---|
36 | S DAYS=$$FMDIFF^XLFDT(DT,RCDATE)
|
---|
37 | Q DAYS
|
---|
38 | ;
|
---|
39 | ;
|
---|
40 | TRANDAYS(RCBILLDA) ; return number of days since last transaction
|
---|
41 | N DAYS,RCDATE,RCTRANDA
|
---|
42 | ; get the last transaction date
|
---|
43 | S RCTRANDA=+$O(^PRCA(433,"C",RCBILLDA,999999999999),-1)
|
---|
44 | ; get the transaction date
|
---|
45 | S RCDATE=+$P($P($G(^PRCA(433,RCTRANDA,1)),"^",9),".")
|
---|
46 | ;
|
---|
47 | ; if transaction not found, use date bill activated
|
---|
48 | ; if there is a problem with AR and the bill does not have an
|
---|
49 | ; activation date, use default 1/1/1990
|
---|
50 | I 'RCDATE S RCDATE=+$P($P($G(^PRCA(430,RCBILLDA,6)),"^",21),".") I 'RCDATE S RCDATE=2900101
|
---|
51 | ;
|
---|
52 | ; calculate the number of days from today
|
---|
53 | S DAYS=$$FMDIFF^XLFDT(DT,RCDATE)
|
---|
54 | Q DAYS
|
---|
55 | ;
|
---|
56 | PTNAM(RCBILLDA) ; return patient name if third party
|
---|
57 | S (RCPTNAM,RCSSN)=""
|
---|
58 | N IBFOTP,IBBCAT,IBZ
|
---|
59 | S IBBCAT=$P(RCDATA0,"^",2) Q:'IBBCAT "^"
|
---|
60 | S IBFOTP=$$CATTYP^IBJD1(IBBCAT)
|
---|
61 | I IBFOTP="T" D
|
---|
62 | . I '$D(^DGCR(399,RCBILLDA,0)) Q
|
---|
63 | . S IBZ=^DGCR(399,RCBILLDA,0),DFN=+$P(IBZ,"^",2)
|
---|
64 | . D DEM^VADPT S RCPTNAM=VADM(1),RCSSN=+VADM(2)
|
---|
65 | Q (RCPTNAM_"^"_RCSSN)
|
---|
66 | ;
|
---|
67 | LOOP ; loop all active bills and put them into the assignment list
|
---|
68 | N RCPTNAM,RCSSN,RCX,RCRECTYP,RCY,RCCLDAT0
|
---|
69 | S RCBILLDA=0 F S RCBILLDA=$O(^PRCA(430,"AC",16,RCBILLDA)) Q:'RCBILLDA D
|
---|
70 | . ; get the data from the bill file
|
---|
71 | . S RCDATA0=$G(^PRCA(430,RCBILLDA,0)) I RCDATA0="" Q
|
---|
72 | . S RCDATA6=$G(^PRCA(430,RCBILLDA,6)) S RCRC=$P(RCDATA6,"^",4)
|
---|
73 | . S RCDATA7=$G(^PRCA(430,RCBILLDA,7))
|
---|
74 | . S RCBALANC=$P(RCDATA7,"^")+$P(RCDATA7,"^",2)+$P(RCDATA7,"^",3)+$P(RCDATA7,"^",4)+$P(RCDATA7,"^",5)
|
---|
75 | . ; get the data for the debtor
|
---|
76 | . K RCDPDATA
|
---|
77 | . D DIQ340^RCDPAPLM(+$P(RCDATA0,"^",9),.01)
|
---|
78 | . S RCNAME=$G(RCDPDATA(340,+$P(RCDATA0,"^",9),.01,"E")) I RCNAME="" S RCNAME=" "
|
---|
79 | . S RCDEBT=$G(RCDPDATA(340,+$P(RCDATA0,"^",9),.01,"I"))
|
---|
80 | . ; get the patient name and SSN if third party bill
|
---|
81 | . S RCY=$$PTNAM^RCDMBWLA(RCBILLDA)
|
---|
82 | . S RCPTNAM=$P(RCY,"^"),RCSSN=$P(RCY,"^",2)
|
---|
83 | . ; get the ssn-first party
|
---|
84 | . I $G(RCDPDATA(340,+$P(RCDATA0,"^",9),.01,"I"))["DPT" S RCSSN=$P($G(^DPT(+$G(RCDPDATA(340,+$P(RCDATA0,"^",9),.01,"I")),0)),"^",9)
|
---|
85 | . S RCSSN=$E($E(RCSSN,6,9)_" ",1,4)
|
---|
86 | . ; test for date of death
|
---|
87 | . S RCFDEATH=0
|
---|
88 | . I $G(RCDPDATA(340,+$P(RCDATA0,"^",9),.01,"I"))["DPT(",$G(^DPT(+$G(RCDPDATA(340,+$P(RCDATA0,"^",9),.01,"I")),.35)) S RCFDEATH=1
|
---|
89 | . ; get the receivable type
|
---|
90 | . S RCCLDAT0=$G(^DGCR(399,RCBILLDA,0))
|
---|
91 | . S RCX=$$BTYP^IBCOIVM1(RCBILLDA,RCCLDAT0)
|
---|
92 | . S RCRECTYP=$S(RCX="I":1,RCX="O":2,RCX="P":3,RCX="R":4,1:"")
|
---|
93 | . ;
|
---|
94 | . ; loop assignments and see if they should appear on the clerks list
|
---|
95 | . S RCCLERK=0 F S RCCLERK=$O(^TMP("RCDMBWLR",$J,RCCLERK)) Q:'RCCLERK D
|
---|
96 | . . S RCASSIGN=0 F S RCASSIGN=$O(^TMP("RCDMBWLR",$J,RCCLERK,RCASSIGN)) Q:'RCASSIGN D
|
---|
97 | . . . S RCIFSTAT=^TMP("RCDMBWLR",$J,RCCLERK,RCASSIGN,"IF")
|
---|
98 | . . . X RCIFSTAT
|
---|
99 | . . . I $T D
|
---|
100 | . . . . I $D(^TMP($J,RCCLERK,RCBILLDA)) Q
|
---|
101 | . . . . S RCDEBTDA=+$P(RCDATA0,"^",9)
|
---|
102 | . . . . S ^TMP("RCDMBWLR",$J,RCCLERK,RCASSIGN,"IF",$E(RCNAME,1,30),RCDEBTDA,RCBILLDA)=RCSSN_"^"_RCFDEATH_"^"_RCBALANC_"^"_RCPTNAM
|
---|
103 | . . . . S ^TMP($J,RCCLERK,RCBILLDA)=""
|
---|
104 | Q
|
---|
105 | ;
|
---|