ONCSAPI3 ;Hines OIFO/SG - COLLABORATIVE STAGING (CALCULATE) ; 5/18/04 9:47am ;;2.11;ONCOLOGY;**40**;Mar 07, 1995 ; ;--- SOAP REQUST TO THE COLLABORATIVE STAGING WEB SERVICE ; ; ; ; ; ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ; ; ; ;--- SOAP RESPONSE FROM THE COLLABORATIVE STAGING WEB SERVICE ; ; ; ; ; ; ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ... ; ; ... ; ... ; ; ; ... ; ... ; ; ... ; ; ... ; ; ... ; ; ; ; ; Q ; ;***** CALLS THE COLLABORATIVE STAGING WEB SERVICE ; ; [.ONCSAPI] Reference to the API descriptor (see ^ONCSAPI) ; ; .INPUT( Reference to a local variable containg ; input parameters. ; ; "AGE") Age at Diagnosis ; "BEHAV") Behavior Code ICD-O-3 ; "EXT") CS Extension ; "EXTEVAL") CS Size/Ext Eval ; "GRADE") Grade ; "HIST") Histologic Type ICD-O-3 ; "LNPOS") Regional Nodes Positive ; "LNEXAM") Regional Nodes Examined ; "METS") CS Mets at DX ; "METSEVAL") CS Mets Eval ; "NODES") CS Lymph Nodes ; "NODESEVAL") CS Reg Nodes Eval ; "SITE") Primary site ; "SIZE") CS Tumor Size ; "SSF1") CS Site-Specific Factor 1 ; "SSF2") CS Site-Specific Factor 2 ; "SSF3") CS Site-Specific Factor 3 ; "SSF4") CS Site-Specific Factor 4 ; "SSF5") CS Site-Specific Factor 5 ; "SSF6") CS Site-Specific Factor 6 ; ; .ONCSTOR( Reference to a local variable where output ; storage values are returned. ; ; "AJCC") Derived AJCC Stage Group ; "N") Derived AJCC N ; "NDESCR") Derived AJCC N Descriptor ; "M") Derived AJCC M ; "MDESCR") Derived AJCC M Descriptor ; "SS1977") Derived SS1977 ; "SS2000") Derived SS2000 ; "T") Derived AJCC T ; "TDESCR") Derived AJCC T Descriptor ; ; .ONCDISP( Reference to a local variable where output ; display values are returned. ; ; "AJCC") Derived AJCC Stage Group ; "N") Derived AJCC N ; "NDESCR") Derived AJCC N Descriptor ; "M") Derived AJCC M ; "MDESCR") Derived AJCC M Descriptor ; "SS1977") Derived SS1977 ; "SS2000") Derived SS2000 ; "T") Derived AJCC T ; "TDESCR") Derived AJCC T Descriptor ; ; .ONCSTAT( Reference to a local variable where status ; values are returned. ; ; "APIVER") Version of the CS API ; ; "ERROR", Error Code ; Name) Symbolic names of error bits (see ; the INVLDINP^ONCSAPI3 for details) ; ; "MSG", ; i) Error message returned by the CStage_calculate ; ; "RC") Error code returned by the CS web-service ; ; "VERSION") Version of the service ; ; The ^TMP("ONCSAPI3",$J) global node is used by this function. ; ; Note: Patch XT*7.3*67 (VistA XML Parser)) is required for this ; API to work. ; ; Return values: ; ; <0 Error Descriptor (see ^ONCSAPI for details) ; For example: ; "-1^Missing input parameters^CALC+4^ONCSAPI" ; ; 0 Ok ; ; 1 Probably Ok (warnings) ; CALC(ONCSAPI,INPUT,ONCSTOR,ONCDISP,ONCSTAT) ; N CBK,ONCRDAT,ONCSDAT,ONCXML,RC,TMP,URL,X D CLEAR^ONCSAPIE() S ONCRDAT=$NA(^TMP("ONCSAPI3",$J)) K ONCDISP,ONCSTAT,ONCSTOR,@ONCRDAT F X="AJCC","N","NDESCR","M","MDESCR","SS1977","SS2000","T","TDESCR" D . S (ONCSTOR(X),ONCDISP(X))="" Q:$D(INPUT)<10 $$ERROR^ONCSAPIE(-1) ; ;--- Get the server URL S URL=$$GETCSURL^ONCSAPIU() Q:URL<0 URL ; ;--- Prepare the request parameters S RC=$$PARAMS^ONCSAPIR("ONCSDAT","CS-CALCULATE",.INPUT) Q:RC<0 RC ; S RC=0 D . ;--- Call the web service . D:$G(ONCSAPI("DEBUG")) . . D ZW^ONCSAPIU("ONCSDAT","*** 'CALCULATE' REQUEST ***") . S RC=$$REQUEST^ONCSAPIR(URL,ONCRDAT,"ONCSDAT") Q:RC<0 . D:$G(ONCSAPI("DEBUG")) . . D ZW^ONCSAPIU(ONCRDAT,"*** 'CALCULATE' RESPONSE ***") . ;--- Parse the results . D SETCBK(.CBK),EN^MXMLPRSE(ONCRDAT,.CBK,"W") . ;--- Check the CS error codes . S:$G(ONCXML("RC"))<0 ONCSTAT("RC")=ONCXML("RC") . D INVLDINP(.STATUS) . ;--- Check for parsing and web-service errors . S RC=$$CHKERR^ONCSAPIR(.ONCXML,$NA(ONCSTAT("MSG"))) ; ;--- Cleanup K ^TMP("ONCSAPI3",$J) Q $S(RC<0:RC,$D(ONCSTAT("MSG"))>1:1,1:0) ; ;***** COMPILES A LIST OF SYMBOLIC ERROR CODES ; ; .STATUS Reference to a local variable where the list ; of invalid input parameters is created. ; INVLDINP(STATUS) ; ;;01^ NONFAILMSG ^ ;;02^ EXTAJCCFAIL ^ CS Extension ;;03^ NODESAJCCFAIL ^ CS Lymph Nodes ;;04^ METSAJCCFAIL ^ CS Mets at DX ;;05^ EXTEVALFAIL ^ Ext Eval ;;06^ NODESEVALFAIL ^ Nodes Eval ;;07^ METSEVALFAIL ^ Mets Eval ;;08^ STAGEAJCCFAIL ^ Stage Group ;;09^ EXT77FAIL ^ SEER 77 Ext ;;10^ NODES77FAIL ^ SEER 77 Nodes ;;11^ METS77FAIL ^ SEER 77 Mets ;;12^ STAGE77FAIL ^ SEER Summary Stage 77 ;;13^ EXT2000FAIL ^ SEER 2000 Ext ;;14^ NODES2000FAIL ^ SEER 2000 Nodes ;;15^ METS2000FAIL ^ SEER 2000 Mets ;;16^ STAGE2000FAIL ^ SEER Summary Stage 2000 ;;17^ SITEFAIL ^ Primary Site ;;18^ HISTFAIL ^ Histology ; N ERR,IB,IN,NLST,TMP S ERR=+$G(STATUS("ERROR")) Q:'ERR S ERR=$REVERSE($$CNV^XLFUTL(ERR,2)) ;--- Analyze separate bits of the error code F IB=1:1:18 D:$E(ERR,IB) . S NLST=$TR($P($T(INVLDINP+IB),U,2)," ") . F IN=1:1 S TMP=$P(NLST,",",IN) Q:TMP="" D . . S STATUS("ERROR",TMP)="" Q ; ;***** SETS THE EVENT INTERFACE ENTRY POINTS SETCBK(CBK) ; ;;CHARACTERS^TEXT^ONCSAPI3 ; D SETCBK^ONCSAPIX(.CBK,"SETCBK^ONCSAPI3") Q ; ;***** TEXT CALLBACK FOR THE SAX PARSER ; ; TXT Line of unmarked text ; TEXT(TXT) ; N ELMT,L,SECT ;--- Individual elements S L=$L(ONCXML("PATH"),","),ELMT=$P(ONCXML("PATH"),",",L-1,L) I ELMT="detail,MSG" D Q . S ONCSTAT("MSG",$O(ONCSTAT("MSG"," "),-1)+1)=$TR(TXT,U,"~") I ELMT="CS-RESPONSE,APIVER" D Q . S ONCSTAT("APIVER")=$G(ONCSTAT("APIVER"))_TXT I ELMT="CS-RESPONSE,VERSION" D Q . S ONCSTAT("VERSION")=$G(ONCSTAT("VERSION"))_TXT ;--- Sections S SECT=$P(ONCXML("PATH"),",",L-1),ELMT=$P(ONCXML("PATH"),",",L) I SECT="CS-DISP" D Q . S ONCDISP(ELMT)=$G(ONCDISP(ELMT))_TXT I SECT="CS-STOR" D Q . S ONCSTOR(ELMT)=$G(ONCSTOR(ELMT))_TXT I SECT="detail","ERROR"[ELMT D Q . S ONCSTAT(ELMT)=$G(ONCSTAT(ELMT))_TXT ;--- Default processing D TEXT^ONCSAPIX(TXT) Q