| [613] | 1 | IBCNSMR ;ALB/AAS - MEDICARE BILLS ; 02-SEPT-97 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**92,240**;21-MAR-94 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | % G RPRT^IBCNSMRA | 
|---|
|  | 5 | ; | 
|---|
|  | 6 | DQ ; -- entry point from task manager | 
|---|
|  | 7 | N I,J,X,Y,IBINSCO,INSCO,NODE,CNT,IBI,IBINSNM,IBNM | 
|---|
|  | 8 | S IBQUIT=0 | 
|---|
|  | 9 | K ^TMP("IB-MRA",$J),^TMP("IB-MRA-CNT",$J) | 
|---|
|  | 10 | ; | 
|---|
|  | 11 | S I=0 | 
|---|
|  | 12 | F  S I=$O(^IBE(350.9,1,99,I)) Q:'I  S INSCO(+$G(^IBE(350.9,1,99,I,0)))="" | 
|---|
|  | 13 | ; | 
|---|
|  | 14 | S IBI=0 | 
|---|
|  | 15 | F  S IBI=$O(^DGCR(399,IBI)) Q:'IBI!(IBQUIT)  D | 
|---|
|  | 16 | .S IBQUIT=$$STOP Q:IBQUIT | 
|---|
|  | 17 | .S IBINSCO="" K NODE | 
|---|
|  | 18 | .S NODE(0)=$G(^DGCR(399,IBI,0)) Q:NODE(0)="" | 
|---|
|  | 19 | .S NODE("C")=$G(^DGCR(399,IBI,"C")) | 
|---|
|  | 20 | .S NODE("M")=$G(^DGCR(399,IBI,"M")) Q:NODE("M")="" | 
|---|
|  | 21 | .S NODE("U")=$G(^DGCR(399,IBI,"U")) Q:NODE("U")="" | 
|---|
|  | 22 | .I $D(INSCO(+NODE("M"))) S IBINSCO=+NODE("M") | 
|---|
|  | 23 | .I 'IBINSCO,$D(INSCO(+$P(NODE("M"),"^",2))) S IBINSCO=$P(NODE("M"),"^",2) | 
|---|
|  | 24 | .I 'IBINSCO,$D(INSCO(+$P(NODE("M"),"^",3))) S IBINSCO=$P(NODE("M"),"^",3) | 
|---|
|  | 25 | .I IBINSCO S IBINSNM=$P($G(^DIC(36,IBINSCO,0)),"^") D BLDDATA | 
|---|
|  | 26 | ; | 
|---|
|  | 27 | I 'IBQUIT D PRINT^IBCNSMR0 | 
|---|
|  | 28 | G END^IBCNSMRA | 
|---|
|  | 29 | END Q | 
|---|
|  | 30 | ; | 
|---|
|  | 31 | BLDDATA ; -- for each bill sent to a selected ins. co. build temp node | 
|---|
|  | 32 | N X,YEAR,TYPE,TYPENO,PROC,DIAG,ORGAMNT,BOTH,IBSTAT,DFN,ALIVE,ARSTAT,IBQUIT,RXBILL,PROSBILL,BILLNO,LOCCARE,RATETYP,RN,WHO,TIMEFRM,TOTPAID,REFGC,DATEPR | 
|---|
|  | 33 | S IBQUIT=0 | 
|---|
|  | 34 | S BILLNO=$P(NODE(0),"^") | 
|---|
|  | 35 | S YEAR=$E(+NODE("U"),2,3) | 
|---|
|  | 36 | S TYPENO=$P(NODE(0),"^",5) | 
|---|
|  | 37 | S TYPE=$S(TYPENO<3:"INPATIENT",1:"OUTPATIENT") | 
|---|
|  | 38 | S PROC=$$PROC(IBI) | 
|---|
|  | 39 | S DIAG=$$DIAG(IBI) | 
|---|
|  | 40 | S IBSTAT=$P(NODE(0),"^",13) | 
|---|
|  | 41 | S ARSTAT=$$STA^PRCAFN(IBI) | 
|---|
|  | 42 | S DFN=$P(NODE(0),"^",2) | 
|---|
|  | 43 | S ALIVE=$S(+$G(^DPT(DFN,.35)):"DEAD",1:"ALIVE") | 
|---|
|  | 44 | S ORGAMNT=$$ORI^PRCAFN(IBI) | 
|---|
|  | 45 | S LOCCARE=$P(NODE(0),"^",4) | 
|---|
|  | 46 | S WHO=$P(NODE(0),"^",11) | 
|---|
|  | 47 | S RATETYP=$P(NODE(0),"^",7) | 
|---|
|  | 48 | S RN=$P($G(^DGCR(399.3,+RATETYP,0)),"^") | 
|---|
|  | 49 | S TIMEFRM=$P(NODE(0),"^",6) | 
|---|
|  | 50 | S TOTPAID=$$TPR^PRCAFN(IBI) | 
|---|
|  | 51 | S REFGC=$P($G(^PRCA(430,IBI,6)),"^",4)'="" | 
|---|
|  | 52 | S DATEPR=$P($G(^DGCR(399,IBI,"S")),"^",12) | 
|---|
|  | 53 | S BOTH="NONE" | 
|---|
|  | 54 | S RXBILL=0 | 
|---|
|  | 55 | S PROSBILL=0 | 
|---|
|  | 56 | I $O(^IBA(362.4,"AIFN"_IBI,"")) S RXBILL=1 | 
|---|
|  | 57 | I $O(^IBA(362.5,"AIFN"_IBI,"")) S PROSBILL=1 | 
|---|
|  | 58 | D COUNT | 
|---|
|  | 59 | D:'IBQUIT SET | 
|---|
|  | 60 | Q | 
|---|
|  | 61 | ; | 
|---|
|  | 62 | COUNT ; -- set totals for all ins, and by ins co. | 
|---|
|  | 63 | S CNT=$G(CNT)+1 | 
|---|
|  | 64 | S CNT(0)=$G(CNT(0))+ORGAMNT | 
|---|
|  | 65 | S CNT(3,IBINSNM)=$G(CNT(3,IBINSNM))+1 | 
|---|
|  | 66 | S CNT(3,IBINSNM,0)=$G(CNT(3,IBINSNM,0))+ORGAMNT | 
|---|
|  | 67 | I TYPE="INPATIENT" D | 
|---|
|  | 68 | .S CNT("IN")=$G(CNT("IN"))+1 | 
|---|
|  | 69 | .S CNT("IN",0)=$G(CNT("IN",0))+ORGAMNT | 
|---|
|  | 70 | .I TOTPAID>0 D | 
|---|
|  | 71 | ..S CNT("IN",1)=$G(CNT("IN",1))+1 | 
|---|
|  | 72 | ..S CNT("IN",2)=$G(CNT("IN",2))+TOTPAID | 
|---|
|  | 73 | I TYPE="OUTPATIENT" D | 
|---|
|  | 74 | .S CNT("OP")=$G(CNT("OP"))+1 | 
|---|
|  | 75 | .S CNT("OP",0)=$G(CNT("OP",0))+ORGAMNT | 
|---|
|  | 76 | .I TOTPAID>0 D | 
|---|
|  | 77 | ..S CNT("OP",1)=$G(CNT("OP",1))+1 | 
|---|
|  | 78 | ..S CNT("OP",2)=$G(CNT("OP",2))+TOTPAID | 
|---|
|  | 79 | I TOTPAID>0 D | 
|---|
|  | 80 | .S CNT(1)=$G(CNT(1))+1 | 
|---|
|  | 81 | .S CNT(2)=$G(CNT(2))+TOTPAID | 
|---|
|  | 82 | .S CNT(3,IBINSNM,1)=$G(CNT(3,IBINSNM,1))+1 | 
|---|
|  | 83 | .S CNT(3,IBINSNM,2)=$G(CNT(3,IBINSNM,2))+TOTPAID | 
|---|
|  | 84 | ; | 
|---|
|  | 85 | ;I ALIVE'="ALIVE" D  ; decided to keep dead patients in the report 10/28/97 | 
|---|
|  | 86 | ;.S CNT("A")=$G(CNT("A"))+1 | 
|---|
|  | 87 | ;.S CNT("A",0)=$G(CNT("A",0))+ORGAMNT | 
|---|
|  | 88 | ;.;S IBQUIT=1 | 
|---|
|  | 89 | ;.I TOTPAID>0 D | 
|---|
|  | 90 | ;..S CNT("A",1)=$G(CNT("A",1))+1 | 
|---|
|  | 91 | ;..S CNT("A",2)=$G(CNT("A",2))+TOTPAID | 
|---|
|  | 92 | ; | 
|---|
|  | 93 | I DIAG="YES"&(PROC="NO") D | 
|---|
|  | 94 | .S BOTH="DIAG" | 
|---|
|  | 95 | .S IBQUIT=1 | 
|---|
|  | 96 | .S CNT("D")=$G(CNT("D"))+1 | 
|---|
|  | 97 | .S CNT("D",0)=$G(CNT("D",0))+ORGAMNT | 
|---|
|  | 98 | .I TOTPAID>0 D | 
|---|
|  | 99 | ..S CNT("D",1)=$G(CNT("D",1))+1 | 
|---|
|  | 100 | ..S CNT("D",2)=$G(CNT("D",2))+TOTPAID | 
|---|
|  | 101 | ; | 
|---|
|  | 102 | I PROC="YES"&(DIAG="NO") D | 
|---|
|  | 103 | .S BOTH="PROC" | 
|---|
|  | 104 | .S IBQUIT=1 | 
|---|
|  | 105 | .S CNT("P")=$G(CNT("P"))+1 | 
|---|
|  | 106 | .S CNT("P",0)=$G(CNT("P",0))+ORGAMNT | 
|---|
|  | 107 | .I TOTPAID>0 D | 
|---|
|  | 108 | ..S CNT("P",1)=$G(CNT("P",1))+1 | 
|---|
|  | 109 | ..S CNT("P",2)=$G(CNT("P",2))+TOTPAID | 
|---|
|  | 110 | ; | 
|---|
|  | 111 | I PROC="YES"&(DIAG="YES") D | 
|---|
|  | 112 | .S BOTH="BOTH" | 
|---|
|  | 113 | .S CNT("B")=$G(CNT("B"))+1 | 
|---|
|  | 114 | .S CNT("B",0)=$G(CNT("B",0))+ORGAMNT | 
|---|
|  | 115 | .I TOTPAID>0 D | 
|---|
|  | 116 | ..S CNT("B",1)=$G(CNT("B",1))+1 | 
|---|
|  | 117 | ..S CNT("B",2)=$G(CNT("B",2))+TOTPAID | 
|---|
|  | 118 | ; | 
|---|
|  | 119 | I BOTH="NONE" D | 
|---|
|  | 120 | .S CNT("N")=$G(CNT("N"))+1 | 
|---|
|  | 121 | .S CNT("N",0)=$G(CNT("N",0))+ORGAMNT | 
|---|
|  | 122 | .I TOTPAID>0 D | 
|---|
|  | 123 | ..S CNT("N",1)=$G(CNT("N",1))+1 | 
|---|
|  | 124 | ..S CNT("N",2)=$G(CNT("N",2))+TOTPAID | 
|---|
|  | 125 | ; | 
|---|
|  | 126 | I BOTH'="BOTH" S IBQUIT=1 | 
|---|
|  | 127 | ; | 
|---|
|  | 128 | I IBSTAT=7,+ARSTAT=210 D  ;bill canceled before completion | 
|---|
|  | 129 | .S CNT("C")=$G(CNT("C"))+1 | 
|---|
|  | 130 | .S CNT("C",0)=$G(CNT("C",0))+ORGAMNT | 
|---|
|  | 131 | .S IBQUIT=1 | 
|---|
|  | 132 | .I TOTPAID>0 D | 
|---|
|  | 133 | ..S CNT("C",1)=$G(CNT("C",1))+1 | 
|---|
|  | 134 | ..S CNT("C",2)=$G(CNT("C",2))+TOTPAID | 
|---|
|  | 135 | ; | 
|---|
|  | 136 | I TYPENO=2!(TYPENO=4) D | 
|---|
|  | 137 | .S CNT("T")=$G(CNT("T"))+1 | 
|---|
|  | 138 | .S CNT("T",0)=$G(CNT("T",0))+ORGAMNT | 
|---|
|  | 139 | .S IBQUIT=1 | 
|---|
|  | 140 | .I TOTPAID>0 D | 
|---|
|  | 141 | ..S CNT("T",1)=$G(CNT("T",1))+1 | 
|---|
|  | 142 | ..S CNT("T",2)=$G(CNT("T",2))+TOTPAID | 
|---|
|  | 143 | ; | 
|---|
|  | 144 | I WHO'="i" D | 
|---|
|  | 145 | .S CNT("W")=$G(CNT("W"))+1 | 
|---|
|  | 146 | .S CNT("W",0)=$G(CNT("W",0))+ORGAMNT | 
|---|
|  | 147 | .S IBQUIT=1 | 
|---|
|  | 148 | .I TOTPAID>0 D | 
|---|
|  | 149 | ..S CNT("W",1)=$G(CNT("W",1))+1 | 
|---|
|  | 150 | ..S CNT("W",2)=$G(CNT("W",2))+TOTPAID | 
|---|
|  | 151 | ; | 
|---|
|  | 152 | I DATEPR="",IBSTAT<3 D | 
|---|
|  | 153 | .S CNT("F")=$G(CNT("F"))+1 | 
|---|
|  | 154 | .S CNT("F",0)=$G(CNT("F",0))+ORGAMNT | 
|---|
|  | 155 | .S IBQUIT=1 | 
|---|
|  | 156 | .I TOTPAID>0 D | 
|---|
|  | 157 | ..S CNT("F",1)=$G(CNT("F",1))+1 | 
|---|
|  | 158 | ..S CNT("F",2)=$G(CNT("F",2))+TOTPAID | 
|---|
|  | 159 | ; | 
|---|
|  | 160 | I $G(RXBILL) D | 
|---|
|  | 161 | .S CNT("X")=$G(CNT("X"))+1 | 
|---|
|  | 162 | .S CNT("X",0)=$G(CNT("X",0))+ORGAMNT | 
|---|
|  | 163 | .S IBQUIT=1 | 
|---|
|  | 164 | .I TOTPAID>0 D | 
|---|
|  | 165 | ..S CNT("X",1)=$G(CNT("X",1))+1 | 
|---|
|  | 166 | ..S CNT("X",2)=$G(CNT("X",2))+TOTPAID | 
|---|
|  | 167 | ; | 
|---|
|  | 168 | I $G(PROSBILL) D | 
|---|
|  | 169 | .S CNT("Z")=$G(CNT("Z"))+1 | 
|---|
|  | 170 | .S CNT("Z",0)=$G(CNT("Z",0))+ORGAMNT | 
|---|
|  | 171 | .S IBQUIT=1 | 
|---|
|  | 172 | .I TOTPAID>0 D | 
|---|
|  | 173 | ..S CNT("Z",1)=$G(CNT("Z",1))+1 | 
|---|
|  | 174 | ..S CNT("Z",2)=$G(CNT("Z",2))+TOTPAID | 
|---|
|  | 175 | ; | 
|---|
|  | 176 | I $S(RN["MEANS":1,RN["DENTAL":1,RN["TORT":1,RN["TRICARE":1,RN["CHAMPVA":1,RN["MEDICARE":1,RN["WORKERS":1,RN["CRIME":1,RN["SHARING":1,1:0) D | 
|---|
|  | 177 | .S CNT("R")=$G(CNT("R"))+1 | 
|---|
|  | 178 | .S CNT("R",0)=$G(CNT("R",0))+ORGAMNT | 
|---|
|  | 179 | .S IBQUIT=1 | 
|---|
|  | 180 | .I TOTPAID>0 D | 
|---|
|  | 181 | ..S CNT("R",1)=$G(CNT("R",1))+1 | 
|---|
|  | 182 | ..S CNT("R",2)=$G(CNT("R",2))+TOTPAID | 
|---|
|  | 183 | Q | 
|---|
|  | 184 | ; | 
|---|
|  | 185 | PROC(IBI) ; -- does bill have any procedures | 
|---|
|  | 186 | N PROC | 
|---|
|  | 187 | S PROC="NO" | 
|---|
|  | 188 | I $O(^DGCR(399,IBI,"CP",0)) S PROC="YES" | 
|---|
|  | 189 | I +NODE("C")!($P(NODE("C"),"^",4))!($P(NODE("C"),"^",7)) S PROC="YES" | 
|---|
|  | 190 | Q PROC | 
|---|
|  | 191 | ; | 
|---|
|  | 192 | DIAG(IBI) ; -- does bill have any diagnosis | 
|---|
|  | 193 | N DIAG | 
|---|
|  | 194 | S DIAG="NO" | 
|---|
|  | 195 | I $O(^IBA(362.3,"AIFN"_IBI,0)) S DIAG="YES" | 
|---|
|  | 196 | I $P(NODE("C"),"^",10)!($P(NODE("C"),"^",14)) S DIAG="YES" | 
|---|
|  | 197 | Q DIAG | 
|---|
|  | 198 | ; | 
|---|
|  | 199 | SET ; -- set up tmp global | 
|---|
|  | 200 | S CNT("M")=$G(CNT("M"))+1,CNT("M",0)=$G(CNT("M",0))+ORGAMNT | 
|---|
|  | 201 | I REFGC D | 
|---|
|  | 202 | .S CNT("M",4)=$G(CNT("M",4))+1 | 
|---|
|  | 203 | .S CNT("M",5)=$G(CNT("M",5))+ORGAMNT | 
|---|
|  | 204 | .I TOTPAID>0 D | 
|---|
|  | 205 | ..S CNT("M",6)=$G(CNT("M",6))+1 | 
|---|
|  | 206 | ..S CNT("M",7)=$G(CNT("M",7))+TOTPAID | 
|---|
|  | 207 | I TOTPAID>0 D | 
|---|
|  | 208 | .S CNT("M",1)=$G(CNT("M",1))+1 | 
|---|
|  | 209 | .S CNT("M",2)=$G(CNT("M",2))+TOTPAID | 
|---|
|  | 210 | I TYPE="INPATIENT" D | 
|---|
|  | 211 | .S CNT("M","IN")=$G(CNT("M","IN"))+1 | 
|---|
|  | 212 | .S CNT("M","IN",0)=$G(CNT("M","IN",0))+ORGAMNT | 
|---|
|  | 213 | .I TOTPAID>0 D | 
|---|
|  | 214 | ..S CNT("M","IN",1)=$G(CNT("M","IN",1))+1 | 
|---|
|  | 215 | ..S CNT("M","IN",2)=$G(CNT("M","IN",2))+TOTPAID | 
|---|
|  | 216 | I TYPE="OUTPATIENT" D | 
|---|
|  | 217 | .S CNT("M","OP")=$G(CNT("M","OP"))+1 | 
|---|
|  | 218 | .S CNT("M","OP",0)=$G(CNT("M","OP",0))+ORGAMNT | 
|---|
|  | 219 | .I TOTPAID>0 D | 
|---|
|  | 220 | ..S CNT("M","OP",1)=$G(CNT("M","OP",1))+1 | 
|---|
|  | 221 | ..S CNT("M","OP",2)=$G(CNT("M","OP",2))+TOTPAID | 
|---|
|  | 222 | ; | 
|---|
|  | 223 | S ^TMP("IB-MRA",$J,+$G(IBINSCO),+$G(YEAR),$G(TYPE,"UNKNOWN"),BOTH,$G(ARSTAT,"UNKNOWN"),+$G(IBSTAT),IBI)=BILLNO_"^"_DFN | 
|---|
|  | 224 | ; | 
|---|
|  | 225 | S ^TMP("IB-MRA-CNT",$J,IBINSCO,YEAR,TYPE,BOTH,ARSTAT,IBSTAT)=(+$G(^TMP("IB-MRA-CNT",$J,IBINSCO,YEAR,TYPE,BOTH,ARSTAT,IBSTAT))+1) | 
|---|
|  | 226 | ; | 
|---|
|  | 227 | S ^TMP("IB-MRA-CNT",$J,IBINSCO,YEAR,TYPE,BOTH,ARSTAT,IBSTAT,0)=+$G(^TMP("IB-MRA-CNT",$J,IBINSCO,YEAR,TYPE,BOTH,ARSTAT,IBSTAT,0))+ORGAMNT | 
|---|
|  | 228 | ; | 
|---|
|  | 229 | I TOTPAID>0 D | 
|---|
|  | 230 | .S ^TMP("IB-MRA-CNT",$J,IBINSCO,YEAR,TYPE,BOTH,ARSTAT,IBSTAT,1)=+$G(^TMP("IB-MRA-CNT",$J,IBINSCO,YEAR,TYPE,BOTH,ARSTAT,IBSTAT,1))+1 | 
|---|
|  | 231 | .S ^TMP("IB-MRA-CNT",$J,IBINSCO,YEAR,TYPE,BOTH,ARSTAT,IBSTAT,2)=+$G(^TMP("IB-MRA-CNT",$J,IBINSCO,YEAR,TYPE,BOTH,ARSTAT,IBSTAT,2))+TOTPAID | 
|---|
|  | 232 | Q | 
|---|
|  | 233 | ; | 
|---|
|  | 234 | STOP() ; -- determine if user requested task to stop | 
|---|
|  | 235 | I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1 K ZTREQ | 
|---|
|  | 236 | Q +$G(ZTSTOP) | 
|---|