[613] | 1 | AWCMCPR1 ;VISN 7/THM-CPRS MONITOR ;Feb 27, 2004
|
---|
| 2 | ;;7.3;TOOLKIT;**84,86**;Jan 09, 2004
|
---|
| 3 | ;
|
---|
| 4 | W !!,$C(7),"You cannot run this program directly.",!,"Application use only !!",!! H 2 Q ;enter properly
|
---|
| 5 | ;
|
---|
| 6 | STRT1 ; tiu
|
---|
| 7 | N AWCDTA S AWCDTA=$G(^AWC(177100.12,1,0))
|
---|
| 8 | I $P(AWCDTA,U,17)'=1 G ENDQ ;master switch
|
---|
| 9 | I $P(AWCDTA,U,2)'=1 G ENDQ ;tiu
|
---|
| 10 | S AWCTYPE=1,AWCSTRT=$H
|
---|
| 11 | Q
|
---|
| 12 | ;
|
---|
| 13 | STRT2 ; lab
|
---|
| 14 | N AWCDTA S AWCDTA=$G(^AWC(177100.12,1,0))
|
---|
| 15 | I $P(AWCDTA,U,17)'=1 G ENDQ ;master switch
|
---|
| 16 | I $P(AWCDTA,U,3)'=1 G ENDQ ;lab
|
---|
| 17 | S AWCTYPE=2,AWCSTRT=$H
|
---|
| 18 | Q
|
---|
| 19 | ;
|
---|
| 20 | STRT3 ; reminders
|
---|
| 21 | N AWCDTA S AWCDTA=$G(^AWC(177100.12,1,0))
|
---|
| 22 | I $P(AWCDTA,U,17)'=1 G ENDQ ;master switch
|
---|
| 23 | I $P(AWCDTA,U,4)'=1 G ENDQ ;reminders
|
---|
| 24 | S AWCTYPE=3,AWCSTRT=$H
|
---|
| 25 | K AWCDTA
|
---|
| 26 | Q
|
---|
| 27 | ;
|
---|
| 28 | END ; record the data
|
---|
| 29 | ; quit if turning on/back on in middle of transaction (AWCTYPE or AWCSTRT missing)
|
---|
| 30 | I '$D(AWCTYPE)!('$D(AWCSTRT)) G ENDQ
|
---|
| 31 | S AWCDTA=$G(^AWC(177100.12,1,0))
|
---|
| 32 | I $P(AWCDTA,U,17)'=1 G ENDQ ;master switch
|
---|
| 33 | I $P(AWCDTA,U,2)'=1 G ENDQ ;tiu
|
---|
| 34 | I $P(AWCDTA,U,3)'=1 G ENDQ ;lab
|
---|
| 35 | I $P(AWCDTA,U,4)'=1 G ENDQ ;reminder
|
---|
| 36 | S AWCEND=$H
|
---|
| 37 | L +^XTMP("AWCCPRS",.5):1 G:'$T ENDQ
|
---|
| 38 | S AWCDA=+$G(^XTMP("AWCCPRS",.5))
|
---|
| 39 | I AWCDA>50000000 S AWCDA=0 ; reset to zero at fifty million entries
|
---|
| 40 | S AWCDA=AWCDA+1,^XTMP("AWCCPRS",.5)=AWCDA
|
---|
| 41 | L -^XTMP("AWCCPRS",.5)
|
---|
| 42 | S AWCFMDT=$$HTFM^XLFDT(AWCSTRT)
|
---|
| 43 | S ^XTMP("AWCCPRS",AWCFMDT,AWCDA,0)=AWCSTRT_U_AWCEND_U_DUZ_U_(+$G(DUZ(2)))_U_AWCTYPE
|
---|
| 44 | ;
|
---|
| 45 | ENDQ K AWCDTA,AWCSEC,AWCFMDT,AWCTYPE,AWCSTRT,AWCEND,DO,DD,DIC,DIE,AWCDA
|
---|
| 46 | Q
|
---|
| 47 | ;
|
---|
| 48 | PPAGE ; entry point to create updated .htm file
|
---|
| 49 | ; possible values for AWCX are VMS, VMSC, or NT
|
---|
| 50 | S AWCX="",AWCOS=$P(^%ZOSF("OS"),U)
|
---|
| 51 | I AWCOS["VAX DSM" S AWCX="VMS"
|
---|
| 52 | I AWCOS["OpenM-VMS" S AWCX="VMSC"
|
---|
| 53 | I AWCOS["OpenM" S AWCX="VMSC"
|
---|
| 54 | ; To double check for OS
|
---|
| 55 | I $T(OS^%ZOSV)'="" D
|
---|
| 56 | . I $$OS^%ZOSV()="VMS" S AWCX="VMSC"
|
---|
| 57 | . I $$OS^%ZOSV()="NT" S AWCX="NT"
|
---|
| 58 | ;
|
---|
| 59 | K TMP("AWC") D DT^DICRW
|
---|
| 60 | Q:'$D(^AWC(177100.12,1,0)) ;param file not set up
|
---|
| 61 | ; extract the parameters
|
---|
| 62 | S AWCDTA=$G(^AWC(177100.12,1,0))
|
---|
| 63 | S AWCDTA1=$G(^AWC(177100.12,1,1))
|
---|
| 64 | S AWCDHRS=$P(AWCDTA,U,7) I AWCDHRS="" S AWCDHRS=8 ;# hours to display
|
---|
| 65 | S X=$P(AWCDTA,U,8) S AWCMXSEC=$S(X]"":X,1:30) ;number of seconds to display
|
---|
| 66 | S X=$P(AWCDTA,U,9) S AWCTIULN=$S(X]"":X,1:"192,0,0") ;rgb code tiu line
|
---|
| 67 | S X=$P(AWCDTA,U,10) S AWCLABLN=$S(X]"":X,1:"0,192,0") ;rgb code lab line
|
---|
| 68 | S X=$P(AWCDTA,U,11) S AWCREMLN=$S(X]"":X,1:"0,0,192") ;rgb code reminder line
|
---|
| 69 | S X=$P(AWCDTA,U,12) S AWCGRDON=$S(X="y":"true",X="n":"false",1:"true")
|
---|
| 70 | S X=$P(AWCDTA,U,13) S AWCBKGRN=$S(X]"":X,1:"230,230,230") ;rgb code
|
---|
| 71 | S X=$P(AWCDTA1,U,3) S AWCMSRV=$S(X]"":X,1:"") ;server
|
---|
| 72 | S X=$P(AWCDTA1,U,4) S AWCMUSR=$S(X]"":X,1:"") ;user
|
---|
| 73 | S X=$P(AWCDTA1,U,5) S AWCMPW=$S(X]"":X,1:"") ;passwd
|
---|
| 74 | ;
|
---|
| 75 | K AWCDTA D NOW^%DTC S (AWCENDDT,AWCCURTM)=%,AWCTSEC=3600*AWCDHRS
|
---|
| 76 | S AWCI1=$P(%H,",",1),AWCI2=$P(%H,",",2)
|
---|
| 77 | S AWCI2=(AWCI2-AWCTSEC) I AWCI2<0 S AWCI2=AWCI2+86400,AWCI1=AWCI1-1
|
---|
| 78 | S %H=AWCI1_","_AWCI2 D YMD^%DTC S AWCBEGDT=X_%
|
---|
| 79 | S X=$E(%,2,4),X=X_"0",X=$S($L(X)<4:X_"0",1:X) ;format to four digits, including any leading zeros
|
---|
| 80 | S AWCBEGTM=+X
|
---|
| 81 | S X=$P(AWCCURTM,".",2),X=($E(X,1,3)_"0"),X=$S($L(X)<4:X_"0",1:X) ;format to four digits as above
|
---|
| 82 | S AWCENDTM=+X K ^TMP("AWCTTIM",$J)
|
---|
| 83 | ; This loop skips 60 due to adding 10 to starting number. These two lines
|
---|
| 84 | ; cause it to print 0-50 min, skipping 60, like this: 210 220,230,240,250,300
|
---|
| 85 | I AWCBEGTM>AWCENDTM F X=AWCBEGTM:10:2350 S ^TMP("AWCTTIM",$J,(-9999+X))="" S:$E(X,($L(X)-1),$L(X))=50 X=X+40 S:X=2360 X="0" ;before midnight
|
---|
| 86 | I AWCBEGTM>AWCENDTM F X=0:10:AWCENDTM S ^TMP("AWCTTIM",$J,X)="" S:$E(X,($L(X)-1),$L(X))=50 X=X+40 ;after midnight
|
---|
| 87 | I AWCENDTM>AWCBEGTM F X=AWCBEGTM:10:AWCENDTM S ^TMP("AWCTTIM",$J,X)="" I $E(X,($L(X)-1),($L(X)))=50 S X=X+40 ;normal times
|
---|
| 88 | ;
|
---|
| 89 | SORT ; sort the data into a TMP file
|
---|
| 90 | K ^TMP($J)
|
---|
| 91 | F AWCSRTDT=(AWCBEGDT-.000001):0 S AWCSRTDT=$O(^XTMP("AWCCPRS",AWCSRTDT)) Q:AWCSRTDT=""!(AWCSRTDT>AWCENDDT) DO
|
---|
| 92 | .F DA=0:0 S DA=$O(^XTMP("AWCCPRS",AWCSRTDT,DA)) Q:DA="" DO
|
---|
| 93 | ..S AWCDTA=$G(^XTMP("AWCCPRS",AWCSRTDT,DA,0)),AWCDIV=$P(AWCDTA,U,4),AWCTYPE=$P(AWCDTA,U,5)
|
---|
| 94 | ..I AWCDIV="" S AWCDIV=+$$SITE^VASITE ;for people without division assignments
|
---|
| 95 | ..S ^TMP($J,AWCDIV,AWCTYPE,AWCSRTDT,DA)=""
|
---|
| 96 | ;
|
---|
| 97 | DIVS ; count the divisions for drop-down box on web page (used in AWCMCPR2)
|
---|
| 98 | I '$D(^TMP($J)) D NODATA G PPAGE ;no data yet for time frame being processed
|
---|
| 99 | S AWCDCNTR=0
|
---|
| 100 | F AWCDIV=0:0 S AWCDIV=$O(^TMP($J,AWCDIV)) Q:AWCDIV="" DO
|
---|
| 101 | .S AWCFDIV(AWCDIV)=$P(^DIC(4,AWCDIV,0),U)_U_$P($G(^DIC(4,+AWCDIV,99)),U)_U
|
---|
| 102 | .S AWCDCNTR=AWCDCNTR+1
|
---|
| 103 | ; if only one division no drop-down box is needed
|
---|
| 104 | I AWCDCNTR=1 K AWCFDIV
|
---|
| 105 | ; generate one HTML page per facility
|
---|
| 106 | DIVPG F AWCDIV=0:0 S AWCDIV=$O(^TMP($J,AWCDIV)) Q:AWCDIV="" DO G:POP EXIT
|
---|
| 107 | .S AWCDEV=$P($G(^AWC(177100.12,1,0)),U,5) I AWCDEV="" S POP=1 Q ;no HFS device in param file
|
---|
| 108 | .S (AWCDIVNM,AWCDIVN1)=$P(^DIC(4,AWCDIV,0),U)
|
---|
| 109 | .S AWCDIVNM=$P($G(^DIC(4,+AWCDIV,99)),U) Q:AWCDIVNM=""
|
---|
| 110 | .S AWCFILE=$P(^AWC(177100.12,1,0),U,6)_"_"_AWCDIVNM_".htm" ;web page name with division number
|
---|
| 111 | .Q:AWCFILE=("_"_AWCDIV)!(AWCDEV="") ;webpage or device is missing in parameter file
|
---|
| 112 | .; Check VMS or NT before you put the \ in the file name
|
---|
| 113 | .I AWCX="NT" D
|
---|
| 114 | ..S AWCZ=$L(AWCDEV) I $E(AWCDEV,AWCZ,AWCZ)'="\" S AWCDEV=AWCDEV_"\" ;add \ if missing
|
---|
| 115 | .D OPEN^%ZISH("AWCCPR1",AWCDEV,AWCFILE,"W") Q:POP
|
---|
| 116 | .S AWCHFIL1=AWCDEV_AWCFILE ;needed for AWCMFTP at end
|
---|
| 117 | .U IO D PART1^AWCMCPR2 ;part 1 of web page
|
---|
| 118 | .;
|
---|
| 119 | TMPALL .; make the TMP("AWC", array with all possible hours, increments of ten, for all types 1,2,3, with zero values
|
---|
| 120 | .F T=1:1:3 F X=-99999:0 S X=$O(^TMP("AWCTTIM",$J,X)) Q:X="" S TMP("AWC",T,X)="0^0"
|
---|
| 121 | .;
|
---|
| 122 | DVALS .; count the number of data values to display on graph
|
---|
| 123 | .S AWCVCNTR=0 F X=0:0 S X=$O(TMP("AWC",X)) Q:X="" F Y=0:0 S Y=$O(TMP("AWC",X,Y)) Q:Y="" S AWCVCNTR=AWCVCNTR+1
|
---|
| 124 | .S AWCVCNTR=AWCVCNTR/3 ;divide by 3 graph lines
|
---|
| 125 | .; get the data by date range provided and sort the data
|
---|
| 126 | .F AWCTYPE=0:0 S AWCTYPE=$O(^TMP($J,AWCDIV,AWCTYPE)) Q:AWCTYPE="" DO
|
---|
| 127 | ..F AWCDATE=(AWCBEGDT-.000001):0 S AWCDATE=$O(^TMP($J,AWCDIV,AWCTYPE,AWCDATE)) Q:AWCDATE=""!(AWCDATE>AWCENDDT) DO
|
---|
| 128 | ...F DA=0:0 S DA=$O(^TMP($J,AWCDIV,AWCTYPE,AWCDATE,DA)) Q:DA="" DO
|
---|
| 129 | ....S AWCDTA=$G(^XTMP("AWCCPRS",AWCDATE,DA,0)),AWCXSTRT=$P(AWCDTA,U),AWCXEND=$P(AWCDTA,U,2)
|
---|
| 130 | ....S AWCSEC=$$HDIFF^XLFDT(AWCXEND,AWCXSTRT,2)
|
---|
| 131 | ....S Y=AWCDATE X ^DD("DD") S X=$P(Y,"@",2),X=$TR(X,":","")
|
---|
| 132 | ....; sort the times ; AWCX1 is the hours ;AWCX3 is the minutes
|
---|
| 133 | ....; use 10-minute intervals and put with interval
|
---|
| 134 | ....S AWCX1=$E(X,1,2),AWCX3=$E(X,3,4) ;strip hours and minutes, no seconds although they are there
|
---|
| 135 | ....I "^00^01^02^03^04^05^"[(U_AWCX3_U) S AWCX3="00"
|
---|
| 136 | ....I "^06^07^08^09^10^11^12^13^14^15^"[(U_AWCX3_U) S AWCX3="10"
|
---|
| 137 | ....I "^16^17^18^19^20^21^22^23^24^25^"[(U_AWCX3_U) S AWCX3="20"
|
---|
| 138 | ....I "^26^27^28^29^30^31^32^33^34^35^"[(U_AWCX3_U) S AWCX3="30"
|
---|
| 139 | ....I "^36^37^38^39^40^41^42^43^44^45^"[(U_AWCX3_U) S AWCX3="40"
|
---|
| 140 | ....I "^46^47^48^49^50^51^52^53^54^55^"[(U_AWCX3_U) S AWCX3="50"
|
---|
| 141 | ....I "^56^57^58^59^"[(U_AWCX3_U) S AWCX3="60"
|
---|
| 142 | ....I AWCX3=60 S AWCX3="00",AWCX1=AWCX1+1
|
---|
| 143 | ....I AWCX1=24 S AWCX1="00"
|
---|
| 144 | ....S AWCTIME=+(AWCX1_AWCX3)
|
---|
| 145 | ....;
|
---|
| 146 | SETTMP ....; set in TMP("AWC", array ONLY if within our selected range
|
---|
| 147 | ....I $D(TMP("AWC",AWCTYPE,(-9999+AWCTIME))) DO
|
---|
| 148 | .....S $P(TMP("AWC",AWCTYPE,(-9999+(+AWCTIME))),U)=$P($G(TMP("AWC",AWCTYPE,-9999+(+AWCTIME))),U)+AWCSEC
|
---|
| 149 | .....S $P(TMP("AWC",AWCTYPE,(-9999+(+AWCTIME))),U,2)=$P($G(TMP("AWC",AWCTYPE,(-9999+(+AWCTIME)))),U,2)+1
|
---|
| 150 | ....I $D(TMP("AWC",AWCTYPE,+AWCTIME)) DO
|
---|
| 151 | .....S $P(TMP("AWC",AWCTYPE,+AWCTIME),U)=$P($G(TMP("AWC",AWCTYPE,+AWCTIME)),U)+AWCSEC
|
---|
| 152 | .....S $P(TMP("AWC",AWCTYPE,+AWCTIME),U,2)=$P($G(TMP("AWC",AWCTYPE,+AWCTIME)),U,2)+1
|
---|
| 153 | .;
|
---|
| 154 | PART2 .D PART2^AWCMCPR2 ;part II of the HTML code
|
---|
| 155 | .; ftp the file
|
---|
| 156 | .D EN^AWCMFTP
|
---|
| 157 | I AWCX="NT" S CMD="S AWCVAR=$ZF(-1,"_"""erase ftpawc.txt"_""""_")" X CMD
|
---|
| 158 | I AWCX="VMS"!(AWCX="VMSC") D PURDEL^AWCMFTP
|
---|
| 159 | ;
|
---|
| 160 | EXIT D ^%ZISC
|
---|
| 161 | K %,%H,AWCC,AWCAVG,AWCCNT,AWCDATE,AWCDEV,AWCDHRS,AWCDIV,AWCDT,AWCDTA,AWCEND,AWCFILE,AWCFMDT,AWCSEC,AWCY,AWCX
|
---|
| 162 | K AWCSTRT,AWCTIME,AWCTYPE,AWCZ,AWCBEGTM,DA,DD,DIC,DIE,DO,DR,AWCENDDT,AWCENDTM,AWCLBCNT,AWCPARAM,AWCPCNTR,AWCFDIVN
|
---|
| 163 | K POP,AWCTTIM,AWCVCNTR,X,AWCX1,AWCX3,Y,AWCBEGDT,AWCCURTM,AWCI1,AWCI2,T,AWCTSEC,Z,AWCDIVNM,AWCWL,AWCDVDTA
|
---|
| 164 | K AWCTIULN,AWCLABLN,AWCREMLN,AWCMXSEC,AWCGRDON,AWCBKGRN,AWCDIVN1,AWCFDIV,AWCDVNM,AWCDVNB,AWCWEBRT,AWCDCNTR,AWCFXDTA
|
---|
| 165 | K AWCOS,AWCDTA1,AWCHFIL1,AWCMPW,AWCMSRV,AWCMUSR,AWCMCP,AWCSITE,AWCSITEN,AWCVMSP,AWCOS,AWCSRTDT,AWCXDIV,YYY
|
---|
| 166 | K %I,%ZISHO,%ZISUB,%ZISHF,AWCWBFLD,CMD,AWC,AWCDIR,AWCDIRL,AWCHFILE,AWCHFILL,AWCOS,AWCVAR,Y,%SUBMIT,VMSC,AWCXDA
|
---|
| 167 | K ^TMP("AWCTTIM",$J),^TMP($J),TMP("AWC"),AWCXSTRT,AWCXEND,XDUZ,TMP
|
---|
| 168 | Q
|
---|
| 169 | ;
|
---|
| 170 | NODATA ; handle no data for the day-create a zero, dummy record for the home facility.
|
---|
| 171 | ; this only occurs when a page is due to be run but no activity yet.
|
---|
| 172 | S (AWCSTRT,AWCEND)=$H
|
---|
| 173 | S AWCXDIV=$P($G(^AWC(177100.12,1,1)),U,2),AWCXDA=$O(^DIC(4,"D",AWCXDIV,0)) Q:AWCXDA=""
|
---|
| 174 | S AWCXDIV=$P($G(^DIC(4,AWCXDA,99)),U) Q:AWCXDIV=""
|
---|
| 175 | S XDUZ=.5,XDUZ(2)=AWCXDIV,AWCTYPE=1
|
---|
| 176 | L +^XTMP("AWCCPRS",.5):1 Q:'$T
|
---|
| 177 | S AWCDA=+$G(^XTMP("AWCCPRS",.5)),AWCDA=AWCDA+1,^XTMP("AWCCPRS",.5)=AWCDA
|
---|
| 178 | L -^XTMP("AWCCPRS",.5)
|
---|
| 179 | S AWCFMDT=$$HTFM^XLFDT(AWCSTRT)
|
---|
| 180 | S ^XTMP("AWCCPRS",AWCFMDT,AWCDA,0)=AWCSTRT_U_AWCEND_U_XDUZ_U_(+$G(XDUZ(2)))_U_AWCTYPE
|
---|
| 181 | Q
|
---|