| 1 | ONCSAPIX ;Hines OIFO/SG - COLLABORATIVE STAGING (XML TOOLS)  ; 8/11/06 8:11am
 | 
|---|
| 2 |  ;;2.11;ONCOLOGY;**40,47**;Mar 07, 1995;Build 19
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; ONCXML -------------- DESCRIPTOR FOR THE XML PARSING
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ; ONCXML(               Closed root of the destination buffer
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ;   "ERR")              Number of parsing errors
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ;   "FAULTCODE")        SOAP error code
 | 
|---|
| 11 |  ;   "FAULTSTRING")      SOAP error description
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  ;   "PATH")             Path to the current XML tag
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ;   "RC")               Error code returned by the web-service
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  ;   "TI")               Number of the current text line of
 | 
|---|
| 18 |  ;                       the current tag value
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ;   "TEXT")             Buffer for the current tag text
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  ;***** DUMMY CALLBACKS FOR THE SAX PARSER
 | 
|---|
| 25 | DUMMY(DUMMY1,DUMMY2,DUMMY3) ;
 | 
|---|
| 26 | DUMMY1 Q
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  ;***** END ELEMENT CALLBACK FOR THE SAX PARSER
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  ; ELMT          Name of the element
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | ENDEL(ELMT) ;
 | 
|---|
| 33 |  S ONCXML("PATH")=$P(ONCXML("PATH"),",",1,$L(ONCXML("PATH"),",")-1)
 | 
|---|
| 34 |  Q
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  ;***** ERROR CALLBACK FOR THE SAX PARSER
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 |  ; .ERR          Reference to a local variable containing
 | 
|---|
| 39 |  ;               informations about the error
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | ERROR(ERR) ;
 | 
|---|
| 42 |  N ERRCODE,ONCINFO,TMP
 | 
|---|
| 43 |  I ERR("SEV")  D
 | 
|---|
| 44 |  . S ERRCODE=-4,ONCXML("ERR")=$G(ONCXML("ERR"))+1
 | 
|---|
| 45 |  E  S ERRCODE=-3
 | 
|---|
| 46 |  ;--- Prepare message details
 | 
|---|
| 47 |  S TMP=$P("Warning^Validation Error^Conformance Error",U,ERR("SEV")+1)
 | 
|---|
| 48 |  S ONCINFO(1)=TMP_" in line #"_ERR("LIN")_" (position #"_ERR("POS")_")"
 | 
|---|
| 49 |  S ONCINFO(2)=$TR(ERR("XML"),$C(9,10,13)," ")
 | 
|---|
| 50 |  ;--- Record the error message
 | 
|---|
| 51 |  D STORE^ONCSAPIE(ERRCODE_U_$TR(ERR("MSG"),U,"~"),"ONCINFO")
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  ;***** SETS THE EVENT INTERFACE ENTRY POINTS
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  ; .CBK          Reference to the destination list
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 | SETCBK(CBK,CBKTBL) ;
 | 
|---|
| 59 |  ;;CHARACTERS   ^    TEXT^ONCSAPIX
 | 
|---|
| 60 |  ;;COMMENT      ^   DUMMY^ONCSAPIX
 | 
|---|
| 61 |  ;;DOCTYPE      ^   DUMMY^ONCSAPIX
 | 
|---|
| 62 |  ;;ENDDOCUMENT  ^  DUMMY1^ONCSAPIX
 | 
|---|
| 63 |  ;;ENDELEMENT   ^   ENDEL^ONCSAPIX
 | 
|---|
| 64 |  ;;ERROR        ^   ERROR^ONCSAPIX
 | 
|---|
| 65 |  ;;EXTERNAL     ^   DUMMY^ONCSAPIX
 | 
|---|
| 66 |  ;;NOTATION     ^   DUMMY^ONCSAPIX
 | 
|---|
| 67 |  ;;PI           ^   DUMMY^ONCSAPIX
 | 
|---|
| 68 |  ;;STARTDOCUMENT^STARTDOC^ONCSAPIX
 | 
|---|
| 69 |  ;;STARTELEMENT ^ STARTEL^ONCSAPIX
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  N I,NAME,TMP,XGET  K CBK
 | 
|---|
| 72 |  D:$G(CBKTBL)'=""
 | 
|---|
| 73 |  . S XGET(2)="S TMP=$T("_$P(CBKTBL,"^")_"+I^"_$P(CBKTBL,"^",2)_")"
 | 
|---|
| 74 |  S XGET(1)="S TMP=$T(SETCBK+I)"
 | 
|---|
| 75 |  ;---
 | 
|---|
| 76 |  S XGET=""
 | 
|---|
| 77 |  F  S XGET=$O(XGET(XGET))  Q:XGET=""  D
 | 
|---|
| 78 |  . F I=1:1  X XGET(XGET)  S TMP=$TR($P(TMP,";;",2)," ")  Q:TMP=""  D
 | 
|---|
| 79 |  . . S NAME=$P(TMP,U),CBK(NAME)=$P(TMP,U,2,3)
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  ;***** START DOCUMENT CALLBACK FOR THE SAX PARSER
 | 
|---|
| 83 | STARTDOC ;
 | 
|---|
| 84 |  S ONCXML("PATH")="",ONCXML("ERR")=0
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  ;***** START ELEMENT CALLBACK FOR THE SAX PARSER
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 |  ; ELMT          Name of the element
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  ; .ATTR         List of attributes and their values
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 | STARTEL(ELMT,ATTR) ;
 | 
|---|
| 94 |  S ONCXML("PATH")=ONCXML("PATH")_$S(ONCXML("PATH")'="":",",1:"")_ELMT
 | 
|---|
| 95 |  S ONCXML("TI")=1  K ONCXML("TEXT")
 | 
|---|
| 96 |  Q
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  ;***** TEXT CALLBACK FOR THE SAX PARSER
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  ; TXT           Line of unmarked text
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 | TEXT(TXT) ;
 | 
|---|
| 103 |  I ONCXML("PATH")?1.E1"Fault,faultcode"  D  Q
 | 
|---|
| 104 |  . S ONCXML("FAULTCODE")=$G(ONCXML("FAULTCODE"))_TXT
 | 
|---|
| 105 |  I ONCXML("PATH")?1.E1"Fault,faultstring"  D  Q
 | 
|---|
| 106 |  . S ONCXML("FAULTSTRING")=$G(ONCXML("FAULTSTRING"))_TXT
 | 
|---|
| 107 |  I ONCXML("PATH")?1.E1"Fault,detail,RC"  D  Q
 | 
|---|
| 108 |  . S ONCXML("RC")=$G(ONCXML("RC"))_TXT
 | 
|---|
| 109 |  Q
 | 
|---|