| 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
 | 
|---|