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

KMPDTP7.m

Go to the documentation of this file.
  1. KMPDTP7 ;OAK/RAK/JML - Real-Time CP Timing Hourly Time-to-Load ;9/1/2015
  1. ;;3.0;Capacity Management Tools;**3**;Jan 15, 2013;Build 42
  1. ;
  1. EN ;-- entry point
  1. N KMPDTTL,POP,X,Y,ZTDESC,ZTRTN,ZTRSAVE,ZTSK,%ZIS
  1. S KMPDTTL=" Real-Time Hourly Coversheet Time-to-Load (TTL) Report "
  1. D HDR^KMPDUTL4(KMPDTTL)
  1. W !
  1. W !?7,"This report displays the hourly average time-to-load value"
  1. W !?7,"for the coversheet at this site over 24 hours."
  1. W !
  1. ;
  1. ; if no data
  1. I ($O(^KMPTMP("KMPDT","ORWCV",""))="")&($O(^KMPTMP("KMPDT","ORWCV-FT",""))="") D Q
  1. .W !!?7,"*** There is currently no data in global ^KMPTMP(""KMPDT"", ***"
  1. ;
  1. ; select output device.
  1. S %ZIS="Q",%ZIS("A")="Device: ",%ZIS("B")="HOME"
  1. W ! D ^%ZIS I POP W !,"No action taken." Q
  1. ; if queued.
  1. I $D(IO("Q")) K IO("Q") D Q
  1. .S ZTDESC=KMPDTTL
  1. .S ZTRTN="EN1^KMPDTP7"
  1. .S ZTSAVE("KMPDTTL")=""
  1. .D ^%ZTLOAD W:$G(ZTSK) !,"Task #",ZTSK
  1. .D EXIT
  1. ;
  1. ; if output to terminal display message.
  1. W:$E(IOST,1,2)="C-" !,"Compiling timing stats..."
  1. D EN1
  1. ;
  1. Q
  1. ;
  1. EN1 ;-- entry point from taskman
  1. K ^TMP($J)
  1. D DATA,PRINT,EXIT
  1. K ^TMP($J)
  1. Q
  1. ;
  1. DATA ;-- compile data
  1. ;
  1. N DATA,DATA1,DATE,DATE1,DELTA,DOT,HOURS,HR,I,QUEUED,TIME
  1. N KMPDSS,DELTA,TOTDELT,HRDATE,COMPLETE
  1. ;
  1. S DOT=1,QUEUED=$D(ZTQUEUED),DATE=$$DT^XLFDT
  1. ; array with hours
  1. S HOURS=$$RLTMHR^KMPDTU11(1,0) Q:HOURS=""
  1. F I=1:1 Q:$P(HOURS,",",I)="" S ^TMP($J,"RPT",DATE,$P(HOURS,",",I))=""
  1. ; collect raw data
  1. F KMPDSS="ORWCV","ORWCV-FT" D
  1. .S I=""
  1. .F S I=$O(^KMPTMP("KMPDT",KMPDSS,I)) Q:I="" S DATA=^(I) I DATA]"" D
  1. ..S DOT=DOT+1 W:'QUEUED&('(DOT#1000)) "."
  1. ..; start/end date/time in fileman format
  1. ..S DATE(1)=$$HTFM^XLFDT($P(DATA,U)),DATE(2)=$$HTFM^XLFDT($P(DATA,U,2))
  1. ..Q:'DATE(1)!('DATE(2))
  1. ..S ^TMP($J,"DATA",I,KMPDSS)=DATA
  1. ; collate raw data - combined FG and BG
  1. S I=""
  1. F S I=$O(^TMP($J,"DATA",I)) Q:I="" D
  1. .S (KMPDSS,DATA1,HRDATE,TOTDELT)=""
  1. .S DELTA=0,COMPLETE=1
  1. .F KMPDSS="ORWCV","ORWCV-FT" D
  1. ..S DATA=$G(^TMP($J,"DATA",I,KMPDSS))
  1. ..Q:DATA=""
  1. ..S DATE(1)=$$HTFM^XLFDT($P(DATA,U)),DATE(2)=$$HTFM^XLFDT($P(DATA,U,2))
  1. ..I DATE(1)>1 S HRDATE=DATE(1)
  1. ..I (DATE(1)<0)!(DATE(2)<0) S COMPLETE=0 Q
  1. ..; get delta
  1. ..S DELTA=$$HDIFF^XLFDT($P(DATA,U,2),$P(DATA,U),2)
  1. ..; date without time
  1. ..S DATE1=$P(DATE(1),".") I 'DATE1 Q
  1. ..S TOTDELT=$G(TOTDELT)+DELTA
  1. .; determine hour
  1. .Q:TOTDELT=""
  1. .Q:HRDATE=""
  1. .S HR=+$E($P(HRDATE,".",2),1,2)
  1. .S HR=$S(HR="":0,HR=24:0,1:HR)
  1. .; calculate min/max/tot/count
  1. .; if delta
  1. .I COMPLETE D
  1. ..; minimum delta
  1. ..I $P(^TMP($J,"RPT",DATE,HR),U,2)=""!(TOTDELT<$P(^TMP($J,"RPT",DATE,HR),U,2)) D
  1. ...S $P(^TMP($J,"RPT",DATE,HR),U,2)=TOTDELT
  1. ..; maximum delta
  1. ..I TOTDELT>$P(^TMP($J,"RPT",DATE,HR),U,3) S $P(^TMP($J,"RPT",DATE,HR),U,3)=TOTDELT
  1. ..; total delta
  1. ..S $P(^TMP($J,"RPT",DATE,HR),U,4)=$P(^TMP($J,"RPT",DATE,HR),U,4)+TOTDELT
  1. ..; count
  1. ..S $P(^TMP($J,"RPT",DATE,HR),U,5)=$P(^TMP($J,"RPT",DATE,HR),U,5)+1
  1. .; if no delta
  1. .E S $P(^TMP($J,"RPT",DATE,HR),U,6)=$P(^TMP($J,"RPT",DATE,HR),U,6)+1
  1. ; calculate average
  1. F HR=1:1 S I=$P(HOURS,",",HR) Q:I="" I $P(^TMP($J,"RPT",DATE,I),U,5) D
  1. .S $P(^TMP($J,"RPT",DATE,I),U)=$P(^TMP($J,"RPT",DATE,I),U,4)/$P(^TMP($J,"RPT",DATE,I),U,5)
  1. Q
  1. ;
  1. PRINT ;-- print data
  1. U IO
  1. D HDR
  1. Q:'$D(^TMP($J))
  1. N CONT,DATE,HR,I,TOTAL
  1. S DATE="",CONT=1
  1. F S DATE=$O(^TMP($J,"RPT",DATE)) Q:'DATE S HR="" D Q:'CONT
  1. .S TOTAL=""
  1. .W !,$$FMTE^XLFDT(DATE,2)
  1. .F S HR=$O(^TMP($J,"RPT",DATE,HR)) Q:HR="" D Q:'CONT
  1. ..; page feed
  1. ..I $Y>(IOSL-3) D CONTINUE^KMPDUTL4("",1,.CONT) Q:'CONT D HDR W !
  1. ..W ?12," ",$S($L(HR)=1:"0",1:""),HR
  1. ..S DATA=^TMP($J,"RPT",DATE,HR)
  1. ..W ?20,$J($FN($P(DATA,U),",",0),10)
  1. ..W ?34,$J($FN($P(DATA,U,2),",",0),10)
  1. ..W ?48,$J($FN($P(DATA,U,3),",",0),10)
  1. ..W ?62,$J($FN($P(DATA,U,5),",",0),10)
  1. ..W !
  1. ..S $P(TOTAL,U)=$P(TOTAL,U)+$P(DATA,U,5)
  1. ..S $P(TOTAL,U,2)=$P(TOTAL,U,2)+$P(DATA,U,6)
  1. .;
  1. .; back to DATE level
  1. .; totals
  1. .W ?62,"----------",!?62,$J($FN(TOTAL,",",0),10),!
  1. .W !?12,"Incomplete: ",$J($FN($P(TOTAL,U,2),",",0),$L($P(TOTAL,U,2))+2),!
  1. .; if another date
  1. .I $O(^TMP($J,"RPT",DATE)) D CONTINUE^KMPDUTL4("",1,.CONT) Q:'CONT D HDR W !
  1. ;
  1. I CONT D
  1. .; legend
  1. .W !!?2,"CV = Coversheet",!?2,"TTL = Time-to-Load"
  1. .; pause if output to terminal
  1. .D CONTINUE^KMPDUTL4("Press RETURN to continue",1)
  1. ;
  1. Q
  1. ;
  1. HDR ;-- print header
  1. W @IOF
  1. S X=$G(KMPDTTL)
  1. W !?(80-$L(X)\2),X
  1. S X=$$FMTE^XLFDT($$DT^XLFDT)
  1. W !?(80-$L(X)\2),X,?61,"Printed: ",$$FMTE^XLFDT(DT,2)
  1. W !
  1. W !?20,"|---------------Seconds---------------|"
  1. W !,"Date",?12,"Hour",?20,"TTL Average",?34,"TTL Minimum",?48,"TTL Maximum",?62,"# of CV Loads"
  1. W !,$$REPEAT^XLFSTR("-",IOM)
  1. ;
  1. Q
  1. ;
  1. EXIT ;-- cleanup on exit
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. D ^%ZISC
  1. K KMPDTTL
  1. Q