| 1 | IBTODD ;ALB/AAS - CLAIMS TRACKING DENIED DAYS REPORT ; 27-OCT-93
 | 
|---|
| 2 |  ;;Version 2.0 ; INTEGRATED BILLING ;**32**; 21-MAR-94
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | % I '$D(DT) D DT^DICRW
 | 
|---|
| 5 |  W !!,"Denied Days Report",!!
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  S IBSORT="P"
 | 
|---|
| 8 |  N DIR
 | 
|---|
| 9 |  S DIR("?")="Answer YES if you only want to print a summary or answer NO if you want a detailed listing plus the summary."
 | 
|---|
| 10 |  S DIR(0)="Y",DIR("A")="Print Summary Only",DIR("B")="YES" D ^DIR K DIR
 | 
|---|
| 11 |  I $D(DIRUT) G END
 | 
|---|
| 12 |  S IBSUM=Y
 | 
|---|
| 13 |  G:IBSUM DATE
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ; -- ask how they want it sorted
 | 
|---|
| 16 |  D SORT^IBTODD2 I IBSORT<0 G END
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 | DATE ; -- select date range
 | 
|---|
| 19 |  W ! D DATE^IBOUTL
 | 
|---|
| 20 |  I IBBDT=""!(IBEDT="") G END
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | DEV ; -- select device, run option
 | 
|---|
| 23 |  W !
 | 
|---|
| 24 |  I 'IBSUM W !!,"You will need a 132 column printer for this report!",!
 | 
|---|
| 25 |  S %ZIS="QM" D ^%ZIS G:POP END
 | 
|---|
| 26 |  I $D(IO("Q")) S ZTRTN="DQ^IBTODD",ZTSAVE("IB*")="",ZTDESC="IB - Denied Days Report" D ^%ZTLOAD K IO("Q"),ZTSK D HOME^%ZIS G END
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  U IO
 | 
|---|
| 29 |  D DQ G END
 | 
|---|
| 30 |  Q
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | END ; -- Clean up
 | 
|---|
| 33 |  W ! K ^TMP($J,"IBTODD")
 | 
|---|
| 34 |  I $D(ZTQUEUED) S ZTREQ="@" Q
 | 
|---|
| 35 |  D ^%ZISC
 | 
|---|
| 36 |  K I,J,X,X2,Y,DFN,%ZIS,DGPM,VA,IBI,IBJ,IBTRN,IBTRND,IBTRND1,IBPAG,IBHDT,IBDISDT,IBETYP,IBQUIT,IBTAG,IBTRC,IBTRCD,IBDEN,IBDAY,IBTALL,IBADM,IBDISCH,IBMAX
 | 
|---|
| 37 |  K IBAPL,IBBBS,IBBDT,IBC,IBCDT,IBCNT,IBDT,IBD,IBDATA,IBEDT,IBNAM,IBPRIM,IBPROV,IBRATE,IBSECN,IBSERV,IBSORT,IBSPEC,IBSUM,IBSUBT,IBTOTL
 | 
|---|
| 38 |  D KVAR^VADPT
 | 
|---|
| 39 |  Q
 | 
|---|
| 40 | DQ ; -- entry print from taskman
 | 
|---|
| 41 |  K ^TMP($J,"IBTODD")
 | 
|---|
| 42 |  S X=132 X ^%ZOSF("RM")
 | 
|---|
| 43 |  S IBPAG=0,IBHDT=$$HTE^XLFDT($H,1),IBQUIT=0
 | 
|---|
| 44 |  S IBDEN=$O(^IBE(356.7,"ACODE",20,0))
 | 
|---|
| 45 |  D BLD,PRINT^IBTODD1
 | 
|---|
| 46 |  I $D(ZTQUEUED) G END
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 | BLD ; -- sort through data and build array to print from
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  S IBTRC=0
 | 
|---|
| 52 |  F  S IBTRC=$O(^IBT(356.2,"ACT",IBDEN,IBTRC)) Q:'IBTRC  D
 | 
|---|
| 53 |  .N IBDAY S IBTRCD=$G(^IBT(356.2,+IBTRC,0))
 | 
|---|
| 54 |  .S IBTRN=$P(IBTRCD,"^",2),IBTRND=$G(^IBT(356,+IBTRN,0))
 | 
|---|
| 55 |  .Q:'$P(IBTRCD,"^",19)  ; review is inactive
 | 
|---|
| 56 |  .Q:'$P(IBTRND,"^",20)  ; parent CT entry is inactive
 | 
|---|
| 57 |  .S IBDDB=$P(IBTRCD,"^",15),IBDDE=$P(IBTRCD,"^",16)
 | 
|---|
| 58 |  .S IBTALL=$P($G(^IBT(356.2,+IBTRC,1)),"^",7)
 | 
|---|
| 59 |  .I IBDDB,IBDDE Q:(IBDDB>IBEDT)!(IBDDE<IBBDT)  D
 | 
|---|
| 60 |  ..I IBDDB<IBBDT S IBDDB=IBBDT ; chk days denied in correct range
 | 
|---|
| 61 |  ..I IBDDE>IBEDT S IBDDE=IBEDT
 | 
|---|
| 62 |  ..S IBDAY=$$FMDIFF^XLFDT(IBDDE,IBDDB)+1 ; cals total denied days
 | 
|---|
| 63 |  .; if no days denied "to" and "from" and episode in range
 | 
|---|
| 64 |  .I (IBTALL),('$D(IBDAY)) S IBCDT=$$CDT^IBTODD1(IBTRN) D STRIP Q:('+IBCDT!(+IBCDT>IBEDT))  D
 | 
