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