HLEMST ;ALB/CJM -ListManager Screen for displaying an Event Statistics;12 JUN 1997 10:00 am
;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13,1995
;
EN ;Entry point to viewing a Event Statistics
;Input: EVENT is the ien of an event
;Output: none
;
N IDX,BEGIN
I $G(PROFILE),$D(PROFILE("SITES")),$D(PROFILE("TYPES"))
E N PROFILE S PROFILE=$$PROFILE^HLEMSL() Q:'PROFILE S PROFILE=$$GET^HLEMP(PROFILE,.PROFILE)
S BEGIN=$$ASKBEGIN()
Q:'BEGIN
;
S IDX="^TMP(""HLEM"",$J,""STATISTICS"")"
K @IDX
D WAIT^DICD
D EN^VALM("HLEM DISPLAY STATISTICS")
;
K @IDX
Q
;
;
HDR ;Header code
S VALMHDR(1)="Year Month Day Hour Event Count"
Q
;
INIT ;Init variables and list array
N ARY
S ARY="^TMP($J,""HLSTATS"")"
S VALMSG="USER PROFILE: "_$G(PROFILE("NAME"))_" STARTING: "_$$FMTE^XLFDT(BEGIN)
D SETUP(BEGIN,ARY,.PROFILE)
D DISPLAY(ARY,IDX)
K @ARY
D HDR
S VALMBCK="R"
Q
;
SETUP(START,ARY,PROFILE) ;
;sets up a work array with the required statistics
;START is the starting date
;
N SITE,TYPE,IDX
K @ARY
S SITE=0
S START("YEAR")=1700+(+$E(START,1,3)),START("MONTH")=+$E(START,4,5),START("DAY")=+$E(START,6,7),START("HOUR")=$E($P(START,".",2),1,2)
S IDX="^HLEV(776.4,""AF"")"
F S SITE=$O(@IDX@(SITE)) Q:'SITE D:$G(PROFILE("ALL SITES"))!$D(PROFILE("SITES",SITE))
.S SITE("NAME")=$$STATION^HLEMSU(SITE)
.Q:'$L(SITE("NAME"))
.S $P(SITE("NAME"),"^",3)=SITE
.S TYPE=0
.F S TYPE=$O(@IDX@(SITE,TYPE)) Q:'TYPE D:PROFILE("ALL TYPES")!$D(PROFILE("TYPES",TYPE))
..S TYPE("NAME")=$$CODE^HLEMT(TYPE)
..S:(+TYPE("NAME")=TYPE("NAME")) TYPE("NAME")=$E($P($G(^HLEV(776.3,TYPE,4)),"^"),1,40)
..Q:'$L(TYPE("NAME"))
..N IDX S IDX="^HLEV(776.4,""AF"",SITE,TYPE,""RECEIVED"")"
..D YEAR(.SITE,.TYPE,.START)
Q
;
YEAR(SITE,TYPE,START) ;
N YEAR
S YEAR=START("YEAR")-1
F S YEAR=$O(@IDX@("YEAR",YEAR)) Q:'YEAR D:(YEAR'<START("YEAR"))
.D:(YEAR>START("YEAR"))
..S @ARY@(SITE("NAME"),YEAR)=$G(@ARY@(SITE("NAME"),YEAR))+$G(@IDX@("YEAR",YEAR))
..S @ARY@(SITE("NAME"),YEAR,"TYPE",TYPE("NAME"))=$G(@ARY@(SITE("NAME"),YEAR,"TYPE",TYPE("NAME")))+$G(@IDX@("YEAR",YEAR))
.D MONTH(.SITE,.TYPE,.START,YEAR)
Q
;
MONTH(SITE,TYPE,START,YEAR) ;
N MONTH
S MONTH=START("MONTH")-1
F S MONTH=$O(@IDX@("YEAR",YEAR,"MONTH",MONTH)) Q:'MONTH D:(YEAR>START("YEAR"))!(YEAR=START("YEAR")&(MONTH'<START("MONTH")))
.D:(MONTH>START("MONTH"))!(YEAR>START("YEAR"))
..S @ARY@(SITE("NAME"),YEAR,MONTH)=$G(@ARY@(SITE("NAME"),YEAR,MONTH))+$G(@IDX@("YEAR",YEAR,"MONTH",MONTH))
..S @ARY@(SITE("NAME"),YEAR,MONTH,"TYPE",TYPE("NAME"))=$G(@ARY@(SITE("NAME"),YEAR,MONTH,"TYPE",TYPE("NAME")))+$G(@IDX@("YEAR",YEAR,"MONTH",MONTH))
.D DAY(.SITE,.TYPE,.START,YEAR,MONTH)
Q
;
DAY(SITE,TYPE,START,YEAR,MONTH) ;
N DAY
S DAY=0
F S DAY=$O(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY)) Q:'DAY Q:START>((YEAR-1700)_$$RJ^XLFSTR(MONTH,2,"0")_$$RJ^XLFSTR(DAY,2,"0")) D
.S @ARY@(SITE("NAME"),YEAR,MONTH,DAY)=$G(@ARY@(SITE("NAME"),YEAR,MONTH,DAY))+$G(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY))
.S @ARY@(SITE("NAME"),YEAR,MONTH,DAY,"TYPE",TYPE("NAME"))=$G(@ARY@(SITE("NAME"),YEAR,MONTH,DAY,"TYPE",TYPE("NAME")))+$G(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY))
.D HOUR(.SITE,.TYPE,.START,YEAR,MONTH,DAY)
Q
;
HOUR(SITE,TYPE,START,YEAR,MONTH,DAY) ;
N HOUR
S HOUR=""
F S HOUR=$O(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY,"HOUR",HOUR)) Q:(HOUR="") D:(HOUR'<START("HOUR"))
.S @ARY@(SITE("NAME"),YEAR,MONTH,DAY,HOUR)=$G(@ARY@(SITE("NAME"),YEAR,MONTH,DAY,HOUR))+$G(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY,"HOUR",HOUR))
.S @ARY@(SITE("NAME"),YEAR,MONTH,DAY,HOUR,"TYPE",TYPE("NAME"))=$G(@ARY@(SITE("NAME"),YEAR,MONTH,DAY,HOUR,"TYPE",TYPE("NAME")))+$G(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY,"HOUR",HOUR))
Q
;
DISPLAY(ARY,IDX) ;Build event statistics screen
N YEAR,SITE
D CLEAN^VALM10
K @IDX,VALMHDR
S VALMBG=1,VALMCNT=0
;
S SITE=""
I '$O(@ARY@(SITE)),$$SET^HLEMSU(1,"There are no statistics for this profile and date range!",10,"H")
E F S SITE=$O(@ARY@(SITE)) Q:(SITE="") D
.I VALMCNT,$$SET^HLEMSU(VALMCNT,$G(@IDX@(VALMCNT,0)),1,"U")
.S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($P(SITE,"^"),30)_$$LJ^XLFSTR("Station #: "_$P(SITE,"^",2),50),1,"H")
.S @IDX@("SITE",$P(SITE,"^"))=VALMCNT
.S @IDX@("SITE",$P(SITE,"^",3))=VALMCNT
.S YEAR=";"
.F S YEAR=$O(@ARY@(SITE,YEAR),-1) Q:'YEAR D DYEAR(ARY,IDX,SITE,YEAR)
;Build header
D HDR
Q
;
DYEAR(ARY,IDX,SITE,YEAR) ;
N EVENT,MONTH
S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(YEAR,71)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR)),20),1)
S EVENT=""
F S EVENT=$O(@ARY@(SITE,YEAR,"TYPE",EVENT)) Q:EVENT="" D
.S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,"TYPE",EVENT)),20),32)
S MONTH=";"
F S MONTH=$O(@ARY@(SITE,YEAR,MONTH),-1) Q:(MONTH="") D
.D DMONTH(ARY,IDX,SITE,YEAR,MONTH)
Q
;
DMONTH(ARY,IDX,SITE,YEAR,MONTH) ;
N EVENT,DAY
S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($$MONTHTXT(MONTH),64)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH)),20),8)
S EVENT=""
F S EVENT=$O(@ARY@(SITE,YEAR,MONTH,"TYPE",EVENT)) Q:EVENT="" D
.S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH,"TYPE",EVENT)),20),32)
S DAY=";"
F S DAY=$O(@ARY@(SITE,YEAR,MONTH,DAY),-1) D Q:'DAY
.D:DAY DDAY(ARY,IDX,SITE,YEAR,MONTH,DAY)
Q
;
DDAY(ARY,IDX,SITE,YEAR,MONTH,DAY) ;
N EVENT,HOUR
S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($$DAYTXT(DAY),54)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH,DAY)),20),18)
S EVENT=""
F S EVENT=$O(@ARY@(SITE,YEAR,MONTH,DAY,"TYPE",EVENT)) Q:EVENT="" D
.S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH,DAY,"TYPE",EVENT)),20),32)
S HOUR=";"
F S HOUR=$O(@ARY@(SITE,YEAR,MONTH,DAY,HOUR),-1) Q:'HOUR D DHOUR(ARY,IDX,SITE,YEAR,MONTH,DAY,HOUR)
Q
;
DHOUR(ARY,IDX,SITE,YEAR,MONTH,DAY,HOUR) ;
N EVENT
S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($$HOURTXT(HOUR),48)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH,DAY,HOUR)),20),24)
S EVENT=""
F S EVENT=$O(@ARY@(SITE,YEAR,MONTH,DAY,HOUR,"TYPE",EVENT)) Q:EVENT="" D
.S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH,DAY,HOUR,"TYPE",EVENT)),20),32)
Q
;
HELP ;Help code
S X="?" D DISP^XQORM1 W !!
Q
;
EXIT ;Exit code
D CLEAN^VALM10
D CLEAR^VALM1
K @IDX
Q
;
EXPND ;Expand code
Q
;
X(FIELD,VALUE) ;
;changes a field value in file 774.4 to external form
Q $$EXTERNAL^DILFD(776.4,FIELD,"F",VALUE)
;
ASKBEGIN(DEFAULT) ;
;Description: Asks the user to enter a beginning date.
;Input: DEFAULT - the suggested default dt/time (optional)
;Output: Returns the date as the function value, or 0 if the user does n to select a date
;
N DIR,X,Y
S DIR(0)="D^::TX"
S DIR("A")="Enter the begining date"
S DIR("B")=$$FMTE^XLFDT($S($G(DEFAULT):DEFAULT,1:$$FMADD^XLFDT(DT,-1)))
S DIR("?")="Please enter the earliest date for which you would like to see Event Logging Statistics."
D ^DIR
Q:$D(DIRUT) 0
Q Y
;
MONTHTXT(M) ;
;Given the month as a number 1-12, returns the name
Q $S(M=1:"January",M=2:"February",M=3:"March",M=4:"April",M=5:"May",M=6:"June",M=7:"July",M=8:"August",M=9:"September",M=10:"October",M=11:"November",M=12:"December",1:"Unknown")
;
DAYTXT(D) ;
;Given the day as a number, returns the day also as a number, but with
;a suffix of either "st","nd","rd","th"
I D>9,D<20 Q D_"th"
N DIGIT
S DIGIT=$E(D,$L(D))
Q D_$S(DIGIT=1:"st",DIGIT=2:"nd",DIGIT=3:"rd",1:"th")
;
HOURTXT(H) ;
I H<12 Q H_"am"
I H=12 Q "12N"
I H>12 Q (H-12)_"pm"
Q
;
SELECT ;Allows the user to change profiles, then rebuilds the Event Log Statistics screen
N PROF,ASKBEGIN
D FULL^VALM1
S PROF=$$SELECT^HLEMP1($G(DUZ),20)
I PROF,PROF'=$G(PROFILE) D
.S ASKBEGIN=$$ASKBEGIN($G(BEGIN))
.S:ASKBEGIN BEGIN=ASKBEGIN
.S PROFILE=$$GET^HLEMP(PROF,.PROFILE)
.D INIT^HLEMST
S VALMBCK="R"
Q
;
CHNGDATE ;Allows the user to change the starting date, then rebuilds the Event Log Statistics screen
N ASKBEGIN
S ASKBEGIN=$$ASKBEGIN($G(BEGIN))
I ASKBEGIN D
.S BEGIN=ASKBEGIN
.D INIT^HLEMST
S VALMBCK="R"
Q
HLEMST ;ALB/CJM -ListManager Screen for displaying an Event Statistics;12 JUN 1997 10:00 am
+1 ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13,1995
+2 ;
EN ;Entry point to viewing a Event Statistics
+1 ;Input: EVENT is the ien of an event
+2 ;Output: none
+3 ;
+4 NEW IDX,BEGIN
+5 IF $GET(PROFILE)
IF $DATA(PROFILE("SITES"))
IF $DATA(PROFILE("TYPES"))
+6 IF '$TEST
NEW PROFILE
SET PROFILE=$$PROFILE^HLEMSL()
IF 'PROFILE
QUIT
SET PROFILE=$$GET^HLEMP(PROFILE,.PROFILE)
+7 SET BEGIN=$$ASKBEGIN()
+8 IF 'BEGIN
QUIT
+9 ;
+10 SET IDX="^TMP(""HLEM"",$J,""STATISTICS"")"
+11 KILL @IDX
+12 DO WAIT^DICD
+13 DO EN^VALM("HLEM DISPLAY STATISTICS")
+14 ;
+15 KILL @IDX
+16 QUIT
+17 ;
+18 ;
HDR ;Header code
+1 SET VALMHDR(1)="Year Month Day Hour Event Count"
+2 QUIT
+3 ;
INIT ;Init variables and list array
+1 NEW ARY
+2 SET ARY="^TMP($J,""HLSTATS"")"
+3 SET VALMSG="USER PROFILE: "_$GET(PROFILE("NAME"))_" STARTING: "_$$FMTE^XLFDT(BEGIN)
+4 DO SETUP(BEGIN,ARY,.PROFILE)
+5 DO DISPLAY(ARY,IDX)
+6 KILL @ARY
+7 DO HDR
+8 SET VALMBCK="R"
+9 QUIT
+10 ;
SETUP(START,ARY,PROFILE) ;
+1 ;sets up a work array with the required statistics
+2 ;START is the starting date
+3 ;
+4 NEW SITE,TYPE,IDX
+5 KILL @ARY
+6 SET SITE=0
+7 SET START("YEAR")=1700+(+$EXTRACT(START,1,3))
SET START("MONTH")=+$EXTRACT(START,4,5)
SET START("DAY")=+$EXTRACT(START,6,7)
SET START("HOUR")=$EXTRACT($PIECE(START,".",2),1,2)
+8 SET IDX="^HLEV(776.4,""AF"")"
+9 FOR
SET SITE=$ORDER(@IDX@(SITE))
IF 'SITE
QUIT
IF $GET(PROFILE("ALL SITES"))!$DATA(PROFILE("SITES",SITE))
Begin DoDot:1
+10 SET SITE("NAME")=$$STATION^HLEMSU(SITE)
+11 IF '$LENGTH(SITE("NAME"))
QUIT
+12 SET $PIECE(SITE("NAME"),"^",3)=SITE
+13 SET TYPE=0
+14 FOR
SET TYPE=$ORDER(@IDX@(SITE,TYPE))
IF 'TYPE
QUIT
IF PROFILE("ALL TYPES")!$DATA(PROFILE("TYPES",TYPE))
Begin DoDot:2
+15 SET TYPE("NAME")=$$CODE^HLEMT(TYPE)
+16 IF (+TYPE("NAME")=TYPE("NAME"))
SET TYPE("NAME")=$EXTRACT($PIECE($GET(^HLEV(776.3,TYPE,4)),"^"),1,40)
+17 IF '$LENGTH(TYPE("NAME"))
QUIT
+18 NEW IDX
SET IDX="^HLEV(776.4,""AF"",SITE,TYPE,""RECEIVED"")"
+19 DO YEAR(.SITE,.TYPE,.START)
End DoDot:2
End DoDot:1
+20 QUIT
+21 ;
YEAR(SITE,TYPE,START) ;
+1 NEW YEAR
+2 SET YEAR=START("YEAR")-1
+3 FOR
SET YEAR=$ORDER(@IDX@("YEAR",YEAR))
IF 'YEAR
QUIT
IF (YEAR'<START("YEAR"))
Begin DoDot:1
+4 IF (YEAR>START("YEAR"))
Begin DoDot:2
+5 SET @ARY@(SITE("NAME"),YEAR)=$GET(@ARY@(SITE("NAME"),YEAR))+$GET(@IDX@("YEAR",YEAR))
+6 SET @ARY@(SITE("NAME"),YEAR,"TYPE",TYPE("NAME"))=$GET(@ARY@(SITE("NAME"),YEAR,"TYPE",TYPE("NAME")))+$GET(@IDX@("YEAR",YEAR))
End DoDot:2
+7 DO MONTH(.SITE,.TYPE,.START,YEAR)
End DoDot:1
+8 QUIT
+9 ;
MONTH(SITE,TYPE,START,YEAR) ;
+1 NEW MONTH
+2 SET MONTH=START("MONTH")-1
+3 FOR
SET MONTH=$ORDER(@IDX@("YEAR",YEAR,"MONTH",MONTH))
IF 'MONTH
QUIT
IF (YEAR>START("YEAR"))!(YEAR=START("YEAR")&(MONTH'<START("MONTH")))
Begin DoDot:1
+4 IF (MONTH>START("MONTH"))!(YEAR>START("YEAR"))
Begin DoDot:2
+5 SET @ARY@(SITE("NAME"),YEAR,MONTH)=$GET(@ARY@(SITE("NAME"),YEAR,MONTH))+$GET(@IDX@("YEAR",YEAR,"MONTH",MONTH))
+6 SET @ARY@(SITE("NAME"),YEAR,MONTH,"TYPE",TYPE("NAME"))=$GET(@ARY@(SITE("NAME"),YEAR,MONTH,"TYPE",TYPE("NAME")))+$GET(@IDX@("YEAR",YEAR,"MONTH",MONTH))
End DoDot:2
+7 DO DAY(.SITE,.TYPE,.START,YEAR,MONTH)
End DoDot:1
+8 QUIT
+9 ;
DAY(SITE,TYPE,START,YEAR,MONTH) ;
+1 NEW DAY
+2 SET DAY=0
+3 FOR
SET DAY=$ORDER(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY))
IF 'DAY
QUIT
IF START>((YEAR-1700)_$$RJ^XLFSTR(MONTH,2,"0")_$$RJ^XLFSTR(DAY,2,"0"))
QUIT
Begin DoDot:1
+4 SET @ARY@(SITE("NAME"),YEAR,MONTH,DAY)=$GET(@ARY@(SITE("NAME"),YEAR,MONTH,DAY))+$GET(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY))
+5 SET @ARY@(SITE("NAME"),YEAR,MONTH,DAY,"TYPE",TYPE("NAME"))=$GET(@ARY@(SITE("NAME"),YEAR,MONTH,DAY,"TYPE",TYPE("NAME")))+$GET(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY))
+6 DO HOUR(.SITE,.TYPE,.START,YEAR,MONTH,DAY)
End DoDot:1
+7 QUIT
+8 ;
HOUR(SITE,TYPE,START,YEAR,MONTH,DAY) ;
+1 NEW HOUR
+2 SET HOUR=""
+3 FOR
SET HOUR=$ORDER(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY,"HOUR",HOUR))
IF (HOUR="")
QUIT
IF (HOUR'<START("HOUR"))
Begin DoDot:1
+4 SET @ARY@(SITE("NAME"),YEAR,MONTH,DAY,HOUR)=$GET(@ARY@(SITE("NAME"),YEAR,MONTH,DAY,HOUR))+$GET(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY,"HOUR",HOUR))
+5 SET @ARY@(SITE("NAME"),YEAR,MONTH,DAY,HOUR,"TYPE",TYPE("NAME"))=$GET(@ARY@(SITE("NAME"),YEAR,MONTH,DAY,HOUR,"TYPE",TYPE("NAME")))+$GET(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY,"HOUR",HOUR))
End DoDot:1
+6 QUIT
+7 ;
DISPLAY(ARY,IDX) ;Build event statistics screen
+1 NEW YEAR,SITE
+2 DO CLEAN^VALM10
+3 KILL @IDX,VALMHDR
+4 SET VALMBG=1
SET VALMCNT=0
+5 ;
+6 SET SITE=""
+7 IF '$ORDER(@ARY@(SITE))
IF $$SET^HLEMSU(1,"There are no statistics for this profile and date range!",10,"H")
+8 IF '$TEST
FOR
SET SITE=$ORDER(@ARY@(SITE))
IF (SITE="")
QUIT
Begin DoDot:1
+9 IF VALMCNT
IF $$SET^HLEMSU(VALMCNT,$GET(@IDX@(VALMCNT,0)),1,"U")
+10 SET VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($PIECE(SITE,"^"),30)_$$LJ^XLFSTR("Station #: "_$PIECE(SITE,"^",2),50),1,"H")
+11 SET @IDX@("SITE",$PIECE(SITE,"^"))=VALMCNT
+12 SET @IDX@("SITE",$PIECE(SITE,"^",3))=VALMCNT
+13 SET YEAR=";"
+14 FOR
SET YEAR=$ORDER(@ARY@(SITE,YEAR),-1)
IF 'YEAR
QUIT
DO DYEAR(ARY,IDX,SITE,YEAR)
End DoDot:1
+15 ;Build header
+16 DO HDR
+17 QUIT
+18 ;
DYEAR(ARY,IDX,SITE,YEAR) ;
+1 NEW EVENT,MONTH
+2 SET VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(YEAR,71)_$$LJ^XLFSTR($GET(@ARY@(SITE,YEAR)),20),1)
+3 SET EVENT=""
+4 FOR
SET EVENT=$ORDER(@ARY@(SITE,YEAR,"TYPE",EVENT))
IF EVENT=""
QUIT
Begin DoDot:1
+5 SET VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($GET(@ARY@(SITE,YEAR,"TYPE",EVENT)),20),32)
End DoDot:1
+6 SET MONTH=";"
+7 FOR
SET MONTH=$ORDER(@ARY@(SITE,YEAR,MONTH),-1)
IF (MONTH="")
QUIT
Begin DoDot:1
+8 DO DMONTH(ARY,IDX,SITE,YEAR,MONTH)
End DoDot:1
+9 QUIT
+10 ;
DMONTH(ARY,IDX,SITE,YEAR,MONTH) ;
+1 NEW EVENT,DAY
+2 SET VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($$MONTHTXT(MONTH),64)_$$LJ^XLFSTR($GET(@ARY@(SITE,YEAR,MONTH)),20),8)
+3 SET EVENT=""
+4 FOR
SET EVENT=$ORDER(@ARY@(SITE,YEAR,MONTH,"TYPE",EVENT))
IF EVENT=""
QUIT
Begin DoDot:1
+5 SET VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($GET(@ARY@(SITE,YEAR,MONTH,"TYPE",EVENT)),20),32)
End DoDot:1
+6 SET DAY=";"
+7 FOR
SET DAY=$ORDER(@ARY@(SITE,YEAR,MONTH,DAY),-1)
Begin DoDot:1
+8 IF DAY
DO DDAY(ARY,IDX,SITE,YEAR,MONTH,DAY)
End DoDot:1
IF 'DAY
QUIT
+9 QUIT
+10 ;
DDAY(ARY,IDX,SITE,YEAR,MONTH,DAY) ;
+1 NEW EVENT,HOUR
+2 SET VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($$DAYTXT(DAY),54)_$$LJ^XLFSTR($GET(@ARY@(SITE,YEAR,MONTH,DAY)),20),18)
+3 SET EVENT=""
+4 FOR
SET EVENT=$ORDER(@ARY@(SITE,YEAR,MONTH,DAY,"TYPE",EVENT))
IF EVENT=""
QUIT
Begin DoDot:1
+5 SET VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($GET(@ARY@(SITE,YEAR,MONTH,DAY,"TYPE",EVENT)),20),32)
End DoDot:1
+6 SET HOUR=";"
+7 FOR
SET HOUR=$ORDER(@ARY@(SITE,YEAR,MONTH,DAY,HOUR),-1)
IF 'HOUR
QUIT
DO DHOUR(ARY,IDX,SITE,YEAR,MONTH,DAY,HOUR)
+8 QUIT
+9 ;
DHOUR(ARY,IDX,SITE,YEAR,MONTH,DAY,HOUR) ;
+1 NEW EVENT
+2 SET VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($$HOURTXT(HOUR),48)_$$LJ^XLFSTR($GET(@ARY@(SITE,YEAR,MONTH,DAY,HOUR)),20),24)
+3 SET EVENT=""
+4 FOR
SET EVENT=$ORDER(@ARY@(SITE,YEAR,MONTH,DAY,HOUR,"TYPE",EVENT))
IF EVENT=""
QUIT
Begin DoDot:1
+5 SET VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($GET(@ARY@(SITE,YEAR,MONTH,DAY,HOUR,"TYPE",EVENT)),20),32)
End DoDot:1
+6 QUIT
+7 ;
HELP ;Help code
+1 SET X="?"
DO DISP^XQORM1
WRITE !!
+2 QUIT
+3 ;
EXIT ;Exit code
+1 DO CLEAN^VALM10
+2 DO CLEAR^VALM1
+3 KILL @IDX
+4 QUIT
+5 ;
EXPND ;Expand code
+1 QUIT
+2 ;
X(FIELD,VALUE) ;
+1 ;changes a field value in file 774.4 to external form
+2 QUIT $$EXTERNAL^DILFD(776.4,FIELD,"F",VALUE)
+3 ;
ASKBEGIN(DEFAULT) ;
+1 ;Description: Asks the user to enter a beginning date.
+2 ;Input: DEFAULT - the suggested default dt/time (optional)
+3 ;Output: Returns the date as the function value, or 0 if the user does n to select a date
+4 ;
+5 NEW DIR,X,Y
+6 SET DIR(0)="D^::TX"
+7 SET DIR("A")="Enter the begining date"
+8 SET DIR("B")=$$FMTE^XLFDT($SELECT($GET(DEFAULT):DEFAULT,1:$$FMADD^XLFDT(DT,-1)))
+9 SET DIR("?")="Please enter the earliest date for which you would like to see Event Logging Statistics."
+10 DO ^DIR
+11 IF $DATA(DIRUT)
QUIT 0
+12 QUIT Y
+13 ;
MONTHTXT(M) ;
+1 ;Given the month as a number 1-12, returns the name
+2 QUIT $SELECT(M=1:"January",M=2:"February",M=3:"March",M=4:"April",M=5:"May",M=6:"June",M=7:"July",M=8:"August",M=9:"September",M=10:"October",M=11:"November",M=12:"December",1:"Unknown")
+3 ;
DAYTXT(D) ;
+1 ;Given the day as a number, returns the day also as a number, but with
+2 ;a suffix of either "st","nd","rd","th"
+3 IF D>9
IF D<20
QUIT D_"th"
+4 NEW DIGIT
+5 SET DIGIT=$EXTRACT(D,$LENGTH(D))
+6 QUIT D_$SELECT(DIGIT=1:"st",DIGIT=2:"nd",DIGIT=3:"rd",1:"th")
+7 ;
HOURTXT(H) ;
+1 IF H<12
QUIT H_"am"
+2 IF H=12
QUIT "12N"
+3 IF H>12
QUIT (H-12)_"pm"
+4 QUIT
+5 ;
SELECT ;Allows the user to change profiles, then rebuilds the Event Log Statistics screen
+1 NEW PROF,ASKBEGIN
+2 DO FULL^VALM1
+3 SET PROF=$$SELECT^HLEMP1($GET(DUZ),20)
+4 IF PROF
IF PROF'=$GET(PROFILE)
Begin DoDot:1
+5 SET ASKBEGIN=$$ASKBEGIN($GET(BEGIN))
+6 IF ASKBEGIN
SET BEGIN=ASKBEGIN
+7 SET PROFILE=$$GET^HLEMP(PROF,.PROFILE)
+8 DO INIT^HLEMST
End DoDot:1
+9 SET VALMBCK="R"
+10 QUIT
+11 ;
CHNGDATE ;Allows the user to change the starting date, then rebuilds the Event Log Statistics screen
+1 NEW ASKBEGIN
+2 SET ASKBEGIN=$$ASKBEGIN($GET(BEGIN))
+3 IF ASKBEGIN
Begin DoDot:1
+4 SET BEGIN=ASKBEGIN
+5 DO INIT^HLEMST
End DoDot:1
+6 SET VALMBCK="R"
+7 QUIT