| 1 | HLEMST ;ALB/CJM -ListManager Screen for displaying an Event Statistics;12 JUN 1997 10:00 am
 | 
|---|
| 2 |  ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13,1995
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN ;Entry point to viewing a Event Statistics
 | 
|---|
| 5 |  ;Input:  EVENT is the ien of an event
 | 
|---|
| 6 |  ;Output:  none
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  N IDX,BEGIN
 | 
|---|
| 9 |  I $G(PROFILE),$D(PROFILE("SITES")),$D(PROFILE("TYPES"))
 | 
|---|
| 10 |  E  N PROFILE S PROFILE=$$PROFILE^HLEMSL() Q:'PROFILE  S PROFILE=$$GET^HLEMP(PROFILE,.PROFILE)
 | 
|---|
| 11 |  S BEGIN=$$ASKBEGIN()
 | 
|---|
| 12 |  Q:'BEGIN
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  S IDX="^TMP(""HLEM"",$J,""STATISTICS"")"
 | 
|---|
| 15 |  K @IDX
 | 
|---|
| 16 |  D WAIT^DICD
 | 
|---|
| 17 |  D EN^VALM("HLEM DISPLAY STATISTICS")
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  K @IDX
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 | HDR ;Header code
 | 
|---|
| 24 |  S VALMHDR(1)="Year   Month     Day   Hour    Event                                   Count"
 | 
|---|
| 25 |  Q
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 | INIT ;Init variables and list array
 | 
|---|
| 28 |  N ARY
 | 
|---|
| 29 |  S ARY="^TMP($J,""HLSTATS"")"
 | 
|---|
| 30 |  S VALMSG="USER PROFILE: "_$G(PROFILE("NAME"))_"        STARTING: "_$$FMTE^XLFDT(BEGIN)
 | 
|---|
| 31 |  D SETUP(BEGIN,ARY,.PROFILE)
 | 
|---|
| 32 |  D DISPLAY(ARY,IDX)
 | 
|---|
| 33 |  K @ARY
 | 
|---|
| 34 |  D HDR
 | 
|---|
| 35 |  S VALMBCK="R"
 | 
|---|
| 36 |  Q
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 | SETUP(START,ARY,PROFILE) ;
 | 
|---|
| 39 |  ;sets up a work array with the required statistics
 | 
|---|
| 40 |  ;START is the starting date
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  N SITE,TYPE,IDX
 | 
|---|
| 43 |  K @ARY
 | 
|---|
| 44 |  S SITE=0
 | 
|---|
| 45 |  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)
 | 
|---|
| 46 |  S IDX="^HLEV(776.4,""AF"")"
 | 
|---|
| 47 |  F  S SITE=$O(@IDX@(SITE)) Q:'SITE  D:$G(PROFILE("ALL SITES"))!$D(PROFILE("SITES",SITE))
 | 
|---|
| 48 |  .S SITE("NAME")=$$STATION^HLEMSU(SITE)
 | 
|---|
| 49 |  .Q:'$L(SITE("NAME"))
 | 
|---|
| 50 |  .S $P(SITE("NAME"),"^",3)=SITE
 | 
|---|
| 51 |  .S TYPE=0
 | 
|---|
| 52 |  .F  S TYPE=$O(@IDX@(SITE,TYPE)) Q:'TYPE  D:PROFILE("ALL TYPES")!$D(PROFILE("TYPES",TYPE))
 | 
|---|
| 53 |  ..S TYPE("NAME")=$$CODE^HLEMT(TYPE)
 | 
|---|
| 54 |  ..S:(+TYPE("NAME")=TYPE("NAME")) TYPE("NAME")=$E($P($G(^HLEV(776.3,TYPE,4)),"^"),1,40)
 | 
|---|
| 55 |  ..Q:'$L(TYPE("NAME"))
 | 
|---|
| 56 |  ..N IDX S IDX="^HLEV(776.4,""AF"",SITE,TYPE,""RECEIVED"")"
 | 
|---|
| 57 |  ..D YEAR(.SITE,.TYPE,.START)
 | 
|---|
| 58 |  Q
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 | YEAR(SITE,TYPE,START) ;
 | 
|---|
| 61 |  N YEAR
 | 
|---|
| 62 |  S YEAR=START("YEAR")-1
 | 
|---|
| 63 |  F  S YEAR=$O(@IDX@("YEAR",YEAR)) Q:'YEAR  D:(YEAR'<START("YEAR"))
 | 
|---|
| 64 |  .D:(YEAR>START("YEAR"))
 | 
