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

HDISVM00.m

Go to the documentation of this file.
HDISVM00 ;BPFO/JRP - SERVER TO RECEIVE XML MESSAGE;1/4/2005
 ;;1.0;HEALTH DATA & INFORMATICS;**6**;Feb 22, 2005
 ;
XML ;Main entry point for XML server options
 ; Input: (As defined by MailMan and Kernel)
 ;        XMREC - Executable code to "read" next line of message
 ;        XQSUB - Subject of received message
 ;        XQSOP - Server option name
 ;        XQMSG,XMZ - Msg IEN in file 3.9
 ;        XQSND,XMFROM - Msg sender
 ;Output: None
 ;  Note: Input is not checked (assumes existence)
 ;
 N XMLARR,PRSARR,ERRARR,STOP,LINE,TYPE
 ;Establish temporary globals
 S XMLARR=$NA(^TMP(XQSOP,$J,"XML"))
 S PRSARR=$NA(^TMP(XQSOP,$J,"PARSED"))
 S ERRARR=$NA(^TMP(XQSOP,$J,"ERROR"))
 K @XMLARR,@PRSARR,@ERRARR
 ;Copy message to temporary global
 S STOP=0
 F LINE=1:1 D  Q:STOP
 .X XMREC
 .I $D(XMER) I (XMER<0) S STOP=1 Q
 .S @XMLARR@(LINE)=XMRG
 ;Parse message
 D SAX^HDISVM01(XMLARR,PRSARR)
 ;Get type of system out of parameter file
 S TYPE=+$$GETTYPE^HDISVF02()
 ;Process messages on centralized server
 I TYPE=2 D MAIN^HDISVS00(PRSARR,ERRARR)
 ;Process messages on VistA (client) system
 I TYPE=1 D MAIN^HDISVC00(PRSARR,ERRARR)
 ;Error(s) occurred
 I $D(@ERRARR) D
 .;Send error message
 .D ERROR(ERRARR,XQMSG,XQSOP,XMFROM)
 .;Set message status
 .S X=$$SRVTIME^XMS1(XQMSG,"S."_XQSOP,"ERROR FOUND DURING PROCESSING")
 ;Delete message (don't delete if errors found)
 I '$D(@ERRARR) D ZAPSERV^XMXAPI("S."_XQSOP,XQMSG)
 ;Done
 K @XMLARR,@PRSARR,@ERRARR
 Q
 ;
ERROR(ERRARR,MSGNUM,SRVR,SNDR) ;Send error message
 ; Input : ERRARR - Error array (closed root)
 ;         MSGNUM - Message number of received message (XMZ)
 ;         SRVR - Name of server option (XQSOP)
 ;         SNDR - Sender of message (XMFROM)
 ;Output : None
 ; Notes : Existance/validity of input assumed (internal call)
 N NAME,HDISPRAM,HDISFLAG,HDISTASK
 ;Set bulletin parameters
 S HDISPRAM(1)=MSGNUM
 S HDISPRAM(2)=SNDR
 S HDISPRAM(3)=SRVR
 ;Send bulletin
 S NAME="HDIS XML MSG PROCESS ERROR"
 S HDISFLAG("FROM")="HDIS XML MESSAGE SERVER"
 D TASKBULL^XMXAPI(DUZ,NAME,.HDISPRAM,ERRARR,,.HDISFLAG,.HDISTASK)
 I $G(XMERR) D
 .;Error generating bulletin - log error text
 .D ERR2XTMP^HDISVU01("HDI-XM","Server error bulletin",$NA(^TMP("XMERR",$J)))
 .K XMERR,^TMP("XMERR",$J)
 Q