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

IBCNBOF.m

Go to the documentation of this file.
  1. IBCNBOF ;ALB/ARH - Ins Buffer: Employee Report (Entered) ; 1 Jun 97
  1. ;;2.0;INTEGRATED BILLING;**82,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/DTG start not have form feed between first and second prompt
  1. ;S IBHDR="INSURANCE BUFFER EMPLOYEE REPORT" W @IOF,!!,?25,IBHDR
  1. ; IB*702/DTG start put report header before first question
  1. ;K ^TMP($J) I $G(IOF)="" D HOME^%ZIS
  1. ;S IBHDR="INSURANCE BUFFER EMPLOYEE REPORT" W !!,?25,IBHDR
  1. K ^TMP($J)
  1. ; IB*702/DTG end not have form feed between first and second prompt
  1. ;
  1. N IBBEGEX,IBBENEX,IBCO,IBCUR,IBCURFM,IBEDDT,IBOK,IBSTDT,IBBUFSM
  1. W !!,"This report produces a count of the number of entries added to the Buffer",!,"file for a specified date range sorted by employee. Also included are",!,"sub-totals and percentages based on the current status of those entries."
  1. ;
  1. 10 ;ask if employee's
  1. S IBEMPL=$$EMPL^IBCNBOE I IBEMPL="" G:$$STOP^IBCNINSU EXIT G ENA^IBCNBOE
  1. W !!
  1. ;
  1. 15 ; ask employee name
  1. I +IBEMPL W ! S IBEMPL=$$SELEMPL^IBCNBOE("Enters/Creates") W:IBEMPL !! I IBEMPL="" G:$$STOP^IBCNINSU EXIT G 10
  1. ;
  1. ; IB*702/DTG start change of question flow
  1. ;
  1. ; S IBBEG=$$DATES^IBCNBOE("Beginning") G:'IBBEG EXIT
  1. ; S IBEND=$$DATES^IBCNBOE("Ending",IBBEG) G:'IBEND EXIT W !!
  1. ;
  1. ; S IBMONTH=$$MONTH^IBCNBOE G:IBMONTH="" EXIT W !!
  1. ;
  1. ;get current month/year
  1. S IBCURFM=$E(DT,1,5),IBCUR=$$EXMON^IBCNBOA(IBCURFM)
  1. ;
  1. 20 ; ask if for month
  1. S IBMONTH=$$MONTH^IBCNBOE I IBMONTH="" G:$$STOP^IBCNINSU EXIT G 15:+IBEMPL,10
  1. S IBOK=$$MTHBASE(1)
  1. I 'IBOK G:$$STOP^IBCNINSU EXIT G 15:+IBEMPL,10
  1. S IBBUFSM=$P(IBOK,U,2)
  1. ;
  1. 209 ; 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 20
  1. . D 22 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 20
  1. . D 25 I 'IBCO!(IBCO=2) Q
  1. . S IBOK=1
  1. ;
  1. W !!
  1. ;
  1. ;
  1. ; IB*702/DTG end change of question flow
  1. ;
  1. 30 ; ask report type
  1. ;S IBOUT=$$OUT^IBCNBOE G:IBOUT="" EXIT
  1. S IBOUT=$$OUT^IBCNBOE I IBOUT="" G:$$STOP^IBCNINSU EXIT G 209
  1. ; IB*702/DTG start warn line length if excel
  1. I IBOUT="E" W !!,"To avoid undesired wrapping, please enter '0;256;999' at the 'DEVICE:' prompt.",!
  1. ; IB*702/DTG end warn line length if excel
  1. ;
  1. DEV ;get the device
  1. N POP,ZTDESC,ZTRTN
  1. I IBOUT="R" W !,"Report requires 132 columns."
  1. ;S %ZIS="QM",%ZIS("A")="OUTPUT DEVICE: " D ^%ZIS G:POP EXIT
  1. S %ZIS="QM",%ZIS("A")="DEVICE: "
  1. D ^%ZIS
  1. I POP G:$$STOP^IBCNINSU EXIT G 30
  1. ; IB*702/DTG start keep IOM at 132 if report
  1. I $E($G(IBOUT),1)="R" S IOM=132
  1. ; IB*702/DTG end keep IOM at 132 if report
  1. I $D(IO("Q")) S ZTRTN="RPT^IBCNBOF",ZTDESC=IBHDR,ZTSAVE("IB*")="" D ^%ZTLOAD K IO("Q"),ZTSAVE G EXIT
  1. K %ZIS
  1. U IO
  1. G RPT
  1. ;
  1. ;
  1. 22 ; starting month ; IB*702
  1. ;
  1. ; starting date
  1. S IBCO=0,IBSTDT=$$IBSM^IBCNBOA("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. 23 ; ending month ; IB*702
  1. ;
  1. W !
  1. S IBEDDT=$$IBSM^IBCNBOA("Ending",IBSTDT)
  1. S IBBENEX=$P(IBEDDT,U,2),IBEDDT=$P(IBEDDT,U,1)
  1. I 'IBEDDT G:'$$STOP^IBCNINSU 22 S IBCO=2 Q
  1. S IBEND=$$LAST^IBAGMM(IBEDDT)
  1. S IBCO=1
  1. Q
  1. ;
  1. 25 ; starting date ; IB*702
  1. ;
  1. S IBBEG=$$DATES^IBCNBOE("Beginning") I 'IBBEG S:$$STOP^IBCNINSU IBCO=2 Q
  1. ;
  1. 26 ; ending date ; IB*702
  1. ;
  1. W !
  1. S IBEND=$$DATES^IBCNBOE("Ending",IBBEG) I 'IBEND G:'$$STOP^IBCNINSU 25 S IBCO=2 Q
  1. S IBCO=1
  1. Q
  1. ;
  1. ; IB*702/DTG end Change for up-caret response
  1. ;
  1. RPT ; run report
  1. S IBQUIT=0
  1. ;
  1. D SEARCH(IBBEG,IBEND,IBMONTH,IBEMPL) G:IBQUIT EXIT
  1. D PRINT(IBBEG,IBEND,IBMONTH,IBEMPL,IBOUT)
  1. ;
  1. EXIT K ^TMP($J),IBHDR,IBBEG,IBEND,IBMONTH,IBOUT,IBQUIT,IBEMPL
  1. Q:$D(ZTQUEUED)
  1. D ^%ZISC
  1. Q
  1. ;
  1. N IBXDT,IBBUFDA,IBB0,IBXREF,IBS1,IBEMP
  1. S IBBEG=$G(IBBEG)-.01,IBEND=$S('$G(IBEND):9999999,1:$P(IBEND,".")+.9)
  1. ;
  1. S IBXDT=IBBEG F S IBXDT=$O(^IBA(355.33,"B",IBXDT)) Q:'IBXDT!(IBXDT>IBEND) D S IBQUIT=$$STOP Q:IBQUIT
  1. . S IBBUFDA=0 F S IBBUFDA=$O(^IBA(355.33,"B",IBXDT,IBBUFDA)) Q:'IBBUFDA D
  1. .. ;
  1. .. S IBB0=$G(^IBA(355.33,IBBUFDA,0)),IBEMP=+$P(IBB0,U,2) I 'IBEMP Q
  1. .. I +IBEMPL,IBEMPL'=IBEMP Q
  1. .. ;
  1. .. I $G(IBMONTH) D SET("IBCNBOF",IBEMP,$E(+IBB0,1,5),$P(IBB0,U,4),+$P(IBB0,U,7),+$P(IBB0,U,8),+$P(IBB0,U,9))
  1. .. D SET("IBCNBOF",IBEMP,99999,$P(IBB0,U,4),+$P(IBB0,U,7),+$P(IBB0,U,8),+$P(IBB0,U,9))
  1. .. D SET("IBCNBOF","~",99999,$P(IBB0,U,4),+$P(IBB0,U,7),+$P(IBB0,U,8),+$P(IBB0,U,9))
  1. ;
  1. Q
  1. ;
  1. SET(XREF,S1,S2,STAT,NC,NG,NP) ;
  1. S ^TMP($J,XREF,S1,S2,"CNT")=$G(^TMP($J,XREF,S1,S2,"CNT"))+1
  1. I STAT="E" S ^TMP($J,XREF,S1,S2,"EN")=$G(^TMP($J,XREF,S1,S2,"EN"))+1
  1. I STAT="R" S ^TMP($J,XREF,S1,S2,"RJ")=$G(^TMP($J,XREF,S1,S2,"RJ"))+1
  1. I STAT="A" S ^TMP($J,XREF,S1,S2,"AC")=$G(^TMP($J,XREF,S1,S2,"AC"))+1
  1. I +NC S ^TMP($J,XREF,S1,S2,"NC")=$G(^TMP($J,XREF,S1,S2,"NC"))+1
  1. I +NG S ^TMP($J,XREF,S1,S2,"NG")=$G(^TMP($J,XREF,S1,S2,"NG"))+1
  1. I +NP S ^TMP($J,XREF,S1,S2,"NP")=$G(^TMP($J,XREF,S1,S2,"NP"))+1
  1. Q
  1. ;
  1. ;
  1. PRINT(IBBEG,IBEND,IBMONTH,IBEMPL,IBOUT) ;
  1. N IBXREF,IBS1,IBS2,IBRDT,IBPGN,IBRANGE,IBLN,IBI
  1. ;
  1. ; IB*702/DTG start stop push of line on screen up
  1. N MAXCNT,CRT
  1. I IOST["C-" S MAXCNT=IOSL-2
  1. E S MAXCNT=IOSL-6
  1. ; IB*702/DTG end stop push of line on screen up
  1. I "^R^E^"'[(U_$G(IBOUT)_U) S IBOUT="R"
  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="IBCNBOF",IBS1=""
  1. ;
  1. D HDR:IBOUT="R",PHDL:IBOUT="E"
  1. I '$D(^TMP($J,IBXREF)) D Q
  1. . W ! W:$G(IBOUT)="R" ?((IOM\2)-17) W "* * * N O D A T A F O U N D * * *",!
  1. . D EOR(132)
  1. . S IBI=$$PAUSE
  1. ;
  1. ;S IBXREF="IBCNBOF",IBS1="" F S IBS1=$O(^TMP($J,IBXREF,IBS1)) Q:IBS1="" D Q:IBQUIT ; /IB*702
  1. F S IBS1=$O(^TMP($J,IBXREF,IBS1)) D:IBS1="" EOR(132) Q:IBS1="" D Q:IBQUIT
  1. . ; IB*702/DTG start stop push of line on screen up
  1. . ;I +$G(IBMONTH),(IBOUT="R") W ! S IBLN=IBLN+1
  1. . I +$G(IBMONTH),(IBOUT="R") D Q:IBQUIT
  1. .. I IBLN+1>MAXCNT D HDR Q:IBQUIT
  1. .. I $G(IBLN)>5 W ! S IBLN=IBLN+1
  1. . ;
  1. . ;S IBS2=0 F S IBS2=$O(^TMP($J,IBXREF,IBS1,IBS2)) Q:IBS2="" D:IBLN>(IOSL-3)&(IBOUT="R") HDR Q:IBQUIT D
  1. . S IBS2=0 F S IBS2=$O(^TMP($J,IBXREF,IBS1,IBS2)) Q:IBS2="" D I IBQUIT Q
  1. .. I IBLN+1>MAXCNT&(IBOUT="R") D HDR Q:IBQUIT
  1. .. D PRTLN S IBLN=IBLN+1
  1. .. ; IB*702/DTG end stop push of line on screen up
  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. EOR(IBLE) ; write end of report
  1. I '$G(IBLE) S IBLE=80
  1. I IBLN+2>MAXCNT D HDR Q:IBQUIT
  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. 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. ; IB*702/DTG end Combine parts for excel and report
  1. ;
  1. PRTLN ; IB*702 Rewrote tag to print zeros for statuses with no counts
  1. N IBBA,IBBC,IBEMP,IBCNT,IBEN,IBAC,IBRJ,IBNC,IBNG,IBNP,DATM
  1. ;
  1. S IBEMP=$P($G(^VA(200,+IBS1,0)),U,1) I IBS1="~" S IBEMP="TOTAL"
  1. ;S IBCNT=$G(^TMP($J,IBXREF,IBS1,IBS2,"CNT")) Q:'IBCNT ;IB*702 removed quit
  1. S IBCNT=$G(^TMP($J,IBXREF,IBS1,IBS2,"CNT"))
  1. S IBEN=$G(^TMP($J,IBXREF,IBS1,IBS2,"EN"))
  1. S IBAC=$G(^TMP($J,IBXREF,IBS1,IBS2,"AC"))
  1. S IBRJ=$G(^TMP($J,IBXREF,IBS1,IBS2,"RJ"))
  1. S IBNC=$G(^TMP($J,IBXREF,IBS1,IBS2,"NC"))
  1. S IBNG=$G(^TMP($J,IBXREF,IBS1,IBS2,"NG"))
  1. S IBNP=$G(^TMP($J,IBXREF,IBS1,IBS2,"NP"))
  1. ;S DATM=$S(IBS2=99999:"TOTAL",1:$$FMTE^XLFDT(IBS2_"00"))
  1. S DATM=$S((IBS2=99999&$G(IBMONTH)):"TOTAL",(IBS2=99999&'$G(IBMONTH)):"",1:$$FMTE^XLFDT(IBS2_"00"))
  1. ;
  1. ; Excel output
  1. I IBOUT="E" D Q
  1. . W !,IBEMP_U_DATM_U_$FN(IBCNT,",")_U_$FN(IBEN,",")_U
  1. . S IBBA=$S((IBCNT'=""&(IBEN'="")):((IBEN/IBCNT)*100),1:0),IBBC=$$EXN(IBBA) W IBBC_"%"_U
  1. . W $FN(IBAC,",")_U
  1. . S IBBA=$S((IBCNT'=""&(IBAC'="")):((IBAC/IBCNT)*100),1:0),IBBC=$$EXN(IBBA) W IBBC_"%"_U
  1. . W U_$FN(IBRJ,",")_U
  1. . S IBBA=$S((IBCNT'=""&(IBRJ'="")):((IBRJ/IBCNT)*100),1:0),IBBC=$$EXN(IBBA) W IBBC_"%"_U
  1. . W $FN(IBNC,",")_U_$FN(IBNG,",")_U_$FN(IBNP,",")
  1. ;
  1. ; Report output
  1. W !,$E(IBEMP,1,15),?17,DATM,?25,$J($FN(IBCNT,","),7)
  1. W ?35,$J($FN(IBEN,","),7)
  1. S IBBA=$S((IBCNT'=""&(IBEN'="")):((IBEN/IBCNT)*100),1:0),IBBC=$$EXN(IBBA) W ?43,$J("("_IBBC_"%)",8)
  1. W ?54,$J($FN(IBAC,","),7)
  1. S IBBA=$S((IBCNT'=""&(IBAC'="")):((IBAC/IBCNT)*100),1:0),IBBC=$$EXN(IBBA) W ?62,$J("("_IBBC_"%)",8)
  1. W ?73,$J($FN(IBRJ,","),7)
  1. S IBBA=$S((IBCNT'=""&(IBRJ'="")):((IBRJ/IBCNT)*100),1:0),IBBC=$$EXN(IBBA) W ?81,$J("("_IBBC_"%)",8)
  1. W ?92,$J($FN(IBNC,","),7),?102,$J($FN(IBNG,","),7),?112,$J($FN(IBNP,","),7)
  1. Q
  1. ;
  1. HDR ;print the report header
  1. S IBQUIT=$$STOP Q:IBQUIT
  1. I IBPGN>0 S IBQUIT=$$PAUSE Q:IBQUIT
  1. S IBPGN=IBPGN+1,IBLN=5 I IBPGN>1!($E(IOST,1,2)["C-") W @IOF
  1. ; IB*702/DTG start change INSURANCE to INS
  1. ;W !,"INSURANCE BUFFER (ENTERING) EMPLOYEE REPORT ",IBRANGE," "
  1. W !,"INS BUFFER (ENTERING) EMPLOYEE REPORT ",IBRANGE," "
  1. ;W ?(IOM-22),IBRDT,?(IOM-7)," PAGE ",IBPGN,!,?39,"NOT YET",?93,"NEW",?104,"NEW",?113,"NEW"
  1. W ?(IOM-24),IBRDT,?(IOM-9)," PAGE ",IBPGN
  1. W !,?39,"NOT YET",?93,"NEW",?104,"NEW",?113,"NEW"
  1. ;W !,"EMPLOYEE",?17,"MONTH",?27,"TOTAL",?39,"PROCESSED",?58,"ACCEPTED",?77,"REJECTED",?93,"INS CO",?104,"GROUP",?113,"POLICY",!
  1. W !,"EMPLOYEE" W:$G(IBMONTH) ?17,"MONTH" W ?27,"TOTAL",?39,"PROCESSED",?58,"ACCEPTED",?77,"REJECTED",?93,"INS CO"
  1. W ?104,"GROUP",?113,"POLICY",!
  1. S IBI="",$P(IBI,"-",IOM+1)="" W IBI
  1. Q
  1. ;
  1. PHDL ; - Print the header line for the Excel spreadsheet
  1. N X
  1. ; IB*602/HN ; Add report headers to Excel Spreadsheets
  1. ;W !,"INSURANCE BUFFER (ENTERING) EMPLOYEE REPORT^"_IBRANGE_"^"_$$FMTE^XLFDT($$NOW^XLFDT,1),!
  1. W !,"INS BUFFER (ENTERING) EMPLOYEE REPORT^"_IBRANGE_"^"_$$FMTE^XLFDT($$NOW^XLFDT,1),!
  1. ; IB*602/HN end
  1. ;S X="EMPLOYEE^MONTH^TOTAL^NOT YET PROCESSED^% NOT YET PROCESSED^ACCEPTED^% ACCEPTED^REJECTED^% REJECTED^NEW INS CO^NEW GROUP^NEW POLICY"
  1. S X="EMPLOYEE^"
  1. S:$G(IBMONTH) X=X_"MONTH"
  1. S X=X_"^TOTAL^NOT YET PROCESSED^% NOT YET PROCESSED^ACCEPTED^% ACCEPTED^REJECTED^% REJECTED^NEW INS CO^NEW GROUP^NEW POLICY"
  1. W X
  1. K X
  1. Q
  1. ; IB*702/DTG end change INSURANCE to INS
  1. ;
  1. PAUSE() ;pause at end of screen if beeing displayed on a terminal
  1. N IBX,DIR,DIRUT,DUOUT,X,Y,LIN S IBX=0
  1. ; IB*702/DTG start stop push of line on screen up
  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. I $E(IOST,1,2)["C-" D
  1. . I MAXCNT<51 F LIN=1:1:(MAXCNT-IBLN) W !
  1. . E W !
  1. . S DIR(0)="E" D ^DIR K DIR I $D(DUOUT)!($D(DIRUT)) S IBX=1
  1. ; IB*702/DTG end stop push of line on screen up
  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. ; IB*702/DTG start if month, get first and last allowed month and if month is allowed
  1. MTHBASE(IBMONTH) ; set base var's for month year prompts
  1. ;
  1. N IBBA,IBBB,IBBC,IBBD,IBBF,IBBUFEM,IBBUFEME,IBBUFSD,IBBUFSM,IBBUFSME
  1. S (IBBEG,IBEND,IBSTDT,IBEDDT,IBCO,IBBUFSM,IBBUFSME,IBBUFEM,IBBUFEME,IBBUFSD)=""
  1. ;
  1. I 'IBMONTH Q ""
  1. S IBBUFSD=$O(^IBA(355.33,"B",0))
  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. I 'IBBUFSD D Q 0
  1. . D EN^DDIOL("May Not run Month option since there is not a complete 'Month Year' ","","!")
  1. S IBBUFSM=$E(IBBUFSD,1,5)
  1. I IBBUFSM'="" S IBBUFSME=$$EXMON^IBCNBOA(IBBUFSM)
  1. I IBBUFSM'=""&((IBBUFSM=IBCURFM)!(IBBUFSM>IBCURFM)) D Q 0
  1. . D EN^DDIOL("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="" D EN^DDIOL("Incomplete ending buffer entries","","!") Q 0
  1. S IBBUFEME=$$EXMON^IBCNBOA(IBBUFEM)
  1. S IBBF=1_U_IBBUFSM
  1. Q IBBF
  1. ; IB*702/DTG end if month, get first and last allowed month and if month is allowed
  1. ;