|---|
| 65 |  ..S @ARY@(SITE("NAME"),YEAR)=$G(@ARY@(SITE("NAME"),YEAR))+$G(@IDX@("YEAR",YEAR))
 | 
|---|
| 66 |  ..S @ARY@(SITE("NAME"),YEAR,"TYPE",TYPE("NAME"))=$G(@ARY@(SITE("NAME"),YEAR,"TYPE",TYPE("NAME")))+$G(@IDX@("YEAR",YEAR))
 | 
|---|
| 67 |  .D MONTH(.SITE,.TYPE,.START,YEAR)
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 | MONTH(SITE,TYPE,START,YEAR) ;
 | 
|---|
| 71 |  N MONTH
 | 
|---|
| 72 |  S MONTH=START("MONTH")-1
 | 
|---|
| 73 |  F  S MONTH=$O(@IDX@("YEAR",YEAR,"MONTH",MONTH)) Q:'MONTH  D:(YEAR>START("YEAR"))!(YEAR=START("YEAR")&(MONTH'<START("MONTH")))
 | 
|---|
| 74 |  .D:(MONTH>START("MONTH"))!(YEAR>START("YEAR"))
 | 
|---|
| 75 |  ..S @ARY@(SITE("NAME"),YEAR,MONTH)=$G(@ARY@(SITE("NAME"),YEAR,MONTH))+$G(@IDX@("YEAR",YEAR,"MONTH",MONTH))
 | 
|---|
| 76 |  ..S @ARY@(SITE("NAME"),YEAR,MONTH,"TYPE",TYPE("NAME"))=$G(@ARY@(SITE("NAME"),YEAR,MONTH,"TYPE",TYPE("NAME")))+$G(@IDX@("YEAR",YEAR,"MONTH",MONTH))
 | 
|---|
| 77 |  .D DAY(.SITE,.TYPE,.START,YEAR,MONTH)
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | DAY(SITE,TYPE,START,YEAR,MONTH) ;
 | 
|---|
| 81 |  N DAY
 | 
|---|
| 82 |  S DAY=0
 | 
|---|
| 83 |  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
 | 
|---|
| 84 |  .S @ARY@(SITE("NAME"),YEAR,MONTH,DAY)=$G(@ARY@(SITE("NAME"),YEAR,MONTH,DAY))+$G(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY))
 | 
|---|
| 85 |  .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))
 | 
|---|
| 86 |  .D HOUR(.SITE,.TYPE,.START,YEAR,MONTH,DAY)
 | 
|---|
| 87 |  Q
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 | HOUR(SITE,TYPE,START,YEAR,MONTH,DAY) ;
 | 
|---|
| 90 |  N HOUR
 | 
|---|
| 91 |  S HOUR=""
 | 
|---|
| 92 |  F  S HOUR=$O(@IDX@("YEAR",YEAR,"MONTH",MONTH,"DAY",DAY,"HOUR",HOUR)) Q:(HOUR="")  D:(HOUR'<START("HOUR"))
 | 
|---|
| 93 |  .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))
 | 
|---|
| 94 |  .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))
 | 
|---|
| 95 |  Q
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 | DISPLAY(ARY,IDX) ;Build event statistics screen
 | 
|---|
| 98 |  N YEAR,SITE
 | 
|---|
| 99 |  D CLEAN^VALM10
 | 
|---|
| 100 |  K @IDX,VALMHDR
 | 
|---|
| 101 |  S VALMBG=1,VALMCNT=0
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  S SITE=""
 | 
|---|
| 104 |  I '$O(@ARY@(SITE)),$$SET^HLEMSU(1,"There are no statistics for this profile and date range!",10,"H")
 | 
|---|
| 105 |  E  F  S SITE=$O(@ARY@(SITE)) Q:(SITE="")  D
 | 
|---|
| 106 |  .I VALMCNT,$$SET^HLEMSU(VALMCNT,$G(@IDX@(VALMCNT,0)),1,"U")
 | 
|---|
| 107 |  .S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($P(SITE,"^"),30)_$$LJ^XLFSTR("Station #: "_$P(SITE,"^",2),50),1,"H")
 | 
|---|
| 108 |  .S @IDX@("SITE",$P(SITE,"^"))=VALMCNT
 | 
|---|
| 109 |  .S @IDX@("SITE",$P(SITE,"^",3))=VALMCNT
 | 
|---|
| 110 |  .S YEAR=";"
 | 
|---|
| 111 |  .F  S YEAR=$O(@ARY@(SITE,YEAR),-1) Q:'YEAR  D DYEAR(ARY,IDX,SITE,YEAR)
 | 
