| [613] | 1 | IBCNBOA ;ALB/ARH-Ins Buffer: Activity Report ;1 Jun 97
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**82,305**;21-MAR-94
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | EN ;get parameters then run the report
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 |  K ^TMP($J) D HOME^%ZIS S IBHDR="INSURANCE BUFFER ACTIVITY REPORT" W @IOF,!!,?25,IBHDR
 | 
|---|
 | 7 |  W !!,"This report contains the counts and time statistics for all activity in the",!,"Insurance Buffer.",!!
 | 
|---|
 | 8 |  ;
 | 
|---|
 | 9 |  S IBBEG=$$DATES^IBCNBOE("Beginning") G:'IBBEG EXIT
 | 
|---|
 | 10 |  S IBEND=$$DATES^IBCNBOE("Ending",IBBEG) G:'IBEND EXIT  W !!
 | 
|---|
 | 11 |  ;
 | 
|---|
 | 12 |  S IBMONTH=$$MONTH^IBCNBOE G:IBMONTH="" EXIT  W !!
 | 
|---|
 | 13 |  ;
 | 
|---|
 | 14 | DEV ;get the device
 | 
|---|
 | 15 |  S %ZIS="QM",%ZIS("A")="OUTPUT DEVICE: " D ^%ZIS G:POP EXIT
 | 
|---|
 | 16 |  I $D(IO("Q")) S ZTRTN="RPT^IBCNBOA",ZTDESC=IBHDR,ZTSAVE("IB*")="" D ^%ZTLOAD K IO("Q") G EXIT
 | 
|---|
 | 17 |  U IO
 | 
|---|
 | 18 |  ;
 | 
|---|
 | 19 | RPT ; run report
 | 
|---|
 | 20 |  S IBQUIT=0
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 |  ;Patch 305- QUIT in line below inserted for transmission to ARC
 | 
|---|
 | 23 |  D SEARCH(IBBEG,IBEND,IBMONTH) Q:$G(IBARFLAG)  G:IBQUIT EXIT
 | 
|---|
 | 24 |  D PRINT(IBBEG,IBEND)
 | 
|---|
 | 25 |  ;
 | 
|---|
 | 26 | EXIT K ^TMP($J),IBHDR,IBBEG,IBEND,IBMONTH,IBQUIT
 | 
|---|
 | 27 |  Q:$D(ZTQUEUED)
 | 
|---|
 | 28 |  D ^%ZISC
 | 
|---|
 | 29 |  Q
 | 
|---|
 | 30 |  ;
 | 
|---|
 | 31 | SEARCH(IBBEG,IBEND,IBMONTH) ; search/sort statistics for activity report
 | 
|---|
 | 32 |  N IBXST,IBXDT,IBBUFDA,IBB0,IBSTAT,IBTIME,IBS3,IBDATE,IBVER,IBDT2 S IBQUIT=""
 | 