|---|
| 65 |  ..Q:'$P(IBTRND,U,5)  ; quit if no link between ct and dgpm
 | 
|---|
| 66 |  ..; if the care date is >the report range there is no discharge add 1
 | 
|---|
| 67 |  ..I '$P(IBCDT,U,2)!($P(IBCDT,U,2)>IBEDT) S $P(IBCDT,U,2)=$$FMADD^XLFDT(IBEDT,1)
 | 
|---|
| 68 |  ..I +IBCDT<IBBDT S $P(IBCDT,U,1)=IBBDT
 | 
|---|
| 69 |  ..S IBDAY=$$FMDIFF^XLFDT($P(IBCDT,U,2),$P(IBCDT,U,1))
 | 
|---|
| 70 |  .Q:$G(IBDAY)<1
 | 
|---|
| 71 |  .S DFN=$P(IBTRCD,"^",5),IBNAM=$P($G(^DPT(+DFN,0)),"^") Q:IBNAM=""
 | 
|---|
| 72 |  .S IBD=$$PROV(DFN,IBTRCD,IBTRND,IBTALL),IBPROV=+IBD,IBSPEC=$P(IBD,"^",2),IBSERV=$P(IBD,"^",3)
 | 
|---|
| 73 |  .S IBBBS=$$BBS^IBTOSUM1($P(IBD,"^",2))
 | 
|---|
| 74 |  .S IBRATE=$$RATE^IBTOSUM1(IBBBS,+IBTRCD)
 | 
|---|
| 75 |  .D SET
 | 
|---|
| 76 |  K IBTRN,IBTRND,IBTRCD,DFN,IBDDB,IBDDE,IBCDT
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 | SET ; -- set array to print from
 | 
|---|
| 80 |  ; -- ^tmp($j,"ibtodd",primary sort,secondary sort,ibtrc)=DFN ^ attending ^ treating specialty ^ service ^ billing bed section ^ billing rate^ no. days denied
 | 
|---|
| 81 |  S IBPRIM=$S(IBSORT="P":IBNAM,IBSORT="A":IBPROV,1:IBSERV)
 | 
|---|
| 82 |  S IBSECN=$S(IBSORT="P":IBPROV,1:IBNAM)
 | 
|---|
| 83 |  S:IBPRIM="" IBPRIM="UNKNOWN" S:IBSECN="" IBSECN="UNKNOWN"
 | 
|---|
| 84 |  S ^TMP($J,"IBTODD",IBPRIM,IBSECN,IBTRC)=DFN_"^"_IBPROV_"^"_IBSPEC_"^"_IBSERV_"^"_IBBBS_"^"_IBRATE_"^"_IBDAY
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 | PROV(DFN,IBTRCD,IBTRND,IBTALL) ; Find attending/serv/spec during the denied period
 | 
|---|
| 88 |  ;  Input:    DFN  --  Pointer to the patient in file #2
 | 
|---|
| 89 |  ;         IBTRCD  --  Zeroth node of insurance review in file #356.2
 | 
|---|
| 90 |  ;         IBTRND  --  Zeroth node of parent CT entry in file #356
 | 
|---|
| 91 |  ;         IBTALL  --  1=> deny entire admission
 | 
|---|
| 92 |  ; Output:  1^2^3, where   1 => pointer to attending in file #200
 | 
|---|
| 93 |  ;                         2 => pointer to treating spec. in file #45.7
 | 
|---|
| 94 |  ;                         3 => service abbr. code
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 |  N I,J,X,Y,DGPM,IBD,VA200,VAIN,VAIP,VAERR
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  ; - determine date/time to calculate attending/serv/spec
 | 
|---|
| 99 |  S DGPM=+$P(IBTRND,"^",5),IBD=+$G(^DGPM(DGPM,0))
 | 
|---|
| 100 |  S:'IBD IBD=$P(IBTRND,"^",6)
 | 
|---|
| 101 |  I IBTALL S Y=IBD
 | 
|---|
| 102 |  I 'IBTALL D
 | 
|---|
| 103 |  .I $P(IBTRCD,"^",16)>$P(IBTRCD,"^",15) S Y=$P(IBTRCD,"^",15)_.2359 Q
 | 
|---|
| 104 |  .I $P(IBTRCD,"^",15)=(IBD\1) S Y=IBD Q
 | 
|---|
| 105 |  .S VAIP("D")=$P(IBTRCD,"^",15) D IN5^VADPT
 | 
|---|
| 106 |  .I +VAIP(16,1)\1=$P(IBTRCD,"^",15) S Y=+VAIP(16,1) Q
 | 
|---|
| 107 |  .S Y=$P(IBTRCD,"^",15)
 | 
|---|
| 108 |  S VA200="",VAINDT=Y D INP^VADPT
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  S X=+VAIN(11)
 | 
|---|
| 111 |  S Y=$G(^IBT(356.94,+$O(^IBT(356.94,"ATP",+DGPM,1,0)),0))
 | 
|---|
| 112 |  S:$P(Y,"^",3) X=$P(Y,"^",3)
 | 
|---|
| 113 | PROVQ Q X_"^"_+VAIN(3)_"^"_$P($G(^DIC(42.4,+$P($G(^DIC(45.7,+$G(VAIN(3)),0)),"^",2),0)),"^",3)
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 | STRIP ; -- strip time from dates (if report run same day time could produce incorrect results)
 | 
|---|
| 116 |  S $P(IBCDT,U,1)=$P(IBCDT,".",1),$P(IBCDT,U,2)=$P($P(IBCDT,U,2),".",1) Q
 | 
|---|