|---|
| 112 |  ;Build header
 | 
|---|
| 113 |  D HDR
 | 
|---|
| 114 |  Q
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 | DYEAR(ARY,IDX,SITE,YEAR) ;
 | 
|---|
| 117 |  N EVENT,MONTH
 | 
|---|
| 118 |  S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(YEAR,71)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR)),20),1)
 | 
|---|
| 119 |  S EVENT=""
 | 
|---|
| 120 |  F  S EVENT=$O(@ARY@(SITE,YEAR,"TYPE",EVENT)) Q:EVENT=""  D
 | 
|---|
| 121 |  .S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,"TYPE",EVENT)),20),32)
 | 
|---|
| 122 |  S MONTH=";"
 | 
|---|
| 123 |  F  S MONTH=$O(@ARY@(SITE,YEAR,MONTH),-1) Q:(MONTH="")  D
 | 
|---|
| 124 |  .D DMONTH(ARY,IDX,SITE,YEAR,MONTH)
 | 
|---|
| 125 |  Q
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 | DMONTH(ARY,IDX,SITE,YEAR,MONTH) ;
 | 
|---|
| 128 |  N EVENT,DAY
 | 
|---|
| 129 |  S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($$MONTHTXT(MONTH),64)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH)),20),8)
 | 
|---|
| 130 |  S EVENT=""
 | 
|---|
| 131 |  F  S EVENT=$O(@ARY@(SITE,YEAR,MONTH,"TYPE",EVENT)) Q:EVENT=""  D
 | 
|---|
| 132 |  .S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH,"TYPE",EVENT)),20),32)
 | 
|---|
| 133 |  S DAY=";"
 | 
|---|
| 134 |  F  S DAY=$O(@ARY@(SITE,YEAR,MONTH,DAY),-1) D  Q:'DAY
 | 
|---|
| 135 |  .D:DAY DDAY(ARY,IDX,SITE,YEAR,MONTH,DAY)
 | 
|---|
| 136 |  Q
 | 
|---|
| 137 |  ;
 | 
|---|
| 138 | DDAY(ARY,IDX,SITE,YEAR,MONTH,DAY) ;
 | 
|---|
| 139 |  N EVENT,HOUR
 | 
|---|
| 140 |  S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($$DAYTXT(DAY),54)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH,DAY)),20),18)
 | 
|---|
| 141 |  S EVENT=""
 | 
|---|
| 142 |  F  S EVENT=$O(@ARY@(SITE,YEAR,MONTH,DAY,"TYPE",EVENT)) Q:EVENT=""  D
 | 
|---|
| 143 |  .S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH,DAY,"TYPE",EVENT)),20),32)
 | 
|---|
| 144 |  S HOUR=";"
 | 
|---|
| 145 |  F  S HOUR=$O(@ARY@(SITE,YEAR,MONTH,DAY,HOUR),-1) Q:'HOUR  D DHOUR(ARY,IDX,SITE,YEAR,MONTH,DAY,HOUR)
 | 
|---|
| 146 |  Q
 | 
|---|
| 147 |  ;
 | 
|---|
| 148 | DHOUR(ARY,IDX,SITE,YEAR,MONTH,DAY,HOUR) ;
 | 
|---|
| 149 |  N EVENT
 | 
|---|
| 150 |  S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR($$HOURTXT(HOUR),48)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH,DAY,HOUR)),20),24)
 | 
|---|
| 151 |  S EVENT=""
 | 
|---|
| 152 |  F  S EVENT=$O(@ARY@(SITE,YEAR,MONTH,DAY,HOUR,"TYPE",EVENT)) Q:EVENT=""  D
 | 
|---|
| 153 |  .S VALMCNT=$$SET^HLEMSU($$INC^HLEMU(.VALMCNT),$$LJ^XLFSTR(EVENT,40)_$$LJ^XLFSTR($G(@ARY@(SITE,YEAR,MONTH,DAY,HOUR,"TYPE",EVENT)),20),32)
 | 
|---|
| 154 |  Q
 | 
|---|
| 155 |  ;
 | 
|---|
| 156 | HELP ;Help code
 | 
|---|
| 157 |  S X="?" D DISP^XQORM1 W !!
 | 
|---|
| 158 |  Q
 | 
|---|
| 159 |  ;
 | 
|---|
| 160 | EXIT ;Exit code
 | 
|---|
| 161 |  D CLEAN^VALM10
 | 
|---|
| 162 |  D CLEAR^VALM1
 | 
|---|
| 163 |  K @IDX
 | 
