1 | ONCSAPIS ;Hines OIFO/SG - COLLABORATIVE STAGING (SCHEMAS) ; 3/25/04 3:24pm
|
---|
2 | ;;2.11;ONCOLOGY;**40**;Mar 07, 1995
|
---|
3 | ;
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | ;***** RETURNS SCHEMA NUMBER AND NAME
|
---|
7 | ;
|
---|
8 | ; [.ONCSAPI] Reference to the API descriptor (see ^ONCSAPI)
|
---|
9 | ;
|
---|
10 | ; SITE Primary site
|
---|
11 | ; HIST Histology
|
---|
12 | ;
|
---|
13 | ; The ^TMP("ONCSAPIS",$J) global node is used by this function.
|
---|
14 | ;
|
---|
15 | ; Return Values:
|
---|
16 | ; >0 SchemaNumber^SchemaName
|
---|
17 | ; <0 Error code
|
---|
18 | ;
|
---|
19 | SCHEMA(ONCSAPI,SITE,HIST) ;
|
---|
20 | N DST,NODE,ONCREQ,ONCRSP,ONCXML,RC,SCHEMA,SCHNAME,TMP,URL,XHIST,XSITE
|
---|
21 | D CLEAR^ONCSAPIE()
|
---|
22 | ;--- Initialize constants and variables
|
---|
23 | S NODE=$NA(^XTMP("ONCSAPI","SCHEMAS"))
|
---|
24 | S XSITE=$S(SITE'="":SITE,1:" ")
|
---|
25 | S XHIST=$S(HIST'="":HIST,1:" ")
|
---|
26 | ;--- Check if the schema is available in the local cache
|
---|
27 | S SCHEMA=+$G(@NODE@("SH",XSITE,XHIST))
|
---|
28 | I SCHEMA>0 D Q:SCHNAME'="" SCHEMA_U_SCHNAME
|
---|
29 | . S SCHNAME=$P($G(@NODE@(SCHEMA)),U)
|
---|
30 | S ONCRSP=$NA(^TMP("ONCSAPIS",$J)) K @ONCRSP
|
---|
31 | ;--- Get the server URL
|
---|
32 | S URL=$$GETCSURL^ONCSAPIU()
|
---|
33 | ;
|
---|
34 | S RC=0 D
|
---|
35 | . ;--- Prepare the request data
|
---|
36 | . S DST="ONCREQ"
|
---|
37 | . D HEADER^ONCSAPIR(.DST,"CS-GET-SCHEMA")
|
---|
38 | . D PUT^ONCSAPIR(.DST,"SITE",SITE)
|
---|
39 | . D PUT^ONCSAPIR(.DST,"HIST",HIST)
|
---|
40 | . D TRAILER^ONCSAPIR(.DST)
|
---|
41 | . ;--- Request the schema number
|
---|
42 | . D:$G(ONCSAPI("DEBUG"))
|
---|
43 | . . D ZW^ONCSAPIU("ONCREQ","*** 'SCHEMA' REQUEST ***",1)
|
---|
44 | . S RC=$$REQUEST^ONCSAPIR(URL,ONCRSP,"ONCREQ") Q:RC<0
|
---|
45 | . D:$G(ONCSAPI("DEBUG"))
|
---|
46 | . . D ZW^ONCSAPIU(ONCRSP,"*** 'SCHEMA' RESPONSE ***",1)
|
---|
47 | . K DST,ONCREQ
|
---|
48 | . ;--- Parse the response
|
---|
49 | . D SETCBK(.CBK),EN^MXMLPRSE(ONCRSP,.CBK,"W")
|
---|
50 | . ;--- Check for parsing and web service errors
|
---|
51 | . S RC=$$CHKERR^ONCSAPIR(.ONCXML) Q:RC<0
|
---|
52 | . ;--- Check the schema number and name
|
---|
53 | . S SCHEMA=+$G(ONCXML("SCHEMA"))
|
---|
54 | . S SCHNAME=$G(ONCXML("SCHEMA-NAME"))
|
---|
55 | . I (SCHEMA'>0)!(SCHNAME="") S RC=$$ERROR^ONCSAPIE(-14) Q
|
---|
56 | . ;--- Update the local cache
|
---|
57 | . S @NODE@(SCHEMA)=SCHNAME
|
---|
58 | . S @NODE@("SH",XSITE,XHIST)=SCHEMA
|
---|
59 | . S @NODE@("N",SCHNAME)=SCHEMA
|
---|
60 | ;
|
---|
61 | ;--- Cleanup
|
---|
62 | K @ONCRSP
|
---|
63 | Q $S(RC<0:RC,1:SCHEMA_U_SCHNAME)
|
---|
64 | ;
|
---|
65 | ;***** SETS THE EVENT INTERFACE ENTRY POINTS
|
---|
66 | ;
|
---|
67 | ; .CBK Reference to the destination list
|
---|
68 | ;
|
---|
69 | SETCBK(CBK) ;
|
---|
70 | ;;CHARACTERS^TEXT^ONCSAPIS
|
---|
71 | ;
|
---|
72 | D SETCBK^ONCSAPIX(.CBK,"SETCBK^ONCSAPIS")
|
---|
73 | Q
|
---|
74 | ;
|
---|
75 | ;***** TEXT CALLBACK FOR THE SAX PARSER
|
---|
76 | ;
|
---|
77 | ; TXT Line of unmarked text
|
---|
78 | ;
|
---|
79 | TEXT(TXT) ;
|
---|
80 | N L,L2E
|
---|
81 | S L=$L(ONCXML("PATH"),","),L2E=$P(ONCXML("PATH"),",",L-1,L)
|
---|
82 | ;--- Schema number and name
|
---|
83 | I L2E="CS-RESPONSE,SCHEMA" S ONCXML("SCHEMA")=TXT Q
|
---|
84 | I L2E="CS-RESPONSE,SCHEMA-NAME" S ONCXML("SCHEMA-NAME")=TXT Q
|
---|
85 | ;--- Default processing
|
---|
86 | D TEXT^ONCSAPIX(TXT)
|
---|
87 | Q
|
---|