|---|
 | 33 |  S IBBEG=$G(IBBEG)-.01,IBEND=$S('$G(IBEND):9999999,1:$P(IBEND,".")+.9)
 | 
|---|
 | 34 |  ;
 | 
|---|
 | 35 |  S IBXST="" F  S IBXST=$O(^IBA(355.33,"AFST",IBXST)) Q:IBXST=""  D   Q:IBQUIT
 | 
|---|
 | 36 |  . S IBXDT=+IBBEG F  S IBXDT=$O(^IBA(355.33,"AFST",IBXST,IBXDT)) Q:'IBXDT!(IBXDT>IBEND)  D  S IBQUIT=$$STOP Q:IBQUIT
 | 
|---|
 | 37 |  .. S IBBUFDA=0 F  S IBBUFDA=$O(^IBA(355.33,"AFST",IBXST,IBXDT,IBBUFDA)) Q:'IBBUFDA  D
 | 
|---|
 | 38 |  ... ;
 | 
|---|
 | 39 |  ... S IBB0=$G(^IBA(355.33,IBBUFDA,0)),IBSTAT=$P(IBB0,U,4),IBVER=$P(IBB0,U,10)
 | 
|---|
 | 40 |  ... ;
 | 
|---|
 | 41 |  ... ; entered
 | 
|---|
 | 42 |  ... I IBXST="E" S IBDATE=+IBB0 I +IBDATE,IBDATE>IBBEG,IBDATE<IBEND D
 | 
|---|
 | 43 |  .... S IBDT2=+$P(IBB0,U,10) I 'IBDT2 S IBDT2=+$P(IBB0,U,5) I 'IBDT2 S IBDT2=$$NOW^XLFDT
 | 
|---|
 | 44 |  .... S IBTIME=+$$FMDIFF^XLFDT(IBDT2,IBDATE,2),IBSTAT="ENTERED",IBS3=1
 | 
|---|
 | 45 |  .... I +$G(IBMONTH) D SET(IBSTAT,$E(IBDATE,1,5),IBS3,IBTIME,IBB0)
 | 
|---|
 | 46 |  .... D SET(IBSTAT,99999,IBS3,IBTIME,IBB0)
 | 
|---|
 | 47 |  ... ;
 | 
|---|
 | 48 |  ... ; verified
 | 
|---|
 | 49 |  ... I IBXST="V" S IBDATE=+$P(IBB0,U,10) I +IBDATE,IBDATE>IBBEG,IBDATE<IBEND D
 | 
|---|
 | 50 |  .... S IBTIME=+$$FMDIFF^XLFDT(IBDATE,+IBB0,2),IBSTAT="VERIFIED",IBS3=2
 | 
|---|
 | 51 |  .... I +$G(IBMONTH) D SET(IBSTAT,$E(IBDATE,1,5),IBS3,IBTIME,IBB0)
 | 
|---|
 | 52 |  .... D SET(IBSTAT,99999,IBS3,IBTIME,IBB0)
 | 
|---|
 | 53 |  ... ;
 | 
|---|
 | 54 |  ... ; processed
 | 
|---|
 | 55 |  ... I IBXST="A"!(IBXST="R") S IBDATE=+$P(IBB0,U,5) I +IBDATE,IBDATE>IBBEG,IBDATE<IBEND D
 | 
|---|
 | 56 |  .... S IBDT2=+IBVER I 'IBVER S IBDT2=+IBB0
 | 
|---|
 | 57 |  .... S IBTIME=+$$FMDIFF^XLFDT(IBDATE,+IBDT2,2),IBSTAT="UNKNOWN",IBS3=6
 | 
|---|
 | 58 |  .... I $P(IBB0,U,4)="A" S IBS3=3,IBSTAT="ACCEPTED" I 'IBVER S IBS3=4,IBSTAT=IBSTAT_" (&V)"
 | 
|---|
 | 59 |  .... I $P(IBB0,U,4)="R" S IBS3=5,IBSTAT="REJECTED" I +IBVER S IBS3=6,IBSTAT=IBSTAT_" (V)"
 | 
|---|
 | 60 |  .... I +$G(IBMONTH) D SET(IBSTAT,$E(IBDATE,1,5),IBS3,IBTIME,IBB0)
 | 
|---|
 | 61 |  .... D SET(IBSTAT,99999,IBS3,IBTIME,IBB0)
 | 
|---|
 | 62 |  ;
 | 
|---|
 | 63 |  Q
 | 
|---|
 | 64 |  ;
 | 
|---|
 | 65 | SET(STAT,S1,S3,TIME,IBB0) ;
 | 
|---|
 | 66 |  D TMP("IBCNBOA",S1,1,S3,TIME,STAT)
 | 
|---|
 | 67 |  I S3<3 D TMP("IBCNBOA",S1,2,1,TIME,"NOT PROCESSED")
 | 
|---|
 | 68 |  I S3>2 D TMP("IBCNBOA",S1,2,2,TIME,"PROCESSED")
 | 
|---|
 | 69 |  D TMP("IBCNBOA",S1,2,9,TIME,"TOTAL")
 | 
|---|
 | 70 |  ;
 | 
|---|
 | 71 |  Q:$E(STAT)'="A"
 | 
|---|
 | 72 |  ;
 | 
|---|
 | 73 |  D TMP1("IBCNBOAC",S1,+$P(IBB0,U,7),+$P(IBB0,U,8),+$P(IBB0,U,9))
 | 
|---|
 | 74 |  Q
 | 
|---|
 | 75 |  ;
 | 
|---|
 | 76 | TMP(XREF,S1,S2,S3,TIME,NAME) ;
 | 
|---|
 | 77 |  S ^TMP($J,XREF,S1,S2,S3)=NAME
 | 
|---|
 | 78 |  S ^TMP($J,XREF,S1,S2,S3,"CNT")=$G(^TMP($J,XREF,S1,S2,S3,"CNT"))+1
 | 
|---|
 | 79 |  S ^TMP($J,XREF,S1,S2,S3,"TM")=$G(^TMP($J,XREF,S1,S2,S3,"TM"))+TIME
 | 
|---|
 | 80 |  I '$G(^TMP($J,XREF,S1,S2,S3,"HG"))!($G(^TMP($J,XREF,S1,S2,S3,"HG"))<TIME) S ^TMP($J,XREF,S1,S2,S3,"HG")=TIME
 | 
|---|
 | 81 |  I '$G(^TMP($J,XREF,S1,S2,S3,"LS"))!($G(^TMP($J,XREF,S1,S2,S3,"LS"))>TIME) S ^TMP($J,XREF,S1,S2,S3,"LS")=TIME
 | 
|---|
 | 82 |  Q
 | 
|---|
 | 83 |  ;
 | 
|---|
 | 84 | TMP1(XREF,S1,IC,GC,PC) ;
 | 
|---|
 | 85 |  I +IC S ^TMP($J,XREF,S1,"I")=$G(^TMP($J,XREF,S1,"I"))+1
 | 
|---|
 | 86 |  I +GC S ^TMP($J,XREF,S1,"G")=$G(^TMP($J,XREF,S1,"G"))+1
 | 
|---|
 | 87 |  I +PC S ^TMP($J,XREF,S1,"P")=$G(^TMP($J,XREF,S1,"P"))+1
 | 
|---|
 | 88 |  S ^TMP($J,XREF,S1,"CNT")=$G(^TMP($J,XREF,S1,"CNT"))+1
 | 
|---|
 | 89 |  Q
 | 
|---|
 | 90 |  ;
 | 
|---|
 | 91 |  ;
 | 
|---|
 | 92 |  ;
 | 
|---|
 | 93 | PRINT(IBBEG,IBEND) ;
 | 
|---|
 | 94 |  N IBXREF,IBLABLE,IBS1,IBS2,IBS3,IBINS,IBGRP,IBPOL,IBCNT,IBIP,IBGP,IBPP,IBRDT,IBPGN,IBRANGE,IBLN,IBI
 | 
|---|
 | 95 |  ;
 | 
|---|
 | 96 |  S IBRANGE=$$FMTE^XLFDT(+IBBEG)_" - "_$$FMTE^XLFDT(IBEND)
 | 
|---|
 | 97 |  S IBRDT=$$FMTE^XLFDT($J($$NOW^XLFDT,0,4),2),IBRDT=$TR(IBRDT,"@"," "),IBPGN=0
 | 
|---|
 | 98 |  D HDR
 | 
|---|
 | 99 |  ;
 | 
|---|
 | 100 |  S IBXREF="IBCNBOA",IBS1="" F  S IBS1=$O(^TMP($J,IBXREF,IBS1)) Q:IBS1=""  D:IBLN>(IOSL-17) HDR Q:IBQUIT  D  S IBLN=IBLN+7
 | 
|---|
 | 101 |  . S IBLABLE=$S(IBS1=99999:"TOTALS",($E(IBBEG,1,5)<IBS1)&($E(IBEND,1,5)>IBS1):$$FMTE^XLFDT(IBS1_"00"),1:"")
 | 
|---|
 | 102 |  . I IBLABLE="" S IBLABLE=$$FMTE^XLFDT($S($E(IBBEG,1,5)<IBS1:IBS1_1,1:IBBEG))_" - "_$$FMTE^XLFDT($S($E(IBEND,1,5)>IBS1:$$SCH^XLFDT("1M(L)",IBS1_11),1:IBEND))
 | 
|---|
 | 103 |  . W !,?(40-($L(IBLABLE)/2)),IBLABLE,!
 | 
|---|
 | 104 |  . W !,?43,"AVERAGE",?56,"LONGEST",?68,"SHORTEST"
 | 
|---|
 | 105 |  . W !,"STATUS",?22,"COUNT",?30,"PERCENT",?43,"# DAYS",?56,"# DAYS",?68,"# DAYS"
 | 
|---|
 | 106 |  . ;
 | 
|---|
 | 107 |  . S IBS2=0 F  S IBS2=$O(^TMP($J,IBXREF,IBS1,IBS2)) Q:IBS2=""  D  S IBLN=IBLN+1
 | 
|---|
 | 108 |  .. W !,"-----------------------------------------------------------------------------"
 | 
|---|
 | 109 |  .. S IBS3="" F  S IBS3=$O(^TMP($J,IBXREF,IBS1,IBS2,IBS3)) Q:'IBS3  D PRTLN  S IBLN=IBLN+1
 | 
|---|
 | 110 |  . ;
 | 
|---|
 | 111 |  . S IBINS=+$G(^TMP($J,"IBCNBOAC",IBS1,"I")),IBGRP=+$G(^TMP($J,"IBCNBOAC",IBS1,"G"))
 | 
|---|
 | 112 |  . S IBPOL=+$G(^TMP($J,"IBCNBOAC",IBS1,"P")),IBCNT=+$G(^TMP($J,"IBCNBOAC",IBS1,"CNT"))
 | 
|---|
 | 113 |  . S (IBIP,IBGP,IBPP)=0 I IBCNT'=0 S IBIP=((IBINS/IBCNT)*100)\1,IBGP=((IBGRP/IBCNT)*100)\1,IBPP=((IBPOL/IBCNT)*100)\1
 | 
|---|
 | 114 |  . W !!,?2,IBINS," New Compan",$S(IBINS=1:"y",1:"ies")," (",IBIP,"%), "
 | 
|---|
 | 115 |  . W IBGRP," New Group/Plan",$S(IBGRP=1:"",1:"s")," (",IBGP,"%), "
 | 
|---|
 | 116 |  . W IBPOL," New Patient Polic",$S(IBPOL=1:"y",1:"ies")," (",IBPP,"%)",!
 | 
|---|
 | 117 |  Q
 | 
|---|
 | 118 |  ;
 | 
|---|
 | 119 | PRTLN ;
 | 
|---|
 | 120 |  N IBSTX,IBCNT,IBTM,IBHG,IBLS,IBTCNT
 | 
|---|
 | 121 |  ;
 | 
|---|
 | 122 |  S IBSTX=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3))
 | 
