- XOBVRMX ;mjk/alb - VistaLink Request Manager - Parse XML Requests using SAX interface ; 07/27/2002 13:00
- ;;1.6;VistALink;;May 08, 2009;Build 15
- ;Per VHA directive 2004-038, this routine should not be modified.
- QUIT
- ;
- ; -- parse xml
- EN(DOC,XOBOPT,XOBDATA,XOBHDLR) ; -- uses SAX parser
- NEW XOBCBK,XOBICBK
- DO SET(.XOBCBK)
- DO EN^MXMLPRSE(DOC,.XOBCBK,.XOBOPT)
- ENQ QUIT
- ;
- SET(XOBCBK) ; -- set the event interface entry points
- SET XOBCBK("STARTELEMENT")="ELEST^XOBVRMX"
- SET XOBCBK("ENDELEMENT")="ELEND^XOBVRMX"
- SET XOBCBK("CHARACTERS")="CHR^XOBVRMX"
- QUIT
- ;
- ELEST(ELE,ATR) ; -- element start callback
- IF ELE="VistaLink" DO
- . SET XOBDATA("VL VERSION")=$GET(ATR("version"),"1.0")
- . ;
- . ; -- set up request handler for message type
- . SET XOBHDLR=+$$MSGTYPE^XOBVRH($GET(ATR("messageType"),"[unknown]"),.XOBHDLR)
- ;
- ; -- do start element callback for request handler
- IF $GET(XOBHDLR(XOBHDLR)) XECUTE $GET(XOBHDLR(XOBHDLR,"CB","ELEST"))
- QUIT
- ;
- ELEND(ELE) ; -- element end callback
- ; -- do end element callback for request handler
- IF $GET(XOBHDLR(XOBHDLR)) XECUTE $GET(XOBHDLR(XOBHDLR,"CB","ELEND"))
- QUIT
- ;
- CHR(TXT) ; -- handler characters callback
- ; -- do character callback for request handler
- IF $GET(XOBHDLR(XOBHDLR)) XECUTE $GET(XOBHDLR(XOBHDLR,"CB","CHR"))
- QUIT
- ;
- ESC(X) ; -- convert special characters to \x format ; not currently used -- note QUIT at start
- QUIT X
- ;
- NEW C,Y,Z
- FOR Z=1:1 SET C=$EXTRACT(X,Z) QUIT:C="" DO
- .SET Y=$TRANSLATE(C,$CHAR(9,10,13,92),"tnc")
- .SET:C'=Y $EXTRACT(X,Z)="" ;$S(Y="":"\\",1:"\"_Y),Z=Z+1
- QUIT X
- ;
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXOBVRMX 1611 printed Feb 19, 2025@00:11:21 Page 2
- XOBVRMX ;mjk/alb - VistaLink Request Manager - Parse XML Requests using SAX interface ; 07/27/2002 13:00
- +1 ;;1.6;VistALink;;May 08, 2009;Build 15
- +2 ;Per VHA directive 2004-038, this routine should not be modified.
- +3 QUIT
- +4 ;
- +5 ; -- parse xml
- EN(DOC,XOBOPT,XOBDATA,XOBHDLR) ; -- uses SAX parser
- +1 NEW XOBCBK,XOBICBK
- +2 DO SET(.XOBCBK)
- +3 DO EN^MXMLPRSE(DOC,.XOBCBK,.XOBOPT)
- ENQ QUIT
- +1 ;
- SET(XOBCBK) ; -- set the event interface entry points
- +1 SET XOBCBK("STARTELEMENT")="ELEST^XOBVRMX"
- +2 SET XOBCBK("ENDELEMENT")="ELEND^XOBVRMX"
- +3 SET XOBCBK("CHARACTERS")="CHR^XOBVRMX"
- +4 QUIT
- +5 ;
- ELEST(ELE,ATR) ; -- element start callback
- +1 IF ELE="VistaLink"
- Begin DoDot:1
- +2 SET XOBDATA("VL VERSION")=$GET(ATR("version"),"1.0")
- +3 ;
- +4 ; -- set up request handler for message type
- +5 SET XOBHDLR=+$$MSGTYPE^XOBVRH($GET(ATR("messageType"),"[unknown]"),.XOBHDLR)
- End DoDot:1
- +6 ;
- +7 ; -- do start element callback for request handler
- +8 IF $GET(XOBHDLR(XOBHDLR))
- XECUTE $GET(XOBHDLR(XOBHDLR,"CB","ELEST"))
- +9 QUIT
- +10 ;
- ELEND(ELE) ; -- element end callback
- +1 ; -- do end element callback for request handler
- +2 IF $GET(XOBHDLR(XOBHDLR))
- XECUTE $GET(XOBHDLR(XOBHDLR,"CB","ELEND"))
- +3 QUIT
- +4 ;
- CHR(TXT) ; -- handler characters callback
- +1 ; -- do character callback for request handler
- +2 IF $GET(XOBHDLR(XOBHDLR))
- XECUTE $GET(XOBHDLR(XOBHDLR,"CB","CHR"))
- +3 QUIT
- +4 ;
- ESC(X) ; -- convert special characters to \x format ; not currently used -- note QUIT at start
- +1 QUIT X
- +2 ;
- +3 NEW C,Y,Z
- +4 FOR Z=1:1
- SET C=$EXTRACT(X,Z)
- if C=""
- QUIT
- Begin DoDot:1
- +5 SET Y=$TRANSLATE(C,$CHAR(9,10,13,92),"tnc")
- +6 ;$S(Y="":"\\",1:"\"_Y),Z=Z+1
- if C'=Y
- SET $EXTRACT(X,Z)=""
- End DoDot:1
- +7 QUIT X
- +8 ;