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