|---|
| 164 |  Q
 | 
|---|
| 165 |  ;
 | 
|---|
| 166 | EXPND ;Expand code
 | 
|---|
| 167 |  Q
 | 
|---|
| 168 |  ;
 | 
|---|
| 169 | X(FIELD,VALUE) ;
 | 
|---|
| 170 |  ;changes a field value in file 774.4 to external form
 | 
|---|
| 171 |  Q $$EXTERNAL^DILFD(776.4,FIELD,"F",VALUE)
 | 
|---|
| 172 |  ;
 | 
|---|
| 173 | ASKBEGIN(DEFAULT) ;
 | 
|---|
| 174 |  ;Description: Asks the user to enter a beginning date.
 | 
|---|
| 175 |  ;Input: DEFAULT - the suggested default dt/time (optional)
 | 
|---|
| 176 |  ;Output: Returns the date as the function value, or 0 if the user does n to select a date
 | 
|---|
| 177 |  ;
 | 
|---|
| 178 |  N DIR,X,Y
 | 
|---|
| 179 |  S DIR(0)="D^::TX"
 | 
|---|
| 180 |  S DIR("A")="Enter the begining date"
 | 
|---|
| 181 |  S DIR("B")=$$FMTE^XLFDT($S($G(DEFAULT):DEFAULT,1:$$FMADD^XLFDT(DT,-1)))
 | 
|---|
| 182 |  S DIR("?")="Please enter the earliest date for which you would like to see Event Logging Statistics."
 | 
|---|
| 183 |  D ^DIR
 | 
|---|
| 184 |  Q:$D(DIRUT) 0
 | 
|---|
| 185 |  Q Y
 | 
|---|
| 186 |  ;
 | 
|---|
| 187 | MONTHTXT(M) ;
 | 
|---|
| 188 |  ;Given the month as a number 1-12, returns the name
 | 
|---|
| 189 |  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")
 | 
|---|
| 190 |  ;
 | 
|---|
| 191 | DAYTXT(D) ;
 | 
|---|
| 192 |  ;Given the day as a number, returns the day also as a number, but with
 | 
|---|
| 193 |  ;a suffix of either "st","nd","rd","th"
 | 
|---|
| 194 |  I D>9,D<20 Q D_"th"
 | 
|---|
| 195 |  N DIGIT
 | 
|---|
| 196 |  S DIGIT=$E(D,$L(D))
 | 
|---|
| 197 |  Q D_$S(DIGIT=1:"st",DIGIT=2:"nd",DIGIT=3:"rd",1:"th")
 | 
|---|
| 198 |  ;
 | 
|---|
| 199 | HOURTXT(H) ;
 | 
|---|
| 200 |  I H<12 Q H_"am"
 | 
|---|
| 201 |  I H=12 Q "12N"
 | 
|---|
| 202 |  I H>12 Q (H-12)_"pm"
 | 
|---|
| 203 |  Q
 | 
|---|
| 204 |  ;
 | 
|---|
| 205 | SELECT ;Allows the user to change profiles, then rebuilds the Event Log Statistics screen
 | 
|---|
| 206 |  N PROF,ASKBEGIN
 | 
|---|
| 207 |  D FULL^VALM1
 | 
|---|
| 208 |  S PROF=$$SELECT^HLEMP1($G(DUZ),20)
 | 
|---|
| 209 |  I PROF,PROF'=$G(PROFILE) D
 | 
|---|
| 210 |  .S ASKBEGIN=$$ASKBEGIN($G(BEGIN))
 | 
|---|
| 211 |  .S:ASKBEGIN BEGIN=ASKBEGIN
 | 
|---|
| 212 |  .S PROFILE=$$GET^HLEMP(PROF,.PROFILE)
 | 
|---|
| 213 |  .D INIT^HLEMST
 | 
|---|
| 214 |  S VALMBCK="R"
 | 
|---|
| 215 |  Q
 | 
|---|
| 216 |  ;
 | 
|---|
| 217 | CHNGDATE ;Allows the user to change the starting date, then rebuilds the Event Log Statistics screen
 | 
|---|
| 218 |  N ASKBEGIN
 | 
|---|
| 219 |  S ASKBEGIN=$$ASKBEGIN($G(BEGIN))
 | 
|---|
| 220 |  I ASKBEGIN D
 | 
|---|
| 221 |  .S BEGIN=ASKBEGIN
 | 
|---|
| 222 |  .D INIT^HLEMST
 | 
|---|
| 223 |  S VALMBCK="R"
 | 
|---|
| 224 |  Q
 | 
|---|