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

XWBRPCC.m

Go to the documentation of this file.
  1. XWBRPCC ;OIFO-Oakland/REM - M2M Broker Client Utilities ;06/05/2002 17:25
  1. ;;1.1;RPC BROKER;**28,34**;Mar 28, 1997
  1. ;
  1. QUIT
  1. ;
  1. ;p34 - added line to set "MODE" like in PRE^XWBM2MC. No longer will it
  1. ; be set in PRE^XWBM2MC - REQUEST.
  1. ;
  1. ; -------------------------------------------------------------------
  1. ; RPC Client: Methods Calls
  1. ; -------------------------------------------------------------------
  1. ;
  1. ; [Public/Supported Method]
  1. EXECUTE(XWBPARMS) ; -- execute rpc call
  1. ;
  1. ; -- validate parameters passed
  1. IF '$$VALIDATE(.XWBPARMS) QUIT 0
  1. ;
  1. ; -- call method to build request from parameters array
  1. DO REQUEST(.XWBPARMS)
  1. IF $G(XWBPARMS("RESULTS"))="" SET XWBPARMS("RESULTS")=$NA(^TMP("XWBRPC",$J,"XML"))
  1. QUIT $$EXECUTE^XWBVLC(.XWBPARMS)
  1. ;
  1. VALIDATE(XWBPARMS) ; -- validate parameters sent in
  1. ; // TODO: Do checks and build validate error message
  1. QUIT 1
  1. ;
  1. REQUEST(XWBPARMS) ; -- build XML request
  1. ;
  1. NEW XWBLINE,XWBPI,PTYPE
  1. SET XWBLINE=0
  1. SET XWBPARMS("MESSAGE TYPE")="Gov.VA.Med.RPC.Request"
  1. ;
  1. S XWBPARMS("MODE")="RPCBroker" ;*p34-added line to set "MODE" instead of in PRE^XWBM2MC.
  1. ;SET XWBPARMS("MODE")="single call" ;Comment out for **M2M
  1. ;
  1. IF $G(XWBPARMS("REQUEST"))="" SET XWBPARMS("REQUEST")=$NA(XWBPARMS("REQUEST","XML"))
  1. SET XWBREQ=XWBPARMS("REQUEST")
  1. KILL @XWBREQ
  1. ;
  1. DO ADD($$XMLHDR^XWBUTL())
  1. ;p34-added 'broker m2m' in XML message
  1. DO ADD("<vistalink type="""_$G(XWBPARMS("MESSAGE TYPE"))_""" mode="""_$G(XWBPARMS("MODE"))_""" >")
  1. ;
  1. I $G(XWBPARMS("MODE"))'="RPCBroker" D
  1. . DO ADD("<session>")
  1. . ;
  1. . ;**M2M - don't send DUZ
  1. . DO ADD("<duz value="""_$G(XWBPARMS("DUZ"))_""" />")
  1. . DO ADD("<security>")
  1. . ;
  1. . DO ADD("<token value="""_$G(XWBPARMS("TOKEN"))_""" />")
  1. . DO ADD("</security>")
  1. . DO ADD("</session>")
  1. . Q
  1. DO ADD("<rpc uri="""_$G(XWBPARMS("URI"))_""" method="""_$G(XWBPARMS("METHOD"))_""" >")
  1. IF $D(XWBPARMS("PARAMS"))>9 DO
  1. . DO ADD("<params>")
  1. . SET XWBPI=0
  1. . FOR SET XWBPI=$O(XWBPARMS("PARAMS",XWBPI)) Q:'XWBPI!(XWBCRLFL) DO
  1. . . SET PTYPE=$G(XWBPARMS("PARAMS",XWBPI,"TYPE"))
  1. . . IF PTYPE="STRING" DO STRING QUIT
  1. . . IF PTYPE="ARRAY" DO ARRAY QUIT
  1. . . IF PTYPE="REF" DO REF QUIT
  1. . DO ADD("</params>")
  1. DO ADD("</rpc>")
  1. DO ADD("</vistalink>")
  1. QUIT
  1. ;
  1. STRING ;
  1. ;;DO ADD("<param type=""string"" position="""_XWBPI_""" >"_$G(XWBPARMS("PARAMS",XWBPI,"VALUE"))_"</param>")
  1. I $$CTLCHK($G(XWBPARMS("PARAMS",XWBPI,"VALUE"))) S XWBCRLFL=1 D ERROR^XWBM2MC(8) Q
  1. DO ADD("<param type=""string"" position="""_XWBPI_""" >"_$$CHARCHK^XWBUTL($G(XWBPARMS("PARAMS",XWBPI,"VALUE")))_"</param>")
  1. QUIT
  1. ;
  1. ARRAY ;
  1. NEW XWBNAME
  1. DO ADD("<param type=""array"" position="""_XWBPI_""" >")
  1. DO ADD("<indices>")
  1. ;
  1. SET XWBNAME="" FOR SET XWBNAME=$O(XWBPARMS("PARAMS",XWBPI,"VALUE",XWBNAME)) Q:XWBNAME="" DO
  1. . ;;DO ADD("<index name="""_XWBNAME_""" value="""_$G(XWBPARMS("PARAMS",XWBPI,"VALUE",XWBNAME))_""" />")
  1. . I $$CTLCHK($G(XWBPARMS("PARAMS",XWBPI,"VALUE",XWBNAME))) S XWBCRLFL=1 D ERROR^XWBM2MC(8) Q
  1. . DO ADD("<index name="""_XWBNAME_""" >"_$$CHARCHK^XWBUTL($G(XWBPARMS("PARAMS",XWBPI,"VALUE",XWBNAME)))_"</index>")
  1. DO ADD("</indices>")
  1. DO ADD("</param>")
  1. QUIT
  1. ;
  1. REF ;
  1. I $$CTLCHK($G(XWBPARMS("PARAMS",XWBPI,"VALUE"))) S XWBCRLFL=1 D ERROR^XWBM2MC(8) Q
  1. DO ADD("<param type=""ref"" position="""_XWBPI_""" >"_$$CHARCHK^XWBUTL($G(XWBPARMS("PARAMS",XWBPI,"VALUE")))_"</param>")
  1. QUIT
  1. ;
  1. ADD(STR) ; -- add string to array
  1. SET XWBLINE=XWBLINE+1
  1. ;
  1. I $G(XWBDBUG) S ^REM("M2MCL","REQUEST",XWBLINE)=STR
  1. ;
  1. SET @XWBREQ@(XWBLINE)=STR
  1. QUIT
  1. ;
  1. CTLCHK(STR) ;Check for control character in string.
  1. ; Exception are $C(10)-LF, $C(13)-CR
  1. N I,Q,X
  1. S X=0
  1. I '(STR?.E1C.E) Q X
  1. S I="" F I=1:1:$L(STR) D
  1. .S Q="" F Q=1:1:31 D Q:X
  1. ..;I Q=10!(Q=13) Q
  1. ..;W !,"I= ",I," Q= ",Q
  1. ..I $E(STR,I)[$C(Q) S X=1 Q
  1. Q X
  1. ;
  1. ; -------------------------------------------------------------------
  1. ; Request Format Documentation
  1. ; -------------------------------------------------------------------
  1. ;
  1. ; [ Parameter Array Format -->> passed to REQUEST^XWBRPCC(.XWBPARMS) ]
  1. ;
  1. ; -- general information
  1. ; XWBPARMS("ADDRESS")="127.0.0.1"
  1. ; XWBPARMS("ADDRESS")="152.127.1.35"
  1. ; XWBPARMS("PORT")=9800
  1. ; XWBPARMS("DUZ")=990
  1. ; XWBPARMS("TOKEN")="SOMETHING"
  1. ; XWBPARMS("RPC NAME")="SDOE LIST ENCOUNTERS FOR PAT"
  1. ;
  1. ; -- string parameter type
  1. ; XWBPARMS("PARAMS",1,"TYPE")="STRING"
  1. ; XWBPARMS("PARAMS",1,"VALUE")=2
  1. ; XWBPARMS("PARAMS",2,"TYPE")="STRING"
  1. ; XWBPARMS("PARAMS",2,"VALUE")=2961001
  1. ; XWBPARMS("PARAMS",3,"TYPE")="STRING"
  1. ; XWBPARMS("PARAMS",3,"VALUE")=3030101
  1. ;
  1. ; -- sample array parameter type
  1. ; XWBPARMS("PARAMS",4,"TYPE")="ARRAY"
  1. ; XWBPARMS("PARAMS",4,"VALUE","FNAME")="JOE"
  1. ; XWBPARMS("PARAMS",4,"VALUE","LNAME")="GOODMAN"
  1. ;
  1. ; -------------------------------------------------------------------
  1. ;
  1. ; [ Sample XML produced by calling REQUEST^XWBRPCC(.XWBPARMS) ]
  1. ;
  1. ; <?xml version="1.0" encoding="utf-8" ?>
  1. ; <vistalink type="Gov.VA.Med.RPC.Request" mode="single call" >
  1. ; <rpc uri="XWB TEST CALL" >
  1. ; <session>
  1. ; <duz value="990" />
  1. ; <security>
  1. ; <token value="something" />
  1. ; </security>
  1. ; </session>
  1. ; <params>
  1. ; <param type="string" position="1" >2</param>
  1. ; <param type="string" position="2" >2961001</param>
  1. ; <param type="string" position="3" >3030101</param>
  1. ; <param type="array" position="4" >
  1. ; <indices>
  1. ; <index name="status" value="veteran" />
  1. ; <index name="gender" value="male" />
  1. ; </indices>
  1. ; </param>
  1. ; </params>
  1. ; </rpc>
  1. ; </vistalink>
  1. ;
  1. ; -------------------------------------------------------------------
  1. ;