Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: HDISXML

HDISXML.m

Go to the documentation of this file.
  1. HDISXML ; CT/GRR - XML UTILITY ROUTINE; 16-FEB-2004 ; 02 Mar 2005 4:17 PM
  1. ;;1.0;HEALTH DATA & INFORMATICS;;Feb 22, 2005
  1. ;
  1. XMLOUT(HDISTEMP,HDISE,HDISF,HDIST,HDISERR) ;
  1. ;;Input Parameters (all required)
  1. ;;
  1. ;;HDISTEMP - IEN of XML Template
  1. ;;
  1. ;;HDISE - Element Number(s), separated by a comma, to be formatted
  1. ;; and moved to the output array
  1. ;;
  1. ;;HDISF - Reference of the input array
  1. ;;
  1. ;;HDIST - Reference of the target array
  1. ;;
  1. ;;HDISERR - reference of error variable
  1. ;;
  1. ;;
  1. I HDISTEMP=""!(HDISE="")!(HDISF="")!(HDIST="") S @HDISERR="Missing Input Parameter",HDISOK=0 G XMLOUTQ
  1. N BLANK,CLOSE,DA,ELEV,HASKID,HDENT,HDISFE,HDISFO,HDISFT,HDISOK,IEN,IND,ISMULTI,LASTIEN,LINE,OPEN,QUOTE,REQ,TEXTIN,TRANSTXT,Y,ENAME
  1. S:HDISE'["," HDISE=HDISE_","
  1. D INIT
  1. F I=1:1 S E=$P(HDISE,",",I) Q:E="" D
  1. .S (HDISFT,HDISFE)=$NA(@HDISF@(E))
  1. .I E["/" S E=$P(E,"/",1) D CLOSE(HDISTEMP,E,HDISF,HDIST,.HDERR) Q
  1. .D PROCESS(E)
  1. XMLOUTQ Q
  1. ;
  1. GETED(E) ;
  1. S IEN=$O(^HDIS(7115.3,HDISTEMP,"SEQ","B",E,0))
  1. S Y(0)=$G(^HDIS(7115.3,HDISTEMP,"SEQ",IEN,0))
  1. 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)
  1. Q
  1. ;
  1. PROCESS(E) ;
  1. D GETED(E)
  1. I 'ISMULTI D FORMAT Q
  1. S DA=0 F S DA=$O(@HDISFE@(DA)) Q:DA'>0 S HDISF=$NA(@HDISFE@(DA)) D FORMAT
  1. Q
  1. INIT ;
  1. ;N OPEN,CLOSE,QUOTE,IND,REQ,BLANK
  1. S OPEN="<",CLOSE=">",QUOTE="""",BLANK=" ",$P(BLANK," ",100)=" "
  1. S IND=$P(^HDIS(7115.3,HDISTEMP,0),"^",5)
  1. S LASTIEN=$O(@HDIST@(9999999),-1)
  1. S HDISOK=1,HDISFO=HDISF
  1. Q
  1. ;
  1. FORMAT ;
  1. I 'HASKID S TEXTIN=@HDISFE Q:TEXTIN=""&'(REQ) S TRANSTXT=$$TRANSLAT(TEXTIN)
  1. S LINE=""
  1. S LINE=$E(BLANK,1,(IND*ELEV))_OPEN_ENAME_CLOSE
  1. I 'HASKID S LINE=LINE_TRANSTXT_OPEN_"/"_ENAME_CLOSE
  1. S LASTIEN=LASTIEN+1
  1. S @HDIST@(LASTIEN)=LINE
  1. Q
  1. ;
  1. CLOSE(HDISTEMP,HDISE,HDISF,HDIST,HDERR) ;
  1. D INIT
  1. D GETED(HDISE)
  1. S LINE=""
  1. S LINE=$E(BLANK,1,(IND*ELEV))_OPEN_"/"_ENAME_CLOSE
  1. S LASTIEN=LASTIEN+1
  1. S @HDIST@(LASTIEN)=LINE
  1. Q
  1. ;
  1. TRANSLAT(X) ;
  1. N HDPAT,I
  1. 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))
  1. F HDPAT="'","""",">","<" F Q:X'[HDPAT D
  1. .S HDENT=""
  1. .I HDPAT="'" S HDENT="'"
  1. .I HDPAT="""" S HDENT="""
  1. .I HDPAT=">" S HDENT=">"
  1. .I HDPAT="<" S HDENT="<"
  1. .Q:HDENT=""
  1. .S X=$P(X,HDPAT,1)_HDENT_$P(X,HDPAT,2,99)
  1. Q X
  1. ;