1 | XWBRPCC ;OIFO-Oakland/REM - M2M Broker Client Utilities ;06/05/2002 17:25
|
---|
2 | ;;1.1;RPC BROKER;**28,34**;Mar 28, 1997
|
---|
3 | ;
|
---|
4 | QUIT
|
---|
5 | ;
|
---|
6 | ;p34 - added line to set "MODE" like in PRE^XWBM2MC. No longer will it
|
---|
7 | ; be set in PRE^XWBM2MC - REQUEST.
|
---|
8 | ;
|
---|
9 | ; -------------------------------------------------------------------
|
---|
10 | ; RPC Client: Methods Calls
|
---|
11 | ; -------------------------------------------------------------------
|
---|
12 | ;
|
---|
13 | ; [Public/Supported Method]
|
---|
14 | EXECUTE(XWBPARMS) ; -- execute rpc call
|
---|
15 | ;
|
---|
16 | ; -- validate parameters passed
|
---|
17 | IF '$$VALIDATE(.XWBPARMS) QUIT 0
|
---|
18 | ;
|
---|
19 | ; -- call method to build request from parameters array
|
---|
20 | DO REQUEST(.XWBPARMS)
|
---|
21 | IF $G(XWBPARMS("RESULTS"))="" SET XWBPARMS("RESULTS")=$NA(^TMP("XWBRPC",$J,"XML"))
|
---|
22 | QUIT $$EXECUTE^XWBVLC(.XWBPARMS)
|
---|
23 | ;
|
---|
24 | VALIDATE(XWBPARMS) ; -- validate parameters sent in
|
---|
25 | ; // TODO: Do checks and build validate error message
|
---|
26 | QUIT 1
|
---|
27 | ;
|
---|
28 | REQUEST(XWBPARMS) ; -- build XML request
|
---|
29 | ;
|
---|
30 | NEW XWBLINE,XWBPI,PTYPE
|
---|
31 | SET XWBLINE=0
|
---|
32 | SET XWBPARMS("MESSAGE TYPE")="Gov.VA.Med.RPC.Request"
|
---|
33 | ;
|
---|
34 | S XWBPARMS("MODE")="RPCBroker" ;*p34-added line to set "MODE" instead of in PRE^XWBM2MC.
|
---|
35 | ;SET XWBPARMS("MODE")="single call" ;Comment out for **M2M
|
---|
36 | ;
|
---|
37 | IF $G(XWBPARMS("REQUEST"))="" SET XWBPARMS("REQUEST")=$NA(XWBPARMS("REQUEST","XML"))
|
---|
38 | SET XWBREQ=XWBPARMS("REQUEST")
|
---|
39 | KILL @XWBREQ
|
---|
40 | ;
|
---|
41 | DO ADD($$XMLHDR^XWBUTL())
|
---|
42 | ;p34-added 'broker m2m' in XML message
|
---|
43 | DO ADD("<vistalink type="""_$G(XWBPARMS("MESSAGE TYPE"))_""" mode="""_$G(XWBPARMS("MODE"))_""" >")
|
---|
44 | ;
|
---|
45 | I $G(XWBPARMS("MODE"))'="RPCBroker" D
|
---|
46 | . DO ADD("<session>")
|
---|
47 | . ;
|
---|
48 | . ;**M2M - don't send DUZ
|
---|
49 | . DO ADD("<duz value="""_$G(XWBPARMS("DUZ"))_""" />")
|
---|
50 | . DO ADD("<security>")
|
---|
51 | . ;
|
---|
52 | . DO ADD("<token value="""_$G(XWBPARMS("TOKEN"))_""" />")
|
---|
53 | . DO ADD("</security>")
|
---|
54 | . DO ADD("</session>")
|
---|
55 | . Q
|
---|
56 | DO ADD("<rpc uri="""_$G(XWBPARMS("URI"))_""" method="""_$G(XWBPARMS("METHOD"))_""" >")
|
---|
57 | IF $D(XWBPARMS("PARAMS"))>9 DO
|
---|
58 | . DO ADD("<params>")
|
---|
59 | . SET XWBPI=0
|
---|
60 | . FOR SET XWBPI=$O(XWBPARMS("PARAMS",XWBPI)) Q:'XWBPI!(XWBCRLFL) DO
|
---|
61 | . . SET PTYPE=$G(XWBPARMS("PARAMS",XWBPI,"TYPE"))
|
---|
62 | . . IF PTYPE="STRING" DO STRING QUIT
|
---|
63 | . . IF PTYPE="ARRAY" DO ARRAY QUIT
|
---|
64 | . . IF PTYPE="REF" DO REF QUIT
|
---|
65 | . DO ADD("</params>")
|
---|
66 | DO ADD("</rpc>")
|
---|
67 | DO ADD("</vistalink>")
|
---|
68 | QUIT
|
---|
69 | ;
|
---|
70 | STRING ;
|
---|
71 | ;;DO ADD("<param type=""string"" position="""_XWBPI_""" >"_$G(XWBPARMS("PARAMS",XWBPI,"VALUE"))_"</param>")
|
---|
72 | I $$CTLCHK($G(XWBPARMS("PARAMS",XWBPI,"VALUE"))) S XWBCRLFL=1 D ERROR^XWBM2MC(8) Q
|
---|
73 | DO ADD("<param type=""string"" position="""_XWBPI_""" >"_$$CHARCHK^XWBUTL($G(XWBPARMS("PARAMS",XWBPI,"VALUE")))_"</param>")
|
---|
74 | QUIT
|
---|
75 | ;
|
---|
76 | ARRAY ;
|
---|
77 | NEW XWBNAME
|
---|
78 | DO ADD("<param type=""array"" position="""_XWBPI_""" >")
|
---|
79 | DO ADD("<indices>")
|
---|
80 | ;
|
---|
81 | SET XWBNAME="" FOR SET XWBNAME=$O(XWBPARMS("PARAMS",XWBPI,"VALUE",XWBNAME)) Q:XWBNAME="" DO
|
---|
82 | . ;;DO ADD("<index name="""_XWBNAME_""" value="""_$G(XWBPARMS("PARAMS",XWBPI,"VALUE",XWBNAME))_""" />")
|
---|
83 | . I $$CTLCHK($G(XWBPARMS("PARAMS",XWBPI,"VALUE",XWBNAME))) S XWBCRLFL=1 D ERROR^XWBM2MC(8) Q
|
---|
84 | . DO ADD("<index name="""_XWBNAME_""" >"_$$CHARCHK^XWBUTL($G(XWBPARMS("PARAMS",XWBPI,"VALUE",XWBNAME)))_"</index>")
|
---|
85 | DO ADD("</indices>")
|
---|
86 | DO ADD("</param>")
|
---|
87 | QUIT
|
---|
88 | ;
|
---|
89 | REF ;
|
---|
90 | I $$CTLCHK($G(XWBPARMS("PARAMS",XWBPI,"VALUE"))) S XWBCRLFL=1 D ERROR^XWBM2MC(8) Q
|
---|
91 | DO ADD("<param type=""ref"" position="""_XWBPI_""" >"_$$CHARCHK^XWBUTL($G(XWBPARMS("PARAMS",XWBPI,"VALUE")))_"</param>")
|
---|
92 | QUIT
|
---|
93 | ;
|
---|
94 | ADD(STR) ; -- add string to array
|
---|
95 | SET XWBLINE=XWBLINE+1
|
---|
96 | ;
|
---|
97 | I $G(XWBDBUG) S ^REM("M2MCL","REQUEST",XWBLINE)=STR
|
---|
98 | ;
|
---|
99 | SET @XWBREQ@(XWBLINE)=STR
|
---|
100 | QUIT
|
---|
101 | ;
|
---|
102 | CTLCHK(STR) ;Check for control character in string.
|
---|
103 | ; Exception are $C(10)-LF, $C(13)-CR
|
---|
104 | N I,Q,X
|
---|
105 | S X=0
|
---|
106 | I '(STR?.E1C.E) Q X
|
---|
107 | S I="" F I=1:1:$L(STR) D
|
---|
108 | .S Q="" F Q=1:1:31 D Q:X
|
---|
109 | ..;I Q=10!(Q=13) Q
|
---|
110 | ..;W !,"I= ",I," Q= ",Q
|
---|
111 | ..I $E(STR,I)[$C(Q) S X=1 Q
|
---|
112 | Q X
|
---|
113 | ;
|
---|
114 | ; -------------------------------------------------------------------
|
---|
115 | ; Request Format Documentation
|
---|
116 | ; -------------------------------------------------------------------
|
---|
117 | ;
|
---|
118 | ; [ Parameter Array Format -->> passed to REQUEST^XWBRPCC(.XWBPARMS) ]
|
---|
119 | ;
|
---|
120 | ; -- general information
|
---|
121 | ; XWBPARMS("ADDRESS")="127.0.0.1"
|
---|
122 | ; XWBPARMS("ADDRESS")="152.127.1.35"
|
---|
123 | ; XWBPARMS("PORT")=9800
|
---|
124 | ; XWBPARMS("DUZ")=990
|
---|
125 | ; XWBPARMS("TOKEN")="SOMETHING"
|
---|
126 | ; XWBPARMS("RPC NAME")="SDOE LIST ENCOUNTERS FOR PAT"
|
---|
127 | ;
|
---|
128 | ; -- string parameter type
|
---|
129 | ; XWBPARMS("PARAMS",1,"TYPE")="STRING"
|
---|
130 | ; XWBPARMS("PARAMS",1,"VALUE")=2
|
---|
131 | ; XWBPARMS("PARAMS",2,"TYPE")="STRING"
|
---|
132 | ; XWBPARMS("PARAMS",2,"VALUE")=2961001
|
---|
133 | ; XWBPARMS("PARAMS",3,"TYPE")="STRING"
|
---|
134 | ; XWBPARMS("PARAMS",3,"VALUE")=3030101
|
---|
135 | ;
|
---|
136 | ; -- sample array parameter type
|
---|
137 | ; XWBPARMS("PARAMS",4,"TYPE")="ARRAY"
|
---|
138 | ; XWBPARMS("PARAMS",4,"VALUE","FNAME")="JOE"
|
---|
139 | ; XWBPARMS("PARAMS",4,"VALUE","LNAME")="GOODMAN"
|
---|
140 | ;
|
---|
141 | ; -------------------------------------------------------------------
|
---|
142 | ;
|
---|
143 | ; [ Sample XML produced by calling REQUEST^XWBRPCC(.XWBPARMS) ]
|
---|
144 | ;
|
---|
145 | ; <?xml version="1.0" encoding="utf-8" ?>
|
---|
146 | ; <vistalink type="Gov.VA.Med.RPC.Request" mode="single call" >
|
---|
147 | ; <rpc uri="XWB TEST CALL" >
|
---|
148 | ; <session>
|
---|
149 | ; <duz value="990" />
|
---|
150 | ; <security>
|
---|
151 | ; <token value="something" />
|
---|
152 | ; </security>
|
---|
153 | ; </session>
|
---|
154 | ; <params>
|
---|
155 | ; <param type="string" position="1" >2</param>
|
---|
156 | ; <param type="string" position="2" >2961001</param>
|
---|
157 | ; <param type="string" position="3" >3030101</param>
|
---|
158 | ; <param type="array" position="4" >
|
---|
159 | ; <indices>
|
---|
160 | ; <index name="status" value="veteran" />
|
---|
161 | ; <index name="gender" value="male" />
|
---|
162 | ; </indices>
|
---|
163 | ; </param>
|
---|
164 | ; </params>
|
---|
165 | ; </rpc>
|
---|
166 | ; </vistalink>
|
---|
167 | ;
|
---|
168 | ; -------------------------------------------------------------------
|
---|
169 | ;
|
---|