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