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