1 | IBJDF11 ;ALB/CPM - THIRD PARTY FOLLOW-UP REPORT (COMPILE) ; 09-JAN-97
|
---|
2 | ;;2.0;INTEGRATED BILLING;**69,80,118,128,204,205,227**;21-MAR-94
|
---|
3 | ;
|
---|
4 | DQ ; - Tasked entry point.
|
---|
5 | K ^TMP("IBJDF1",$J) S IBQ=0
|
---|
6 | ;
|
---|
7 | ; - Collect divisions when running the job for all divisions.
|
---|
8 | I IBSD,VAUTD S J=0 F S J=$O(^DG(40.8,J)) Q:'J S VAUTD(J)=""
|
---|
9 | ;
|
---|
10 | ; - Find data required for the report.
|
---|
11 | S IBA=0 F S IBA=$O(^PRCA(430,"AC",16,IBA)) Q:'IBA D Q:IBQ
|
---|
12 | .;
|
---|
13 | .I IBA#100=0 S IBQ=$$STOP^IBOUTL("Third Party Follow-Up Report") Q:IBQ
|
---|
14 | .;
|
---|
15 | .S IBAR=$G(^PRCA(430,IBA,0))
|
---|
16 | .I $P(IBAR,U,2)'=9 Q ; Not an RI bill.
|
---|
17 | .I '$D(^DGCR(399,IBA,0)) Q ; No corresponding claim to this AR.
|
---|
18 | .;
|
---|
19 | .; - Determine whether bill is inpatient, outpatient, or RX refill.
|
---|
20 | .S IBTYP=$P($G(^DGCR(399,IBA,0)),U,5),IBTYP=$S(IBTYP>2:2,1:1)
|
---|
21 | .S:$D(^IBA(362.4,"C",IBA)) IBTYP=3 I IBSEL'[IBTYP,IBSEL'[4 Q
|
---|
22 | .;
|
---|
23 | .; - Check the receivable age, if necessary.
|
---|
24 | .I IBSMN S:"Aa"[IBSDATE IBARD=$$ACT^IBJDF2(IBA) S:"Dd"[IBSDATE IBARD=$$DATE1^IBJDF2(IBA) Q:'IBARD S:IBARD IBARD=$$FMDIFF^XLFDT(DT,IBARD) I IBARD<IBSMN!(IBARD>IBSMX) Q
|
---|
25 | .;
|
---|
26 | .; - Check the minimum dollar amount, if necessary.
|
---|
27 | .S IBWBA=+$G(^PRCA(430,IBA,7)) I IBSAM,IBWBA<IBSAM Q
|
---|
28 | .;
|
---|
29 | .; - Get division, if necessary.
|
---|
30 | .I 'IBSD S IBDIV=0
|
---|
31 | .E S IBDIV=$$DIV^IBJDF2(IBA) I 'IBDIV S IBDIV=+$$PRIM^VASITE()
|
---|
32 | .I IBSD,'VAUTD Q:'$D(VAUTD(IBDIV)) ; Not a selected division.
|
---|
33 | .;
|
---|
34 | .; - Exclude receivables referred to Regional Counsel, if necessary.
|
---|
35 | .S IBWRC=$G(^PRCA(430,IBA,6)) I 'IBSRC,$P(IBWRC,U,4) Q
|
---|
36 | .S IBWRC=$S('$P(IBWRC,U,4):"",$P(IBWRC,U,22):$P(IBWRC,U,22),1:$P(IBWRC,U,4))
|
---|
37 | .;
|
---|
38 | .; - Get the insurance carrier and exclude claim, if necessary.
|
---|
39 | .S IBWIN=$$INS(IBA) I IBWIN="" Q
|
---|
40 | .;
|
---|
41 | .; - Get the claim patient and exclude claim, if necessary.
|
---|
42 | .S IBWPT=$$PAT(IBA) I IBWPT="" Q
|
---|
43 | .;
|
---|
44 | .; - Get remaining claim information.
|
---|
45 | .S IBWDP=$P(IBAR,U,10),IBWBN=$P(IBAR,U)
|
---|
46 | .S IBBU=$G(^DGCR(399,IBA,"U")),IBWFR=+IBBU,IBWTO=$P(IBBU,U,2)
|
---|
47 | .S IBWSC=$$OTH($P(IBWPT,U,5),$P(IBWIN,"@@",2),IBWFR),IBWOR=$P(IBAR,U,3)
|
---|
48 | .S IBWSI=$P($G(^DPT(+$P(IBWPT,U,5),.312,+$P($G(^DGCR(399,IBA,"MP")),U,2),0)),U,2)
|
---|
49 | .;
|
---|
50 | .; - Set up main report index.
|
---|
51 | .F X=IBTYP,4 I IBSEL[X D
|
---|
52 | ..S ^TMP("IBJDF1",$J,IBDIV,X,IBWIN,$P(IBWPT,U)_"@@"_$P(IBWPT,U,5),IBWDP_"@@"_IBWBN)=$P(IBWPT,U,2)_" ("_$P(IBWPT,U,4)_")"_U_$P(IBWPT,U,3)_U_IBWSC_U_IBWFR_U_IBWTO_U_IBWOR_U_IBWBA_"~"_IBWRC_U_IBWSI
|
---|
53 | .;
|
---|
54 | .; - Add bill comment history, if necessary.
|
---|
55 | .I IBSH D
|
---|
56 | ..S X=0 F S X=$O(^PRCA(433,"C",IBA,X)) Q:'X D
|
---|
57 | ...S Y=$G(^PRCA(433,X,1))
|
---|
58 | ...I $P(Y,U,2)'=35,$P(Y,U,2)'=45 Q ; Not a decrease/comment transact.
|
---|
59 | ...S DAT=$S(Y:+Y\1,1:+$P(Y,U,9)\1)
|
---|
60 | ...;
|
---|
61 | ...; - Append brief and transaction comments.
|
---|
62 | ...K COM,COM1 S COM(0)=DAT,X1=0
|
---|
63 | ...S COM1(1)=$P($G(^PRCA(433,X,5)),U,2),COM1(2)=$E($P($G(^(8)),U,6),1,70)
|
---|
64 | ...S COM(1)=COM1(1)_$S(COM1(1)]""&(COM1(2)]""):"|",1:"")_COM1(2)
|
---|
65 | ...I COM(1)]"" S COM(1)="**"_COM(1)_"**",X1=1
|
---|
66 | ...;
|
---|
67 | ...; - Get main comments.
|
---|
68 | ...S X2=0 F S X2=$O(^PRCA(433,X,7,X2)) Q:'X2 S COM($S(X1:X2+1,1:X2))=^(X2,0)
|
---|
69 | ...;
|
---|
70 | ...S X1="" F S X1=$O(COM(X1)) Q:X1="" F X2=IBTYP,4 I IBSEL[X2 D
|
---|
71 | ....S ^TMP("IBJDF1",$J,IBDIV,X2,IBWIN,$P(IBWPT,U)_"@@"_$P(IBWPT,U,5),IBWDP_"@@"_IBWBN,X,X1)=COM(X1)
|
---|
72 | ;
|
---|
73 | I 'IBQ D EN^IBJDF12 ; Print the report.
|
---|
74 | ;
|
---|
75 | ENQ K ^TMP("IBJDF1",$J)
|
---|
76 | I $D(ZTQUEUED) S ZTREQ="@" G ENQ1
|
---|
77 | ;
|
---|
78 | D ^%ZISC
|
---|
79 | ENQ1 K IBA,IBAR,IBARD,IBBU,IBDIV,IBQ,IBIO,IBWRC,IBWPT,IBWDP,IBWIN,IBWBN
|
---|
80 | K IBTYP,IBWSC,IBWSI,IBWFR,IBWTO,IBWOR,IBWBA,COM,COM1,DAT,VAUTD
|
---|
81 | K X,X1,X2,Y,Z
|
---|
82 | Q
|
---|
83 | ;
|
---|
84 | INS(X) ; - Find the Insurance company and decide to include the claim.
|
---|
85 | ; Input: X=Pointer to the claim/AR in file #399/#430
|
---|
86 | ; plus all variable input in IBS*
|
---|
87 | ; Output: Y=Insurance Company name and pointer to file #36
|
---|
88 | ;
|
---|
89 | N Y,Z,Z1 S Y=""
|
---|
90 | I '$G(X) G INSQ
|
---|
91 | S Z=+$G(^DGCR(399,X,"MP")),Z1=$P($G(^DIC(36,Z,0)),U)
|
---|
92 | I $G(IBSI) G INSQ:'$D(IBSI(Z)),INSC
|
---|
93 | I IBSIF'="@",'Z G INSQ
|
---|
94 | I $D(IBSIA) G:IBSIA="ALL"&('Z) INSQ G:IBSIA="NULL"&(Z) INSQ
|
---|
95 | I Z1="" S Z1="UNKNOWN" G INSC
|
---|
96 | I $G(IBSIA)="ALL" G INSC
|
---|
97 | I IBSIF="@",IBSIL="zzzzz" G INSC
|
---|
98 | I IBSIF]Z1!(Z1]IBSIL) G INSQ
|
---|
99 | ;
|
---|
100 | INSC S Y=Z1_"@@"_Z
|
---|
101 | INSQ Q Y
|
---|
102 | ;
|
---|
103 | PAT(X) ; - Find the claim patient and decide to include the claim.
|
---|
104 | ; Input: X=Pointer to the claim/AR in file #399/#430
|
---|
105 | ; plus all variable input in IBS*
|
---|
106 | ; Output: Y=1^2^3^4^5, where
|
---|
107 | ; 1 => sort key (name or last four)
|
---|
108 | ; 2 => patient name
|
---|
109 | ; 3 => patient ssn
|
---|
110 | ; 4 => patient age
|
---|
111 | ; 5 => patient pointer to file #2
|
---|
112 | ;
|
---|
113 | N AGE,DFN,DOB,KEY,Y,Z S Y=""
|
---|
114 | I '$G(X) G PATQ
|
---|
115 | S DFN=+$P($G(^DGCR(399,X,0)),U,2),Z=$G(^DPT(DFN,0))
|
---|
116 | S KEY=$S(IBSN="N":$P(Z,U),1:$E($P(Z,U,9),6,9))
|
---|
117 | ;
|
---|
118 | I IBSNF'="@",'DFN G PATQ
|
---|
119 | I $D(IBSNA) G:IBSNA="ALL"&('DFN) PATQ G:IBSNA="NULL"&(DFN) PATQ
|
---|
120 | I KEY="" S Y="UNK^UNK^UNK^UNK^UNK" G PATQ
|
---|
121 | I $G(IBSNA)="ALL" G PATC
|
---|
122 | I IBSNF="@",IBSNL="zzzzz" G PATC
|
---|
123 | I IBSNF]KEY!(KEY]IBSNL) G PATQ
|
---|
124 | ;
|
---|
125 | PATC ; - Find all patient data.
|
---|
126 | S DOB=$P(Z,U,3)
|
---|
127 | S AGE=$S('DOB:"UNK",1:$E(DT,1,3)-$E(DOB,1,3)-($E(DT,4,7)<$E(DOB,4,7)))
|
---|
128 | S Y=KEY_U_$E($P(Z,U),1,17)_U_$P(Z,U,9)_U_AGE_U_DFN
|
---|
129 | PATQ Q Y
|
---|
130 | ;
|
---|
131 | OTH(DFN,INS,DS) ; - Find a patient's other valid insurance carrier (if any).
|
---|
132 | ; Input: DFN=Pointer to the patient in file #2
|
---|
133 | ; INS=Pointer to the patient's primary carrier in file #36
|
---|
134 | ; DS=Date of service for validity check
|
---|
135 | ; Output: Valid insurance carrier (1st 13 chars.) or null
|
---|
136 | ;
|
---|
137 | N Y S Y="" I '$G(DFN)!('$G(DS)) G OTHQ
|
---|
138 | S Z=0 F S Z=$O(^DPT(DFN,.312,Z)) Q:'Z S X=$G(^(Z,0)) D:X Q:Y]""
|
---|
139 | .I $G(INS),+X=INS Q
|
---|
140 | .S X1=$G(^DIC(36,+X,0)) I X1="" Q
|
---|
141 | .I $P(X1,U,2)'="N",$$CHK^IBCNS1(X,DS) S Y=$E($P(X1,U),1,13)
|
---|
142 | ;
|
---|
143 | OTHQ Q Y
|
---|