- KMPDTU11 ;OAK/RAK/JML - CP Tools Timing Utility ;9/1/2015
- ;;3.0;Capacity Management Tools;**3**;Jan 15, 2013;Build 42
- ;
- RLTMHR(KMPDQIET,KMPDASK,KMPDEF) ;-- extrinsic function - real time hours
- ;-----------------------------------------------------------------------
- ; KMPDQIET... Display output
- ; 0 - display output (not quiet)
- ; 1 - do not display output (quiet)
- ; KMPDASK.... Ask user to select hours
- ; 0 - do not ask user to select
- ; 1 - ask user to select
- ; KMPDEF..... Default
- ; 0 - do not use default
- ; 1 - use time range as default
- ;
- ; Return: List of hours (ie, 1,2,5,6,7...)
- ; "" - no selection made
- ;-----------------------------------------------------------------------
- ;
- S KMPDQIET=+$G(KMPDQIET),KMPDASK=+$G(KMPDASK),KMPDEF=+$G(KMPDEF)
- N DATA,DIR,DOT,HOURS,HR,I,QUEUED,X,Y,KMPDSUB
- W:'KMPDQIET !," ==> building Hours list..."
- F KMPDSUB="ORWCV","ORWCV-FT" D
- .S I="",DOT=0
- .F S I=$O(^KMPTMP("KMPDT",KMPDSUB,I)) Q:I="" S DATA=^(I) I DATA]"" D
- ..S DOT=DOT+1 W:'(DOT#1000)&('KMPDQIET) "."
- ..; change $h to fileman format and get hour
- ..S HR=$E($P($$HTFM^XLFDT($P(DATA,U)),".",2),1,2) S:HR>23 HR="0"
- ..; create HOURS() array
- ..S:HR'="" HOURS(+HR)=""
- ;
- ; if no HOURS() array
- Q:'$D(HOURS) ""
- ;
- ; do not ask user to select hours
- I 'KMPDASK D Q X
- .S (I,X)="" F S I=$O(HOURS(I)) Q:I="" S X=X_I_","
- ;
- ; ask user to select hour(s)
- S DIR(0)="LO^"_$O(HOURS(""))_":"_$O(HOURS("A"),-1)
- S DIR("A")="Select Hour(s)"
- S:KMPDEF DIR("B")=$O(HOURS(""))_"-"_$O(HOURS("A"),-1)
- W ! D ^DIR
- Q $S(Y=""!(Y="^"):"",1:$G(Y(0)))
- ;
- TIMING(KMPDSS,KMPDNODE,KMPDST,KMPDHTM,KMPDUZ,KMPDCL) ;-- start/stop timing stats
- ;--------------------------------------------------------------------
- ; KMPDSS... subscript (free text)
- ; KMPDNODE. node name (free text)
- ; KMPDST... start/stop
- ; 1 - start
- ; 2 - stop
- ; KMPDHTM.. (optional - if not defined the current $h will be used)
- ; time in $h format
- ; KMPDUZ... (optional -if not defined the current duz will be used)
- ; user duz
- ; KMPDCL... (optional - if not defined the current IO("CLNM")) will be used)
- ; client name (free text)
- ;
- ;--------------------------------------------------------------------
- ; quit if timing stats not turned on
- Q:'$G(^KMPTMP("KMPD-CPRS"))
- ; quit if no subscript
- Q:$G(KMPDSS)=""
- ; quit if no node
- Q:$G(KMPDNODE)=""
- ; start/stop
- S KMPDST=+$G(KMPDST)
- Q:KMPDST<1!(KMPDST>2)
- S:'$G(KMPDHTM) KMPDHTM=$H
- S:'$G(KMPDUZ) KMPDUZ=$G(DUZ)
- S:$G(KMPDCL)="" KMPDCL=$G(IO("CLNM"))
- ;
- ; start timing
- S:KMPDST=1 ^KMPTMP("KMPDT",KMPDSS,KMPDNODE)=KMPDHTM_"^^"_KMPDUZ_"^"_KMPDCL
- ; stop timing
- S:KMPDST=2 $P(^KMPTMP("KMPDT",KMPDSS,KMPDNODE),"^",2)=KMPDHTM
- ;
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HKMPDTU11 2877 printed Feb 18, 2025@23:07:18 Page 2
- KMPDTU11 ;OAK/RAK/JML - CP Tools Timing Utility ;9/1/2015
- +1 ;;3.0;Capacity Management Tools;**3**;Jan 15, 2013;Build 42
- +2 ;
- RLTMHR(KMPDQIET,KMPDASK,KMPDEF) ;-- extrinsic function - real time hours
- +1 ;-----------------------------------------------------------------------
- +2 ; KMPDQIET... Display output
- +3 ; 0 - display output (not quiet)
- +4 ; 1 - do not display output (quiet)
- +5 ; KMPDASK.... Ask user to select hours
- +6 ; 0 - do not ask user to select
- +7 ; 1 - ask user to select
- +8 ; KMPDEF..... Default
- +9 ; 0 - do not use default
- +10 ; 1 - use time range as default
- +11 ;
- +12 ; Return: List of hours (ie, 1,2,5,6,7...)
- +13 ; "" - no selection made
- +14 ;-----------------------------------------------------------------------
- +15 ;
- +16 SET KMPDQIET=+$GET(KMPDQIET)
- SET KMPDASK=+$GET(KMPDASK)
- SET KMPDEF=+$GET(KMPDEF)
- +17 NEW DATA,DIR,DOT,HOURS,HR,I,QUEUED,X,Y,KMPDSUB
- +18 if 'KMPDQIET
- WRITE !," ==> building Hours list..."
- +19 FOR KMPDSUB="ORWCV","ORWCV-FT"
- Begin DoDot:1
- +20 SET I=""
- SET DOT=0
- +21 FOR
- SET I=$ORDER(^KMPTMP("KMPDT",KMPDSUB,I))
- if I=""
- QUIT
- SET DATA=^(I)
- IF DATA]""
- Begin DoDot:2
- +22 SET DOT=DOT+1
- if '(DOT#1000)&('KMPDQIET)
- WRITE "."
- +23 ; change $h to fileman format and get hour
- +24 SET HR=$EXTRACT($PIECE($$HTFM^XLFDT($PIECE(DATA,U)),".",2),1,2)
- if HR>23
- SET HR="0"
- +25 ; create HOURS() array
- +26 if HR'=""
- SET HOURS(+HR)=""
- End DoDot:2
- End DoDot:1
- +27 ;
- +28 ; if no HOURS() array
- +29 if '$DATA(HOURS)
- QUIT ""
- +30 ;
- +31 ; do not ask user to select hours
- +32 IF 'KMPDASK
- Begin DoDot:1
- +33 SET (I,X)=""
- FOR
- SET I=$ORDER(HOURS(I))
- if I=""
- QUIT
- SET X=X_I_","
- End DoDot:1
- QUIT X
- +34 ;
- +35 ; ask user to select hour(s)
- +36 SET DIR(0)="LO^"_$ORDER(HOURS(""))_":"_$ORDER(HOURS("A"),-1)
- +37 SET DIR("A")="Select Hour(s)"
- +38 if KMPDEF
- SET DIR("B")=$ORDER(HOURS(""))_"-"_$ORDER(HOURS("A"),-1)
- +39 WRITE !
- DO ^DIR
- +40 QUIT $SELECT(Y=""!(Y="^"):"",1:$GET(Y(0)))
- +41 ;
- TIMING(KMPDSS,KMPDNODE,KMPDST,KMPDHTM,KMPDUZ,KMPDCL) ;-- start/stop timing stats
- +1 ;--------------------------------------------------------------------
- +2 ; KMPDSS... subscript (free text)
- +3 ; KMPDNODE. node name (free text)
- +4 ; KMPDST... start/stop
- +5 ; 1 - start
- +6 ; 2 - stop
- +7 ; KMPDHTM.. (optional - if not defined the current $h will be used)
- +8 ; time in $h format
- +9 ; KMPDUZ... (optional -if not defined the current duz will be used)
- +10 ; user duz
- +11 ; KMPDCL... (optional - if not defined the current IO("CLNM")) will be used)
- +12 ; client name (free text)
- +13 ;
- +14 ;--------------------------------------------------------------------
- +15 ; quit if timing stats not turned on
- +16 if '$GET(^KMPTMP("KMPD-CPRS"))
- QUIT
- +17 ; quit if no subscript
- +18 if $GET(KMPDSS)=""
- QUIT
- +19 ; quit if no node
- +20 if $GET(KMPDNODE)=""
- QUIT
- +21 ; start/stop
- +22 SET KMPDST=+$GET(KMPDST)
- +23 if KMPDST<1!(KMPDST>2)
- QUIT
- +24 if '$GET(KMPDHTM)
- SET KMPDHTM=$HOROLOG
- +25 if '$GET(KMPDUZ)
- SET KMPDUZ=$GET(DUZ)
- +26 if $GET(KMPDCL)=""
- SET KMPDCL=$GET(IO("CLNM"))
- +27 ;
- +28 ; start timing
- +29 if KMPDST=1
- SET ^KMPTMP("KMPDT",KMPDSS,KMPDNODE)=KMPDHTM_"^^"_KMPDUZ_"^"_KMPDCL
- +30 ; stop timing
- +31 if KMPDST=2
- SET $PIECE(^KMPTMP("KMPDT",KMPDSS,KMPDNODE),"^",2)=KMPDHTM
- +32 ;
- +33 QUIT