| 1 | C0CTIU1 ; C0C/ELN - PROCESSING FOR TIU NOTES Contd. ; 19/10/2010 | 
|---|
| 2 | ;;1.2;C0C;;May 11, 2012;Build 47 | 
|---|
| 3 | ;ELN UTILITY PROGRAM TO SUPPORT C0CTIU | 
|---|
| 4 | C0CDATE(EDTE)   ; Converts external date to internal date format | 
|---|
| 5 | ; INPUT : EXTERNAL DATE (TIME IS OPTIONAL) | 
|---|
| 6 | ; OUTOUT: INTERNAL DATE, STORAGE FORMAT YYYMMMDD | 
|---|
| 7 | ; (TIME WILL BE RETURNED IF INCLUDED WITH INPUT) | 
|---|
| 8 | ; | 
|---|
| 9 | Q:'$D(EDTE) -1 | 
|---|
| 10 | N X,%DT,Y | 
|---|
| 11 | S X=EDTE | 
|---|
| 12 | S %DT="TS" | 
|---|
| 13 | D ^%DT | 
|---|
| 14 | Q Y | 
|---|
| 15 | ; | 
|---|
| 16 | XMAP(IXML,INARY,OXML)   ; SUBSTITUTE MULTIPLE @@X@@ VARS WITH VALUES IN INARY | 
|---|
| 17 | ; AND PUT THE RESULTS IN OXML | 
|---|
| 18 | N XCNT | 
|---|
| 19 | I '$D(DEBUG) S DEBUG=0 | 
|---|
| 20 | I '$D(IXML) W "MALFORMED XML PASSED TO MAP",! Q | 
|---|
| 21 | I '$D(@IXML@(0)) D  ; INITIALIZE COUNT | 
|---|
| 22 | . S XCNT=$O(@IXML@(""),-1) | 
|---|
| 23 | E  S XCNT=@IXML@(0) ;COUNT | 
|---|
| 24 | I $O(@INARY@(""))="" W "EMPTY ARRAY PASSED TO MAP",! Q | 
|---|
| 25 | ; | 
|---|
| 26 | N I,J,TNAM,TVAL,TSTR | 
|---|
| 27 | S @OXML@(0)=XCNT ; TOTAL LINES IN OUTPUT | 
|---|
| 28 | F I=1:1:XCNT  D   ; LOOP THROUGH WHOLE ARRAY | 
|---|
| 29 | . S @OXML@(I)=@IXML@(I),C0CSLFLG=0 ; COPY THE LINE TO OUTPUT | 
|---|
| 30 | . I @OXML@(I)?.E1"@@".E D  ; IS THERE A VARIABLE HERE? | 
|---|
| 31 | . . S TSTR=$P(@IXML@(I),"@@",1) ; INIT TO PART BEFORE VARS | 
|---|
| 32 | . . F J=2:2:10  D  Q:$P(@IXML@(I),"@@",J+2)=""  ; QUIT IF NO MORE VARS | 
|---|
| 33 | . . . I DEBUG W "IN MAPPING LOOP: ",TSTR,! H 1 | 
|---|
| 34 | . . . S TNAM=$P(@OXML@(I),"@@",J) ; EXTRACT THE VARIABLE NAME | 
|---|
| 35 | . . . S TVAL="@@"_$P(@IXML@(I),"@@",J)_"@@" ; DEFAULT UNCHANGED | 
|---|
| 36 | . . . I $D(@INARY@(TNAM))  D  ; IS THE VARIABLE IN THE MAP? | 
|---|
| 37 | . . . . I $D(@INARY@(TNAM,"WP")) D  Q | 
|---|
| 38 | . . . . . D DOWPFLD(I,J) | 
|---|
| 39 | . . . . I '$D(@INARY@(TNAM,"F")) D  ; NOT A SPECIAL FIELD | 
|---|
| 40 | . . . . . S TVAL=@INARY@(TNAM) ; PULL OUT MAPPED VALUE | 
|---|
| 41 | . . . . E  D DOFLD() ; PROCESS A FIELD ELAN | 
|---|
| 42 | . . . S TVAL=$$SYMENC^MXMLUTL(TVAL) ;MAKE SURE THE VALUE IS XML SAFE | 
|---|
| 43 | . . . S TSTR=TSTR_TVAL_$P(@IXML@(I),"@@",J+1) ; ADD VAR AND PART AFTER | 
|---|
| 44 | . . I $G(C0CSLFLG)=1 M @OXML@(I)=TSTR Q | 
|---|
| 45 | . . S @OXML@(I)=TSTR ; COPY LINE WITH MAPPED VALUES | 
|---|
| 46 | . . I DEBUG W TSTR H 1 | 
|---|
| 47 | I DEBUG W "MAPPED",! | 
|---|
| 48 | K C0CSLFLG | 
|---|
| 49 | Q | 
|---|
| 50 | DOWPFLD(I,J)    ;WORDPROCESSING FIELD MANIPULATION | 
|---|
| 51 | N C0CTXCNT | 
|---|
| 52 | S C0CTXCNT=0 | 
|---|
| 53 | F  S C0CTXCNT=$O(@INARY@(TNAM,"WP",C0CTXCNT)) Q:C0CTXCNT=""  D | 
|---|
| 54 | . S TSTR(C0CTXCNT)=TSTR_$G(@INARY@(TNAM,"WP",C0CTXCNT))_$P(@IXML@(I),"@@",J+1) | 
|---|
| 55 | S C0CSLFLG=1 | 
|---|
| 56 | Q | 
|---|
| 57 | DOFLD() ;QUIT | 
|---|
| 58 | Q | 
|---|
| 59 | BUILD(BLIST,BDEST)      ; A COPY MACHINE THAT TAKE INSTRUCTIONS IN ARRAY BLIST | 
|---|
| 60 | ; WHICH HAVE ARRAY;START;FINISH AND COPIES THEM TO DEST | 
|---|
| 61 | ; DEST IS CLEARED TO START | 
|---|
| 62 | ; USES PUSH TO DO THE COPY | 
|---|
| 63 | N I,WPSEQ | 
|---|
| 64 | K @BDEST | 
|---|
| 65 | F I=1:1:@BLIST@(0) D  ; FOR EACH INSTRUCTION IN BLIST | 
|---|
| 66 | . N J,ATMP | 
|---|
| 67 | . S ATMP=$$ARRAY^C0CXPATH(@BLIST@(I)) | 
|---|
| 68 | . I $G(DEBUG) W "ATMP=",ATMP,! | 
|---|
| 69 | . I $G(DEBUG) W @BLIST@(I),! | 
|---|
| 70 | . F J=$$START^C0CXPATH(@BLIST@(I)):1:$$FINISH^C0CXPATH(@BLIST@(I)) D  ; | 
|---|
| 71 | . . ; FOR EACH LINE IN THIS INSTR | 
|---|
| 72 | . . I $G(DEBUG) W "BDEST= ",BDEST,! | 
|---|
| 73 | . . I $G(DEBUG) W "ATMP= ",@ATMP@(J),! | 
|---|
| 74 | . . I $D(@ATMP@(J,1)),$G(@ATMP@(J))="<Value>@@RESULTTESTVALUE@@</Value>" D  Q | 
|---|
| 75 | . . . S WPSEQ=0 | 
|---|
| 76 | . . . D PUSH^C0CXPATH(BDEST,"<Value>") | 
|---|
| 77 | . . . F  S WPSEQ=$O(@ATMP@(J,WPSEQ)) Q:WPSEQ=""  D | 
|---|
| 78 | . . . . D PUSH^C0CXPATH(BDEST,$$SYMENC^MXMLUTL($$XVAL^C0CXPATH(@ATMP@(J,WPSEQ)))_"
") | 
|---|
| 79 | . . . D PUSH^C0CXPATH(BDEST,"</Value>") | 
|---|
| 80 | . . D PUSH^C0CXPATH(BDEST,@ATMP@(J)) | 
|---|
| 81 | Q | 
|---|