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