source: FOIAVistA/trunk/r/HEALTH_DATA_AND_INFORMATICS-HDI/HDISXML.m@ 1094

Last change on this file since 1094 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 2.2 KB
Line 
1HDISXML ; CT/GRR - XML UTILITY ROUTINE; 16-FEB-2004 ; 02 Mar 2005 4:17 PM
2 ;;1.0;HEALTH DATA & INFORMATICS;;Feb 22, 2005
3 ;
4XMLOUT(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)
27XMLOUTQ Q
28 ;
29GETED(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 ;
35PROCESS(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
40INIT ;
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 ;
48FORMAT ;
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 ;
57CLOSE(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 ;
66TRANSLAT(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))_"&amp;"_$E(X,I+1,$L(X))
69 F HDPAT="'","""",">","<" F Q:X'[HDPAT D
70 .S HDENT=""
71 .I HDPAT="'" S HDENT="&apos;"
72 .I HDPAT="""" S HDENT="&quot;"
73 .I HDPAT=">" S HDENT="&gt;"
74 .I HDPAT="<" S HDENT="&lt;"
75 .Q:HDENT=""
76 .S X=$P(X,HDPAT,1)_HDENT_$P(X,HDPAT,2,99)
77 Q X
78 ;
Note: See TracBrowser for help on using the repository browser.