|---|
 | 123 |  S IBCNT=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"CNT")) Q:'IBCNT
 | 
|---|
 | 124 |  S IBTM=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"TM"))
 | 
|---|
 | 125 |  S IBHG=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"HG"))
 | 
|---|
 | 126 |  S IBLS=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"LS"))
 | 
|---|
 | 127 |  S IBTCNT=$G(^TMP($J,IBXREF,IBS1,2,9,"CNT")) Q:'IBTCNT
 | 
|---|
 | 128 |  ;
 | 
|---|
 | 129 |  W !,IBSTX,?20,$J($FN(IBCNT,","),7),?30,$J(((IBCNT/IBTCNT)*100),6,1),"%",?43,$J($$STD((IBTM/IBCNT)),6,1),?56,$J($$STD(IBHG),6,1),?68,$J($$STD(IBLS),6,1)
 | 
|---|
 | 130 |  Q
 | 
|---|
 | 131 |  ;
 | 
|---|
 | 132 | STD(SEC) ; convert seconds to days
 | 
|---|
 | 133 |  N IBX,IBD,IBS,IBH,DAYS S DAYS="" G:'$G(SEC) STDQ
 | 
|---|
 | 134 |  S IBD=(SEC/86400),IBD=+$P(IBD,".")
 | 
