| 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 | 
|---|