Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: HLEVSRV2

HLEVSRV2.m

Go to the documentation of this file.
HLEVSRV2 ;O-OIFO/LJA - Event Monitor SERVER ;02/04/2004 14:42
 ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
 ;
QUERYSTR ; Generate $QUERY strings...
 N IOINHI,IOINORM,STRING,X
 ;
 S X="IOINHI;IOINORM" D ENDR^%ZISS
 ;
 D HD,EX,TELL^HLEVMST0("","0^0^999","Press RETURN to continue... ")
 ;
 F  S STRING=$$STRING QUIT:STRING']""  D
 .  S STRING(STRING)=""
 .  W !!,"Search string = ",IOINHI,STRING,IOINORM
 ;
 QUIT:$O(STRING(""))']""  ;->
 W !!,IOINHI,"Paste the following ""search strings"" into an email message and send to the"
 W !,"S.HLEV-INFORMATION-SERVER@REMOTE-SITE.",IOINORM
 W !!
 ;
 S STRING=""
 F  S STRING=$O(STRING(STRING)) Q:STRING']""  D
 .  W !,STRING
 ;
 Q
 ;
STRING() ; Ask user to input values to be built into a search string
 N FILTER,LIMIT,ROOT,STOP
 S ROOT=$$QUERYRT QUIT:ROOT']"" "" ;->
 S STOP=$$QUERYST(ROOT) QUIT:STOP']"" "" ;->
 S LIMIT=$$QUERYLM
 S FILTER=$$QUERYFL
 Q ROOT_U_STOP_U_LIMIT_U_FILTER
 ;
QUERYRT() ;
 N VAL
 D TAG("$QUERY ROOT")
 D EXRT
 W !
 S VAL=$$FT("Enter $QUERY ROOT") QUIT:VAL']""!(VAL=U) "" ;->
 Q VAL
 ;
EXRT N I,T F I=1:1 S T=$T(EXRT+I) QUIT:T'[";;"  W !,$P(T,";;",2,99)
 ;;Enter the $QUERY root now.  For example...
 ;;
 ;; - If you want to see all data for ^HL(772,25132), including the zero node
 ;;   and all data, enter "HL(772,25132)".
 ;; - If you want to see all data for HLMA(9132), including the zero node and
 ;;   all data, enter "^HLMA(9132)".
 ;;
 ;;NOTE:  Do not enter the leading up-arrow before a global reference.
 Q
 ;
QUERYST(ROOT) ;
 N VAL
 D TAG("$QUERY Stop Value")
 D EXST
 S VAL=$E(ROOT,$L(ROOT)),VAL=$S(VAL=")":$E(ROOT,1,$L(ROOT)-1)_",",1:ROOT)
 W !
 S VAL=$$FT("Enter $QUERY STOP VALUE",VAL) QUIT:VAL']""!(VAL=U) "" ;->
 Q VAL
 ;
EXST N I,T F I=1:1 S T=$T(EXST+I) QUIT:T'[";;"  W !,$P(T,";;",2,99)
 ;;Enter the $QUERY stop value now.  For example...
 ;;
 ;; - Assuming you entered "HL(772,25132)" (see helps under root entry above),
 ;;   you would enter a stop value of "HL(772,25132,".
 ;; - Assuming you entered "HLMA(9132)", enter a stop value of "HLMA(9132,".
 Q
 ;
QUERYLM() ;
 N VAL
 D TAG("Data Node Limit")
 D EXLM
 R !!,"Enter LIMIT: ",VAL:60 Q:VAL'>0 "" ;->
 QUIT:VAL>1000 1000 ;->
 Q VAL
 ;
EXLM N I,T F I=1:1 S T=$T(EXLM+I) QUIT:T'[";;"  W !,$P(T,";;",2,99)
 ;;You can limit the number of nodes that are returned.  This is especially 
 ;;helpful when you don't know how many data nodes exist and will be returned by
 ;;your request.  (You don't want to send a request, thinking you'll get around
 ;;20 data nodes back, when 20,000 data nodes exist!)
 ;;
 ;;Enter the maximum number of nodes you want returned.
 ;;
 ;;NOTE:  The maximum number of data nodes returnable by each $QUERY search 
 ;;       string is 1000.  So, there is no point entering any limit above 1000!
 Q
 ;
QUERYFL() ;
 N VAL
 D TAG("Filter Reference")
 D EXFL
 W !
 S VAL=$$FT("Enter FILTER REFERENCE","","O") QUIT:VAL']""!(VAL=U) "" ;->
 Q VAL
 ;
EXFL N I,T F I=1:1 S T=$T(EXFL+I) QUIT:T'[";;"  W !,$P(T,";;",2,99)
 ;;$QUERY returns all data nodes no matter the structure of the subscripts.  At
 ;;times you might want to filter out the data nodes whose subscripting does not
 ;;follow a specific format.  You can define such a filter now.  Some filter
 ;;examples are shown below.
 ;;
 ;; - If you only want to see ^HL(772,IEN,"IN",1,0) enter a filter of "HL(772,#,"IN",1,0)".
 ;; - If you want to see the message text in a file 772 entry, enter a filter of
 ;;   "HL(772,#,"IN",#,0)".
 ;;
 ;;You probably noticed that the "#" symbol must be placed at every subscript
 ;;location where you want "any IEN" to be included.
 Q
 ;
