| 1 | HDISVS00 ;BPFO/JRP - PROCESS XML DOCS ON CENTRAL SERVER;1/4/2005
 | 
|---|
| 2 |  ;;1.0;HEALTH DATA & INFORMATICS;;Feb 22, 2005
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | MAIN(PRSARR,ERRARR) ;Main entry point for processing XML document
 | 
|---|
| 5 |  ; Input : PRSARR - Array containing parsed XML document (closed root)
 | 
|---|
| 6 |  ;                  This is the output of SAX^HDISVM01
 | 
|---|
| 7 |  ;         ERRARR - Array to output errors in (closed root)
 | 
|---|
| 8 |  ;Output : None
 | 
|---|
| 9 |  ;         @ERRARR@(x) = Error text (if applicable)
 | 
|---|
| 10 |  ; Notes : ERRARR is initialized (KILLed) on input
 | 
|---|
| 11 |  N ROOT,TMP,OOPS,CODE,DESC
 | 
|---|
| 12 |  ;Check input
 | 
|---|
| 13 |  I $G(PRSARR)="" D  Q
 | 
|---|
| 14 |  .S TMP="MAIN^HDISVS00: Input parameter PRSARR was not passed"
 | 
|---|
| 15 |  .D ADDERR^HDISVC00(TMP,ERRARR)
 | 
|---|
| 16 |  I '$D(@PRSARR) D  Q
 | 
|---|
| 17 |  .S TMP="MAIN^HDISVS00: Input array "_PRSARR_" (PRSARR) does not exist"
 | 
|---|
| 18 |  .D ADDERR^HDISVC00(TMP,ERRARR)
 | 
|---|
| 19 |  ;Make sure data structure of parsed document exists
 | 
|---|
| 20 |  S OOPS=0
 | 
|---|
| 21 |  F X=1:1 S TMP=$P($T(SUBS+X),";;",2) Q:TMP=""  D
 | 
|---|
| 22 |  .I $D(@PRSARR@(TMP)) Q
 | 
|---|
| 23 |  .S TMP="MAIN^HDISVS00: Subscript "_TMP_" missing from input array "_PRSARR_" (PRSARR)"
 | 
|---|
| 24 |  .D ADDERR^HDISVC00(TMP,ERRARR)
 | 
|---|
| 25 |  .S OOPS=1
 | 
|---|
| 26 |  I OOPS Q
 | 
|---|
| 27 |  ;Get root element name
 | 
|---|
| 28 |  S ROOT=$G(@PRSARR@("ESUBS",1))
 | 
|---|
| 29 |  I ROOT="" D  Q
 | 
|---|
| 30 |  .S TMP="Root element of XML document could not be determined"
 | 
|---|
| 31 |  .D ADDERR^HDISVC00(TMP,ERRARR)
 | 
|---|
| 32 |  ;Check for supported root element
 | 
|---|
| 33 |  S OOPS=1
 | 
|---|
| 34 |  F X=1:1 S TMP=$P($T(ROOTS+X),";;",2) Q:TMP=""  D  Q:'OOPS
 | 
|---|
| 35 |  .I $P(TMP,"~",1)'=ROOT Q
 | 
|---|
| 36 |  .S CODE=$P(TMP,"~",2)
 | 
|---|
| 37 |  .S DESC=$P(TMP,"~",3)
 | 
|---|
| 38 |  .S OOPS=0
 | 
|---|
| 39 |  ;Unsupported root element
 | 
|---|
| 40 |  I OOPS D  Q
 | 
|---|
| 41 |  .S TMP="'"_ROOT_"' is not a supported root element (don't know how to process it)"
 | 
|---|
| 42 |  .D ADDERR^HDISVC00(TMP,ERRARR)
 | 
|---|
| 43 |  ;Code to process document not set
 | 
|---|
| 44 |  I CODE="" D  Q
 | 
|---|
| 45 |  .S TMP="Code to process root element '"_ROOT_"' has not been established"
 | 
|---|
| 46 |  .D ADDERR^HDISVC00(TMP,ERRARR)
 | 
|---|
| 47 |  ;Process XML document
 | 
|---|
| 48 |  X CODE
 | 
|---|
| 49 |  ;Done
 | 
|---|
| 50 |  Q
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 | SUBS ;Required subscripts in parse array (attributes aren't required)
 | 
|---|
| 53 |  ;;EINDX
 | 
|---|
| 54 |  ;;ESUBS
 | 
|---|
| 55 |  ;;DATA
 | 
|---|
| 56 |  ;;
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 | ROOTS ;Root element name~Processing code for root element~Description
 | 
|---|
| 59 |  ;;Domain~D VUID^HDISVS01(PRSARR,ERRARR)~Request for VUID data from VistA system
 | 
|---|
| 60 |  ;;HDISParameters~D STATUS^HDISVS03(PRSARR,ERRARR)~Status update from VistA system
 | 
|---|
| 61 |  ;;
 | 
|---|