108 lines
3.2 KiB
Mathematica
108 lines
3.2 KiB
Mathematica
ONCSAPIV ;Hines OIFO/SG - ONCOLOGY WEB SERVICE (VERSIONS) ; 12/7/06 2:25pm
|
|
;;2.11;ONCOLOGY;**40,47**;Mar 07, 1995;Build 19
|
|
;
|
|
Q
|
|
;
|
|
;***** CHECKS THE VERSION OF THE LOCAL CACHE
|
|
;
|
|
; [.ONCSAPI] Reference to the API descriptor (see ^ONCSAPI)
|
|
;
|
|
; Return Values:
|
|
; 0 Ok
|
|
; <0 Error code
|
|
;
|
|
CHKVER(ONCSAPI) ;
|
|
N NODE,RC,TMP,VER
|
|
D CLEAR^ONCSAPIE()
|
|
;--- Get the versions of web-service components
|
|
S VER=$$VERSION(.ONCSAPI) Q:VER<0 VER
|
|
;--- Lock the cache
|
|
S NODE=$NA(^XTMP("ONCSAPI"))
|
|
L +@NODE:5 E Q $$ERROR^ONCSAPIE(-15,,"local cache")
|
|
;--- Check the version of the local CS table cache
|
|
S TMP=$P(VER,U,2)
|
|
I TMP'="",$G(@NODE@("TABLES"))'=TMP D S @NODE@("TABLES")=TMP
|
|
. K @NODE@("TABLES"),@NODE@("SCHEMAS")
|
|
;--- Check the version of the local edit info cache
|
|
S TMP=$P(VER,U,3)
|
|
I TMP'="",$G(@NODE@("EDITS"))'=TMP D S @NODE@("EDITS")=TMP
|
|
. K @NODE@("EDITS")
|
|
;--- Refresh the cache descriptor
|
|
S TMP=$$FMADD^XLFDT(DT,30)
|
|
S @NODE@(0)=TMP_U_DT_U_"Local Oncology seb-service cache"
|
|
L -@NODE
|
|
Q 0
|
|
;
|
|
;***** SETS THE EVENT INTERFACE ENTRY POINTS
|
|
;
|
|
; .CBK Reference to the destination list
|
|
;
|
|
SETCBK(CBK) ;
|
|
;;CHARACTERS^TEXT^ONCSAPIV
|
|
;
|
|
D SETCBK^ONCSAPIX(.CBK,"SETCBK^ONCSAPIV")
|
|
Q
|
|
;
|
|
;***** TEXT CALLBACK FOR THE SAX PARSER
|
|
;
|
|
; TXT Line of unmarked text
|
|
;
|
|
TEXT(TXT) ;
|
|
N L,L2E
|
|
S L=$L(ONCXML("PATH"),","),L2E=$P(ONCXML("PATH"),",",L-1,L)
|
|
;--- CS API version
|
|
I L2E="RESPONSE,CS-APIVER" S ONCXML("CS-APIVER")=TXT Q
|
|
;--- EDITS metafile version
|
|
I L2E="RESPONSE,ED-METAVER" S ONCXML("ED-METAVER")=TXT Q
|
|
;--- Oncology web-service version
|
|
I L2E="RESPONSE,VERSION" S ONCXML("VERSION")=TXT Q
|
|
;--- Default processing
|
|
D TEXT^ONCSAPIX(TXT)
|
|
Q
|
|
;
|
|
;***** RETURNS THE WEB-SERVICE VERSIONS
|
|
;
|
|
; [.ONCSAPI] Reference to the API descriptor (see ^ONCSAPI)
|
|
;
|
|
; The ^TMP("ONCSAPIV",$J) global node is used by this function.
|
|
;
|
|
; Return Values:
|
|
; <0 Error code
|
|
; Versions (e.g. "2.00^010300^2.00)
|
|
; ^01: Oncology web-service version
|
|
; ^02: Version of the CS DLL
|
|
; ^03: EDITS metafile version
|
|
;
|
|
VERSION(ONCSAPI) ;
|
|
N CBK,ONCREQ,ONCRSP,ONCXML,RC,URL
|
|
D CLEAR^ONCSAPIE()
|
|
S ONCRSP=$NA(^TMP("ONCSAPIV",$J)) K @ONCRSP
|
|
;--- Get the server URL
|
|
S URL=$$GETCSURL^ONCSAPIU()
|
|
;
|
|
S RC=0 D
|
|
. ;--- Prepare the request data
|
|
. S RC=$$PARAMS^ONCSAPIR("ONCREQ","GET-VERSION") Q:RC<0
|
|
. ;--- Request the DLL version
|
|
. D:$G(ONCSAPI("DEBUG"))
|
|
. . D ZW^ONCSAPIU("ONCREQ","*** 'VERSION' REQUEST ***",1)
|
|
. S RC=$$REQUEST^ONCSAPIR(URL,ONCRSP,"ONCREQ") Q:RC<0
|
|
. D:$G(ONCSAPI("DEBUG"))
|
|
. . D ZW^ONCSAPIU(ONCRSP,"*** 'VERSION' RESPONSE ***",1)
|
|
. K ONCREQ
|
|
. ;--- Parse the response
|
|
. D SETCBK(.CBK),EN^MXMLPRSE(ONCRSP,.CBK,"W")
|
|
. ;--- Check for parsing and web-service errors
|
|
. S RC=$$CHKERR^ONCSAPIR(.ONCXML) Q:RC<0
|
|
. ;--- Check the version numbers
|
|
. I $G(ONCXML("CS-APIVER"))="" S RC=$$ERROR^ONCSAPIE(-13) Q
|
|
. I $G(ONCXML("ED-METAVER"))="" S RC=$$ERROR^ONCSAPIE(-23) Q
|
|
;
|
|
;--- Cleanup
|
|
K @ONCRSP
|
|
I RC'<0 S RC="" D
|
|
. S $P(RC,U,1)=$G(ONCXML("VERSION")) ; Web-service
|
|
. S $P(RC,U,2)=$G(ONCXML("CS-APIVER")) ; CS API
|
|
. S $P(RC,U,3)=$G(ONCXML("ED-METAVER")) ; EDITS metafile
|
|
Q RC
|