| 1 | HLEVSRV2 ;O-OIFO/LJA - Event Monitor SERVER ;02/04/2004 14:42
|
---|
| 2 | ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
|
---|
| 3 | ;
|
---|
| 4 | QUERYSTR ; Generate $QUERY strings...
|
---|
| 5 | N IOINHI,IOINORM,STRING,X
|
---|
| 6 | ;
|
---|
| 7 | S X="IOINHI;IOINORM" D ENDR^%ZISS
|
---|
| 8 | ;
|
---|
| 9 | D HD,EX,TELL^HLEVMST0("","0^0^999","Press RETURN to continue... ")
|
---|
| 10 | ;
|
---|
| 11 | F S STRING=$$STRING QUIT:STRING']"" D
|
---|
| 12 | . S STRING(STRING)=""
|
---|
| 13 | . W !!,"Search string = ",IOINHI,STRING,IOINORM
|
---|
| 14 | ;
|
---|
| 15 | QUIT:$O(STRING(""))']"" ;->
|
---|
| 16 | W !!,IOINHI,"Paste the following ""search strings"" into an email message and send to the"
|
---|
| 17 | W !,"S.HLEV-INFORMATION-SERVER@REMOTE-SITE.",IOINORM
|
---|
| 18 | W !!
|
---|
| 19 | ;
|
---|
| 20 | S STRING=""
|
---|
| 21 | F S STRING=$O(STRING(STRING)) Q:STRING']"" D
|
---|
| 22 | . W !,STRING
|
---|
| 23 | ;
|
---|
| 24 | Q
|
---|
| 25 | ;
|
---|
| 26 | STRING() ; Ask user to input values to be built into a search string
|
---|
| 27 | N FILTER,LIMIT,ROOT,STOP
|
---|
| 28 | S ROOT=$$QUERYRT QUIT:ROOT']"" "" ;->
|
---|
| 29 | S STOP=$$QUERYST(ROOT) QUIT:STOP']"" "" ;->
|
---|
| 30 | S LIMIT=$$QUERYLM
|
---|
| 31 | S FILTER=$$QUERYFL
|
---|
| 32 | Q ROOT_U_STOP_U_LIMIT_U_FILTER
|
---|
| 33 | ;
|
---|
| 34 | QUERYRT() ;
|
---|
| 35 | N VAL
|
---|
| 36 | D TAG("$QUERY ROOT")
|
---|
| 37 | D EXRT
|
---|
| 38 | W !
|
---|
| 39 | S VAL=$$FT("Enter $QUERY ROOT") QUIT:VAL']""!(VAL=U) "" ;->
|
---|
| 40 | Q VAL
|
---|
| 41 | ;
|
---|
| 42 | EXRT N I,T F I=1:1 S T=$T(EXRT+I) QUIT:T'[";;" W !,$P(T,";;",2,99)
|
---|
| 43 | ;;Enter the $QUERY root now. For example...
|
---|
| 44 | ;;
|
---|
| 45 | ;; - If you want to see all data for ^HL(772,25132), including the zero node
|
---|
| 46 | ;; and all data, enter "HL(772,25132)".
|
---|
| 47 | ;; - If you want to see all data for HLMA(9132), including the zero node and
|
---|
| 48 | ;; all data, enter "^HLMA(9132)".
|
---|
| 49 | ;;
|
---|
| 50 | ;;NOTE: Do not enter the leading up-arrow before a global reference.
|
---|
| 51 | Q
|
---|
| 52 | ;
|
---|
| 53 | QUERYST(ROOT) ;
|
---|
| 54 | N VAL
|
---|
| 55 | D TAG("$QUERY Stop Value")
|
---|
| 56 | D EXST
|
---|
| 57 | S VAL=$E(ROOT,$L(ROOT)),VAL=$S(VAL=")":$E(ROOT,1,$L(ROOT)-1)_",",1:ROOT)
|
---|
| 58 | W !
|
---|
| 59 | S VAL=$$FT("Enter $QUERY STOP VALUE",VAL) QUIT:VAL']""!(VAL=U) "" ;->
|
---|
| 60 | Q VAL
|
---|
| 61 | ;
|
---|
| 62 | EXST N I,T F I=1:1 S T=$T(EXST+I) QUIT:T'[";;" W !,$P(T,";;",2,99)
|
---|
| 63 | ;;Enter the $QUERY stop value now. For example...
|
---|
| 64 | ;;
|
---|
| 65 | ;; - Assuming you entered "HL(772,25132)" (see helps under root entry above),
|
---|
| 66 | ;; you would enter a stop value of "HL(772,25132,".
|
---|
| 67 | ;; - Assuming you entered "HLMA(9132)", enter a stop value of "HLMA(9132,".
|
---|
| 68 | Q
|
---|
| 69 | ;
|
---|
| 70 | QUERYLM() ;
|
---|
| 71 | N VAL
|
---|
| 72 | D TAG("Data Node Limit")
|
---|
| 73 | D EXLM
|
---|
| 74 | R !!,"Enter LIMIT: ",VAL:60 Q:VAL'>0 "" ;->
|
---|
| 75 | QUIT:VAL>1000 1000 ;->
|
---|
| 76 | Q VAL
|
---|
| 77 | ;
|
---|
| 78 | EXLM N I,T F I=1:1 S T=$T(EXLM+I) QUIT:T'[";;" W !,$P(T,";;",2,99)
|
---|
| 79 | ;;You can limit the number of nodes that are returned. This is especially
|
---|
| 80 | ;;helpful when you don't know how many data nodes exist and will be returned by
|
---|
| 81 | ;;your request. (You don't want to send a request, thinking you'll get around
|
---|
| 82 | ;;20 data nodes back, when 20,000 data nodes exist!)
|
---|
| 83 | ;;
|
---|
| 84 | ;;Enter the maximum number of nodes you want returned.
|
---|
| 85 | ;;
|
---|
| 86 | ;;NOTE: The maximum number of data nodes returnable by each $QUERY search
|
---|
| 87 | ;; string is 1000. So, there is no point entering any limit above 1000!
|
---|
| 88 | Q
|
---|
| 89 | ;
|
---|
| 90 | QUERYFL() ;
|
---|
| 91 | N VAL
|
---|
| 92 | D TAG("Filter Reference")
|
---|
| 93 | D EXFL
|
---|
| 94 | W !
|
---|
| 95 | S VAL=$$FT("Enter FILTER REFERENCE","","O") QUIT:VAL']""!(VAL=U) "" ;->
|
---|
| 96 | Q VAL
|
---|
| 97 | ;
|
---|
| 98 | EXFL N I,T F I=1:1 S T=$T(EXFL+I) QUIT:T'[";;" W !,$P(T,";;",2,99)
|
---|
| 99 | ;;$QUERY returns all data nodes no matter the structure of the subscripts. At
|
---|
| 100 | ;;times you might want to filter out the data nodes whose subscripting does not
|
---|
| 101 | ;;follow a specific format. You can define such a filter now. Some filter
|
---|
| 102 | ;;examples are shown below.
|
---|
| 103 | ;;
|
---|
| 104 | ;; - If you only want to see ^HL(772,IEN,"IN",1,0) enter a filter of "HL(772,#,"IN",1,0)".
|
---|
| 105 | ;; - If you want to see the message text in a file 772 entry, enter a filter of
|
---|
| 106 | ;; "HL(772,#,"IN",#,0)".
|
---|
| 107 | ;;
|
---|
| 108 | ;;You probably noticed that the "#" symbol must be placed at every subscript
|
---|
| 109 | ;;location where you want "any IEN" to be included.
|
---|
| 110 | Q
|
---|
| 111 | ;
|
---|
| 112 | TAG(TXT) W !!,$$CJ^XLFSTR("----------- "_IOINHI_TXT_IOINORM_"-----------",IOM+$L(IOINHI)+$L(IOINORM))
|
---|
| 113 | Q
|
---|
| 114 | ;
|
---|
| 115 | HD W @IOF,$$CJ^XLFSTR("$QUERY String Generator",IOM)
|
---|
| 116 | W !,$$REPEAT^XLFSTR("=",IOM)
|
---|
| 117 | QUIT
|
---|
| 118 | ;
|
---|
| 119 | EX N I,T F I=1:1 S T=$T(EX+I) QUIT:T'[";;" W !,$P(T,";;",2,99)
|
---|
| 120 | ;;$QUERY-based search strings can be sent to the S.HLEV-INFORMATION-SERVER at
|
---|
| 121 | ;;remote sites requesting data to be returned to the HL7SystemMonitoring mail
|
---|
| 122 | ;;group. Structuring $QUERY search strings can be complicated. This utility
|
---|
| 123 | ;;will assist you in creating these search strings.
|
---|
| 124 | ;;
|
---|
| 125 | ;;The search string(s) created should be pasted into the mail message sent to
|
---|
| 126 | ;;the remote site.
|
---|
| 127 | ;;
|
---|
| 128 | ;;The parts of the $QUERY search string are listed below.
|
---|
| 129 | ;;
|
---|
| 130 | ;; - $QUERY root
|
---|
| 131 | ;; - $QUERY stop value
|
---|
| 132 | ;; - # nodes to return
|
---|
| 133 | ;; - Node filter format
|
---|
| 134 | QUIT
|
---|
| 135 | ;
|
---|
| 136 | MONITOR(TXT) ; User requested that a monitor be run...
|
---|
| 137 | ; XTMP -- req
|
---|
| 138 | N HLEVIENE,MONM,PCE,QTIME,RECIP,VAL
|
---|
| 139 | ;
|
---|
| 140 | ; Email data request format: MONITOR^monitor-name^queue-time^recip's
|
---|
| 141 | ;
|
---|
| 142 | S MONM=$P(TXT,U) QUIT:MONM']"" ;->
|
---|
| 143 | S HLEVIENE=$O(^HLEV(776.1,"B",MONM,0)) QUIT:HLEVIENE'>0 ;->
|
---|
| 144 | QUIT:$P($G(^HLEV(776.1,+HLEVIENE,0)),U,5)'=1 ;-> Not remote requestable
|
---|
| 145 | S QTIME=$P(TXT,U,2) I QTIME'?7N1"."1.N S QTIME=$$NOW^XLFDT
|
---|
| 146 | ;
|
---|
| 147 | D ADDREQHD^HLEVSRV ; Initial header
|
---|
| 148 | D ADDREQ^HLEVSRV("Monitor: "_MONM_" [#"_HLEVIENE_"]")
|
---|
| 149 | ;
|
---|
| 150 | S ^XTMP(XTMP,"MONREQ","MON",HLEVIENE)=MONM
|
---|
| 151 | ;
|
---|
| 152 | S VAL=$P(TXT,U,2,999) Q:VAL']"" ;->
|
---|
| 153 | F PCE=1:1:$L(VAL,U) D
|
---|
| 154 | . S RECIP=$P(VAL,U,PCE) QUIT:RECIP']"" ;->
|
---|
| 155 | . S ^XTMP(XTMP,"MONREQ","MON",+HLEVIENE,RECIP)=""
|
---|
| 156 | . D ADDREQ^HLEVSRV(" recipient = "_RECIP)
|
---|
| 157 | ;
|
---|
| 158 | S ^XTMP(XTMP,"MONREQ","TASK")=$$Q1TIME^HLEVAPI0(HLEVIENE,1,QTIME,XTMP)
|
---|
| 159 | ;
|
---|
| 160 | Q
|
---|
| 161 | ;
|
---|
| 162 | FT(PMT,DEF,WAY) ; Return user-input text...
|
---|
| 163 | N DIR,DIRUT,DTOUT,DUOUT,X,Y
|
---|
| 164 | S DIR(0)="F"_$G(WAY)
|
---|
| 165 | S DIR("A")=PMT
|
---|
| 166 | I $G(DEF)]"" S DIR("B")=DEF
|
---|
| 167 | D ^DIR
|
---|
| 168 | I Y?1"^"1.E&($L(Y,U)=2) QUIT $P(Y,U,2) ;->
|
---|
| 169 | QUIT:$D(DIRUT)!($D(DTOUT))!($D(DUOUT)) U ;->
|
---|
| 170 | Q Y
|
---|
| 171 | ;
|
---|
| 172 | ADDMAIL(TXT) ; Add TXT, but be sure it is on or after NUM
|
---|
| 173 | N SNO
|
---|
| 174 | QUIT:$G(HLEVOVER) ;-> Over 5000 line limit...
|
---|
| 175 | S SNO=$O(^XTMP(XTMP,"HLMAIL",":"),-1)+1
|
---|
| 176 | I SNO<100 S SNO=100 ; Leave room at the top for messages
|
---|
| 177 | I SNO>5100 D QUIT ;->
|
---|
| 178 | . S HLEVOVER=1
|
---|
| 179 | . S TXT=" ***** 5000 Line Limit Reached! Some text not included. *****"
|
---|
| 180 | . S ^XTMP(XTMP,"HLMAIL",+SNO)=""
|
---|
| 181 | . S ^XTMP(XTMP,"HLMAIL",+SNO+1)=""
|
---|
| 182 | . S ^XTMP(XTMP,"HLMAIL",+SNO+2)=TXT
|
---|
| 183 | . S ^XTMP(XTMP,"HLMAIL",1)=""
|
---|
| 184 | . S ^XTMP(XTMP,"HLMAIL",2)=TXT
|
---|
| 185 | . S ^XTMP(XTMP,"HLMAIL",3)=""
|
---|
| 186 | S ^XTMP(XTMP,"HLMAIL",+SNO)=TXT
|
---|
| 187 | Q
|
---|
| 188 | ;
|
---|
| 189 | EOR ;HLEVSRV2 - Event Monitor SERVER ;5/16/03 14:42
|
---|