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