1 | ONCSAPI3 ;Hines OIFO/SG - COLLABORATIVE STAGING (CALCULATE) ; 5/18/04 9:47am
|
---|
2 | ;;2.11;ONCOLOGY;**40**;Mar 07, 1995
|
---|
3 | ;
|
---|
4 | ;--- SOAP REQUST TO THE COLLABORATIVE STAGING WEB SERVICE
|
---|
5 | ;
|
---|
6 | ; <?xml version="1.0" encoding="utf-8"?>
|
---|
7 | ; <soap:Envelope
|
---|
8 | ; xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
|
---|
9 | ; soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
|
---|
10 | ; <soap:Body>
|
---|
11 | ; <CS-CALCULATE xmlns="http://vista.med.va.gov/oncology">
|
---|
12 | ; <HIST> ... </HIST>
|
---|
13 | ; <SITE> ... </SITE>
|
---|
14 | ; <BEHAV> ... </BEHAV>
|
---|
15 | ; <GRADE> ... </GRADE>
|
---|
16 | ; <AGE> ... </AGE>
|
---|
17 | ; <SIZE> ... </SIZE>
|
---|
18 | ; <EXT> ... </EXT>
|
---|
19 | ; <EXTEVAL> ... </EXTEVAL>
|
---|
20 | ; <NODES> ... </NODES>
|
---|
21 | ; <NODESEVAL> ... </NODESEVAL>
|
---|
22 | ; <LNPOS> ... </LNPOS>
|
---|
23 | ; <LNEXAM> ... </LNEXAM>
|
---|
24 | ; <METS> ... </METS>
|
---|
25 | ; <METSEVAL> ... </METSEVAL>
|
---|
26 | ; <SSF1> ... </SSF1>
|
---|
27 | ; <SSF2> ... </SSF2>
|
---|
28 | ; <SSF3> ... </SSF3>
|
---|
29 | ; <SSF4> ... </SSF4>
|
---|
30 | ; <SSF5> ... </SSF5>
|
---|
31 | ; <SSF6> ... </SSF6>
|
---|
32 | ; </CS-CALCULATE>
|
---|
33 | ; </soap:Body >
|
---|
34 | ; </soap:Envelope>
|
---|
35 | ;
|
---|
36 | ;--- SOAP RESPONSE FROM THE COLLABORATIVE STAGING WEB SERVICE
|
---|
37 | ;
|
---|
38 | ; <?xml version="1.0" encoding="utf-8"?>
|
---|
39 | ; <soap:Envelope
|
---|
40 | ; xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
|
---|
41 | ; soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
|
---|
42 | ; <soap:Body>
|
---|
43 | ; <CS-RESPONSE xmlns="http://vista.med.va.gov/oncology">
|
---|
44 | ; <CS-STOR>
|
---|
45 | ; <AJCC> ... </AJCC>
|
---|
46 | ; <N> ... </N>
|
---|
47 | ; <NDESCR> ... </NDESCR>
|
---|
48 | ; <M> ... </M>
|
---|
49 | ; <MDESCR> ... </MDESCR>
|
---|
50 | ; <SS1977> ... </SS1977>
|
---|
51 | ; <SS2000> ... </SS2000>
|
---|
52 | ; <T> ... </T>
|
---|
53 | ; <TDESCR> ... </TDESCR
|
---|
54 | ; </CS-STOR>
|
---|
55 | ; <CS-DISP>
|
---|
56 | ; <AJCC> ... </AJCC>
|
---|
57 | ; <N> ... </N>
|
---|
58 | ; <NDESCR> ... </NDESCR>
|
---|
59 | ; <M> ... </M>
|
---|
60 | ; <MDESCR> ... </MDESCR>
|
---|
61 | ; <SS1977> ... </SS1977>
|
---|
62 | ; <SS2000> ... </SS2000>
|
---|
63 | ; <T> ... </T>
|
---|
64 | ; <TDESCR> ... </TDESCR>
|
---|
65 | ; </CS-DISP>
|
---|
66 | ; <APIVER> ... </APIVER>
|
---|
67 | ; <VERSION> ... </VERSION>
|
---|
68 | ; </CS-RESPONSE>
|
---|
69 | ; <soap:Fault>
|
---|
70 | ; <faultcode> ... </faultcode>
|
---|
71 | ; <faultstring> ... </faultstring>
|
---|
72 | ; <detail>
|
---|
73 | ; <ERROR> ... </ERROR>
|
---|
74 | ; <MSG>
|
---|
75 | ; ...
|
---|
76 | ; </MSG>
|
---|
77 | ; <RC> ... </RC>
|
---|
78 | ; </detail>
|
---|
79 | ; </soap:Fault>
|
---|
80 | ; </soap:Body >
|
---|
81 | ; </soap:Envelope>
|
---|
82 | ;
|
---|
83 | Q
|
---|
84 | ;
|
---|
85 | ;***** CALLS THE COLLABORATIVE STAGING WEB SERVICE
|
---|
86 | ;
|
---|
87 | ; [.ONCSAPI] Reference to the API descriptor (see ^ONCSAPI)
|
---|
88 | ;
|
---|
89 | ; .INPUT( Reference to a local variable containg
|
---|
90 | ; input parameters.
|
---|
91 | ;
|
---|
92 | ; "AGE") Age at Diagnosis
|
---|
93 | ; "BEHAV") Behavior Code ICD-O-3
|
---|
94 | ; "EXT") CS Extension
|
---|
95 | ; "EXTEVAL") CS Size/Ext Eval
|
---|
96 | ; "GRADE") Grade
|
---|
97 | ; "HIST") Histologic Type ICD-O-3
|
---|
98 | ; "LNPOS") Regional Nodes Positive
|
---|
99 | ; "LNEXAM") Regional Nodes Examined
|
---|
100 | ; "METS") CS Mets at DX
|
---|
101 | ; "METSEVAL") CS Mets Eval
|
---|
102 | ; "NODES") CS Lymph Nodes
|
---|
103 | ; "NODESEVAL") CS Reg Nodes Eval
|
---|
104 | ; "SITE") Primary site
|
---|
105 | ; "SIZE") CS Tumor Size
|
---|
106 | ; "SSF1") CS Site-Specific Factor 1
|
---|
107 | ; "SSF2") CS Site-Specific Factor 2
|
---|
108 | ; "SSF3") CS Site-Specific Factor 3
|
---|
109 | ; "SSF4") CS Site-Specific Factor 4
|
---|
110 | ; "SSF5") CS Site-Specific Factor 5
|
---|
111 | ; "SSF6") CS Site-Specific Factor 6
|
---|
112 | ;
|
---|
113 | ; .ONCSTOR( Reference to a local variable where output
|
---|
114 | ; storage values are returned.
|
---|
115 | ;
|
---|
116 | ; "AJCC") Derived AJCC Stage Group
|
---|
117 | ; "N") Derived AJCC N
|
---|
118 | ; "NDESCR") Derived AJCC N Descriptor
|
---|
119 | ; "M") Derived AJCC M
|
---|
120 | ; "MDESCR") Derived AJCC M Descriptor
|
---|
121 | ; "SS1977") Derived SS1977
|
---|
122 | ; "SS2000") Derived SS2000
|
---|
123 | ; "T") Derived AJCC T
|
---|
124 | ; "TDESCR") Derived AJCC T Descriptor
|
---|
125 | ;
|
---|
126 | ; .ONCDISP( Reference to a local variable where output
|
---|
127 | ; display values are returned.
|
---|
128 | ;
|
---|
129 | ; "AJCC") Derived AJCC Stage Group
|
---|
130 | ; "N") Derived AJCC N
|
---|
131 | ; "NDESCR") Derived AJCC N Descriptor
|
---|
132 | ; "M") Derived AJCC M
|
---|
133 | ; "MDESCR") Derived AJCC M Descriptor
|
---|
134 | ; "SS1977") Derived SS1977
|
---|
135 | ; "SS2000") Derived SS2000
|
---|
136 | ; "T") Derived AJCC T
|
---|
137 | ; "TDESCR") Derived AJCC T Descriptor
|
---|
138 | ;
|
---|
139 | ; .ONCSTAT( Reference to a local variable where status
|
---|
140 | ; values are returned.
|
---|
141 | ;
|
---|
142 | ; "APIVER") Version of the CS API
|
---|
143 | ;
|
---|
144 | ; "ERROR", Error Code
|
---|
145 | ; Name) Symbolic names of error bits (see
|
---|
146 | ; the INVLDINP^ONCSAPI3 for details)
|
---|
147 | ;
|
---|
148 | ; "MSG",
|
---|
149 | ; i) Error message returned by the CStage_calculate
|
---|
150 | ;
|
---|
151 | ; "RC") Error code returned by the CS web-service
|
---|
152 | ;
|
---|
153 | ; "VERSION") Version of the service
|
---|
154 | ;
|
---|
155 | ; The ^TMP("ONCSAPI3",$J) global node is used by this function.
|
---|
156 | ;
|
---|
157 | ; Note: Patch XT*7.3*67 (VistA XML Parser)) is required for this
|
---|
158 | ; API to work.
|
---|
159 | ;
|
---|
160 | ; Return values:
|
---|
161 | ;
|
---|
162 | ; <0 Error Descriptor (see ^ONCSAPI for details)
|
---|
163 | ; For example:
|
---|
164 | ; "-1^Missing input parameters^CALC+4^ONCSAPI"
|
---|
165 | ;
|
---|
166 | ; 0 Ok
|
---|
167 | ;
|
---|
168 | ; 1 Probably Ok (warnings)
|
---|
169 | ;
|
---|
170 | CALC(ONCSAPI,INPUT,ONCSTOR,ONCDISP,ONCSTAT) ;
|
---|
171 | N CBK,ONCRDAT,ONCSDAT,ONCXML,RC,TMP,URL,X
|
---|
172 | D CLEAR^ONCSAPIE()
|
---|
173 | S ONCRDAT=$NA(^TMP("ONCSAPI3",$J))
|
---|
174 | K ONCDISP,ONCSTAT,ONCSTOR,@ONCRDAT
|
---|
175 | F X="AJCC","N","NDESCR","M","MDESCR","SS1977","SS2000","T","TDESCR" D
|
---|
176 | . S (ONCSTOR(X),ONCDISP(X))=""
|
---|
177 | Q:$D(INPUT)<10 $$ERROR^ONCSAPIE(-1)
|
---|
178 | ;
|
---|
179 | ;--- Get the server URL
|
---|
180 | S URL=$$GETCSURL^ONCSAPIU() Q:URL<0 URL
|
---|
181 | ;
|
---|
182 | ;--- Prepare the request parameters
|
---|
183 | S RC=$$PARAMS^ONCSAPIR("ONCSDAT","CS-CALCULATE",.INPUT)
|
---|
184 | Q:RC<0 RC
|
---|
185 | ;
|
---|
186 | S RC=0 D
|
---|
187 | . ;--- Call the web service
|
---|
188 | . D:$G(ONCSAPI("DEBUG"))
|
---|
189 | . . D ZW^ONCSAPIU("ONCSDAT","*** 'CALCULATE' REQUEST ***")
|
---|
190 | . S RC=$$REQUEST^ONCSAPIR(URL,ONCRDAT,"ONCSDAT") Q:RC<0
|
---|
191 | . D:$G(ONCSAPI("DEBUG"))
|
---|
192 | . . D ZW^ONCSAPIU(ONCRDAT,"*** 'CALCULATE' RESPONSE ***")
|
---|
193 | . ;--- Parse the results
|
---|
194 | . D SETCBK(.CBK),EN^MXMLPRSE(ONCRDAT,.CBK,"W")
|
---|
195 | . ;--- Check the CS error codes
|
---|
196 | . S:$G(ONCXML("RC"))<0 ONCSTAT("RC")=ONCXML("RC")
|
---|
197 | . D INVLDINP(.STATUS)
|
---|
198 | . ;--- Check for parsing and web-service errors
|
---|
199 | . S RC=$$CHKERR^ONCSAPIR(.ONCXML,$NA(ONCSTAT("MSG")))
|
---|
200 | ;
|
---|
201 | ;--- Cleanup
|
---|
202 | K ^TMP("ONCSAPI3",$J)
|
---|
203 | Q $S(RC<0:RC,$D(ONCSTAT("MSG"))>1:1,1:0)
|
---|
204 | ;
|
---|
205 | ;***** COMPILES A LIST OF SYMBOLIC ERROR CODES
|
---|
206 | ;
|
---|
207 | ; .STATUS Reference to a local variable where the list
|
---|
208 | ; of invalid input parameters is created.
|
---|
209 | ;
|
---|
210 | INVLDINP(STATUS) ;
|
---|
211 | ;;01^ NONFAILMSG ^
|
---|
212 | ;;02^ EXTAJCCFAIL ^ CS Extension
|
---|
213 | ;;03^ NODESAJCCFAIL ^ CS Lymph Nodes
|
---|
214 | ;;04^ METSAJCCFAIL ^ CS Mets at DX
|
---|
215 | ;;05^ EXTEVALFAIL ^ Ext Eval
|
---|
216 | ;;06^ NODESEVALFAIL ^ Nodes Eval
|
---|
217 | ;;07^ METSEVALFAIL ^ Mets Eval
|
---|
218 | ;;08^ STAGEAJCCFAIL ^ Stage Group
|
---|
219 | ;;09^ EXT77FAIL ^ SEER 77 Ext
|
---|
220 | ;;10^ NODES77FAIL ^ SEER 77 Nodes
|
---|
221 | ;;11^ METS77FAIL ^ SEER 77 Mets
|
---|
222 | ;;12^ STAGE77FAIL ^ SEER Summary Stage 77
|
---|
223 | ;;13^ EXT2000FAIL ^ SEER 2000 Ext
|
---|
224 | ;;14^ NODES2000FAIL ^ SEER 2000 Nodes
|
---|
225 | ;;15^ METS2000FAIL ^ SEER 2000 Mets
|
---|
226 | ;;16^ STAGE2000FAIL ^ SEER Summary Stage 2000
|
---|
227 | ;;17^ SITEFAIL ^ Primary Site
|
---|
228 | ;;18^ HISTFAIL ^ Histology
|
---|
229 | ;
|
---|
230 | N ERR,IB,IN,NLST,TMP
|
---|
231 | S ERR=+$G(STATUS("ERROR")) Q:'ERR
|
---|
232 | S ERR=$REVERSE($$CNV^XLFUTL(ERR,2))
|
---|
233 | ;--- Analyze separate bits of the error code
|
---|
234 | F IB=1:1:18 D:$E(ERR,IB)
|
---|
235 | . S NLST=$TR($P($T(INVLDINP+IB),U,2)," ")
|
---|
236 | . F IN=1:1 S TMP=$P(NLST,",",IN) Q:TMP="" D
|
---|
237 | . . S STATUS("ERROR",TMP)=""
|
---|
238 | Q
|
---|
239 | ;
|
---|
240 | ;***** SETS THE EVENT INTERFACE ENTRY POINTS
|
---|
241 | SETCBK(CBK) ;
|
---|
242 | ;;CHARACTERS^TEXT^ONCSAPI3
|
---|
243 | ;
|
---|
244 | D SETCBK^ONCSAPIX(.CBK,"SETCBK^ONCSAPI3")
|
---|
245 | Q
|
---|
246 | ;
|
---|
247 | ;***** TEXT CALLBACK FOR THE SAX PARSER
|
---|
248 | ;
|
---|
249 | ; TXT Line of unmarked text
|
---|
250 | ;
|
---|
251 | TEXT(TXT) ;
|
---|
252 | N ELMT,L,SECT
|
---|
253 | ;--- Individual elements
|
---|
254 | S L=$L(ONCXML("PATH"),","),ELMT=$P(ONCXML("PATH"),",",L-1,L)
|
---|
255 | I ELMT="detail,MSG" D Q
|
---|
256 | . S ONCSTAT("MSG",$O(ONCSTAT("MSG"," "),-1)+1)=$TR(TXT,U,"~")
|
---|
257 | I ELMT="CS-RESPONSE,APIVER" D Q
|
---|
258 | . S ONCSTAT("APIVER")=$G(ONCSTAT("APIVER"))_TXT
|
---|
259 | I ELMT="CS-RESPONSE,VERSION" D Q
|
---|
260 | . S ONCSTAT("VERSION")=$G(ONCSTAT("VERSION"))_TXT
|
---|
261 | ;--- Sections
|
---|
262 | S SECT=$P(ONCXML("PATH"),",",L-1),ELMT=$P(ONCXML("PATH"),",",L)
|
---|
263 | I SECT="CS-DISP" D Q
|
---|
264 | . S ONCDISP(ELMT)=$G(ONCDISP(ELMT))_TXT
|
---|
265 | I SECT="CS-STOR" D Q
|
---|
266 | . S ONCSTOR(ELMT)=$G(ONCSTOR(ELMT))_TXT
|
---|
267 | I SECT="detail","ERROR"[ELMT D Q
|
---|
268 | . S ONCSTAT(ELMT)=$G(ONCSTAT(ELMT))_TXT
|
---|
269 | ;--- Default processing
|
---|
270 | D TEXT^ONCSAPIX(TXT)
|
---|
271 | Q
|
---|