TAG(TXT) W !!,$$CJ^XLFSTR("----------- "_IOINHI_TXT_IOINORM_"-----------",IOM+$L(IOINHI)+$L(IOINORM))
 Q
 ;
HD W @IOF,$$CJ^XLFSTR("$QUERY String Generator",IOM)
 W !,$$REPEAT^XLFSTR("=",IOM)
 QUIT
 ;
EX N I,T F I=1:1 S T=$T(EX+I) QUIT:T'[";;"  W !,$P(T,";;",2,99)
 ;;$QUERY-based search strings can be sent to the S.HLEV-INFORMATION-SERVER at
 ;;remote sites requesting data to be returned to the HL7SystemMonitoring mail
 ;;group.  Structuring $QUERY search strings can be complicated.  This utility
 ;;will assist you in creating these search strings.
 ;;
 ;;The search string(s) created should be pasted into the mail message sent to
 ;;the remote site.
 ;;
 ;;The parts of the $QUERY search string are listed below.
 ;;
 ;;  - $QUERY root
 ;;  - $QUERY stop value
 ;;  - # nodes to return
 ;;  - Node filter format
 QUIT
 ;
MONITOR(TXT) ; User requested that a monitor be run...
 ; XTMP -- req
 N HLEVIENE,MONM,PCE,QTIME,RECIP,VAL
 ;
 ; Email data request format: MONITOR^monitor-name^queue-time^recip's
 ;
 S MONM=$P(TXT,U) QUIT:MONM']""  ;->
 S HLEVIENE=$O(^HLEV(776.1,"B",MONM,0)) QUIT:HLEVIENE'>0  ;->
 QUIT:$P($G(^HLEV(776.1,+HLEVIENE,0)),U,5)'=1  ;-> Not remote requestable
 S QTIME=$P(TXT,U,2) I QTIME'?7N1"."1.N S QTIME=$$NOW^XLFDT
 ;
 D ADDREQHD^HLEVSRV ; Initial header
 D ADDREQ^HLEVSRV("Monitor: "_MONM_" [#"_HLEVIENE_"]")
 ;
 S ^XTMP(XTMP,"MONREQ","MON",HLEVIENE)=MONM
 ;
 S VAL=$P(TXT,U,2,999) Q:VAL']""  ;->
 F PCE=1:1:$L(VAL,U) D
 .  S RECIP=$P(VAL,U,PCE) QUIT:RECIP']""  ;->
 .  S ^XTMP(XTMP,"MONREQ","MON",+HLEVIENE,RECIP)=""
 .  D ADDREQ^HLEVSRV("         recipient = "_RECIP)
 ;
 S ^XTMP(XTMP,"MONREQ","TASK")=$$Q1TIME^HLEVAPI0(HLEVIENE,1,QTIME,XTMP)
 ;
 Q
 ;
FT(PMT,DEF,WAY) ; Return user-input text...
 N DIR,DIRUT,DTOUT,DUOUT,X,Y
 S DIR(0)="F"_$G(WAY)
 S DIR("A")=PMT
 I $G(DEF)]"" S DIR("B")=DEF
 D ^DIR
 I Y?1"^"1.E&($L(Y,U)=2) QUIT $P(Y,U,2) ;->
 QUIT:$D(DIRUT)!($D(DTOUT))!($D(DUOUT)) U ;->
 Q Y
 ;
ADDMAIL(TXT) ; Add TXT, but be sure it is on or after NUM
 N SNO
 QUIT:$G(HLEVOVER)  ;-> Over 5000 line limit...
 S SNO=$O(^XTMP(XTMP,"HLMAIL",":"),-1)+1
 I SNO<100 S SNO=100 ; Leave room at the top for messages
 I SNO>5100 D  QUIT  ;->
 .  S HLEVOVER=1
 .  S TXT="     ***** 5000 Line Limit Reached!  Some text not included. *****"
 .  S ^XTMP(XTMP,"HLMAIL",+SNO)=""
 .  S ^XTMP(XTMP,"HLMAIL",+SNO+1)=""
 .  S ^XTMP(XTMP,"HLMAIL",+SNO+2)=TXT
 .  S ^XTMP(XTMP,"HLMAIL",1)=""
 .  S ^XTMP(XTMP,"HLMAIL",2)=TXT
 .  S ^XTMP(XTMP,"HLMAIL",3)=""
 S ^XTMP(XTMP,"HLMAIL",+SNO)=TXT
 Q
 ;
EOR ;HLEVSRV2 - Event Monitor SERVER ;5/16/03 14:42