ADEUPD8 ;IHS/OIT/ENM - ADE6.0 PATCH 18 [ 09/17/2008 3:43 PM ]
;;6.0;ADE;**18**;SEP 17, 2008
;
UPDATE(ADEFILE,ADEFLDS,ADEWPFLD,ADEIENST,ADETGRTN,ADESETX) ;EP
N ADEFDA
S ADENFLDS=$L(ADEFLDS,","),ADEDONE=0,ADERPEAT=0,ADEN="",ADETXT=0
F ADEI=1:1 S ADEX=$P($T(@$P(ADETGRTN,"^")+ADEI^@$P(ADETGRTN,"^",2)),";;",2) S:ADEX="***END***" ADEDONE=1 D Q:ADEDONE
.I ADEX[U!ADEDONE D K ADETEXT S ADETXT=0 Q
..F D Q:ADERPEAT<2
...S ADELSTN=ADEN D:ADESETX'="" @ADESETX D:ADELSTN]"" FILE D SETFDA Q
.Q:$G(ADEWPFLD)=""
.S ADETXT=ADETXT+1,ADETEXT(ADETXT)=ADEX
K ADECURX,ADEDONE,ADEI,ADEI1,ADELSTN,ADEN,ADEEND,ADENFLDS,ADERPEAT,ADESVX,ADESTART,ADETXT,ADETEXT,ADEX,ADEX1
Q
;
SETFDA ;EP
; Corresponds to values in X: the first is the field that is set with the first piece, etc. If a value isn't used to set a field
; nothing should be entered for that piece; should be left empty e.g. ".01,02,,.09"
F ADEI1=1:1:ADENFLDS S ADEFLD=$P(ADEFLDS,",",ADEI1) I ADEFLD'="" S ADEX1=$P(ADEX,U,ADEI1) S:ADEX1'="" ADEFDA(ADEFILE,ADEIENST,ADEFLD)=ADEX1
S ADEN=$P(ADEX,U)
Q
;
FILE ;EP
D UPDATE^DIE(,"ADEFDA","ADEIEN","ADEEMSG")
K ADEFDA,ADEEMSG
; get the IEN assigned
I +$G(ADEIEN(1)),$G(ADETEXT(1))'="" D WP^DIE(ADEFILE,ADEIEN(1)_",",ADEWPFLD,,"ADETEXT","ADEEMSG")
K ADEEMSG,ADEIEN
Q
;
DELETES(ADETGRTN,ADESETX,ADEDIK) ;EP
F ADEI=1:1 S ADEX=$P($T(@$P(ADETGRTN,"^")+ADEI^@$P(ADETGRTN,"^",2)),";;",2) Q:ADEX="***END***" D
. D:ADESETX'="" @ADESETX
. I ADEX'="" S DA=ADEX,DIE=ADEDIK,DR=".08////3080917" D ^DIE
. Q
Q
ADEUPD8 ;IHS/OIT/ENM - ADE6.0 PATCH 18 [ 09/17/2008 3:43 PM ]
+1 ;;6.0;ADE;**18**;SEP 17, 2008
+2 ;
UPDATE(ADEFILE,ADEFLDS,ADEWPFLD,ADEIENST,ADETGRTN,ADESETX) ;EP
+1 NEW ADEFDA
+2 SET ADENFLDS=$LENGTH(ADEFLDS,",")
SET ADEDONE=0
SET ADERPEAT=0
SET ADEN=""
SET ADETXT=0
+3 FOR ADEI=1:1
SET ADEX=$PIECE($TEXT(@$PIECE(ADETGRTN,"^")+ADEI^@$PIECE(ADETGRTN,"^",2)),";;",2)
IF ADEX="***END***"
SET ADEDONE=1
Begin DoDot:1
+4 IF ADEX[U!ADEDONE
Begin DoDot:2
+5 FOR
Begin DoDot:3
+6 SET ADELSTN=ADEN
IF ADESETX'=""
DO @ADESETX
IF ADELSTN]""
DO FILE
DO SETFDA
QUIT
End DoDot:3
IF ADERPEAT<2
QUIT
End DoDot:2
KILL ADETEXT
SET ADETXT=0
QUIT
+7 IF $GET(ADEWPFLD)=""
QUIT
+8 SET ADETXT=ADETXT+1
SET ADETEXT(ADETXT)=ADEX
End DoDot:1
IF ADEDONE
QUIT
+9 KILL ADECURX,ADEDONE,ADEI,ADEI1,ADELSTN,ADEN,ADEEND,ADENFLDS,ADERPEAT,ADESVX,ADESTART,ADETXT,ADETEXT,ADEX,ADEX1
+10 QUIT
+11 ;
SETFDA ;EP
+1 ; Corresponds to values in X: the first is the field that is set with the first piece, etc. If a value isn't used to set a field
+2 ; nothing should be entered for that piece; should be left empty e.g. ".01,02,,.09"
+3 FOR ADEI1=1:1:ADENFLDS
SET ADEFLD=$PIECE(ADEFLDS,",",ADEI1)
IF ADEFLD'=""
SET ADEX1=$PIECE(ADEX,U,ADEI1)
IF ADEX1'=""
SET ADEFDA(ADEFILE,ADEIENST,ADEFLD)=ADEX1
+4 SET ADEN=$PIECE(ADEX,U)
+5 QUIT
+6 ;
FILE ;EP
+1 DO UPDATE^DIE(,"ADEFDA","ADEIEN","ADEEMSG")
+2 KILL ADEFDA,ADEEMSG
+3 ; get the IEN assigned
+4 IF +$GET(ADEIEN(1))
IF $GET(ADETEXT(1))'=""
DO WP^DIE(ADEFILE,ADEIEN(1)_",",ADEWPFLD,,"ADETEXT","ADEEMSG")
+5 KILL ADEEMSG,ADEIEN
+6 QUIT
+7 ;
DELETES(ADETGRTN,ADESETX,ADEDIK) ;EP
+1 FOR ADEI=1:1
SET ADEX=$PIECE($TEXT(@$PIECE(ADETGRTN,"^")+ADEI^@$PIECE(ADETGRTN,"^",2)),";;",2)
IF ADEX="***END***"
QUIT
Begin DoDot:1
+2 IF ADESETX'=""
DO @ADESETX
+3 IF ADEX'=""
SET DA=ADEX
SET DIE=ADEDIK
SET DR=".08////3080917"
DO ^DIE
+4 QUIT
End DoDot:1
+5 QUIT