[613] | 1 | KMPDHU03 ;OAK/RAK - CM Tools Compile & File HL7 Daily Stats ;2/17/04 08:59
|
---|
| 2 | ;;2.0;CAPACITY MANAGEMENT TOOLS;;Mar 22, 2002
|
---|
| 3 | ;
|
---|
| 4 | COMPILE ;-compile synchronous data into GLB1
|
---|
| 5 | ;-----------------------------------------------------------------------
|
---|
| 6 | ; DATA.... data from GBL array
|
---|
| 7 | ; DATE.... date.hr
|
---|
| 8 | ; ND...... node where data will be filed in file #8973.1
|
---|
| 9 | ; LC...... up-arrow (^) piece location of data to be filed
|
---|
| 10 | ; NM....... namespace
|
---|
| 11 | ; PT...... protocol name~ien
|
---|
| 12 | ; PTNP.... prime time - 1
|
---|
| 13 | ; non-prime time 2
|
---|
| 14 | ;-----------------------------------------------------------------------
|
---|
| 15 | ;
|
---|
| 16 | N DATA,DATE,I,ND,LC,NM,PT,PTNP
|
---|
| 17 | ;
|
---|
| 18 | Q:'$D(@GBL@(SS1,SS2,SS3,SS4,SS5,SS6)) S DATA=$G(^(SS6)) Q:DATA=""
|
---|
| 19 | ; namespace
|
---|
| 20 | S NM=$S(SS1="HR"!(SS1="PROT"):SS5,SS1="NMSP":SS4,1:"") Q:NM=""
|
---|
| 21 | ; protocol
|
---|
| 22 | S PT=$S(SS1="HR"!(SS1="NMSP"):SS6,SS1="PROT":SS4,1:"") Q:PT=""
|
---|
| 23 | ; prime time - 1, non-prime time - 2
|
---|
| 24 | S DATE=$S(SS1="HR":SS4,SS1="NMSP":SS5,SS1="PROT":SS6,1:"") Q:'DATE
|
---|
| 25 | ; DATE is set by using the 'next highest' hour
|
---|
| 26 | ; 3030509.0811 is returned as 3030509.09
|
---|
| 27 | ; use $$fmadd to go back to previous hour
|
---|
| 28 | S PTNP=$$PTNP^KMPDHU03($$FMADD^XLFDT(DATE,,-1)) Q:'PTNP
|
---|
| 29 | ;
|
---|
| 30 | I SS1="HR" D
|
---|
| 31 | .S ND=$S(SS2="TM":1,1:""),ND=ND+(PTNP-1)
|
---|
| 32 | .S LC=$S(SS3="T":0,SS3="M":3,SS3="U":6,1:"")
|
---|
| 33 | I SS1="NMSP" D
|
---|
| 34 | .S ND=$S(SS2="IO":1.1,SS2="LR":1.2,1:""),ND=ND+(PTNP-1)
|
---|
| 35 | .S LC=$S(SS3="I"!(SS3="L"):0,SS3="O"!(SS3="R"):3,SS3="U":6,1:"") Q:LC=""
|
---|
| 36 | I SS1="PROT" D
|
---|
| 37 | .S ND=99,LC=$S(PTNP=1:0,PTNP=2:3,1:"")
|
---|
| 38 | ;
|
---|
| 39 | ; quit if not node (ND) or location (LC)
|
---|
| 40 | Q:'$P(DATE,".")!('ND)!(LC="")
|
---|
| 41 | ;
|
---|
| 42 | F I=1,3 D
|
---|
| 43 | .S $P(@GBL1@($P(DATE,"."),PT,NM,ND),U,(I+LC))=$P($G(@GBL1@($P(DATE,"."),PT,NM,ND)),U,(I+LC))+$P(DATA,U,I)
|
---|
| 44 | S $P(@GBL1@($P(DATE,"."),PT,NM,ND),U,(2+LC))=$P($G(@GBL1@($P(DATE,"."),PT,NM,ND)),U,(2+LC))+$P(DATA,U,4)
|
---|
| 45 | ;
|
---|
| 46 | Q
|
---|
| 47 | ;
|
---|
| 48 | FILE(KMPDSYNC) ;-file data into file 8973.1 (CM HL7 DATA)
|
---|
| 49 | ;-----------------------------------------------------------------------
|
---|
| 50 | ; KMPDSYNC... 1 - synchronous
|
---|
| 51 | ; 2 - asynchronous
|
---|
| 52 | ;-----------------------------------------------------------------------
|
---|
| 53 | Q:'$G(KMPDSYNC)
|
---|
| 54 | Q:KMPDSYNC<1!(KMPDSYNC>2)
|
---|
| 55 | Q:'$D(@GBL1)
|
---|
| 56 | ;
|
---|
| 57 | W:'$D(ZTQUEUED) !,"Filing ",$S(KMPDSYNC=2:"asynchronous",1:"synchronous")," HL7 stats into file 8973.1 (CM HL7 DATA)..."
|
---|
| 58 | ;
|
---|
| 59 | ; file data
|
---|
| 60 | D @("FILE"_KMPDSYNC) Q:'$D(FDA)
|
---|
| 61 | ;
|
---|
| 62 | Q
|
---|
| 63 | ;
|
---|
| 64 | FILE1 ;-- file synchronous data
|
---|
| 65 | ;
|
---|
| 66 | Q:'$D(@GBL1)
|
---|
| 67 | ;
|
---|
| 68 | N DATE,ERROR,FDA,I,IEN,INDEX,NM,PT,PT1,ZIEN
|
---|
| 69 | ;
|
---|
| 70 | S DATE=0
|
---|
| 71 | F S DATE=$O(@GBL1@(DATE)) Q:'DATE S PT="" D
|
---|
| 72 | .F S PT=$O(@GBL1@(DATE,PT)) Q:PT="" S NM="" D
|
---|
| 73 | ..; remove ien (name~123) from protocol
|
---|
| 74 | ..S PT1=$P(PT,"~") Q:PT1=""
|
---|
| 75 | ..F S NM=$O(@GBL1@(DATE,PT,NM)) Q:NM="" S ND=0 D
|
---|
| 76 | ...K ERROR,FDA,IEN,ZIEN
|
---|
| 77 | ...; determine if data has already been filed (if ien)
|
---|
| 78 | ...S IEN=$O(^KMPD(8973.1,"APTDTNM",PT1,DATE,NM,0))
|
---|
| 79 | ...; if filed set IEN="ien," - edit entry
|
---|
| 80 | ...; if not filed set IEN="+1," - add entry
|
---|
| 81 | ...S IEN=$S(IEN:IEN_",",1:"+1,")
|
---|
| 82 | ...S FDA($J,8973.1,IEN,.01)=DATE
|
---|
| 83 | ...S FDA($J,8973.1,IEN,.03)=NM
|
---|
| 84 | ...S FDA($J,8973.1,IEN,.05)=PT1
|
---|
| 85 | ...S FDA($J,8973.1,IEN,.06)=1
|
---|
| 86 | ...F S ND=$O(@GBL1@(DATE,PT,NM,ND)) Q:'ND D
|
---|
| 87 | ....S DATA=@GBL1@(DATE,PT,NM,ND) Q:DATA=""
|
---|
| 88 | ....S INDEX=$S(ND=99:6,ND=99.2:13,ND=99.5:3,$E(ND)=5:24,1:9)
|
---|
| 89 | ....F I=1:1:INDEX S:$P(DATA,U,I)'="" FDA($J,8973.1,IEN,ND+(I*.001))=$P(DATA,U,I)
|
---|
| 90 | ...; file data
|
---|
| 91 | ...D UPDATE^DIE("","FDA($J)","ZIEN","ERROR")
|
---|
| 92 | ...; if error
|
---|
| 93 | ...I $D(ERROR) D
|
---|
| 94 | ....D MSG^DIALOG("HA",.KMPDERR,60,5,"ERROR")
|
---|
| 95 | ....D EMAIL^KMPDUTL2("CM TOOLS - HL7 DAILY Error","KMPDERR(")
|
---|
| 96 | ;
|
---|
| 97 | Q
|
---|
| 98 | ;
|
---|
| 99 | FILE2 ;-- file asynchronous data
|
---|
| 100 | ;
|
---|
| 101 | Q:'$D(@GBL1)
|
---|
| 102 | ;
|
---|
| 103 | N CF,DATE,ERROR,I,IEN,INDEX1,INDEX2,KMPDERR,NM,PT,PT1,ZIEN
|
---|
| 104 | ;
|
---|
| 105 | K ^TMP($J,"KMPDHU03-F2")
|
---|
| 106 | S DATE=0
|
---|
| 107 | F S DATE=$O(@GBL1@(DATE)) Q:'DATE S PT="" D
|
---|
| 108 | .F S PT=$O(@GBL1@(DATE,PT)) Q:PT="" S NM="" D
|
---|
| 109 | ..; remove ien (name~123) from protocol
|
---|
| 110 | ..S PT1=$P(PT,"~") Q:PT1=""
|
---|
| 111 | ..F S NM=$O(@GBL1@(DATE,PT,NM)) Q:NM="" S CF="" D
|
---|
| 112 | ...F S CF=$O(@GBL1@(DATE,PT,NM,CF)) Q:CF="" S ND=0 D
|
---|
| 113 | ....K ERROR,IEN,ZIEN,^TMP($J,"KMPDHU03-F2"),^TMP($J,"KMPDHU03-ERROR")
|
---|
| 114 | ....; determine if data has already been filed (if ien)
|
---|
| 115 | ....S IEN=$O(^KMPD(8973.1,"ACSDTPRNM",CF,DATE,PT1,NM,0))
|
---|
| 116 | ....; if filed set IEN="ien," - edit entry
|
---|
| 117 | ....; if not filed set IEN="+1," - add entry
|
---|
| 118 | ....S IEN=$S(IEN:IEN_",",1:"+1,")
|
---|
| 119 | ....; date
|
---|
| 120 | ....S ^TMP($J,"KMPDHU03-F2",8973.1,IEN,.01)=DATE
|
---|
| 121 | ....; namespace
|
---|
| 122 | ....S ^TMP($J,"KMPDHU03-F2",8973.1,IEN,.03)=NM
|
---|
| 123 | ....; protocol
|
---|
| 124 | ....S ^TMP($J,"KMPDHU03-F2",8973.1,IEN,.05)=PT1
|
---|
| 125 | ....; 2 = asynchronous
|
---|
| 126 | ....S ^TMP($J,"KMPDHU03-F2",8973.1,IEN,.06)=2
|
---|
| 127 | ....F S ND=$O(@GBL1@(DATE,PT,NM,CF,ND)) Q:'ND D
|
---|
| 128 | .....S DATA=@GBL1@(DATE,PT,NM,CF,ND) Q:DATA=""
|
---|
| 129 | .....; starting index
|
---|
| 130 | .....S INDEX1=1 ;$S($E(ND)=5:9,1:1)
|
---|
| 131 | .....; ending index
|
---|
| 132 | .....S INDEX2=$S(ND=99:6,ND=99.2:13,ND=99.3:9,ND=99.5:3,$E(ND)=5:24,$E(ND)=6:24,1:0)
|
---|
| 133 | .....Q:'INDEX2
|
---|
| 134 | .....F I=INDEX1:1:INDEX2 S:$P(DATA,U,I)'="" ^TMP($J,"KMPDHU03-F2",8973.1,IEN,ND+(I*.001))=$P(DATA,U,I)
|
---|
| 135 | ....;file data
|
---|
| 136 | ....D UPDATE^DIE("",$NA(^TMP($J,"KMPDHU03-F2")),"ZIEN","ERROR")
|
---|
| 137 | ....; if error
|
---|
| 138 | ....I $D(ERROR) D
|
---|
| 139 | .....D MSG^DIALOG("HA",.KMPDERR,60,5,"ERROR")
|
---|
| 140 | .....D EMAIL^KMPDUTL2("CM TOOLS - HL7 DAILY Error","KMPDERR(")
|
---|
| 141 | ;
|
---|
| 142 | K ^TMP($J,"KMPDHU03-F2")
|
---|
| 143 | ;
|
---|
| 144 | Q
|
---|
| 145 | ;
|
---|
| 146 | PTNP(DATE) ;-extrinsic function - determine if date.hr is prime time or non-prime time
|
---|
| 147 | ;-----------------------------------------------------------------------
|
---|
| 148 | ; DATE.... Date.Time in internal FileMan format
|
---|
| 149 | ;
|
---|
| 150 | ; Return: 1 - prime time
|
---|
| 151 | ; 2 - non-prime time
|
---|
| 152 | ; "" - unable to identify
|
---|
| 153 | ;-----------------------------------------------------------------------
|
---|
| 154 | Q:'$G(DATE) ""
|
---|
| 155 | N DOW,HOUR
|
---|
| 156 | ; day of week in numeric format
|
---|
| 157 | S DOW=$$DOW^XLFDT(DATE,1)
|
---|
| 158 | ; hours
|
---|
| 159 | S HOUR=$E($P(DATE,".",2),1,2)
|
---|
| 160 | ; prime time - not saturday or sunday or holiday and between the hours
|
---|
| 161 | ; of 8am (0800) to 5 pm (1700)
|
---|
| 162 | Q:DOW'=0&(DOW'=6)&('$G(^HOLIDAY($P(DATE,"."),0)))&(HOUR>7)&(HOUR<17) 1
|
---|
| 163 | ; non-prime time
|
---|
| 164 | Q 2
|
---|