APCDFCP ; IHS/CMI/LAB - print apc report by prov disc ;
;;2.0;IHS PCC SUITE;**7**;MAY 14, 2009
;
START ;
K APCDSUM
S APCD80S="-------------------------------------------------------------------------------",APCDPG=0
S Y=APCDBD D DD^%DT S APCDBDD=Y S Y=APCDED D DD^%DT S APCDEDD=Y
S (APCDTOT,APCDPROV,APCDTDES)=0
K APCDQUIT
I '$D(^XTMP("APCDFC",$J)) S APCDPROV="NONE TO REPORT" D HEAD G DONE
F S APCDPROV=$O(^XTMP("APCDFC",$J,APCDPROV)) Q:APCDPROV=""!($D(APCDQUIT)) D HEAD Q:$D(APCDQUIT) D SORT
G:$D(APCDQUIT) DONE
I $Y>(IOSL-5) D HEAD G:$D(APCDQUIT) DONE
W !?42,"------",?52,"-------",?65,"------",!
W ?5,"Grand Total for ALL Operators:",?42,$J(APCDTOT,6),?52,$J(APCDTDES,7) S APCDAVG=APCDTDES/APCDTOT W ?65,$J(APCDAVG,6,1)
D SUMMPAGE
DONE I $D(APCDET) S APCDTS=(86400*($P(APCDET,",")-$P(APCDBT,",")))+($P(APCDET,",",2)-$P(APCDBT,",",2)),APCDH=$P(APCDTS/3600,".") S:APCDH="" APCDH=0
S APCDTS=APCDTS-(APCDH*3600),APCDM=$P(APCDTS/60,".") S:APCDM="" APCDM=0 S APCDTS=APCDTS-(APCDM*60),APCDS=APCDTS W !!,"RUN TIME (H.M.S): ",APCDH,".",APCDM,".",APCDS
I $E(IOST)="C",IO=IO(0) S DIR(0)="E" D ^DIR K DIR
W:$D(IOF) @IOF
Q
SORT ;
S (APCDSUB,APCDDESU)=0,APCDFC("DAYS",APCDPROV)=0
S APCDSORT="" F S APCDSORT=$O(^XTMP("APCDFC",$J,APCDPROV,APCDSORT)) Q:APCDSORT=""!($D(APCDQUIT)) D SORT1
W !?42,"------",?52,"-------",?65,"------",!
W ?5,"Totals for ",APCDPROV,?42,$J(APCDSUB,6),?52,$J(APCDDESU,7) W:APCDSUB ?65,$J((APCDDESU/APCDSUB),6,1)
S APCDFC("FORMS",APCDPROV)=APCDSUB
S APCDFC("AVG DEC",APCDPROV)=$J((APCDDESU/APCDSUB),6,1)
Q
SORT1 ;
I $Y>(IOSL-6) D HEAD Q:$D(APCDQUIT)
W !,$S(APCDSRT]"":APCDSORT,1:"")
S APCDDATE=0 F S APCDDATE=$O(^XTMP("APCDFC",$J,APCDPROV,APCDSORT,APCDDATE)) Q:APCDDATE'=+APCDDATE!($D(APCDQUIT)) D WRITE
Q
;
WRITE ;
S APCDSUM(APCDPROV,"#DAYS")=$G(APCDSUM(APCDPROV,"#DAYS"))+1
S Y=APCDDATE D DD^%DT S APCDWDAT=Y
I $Y>(IOSL-5) D HEAD Q:$D(APCDQUIT)
S APCDVDES=^XTMP("APCDFC",$J,APCDPROV,APCDSORT,"DEP COUNT",APCDDATE),APCDAVG=(APCDVDES/^XTMP("APCDFC",$J,APCDPROV,APCDSORT,APCDDATE))\1
S APCDSUM(APCDPROV,"#DEC")=$G(APCDSUM(APCDPROV,"#DEC"))+APCDVDES
W !?25,APCDWDAT,?42,$J(^XTMP("APCDFC",$J,APCDPROV,APCDSORT,APCDDATE),6),?52,$J(APCDVDES,7),?65,$J(APCDAVG,6)
S APCDSUM(APCDPROV,"#FORMS")=$G(APCDSUM(APCDPROV,"#FORMS"))+^XTMP("APCDFC",$J,APCDPROV,APCDSORT,APCDDATE)
I APCDSUBV D
. W !?27,"Visit Dates Processed:"
. S APCDVDAT=0 F S APCDVDAT=$O(^XTMP("APCDFC",$J,APCDPROV,APCDSORT,"VISIT DATE",APCDDATE,APCDVDAT)) Q:APCDVDAT'=+APCDVDAT!($D(APCDQUIT)) D
.. I $Y>(IOSL-5) D HEAD Q:$D(APCDQUIT)
.. W !?27,$$FMTE^XLFDT(APCDVDAT),?42,$J(^XTMP("APCDFC",$J,APCDPROV,APCDSORT,"VISIT DATE",APCDDATE,APCDVDAT),6)
.. Q
Q:$D(APCDQUIT)
S APCDSUB=APCDSUB+^XTMP("APCDFC",$J,APCDPROV,APCDSORT,APCDDATE),APCDTOT=APCDTOT+^XTMP("APCDFC",$J,APCDPROV,APCDSORT,APCDDATE),APCDDESU=APCDDESU+APCDVDES,APCDTDES=APCDTDES+APCDVDES
S APCDFC("DAYS",APCDPROV)=APCDFC("DAYS",APCDPROV)+1
Q
SUMMPAGE ;
I $E(IOST)="C",IO=IO(0) W ! S DIR(0)="EO" D ^DIR K DIR I Y=0!(Y="^")!($D(DTOUT)) S APCDQUIT="" Q
W:$D(IOF) @IOF S APCDPG=APCDPG+1
W !?55,$$FMTE^XLFDT(DT),?70,"Page ",APCDPG
W !?20,"SUMMARY OF FORMS KEYED BY ALL OPERATORS"
W !?15,"VISIT POSTING DATES: ",APCDBDD," TO ",APCDEDD,!
W ?22,"# days",?29,"# of",?36,"%",?45,"Avg #",?56,"Avg # dep",?68,"Avg # dep"
W !?5,"Operator",?22,"of D/E",?29,"forms",?36,"workload",?45,"forms/day",?56,"ent/day",?68,"ent/form"
W !,APCD80S
;S X="" F S X=$O(APCDFC("FORMS",X)) Q:X="" W !,X,?32,$J(APCDFC("FORMS",X),8),?40,$J((APCDFC("FORMS",X)/APCDFC("DAYS",X)),8,1),?51,$J(((APCDFC("FORMS",X)/APCDTOT)*100),8,1),?67,APCDFC("AVG DEC",X)
S X=0 F S X=$O(APCDSUM(X)) Q:X="" W !,$E(X,1,20),?22,$J(APCDSUM(X,"#DAYS"),6),?29,$J(APCDSUM(X,"#FORMS"),6),?36,$J(((APCDSUM(X,"#FORMS")/APCDTOT)*100),8,1) D
.W ?45,$J((APCDSUM(X,"#FORMS")/APCDSUM(X,"#DAYS")),8,1)
.W ?56,$J((APCDSUM(X,"#DEC")/APCDSUM(X,"#DAYS")),8,1)
.W ?67,$J((APCDSUM(X,"#DEC")/APCDSUM(X,"#FORMS")),8,1)
W !?29,"--------",!?27,$J(APCDTOT,8)
Q
HEAD I 'APCDPG G HEAD1
I $E(IOST)="C",IO=IO(0) W ! S DIR(0)="EO" D ^DIR K DIR I Y=0!(Y="^")!($D(DTOUT)) S APCDQUIT="" Q
HEAD1 ;
W @IOF S APCDPG=APCDPG+1
W !?55,$$FMTE^XLFDT(DT),?70,"Page ",APCDPG,!
S APCDLENG=$L($P(^DIC(4,DUZ(2),0),U))
W ?((80-APCDLENG)/2),$P(^DIC(4,DUZ(2),0),U),!
S APCDLENG=37+$L(APCDSRT)
I APCDSRT]"" W ?((80-APCDLENG)/2),"NUMBER OF FORMS KEYED SUBTOTALED BY ",APCDSRT,!
I APCDSRT="" W ?29,"NUMBER OF FORMS KEYED",!
S APCDLENG=21+$L(APCDPROV)
W ?((80-APCDLENG)/2),"DATE ENTRY OPERATOR: ",APCDPROV,!
W ?15,"VISIT POSTING DATES: ",APCDBDD," TO ",APCDEDD,!
W !,APCDSRT,?25,"POSTING DATE",?40,"# FORMS",?50,"# DEP ENT",?63,"AVG # DEP ENT",!
W APCD80S,!
Q
APCDFCP ; IHS/CMI/LAB - print apc report by prov disc ;
+1 ;;2.0;IHS PCC SUITE;**7**;MAY 14, 2009
+2 ;
START ;
+1 KILL APCDSUM
+2 SET APCD80S="-------------------------------------------------------------------------------"
SET APCDPG=0
+3 SET Y=APCDBD
DO DD^%DT
SET APCDBDD=Y
SET Y=APCDED
DO DD^%DT
SET APCDEDD=Y
+4 SET (APCDTOT,APCDPROV,APCDTDES)=0
+5 KILL APCDQUIT
+6 IF '$DATA(^XTMP("APCDFC",$JOB))
SET APCDPROV="NONE TO REPORT"
DO HEAD
GOTO DONE
+7 FOR
SET APCDPROV=$ORDER(^XTMP("APCDFC",$JOB,APCDPROV))
IF APCDPROV=""!($DATA(APCDQUIT))
QUIT
DO HEAD
IF $DATA(APCDQUIT)
QUIT
DO SORT
+8 IF $DATA(APCDQUIT)
GOTO DONE
+9 IF $Y>(IOSL-5)
DO HEAD
IF $DATA(APCDQUIT)
GOTO DONE
+10 WRITE !?42,"------",?52,"-------",?65,"------",!
+11 WRITE ?5,"Grand Total for ALL Operators:",?42,$JUSTIFY(APCDTOT,6),?52,$JUSTIFY(APCDTDES,7)
SET APCDAVG=APCDTDES/APCDTOT
WRITE ?65,$JUSTIFY(APCDAVG,6,1)
+12 DO SUMMPAGE
DONE IF $DATA(APCDET)
SET APCDTS=(86400*($PIECE(APCDET,",")-$PIECE(APCDBT,",")))+($PIECE(APCDET,",",2)-$PIECE(APCDBT,",",2))
SET APCDH=$PIECE(APCDTS/3600,".")
IF APCDH=""
SET APCDH=0
+1 SET APCDTS=APCDTS-(APCDH*3600)
SET APCDM=$PIECE(APCDTS/60,".")
IF APCDM=""
SET APCDM=0
SET APCDTS=APCDTS-(APCDM*60)
SET APCDS=APCDTS
WRITE !!,"RUN TIME (H.M.S): ",APCDH,".",APCDM,".",APCDS
+2 IF $EXTRACT(IOST)="C"
IF IO=IO(0)
SET DIR(0)="E"
DO ^DIR
KILL DIR
+3 IF $DATA(IOF)
WRITE @IOF
+4 QUIT
SORT ;
+1 SET (APCDSUB,APCDDESU)=0
SET APCDFC("DAYS",APCDPROV)=0
+2 SET APCDSORT=""
FOR
SET APCDSORT=$ORDER(^XTMP("APCDFC",$JOB,APCDPROV,APCDSORT))
IF APCDSORT=""!($DATA(APCDQUIT))
QUIT
DO SORT1
+3 WRITE !?42,"------",?52,"-------",?65,"------",!
+4 WRITE ?5,"Totals for ",APCDPROV,?42,$JUSTIFY(APCDSUB,6),?52,$JUSTIFY(APCDDESU,7)
IF APCDSUB
WRITE ?65,$JUSTIFY((APCDDESU/APCDSUB),6,1)
+5 SET APCDFC("FORMS",APCDPROV)=APCDSUB
+6 SET APCDFC("AVG DEC",APCDPROV)=$JUSTIFY((APCDDESU/APCDSUB),6,1)
+7 QUIT
SORT1 ;
+1 IF $Y>(IOSL-6)
DO HEAD
IF $DATA(APCDQUIT)
QUIT
+2 WRITE !,$SELECT(APCDSRT]"":APCDSORT,1:"")
+3 SET APCDDATE=0
FOR
SET APCDDATE=$ORDER(^XTMP("APCDFC",$JOB,APCDPROV,APCDSORT,APCDDATE))
IF APCDDATE'=+APCDDATE!($DATA(APCDQUIT))
QUIT
DO WRITE
+4 QUIT
+5 ;
WRITE ;
+1 SET APCDSUM(APCDPROV,"#DAYS")=$GET(APCDSUM(APCDPROV,"#DAYS"))+1
+2 SET Y=APCDDATE
DO DD^%DT
SET APCDWDAT=Y
+3 IF $Y>(IOSL-5)
DO HEAD
IF $DATA(APCDQUIT)
QUIT
+4 SET APCDVDES=^XTMP("APCDFC",$JOB,APCDPROV,APCDSORT,"DEP COUNT",APCDDATE)
SET APCDAVG=(APCDVDES/^XTMP("APCDFC",$JOB,APCDPROV,APCDSORT,APCDDATE))\1
+5 SET APCDSUM(APCDPROV,"#DEC")=$GET(APCDSUM(APCDPROV,"#DEC"))+APCDVDES
+6 WRITE !?25,APCDWDAT,?42,$JUSTIFY(^XTMP("APCDFC",$JOB,APCDPROV,APCDSORT,APCDDATE),6),?52,$JUSTIFY(APCDVDES,7),?65,$JUSTIFY(APCDAVG,6)
+7 SET APCDSUM(APCDPROV,"#FORMS")=$GET(APCDSUM(APCDPROV,"#FORMS"))+^XTMP("APCDFC",$JOB,APCDPROV,APCDSORT,APCDDATE)
+8 IF APCDSUBV
Begin DoDot:1
+9 WRITE !?27,"Visit Dates Processed:"
+10 SET APCDVDAT=0
FOR
SET APCDVDAT=$ORDER(^XTMP("APCDFC",$JOB,APCDPROV,APCDSORT,"VISIT DATE",APCDDATE,APCDVDAT))
IF APCDVDAT'=+APCDVDAT!($DATA(APCDQUIT))
QUIT
Begin DoDot:2
+11 IF $Y>(IOSL-5)
DO HEAD
IF $DATA(APCDQUIT)
QUIT
+12 WRITE !?27,$$FMTE^XLFDT(APCDVDAT),?42,$JUSTIFY(^XTMP("APCDFC",$JOB,APCDPROV,APCDSORT,"VISIT DATE",APCDDATE,APCDVDAT),6)
+13 QUIT
End DoDot:2
End DoDot:1
+14 IF $DATA(APCDQUIT)
QUIT
+15 SET APCDSUB=APCDSUB+^XTMP("APCDFC",$JOB,APCDPROV,APCDSORT,APCDDATE)
SET APCDTOT=APCDTOT+^XTMP("APCDFC",$JOB,APCDPROV,APCDSORT,APCDDATE)
SET APCDDESU=APCDDESU+APCDVDES
SET APCDTDES=APCDTDES+APCDVDES
+16 SET APCDFC("DAYS",APCDPROV)=APCDFC("DAYS",APCDPROV)+1
+17 QUIT
SUMMPAGE ;
+1 IF $EXTRACT(IOST)="C"
IF IO=IO(0)
WRITE !
SET DIR(0)="EO"
DO ^DIR
KILL DIR
IF Y=0!(Y="^")!($DATA(DTOUT))
SET APCDQUIT=""
QUIT
+2 IF $DATA(IOF)
WRITE @IOF
SET APCDPG=APCDPG+1
+3 WRITE !?55,$$FMTE^XLFDT(DT),?70,"Page ",APCDPG
+4 WRITE !?20,"SUMMARY OF FORMS KEYED BY ALL OPERATORS"
+5 WRITE !?15,"VISIT POSTING DATES: ",APCDBDD," TO ",APCDEDD,!
+6 WRITE ?22,"# days",?29,"# of",?36,"%",?45,"Avg #",?56,"Avg # dep",?68,"Avg # dep"
+7 WRITE !?5,"Operator",?22,"of D/E",?29,"forms",?36,"workload",?45,"forms/day",?56,"ent/day",?68,"ent/form"
+8 WRITE !,APCD80S
+9 ;S X="" F S X=$O(APCDFC("FORMS",X)) Q:X="" W !,X,?32,$J(APCDFC("FORMS",X),8),?40,$J((APCDFC("FORMS",X)/APCDFC("DAYS",X)),8,1),?51,$J(((APCDFC("FORMS",X)/APCDTOT)*100),8,1),?67,APCDFC("AVG DEC",X)
+10 SET X=0
FOR
SET X=$ORDER(APCDSUM(X))
IF X=""
QUIT
WRITE !,$EXTRACT(X,1,20),?22,$JUSTIFY(APCDSUM(X,"#DAYS"),6),?29,$JUSTIFY(APCDSUM(X,"#FORMS"),6),?36,$JUSTIFY(((APCDSUM(X,"#FORMS")/APCDTOT)*100),8,1)
Begin DoDot:1
+11 WRITE ?45,$JUSTIFY((APCDSUM(X,"#FORMS")/APCDSUM(X,"#DAYS")),8,1)
+12 WRITE ?56,$JUSTIFY((APCDSUM(X,"#DEC")/APCDSUM(X,"#DAYS")),8,1)
+13 WRITE ?67,$JUSTIFY((APCDSUM(X,"#DEC")/APCDSUM(X,"#FORMS")),8,1)
End DoDot:1
+14 WRITE !?29,"--------",!?27,$JUSTIFY(APCDTOT,8)
+15 QUIT
HEAD IF 'APCDPG
GOTO HEAD1
+1 IF $EXTRACT(IOST)="C"
IF IO=IO(0)
WRITE !
SET DIR(0)="EO"
DO ^DIR
KILL DIR
IF Y=0!(Y="^")!($DATA(DTOUT))
SET APCDQUIT=""
QUIT
HEAD1 ;
+1 WRITE @IOF
SET APCDPG=APCDPG+1
+2 WRITE !?55,$$FMTE^XLFDT(DT),?70,"Page ",APCDPG,!
+3 SET APCDLENG=$LENGTH($PIECE(^DIC(4,DUZ(2),0),U))
+4 WRITE ?((80-APCDLENG)/2),$PIECE(^DIC(4,DUZ(2),0),U),!
+5 SET APCDLENG=37+$LENGTH(APCDSRT)
+6 IF APCDSRT]""
WRITE ?((80-APCDLENG)/2),"NUMBER OF FORMS KEYED SUBTOTALED BY ",APCDSRT,!
+7 IF APCDSRT=""
WRITE ?29,"NUMBER OF FORMS KEYED",!
+8 SET APCDLENG=21+$LENGTH(APCDPROV)
+9 WRITE ?((80-APCDLENG)/2),"DATE ENTRY OPERATOR: ",APCDPROV,!
+10 WRITE ?15,"VISIT POSTING DATES: ",APCDBDD," TO ",APCDEDD,!
+11 WRITE !,APCDSRT,?25,"POSTING DATE",?40,"# FORMS",?50,"# DEP ENT",?63,"AVG # DEP ENT",!
+12 WRITE APCD80S,!
+13 QUIT