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

DDEG.m

Go to the documentation of this file.
  1. DDEG ;SPFO/RAM,MKB - Entity GET Extract ;1/26/23 10:37
  1. ;;22.2;VA FileMan;**9,16,17,18,20,21,24,27**;Jan 05, 2016;Build 7
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. Q
  1. ;
  1. ; $$EN1 called from ^DDEGET, assumes validated input parameters:
  1. ; DIENTY = Entity file #1.5 ien
  1. ; DIEN = ID of entity instance to return
  1. ; NOTAG = 1 if entity is a list item (omit tags)
  1. ; ERROR = returns '-1^message' if error, else ""
  1. ; DFORM = format for results (0, 1, 2); default is 0=JSON
  1. ;
  1. EN1(DIENTY,DIEN,NOTAG,ERROR) ; -- return a single Entity (expects DFORM=0/1/2)
  1. N DIFN,DNAME,DDEOUT,DAC,DSEQ,DITM,DRES,X
  1. S DFORM=+$G(DFORM),(DRES,ERROR)=""
  1. S DIENTY=+$G(DIENTY),DIEN=$G(DIEN)
  1. S DIFN=$P($G(^DDE(DIENTY,0)),U,2)
  1. S DNAME=$G(^DDE(DIENTY,.1)) S:DNAME="" DNAME=$P($G(^(0)),U)
  1. ;
  1. D IENPROC I $G(DDEOUT)!$G(DDEQUIT) K DDEOUT G ENQ
  1. I $G(DIEN)="" S ERROR="-1^Record "_$G(DIEN)_" not found" G ENQ
  1. ;
  1. S DAC=$P($G(^DDE(+DIENTY,"DAC")),U,1) I DAC D G:ERROR ENQ ;p20
  1. . N DDETXT,DDERR
  1. . S DAC=$$CANDO^DIAC1(DIFN,DIEN,DAC,DUZ,,,"DDETXT","DDERR")
  1. . S ERROR=$S(DAC<0:"-1^"_$G(DDERR(1)),'DAC:"-1^"_$G(DDETXT(1)),1:0)
  1. ;
  1. ; loop through items
  1. S DSEQ=0 F S DSEQ=$O(^DDE(DIENTY,1,"SEQ",DSEQ)) Q:'DSEQ D Q:ERROR!$G(DDEQUIT)
  1. . S DITM=0 F S DITM=$O(^DDE(DIENTY,1,"SEQ",DSEQ,DITM)) Q:'DITM D Q:ERROR!$G(DDEQUIT)
  1. .. S X=$$VALUE(DITM) I X=""!ERROR!$G(DDEQUIT) Q
  1. .. S DRES=$$ADD(DRES,X,DSEQ)
  1. ;
  1. I $L(DRES),'$G(DDEQUIT) D
  1. . S:'DFORM DRES="{"_DRES_"}"
  1. . Q:$G(NOTAG) ;for embedded items
  1. . S DRES=$$ELEMENT("",DNAME,DRES,,,"C")
  1. ENQ ;
  1. S:$G(DDEQUIT) DRES=""
  1. Q DRES
  1. ;
  1. VALUE(ITM,NOTAG) ; -- build a complete ITEM value
  1. N ITM0,TAG,ITEM,TYPE,FILE,FIELD,IEN
  1. ;
  1. S ITM0=$G(^DDE(+DIENTY,1,+ITM,0)),IEN=$G(DIEN)
  1. S TAG=$P(ITM0,U),FILE=$P(ITM0,U,4),FIELD=$P(ITM0,U,5)
  1. S:'FILE FILE=DIFN ;default file#
  1. S TYPE=$P($$GET1^DIQ(1.51,(+ITM_","_+DIENTY_","),.03)," ")
  1. ;
  1. S ITEM="" I $L(TYPE),$L($T(@TYPE)) D @TYPE G VQ ;build ITEM
  1. D SIMPLE
  1. VQ ;
  1. Q ITEM
  1. ;
  1. SIMPLE ; -- retrieve simple ITEM (from $$VALUE)
  1. N VALUE,LKUP,FMT,XFRM
  1. S VALUE="",XFRM=$G(^DDE(+DIENTY,1,+ITM,4))
  1. ;
  1. ; get VALUE via code or field
  1. D ITMPROC I $G(DDEOUT)!$G(DDEQUIT) K DDEOUT Q
  1. I VALUE="",$G(FIELD) D Q:VALUE=""
  1. . S LKUP=$P(ITM0,U,6) S:LKUP'="" FIELD=FIELD_":"_LKUP
  1. . S FMT=$S(+$P(ITM0,U,7):"I",1:"E")
  1. . S VALUE=$$GET1^DIQ(FILE,IEN_",",FIELD,FMT)
  1. ;
  1. ; apply output transform
  1. I $L(VALUE),$L(XFRM) X XFRM
  1. ;
  1. I $$VALID(VALUE) D ;add tags
  1. . S VALUE=$$ESC(VALUE)
  1. . I $G(NOTAG) S ITEM=VALUE Q ;for List items
  1. . S ITEM=$$ELEMENT("",TAG,VALUE)
  1. Q
  1. ;
  1. FIXED ; -- build one FIXED item (from $$VALUE)
  1. N VALUE S VALUE=""
  1. ;
  1. ; get VALUE via code or string
  1. D ITMPROC I $G(DDEOUT)!$G(DDEQUIT) K DDEOUT Q
  1. S:VALUE="" VALUE=$G(^DDE(+DIENTY,1,+ITM,2)) ;Fixed Response
  1. ;
  1. I $$VALID(VALUE) D ;add tags
  1. . S VALUE=$$ESC(VALUE)
  1. . I $G(NOTAG) S ITEM=VALUE Q ;for List items
  1. . S ITEM=$$ELEMENT("",TAG,VALUE)
  1. Q
  1. ;
  1. ID ; -- build one ID item (from $$VALUE)
  1. N VALUE,XFRM
  1. S VALUE="",XFRM=$G(^DDE(+DIENTY,1,+ITM,4))
  1. ;
  1. ; get VALUE via code or IEN
  1. D ITMPROC I $G(DDEOUT)!$G(DDEQUIT) K DDEOUT Q
  1. S:VALUE="" VALUE=IEN
  1. ;
  1. ; apply output transform
  1. I $L(VALUE),$L(XFRM) X XFRM
  1. ;
  1. I $$VALID(VALUE) D ;add tags
  1. . S VALUE=$$ESC(VALUE)
  1. . I $G(NOTAG) S ITEM=VALUE Q ;for List items
  1. . S ITEM=$$ELEMENT("",TAG,VALUE)
  1. Q
  1. ;
  1. WORD ; -- build one WP ITEM (from $$VALUE)
  1. N WP,LKUP,CRLF,I,X,VALUE S VALUE="",I=0
  1. ;
  1. ; get WP(n) or WP(n,0) via code or field
  1. D ITMPROC I $G(DDEOUT)!$G(DDEQUIT) K DDEOUT Q
  1. I '$D(WP),$G(FIELD) D Q:'$D(WP)
  1. . S LKUP=$P(ITM0,U,6) S:LKUP'="" FIELD=FIELD_":"_LKUP
  1. . S I=$$GET1^DIQ(FILE,IEN_",",FIELD,,"WP")
  1. ;
  1. S CRLF='$P(ITM0,U,9)
  1. S I=+$O(WP(0)),X=$S($D(WP(I,0)):WP(I,0),1:$G(WP(I)))
  1. S VALUE=X
  1. F S I=$O(WP(I)) Q:I<1 D
  1. . S X=$S($D(WP(I,0)):WP(I,0),1:WP(I))
  1. . I $E(X)=" " S VALUE=VALUE_$C(13,10)_X Q
  1. . I CRLF S VALUE=VALUE_$C(13,10)_X Q
  1. . S VALUE=VALUE_$S($E(VALUE,$L(VALUE))=" ":"",1:" ")_X
  1. ;
  1. I $$VALID(VALUE) D Q ;add tags
  1. . I $P(ITM0,U,10) D ;p20
  1. .. Q:$L(VALUE)'>$P(ITM0,U,10)
  1. .. S VALUE=$S($P(ITM0,U,11)]"":$P(ITM0,U,11),1:"Text exceeds "_$P(ITM0,U,10)_" limit and could not be saved. Please contact the site for full original text.")
  1. . E I $L(VALUE)>2999999 S VALUE="Text exceeds 3 megabyte limit and could not be saved. Please contact the site for full original text." ;p16
  1. . S VALUE=$$ESC(VALUE)
  1. . I $G(NOTAG) S ITEM=VALUE Q ;for List items
  1. . S ITEM=$$ELEMENT("",TAG,VALUE)
  1. Q
  1. ;
  1. ENTITY ; -- build an entity ITEM (from $$VALUE)
  1. N ENTITY,ERR,VALUE,DATA,LKUP,FMT,XFRM,ID
  1. S ENTITY=$P(ITM0,U,8) Q:ENTITY=""
  1. S (VALUE,ERR)="",XFRM=$G(^DDE(+DIENTY,1,+ITM,4))
  1. ;
  1. ; get VALUE via code or field, for Entity ID
  1. ; DATA can also be defined here, to pass to Entity
  1. D ITMPROC I $G(DDEOUT)!$G(DDEQUIT) K DDEOUT Q
  1. I VALUE="",$G(FIELD) D Q:VALUE=""
  1. . S LKUP=$P(ITM0,U,6) S:LKUP'="" FIELD=FIELD_":"_LKUP
  1. . S FMT=$S(+$P(ITM0,U,7):"I",1:"E")
  1. . S VALUE=$$GET1^DIQ(FILE,IEN_",",FIELD,FMT)
  1. I $L(VALUE),$L(XFRM) X XFRM
  1. Q:VALUE="" S ID=VALUE
  1. ;
  1. D PREPROC(+ENTITY) ;Pre-Processing
  1. S VALUE=$$EN1^DDEG(+ENTITY,ID,1)
  1. D POST(+ENTITY) ;Post-Processing
  1. ;
  1. I $L(VALUE) D Q ;add tags
  1. . I VALUE<0 S ERROR=VALUE Q
  1. . I $G(NOTAG) S ITEM=VALUE Q ;for embedded or list items
  1. . S ITEM=$$ELEMENT("",TAG,VALUE,,,"C")
  1. Q
  1. ;
  1. COMPLEX ; -- build a complex ITEM (from $$VALUE)
  1. N SEQ,IDX1,TAG1,IDX0,VALUE
  1. ;
  1. D ITMPROC I $G(DDEOUT)!$G(DDEQUIT) K DDEOUT Q
  1. ;
  1. S SEQ=0 F S SEQ=$O(^DDE(DIENTY,1,ITM,3,"B",SEQ)) Q:'SEQ D Q:$G(ERROR)!$G(DDEQUIT)
  1. . S IDX1=$O(^DDE(DIENTY,1,ITM,3,"B",SEQ,0))
  1. . S TAG1=$P(^DDE(DIENTY,1,ITM,3,IDX1,0),U,2) Q:TAG1=""
  1. . S IDX0=+$O(^DDE(DIENTY,1,"B",TAG1,0))
  1. . I IDX0<1!'$D(^DDE(DIENTY,1,IDX0,0)) Q
  1. . ;
  1. . S VALUE=$$VALUE(IDX0) Q:$G(ERROR)!$G(DDEQUIT)
  1. . S:VALUE'="" ITEM=$$ADD(ITEM,VALUE,SEQ)
  1. ;
  1. Q:$G(ERROR) I $L(ITEM) D ;add tags
  1. . S:'DFORM ITEM="{"_ITEM_"}" Q:$G(NOTAG) ;for List items
  1. . S ITEM=$$ELEMENT("",TAG,ITEM,,,"C")
  1. Q
  1. ;
  1. LIST ; -- build an array of values in ITEM (from $$VALUE)
  1. N ITM1 S ITM1=$G(^DDE(+DIENTY,1,+ITM,1))
  1. ;
  1. D @("LIST"_+ITM1) ;LIST_type#
  1. ;
  1. Q:$G(ERROR)!$G(DDEQUIT)
  1. I $L(ITEM) D ;add tags
  1. . S:'DFORM ITEM="["_ITEM_"]" Q:$G(NOTAG) ;for List items
  1. . S ITEM=$$ELEMENT("",TAG,ITEM,,,"L")
  1. Q
  1. ;
  1. LIST1 ; -- list of values in FILE (from LIST)
  1. N C,TAG,XREF,FILTER,SCREEN,LKUP,FMT,XFRM,ENTITY,QUERY,DDELIST,DLIST,SEQ,IEN1,VALUE,ERR
  1. S C=",",ENTITY=+$P(ITM0,U,8)
  1. S TAG=$P(ITM1,U,2),XREF=$P(ITM1,U,3),FILTER=$P(ITM1,U,4)
  1. S SCREEN=$G(^DDE(+DIENTY,1,+ITM,1.1))
  1. ;
  1. D ITMPROC I $G(DDEOUT)!$G(DDEQUIT) K DDEOUT Q
  1. ;
  1. ; set up for results: single FIELD or multi-field (record) ENTITY
  1. I FIELD D
  1. . S LKUP=$P(ITM0,U,6) S:LKUP'="" FIELD=FIELD_":"_LKUP ;support extended pointers=LKUP ;p24
  1. . S FMT=$S(+$P(ITM0,U,7):"I",1:"E"),XFRM=$G(^DDE(+DIENTY,1,+ITM,4))
  1. I ENTITY D
  1. . N X0 S X0=$G(^DDE(ENTITY,0)) S:'$L(TAG) TAG=$G(^(.1))
  1. . ; get defaults from Entity if not defined in Item
  1. . S:'$L(XREF) XREF=$P(X0,U,3)
  1. . S:'$L(FILTER) FILTER=$P(X0,U,4)
  1. . S:'$L(SCREEN) SCREEN=$G(^DDE(ENTITY,5.1))
  1. . S QUERY=$G(^DDE(ENTITY,5))
  1. . D PREPROC(ENTITY)
  1. I $L(FILTER) S FILTER=$S($D(@FILTER):@FILTER,1:FILTER)
  1. S:TAG="" TAG=$P(ITM0,U)
  1. ;
  1. L1 ; find appropriate records and process
  1. I $L(QUERY)>1,$L($T(@($P(QUERY,"(")))) D @QUERY I 1
  1. E D FIND^DIC(FILE,,"@","Q",.FILTER,,XREF,SCREEN,,"DDELIST") M DLIST=DDELIST("DILIST",2)
  1. S SEQ=0 F S SEQ=$O(DLIST(SEQ)) Q:'SEQ D
  1. . S IEN1=$G(DLIST(SEQ))
  1. . S (VALUE,ERR)=""
  1. . I FIELD D
  1. .. S VALUE=$$GET1^DIQ(FILE,(IEN1_C),FIELD,FMT)
  1. .. I $L(VALUE),$L(XFRM) X XFRM ;output transform
  1. .. I '$$VALID(VALUE) S VALUE="" Q
  1. .. I ENTITY S VALUE=$$EN1^DDEG(ENTITY,VALUE,1,.ERR)
  1. . I 'FIELD,ENTITY S VALUE=$$EN1^DDEG(ENTITY,IEN1,1,.ERR)
  1. . ;
  1. . I VALUE=""!$G(ERR)!$G(DDEQUIT) Q
  1. . S ITEM=$$ELEMENT(ITEM,TAG,VALUE,SEQ,"addList")
  1. ;
  1. D:ENTITY POST(ENTITY)
  1. Q
  1. ;
  1. LIST2 ; -- list of values in SUBFILE (from LIST)
  1. N IENS,C,TAG,XREF,SCREEN,LKUP,FMT,XFRM,ENTITY,DLIST,SEQ,IEN1,VALUE,ERR
  1. S IENS=","_IEN,C=",",ENTITY=$P(ITM0,U,8) ;"" ;p21 initialize ENTITY
  1. S TAG=$P(ITM1,U,2),XREF=$P(ITM1,U,3),SCREEN=$G(^DDE(+DIENTY,1,+ITM,1.1))
  1. ;
  1. D ITMPROC I $G(DDEOUT)!$G(DDEQUIT) K DDEOUT Q
  1. ;
  1. ; set up FIELD and/or ENTITY for results
  1. I FIELD D
  1. . S LKUP=$P(ITM0,U,6) S:LKUP'="" FIELD=FIELD_":"_LKUP ;support extended pointers=LKUP ;p24
  1. . S FMT=$S(+$P(ITM0,U,7):"I",1:"E"),XFRM=$G(^DDE(+DIENTY,1,+ITM,4))
  1. I ENTITY D
  1. . S:'$L(TAG) TAG=$G(^DDE(ENTITY,.1))
  1. . S:'$L(XREF) XREF=$P($G(^DDE(ENTITY,0)),U,3)
  1. . S:'$L(SCREEN) SCREEN=$G(^DDE(ENTITY,5.1))
  1. . D PREPROC(ENTITY)
  1. S:TAG="" TAG=$P(ITM0,U)
  1. ;
  1. L2 ; find appropriate records and process
  1. D LIST^DIC(FILE,IENS_C,"@","Q",,,,XREF,SCREEN,,"DLIST")
  1. S SEQ=0 F S SEQ=$O(DLIST("DILIST",2,SEQ)) Q:'SEQ D Q:$G(ERR)
  1. . S IEN1=$G(DLIST("DILIST",2,SEQ))_IENS
  1. . S (VALUE,ERR)=""
  1. . I FIELD D
  1. .. S VALUE=$$GET1^DIQ(FILE,(IEN1_C),FIELD,FMT)
  1. .. I $L(VALUE),$L(XFRM) X XFRM ;output transform
  1. .. I '$$VALID(VALUE) S VALUE="" Q
  1. .. I ENTITY S VALUE=$$EN1^DDEG(ENTITY,VALUE,1,.ERR)
  1. . I 'FIELD,ENTITY S VALUE=$$EN1^DDEG(ENTITY,IEN1,1,.ERR)
  1. . ;
  1. . I VALUE=""!$G(ERR)!$G(DDEQUIT) Q
  1. . S ITEM=$$ELEMENT(ITEM,TAG,VALUE,SEQ,"addList")
  1. ;
  1. D:ENTITY POST(ENTITY)
  1. Q
  1. ;
  1. LIST3 ; -- list of values in COMPLEX FIELDS (from LIST)
  1. N TAG,SEQ,IDX1,NM1,IDX0,VALUE
  1. S TAG=$P(ITM1,U,2) S:TAG="" TAG=$P(ITM0,U)
  1. ;
  1. D ITMPROC I $G(DDEOUT)!$G(DDEQUIT) K DDEOUT Q
  1. ;
  1. ; process list Items
  1. S SEQ=0 F S SEQ=$O(^DDE(DIENTY,1,ITM,3,"B",SEQ)) Q:'SEQ D Q:$G(ERROR)
  1. . S IDX1=$O(^DDE(DIENTY,1,ITM,3,"B",SEQ,0))
  1. . S NM1=$P(^DDE(DIENTY,1,ITM,3,IDX1,0),U,2) Q:NM1=""
  1. . S IDX0=+$O(^DDE(DIENTY,1,"B",NM1,0))
  1. . I IDX0<1!'$D(^DDE(DIENTY,1,IDX0,0)) Q
  1. . ;
  1. . S VALUE=$$VALUE(IDX0,1)
  1. . ;
  1. . I VALUE=""!$G(ERR)!$G(DDEQUIT) Q
  1. . S ITEM=$$ELEMENT(ITEM,TAG,VALUE,SEQ,"addList")
  1. Q
  1. ;
  1. LIST4 ; -- list of values in DLIST()
  1. N DLIST,TAG,ENTITY,SEQ,X,VALUE,ERR
  1. S TAG=$P(ITM1,U,2)
  1. ;
  1. ;create DLIST()=data value or ID for Entity
  1. D ITMPROC I $G(DDEOUT)!$G(DDEQUIT) K DDEOUT Q
  1. ;
  1. ; set up for results: single FIELD or multi-field ENTITY
  1. S ENTITY=$P(ITM0,U,8) I ENTITY D
  1. . S:'$L(TAG) TAG=$G(^DDE(ENTITY,.1))
  1. . D PREPROC(ENTITY)
  1. I TAG="" S TAG=$P(ITM0,U)
  1. ;
  1. ; process list items
  1. S SEQ=0 F S SEQ=$O(DLIST(SEQ)) Q:'SEQ D Q:$G(ERR)
  1. . S X=$G(DLIST(SEQ))
  1. . S (VALUE,ERR)=""
  1. . I 'ENTITY,$$VALID(X) S VALUE=X
  1. . E S VALUE=$$EN1^DDEG(ENTITY,X,1,.ERR)
  1. . ;
  1. . I VALUE=""!$G(ERR)!$G(DDEQUIT) Q
  1. . S ITEM=$$ELEMENT(ITEM,TAG,VALUE,SEQ,"addList")
  1. ;
  1. D:ENTITY POST(ENTITY)
  1. Q
  1. ;
  1. ADD(STRING,ELEMENT,SEQ) ; -- add ELEMENT to result STRING
  1. Q:$G(ELEMENT)="" STRING
  1. ;
  1. ; JSON:0 XML:1 TEXT:2
  1. S DFORM=+$G(DFORM),SEQ=+$G(SEQ)
  1. ;
  1. N RES S RES=$G(STRING)
  1. I DFORM=0 S RES=RES_$S($L($G(STRING)):", ",1:"")_ELEMENT ;SEQ>1
  1. I DFORM=1 S RES=RES_ELEMENT
  1. I DFORM=2 S RES=RES_$S($L($G(STRING)):U,1:"")_ELEMENT ;SEQ>1
  1. Q RES
  1. ;
  1. ELEMENT(STRING,NAME,VALUE,SEQ,OPTION,DTYPE) ; -- build an element STRING
  1. ; STRING=SERIALIZED RESPONSE
  1. S STRING=$G(STRING) Q:$G(NAME)="" STRING
  1. S:NAME["." NAME=$P(NAME,".",2)
  1. S VALUE=$G(VALUE)
  1. S SEQ=+$G(SEQ),OPTION=$G(OPTION,"addTags")
  1. ;
  1. ; does DataTYPE not require quotes?
  1. S DTYPE=$S($G(DTYPE)="C":1,$G(DTYPE)="L":1,"[{"[$E(VALUE):1,VALUE?0.1"-"1.N1"E"1N.E:0,VALUE?0.1"-"1.N1"e"1N.E:0,+VALUE=VALUE:1,1:0) ;p27
  1. N X,Y S X="""",Y=$S(DTYPE:"",1:"""")
  1. ;
  1. S DFORM=+$G(DFORM) ; JSON:0 XML:1 TEXT:2
  1. I OPTION="addTags" D Q STRING
  1. . S:DFORM=0 STRING=X_NAME_X_":"_Y_VALUE_Y
  1. . S:DFORM=1 STRING="<"_NAME_">"_VALUE_"</"_NAME_">"
  1. . S:DFORM=2 STRING=VALUE
  1. ;
  1. I OPTION="addList" D Q STRING
  1. . S:DFORM=0 STRING=STRING_$S($L(STRING):", ",1:"")_Y_VALUE_Y ;SEQ>1
  1. . S:DFORM=1 STRING=STRING_"<"_NAME_">"_VALUE_"</"_NAME_">"
  1. . S:DFORM=2 STRING=STRING_$S($L(STRING):"~",1:"")_Y_VALUE_Y ;SEQ>1
  1. ;
  1. Q STRING
  1. ;
  1. VALID(X) ; -- return 1 or 0, if X is a valid string
  1. ; Cannot be null or only white space
  1. S X=$G(X)
  1. I X="" Q 0
  1. I X?." " Q 0
  1. ;I X?.P Q 0
  1. Q 1
  1. ;
  1. ESC(X) ; -- convert key characters for outgoing XML/JSON
  1. Q:DFORM=2 X
  1. I DFORM=0 Q $$ESC^XLFJSON(X)
  1. ; DFORM=1 XML
  1. N I,Y,QOT S QOT=""""
  1. ; strip control characters ;p16 add $C(0)
  1. F I=0:1:8,11,12,14:1:31 I X[$C(I) S X=$TR(X,$C(I))
  1. ; p17 strip non-printable characters
  1. F I=127:1:159 I X[$C(I) S X=$TR(X,$C(I))
  1. ; handle special characters:
  1. ; DDESC = 1 ('&' only), 2 ('&' + CDATA), or
  1. ; default (0/null/undefined) = CDATA only
  1. I (X["&")!(X["<")!(X[">")!(X["'")!(X[QOT) D Q Y
  1. . I $G(DDESC) D Q:DDESC=1 S X=Y
  1. .. S Y=$P(X,"&") F I=2:1:$L(X,"&") S Y=Y_"&"_$P(X,"&",I)
  1. .. S X=Y,Y=$P(X,"<") F I=2:1:$L(X,"<") S Y=Y_"<"_$P(X,"<",I)
  1. .. S X=Y,Y=$P(X,">") F I=2:1:$L(X,">") S Y=Y_">"_$P(X,">",I)
  1. .. S X=Y,Y=$P(X,"'") F I=2:1:$L(X,"'") S Y=Y_"'"_$P(X,"'",I)
  1. .. S X=Y,Y=$P(X,QOT) F I=2:1:$L(X,QOT) S Y=Y_"""_$P(X,QOT,I)
  1. . I X["]]>" D S X=Y ;p16 strip end brackets from transcription upload
  1. .. S Y=$P(X,"]]>") F I=2:1:$L(X,"]]>") S Y=Y_$P(X,"]]>",I)
  1. . S Y="<![CDATA["_X_"]]>"
  1. Q X
  1. ;
  1. PREPROC(DIENTY) ; -- pre-processing logic
  1. N X
  1. S X=$G(^DDE(+DIENTY,2)) X:X'="" X
  1. Q
  1. ;
  1. IENPROC ; -- IEN processing logic
  1. ; setting DDEOUT will cause this record (IEN) to not be returned
  1. N X
  1. S X=$G(^DDE(+DIENTY,4)) X:X'="" X
  1. Q
  1. ;
  1. ITMPROC ; -- ITEM processing logic
  1. ; setting DDEOUT will cause this item to not be returned
  1. N X
  1. S X=$G(^DDE(+DIENTY,1,+ITM,6)) X:X'="" X
  1. Q
  1. ;
  1. POST(DIENTY) ; -- post-processing logic
  1. N X
  1. S X=$G(^DDE(+DIENTY,3)) X:X'="" X
  1. Q