| [613] | 1 | HDISXML ; CT/GRR - XML UTILITY ROUTINE; 16-FEB-2004 ; 02 Mar 2005  4:17 PM | 
|---|
|  | 2 | ;;1.0;HEALTH DATA & INFORMATICS;;Feb 22, 2005 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | XMLOUT(HDISTEMP,HDISE,HDISF,HDIST,HDISERR) ; | 
|---|
|  | 5 | ;;Input Parameters (all required) | 
|---|
|  | 6 | ;; | 
|---|
|  | 7 | ;;HDISTEMP - IEN of XML Template | 
|---|
|  | 8 | ;; | 
|---|
|  | 9 | ;;HDISE - Element Number(s), separated by a comma, to be formatted | 
|---|
|  | 10 | ;;        and moved to the output array | 
|---|
|  | 11 | ;; | 
|---|
|  | 12 | ;;HDISF - Reference of the input array | 
|---|
|  | 13 | ;; | 
|---|
|  | 14 | ;;HDIST - Reference of the target array | 
|---|
|  | 15 | ;; | 
|---|
|  | 16 | ;;HDISERR - reference of error variable | 
|---|
|  | 17 | ;; | 
|---|
|  | 18 | ;; | 
|---|
|  | 19 | I HDISTEMP=""!(HDISE="")!(HDISF="")!(HDIST="") S @HDISERR="Missing Input Parameter",HDISOK=0 G XMLOUTQ | 
|---|
|  | 20 | N BLANK,CLOSE,DA,ELEV,HASKID,HDENT,HDISFE,HDISFO,HDISFT,HDISOK,IEN,IND,ISMULTI,LASTIEN,LINE,OPEN,QUOTE,REQ,TEXTIN,TRANSTXT,Y,ENAME | 
|---|
|  | 21 | S:HDISE'["," HDISE=HDISE_"," | 
|---|
|  | 22 | D INIT | 
|---|
|  | 23 | F I=1:1 S E=$P(HDISE,",",I) Q:E=""  D | 
|---|
|  | 24 | .S (HDISFT,HDISFE)=$NA(@HDISF@(E)) | 
|---|
|  | 25 | .I E["/" S E=$P(E,"/",1) D CLOSE(HDISTEMP,E,HDISF,HDIST,.HDERR) Q | 
|---|
|  | 26 | .D PROCESS(E) | 
|---|
|  | 27 | XMLOUTQ Q | 
|---|
|  | 28 | ; | 
|---|
|  | 29 | GETED(E) ; | 
|---|
|  | 30 | S IEN=$O(^HDIS(7115.3,HDISTEMP,"SEQ","B",E,0)) | 
|---|
|  | 31 | S Y(0)=$G(^HDIS(7115.3,HDISTEMP,"SEQ",IEN,0)) | 
|---|
|  | 32 | S REQ=$P(Y(0),"^",3),ENAME=$P(Y(0),"^",2),ELEV=$P(Y(0),"^",5),HASKID=$P(Y(0),"^",6),ISMULTI=$P(Y(0),"^",7) | 
|---|
|  | 33 | Q | 
|---|
|  | 34 | ; | 
|---|
|  | 35 | PROCESS(E) ; | 
|---|
|  | 36 | D GETED(E) | 
|---|
|  | 37 | I 'ISMULTI D FORMAT Q | 
|---|
|  | 38 | S DA=0 F  S DA=$O(@HDISFE@(DA)) Q:DA'>0  S HDISF=$NA(@HDISFE@(DA)) D FORMAT | 
|---|
|  | 39 | Q | 
|---|
|  | 40 | INIT ; | 
|---|
|  | 41 | ;N OPEN,CLOSE,QUOTE,IND,REQ,BLANK | 
|---|
|  | 42 | S OPEN="<",CLOSE=">",QUOTE="""",BLANK=" ",$P(BLANK," ",100)=" " | 
|---|
|  | 43 | S IND=$P(^HDIS(7115.3,HDISTEMP,0),"^",5) | 
|---|
|  | 44 | S LASTIEN=$O(@HDIST@(9999999),-1) | 
|---|
|  | 45 | S HDISOK=1,HDISFO=HDISF | 
|---|
|  | 46 | Q | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | FORMAT ; | 
|---|
|  | 49 | I 'HASKID S TEXTIN=@HDISFE Q:TEXTIN=""&'(REQ)  S TRANSTXT=$$TRANSLAT(TEXTIN) | 
|---|
|  | 50 | S LINE="" | 
|---|
|  | 51 | S LINE=$E(BLANK,1,(IND*ELEV))_OPEN_ENAME_CLOSE | 
|---|
|  | 52 | I 'HASKID S LINE=LINE_TRANSTXT_OPEN_"/"_ENAME_CLOSE | 
|---|
|  | 53 | S LASTIEN=LASTIEN+1 | 
|---|
|  | 54 | S @HDIST@(LASTIEN)=LINE | 
|---|
|  | 55 | Q | 
|---|
|  | 56 | ; | 
|---|
|  | 57 | CLOSE(HDISTEMP,HDISE,HDISF,HDIST,HDERR) ; | 
|---|
|  | 58 | D INIT | 
|---|
|  | 59 | D GETED(HDISE) | 
|---|
|  | 60 | S LINE="" | 
|---|
|  | 61 | S LINE=$E(BLANK,1,(IND*ELEV))_OPEN_"/"_ENAME_CLOSE | 
|---|
|  | 62 | S LASTIEN=LASTIEN+1 | 
|---|
|  | 63 | S @HDIST@(LASTIEN)=LINE | 
|---|
|  | 64 | Q | 
|---|
|  | 65 | ; | 
|---|
|  | 66 | TRANSLAT(X) ; | 
|---|
|  | 67 | N HDPAT,I | 
|---|
|  | 68 | I X["&" F I=1:1 Q:I=$L(X)  I $E(X,I)="&" S X=$E(X,1,(I-1))_"&"_$E(X,I+1,$L(X)) | 
|---|
|  | 69 | F HDPAT="'","""",">","<" F  Q:X'[HDPAT  D | 
|---|
|  | 70 | .S HDENT="" | 
|---|
|  | 71 | .I HDPAT="'" S HDENT="'" | 
|---|
|  | 72 | .I HDPAT="""" S HDENT=""" | 
|---|
|  | 73 | .I HDPAT=">" S HDENT=">" | 
|---|
|  | 74 | .I HDPAT="<" S HDENT="<" | 
|---|
|  | 75 | .Q:HDENT="" | 
|---|
|  | 76 | .S X=$P(X,HDPAT,1)_HDENT_$P(X,HDPAT,2,99) | 
|---|
|  | 77 | Q X | 
|---|
|  | 78 | ; | 
|---|