DITC2 ;SFISC/XAK-COMPARE FILE ENTRIES PRINT ;10/15/91 9:01 AM
;;22.2;VA FileMan;;Jan 05, 2016;Build 42
;;Per VA Directive 6402, this routine should not be modified.
;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
;;Licensed under the terms of the Apache License, Version 2.0.
;
S J=-1 D PG1 F K=0:0 S J=$O(^UTILITY($J,"DIT",J)) Q:X=U!(U[J) S N=-1 F K=0:0 S N=$O(^UTILITY($J,"DIT",J,N)) Q:N=""!(X=U) D D1 Q:X=U D:+X(0) D2
I X'=U D PG Q:X=U D MUL:$D(^UTILITY($J,"DIT",U))
Q
D1 ;
I $Y+6>IOSL,'$D(DREDO) S DIJ=J,DIN=N D PG,PG1:X'=U S J=DIJ,N=DIN K DIJ,DIN
Q:X=U
D11 F I=0:1:2 S X(I)=$S($D(^UTILITY($J,"DIT",J,N,I)):^(I),1:"") I X(I)["""" D D7
S DEQ=X(1)=X(2) I $D(DDIF),DEQ I (DDIF=1)!(DDIF=2&$L(X(1))) S X(0)=0 K ^UTILITY($J,"DIT",J,N) Q
Q:'$D(DIMERGE) S X1=$P(X(0),U,3) I '$L(X1) S X1=$S(X(1)=X(2):0,'$L(X(DDEF)):'(DDEF-1)+1,1:DDEF),$P(^UTILITY($J,"DIT",J,N,0),U,3)=X1,$P(X(0),U,3)=X1
Q
D2 ;
K D S X2=$P(X(0),U,3),X(0)=$P(X(0),U,2)
D20 F I=0:1:2 S X=X(I),X1="" F D=1:1 Q:'$L(X) D:($L(X)>(DV-6)) D5 S $P(D(D),U,I+1)=$S(I=X2&I:"["_X_"]",1:X) S X=X1,X1=""
D21 F I=1:1 Q:'$D(D(I)) D D3
Q
D3 ;
I $D(DREDO),I=1 X:$D(IOXY) IOXY W !,DREDO,".",?4 G D31
W ! W:(I=1) ! I I=1,$D(DIMERGE) S DNUM=DNUM+1 W DNUM,"." S DNUM(DNUM)=J_U_N_U_$Y
W:'DEQ&'$D(DIMERGE)&(I=1) "***" W ?4
D31 F X1=1:1:3 I $L($P(D(I),U,X1)) W ?(DV*(X1-1)) W $P(D(I),U,X1)
I $D(DREDO) W $E(DDSPC,1,3)
Q
D5 ;
F K=DV-6:-1:1 Q:$E(X,K)?1P
I $E(X,K)?1P S X1=$E(X,K+1,999),X=$E(X,1,K) Q
S X1=$E(X,DV-1,999),X=$E(X,DV-2)
Q
D7 S X(I)=$P(X(I),"""",1)_"'"_$P(X(I),"""",2,99) I X(I)["""" G D7
Q
MUL ;
S DIMUL=1 D PG1 S N=0
F K=0:0 S N=$O(^UTILITY($J,"DIT",U,N)) Q:N=""!(X=U) D EMUL
K DIMUL Q
EMUL ;
D:$Y+5>IOSL PG
K D S X2="",J=^UTILITY($J,"DIT",U,N,0),X=$P(J,U,2),X1="",I=0 F D=1:1 Q:'$L(X) D:($L(X)>(DV-6)) D5 S $P(D(D),U,I+1)=""""_X_"""" S X=X1,X1=""
S X=J F I=1:1:2 S $P(D(1),U,I+1)=""""_$S('$P(X,U,I+3):" ---",1:$J($P(X,U,I+3),2)_$S($P(X,U,I+3)>1:" entries",1:" entry"))_""""
D D21
Q
PG ;
I '$D(DIMERGE)!$D(DIMUL) I IOST?1"C".E W $C(7) K DIR S DIR(0)="E" D ^DIR K DIR S:$D(DIRUT) X=U Q
W:'$D(IOXY) !! Q:IOST'?1"C".E I $D(IOXY) S DX=0,DY=IOSL-3 X IOXY W !
W "Default is enclosed in brackets, e.g., [",$E($P(DHD(1),U,DDEF),1,(DV-6)),"]",! S %="Enter 1-"_DNUM_" to change default value, ^ to exit, RETURN to continue: " W %,$E(DDSPC,1,IOM-$L(%)-2)
I $D(IOXY) S DX=$L(%),DY=IOSL-1 X IOXY
I '$D(IOXY) F I=1:1:IOM-$L(%)-2 W $C(8)
R X:DTIME S:'$T X=U,DTOUT=1 Q:X=U
S X1="" I X=+X,X>0,X'>DNUM S J=$P(DNUM(X),U),N=$P(DNUM(X),U,2),X1=$P(^UTILITY($J,"DIT",J,N,0),U,3) G:'X1 PG I +^(0)=.01,$D(^UTILITY($J,"DITDINUM",J,N,0)) D ERD G PG
I X1 S $P(^UTILITY($J,"DIT",J,N,0),U,3)='(X1-1)+1,DREDO=X,DX=5,DY=$P(DNUM(X),U,3)-1 D D1,D2 K DREDO G PG
I $L(X) W $C(7) G PG
Q
PG1 S DC=DC+1,DNUM=0 W:DIFF @IOF S DIFF=1 W DHD(0),?(IOM-29),DHD(9)," PAGE ",DC
S I=$S($D(DIMERGE):DDEF,1:0) F X1=1:1:DFL W ! W $E(DFL(X1),1,DV-1) W ?DV W:(I=1) "[" W $E($P(DHD(X1),U,1),1,DV-1) W:(I=1) "]" W ?(DV*2) W:(I=2) "[" W $E($P(DHD(X1),U,2),1,DV-1) W:(I=2) "]"
W !,DDSH I $D(DIMUL) W !,?2,"NOTE: Multiples will be merged into the target record"
Q
ERD W:'$D(IOXY) !! W $C(7) I $D(IOXY) S DX=0,DY=IOSL-1 X IOXY
W "You must accept the default because this record is DINUMed!!",$E(DDSPC,1,IOM-62) I $D(IOXY) S DX=61,DY=IOSL-1 X IOXY
R X:10 Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDITC2 3453 printed Oct 16, 2024@18:54:42 Page 2
DITC2 ;SFISC/XAK-COMPARE FILE ENTRIES PRINT ;10/15/91 9:01 AM
+1 ;;22.2;VA FileMan;;Jan 05, 2016;Build 42
+2 ;;Per VA Directive 6402, this routine should not be modified.
+3 ;;Submitted to OSEHRA 5 January 2015 by the VISTA Expertise Network.
+4 ;;Based on Medsphere Systems Corporation's MSC FileMan 1051.
+5 ;;Licensed under the terms of the Apache License, Version 2.0.
+6 ;
+7 SET J=-1
DO PG1
FOR K=0:0
SET J=$ORDER(^UTILITY($JOB,"DIT",J))
if X=U!(U[J)
QUIT
SET N=-1
FOR K=0:0
SET N=$ORDER(^UTILITY($JOB,"DIT",J,N))
if N=""!(X=U)
QUIT
DO D1
if X=U
QUIT
if +X(0)
DO D2
+8 IF X'=U
DO PG
if X=U
QUIT
if $DATA(^UTILITY($JOB,"DIT",U))
DO MUL
+9 QUIT
D1 ;
+1 IF $Y+6>IOSL
IF '$DATA(DREDO)
SET DIJ=J
SET DIN=N
DO PG
if X'=U
DO PG1
SET J=DIJ
SET N=DIN
KILL DIJ,DIN
+2 if X=U
QUIT
D11 FOR I=0:1:2
SET X(I)=$SELECT($DATA(^UTILITY($JOB,"DIT",J,N,I)):^(I),1:"")
IF X(I)[""""
DO D7
+1 SET DEQ=X(1)=X(2)
IF $DATA(DDIF)
IF DEQ
IF (DDIF=1)!(DDIF=2&$LENGTH(X(1)))
SET X(0)=0
KILL ^UTILITY($JOB,"DIT",J,N)
QUIT
+2 if '$DATA(DIMERGE)
QUIT
SET X1=$PIECE(X(0),U,3)
IF '$LENGTH(X1)
SET X1=$SELECT(X(1)=X(2):0,'$LENGTH(X(DDEF)):'(DDEF-1)+1,1:DDEF)
SET $PIECE(^UTILITY($JOB,"DIT",J,N,0),U,3)=X1
SET $PIECE(X(0),U,3)=X1
+3 QUIT
D2 ;
+1 KILL D
SET X2=$PIECE(X(0),U,3)
SET X(0)=$PIECE(X(0),U,2)
D20 FOR I=0:1:2
SET X=X(I)
SET X1=""
FOR D=1:1
if '$LENGTH(X)
QUIT
if ($LENGTH(X)>(DV-6))
DO D5
SET $PIECE(D(D),U,I+1)=$SELECT(I=X2&I:"["_X_"]",1:X)
SET X=X1
SET X1=""
D21 FOR I=1:1
if '$DATA(D(I))
QUIT
DO D3
+1 QUIT
D3 ;
+1 IF $DATA(DREDO)
IF I=1
if $DATA(IOXY)
XECUTE IOXY
WRITE !,DREDO,".",?4
GOTO D31
+2 WRITE !
if (I=1)
WRITE !
IF I=1
IF $DATA(DIMERGE)
SET DNUM=DNUM+1
WRITE DNUM,"."
SET DNUM(DNUM)=J_U_N_U_$Y
+3 if 'DEQ&'$DATA(DIMERGE)&(I=1)
WRITE "***"
WRITE ?4
D31 FOR X1=1:1:3
IF $LENGTH($PIECE(D(I),U,X1))
WRITE ?(DV*(X1-1))
WRITE $PIECE(D(I),U,X1)
+1 IF $DATA(DREDO)
WRITE $EXTRACT(DDSPC,1,3)
+2 QUIT
D5 ;
+1 FOR K=DV-6:-1:1
if $EXTRACT(X,K)?1P
QUIT
+2 IF $EXTRACT(X,K)?1P
SET X1=$EXTRACT(X,K+1,999)
SET X=$EXTRACT(X,1,K)
QUIT
+3 SET X1=$EXTRACT(X,DV-1,999)
SET X=$EXTRACT(X,DV-2)
+4 QUIT
D7 SET X(I)=$PIECE(X(I),"""",1)_"'"_$PIECE(X(I),"""",2,99)
IF X(I)[""""
GOTO D7
+1 QUIT
MUL ;
+1 SET DIMUL=1
DO PG1
SET N=0
+2 FOR K=0:0
SET N=$ORDER(^UTILITY($JOB,"DIT",U,N))
if N=""!(X=U)
QUIT
DO EMUL
+3 KILL DIMUL
QUIT
EMUL ;
+1 if $Y+5>IOSL
DO PG
+2 KILL D
SET X2=""
SET J=^UTILITY($JOB,"DIT",U,N,0)
SET X=$PIECE(J,U,2)
SET X1=""
SET I=0
FOR D=1:1
if '$LENGTH(X)
QUIT
if ($LENGTH(X)>(DV-6))
DO D5
SET $PIECE(D(D),U,I+1)=""""_X_""""
SET X=X1
SET X1=""
+3 SET X=J
FOR I=1:1:2
SET $PIECE(D(1),U,I+1)=""""_$SELECT('$PIECE(X,U,I+3):" ---",1:$JUSTIFY($PIECE(X,U,I+3),2)_$SELECT($PIECE(X,U,I+3)>1:" entries",1:" entry"))_""""
+4 DO D21
+5 QUIT
PG ;
+1 IF '$DATA(DIMERGE)!$DATA(DIMUL)
IF IOST?1"C".E
WRITE $CHAR(7)
KILL DIR
SET DIR(0)="E"
DO ^DIR
KILL DIR
if $DATA(DIRUT)
SET X=U
QUIT
+2 if '$DATA(IOXY)
WRITE !!
if IOST'?1"C".E
QUIT
IF $DATA(IOXY)
SET DX=0
SET DY=IOSL-3
XECUTE IOXY
WRITE !
+3 WRITE "Default is enclosed in brackets, e.g., [",$EXTRACT($PIECE(DHD(1),U,DDEF),1,(DV-6)),"]",!
SET %="Enter 1-"_DNUM_" to change default value, ^ to exit, RETURN to continue: "
WRITE %,$EXTRACT(DDSPC,1,IOM-$LENGTH(%)-2)
+4 IF $DATA(IOXY)
SET DX=$LENGTH(%)
SET DY=IOSL-1
XECUTE IOXY
+5 IF '$DATA(IOXY)
FOR I=1:1:IOM-$LENGTH(%)-2
WRITE $CHAR(8)
+6 READ X:DTIME
if '$TEST
SET X=U
SET DTOUT=1
if X=U
QUIT
+7 SET X1=""
IF X=+X
IF X>0
IF X'>DNUM
SET J=$PIECE(DNUM(X),U)
SET N=$PIECE(DNUM(X),U,2)
SET X1=$PIECE(^UTILITY($JOB,"DIT",J,N,0),U,3)
if 'X1
GOTO PG
IF +^(0)=.01
IF $DATA(^UTILITY($JOB,"DITDINUM",J,N,0))
DO ERD
GOTO PG
+8 IF X1
SET $PIECE(^UTILITY($JOB,"DIT",J,N,0),U,3)='(X1-1)+1
SET DREDO=X
SET DX=5
SET DY=$PIECE(DNUM(X),U,3)-1
DO D1
DO D2
KILL DREDO
GOTO PG
+9 IF $LENGTH(X)
WRITE $CHAR(7)
GOTO PG
+10 QUIT
PG1 SET DC=DC+1
SET DNUM=0
if DIFF
WRITE @IOF
SET DIFF=1
WRITE DHD(0),?(IOM-29),DHD(9)," PAGE ",DC
+1 SET I=$SELECT($DATA(DIMERGE):DDEF,1:0)
FOR X1=1:1:DFL
WRITE !
WRITE $EXTRACT(DFL(X1),1,DV-1)
WRITE ?DV
if (I=1)
WRITE "["
WRITE $EXTRACT($PIECE(DHD(X1),U,1),1,DV-1)
if (I=1)
WRITE "]"
WRITE ?(DV*2)
if (I=2)
WRITE "["
WRITE $EXTRACT($PIECE(DHD(X1),U,2),1,DV-1)
if (I=2)
WRITE "]"
+2 WRITE !,DDSH
IF $DATA(DIMUL)
WRITE !,?2,"NOTE: Multiples will be merged into the target record"
+3 QUIT
ERD if '$DATA(IOXY)
WRITE !!
WRITE $CHAR(7)
IF $DATA(IOXY)
SET DX=0
SET DY=IOSL-1
XECUTE IOXY
+1 WRITE "You must accept the default because this record is DINUMed!!",$EXTRACT(DDSPC,1,IOM-62)
IF $DATA(IOXY)
SET DX=61
SET DY=IOSL-1
XECUTE IOXY
+2 READ X:10
QUIT