XDRMRG ;IHS/OHPRD/JCM - MERGE DUPLICATE RECORDS ;02/10/95  11:15
 ;;7.3;TOOLKIT;;Apr 25, 1995
START ;
 D INIT
 D:XDRM("PRE-MERGE")]"" @XDRM("PRE-MERGE")
 G:XDRMRG("QFLG") END
 D @$S('$D(XDRM("DINUMS")):"SINGLE",1:"MULTI")
 G:XDRMRG("QFLG") END
 I XDRM("POST-MERGE")]"" W:'$D(XDRM("NOTALK")) !!,"I will now do any post merge action that needs to occur, this may take some time please be patient." D @XDRM("POST-MERGE")
 I XDRM("POST-MERGE")']"",$P(XDRM(0),U,26) D DELETE
 D STATUS
END D EOJ
 Q
 ;
INIT ;
 F XDRI="XDRMRGFR","XDRMRGTO" K ^TMP(XDRI,$J)
 S %X=XDRGL_XDRMRG("FR")_",",%Y="^TMP(""XDRMRGFR"",$J,"_XDRMRG("FR")_"," D %XY^%RCR
 S %X=XDRGL_XDRMRG("TO")_",",%Y="^TMP(""XDRMRGTO"",$J,"_XDRMRG("TO")_"," D %XY^%RCR
 K %X,%Y
 S (XDRQFLG,XDRMRG("QFLG"))=0
 I $D(XDRM("AUTO")),'$D(XDRM("NOTALK")) S (XDRM("NOTALK"),XDRM("NON-INTERACTIVE"))=""
 I '$D(XDRM("DINUMS")),$O(^VA(15.1,XDRFL,12,0)) F XDRI=0:0 S XDRI=$O(^(XDRI)) Q:'XDRI  S XDRM("DINUMS",XDRI)=""
 K XDRI
 Q
 ;
SINGLE ;
 S XDRMRGFL=XDRFL,XDRMRGL=XDRGL
 I '$D(XDRM("NON-INTERACTIVE")) K DITM D DITM2 G:XDRMRG("QFLG") SINGLEX I 1
 E  D DIT0
 D PACKAGE
 D DITMGMRG
SINGLEX Q
 ;
MULTI ;
 S XDRMRGFL=XDRFL,XDRMRGL=XDRGL
 I '$D(XDRM("NON-INTERACTIVE")) K DITM D DITM2 G:XDRMRG("QFLG") MULTIX I 1
 E  D DIT0
 F XDRMRGFL=0:0 S XDRMRGFL=$O(XDRM("DINUMS",XDRMRGFL)) Q:'XDRMRGFL!(XDRMRG("QFLG"))  S XDRMRGL=^DIC(XDRMRGFL,0,"GL") D @$S('$D(XDRM("NON-INTERACTIVE")):"DITM2",1:"DIT0")
 G:XDRMRG("QFLG") MULTIX
 S XDRMRGFL=XDRFL,XDRMRGL=XDRGL
 D PACKAGE
 F XDRI=0:0 S XDRI=$O(XDRM("DINUMS",XDRI)) Q:'XDRI  S DITMGMRG("EXCLUDE",XDRI)=""
 K XDRI
 D DITMGMRG
 F XDRMRGFL=0:0 S XDRMRGFL=$O(XDRM("DINUMS",XDRMRGFL)) Q:'XDRMRGFL  S XDRMRGL=^DIC(XDRMRGFL,0,"GL") D DITMGMRG
MULTIX Q
 ;
DITM2 ;
 S:XDRMRGFL'=XDRFL X="DITM2^XDRMRG1",@^%ZOSF("TRAP") K X
 S:$D(XDRM("NOTALK")) DITM("NOTALK")=""
 S:'$D(DITM("NOTALK")) DITM("DDSP")=""
 S DITM("DIMERGE")=1
 S DITM("DFF")=XDRMRGFL,DITM("DIC")=XDRMRGL
 S DITM("DIT(1)")=XDRMRG("FR"),DITM("DIT(2)")=XDRMRG("TO"),DITM("DDEF")=2
 S DITM("PACKAGE")="",DITM("EXCLUDE",15)="",IOP=IO(0)
 W:'$D(XDRM("NOTALK")) !!,"I will now merge the ",$P(^DIC(XDRMRGFL,0),U,1)," file, this may take some time please be patient."
 D ^DITM2 K DITM,IOP
 D:$D(DIRUT)!($D(DMSG))!($D(DUOUT)) ASK
 K DIRUT,DMSG
 Q
 ;
