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

HLEMST.m

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