Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: IBCNBOA

IBCNBOA.m

Go to the documentation of this file.
  1. IBCNBOA ;ALB/ARH - Ins Buffer: Activity Report ; 1 Jun 97
  1. ;;2.0;INTEGRATED BILLING;**82,305,528,602,702**;21-MAR-94;Build 53
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. EN ;get parameters then run the report
  1. ;
  1. ; IB*702 initialize variables
  1. N IBBA,IBBB,IBBC,IBBD,IBBEG,IBBEGEX,IBBENEX,IBBUFEM,IBBUFEME,IBBUFSD,IBBUFSM,IBBUFSME
  1. N IBCO,IBCUR,IBCURFM,IBEDDT,IBEND,IBHDR,IBMONTH,IBOK,IBOUT,IBSTDT
  1. K ^TMP($J)
  1. ;
  1. S IBHDR="INSURANCE BUFFER ACTIVITY REPORT" W @IOF,!!,?25,IBHDR
  1. W !!,"This report contains the counts and time statistics for all activity in the"
  1. W !,"Insurance Buffer.",!!
  1. ;
  1. ;IB*702/DTG Change question flow, month first, if not month then dates.
  1. ; Rewrote month and date prompt, plus behavior with the "^" throughout the routine.
  1. ;S IBBEG=$$DATES^IBCNBOE("Beginning") G:'IBBEG EXIT
  1. ;S IBEND=$$DATES^IBCNBOE("Ending",IBBEG) G:'IBEND EXIT W !!
  1. ;S IBMONTH=$$MONTH^IBCNBOE G:IBMONTH="" EXIT W !!
  1. ;
  1. 10 ; ask Previous Completed month
  1. S IBMONTH=$$MONTH^IBCNBOE G:IBMONTH="" EXIT
  1. ;W !!
  1. ;
  1. S (IBBEG,IBEND,IBSTDT,IBEDDT,IBCO,IBBUFSM,IBBUFSME,IBBUFEM,IBBUFEME,IBBUFSD)=""
  1. ;get current month/year
  1. S IBCURFM=$E(DT,1,5),IBCUR=$$EXMON(IBCURFM)
  1. ;
  1. I IBMONTH S IBOK=0 D I 'IBOK G 10
  1. . ; get buffer starting month/year
  1. . S IBBUFSD=$O(^IBA(355.33,"B",0))
  1. . I 'IBBUFSD W !,"May Not run Month option since there is not a complete 'Month Year'" Q
  1. . I IBBUFSD D
  1. . . ; check if first date is complete month
  1. . . S IBBC=+$E(IBBUFSD,6,7),IBBB=$E(IBBUFSD,1,3) I IBBC'=1 D ;<
  1. . . . ; get first day of next month
  1. . . . S IBBA=+$E(IBBUFSD,4,5)+1 S:$L(IBBA)=1 IBBA="0"_IBBA I IBBA>12 D
  1. . . . . S IBBB=$E(IBBUFSM,1,3)+1,IBBA="01"
  1. . . . S IBBD=IBBB_IBBA_"00.999999",IBBUFSD=$O(^IBA(355.33,"B",IBBD))
  1. . S IBBUFSM=$E(IBBUFSD,1,5)
  1. . I IBBUFSM'="" S IBBUFSME=$$EXMON(IBBUFSM)
  1. . I IBBUFSM'=""&((IBBUFSM=IBCURFM)!(IBBUFSM>IBCURFM)) D S IBOK=0 Q
  1. . . W "May Not run Month option since the buffer start is the current 'Month Year' "_IBCUR
  1. . ; get buffer ending month/year prior to current month/year
  1. . S IBBUFEM=$O(^IBA(355.33,"B",(IBCURFM_"01.000000")),-1),IBBUFEM=$E(IBBUFEM,1,5)
  1. . I IBBUFEM="" W "Incomplete ending buffer entries" S IBOK=0 Q
  1. . S IBBUFEME=$$EXMON(IBBUFEM)
  1. . S IBOK=1
  1. ;
  1. 109 ; come here for dates if going back
  1. ;
  1. ; month dates
  1. I IBMONTH S (IBOK,IBCO)=0 D I 'IBOK G:IBCO=2 EXIT G 10
  1. . D 11 I 'IBCO!(IBCO=2) Q
  1. . S IBOK=1
  1. ;
  1. ; daily dates
  1. I 'IBMONTH S (IBOK,IBCO)=0 D I 'IBOK G:IBCO=2 EXIT G 10
  1. . D 21 I 'IBCO!(IBCO=2) Q
  1. . S IBOK=1
  1. ;
  1. 30 ; report or excel
  1. S IBOUT=$$OUT^IBCNBOE I IBOUT="" G:$$STOP^IBCNINSU EXIT G 109
  1. I IBOUT="E" W !!,"To avoid undesired wrapping, please enter '0;256;999' at the 'DEVICE:' prompt.",!
  1. ;
  1. ; IB*702/DTG tweaked device prompt
  1. DEV ;get the device
  1. N POP,ZTDESC,ZTRTN,ZTSAVE
  1. S ZTRTN="RPT^IBCNBOA",ZTDESC=IBHDR,ZTSAVE("IB*")=""
  1. D EN^XUTMDEVQ(ZTRTN,ZTDESC,.ZTSAVE)
  1. I POP G:$$STOP^IBCNINSU EXIT G 30
  1. Q
  1. ;
  1. 11 ; starting month ; IB*702
  1. ;
  1. ; starting date
  1. S IBCO=0,IBSTDT=$$IBSM("Beginning","")
  1. I 'IBSTDT S:$$STOP^IBCNINSU IBCO=2 Q
  1. S IBBEGEX=$P(IBSTDT,U,2),IBSTDT=$P(IBSTDT,U,1)
  1. S IBBEG=IBSTDT_"01"
  1. ;
  1. 12 ; ending month ; IB*702
  1. ;
  1. W !
  1. S IBEDDT=$$IBSM("Ending",IBSTDT)
  1. S IBBENEX=$P(IBEDDT,U,2),IBEDDT=$P(IBEDDT,U,1)
  1. I 'IBEDDT G:'$$STOP^IBCNINSU 11 S IBCO=2 Q
  1. S IBEND=$$LAST^IBAGMM(IBEDDT)
  1. S IBCO=1
  1. Q
  1. ;
  1. 21 ; starting date ; IB*702
  1. ;
  1. S IBBEG=$$DATES^IBCNBOE("Beginning") I 'IBBEG S:$$STOP^IBCNINSU IBCO=2 Q
  1. ;
  1. 22 ; ending date ; IB*702
  1. ;
  1. W !
  1. S IBEND=$$DATES^IBCNBOE("Ending",IBBEG) I 'IBEND G:'$$STOP^IBCNINSU 21 S IBCO=2 Q
  1. S IBCO=1
  1. Q
  1. ;
  1. IBSM(IBLABEL,IBSTDT) ; START/END MONTH ; IB*702
  1. ; IBLABEL - starting or ending month
  1. ; IBSTDT - starting month year in FM form
  1. ;
  1. N DIR,DIRUT,DUOUT,DTOUT,IBB,IBD,IBL,IBNDT,X,Y
  1. ;
  1. S IBD="",IBNDT=$S(IBSTDT'="":IBSTDT,1:IBBUFSM),IBB=$$EXMON($E(IBNDT,1,5))
  1. I $E(IBLABEL,1,3)="Beg" D
  1. . W !!,"Future dates are not allowed and the month selected cannot be later than"
  1. . W !,"the previous month."
  1. . W !,"The month selected must be a complete/full month. The current 'Month Year'"
  1. . W !,"of ("_IBCUR_") is not allowed.",!
  1. IBSMA ; skip back tag
  1. S DIR("?",1)="Enter the "_IBLABEL_" 'Month Year' for the range to be reported."
  1. S DIR("?",2)="Use the Form 'MM YYYY' or '^' to Quit."
  1. S DIR("?",3)="The month selected cannot be later than the previous month."
  1. S DIR("?",4)="The month selected must be a complete/full month."
  1. S DIR("?")="The current 'Month Year' of "_IBCUR_" is not allowed."
  1. S DIR("A")=$G(IBLABEL)_" Month Year (Ex. January 2021)"
  1. S DIR(0)="DO^::EM"
  1. D ^DIR
  1. I Y="" W *7,!,"Please enter the "_IBLABEL_" Month Year or '^' to Quit.",! G IBSMA
  1. I $D(DIRUT)!$D(DUOUT)!$D(DTOUT) S IBD="" G IBSMX
  1. S IBD=$E(Y,1,5) I IBD="" G IBSMX
  1. S IBL=$G(Y(0)) I IBL="" S IBL=$E(IBD,4,5)_" "_($E(IBD,1,3)+1700)
  1. ; check range(s)
  1. I IBD=IBCURFM W !,*7,"May Not Select current 'Month Year' "_IBCUR_".",! G IBSMA
  1. I IBD>IBCURFM W !,*7,"Future Dates are not allowed.",! G IBSMA
  1. I IBD<IBNDT W *7,!,"Month Year entered ("_IBL_") is less than minimum entry of ("_IBB_").",! G IBSMA
  1. S IBD=IBD_U_IBL
  1. ;
  1. IBSMX ; Exit subroutine
  1. Q IBD
  1. ;
  1. EXMON(IBCHGDT) ; change FM year month to external 'month year'
  1. ;Input:
  1. ; IBCHGDT - year month of FM date (ex: 32107)
  1. ;
  1. I IBCHGDT="" Q ""
  1. Q $P("JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC",",",+$E(IBCHGDT,4,5))_" "_($E(IBCHGDT,1,3)+1700)
  1. ;
  1. ;
  1. RPT ; run report
  1. ;IB*702/TAZ - New variables used during processing.
  1. N IBQUIT,ZTQUEUED,ZTSTOP
  1. ;
  1. S IBQUIT=0
  1. ;
  1. ;Patch 305- QUIT in line below inserted for transmission to ARC
  1. D SEARCH(IBBEG,IBEND,IBMONTH) Q:$G(IBARFLAG) G:IBQUIT EXIT
  1. D PRINT(IBBEG,IBEND,IBOUT)
  1. ;
  1. EXIT ; exit report
  1. K ^TMP($J)
  1. Q
  1. ;
  1. ;IB*702/DTG remove IBVER for 'verified' logic
  1. ; N IBXST,IBXDT,IBBUFDA,IBB0,IBSTAT,IBTIME,IBS3,IBDATE,IBVER,IBDT2 S IBQUIT=""
  1. N IBXST,IBXDT,IBBUFDA,IBB0,IBSTAT,IBTIME,IBS3,IBDATE,IBDT2 S IBQUIT=""
  1. S IBBEG=$G(IBBEG)-.01,IBEND=$S('$G(IBEND):9999999,1:$P(IBEND,".")+.9)
  1. ;
  1. S IBXST="" F S IBXST=$O(^IBA(355.33,"AFST",IBXST)) Q:IBXST="" D Q:IBQUIT
  1. . S IBXDT=+IBBEG F S IBXDT=$O(^IBA(355.33,"AFST",IBXST,IBXDT)) Q:'IBXDT!(IBXDT>IBEND) D S IBQUIT=$$STOP Q:IBQUIT
  1. .. S IBBUFDA=0 F S IBBUFDA=$O(^IBA(355.33,"AFST",IBXST,IBXDT,IBBUFDA)) Q:'IBBUFDA D
  1. ... ;
  1. ... ;IB*702/DTG remove Set IBVER for 'verified' logic
  1. ... ;S IBB0=$G(^IBA(355.33,IBBUFDA,0)),IBSTAT=$P(IBB0,U,4),IBVER=$P(IBB0,U,10)
  1. ... S IBB0=$G(^IBA(355.33,IBBUFDA,0)),IBSTAT=$P(IBB0,U,4)
  1. ... ;
  1. ... ; entered
  1. ... I IBXST="E" S IBDATE=+IBB0 I +IBDATE,IBDATE>IBBEG,IBDATE<IBEND D
  1. .... S IBDT2=+$P(IBB0,U,10) I 'IBDT2 S IBDT2=+$P(IBB0,U,5) I 'IBDT2 S IBDT2=$$NOW^XLFDT
  1. .... S IBTIME=+$$FMDIFF^XLFDT(IBDT2,IBDATE,2),IBSTAT="ENTERED",IBS3=1
  1. .... I +$G(IBMONTH) D SET(IBSTAT,$E(IBDATE,1,5),IBS3,IBTIME,IBB0)
  1. .... D SET(IBSTAT,99999,IBS3,IBTIME,IBB0)
  1. ... ;
  1. ... ;IB*702/DTG remove 'verified' logic
  1. ... ; verified
  1. ... ;I IBXST="V" S IBDATE=+$P(IBB0,U,10) I +IBDATE,IBDATE>IBBEG,IBDATE<IBEND D
  1. ... ;. ;S IBTIME=+$$FMDIFF^XLFDT(IBDATE,+IBB0,2),IBSTAT="VERIFIED",IBS3=2
  1. ... ;. ;I +$G(IBMONTH) D SET(IBSTAT,$E(IBDATE,1,5),IBS3,IBTIME,IBB0)
  1. ... ;. ;D SET(IBSTAT,99999,IBS3,IBTIME,IBB0)
  1. ... ;
  1. ... ; processed
  1. ... I IBXST="A"!(IBXST="R") S IBDATE=+$P(IBB0,U,5) I +IBDATE,IBDATE>IBBEG,IBDATE<IBEND D
  1. .... S IBDT2=+IBB0
  1. .... S IBTIME=+$$FMDIFF^XLFDT(IBDATE,+IBDT2,2),IBSTAT="UNKNOWN",IBS3=6
  1. .... ;IB*702/DTG remove &V and V
  1. .... ;I $P(IBB0,U,4)="A" S IBS3=3,IBSTAT="ACCEPTED" I 'IBVER S IBS3=4,IBSTAT=IBSTAT_" (&V)"
  1. .... ;I $P(IBB0,U,4)="R" S IBS3=5,IBSTAT="REJECTED" I +IBVER S IBS3=6,IBSTAT=IBSTAT_" (V)"
  1. .... I $P(IBB0,U,4)="A" S IBS3=3,IBSTAT="ACCEPTED"
  1. .... I $P(IBB0,U,4)="R" S IBS3=5,IBSTAT="REJECTED"
  1. .... I +$G(IBMONTH) D SET(IBSTAT,$E(IBDATE,1,5),IBS3,IBTIME,IBB0)
  1. .... D SET(IBSTAT,99999,IBS3,IBTIME,IBB0)
  1. ;
  1. Q
  1. ;
  1. SET(STAT,S1,S3,TIME,IBB0) ;
  1. D TMP("IBCNBOA",S1,1,S3,TIME,STAT)
  1. I S3<3 D TMP("IBCNBOA",S1,2,1,TIME,"NOT PROCESSED")
  1. I S3>2 D TMP("IBCNBOA",S1,2,2,TIME,"PROCESSED")
  1. D TMP("IBCNBOA",S1,2,9,TIME,"TOTAL")
  1. ;
  1. Q:$E(STAT)'="A"
  1. ;
  1. D TMP1("IBCNBOAC",S1,+$P(IBB0,U,7),+$P(IBB0,U,8),+$P(IBB0,U,9))
  1. Q
  1. ;
  1. TMP(XREF,S1,S2,S3,TIME,NAME) ;
  1. S ^TMP($J,XREF,S1,S2,S3)=NAME
  1. S ^TMP($J,XREF,S1,S2,S3,"CNT")=$G(^TMP($J,XREF,S1,S2,S3,"CNT"))+1
  1. S ^TMP($J,XREF,S1,S2,S3,"TM")=$G(^TMP($J,XREF,S1,S2,S3,"TM"))+TIME
  1. 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
  1. 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
  1. ; IB*702/DTG start call to set stubs
  1. D TMPCHK(XREF,S1,S2,S3,TIME,NAME)
  1. ; IB*702/DTG end call to set stubs
  1. Q
  1. ;
  1. ; IB*702/DTG start set stubs for item entries.
  1. TMPCHK(XREF,S1,S2,S3,TIME,NAME) ; check if not there set stub for all if one is set
  1. ; use S1 (date), and S2 1 or 2
  1. N IBBI
  1. I S2=1 F IBBI=1,3,5 I $G(^TMP($J,XREF,S1,S2,IBBI))="" D
  1. . S ^TMP($J,XREF,S1,S2,IBBI)=$P("ENTERED,VERIFIED,ACCEPTED,,REJECTED",",",IBBI)
  1. . S ^TMP($J,XREF,S1,S2,IBBI,"CNT")=""
  1. . S ^TMP($J,XREF,S1,S2,IBBI,"TM")=""
  1. . I $G(^TMP($J,XREF,S1,S2,IBBI,"HG"))="" S ^TMP($J,XREF,S1,S2,IBBI,"HG")=""
  1. . I $G(^TMP($J,XREF,S1,S2,IBBI,"LS"))="" S ^TMP($J,XREF,S1,S2,IBBI,"LS")=""
  1. I S2=2 F IBBI=1,2,9 I $G(^TMP($J,XREF,S1,S2,IBBI))="" D
  1. . S ^TMP($J,XREF,S1,S2,IBBI)=$P("NOT PROCESSED,PROCESSED,,,,,,,TOTAL",",",IBBI)
  1. . S ^TMP($J,XREF,S1,S2,IBBI,"CNT")=""
  1. . S ^TMP($J,XREF,S1,S2,IBBI,"TM")=""
  1. . I $G(^TMP($J,XREF,S1,S2,IBBI,"HG"))="" S ^TMP($J,XREF,S1,S2,IBBI,"HG")=""
  1. . I $G(^TMP($J,XREF,S1,S2,IBBI,"LS"))="" S ^TMP($J,XREF,S1,S2,IBBI,"LS")=""
  1. Q
  1. ; IB*702/DTG end set stubs for item entries.
  1. ;
  1. TMP1(XREF,S1,IC,GC,PC) ;
  1. I +IC S ^TMP($J,XREF,S1,"I")=$G(^TMP($J,XREF,S1,"I"))+1
  1. I +GC S ^TMP($J,XREF,S1,"G")=$G(^TMP($J,XREF,S1,"G"))+1
  1. I +PC S ^TMP($J,XREF,S1,"P")=$G(^TMP($J,XREF,S1,"P"))+1
  1. S ^TMP($J,XREF,S1,"CNT")=$G(^TMP($J,XREF,S1,"CNT"))+1
  1. Q
  1. ;
  1. ;
  1. ;
  1. PRINT(IBBEG,IBEND,IBOUT) ;
  1. N IBXREF,IBLABLE,IBS1,IBS2,IBS3,IBINS,IBGRP,IBPOL,IBCNT,IBIP,IBGP,IBPP,IBRDT,IBPGN,IBRANGE,IBLN,IBI,IBHED
  1. ;
  1. I "^R^E^"'[(U_$G(IBOUT)_U) S IBOUT="R"
  1. S IBRANGE=$S(IBMONTH:IBBEGEX,1:$$FMTE^XLFDT(+IBBEG))_" - "_$S(IBMONTH:IBBENEX,1:$$FMTE^XLFDT(IBEND))
  1. ;S IBRANGE=$$FMTE^XLFDT(+IBBEG)_" - "_$$FMTE^XLFDT(IBEND)
  1. S IBRDT=$$FMTE^XLFDT($J($$NOW^XLFDT,0,4),2),IBRDT=$TR(IBRDT,"@"," "),(IBLN,IBPGN)=0
  1. ; IB*702/DTG start Combine vars, no data check, end of report
  1. S IBXREF="IBCNBOA",IBS1=""
  1. S IBHED=$S(IBOUT="E":"PHDL",1:"HDR") D @IBHED
  1. I '$D(^TMP($J,IBXREF)) D Q
  1. . W ! W:$G(IBOUT)="R" ?23 W "* * * N O D A T A F O U N D * * *",!
  1. . D EOR(80)
  1. . S IBI=$$PAUSE
  1. ;
  1. ; Excel output
  1. I IBOUT="E" D S IBI=$$PAUSE Q
  1. . F S IBS1=$O(^TMP($J,IBXREF,IBS1)) D:IBS1="" EOR(132) Q:IBS1="" D
  1. .. D GETLABL ;IB*702/DTG Moved pre-existing code to new function
  1. .. S IBS2=0 F S IBS2=$O(^TMP($J,IBXREF,IBS1,IBS2)) Q:IBS2="" D
  1. ... S IBS3="" F S IBS3=$O(^TMP($J,IBXREF,IBS1,IBS2,IBS3)) Q:'IBS3 D PRTLN
  1. .. ;
  1. .. D GETOAC ;IB*702/DTG Moved pre-existing code to new function
  1. .. W U_IBINS_U_IBIP_"%"_U_IBGRP_U_IBGP_"%"_U_IBPOL_U_IBPP_"%"
  1. ;
  1. F S IBS1=$O(^TMP($J,IBXREF,IBS1)) D:IBS1="" EOR(80) Q:IBS1="" D:IBLN>(IOSL-17) HDR Q:IBQUIT D S IBLN=IBLN+7
  1. . D GETLABL ;IB*702/DTG Moved pre-existing code to new function
  1. . W !,?(40-($L(IBLABLE)/2)),IBLABLE,!
  1. . W !,?43,"AVERAGE",?56,"LONGEST",?68,"SHORTEST"
  1. . W !,"STATUS",?22,"COUNT",?30,"PERCENT",?43,"# DAYS",?56,"# DAYS",?68,"# DAYS"
  1. . ;
  1. . S IBS2=0 F S IBS2=$O(^TMP($J,IBXREF,IBS1,IBS2)) Q:IBS2="" D S IBLN=IBLN+1
  1. .. W !,"-----------------------------------------------------------------------------"
  1. .. S IBS3="" F S IBS3=$O(^TMP($J,IBXREF,IBS1,IBS2,IBS3)) Q:'IBS3 D PRTLN S IBLN=IBLN+1
  1. . ;
  1. . D GETOAC ;IB*702/DTG Moved pre-existing code to new function
  1. . W !!,?2,IBINS," New Compan",$S(IBINS=1:"y",1:"ies")," (",IBIP,"%), "
  1. . W IBGRP," New Group/Plan",$S(IBGRP=1:"",1:"s")," (",IBGP,"%), "
  1. . W IBPOL," New Patient Polic",$S(IBPOL=1:"y",1:"ies")," (",IBPP,"%)",!
  1. ;
  1. ; IB*702/DTG end Combine vars, no data check, end of report
  1. ;
  1. I 'IBQUIT S IBI=$$PAUSE
  1. Q
  1. ;
  1. ; IB*702/DTG start Combine parts for excel and report
  1. ;
  1. GETLABL ; pick up common values for Excel and Report
  1. ;
  1. S IBLABLE=$S(IBS1=99999:"TOTALS",($E(IBBEG,1,5)<IBS1)&($E(IBEND,1,5)>IBS1):$$FMTE^XLFDT(IBS1_"00"),1:"")
  1. I IBLABLE="" D ;<
  1. . S IBLABLE=$$FMTE^XLFDT($S($E(IBBEG,1,5)<IBS1:IBS1_"01",1:IBBEG))_" - "_$$FMTE^XLFDT($S($E(IBEND,1,5)>IBS1:$$SCH^XLFDT("1M(L)",IBS1_11),1:IBEND))
  1. . I $G(IBMONTH)&(IBLABLE["-") S IBLABLE=$$FMTE^XLFDT(IBS1_"00")
  1. Q
  1. ;
  1. GETOAC ; pick up items for IBCNBOAC
  1. ;
  1. S IBINS=+$G(^TMP($J,"IBCNBOAC",IBS1,"I")),IBGRP=+$G(^TMP($J,"IBCNBOAC",IBS1,"G"))
  1. S IBPOL=+$G(^TMP($J,"IBCNBOAC",IBS1,"P")),IBCNT=+$G(^TMP($J,"IBCNBOAC",IBS1,"CNT"))
  1. S (IBIP,IBGP,IBPP)=0 I IBCNT'=0 S IBIP=((IBINS/IBCNT)*100)\1,IBGP=((IBGRP/IBCNT)*100)\1,IBPP=((IBPOL/IBCNT)*100)\1
  1. Q
  1. ;
  1. EOR(IBLE) ; write end of report
  1. I '$G(IBLE) S IBLE=80
  1. W ! W:$G(IBOUT)="R" ?((IBLE\2)-10) W "*** END OF REPORT ***",!
  1. Q
  1. ;
  1. EXN(IBBN) ; round number by .05 return with 1st decimal
  1. N IBBW,IBBX,IBBR
  1. S IBBN=+$G(IBBN)
  1. ;I IBBN="" Q ""
  1. S IBBW=$S($E(IBBN,1)="-":"-",1:"")
  1. S IBBX=IBBN+(IBBW_.05)
  1. S:$P(IBBX,".",1)="" IBBX="0"_"."_$P(IBBX,".",2)
  1. S IBBR=$P(IBBX,".",1)_"."_+($E($P(IBBX,".",2),1))
  1. Q IBBR
  1. ;
  1. PRTLN ; IB*702/DTG Rewrote tag to print zeros for statuses with no counts
  1. N IBSTX,IBCNT,IBTM,IBHG,IBLS,IBTCNT
  1. N IBBA,IBBC,IBBD ;IB*702 added variables
  1. ;
  1. S IBSTX=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3))
  1. ;S IBCNT=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"CNT")) Q:'IBCNT ;IB*702 removed quit
  1. S IBCNT=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"CNT"))
  1. S IBTM=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"TM"))
  1. S IBHG=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"HG"))
  1. S IBLS=$G(^TMP($J,IBXREF,IBS1,IBS2,IBS3,"LS"))
  1. ;S IBTCNT=$G(^TMP($J,IBXREF,IBS1,2,9,"CNT")) Q:'IBTCNT ;IB*702 removed quit
  1. S IBTCNT=$G(^TMP($J,IBXREF,IBS1,2,9,"CNT"))
  1. ;
  1. ; Excel output
  1. I IBOUT="E" D Q
  1. . W !,IBLABLE_U_IBSTX_U_$FN(IBCNT,",")_U
  1. . S IBBA=$S((IBCNT'=""&(IBTCNT'="")):((IBCNT/IBTCNT)*100),1:0),IBBC=$$EXN(IBBA) W IBBC_"%"_U
  1. . S IBBA=$S(IBCNT'="":$$STD((IBTM/IBCNT)),1:0),IBBC=$$EXN(IBBA) W IBBC_U
  1. . S IBBA=$$STD(IBHG),IBBC=$$EXN(IBBA) W IBBC_U
  1. . S IBBA=$$STD(IBLS),IBBC=$$EXN(IBBA) W IBBC
  1. ;
  1. ; Report output
  1. W !,IBSTX,?20,$J($FN(IBCNT,","),7)
  1. S IBBA=$S((IBCNT'=""&(IBTCNT'="")):((IBCNT/IBTCNT)*100),1:0) W ?30,$J(IBBA,6,1),"%"
  1. S IBBA=$S(IBCNT'="":$$STD((IBTM/IBCNT)),1:0) W ?43,$J(IBBA,6,1)
  1. W ?56,$J($$STD(IBHG),6,1),?68,$J($$STD(IBLS),6,1)
  1. Q
  1. ;
  1. STD(SEC) ; convert seconds to days
  1. N IBX,IBD,IBS,IBH,DAYS S DAYS="" G:'$G(SEC) STDQ
  1. S IBD=(SEC/86400),IBD=+$P(IBD,".")
  1. S IBS=SEC-(IBD*86400)
  1. S IBH=((IBS/60)/60),IBH=+$J(IBH,0,2)
  1. S DAYS=IBD+(IBH/24)
  1. STDQ Q DAYS
  1. ;
  1. HDR ;print the report header
  1. N RM
  1. S IBQUIT=$$STOP Q:IBQUIT
  1. I IBPGN>0 S IBQUIT=$$PAUSE Q:IBQUIT
  1. S RM=$S(IBOUT="R":80,1:IOM)
  1. S IBPGN=IBPGN+1,IBLN=4 I IBPGN>1!($E(IOST,1,2)["C-") W @IOF
  1. W !,"INS BUFFER ACTIVITY REPORT ",IBRANGE," "
  1. W ?(RM-22),IBRDT,?(RM-(6+$L(IBPGN)))," PAGE ",IBPGN,!
  1. S IBI="",$P(IBI,"-",RM+1)="" W IBI,!
  1. Q
  1. ;
  1. PHDL ; - Print the header line for the Excel spreadsheet
  1. ;IB*702/TAZ - Cleaned up code
  1. ; IB*602/HN ; Add report headers to Excel Spreadsheets
  1. W !,"INS BUFFER ACTIVITY REPORT^",IBRANGE_"^"_$$FMTE^XLFDT($$NOW^XLFDT,1),!
  1. ; IB*602/HN end
  1. W "MONTH^STATUS^COUNT^PERCENT^AVERAGE # DAYS^LONGEST # DAYS^SHORTEST # DAYS^New Companies^% New Companies^New Group/Plans^% New Group/Plans^New Patient Policies^% New Patient Policies"
  1. Q
  1. ;
  1. PAUSE() ;pause at end of screen if being displayed on a terminal
  1. N IBX,DIRUT,DUOUT,DTOUT,X,Y
  1. S IBX=0
  1. I $E(IOST,1,2)["C-" W !! S DIR(0)="E" D ^DIR K DIR I $D(DUOUT)!($D(DIRUT)) S IBX=1
  1. Q IBX
  1. ;
  1. STOP() ;determine if user has requested the queued report to stop
  1. I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1 K ZTREQ I +$G(IBPGN) W !,"***TASK STOPPED BY USER***"
  1. Q +$G(ZTSTOP)
  1. ;
  1. IBAR(IBBEG,IBEND) ;Entry point for Vista IB AR data to ARC
  1. ;patch 305 - called by IBRFN4
  1. N IBMONTH,IBARFLAG,IBARDATA,IBTM,IBCNT
  1. S IBMONTH=0,IBARFLAG=1 K ^TMP($J)
  1. D RPT
  1. S IBTM=$G(^TMP($J,"IBCNBOA",99999,2,2,"TM"))
  1. S IBCNT=$G(^TMP($J,"IBCNBOA",99999,2,2,"CNT"))
  1. I 'IBCNT S IBARDATA=0 G IBARQ
  1. S IBARDATA=$FN($$STD((IBTM/IBCNT)),"",1)
  1. K ^TMP($J)
  1. IBARQ Q IBARDATA
  1. ;