Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ONCSAPIS

ONCSAPIS.m

Go to the documentation of this file.
  1. ONCSAPIS ;Hines OIFO/SG - COLLABORATIVE STAGING (SCHEMAS) ;08/12/10
  1. ;;2.2;ONCOLOGY;**1**;Jul 31, 2013;Build 8
  1. ;
  1. Q
  1. ;
  1. ;***** RETURNS SCHEMA NUMBER AND NAME
  1. ;
  1. ; [.ONCSAPI] Reference to the API descriptor (see ^ONCSAPI)
  1. ;
  1. ; SITE Primary site
  1. ; HIST Histology
  1. ;
  1. ; The ^TMP("ONCSAPIS",$J) global node is used by this function.
  1. ;
  1. ; Return Values:
  1. ; >0 SchemaNumber^SchemaName
  1. ; <0 Error code
  1. ;
  1. SCHEMA(ONCSAPI,SITE,HIST,DISCRIM) ;
  1. ;N DST,NODE,ONCREQ,ONCRSP,ONCXML,RC,SCHEMA,SCHNAME,TMP,URL,XHIST,XSITE
  1. N DISCRIMINATOR,DST,NODE,ONCREQ,ONCRSP,ONCXML,RC,SCHEMA,TMP,URL,XDISC
  1. N XHIST,XSITE
  1. D CLEAR^ONCSAPIE()
  1. ;--- Initialize constants and variables
  1. S NODE=$NA(^XTMP("ONCSAPI","SCHEMAS"))
  1. S XSITE=$S(SITE'="":SITE,1:" ")
  1. S XHIST=$S(HIST'="":HIST,1:" ")
  1. S XDISC=$S(DISCRIM'="":DISCRIM,1:" ")
  1. ;--- Check if the schema is available in the local cache
  1. ;S SCHEMA=+$G(@NODE@("SH",XSITE,XHIST))
  1. ;
  1. S SCHEMA=+$G(@NODE@("SH",XSITE,XHIST,XDISC))
  1. ;
  1. I SCHEMA>0 D Q:SCHNAME'="" SCHEMA_U_SCHNAME
  1. . S SCHNAME=$P($G(@NODE@(SCHEMA)),U)
  1. S ONCRSP=$NA(^TMP("ONCSAPIS",$J)) K @ONCRSP
  1. ;--- Get the server URL
  1. S URL=$$GETCSURL^ONCSAPIU()
  1. ;
  1. S RC=0 D
  1. . ;--- Prepare the request data
  1. . S DST="ONCREQ"
  1. . D HEADER^ONCSAPIR(.DST,"CS-GET-SCHEMA")
  1. . S DISCRIMINATOR=DISCRIM
  1. . D PUT^ONCSAPIR(.DST,"SITE",SITE)
  1. . D PUT^ONCSAPIR(.DST,"HIST",HIST)
  1. . D PUT^ONCSAPIR(.DST,"DISCRIMINATOR",DISCRIMINATOR)
  1. . D TRAILER^ONCSAPIR(.DST)
  1. . ;--- Request the schema number
  1. . D:$G(ONCSAPI("DEBUG"))
  1. . . D ZW^ONCSAPIU("ONCREQ","*** 'SCHEMA' REQUEST ***",1)
  1. . S RC=$$REQUEST^ONCSAPIR(URL,ONCRSP,"ONCREQ") Q:RC<0
  1. . D:$G(ONCSAPI("DEBUG"))
  1. . . D ZW^ONCSAPIU(ONCRSP,"*** 'SCHEMA' RESPONSE ***",1)
  1. . K DST,ONCREQ
  1. . ;--- Parse the response
  1. . D SETCBK(.CBK),EN^MXMLPRSE(ONCRSP,.CBK,"W")
  1. . ;--- Check for parsing and web service errors
  1. . S RC=$$CHKERR^ONCSAPIR(.ONCXML) Q:RC<0
  1. . ;--- Check the schema number and name
  1. . S SCHEMA=+$G(ONCXML("SCHEMA"))
  1. . S SCHNAME=$G(ONCXML("SCHEMA-NAME"))
  1. . I (SCHEMA'>0)!(SCHNAME="") S RC=$$ERROR^ONCSAPIE(-14) Q
  1. . ;--- Update the local cache
  1. . S @NODE@(SCHEMA)=SCHNAME
  1. . S @NODE@("SH",XSITE,XHIST,XDISC)=SCHEMA
  1. . S @NODE@("N",SCHNAME)=SCHEMA
  1. ;
  1. ;--- Cleanup
  1. K @ONCRSP
  1. Q $S(RC<0:RC,1:SCHEMA_U_SCHNAME)
  1. ;
  1. ;***** SETS THE EVENT INTERFACE ENTRY POINTS
  1. ;
  1. ; .CBK Reference to the destination list
  1. ;
  1. SETCBK(CBK) ;
  1. ;;CHARACTERS^TEXT^ONCSAPIS
  1. ;
  1. D SETCBK^ONCSAPIX(.CBK,"SETCBK^ONCSAPIS")
  1. Q
  1. ;
  1. ;***** TEXT CALLBACK FOR THE SAX PARSER
  1. ;
  1. ; TXT Line of unmarked text
  1. ;
  1. TEXT(TXT) ;
  1. N L,L2E
  1. S L=$L(ONCXML("PATH"),","),L2E=$P(ONCXML("PATH"),",",L-1,L)
  1. ;--- Schema number and name
  1. I L2E="CS-RESPONSE,SCHEMA" S ONCXML("SCHEMA")=TXT Q
  1. I L2E="CS-RESPONSE,SCHEMA-NAME" S ONCXML("SCHEMA-NAME")=TXT Q
  1. ;--- Default processing
  1. D TEXT^ONCSAPIX(TXT)
  1. Q
  1. ;
  1. CLEANUP ;Cleanup
  1. K SCHNAME