|---|
 | 135 |  S IBS=SEC-(IBD*86400)
 | 
|---|
 | 136 |  S IBH=((IBS/60)/60),IBH=+$J(IBH,0,2)
 | 
|---|
 | 137 |  S DAYS=IBD+(IBH/24)
 | 
|---|
 | 138 | STDQ Q DAYS
 | 
|---|
 | 139 |  ;
 | 
|---|
 | 140 | HDR ;print the report header
 | 
|---|
 | 141 |  S IBQUIT=$$STOP Q:IBQUIT
 | 
|---|
 | 142 |  I IBPGN>0 S IBQUIT=$$PAUSE Q:IBQUIT
 | 
|---|
 | 143 |  S IBPGN=IBPGN+1,IBLN=4 I IBPGN>1!($E(IOST,1,2)["C-") W @IOF
 | 
|---|
 | 144 |  W !,"INSURANCE BUFFER ACTIVITY REPORT   ",IBRANGE," "
 | 
|---|
 | 145 |  W ?(IOM-22),IBRDT,?(IOM-7)," PAGE ",IBPGN,!
 | 
|---|
 | 146 |  S IBI="",$P(IBI,"-",IOM+1)="" W IBI,!
 | 
|---|
 | 147 |  Q
 | 
|---|
 | 148 |  ;
 | 
|---|
 | 149 | PAUSE() ;pause at end of screen if being displayed on a terminal
 | 
|---|
 | 150 |  N IBX,DIR,DIRUT,X,Y S IBX=0
 | 
|---|
 | 151 |  I $E(IOST,1,2)["C-" W !! S DIR(0)="E" D ^DIR K DIR I $D(DUOUT)!($D(DIRUT)) S IBX=1
 | 
|---|
 | 152 |  Q IBX
 | 
|---|
 | 153 |  ;
 | 
|---|
 | 154 | STOP() ;determine if user has requested the queued report to stop
 | 
|---|
 | 155 |  I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1 K ZTREQ I +$G(IBPGN) W !,"***TASK STOPPED BY USER***"
 | 
|---|
 | 156 |  Q +$G(ZTSTOP)
 | 
|---|
 | 157 |  ;
 | 
|---|
 | 158 | IBAR(IBBEG,IBEND) ;Entry point for Vista IB AR data to ARC
 | 
|---|
 | 159 |  ;patch 305 - called by IBRFN4
 | 
|---|
 | 160 |  N IBMONTH,IBARFLAG,IBARDATA,IBTM,IBCNT
 | 
|---|
 | 161 |  S IBMONTH=0,IBARFLAG=1 K ^TMP($J)
 | 
|---|
 | 162 |  D RPT
 | 
|---|
 | 163 |  S IBTM=$G(^TMP($J,"IBCNBOA",99999,2,2,"TM"))
 | 
|---|
 | 164 |  S IBCNT=$G(^TMP($J,"IBCNBOA",99999,2,2,"CNT"))
 | 
|---|
 | 165 |  I 'IBCNT S IBARDATA=0 G IBARQ
 | 
|---|
 | 166 |  S IBARDATA=$FN($$STD((IBTM/IBCNT)),"",1)
 | 
|---|
 | 167 |  K ^TMP($J)
 | 
|---|
 | 168 | IBARQ Q IBARDATA
 | 
|---|