ASK ;
 W !!
 S DIR(0)="YO",DIR("A")="Do you wish to continue MERGING these records",DIR("B")="N"
 D ^DIR
 I $D(DTOUT)!($D(DUOUT)) S XDRMRG("QFLG")=1 G ASKX
 S:'Y XDRMRG("QFLG")=1
ASKX K DIR,DA,Y
 Q
 ;
DIT0 ;
 S:XDRMRGFL'=XDRFL X="DIT0^XDRMRG1",@^%ZOSF("TRAP") K X
 W:'$D(XDRM("NOTALK")) !!,"I will now merge the ",$P(^DIC(XDRMRGFL,0),U,1)," file, this may take some time please be patient."
 K DA
 S (DIT("T"),DIT("F"))=XDRMRGL
 S (D0,DA("T"))=XDRMRG("TO"),DA("F")=XDRMRG("FR")
 D EN^DIT0 K D0,DA,DIC,DIK,DIT
 Q
 ;
PACKAGE ;
 F XDRMPKGE=0:0 S XDRMPKGE=$O(^VA(15,XDRMPDA,11,XDRMPKGE)) Q:'XDRMPKGE  D:$P(^VA(15,XDRMPDA,11,XDRMPKGE,0),U,2)=1 MERGE
 K XDRMPKGE
 Q
 ;
MERGE ;
 S X="MERGE^XDRMRG1",@^%ZOSF("TRAP") K X
 W:'$D(XDRM("NOTALK")) !!,"I will now merge all files associated with the ",$P(^DIC(9.4,XDRMPKGE,0),U,1)," package."
 W:'$D(XDRM("NOTALK")) !,"This may take some time, Please be patient."
 I $D(^DIC(9.4,XDRMPKGE,20,XDRFL,0))#2,$P(^(0),U,3)]"" S XDRMRG("PKGMRG")=U_$P(^(0),U,3) D @XDRMRG("PKGMRG")
 W:'$D(XDRM("NOTALK")) !!,"Completed merging all files associated with the ",$P(^DIC(9.4,XDRMPKGE,0),U,1)," package."
 Q
DITMGMRG ;
 S X="DITMGMRG^XDRMRG1",@^%ZOSF("TRAP") K X
 W:'$D(XDRM("NOTALK")) !!,"I will now merge all files that point to the ",$P(^DIC(XDRMRGFL,0),U,1)," file that do not have a specific package merge ... This may take some time, please be patient."
 S DITMGMRG("FILE")=XDRMRGFL,DITMGMRG("FR")=XDRMRG("FR"),DITMGMRG("TO")=XDRMRG("TO")
 S DITMGMRG("EXCLUDE",15)="",DITMGMRG("PACKAGE")=""
 S:$D(XDRM("NOTALK")) DITMGMRG("NOTALK")=""
 S:$G(XDRM("TOP FILE")) DITMGMRG("TOP FILE")=XDRM("TOP FILE")
 D EN^DITMGMRG K DITMGMRG
 Q
 ;
DELETE ;
 W:'$D(XDRM("NOTALK")) !!,"I will now delete the From Record from the ",$P(^DIC(XDRFL,0),U,1)," file and any files that   were excluded from the repointing. This may take some time, please be patient."
 K XDRMRGFL,XDRMRGL
 I $D(XDRM("DINUMS")) F XDRMRGFL=0:0 S XDRMRGFL=$O(XDRM("DINUMS",XDRMRGFL)) Q:'XDRMRGFL  S XDRMRGL=^DIC(XDRMRGFL,0,"GL") S DIK=XDRMRGL,DA=XDRMRG("FR") D DIK
 S DIK=XDRGL,DA=XDRMRG("FR") D DIK
 Q
 ;
DIK ;
 S X="DIK^XDRMRG1",@^%ZOSF("TRAP") K X
 D ^DIK K DIK,DA
 Q
STATUS ;
 S DIE="^VA(15,",DA=XDRMPDA,DR=".05////2;.08////"_DT D ^DIE K DIE,DR,DA
 Q
EOJ ;
 F XDRI="XDRMRGFR","XDRMRGTO" K ^TMP(XDRI,$J)
 K DITM,DITMGMRG,XDRMRGFL,XDRMGL
 Q
