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

XDRDMAIN.m

Go to the documentation of this file.
  1. XDRDMAIN ;SF-IRMFO/IHS/OHPRD/JCM - MAIN DRIVER FOR DUPLICATE CHECKING SOFTWARE ;1/5/98 13:27
  1. ;;7.3;TOOLKIT;**23**;Apr 25, 1995
  1. ;;
  1. START ;
  1. S XDRQFLG=0
  1. S XDRMAINI="DUP" D ^XDRMAINI G:XDRQFLG END
  1. I $$NEWERR^%ZTER() N $ETRAP,$ESTACK S $ETRAP="D ERR^XDRDMAIN"
  1. E S X="ERR^XDRDMAIN",@^%ZOSF("TRAP")
  1. K ^XTMP("XDRERR",XDRFL) S ^XTMP("XDRERR",0)=($$FMADD^XLFDT(DT,30))_U_DT
  1. I $D(^VA(15.1,XDRFL,"APDTI")) D ^XDRDPDTI,COMPLETE G END
  1. D:$D(XDRDTYPE) @XDRDTYPE
  1. D COMPLETE ;I $P(^VA(15.1,XDRFL,0),U,2)="r" D COMPLETE
  1. END D EOJ
  1. Q
  1. ERR ;
  1. S XDRQERR=1
  1. S XDREMSG=$ZE
  1. S XDRQERR=1
  1. D ^%ZTER
  1. D COMPLETE
  1. G UNWIND^%ZTER
  1. ;
  1. BASIC ;
  1. S XDRD("GL")=XDRGL_"XDRCD)"
  1. I $P(XDRD(0),U,6)]"" S XDRD("NEW GL")=XDRGL_""""_$P(XDRD(0),U,6)_""""_",XDRCD)"
  1. F XDRDI1=0:0 S $P(^VA(15.1,XDRFL,3),U)=$$NOW^XLFDT() S XDRCD=$O(@XDRD("GL")) Q:'XDRCD!($P(^VA(15.1,XDRFL,0),U,2)="h")!(XDRQFLG) D POSDUPS D:$D(^TMP("XDRD",$J,XDRFL)) BCHECK D COUNT K:$D(XDRD("NEW GL")) @XDRD("NEW GL")
  1. I $P(^VA(15.1,XDRFL,0),U,2)="h" S XDRQFLG=1
  1. K XDRDI1
  1. Q
  1. NEW ;
  1. ;I $P(XDRD(0),U,6)="" S XDRERR=17 D ^XDREMSG Q ; COMMENTED OUT 1/5/98 JLI
  1. ;S XDRD("GL")=XDRGL_""""_$P(XDRD(0),U,6)_""""_",XDRCD)" ; COMMENTED OUT 1/5/98 JLI
  1. ;F XDRDI1=0:0 S $P(^VA(15.1,XDRFL,3),U)=$$NOW^XLFDT() S XDRCD=$O(@XDRD("GL")) Q:'XDRCD!($P(^VA(15.1,XDRFL,0),U,2)="h")!(XDRQFLG) D POSDUPS D:$D(^TMP("XDRD",$J,XDRFL)) NCHECK K @XDRD("GL") D COUNT ; COMMENTED OUT 1/5/98 JLI
  1. ; ABOVE LINES USE A SPECIAL CROSS REFERENCE FOR NEW SEARCH, INSTEAD THE
  1. ; FOLLOWING LINES USE THE HIGHEST NUMBER PREVIOUSLY FOUND AS A POTENTIAL
  1. ; DUPLICATE AS THE STARTING POINT FOR THE NEW SEARCH.
  1. S XDRD("GL")=XDRGL_",XDRCD)" D ; ADDED 1/5/98 JLI
  1. . N I,X,XGL
  1. . S XGL=$E(XDRGL,2,$L(XDRGL))
  1. . S I="",X=0
  1. . F S I=$O(^VA(15,"B",I)) Q:I="" I $P(I,";",2)=XGL,I>X S X=+I
  1. . S XDRCD=X
  1. G BASIC
  1. ;I $P(^VA(15.1,XDRFL,0),U,2)="h" S XDRQFLG=1 ; COMMENTED OUT 1/5/98
  1. ;K XDRDI1 ; COMMENTED OUT 1/5/98
  1. Q
  1. POSDUPS ;
  1. K ^TMP("XDRD",$J,XDRFL)
  1. G:$D(^VA(15,"AFR",$P(XDRGL,U,2),XDRCD)) POSDUPSX
  1. ; *** Above I check to see if the record has already been merged. I
  1. ; would have preferred to check some node within the file being
  1. ; checked since the Duplicate Record file may be purged, Fileman at
  1. ; some point in the future will provide a merged node.
  1. ; ***
  1. ; We will pass the variable XDRCD for them to then get the candidates
  1. ; Expect the routine to send back the possibles in
  1. ; ^TMP("XDRD",$J,XDRFL
  1. ;
  1. I '$D(@(XDRGL_XDRCD_",0)")) G POSDUPSX
  1. S X=$P(XDRD("COLLECTION ROUTINE"),U,2) X ^%ZOSF("TEST") K X I '$T S XDRERR=2 D ^XDREMSG G POSDUPSX
  1. D @XDRD("COLLECTION ROUTINE")
  1. POSDUPSX Q
  1. ;
  1. BCHECK ;
  1. F XDRCD2=0:0 S XDRCD2=$O(^TMP("XDRD",$J,XDRFL,XDRCD2)) Q:'XDRCD2!(XDRQFLG) I $S(XDRDTYPE="BASIC":XDRCD2>XDRCD,1:1) D CHECK ; MODIFIED 1/5/98 JLI
  1. K ^TMP("XDRD",$J,XDRFL) F %=0:0 S %=$O(XDRCD(0)) Q:'% K XDRCD(%)
  1. K %
  1. Q
  1. ;
  1. NCHECK ;
  1. F XDRCD2=0:0 S XDRCD2=$O(^TMP("XDRD",$J,XDRFL,XDRCD2)) Q:'XDRCD2!(XDRQFLG) S XDRD("GL2")=XDRGL_""""_$P(XDRD(0),U,6)_""""_",XDRCD2)" D:'$D(@XDRD("GL2")) CHECK
  1. K ^TMP("XDRD",$J,XDRFL) F %=0:0 S %=$O(XDRCD(0)) Q:'% K XDRCD(%)
  1. K %,XDRD("GL2")
  1. Q
  1. CHECK ;
  1. S XDRDMAIN("DUPFLG")=0
  1. I $D(^VA(15,"AFR",$P(XDRGL,U,2),XDRCD2)) G CHECKX
  1. S XDRDPAIR=$S(XDRCD<XDRCD2:XDRCD_U_XDRCD2,1:XDRCD2_U_XDRCD)
  1. F XDRDI="APOT","ANOT","AVDUP" I $D(^VA(15,XDRDI,$P(XDRGL,U,2),XDRDPAIR)) S:XDRDTYPE'="NEW" XDRDMAIN("DUPFLG")=1 D:XDRDTYPE="NEW" DIK
  1. K XDRDI,XDRDPAIR
  1. D:'XDRDMAIN("DUPFLG") ^XDRDUP
  1. CHECKX ;
  1. Q
  1. DIK ;
  1. ; If a new search type deletes any verified non-duplicates or potential
  1. ; duplicate entries involving the two records.
  1. S DA=$O(^VA(15,XDRDI,$P(XDRGL,U,2),XDRDPAIR,0)),DIK="^VA(15,"
  1. D ^DIK K DIK,DA
  1. Q
  1. COUNT ;
  1. S XDRDCNT=XDRDCNT+1
  1. S DIE="^VA(15.1,",DA=XDRFL,DR=".07////"_XDRDCNT_";.08////"_XDRCD
  1. D ^DIE K DIE,DR,DA,D0
  1. Q
  1. COMPLETE ;
  1. N DIE,DA,DR,%,X,Y
  1. S DIE="^VA(15.1,",DA=XDRFL
  1. S DR=$S($D(XDRQERR):".02////e",XDRQFLG:".02////h",1:".02////c")
  1. D NOW^%DTC
  1. S DR=DR_";.04////"_%
  1. S DR=DR_";.1////"_($P(^VA(15.1,XDRFL,0),U,10)+$$FMDIFF^XLFDT(%,$P(^(0),U,3),2))
  1. D ^DIE
  1. S $P(^VA(15.1,XDRFL,3),U)=""
  1. I $D(XDREMSG) S ^XTMP("XDRERR",XDRFL)=XDREMSG
  1. Q
  1. EOJ ;
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. K XDRDSCOR,XDRDTEST,XDRDMAIN,XDRD,XDRDCNT,XDRCD,XDRCD2,XDRDTYPE
  1. K XDRFL,XDRGL,XDRDPDTI,XDRDPAIR,XDRQFLG,XDRDTYPE,XDRDNSTA
  1. Q