STANDARD DATA DICTIONARY #15 -- DUPLICATE RECORD FILE 3/24/25 PAGE 1 STORED IN ^VA(15, *** NO DATA STORED YET *** SITE: WWW.BMIRWIN.COM UCI: VISTA,VISTA (VERSION 7.3) DATA NAME GLOBAL DATA ELEMENT TITLE LOCATION TYPE ----------------------------------------------------------------------------------------------------------------------------------- This file contains information about duplicate records in any file defined in the two variable pointer fields; RECORD1 and RECORD2 (.01 and .02). The status of an entry in this file may be 'potential duplicate, unverified', 'verified, not a duplicate', or 'verified duplicate'. The envisioned sequence of events is software would identify potential duplicates from a file and add an entry in this file containing the two potential duplicate records and set the status field to 'potential duplicate, unverified'. A user would then make the determination of whether the two entries were truely duplicates and change the status field appropriately. If the user changed the status to 'verified duplicate' he/she would then be asked whether to merge RECORD1 to RECORD2 or RECORD2 to RECORD1. The records would then be merged accordingly. This user interaction is controlled by the merge software and the dictionary supports a merge methodology that will notify the appropriate packages affected by the merging of the two entries and wait for their concurrence prior to actually merging the two entries. If this approach is not desired the software can set the appropriate fields and immediatley do the merge. This methodology requires the two fields defined below. The MERGE STATUS field is a SET where 0=not ready, 1=ready, and 2=merged. This field would be set to 0=not ready and a bulletin would be sent to the appropriate package users. The MERGE PACKAGES field is a multiple which contains a list of packages that are affected by the merging of entries in the subject file. The STATUS field of this multiple will be set to 0=not ready if the package has the 'from' entry and does an interactive merge. It will be set to 1=ready if the package has the 'from' entry but does an automatic merge. It will be set to 2=no from entry if the package does not have the 'from' entry, regardless of whether they do an interactive or automatic merge. If the package has a merge routine in the package file the merge is automatic. If not, the merge is interactive. The ERROR MESSAGE field of this multiple will contain any errors encountered during the execution of that packages merge routine. Once all entries in the MERGE PACKAGES multiple have a STATUS'=0 the MERGE STATUS field is set to 1=ready via a TRIGGER. Once the MERGE STATUS is set to 1=ready the actual merge will occur. When it is complete the MERGE STATUS will be set to 2=merged. Once set to 2 most fields cannot be modified. The following fields are set by TRIGGERs and are never seen by the user: DATE FOUND, DATE VERIFIED, DATE RESOLVED, WHO CREATED, WHO VERIFIED, and WHO CHANGED. Also, the MERGE DIRECTION and MERGE STATUS fields will be deleted by a TRIGGER if the STATUS field is modified from 'verified duplicate' to any other status. The fields LOOKUP1 and LOOKUP2 provide navigational capability from this file to either the RECORD1 or RECORD2 entries in the file specified in the variable pointer fields. The field LOOKUP3 provides navigational capability to any file that points to this file and has a DINUM relationship. A lookup on the "B" xref will get any file entry that is part of a duplicate record pair because the "B" xref is set by a REGULAR xref on the .01 field and by a MNEMONIC xref on the .02 field. The "AFR" xref is used by the INPUT TRANSFORMS on the .01 and .02 field to prevent entering a file entry that has already been merged away. All xrefs that have subscripts consisting of 'RECORD^RECORD' pairs will be 'low DFN^high DFN'. The "ALK" xref is short lived and contains entries that are unresolved potential duplicates or verified duplicates that have not yet been merged. Its form, using file 2 as an example, is ^VA(15,"ALK","DPT(",fe#1,1,fe#2,DA) or ^VA(15,"ALK","DPT(",fe#1,2,fe#2,DA) where the 5th subscript has the following meaning: 1=potential duplicate, 2=verified duplicate. When the 5th subscript is a 1 there will be two "ALK" entries with the two fe#s reversed. When the 5th subscript is a 2 there will be only 1 "ALK" entry and fe#s will be in the order 'from' 'to'. Once merged the "ALK" xref for that entry will be killed. The "AMRG" xref is also short lived and contains one "AMRG" entry for each entry in this file that has a MERGE STATUS of 0=not ready or 1=ready. Once merged the "AMRG" xref for that entry will be killed. The form of the "AMRG xref, using file 2 as an example, is ^VA(15,"AMRG","DPT(",0,DA) or ^VA(15,"AMRG","DPT(",1,DA) where the value of the 4th subscript has the following meaning; 0=not ready, 1=ready. The "AVCHG" xref is set by the WHO CHANGED field which is itself only set when the STATUS field is changed from "V" to any other value. If this xref exists action needs to be taken because other packages have been notified to merge the two entries. All TRIGGERs fire forward except the TRIGGER on the STATUS field of the MERGE PACKAGES multiple which fires backward to set the MERGE STATUS field. However, that TRIGGER has no effect on the kill side. TRIGGER direction can be relevent when deleting entries using ^DIK. The .01 and .02 fields are 'uneditable' so entries can only be deleted from this file using ^DIK. Most TRIGGERs will not fire during a RE-INDEX of this file. Also, many are conditional upon external SET values. Modify this dictionary with extreme caution. Several TRIGGERs have been modified using ^%GEDIT to add MUMPS code to the conditional logic to prevent firing during a RE-INDEX. This was done only for TRIGGERs that already had human readable conditional logic. ***** W A R N I N G ***** When you add a file to a variable pointer field FileMan deletes the input transform so save it off before the change and restore it after the change. FILE SCREEN (SCR-node) : I 1 Q:$D(APMFCTL) Q:'$D(^VA(15,Y,9999999)) I '+^(9999999) DD ACCESS: @ RD ACCESS: # WR ACCESS: @ DEL ACCESS: @ LAYGO ACCESS: @ AUDIT ACCESS: # APPLICATION GROUP(S): XU IDENTIFIED BY: RECORD2 (#.02)[R], STATUS (#.03)[R] POINTED TO BY: DUPLICATE FILE ENTRY field (#.03) of the MERGE ENTRY sub-field (#15.22) of the XDR MERGE PROCESS File (#15.2) CROSS REFERENCED BY: STATUS(ACMORS), MERGE STATUS(ADJ), MERGE DIRECTION(AFR), MERGE STATUS(AFR), STATUS(ALK), MERGE DIRECTION(ALK2), MERGE STATUS(ALK3), MFI CONTROLLED(AMFIC), MFI PATIENT(AMFIP), MFI RESOLVED(AMFIP2), MFI RESOLVED(AMFIR), MERGE STATUS(AMRG), STATUS(ANOT), STATUS(AODUP), STATUS(APOT), STATUS(ARDUP), STATUS(ARDUP1), MERGE DIRECTION(ATO), MERGE STATUS(ATO), WHO CHANGED(AVCHG), STATUS(AVDUP), STATUS(AXDUP), STATUS(AXDUP1), RECORD1(B), RECORD2(B) 15,.01 RECORD1 0;1 VARIABLE POINTER (Required) FILE ORDER PREFIX LAYGO MESSAGE 2 1 P n PATIENT 200 2 NP n NEW PERSON INPUT TRANSFORM: I $D(^VA(15,"AFR",$P(X,";",2),+X)) S %=$O(^(+X,0)),%=+$P(^VA(15,%,0),U,$P(^VA(15,%,0),U,4)#2+1),%=$ P(@(U_$P(X,";",2)_%_",0)"),U,1) K X W !?5,"Already merged to "_% Q LAST EDITED: SEP 06, 1990 DESCRIPTION: This field contains one of the potential duplicate pair. This is a variable pointer. TECHNICAL DESCR: One of the potential duplicate pair. UNEDITABLE NOTES: XXXX--CAN'T BE ALTERED EXCEPT BY PROGRAMMER CROSS-REFERENCE: 15^B 1)= S ^VA(15,"B",$E(X,1,30),DA)="" 2)= K ^VA(15,"B",$E(X,1,30),DA) CROSS-REFERENCE: ^^TRIGGER^15^.06 1)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S X=$D(DIU(0))=0 I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)): ^(0),1:"") S X=$P(Y(1),U,6),X=X S DIU=X K Y S X=DIV N %I,%H,% D NOW^%DTC X ^DD(15,.01,1,2,1.4) 1.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,6)=DIV,DIH=15,DIG=.06 D ^DICR:$O(^ DD(DIH,DIG,1,0))>0 2)= Q CREATE CONDITION)= S X=$D(DIU(0))=0 CREATE VALUE)= TODAY DELETE VALUE)= NO EFFECT FIELD)= DATE FOUND This TRIGGER sets the DATE FOUND field when an entry is added to this file. CROSS-REFERENCE: ^^TRIGGER^15^.09 1)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S X=$D(DIU(0))=0 I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)): ^(0),1:"") S X=$P(Y(1),U,9),X=X S DIU=X K Y S X=DIV S X=DUZ X ^DD(15,.01,1,3,1.4) 1.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,9)=DIV,DIH=15,DIG=.09 D ^DICR:$O(^ DD(DIH,DIG,1,0))>0 2)= Q CREATE CONDITION)= S X=$D(DIU(0))=0 CREATE VALUE)= S X=DUZ DELETE VALUE)= NO EFFECT FIELD)= WHO CREATED This TRIGGER sets the WHO CREATED field when an entry is added to this file. CROSS-REFERENCE: ^^TRIGGER^9002099.3^.01 1)= Q 2)= Q X ^DD(15,.01,1,4,2.3) I X S X=DIV X ^DD(15,.01,1,4,89.2) S Y(101)=$S($D(^APMM(99.3,D0,0)):^( 0),1:"") S X=$P(Y(101),U,1) S D0=I(0,0) S DIU=X K Y I DIV(0)>0 S DIK(0)=DA,DIK="^APMM(99.3,",DA=DIV (0) D ^DIK S DA=DIK(0) K DIK 2.3)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S X=$S(X["DPT("&('$D(DIU(0))):1,1:0) 89.2)= X $P(^DD(15,99993,0),U,5,99) S Y(1)=X S I(0,0)=$S($D(D0):D0,1:"") S X=Y(1),X=X S X=X K DIC S DIC="^APMM(99.3,",DIC(0)="NMF" D ^DIC S (D,D0,DIV(0))=+Y CREATE VALUE)= NO EFFECT DELETE CONDITION)= S X=$S(X["DPT("&('$D(DIU(0))):1,1:0) DELETE VALUE)= @ DIC)= LOOKUP DIK)= DELETE FIELD)= LOOKUP3:DUPLICATE RECORD VALUE:DUPLICATES This TRIGGER fires only for file 2, and then only on the kill side. Its purpose is to delete the corresponding entry in the DUPLICATE RECORD VALUE file, if there is one. 15,.02 RECORD2 0;2 VARIABLE POINTER (Required) FILE ORDER PREFIX LAYGO MESSAGE 2 1 P n PATIENT 200 2 NEW PERSON n MESSAGE FOR NEW PERSON INPUT TRANSFORM: S %=$P(^VA(15,DA,0),U,1) K:X=%!($P(X,";",2)'=$P(%,";",2))!($P(^(0),U,5)=2) X X:$D(X) $P(^DD(15,.01, 0),U,5,99) LAST EDITED: JUL 25, 1989 DESCRIPTION: The second of the potential duplicate pair. This is a variable pointer. TECHNICAL DESCR: One of the potential duplicate pair. UNEDITABLE NOTES: XXXX--CAN'T BE ALTERED EXCEPT BY PROGRAMMER CROSS-REFERENCE: 15^B^MNEMONIC 1)= S:'$D(^VA(15,"B",$E(X,1,30),DA)) ^(DA)=1 2)= I $D(^VA(15,"B",$E(X,1,30),DA)),^(DA) K ^(DA) 15,.03 STATUS 0;3 SET (Required) 'P' FOR POTENTIAL DUPLICATE, UNVERIFIED; 'N' FOR VERIFIED, NOT A DUPLICATE; 'V' FOR VERIFIED DUPLICATE; 'X' FOR VERIFICATION IN PROCESS; 'R' FOR REQUIRES RESOLUTION; LAST EDITED: APR 05, 1998 HELP-PROMPT: This indicates the status of the pair of entries DESCRIPTION: This field indicates the status of this duplicate record pair. It may be 'potential duplicate, unverified', 'verified, not a duplicate', or 'verified duplicate'. This field cannot be modified once MERGE STATUS is set to 2=MERGED. TECHNICAL DESCR: This field indicates the status of this duplicate record pair. It may be 'potential duplicate, unverified', 'verified, not a duplicate', or 'verified duplicate'. This field cannot be modified once MERGE STATUS is set to 2=MERGED. SCREEN: S DIC("S")="I $P(^VA(15,DA,0),U,5)'>1" EXPLANATION: Cannot be modified once MERGE STATUS is set to 2=MERGED or 3=IN PROCESS CROSS-REFERENCE: 15^APOT^MUMPS 1)= I X="P" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) S ^VA(15,"APOT",$P($ P(X,";",2),U,1),+X_U_+$P(X,U,2),DA)="" 2)= Q:X'="P" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) K ^VA(15,"APOT",$P ($P(X,";",2),U,1),+X_U_+$P(X,U,2),DA) The form of this xref, using file 2 as an example, is: ^VA(15,"APOT","DPT(",fe#1^fe#2,DA)="" and the fe#s will be in the order low^high. This xref will be killed when the STATUS field is changed to any other value. CROSS-REFERENCE: 15^ANOT^MUMPS 1)= I X="N" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) S ^VA(15,"ANOT",$P($ P(X,";",2),U,1),+X_U_+$P(X,U,2),DA)="" 2)= Q:X'="N" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) K ^VA(15,"ANOT",$P ($P(X,";",2),U,1),+X_U_+$P(X,U,2),DA) This xref will exist only when the STATUS is VERIFIED, NOT A DUPLICATE. The form of this xref, using file 2 as an example, is: ^VA(15,"ANOT","DPT(","fe#1^fe#2,DA)="" where the order of the fe#s will be low^high This xref will be killed when the STATUS field is changed to any other value. CROSS-REFERENCE: 15^AVDUP^MUMPS 1)= I X="V" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) S ^VA(15,"AVDUP",$P( $P(X,";",2),U,1),+X_U_+$P(X,U,2),DA)="" 2)= Q:X'="V" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) K ^VA(15,"AVDUP",$ P($P(X,";",2),U,1),+X_U_+$P(X,U,2),DA) This xref permanently exists for all entries in this file that are verified duplicates. The form of this xref, using file 2 as an example, is: ^VA(15,"AVDUP","DPT(","fe#1^fe#2",DA)="" where the order of the fe#s will low^high. CROSS-REFERENCE: 15^ALK^MUMPS 1)= Q:X="N" S %=X="V",X=$P(^VA(15,DA,0),U,1,2),^VA(15,"ALK",$P($P(X,";",2),U,1),+X,%+1,+$P(X,U,2), DA)="" S:'% ^VA(15,"ALK",$P($P(X,";",2),U,1),+$P(X,U,2),1,+X,DA)="" 2)= Q:X="N" S %=X="V",X=$P(^VA(15,DA,0),U,1,2) K ^VA(15,"ALK",$P($P(X,";",2),U,1),+X,%+1,+$P(X,U,2 ),DA) K:'% ^VA(15,"ALK",$P($P(X,";",2),U,1),+$P(X,U,2),1,+X,DA) This xref will exist, in one form or the other, from the time an entry is made in this file until the records are merged or verified as not a duplicate. The form of this xref, using file 2 as an example, is: ^VA(15,"ALK",^DPT(",fe#1,n,fe#2,DA)="" where 'n' will be 1 for a potential duplicate and 2 for a verified duplicate. When 'n' is 1 there will be two "ALK" xrefs with the fe#s reversed. When 'n' is 2 there will be only one "ALK" xref and the fe#s will be in the order RECORD1 RECORD2. The "ALK2" xref on MERGE DIRECTION will reset this xref to be in the order 'from' 'to'. Once merged the "ALK" xref for this entry will be killed by the "ALK3" xref on the MERGE STATUS field.. CROSS-REFERENCE: ^^TRIGGER^15^.07 1)= X ^DD(15,.03,1,5,1.3) I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)):^(0),1:"") S X=$P(Y(1),U,7),X=X S DIU=X K Y S X=DIV N %I,%H,% D NOW^%DTC X ^DD(15,.03,1,5,1.4) 1.3)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S Y(1)=$C(59)_$S($D(^DD(15,.03,0)):$P(^(0),U,3),1:"") S X=$P($P(Y(1),$C(59)_Y(0)_":",2),$C(59),1)'="POTENTIAL DUPLICATE, UNVERIFIED" S:X X=$D(DIU(0))=0 1.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,7)=DIV,DIH=15,DIG=.07 D ^DICR:$O(^ DD(DIH,DIG,1,0))>0 2)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S X=$D(DIU(0))=0 I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)): ^(0),1:"") S X=$P(Y(1),U,7),X=X S DIU=X K Y S X="" X ^DD(15,.03,1,5,2.4) 2.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,7)=DIV,DIH=15,DIG=.07 D ^DICR:$O(^ DD(DIH,DIG,1,0))>0 CREATE CONDITION)= STATUS'="POTENTIAL DUPLICATE, UNVERIFIED" CREATE VALUE)= TODAY DELETE CONDITION)= S X=$D(DIU(0))=0 DELETE VALUE)= @ FIELD)= DATE VERIFIED This TRIGGER sets the DATE VERIFIED field. It is not fired for a status of 'potential duplicate, unverified'. If the status is changed from verified the DATE VERIFIED field is deleted and will be reset if appropriate. CROSS-REFERENCE: ^^TRIGGER^15^.11 1)= X ^DD(15,.03,1,6,1.3) I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)):^(0),1:"") S X=$P(Y(1),U,11),X=X S DIU=X K Y S X=DIV S X=DUZ X ^DD(15,.03,1,6,1.4) 1.3)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S Y(1)=$C(59)_$S($D(^DD(15,.03,0)):$P(^(0),U,3),1:"") S X=$P($P(Y(1),$C(59)_Y(0)_":",2),$C(59),1)'="POTENTIAL DUPLICATE, UNVERIFIED" S:X X=$D(DIU(0))=0 1.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,11)=DIV,DIH=15,DIG=.11 D ^DICR:$O( ^DD(DIH,DIG,1,0))>0 2)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S X=$D(DIU(0))=0 I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)): ^(0),1:"") S X=$P(Y(1),U,11),X=X S DIU=X K Y S X="" X ^DD(15,.03,1,6,2.4) 2.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,11)=DIV,DIH=15,DIG=.11 D ^DICR:$O( ^DD(DIH,DIG,1,0))>0 CREATE CONDITION)= STATUS'="POTENTIAL DUPLICATE, UNVERIFIED" CREATE VALUE)= S X=DUZ DELETE CONDITION)= S X=$D(DIU(0))=0 DELETE VALUE)= @ FIELD)= WHO VERIFIED This TRIGGER sets the WHO VERIFIED field. It is not fired for a status of 'potential duplicate, unverified'. If the status is changed from verified the WHO VERIFIED field is deleted and reset as appropriate. The conditional logic on this TRIGGER was modified, using ^%GEDIT, to prevent firing during a RE-INDEX. CROSS-REFERENCE: ^^TRIGGER^15^.04 1)= Q 2)= X ^DD(15,.03,1,7,2.3) I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)):^(0),1:"") S X=$P(Y(1),U,4),X=X S DIU=X K Y S X="" S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,4)=DIV,DIH=15,DIG=.04 D ^DICR:$O(^DD(DIH,DIG,1,0))>0 2.3)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S Y(1)=$C(59)_$S($D(^DD(15,.03,0)):$P(^(0),U,3),1:"") S X=$P($P(Y(1),$C(59)_X_":",2),$C(59),1)="VERIFIED DUPLICATE" S:X X=$D(DIU(0))=0 CREATE VALUE)= NO EFFECT DELETE CONDITION)= OLD STATUS="VERIFIED DUPLICATE" DELETE VALUE)= @ FIELD)= MERGE DIRECTION This TRIGGER deletes the MERGE DIRECTION field when the status is being changed from 'verified duplicate' to any other value. The conditional logic on this TRIGGER was modified, using ^%GEDIT, to prevent firing during a RE-INDEX. CROSS-REFERENCE: ^^TRIGGER^15^.05 1)= X ^DD(15,.03,1,8,1.3) I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)):^(0),1:"") S X=$P(Y(1),U,5),X=X S DIU=X K Y S X=DIV S X=0 X ^DD(15,.03,1,8,1.4) 1.3)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S Y(1)=$C(59)_$S($D(^DD(15,.03,0)):$P(^(0),U,3),1:"") S X=$P($P(Y(1),$C(59)_Y(0)_":",2),$C(59),1)="VERIFIED DUPLICATE" S:X X=$D(DIU(0))=0 1.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,5)=DIV,DIH=15,DIG=.05 D ^DICR:$O(^ DD(DIH,DIG,1,0))>0 2)= X ^DD(15,.03,1,8,2.3) I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)):^(0),1:"") S X=$P(Y(1),U,5),X=X S DIU=X K Y S X="" S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,5)=DIV,DIH=15,DIG=.05 D ^DICR:$O(^DD(DIH,DIG,1,0))>0 2.3)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S Y(1)=$C(59)_$S($D(^DD(15,.03,0)):$P(^(0),U,3),1:"") S X=$P($P(Y(1),$C(59)_X_":",2),$C(59),1)="VERIFIED DUPLICATE" S:X X=$D(DIU(0))=0 CREATE CONDITION)= STATUS="VERIFIED DUPLICATE" CREATE VALUE)= S X=0 DELETE CONDITION)= OLD STATUS="VERIFIED DUPLICATE" DELETE VALUE)= @ FIELD)= MERGE STATUS This TRIGGER sets the MERGE STATUS field to 0=NOT READY when the status is set to 'verified duplicate'. The MERGE STATUS field is deleted when the status is changed from 'verified duplicate' to any other value. The conditional logic on this TRIGGER was modified, using ^%GEDIT, to prevent firing during a RE-INDEX. CROSS-REFERENCE: ^^TRIGGER^15^.08 1)= X ^DD(15,.03,1,9,1.3) I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)):^(0),1:"") S X=$P(Y(1),U,8),X=X S DIU=X K Y S X=DIV N %I,%H,% D NOW^%DTC X ^DD(15,.03,1,9,1.4) 1.3)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S Y(1)=$C(59)_$S($D(^DD(15,.03,0)):$P(^(0),U,3),1:"") S X=$P($P(Y(1),$C(59)_Y(0)_":",2),$C(59),1)="VERIFIED, NOT A DUPLICATE" S:X X=$D(DIU(0))=0 1.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,8)=DIV,DIH=15,DIG=.08 D ^DICR:$O(^ DD(DIH,DIG,1,0))>0 2)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S X=$D(DIU(0))=0 I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)): ^(0),1:"") S X=$P(Y(1),U,8),X=X S DIU=X K Y S X="" X ^DD(15,.03,1,9,2.4) 2.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,8)=DIV,DIH=15,DIG=.08 D ^DICR:$O(^ DD(DIH,DIG,1,0))>0 CREATE CONDITION)= STATUS="VERIFIED, NOT A DUPLICATE" CREATE VALUE)= TODAY DELETE CONDITION)= S X=$D(DIU(0))=0 DELETE VALUE)= @ FIELD)= DATE RESOLVED This TRIGGER sets the DATE RESOLVED field when the status is set to 'verified, not a duplicate'. The DATE RESOLVED field is deleted when the status is changed to any other value. CROSS-REFERENCE: ^^TRIGGER^15^.12 1)= Q 2)= X ^DD(15,.03,1,10,2.3) I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)):^(0),1:"") S X=$P(Y(1),U,12),X=X S DIU=X K Y S X=DIV S X=DUZ X ^DD(15,.03,1,10,2.4) 2.3)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S Y(1)=$C(59)_$S($D(^DD(15,.03,0)):$P(^(0),U,3),1:"") S X=$P($P(Y(1),$C(59)_X_":",2),$C(59),1)="VERIFIED DUPLICATE" S:X X=$D(DIU(0))=0 2.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,12)=DIV,DIH=15,DIG=.12 D ^DICR:$O( ^DD(DIH,DIG,1,0))>0 CREATE VALUE)= NO EFFECT DELETE CONDITION)= OLD STATUS="VERIFIED DUPLICATE" DELETE VALUE)= S X=DUZ FIELD)= WHO CHANGED This TRIGGER sets the WHO CHANGED field to the user number any time the status is changed from 'verified duplicate' to any other value. The conditional logic on this TRIGGER was modified, using ^%GEDIT, to prevent firing during a RE-INDEX. CROSS-REFERENCE: 15^AXDUP^MUMPS 1)= I X="X" S X=$P($P(^VA(15,DA,0),U),";",2) S ^VA(15,"AXDUP",X,DA)="" 2)= Q:X'="X" S X=$P($P(^VA(15,DA,0),U),";",2) K ^VA(15,"AXDUP",X,DA) 3)= THIS X-REF IS USED TO IDENTIFY POTENTIAL DUPLICATES IN THE VERIFICATION PROCESS. IT IS USED TO RAPIDLY CHECK ENTRIES FOR THE NUMBER OF DAYS SINCE THEY ENTERED THE VERIFICATION PROCESS. This X-REF (AXDUP) on field .03 is used to identify potential duplicates in the verification process. It is used to rapidly check entries for the number of days since they entered the verification process. CROSS-REFERENCE: 15^ACMORS^MUMPS 1)= Q 2)= Q 3)= THIS SETS UP THE ACMORS X-REFERENCE ON CMOR SCORES FOR THE FIRST ENTRY CROSS-REFERENCE: 15^ARDUP^MUMPS 1)= I X="R" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) S ^VA(15,"ARDUP",$P( $P(X,";",2),U,1),+X_U_+$P(X,U,2),DA)="" 2)= Q:X'="R" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) K ^VA(15,"ARDUP",$ P($P(X,";",2),U,1),+X_U_+$P(X,U,2),DA) The form of this xref, using file 2 as an example, is: ^VA(15,"ARDUP","DPT(",fe#1^fe#2,DA)="" and the fe#s will be in the order low^high. This xref will be killed when the STATUS field is changed to any other value. CROSS-REFERENCE: 15^AXDUP1^MUMPS 1)= I X="X" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) S ^VA(15,"AXDUP1",$P ($P(X,";",2),U,1),+X_U_+$P(X,U,2),DA)="" 2)= Q:X'="X" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) K ^VA(15,"AXDUP1", $P($P(X,";",2),U,1),+X_U_+$P(X,U,2),DA) The form of this xref, using file 2 as an example, is: ^VA(15,"AXDUP1","DPT(",fe#1^fe#2,DA)="" and the fe#s will be in the order low^high. This xref will be killed when the STATUS field is changed to any other value. CROSS-REFERENCE: 15^AODUP^MUMPS 1)= I X="O" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) S ^VA(15,"AODUP",$P( $P(X,";",2),U,1),+X_U_+$P(X,U,2),DA)="" 2)= Q:X'="O" S X=$P(^VA(15,DA,0),U,1,2) S:+X>+$P(X,U,2) X=$P(X,U,2)_U_$P(X,U,1) K ^VA(15,"AODUP",$ P($P(X,";",2),U,1),+X_U_+$P(X,U,2),DA) The form of this xref, using file 2 as an example, is: ^VA(15,"AODUP","DPT(",fe#1^fe#2,DA)="" and the fe#s will be in the order low^high. This xref will be killed when the STATUS field is changed to any other value. CROSS-REFERENCE: 15^ARDUP1^MUMPS 1)= Q:X'="R" S X=$P($P(^VA(15,DA,0),U),";",2) S ^VA(15,"ARDUP1",X,DA)="" 2)= Q:X'="R" S X=$P($P(^VA(15,DA,0),U),";",2) K ^VA(15,"ARDUP1",X,DA) This X-REF (RXDUP1) on field .03 is used to identify potential duplicates in the verification process. It is used to rapidly check entries for the number of days since they entered the verification process. 15,.04 MERGE DIRECTION 0;4 SET (Required) '1' FOR RECORD1 to RECORD2; '2' FOR RECORD2 to RECORD1; LAST EDITED: JUL 09, 1990 DESCRIPTION: This field indicates in which direction the merge is to occur, RECORD1 to RECORD2 or RECORD2 to RECORD1. This field cannot be modified once set. Note: Q:X="" on kill side of "ALK2" xref is because deleting an entry using ^DIK may set this field to NULL via a TRIGGER. TECHNICAL DESCR: This field indicates in which direction the merge is to occur, RECORD1 to RECORD2 or RECORD2 to RECORD1. This field cannot be modified once set. Note: Q:X="" on kill side of "ALK2" xref is because deleting an entry using ^DIK may set this field to NULL via a TRIGGER. SCREEN: S DIC("S")="I $P(^VA(15,DA,0),U,3)=""V""" EXPLANATION: Must be verified duplicate EXECUTABLE HELP: S %=$P(^VA(15,DA,0),U,1,2) W !,?5,"RECORD1=",$P(@(U_$P($P(%,U,1),";",2)_+%_",0)"),U,1),!,?5,"RECORD 2=",$P(@(U_$P($P(%,U,2),";",2)_+$P(%,U,2)_",0)"),U,1),! UNEDITABLE NOTES: TRIGGERED by the STATUS field of the DUPLICATE RECORD File CROSS-REFERENCE: 15^ALK2^MUMPS 1)= S %=X,X=$P(^VA(15,DA,0),U,1,2) K ^VA(15,"ALK",$P($P(X,";",2),U,1),+$P(X,U,%#2+1),2,+$P(X,U,%),D A) S ^VA(15,"ALK",$P($P(X,";",2),U,1),+$P(X,U,%),2,+$P(X,U,%#2+1),DA)="" 2)= Q:X="" S %=X,X=$P(^VA(15,DA,0),U,1,2) K ^VA(15,"ALK",$P($P(X,";",2),U,1),+$P(X,U,%),2,+$P(X,U, %#2+1),DA) This xref kills the existing "ALK" xref for this entry and resets it to be in order 'from' 'to'. See "ALK" xref on STATUS field for more info. CROSS-REFERENCE: 15^AFR^MUMPS 1)= S:X="V" X=$P(^VA(15,DA,0),U,1),^VA(15,"AFR",$P(X,";",2),+X,DA)="" 2)= Q:X'="V" S X=$P(^VA(15,DA,0),U,1) K ^VA(15,"AFR",$P(X,";",2),+X,DA) CROSS-REFERENCE: 15^ATO^MUMPS 1)= S:X="V" X=$P(^VA(15,DA,0),U,2),^VA(15,"ATO",$P(X,";",2),+X,DA)="" 2)= Q:X'="V" S X=$P(^VA(15,DA,0),U,2) K ^VA(15,"ATO",$P(X,";",2),+X,DA) 15,.05 MERGE STATUS 0;5 SET '0' FOR NOT READY; '1' FOR READY; '2' FOR MERGED; '3' FOR IN PROGRESS; LAST EDITED: MAY 05, 1996 HELP-PROMPT: This field indicates the status of verified duplicate entries with respect to merging. DESCRIPTION: This field is set when a duplicate record pair is verified as a duplicate. The actual merge will not occur until this field is set to READY (1). The merge routine will set this field to MERGED (2). Once set to MERGED (2) this field cannot be modified. Note: Kill side of "AFR" and "ATO" xref kill all possible combinations of xref because deleting an entry in this file using ^DIK results in the .04 field being NULL when these xrefs are fired. TECHNICAL DESCR: This field is set when a duplicate record pair is verified as a duplicate. The actual merge will not occur until this field is set to READY (1). The merge routine will set this field to MERGED (2). Once set to MERGED (2) this field cannot be modified. Note: Kill side of "AFR" and "ATO" xref kill all possible combinations of xref because deleting an entry in this file using ^DIK results in the .04 field being NULL when these xrefs are fired. SCREEN: S DIC("S")="I $P(^VA(15,DA,0),U,3)=""V"",$P(^(0),U,5)'=2" EXPLANATION: Must be verified duplicate and once merged cannot be modified DELETE TEST: .05,0)= I 1 NOTES: TRIGGERED by the STATUS field of the MERGE PACKAGES sub-field of the DUPLICATE RECORD File TRIGGERED by the STATUS field of the DUPLICATE RECORD File CROSS-REFERENCE: 15^AFR^MUMPS 1)= Q:X'=2 S X=$P(^VA(15,DA,0),U,1,2),%=+$P(^(0),U,4),^VA(15,"AFR",$P($P(X,";",2),U,1),+$P(X,U,%), DA)="" 2)= Q:X'=2 S X=$P(^VA(15,DA,0),U,1,2) K ^VA(15,"AFR",$P($P(X,";",2),U,1),+$P(X,U,1),DA),^VA(15,"AF R",$P($P(X,";",2),U,1),+$P(X,U,2),DA) This xref is permanent and exists for all merged entries. It indicates which file entry was the 'from' entry. It is used by the INPUT TRANSFORMS on the .01 and .02 fields to prevent entering a file entry that has already been merged away. The form of this xref, using file 2 as an example, is: ^VA(15,"AFR","DPT(",fe#,DA)="" where fe# is the 'from' file entry. Note that the kill side of this xref kills all possible combinations because deleting an entry in this file using ^DIK results in the MERGE DIRECTION field being NULL when this xref is fired. CROSS-REFERENCE: 15^ATO^MUMPS 1)= Q:X'=2 S X=$P(^VA(15,DA,0),U,1,2),%=+$P(^(0),U,4)#2+1,^VA(15,"ATO",$P($P(X,";",2),U,1),+$P(X,U ,%),DA)="" 2)= Q:X'=2 S X=$P(^VA(15,DA,0),U,1,2) K ^VA(15,"ATO",$P($P(X,";",2),U,1),+$P(X,U,1),DA),^VA(15,"AT O",$P($P(X,";",2),U,1),+$P(X,U,2),DA) This xref is permanent and exists for all merged entires. It indicates which file entry was the 'to' entry. It is currently not used by the dictionary. The form of this xref, using file 2 as an example, is: ^VA(15,"ATO","DPT(",fe#,DA)="" where fe# is the 'to' file entry. Note that the kill side of this xref kills all possible combinations because deleting an entry in this file using ^DIK results in the MERGE DIRECTION field being NULL when this xref is fired. CROSS-REFERENCE: 15^AMRG^MUMPS 1)= Q:X=2 S %=$P($P(^VA(15,DA,0),U,1),";",2),^VA(15,"AMRG",%,X,DA)="" 2)= S %=$P($P(^VA(15,DA,0),U,1),";",2) K ^VA(15,"AMRG",%,X,DA) This xref is short lived and exists only for entries that are verified duplicates that have not yet been merged. The form of this xref, using file 2 as an example, is: ^VA(15,"AMRG","DPT(",n,DA)="" where 'n' will be 0 for a MERGE STATUS of NOT READY and a 1 for READY. Once merged the "AMRG" xref for this entry will be killed. CROSS-REFERENCE: 15^ALK3^MUMPS 1)= Q:X'=2 S X=$P(^VA(15,DA,0),U,1,2),%=$P(^(0),U,4) K ^VA(15,"ALK",$P($P(X,";",2),U,1),+$P(X,U,%) ,2,+$P(X,U,%#2+1),DA) 2)= Q This xref kills the "ALK" xref for this entry. See the "ALK" xref on the STATUS field for more info. CROSS-REFERENCE: ^^TRIGGER^15^.08 1)= X ^DD(15,.05,1,5,1.3) I X S X=DIV S Y(1)=$S($D(^VA(15,D0,0)):^(0),1:"") S X=$P(Y(1),U,8),X=X S DIU=X K Y S X=DIV N %I,%H,% D NOW^%DTC X ^DD(15,.05,1,5,1.4) 1.3)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(0)=X S Y(1)=$C(59)_$S($D(^DD(15,.05,0)):$P(^(0),U,3),1:"") S X=$P($P(Y(1),$C(59)_Y(0)_":",2),$C(59),1)="MERGED" S:X X=$D(DIU(0))=0 1.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,8)=DIV,DIH=15,DIG=.08 D ^DICR:$O(^ DD(DIH,DIG,1,0))>0 2)= Q CREATE CONDITION)= MERGE STATUS="MERGED" CREATE VALUE)= TODAY DELETE VALUE)= NO EFFECT FIELD)= DATE RESOLVED This TRIGGER sets the DATE RESOLVED field when the merge status is set to 'merged'. The conditional logic on this TRIGGER was modified, using ^%GEDIT, to prevent firing during a RE-INDEX. CROSS-REFERENCE: 15^ADJ^MUMPS 1)= Q:X'=2 S X="XDRDADJ" X ^%ZOSF("TEST") D:$T ^XDRDADJ 2)= Q This xref is fired only when an entry has been merged. The routine ^XDRDADJ then looks at the file to determine if any other file entry pairs need to be adjusted. For example, using file 2, if patient 5 was merged to patient 10, and there was a potential duplicate entry for patient 5 and patient 15, that entry would be changed to patient 10 and patient 15. There are other possible situations that are far more complex than the above example. 15,.06 DATE FOUND 0;6 DATE (Required) INPUT TRANSFORM: S %DT="EX" D ^%DT S X=Y K:Y<1 X LAST EDITED: APR 02, 1987 DESCRIPTION: This field indicates the date this duplicate record pair was added to this file. TECHNICAL DESCR: This field indicates the date this duplicate record pair was added to this file. WRITE AUTHORITY: ^ NOTES: TRIGGERED by the RECORD1 field of the DUPLICATE RECORD File 15,.07 DATE VERIFIED 0;7 DATE INPUT TRANSFORM: S %DT="ETX" D ^%DT S X=Y K:Y<1 X I $D(X),$P(^VA(15,DA,0),U,3)="P" W " Not verified! " K X LAST EDITED: JUL 18, 1989 DESCRIPTION: This field contains the date this duplicate record pair was verified. The STATUS field must be set to "N" or "V" before data can be entered in this field. TECHNICAL DESCR: This field contains the date this duplicate record pair was verified. The STATUS field must be set to "N" or "V" before data can be entered in this field. WRITE AUTHORITY: ^ NOTES: XXXX--CAN'T BE ALTERED EXCEPT BY PROGRAMMER TRIGGERED by the STATUS field of the DUPLICATE RECORD File 15,.08 DATE RESOLVED 0;8 DATE INPUT TRANSFORM: S %DT="ETX" D ^%DT S X=Y K:Y<1 X LAST EDITED: APR 08, 1987 DESCRIPTION: This field indicates the date this duplicate record pair was resolved. This field will be set by the dictionary when the STATUS field is set to "N" or the MERGE STATUS field is set to MERGED. TECHNICAL DESCR: This field indicates the date this duplicate record pair was resolved. This field will be set by the dictionary when the STATUS field is set to "N" or the MERGE STATUS field is set to MERGED. WRITE AUTHORITY: ^ NOTES: TRIGGERED by the STATUS field of the DUPLICATE RECORD File TRIGGERED by the MERGE STATUS field of the DUPLICATE RECORD File 15,.09 WHO CREATED 0;9 POINTER TO NEW PERSON FILE (#200) LAST EDITED: JUN 18, 1991 DESCRIPTION: This field contains the user who created this entry. If the entry was created by software this field will be NULL. TECHNICAL DESCR: This field contains the user who created this entry. If the entry was created by software this field will be NULL. WRITE AUTHORITY: ^ NOTES: TRIGGERED by the RECORD1 field of the DUPLICATE RECORD File 15,.1 VERIF STARTED DATE 0;10 DATE INPUT TRANSFORM: S %DT="EX" D ^%DT S X=Y K:Y<1 X LAST EDITED: APR 10, 1996 HELP-PROMPT: This is the date on which the status changed from POTENTIAL DUPLICATE to VERIFICATION IN PROGRESS DESCRIPTION: This is the date on which the status changed from POTENTIAL DUPLICATE to VERIFICATION IN PROGRESS. 15,.11 WHO VERIFIED 0;11 POINTER TO NEW PERSON FILE (#200) INPUT TRANSFORM: S %=$P(^VA(15,DA,0),U,3)="P" W:% " Not verified! " K:% X LAST EDITED: JUL 18, 1989 DESCRIPTION: This field indicates the user who verified this duplicate record pair. The STATUS must be set to "N" or "V" before data can be entered in this field. TECHNICAL DESCR: This field indicates the user who verified this duplicate record pair. The STATUS must be set to "N" or "V" before data can be entered in this field. WRITE AUTHORITY: ^ NOTES: XXXX--CAN'T BE ALTERED EXCEPT BY PROGRAMMER TRIGGERED by the STATUS field of the DUPLICATE RECORD File 15,.12 WHO CHANGED 0;12 POINTER TO NEW PERSON FILE (#200) LAST EDITED: JUN 18, 1991 DESCRIPTION: This field is set when the STATUS field is changed from "V" to any other value. The reason this is so important is other packages have been notified and may have already done the merge. TECHNICAL DESCR: This field is set when the STATUS field is changed from "V" to any other value. The reason this is so important is other packages have been notified and may have already done the merge. WRITE AUTHORITY: ^ UNEDITABLE NOTES: TRIGGERED by the STATUS field of the DUPLICATE RECORD File CROSS-REFERENCE: 15^AVCHG 1)= S ^VA(15,"AVCHG",$E(X,1,30),DA)="" 2)= K ^VA(15,"AVCHG",$E(X,1,30),DA) This xref is set only when the STATUS field is changed from "V" to any other value. This is because the WHO CHANGED is set only by a TRIGGER under the above conditon. The reason this is critical is other packages may have been notified to do the merge. The form of this xref is: ^VA(15,"AVCHG",n,DA)="" where 'n' is the user number. 15,.13 APPROVED FOR BACK UP 0;13 SET '0' FOR NO; '1' FOR YES; LAST EDITED: FEB 18, 1997 HELP-PROMPT: Select YES only if the records of both the entry being merged and the entry being merged into have been fully backed up. DESCRIPTION: This field is used to document that a backup of the records has been generated. This is required prior to merging the records. 15,.14 BACKUP INDICATED BY 0;14 FREE TEXT INPUT TRANSFORM: K:$L(X)>60!($L(X)<3) X LAST EDITED: FEB 10, 1997 HELP-PROMPT: Answer must be 3-60 characters in length. DESCRIPTION: This field is used to document the user who indicates that the backup has been generated and/or the fact that the backup was generated by the duplicate merge system. 15,.15 DC TOTAL POSSIBLE SCORE 0;15 NUMBER INPUT TRANSFORM: K:+X'=X!(X>99)!(X<1)!(X?.E1"."1N.N) X LAST EDITED: AUG 30, 1990 HELP-PROMPT: Type a Number between 1 and 99, 0 Decimal Digits DESCRIPTION: This is the maximum possible score if this entry matches exactly to its couterpart. TECHNICAL DESCR: This field contains the highest possible score that can be computed for this 'duplicate record' entry. 15,.16 DC VERIFIED DUPE THRESHOLD % 0;16 NUMBER INPUT TRANSFORM: K:+X'=X!(X>100)!(X<0)!(X?.E1"."1N.N) X LAST EDITED: OCT 02, 1990 HELP-PROMPT: Type a Number between 0 and 100, 0 Decimal Digits DESCRIPTION: This is the lowest % possible that will mark this entry as 'verified duplicate'. TECHNICAL DESCR: This field contains the percent of the highest possible score that will cause this 'duplicate record' entry to become a 'verified duplicate'. If no score, no matter how high, should cause an entry to be a 'verified duplicate', this field should be left empty. 15,.17 DC POTENTIAL DUPE THRESHOLD % 0;17 NUMBER INPUT TRANSFORM: K:+X'=X!(X>100)!(X<0)!(X?.E1"."1N.N) X LAST EDITED: OCT 02, 1990 HELP-PROMPT: Type a Number between 0 and 100, 0 Decimal Digits DESCRIPTION: This is the lowest possible % of the total duplicate score that would mark this entry as 'potential duplicate/unverified'. TECHNICAL DESCR: This field contains the percent of the highest possible score that will cause this 'duplicate record' entry to become a 'potential duplicate/ unverified'. 15,.18 DC DUPE MATCH SCORE 0;18 NUMBER INPUT TRANSFORM: K:+X'=X!(X>500)!(X<0)!(X?.E1"."1N.N) X LAST EDITED: AUG 30, 1990 HELP-PROMPT: Type a Number between 0 and 500, 0 Decimal Digits DESCRIPTION: Actual duplicate score computed. TECHNICAL DESCR: This field contains the actual score computed when this 'duplicate record' entry was analyzed by the duplicate resolution software. 15,.19 DC DUPE MATCH PERCENTILE 0;19 NUMBER INPUT TRANSFORM: K:+X'=X!(X>100)!(X<0)!(X?.E1"."1N.N) X LAST EDITED: OCT 02, 1990 HELP-PROMPT: Type a Number between 0 and 100, 0 Decimal Digits DESCRIPTION: This is the % of the total possible match score. TECHNICAL DESCR: This field contains the percent of the total possible score computed for this 'duplicate record' entry when it was analyzed by the duplicate resolution software. 15,.2 MERGE PROCESS 0;20 POINTER TO XDR MERGE PROCESS FILE (#15.2) LAST EDITED: DEC 01, 1995 HELP-PROMPT: This is the Merge Process which is associated with the merge of this duplicate pair DESCRIPTION: This field indicates which entry is the XDR MERGE PROCESS file this entry is associated with. The merge process contains information on the status of the merge of the duplicate pair(s) included within the given process and the extent of completion. 15,1 REMARKS 1;1 FREE TEXT INPUT TRANSFORM: K:$L(X)>50!($L(X)<1) X LAST EDITED: APR 06, 1987 HELP-PROMPT: ANSWER MUST BE 1-50 CHARACTERS IN LENGTH DESCRIPTION: This field contains special comments about the duplicate record. 15,2 IDENTIFYING SERVICE 2;0 Multiple #15.02 15.02,.01 IDENTIFYING SERVICE 0;1 FREE TEXT (Multiply asked) INPUT TRANSFORM: K:$L(X)>30!($L(X)<3) X LAST EDITED: FEB 06, 1996 HELP-PROMPT: Answer must be 3-30 characters in length. DESCRIPTION: This field is the name of the service with respect to the patient pair being duplicates. CROSS-REFERENCE: 15.02^B 1)= S ^VA(15,DA(1),2,"B",$E(X,1,30),DA)="" 2)= K ^VA(15,DA(1),2,"B",$E(X,1,30),DA) 15.02,.02 SERVICE DETERMINATION 0;2 SET 'V' FOR VERIFIED DUPLICATE; 'N' FOR VERIFIED, NOT A DUPLICATE; 'U' FOR UNKNOWN; 'D' FOR NO DATA IN FILE; LAST EDITED: APR 26, 1996 HELP-PROMPT: This entry indicates the services indication of the status of this duplicate pair (D - NO DATA IN FILE is entered automatically if no data is available for the service to base a decision). DESCRIPTION: This field determines if the patient pair entries are duplicates or not for each identifying service. 15.02,.03 WHO DETERMINED 0;3 POINTER TO NEW PERSON FILE (#200) LAST EDITED: FEB 06, 1996 15.02,.04 WHEN DETERMINED 0;4 DATE INPUT TRANSFORM: S %DT="ESTXR" D ^%DT S X=Y K:Y<1 X LAST EDITED: FEB 06, 1996 15.02,.05 DIRECTION OF MERGE 0;5 SET '1' FOR RECORD1 INTO RECORD2; '2' FOR RECORD2 INTO RECORD1; LAST EDITED: FEB 13, 1996 HELP-PROMPT: Indicate the record which does not have the best data (1=RECORD1 or 2=RECORD2) which should be merged into the other record. DESCRIPTION: This field is used for the identifying service to indicate the preference for which record should be merged into the other record. 15,3 OVERWRITE IN FILE 3;0 Multiple #15.03 (Add New Entry without Asking) 15.03,.01 OVERWRITE IN FILE 0;1 NUMBER (Multiply asked) INPUT TRANSFORM: K:+X'=X!(X>99999999999)!(X<.001)!(X?.E1"."4N.N) X LAST EDITED: APR 02, 1996 HELP-PROMPT: Enter File Number in which one or more fields are to be overwritten during the merge process by data from the merged from entry. DESCRIPTION: This multiple field is used to indicate a file number in which one or more fields in the 'merged to' entry are to be overwritten with data from the 'merged from' entry. CROSS-REFERENCE: 15.03^B 1)= S ^VA(15,DA(1),3,"B",$E(X,1,30),DA)="" 2)= K ^VA(15,DA(1),3,"B",$E(X,1,30),DA) 15.03,.02 MERGE DIRECTION 0;2 SET '1' FOR MERGE REC1 TO REC2; '2' FOR REVERSE MERGE; LAST EDITED: APR 23, 1996 HELP-PROMPT: This entry indicates whether the merge is processed in the normal direction, or reversed DESCRIPTION: This field is used to determine whethe the merge process is handled in the normal direction, or is reversed. 15.03,1 FIELD TO OVERWRITE 1;0 Multiple #15.031 (Add New Entry without Asking) 15.031,.01 FIELD TO OVERWRITE 0;1 NUMBER (Multiply asked) INPUT TRANSFORM: K:+X'=X!(X>99999999999)!(X<.0000001)!(X?.E1"."8N.N) X LAST EDITED: APR 02, 1996 HELP-PROMPT: Enter a field number for which the data in the 'merged to' entry is to be overwritten with data from the 'merged from' entry. DESCRIPTION: This multiple field is used to indicate the field(s) which in the parent file that are to be overwritten with data from the 'merged from' entry. CROSS-REFERENCE: 15.031^B 1)= S ^VA(15,DA(2),3,DA(1),1,"B",$E(X,1,30),DA)="" 2)= K ^VA(15,DA(2),3,DA(1),1,"B",$E(X,1,30),DA) 15,1101 MERGE PACKAGES 11;0 POINTER Multiple #15.01101 DESCRIPTION: This multiple contains an entry for each package from the package file that is affected by the merging of entries in the file specified in this files .01 field. The STATUS field of this multiple will be set to 0=NOT READY if the package has the 'from' entry in the subject file and does not have a merge routine specified in the package file. The STATUS field will be set to 1=READY if the package has the 'from' entry and also has a merge routine specified in the package file. It will be set to 2=NO FROM ENTRY if the package does not have the 'from' entry, regardless of whether the package has a merge routine or not. TECHNICAL DESCR: This multiple contains an entry for each package from the package file that is affected by the merging of entries in the file specified in this files .01 field. The STATUS field of this multiple will be set to 0=NOT READY if the package has the 'from' entry in the subject file and does not have a merge routine specified in the package file. The STATUS field will be set to 1=READY if the package has the 'from' entry and also has a merge routine specified in the package file. It will be set to 2=NO FROM ENTRY if the package does not have the 'from' entry, regardless of whether the package has a merge routine or not. 15.01101,.01 PACKAGE 0;1 POINTER TO PACKAGE FILE (#9.4) INPUT TRANSFORM:S DIC("S")="I $D(^DIC(9.4,Y,20,+$P(@(""^""_$P($P(^VA(15,D0,0),U),"";"",2)_""0)""),U,2)))" D ^DIC K DIC S DIC=DIE,X=+Y K:Y<0 X S:$D(X) DINUM=X LAST EDITED: SEP 06, 1990 DESCRIPTION: Package interested in pending merge. In order to enter a package in this field the package must be affected by file being merged. TECHNICAL DESCR:Package interested in pending merge. In order to enter a package in this field the package must be affected by file being merged. SCREEN: S DIC("S")="I $D(^DIC(9.4,Y,20,+$P(@""^""_$P($P(^VA(15,D0,0),U),"";"",2)_""0)""),U,2)))" EXPLANATION: Package must be affected by file being merged UNEDITABLE NOTES: XXXX--CAN'T BE ALTERED EXCEPT BY PROGRAMMER 15.01101,.02 STATUS 0;2 SET (Required) '0' FOR NOT READY; '1' FOR READY; '2' FOR NO FROM ENTRY; LAST EDITED: JUL 25, 1989 DESCRIPTION: This field set to 0=NOT READY if package does its own interactive merge; 1=READY if package has 'from' entry and has a merge routine specified in the package file; 2=NO FROM ENTRY if the package does not have the 'from' entry, regardless of whether it has a merge routine or not. The TRIGGER on this field must not be modified to fire on the delete side. TECHNICAL DESCR:This field is set to 0=NOT READY if package does its own interactive merge; 1=READY if package has 'from' entry and has a merge routine specified in the package file; 2=NO FROM ENTRY if the package does not have the 'from' entry, regardless of whether it has a merge routine or not. The TRIGGER on this field must not be modified to fire on the delete side. CROSS-REFERENCE:15.01101^ANR^MUMPS 1)= Q:X S ^VA(15,DA(1),11,"ANR",X,DA)="" 2)= Q:X K ^VA(15,DA(1),11,"ANR",X,DA) This xref is set only when the status is 'not ready'. It is used to determine when all entries in this subfile are ready, which means the primary file entries in the DUPLICATE RECORD file entry may now be merged. CROSS-REFERENCE:^^TRIGGER^15^.05 1)= K DIV S DIV=X,D0=DA(1),DIV(0)=D0,D1=DA S Y(1)=$S($D(^VA(15,D0,0)):^(0),1:"") S X=$P(Y(1),U,5),X =X S DIU=X K Y X ^DD(15.01101,.02,1,2,1.1) X ^DD(15.01101,.02,1,2,1.4) 1.1)= S X=DIV X $P(^DD(15.01101,.0299,0),U,5,99) S Y(1)=X S X=Y(1) 1.4)= S DIH=$S($D(^VA(15,DIV(0),0)):^(0),1:""),DIV=X S $P(^(0),U,5)=DIV,DIH=15,DIG=.05 D ^DICR:$O(^ DD(DIH,DIG,1,0))>0 2)= Q CREATE VALUE)= READY DELETE VALUE)= NO EFFECT FIELD)= MERGE STATUS This TRIGGER sets the MERGE STATUS field in this subfiles parent file. The MERGE STATUS field is set to a value computed by the computed field READY in this subfile. The value will compute to 0=NOT READY if there is any entry in this subfile that is not ready. It will compute to 1=READY only after all entries in this subfile have said they are ready. This TRIGGER must not be modified to fire on the kill side. 15.01101,.0299 READY ; COMPUTED MUMPS CODE: S X=$S($D(^VA(15,D0,11,"ANR")):0,1:1) ALGORITHM: S X=$S($D(^VA(15,D0,11,"ANR")):0,1:1) LAST EDITED: APR 05, 1990 DESCRIPTION: This field is set to 0 (not ready) if any of the entries in the MERGE PACKAGES multiple indicate via STATUS field that this duplicate record is not ready to be merged. If all packages are ready for this record to be merged than this field will contain 1 (ready). TECHNICAL DESCR:This computed field computes a value of 0 or 1. The value will be 0 if any entry in this subfile has a STATUS of 'not ready', otherwise, the value will be 1. 15.01101,.03 ERROR MESSAGE 0;3 FREE TEXT INPUT TRANSFORM:K:$L(X)>60!($L(X)<3) X LAST EDITED: JUL 27, 1989 HELP-PROMPT: Answer must be 3-60 characters in length. DESCRIPTION: This field contains system error messages trapped during the execution of package merge routines. TECHNICAL DESCR: This field contains system error messages trapped during the execution of package merge routines. UNEDITABLE 15,1300 CHECK POINTS CP;0 Multiple #15.013 15.013,.01 CHECK POINTS 0;1 FREE TEXT INPUT TRANSFORM: K:$L(X)>30!($L(X)<3)!'(X?1A.E) X LAST EDITED: NOV 02, 1995 HELP-PROMPT: Answer must be 3-30 characters in length. DESCRIPTION: This sub file hold check point information about the merge. CROSS-REFERENCE: 15.013^B 1)= S ^VA(15,DA(1),"CP","B",$E(X,1,30),DA)="" 2)= K ^VA(15,DA(1),"CP","B",$E(X,1,30),DA) 15.013,1 PARAMETERS 1;E1,245 FREE TEXT INPUT TRANSFORM: K:$L(X)>245!($L(X)<1) X LAST EDITED: NOV 02, 1995 HELP-PROMPT: Answer must be 1-245 characters in length. DESCRIPTION: This field is were the MERGE routines can store parameters for restart and tracking. 15,2101 DUPLICATE TESTS/SCORES 21;0 Multiple #15.02101 (Add New Entry without Asking) DESCRIPTION: This field contains the comparison tests and the scores. TECHNICAL DESCR: This multiple contains the individual tests, and their resulting scores, when this 'duplicate record' entry was analyzed by the duplicate resolution software. 15.02101,.01 DUPLICATE TEST 0;1 FREE TEXT INPUT TRANSFORM: K:$L(X)>30!($L(X)<3) X LAST EDITED: AUG 30, 1990 HELP-PROMPT: Answer must be 3-30 characters in length. TECHNICAL DESCR: This field is the name of a test in the 'duplicate test' multiple of the 'duplicate resolution' file. CROSS-REFERENCE: 15.02101^B 1)= S ^VA(15,DA(1),21,"B",$E(X,1,30),DA)="" 2)= K ^VA(15,DA(1),21,"B",$E(X,1,30),DA) 15.02101,.02 DUPLICATE SCORE 0;2 NUMBER (Required) INPUT TRANSFORM: K:+X'=X!(X>500)!(X<-500)!(X?.E1"."1N.N) X LAST EDITED: AUG 30, 1990 HELP-PROMPT: Type a Number between -500 and 500, 0 Decimal Digits DESCRIPTION: This field contains the score computed for this test at the time this 'duplicate record' entry was analyzed by the duplicate resolution software. TECHNICAL DESCR: This field contains the score computed for this test at the time this 'duplicate record' entry was analyzed by the duplicate resolution software. 15,99991 LOOKUP1 ; COMPUTED MUMPS CODE: S X="`"_+^VA(15,D0,0) ALGORITHM: S X="`"_+^VA(15,D0,0) DESCRIPTION: This field is used to navigate to the file pointed to by RECORD1. TECHNICAL DESCR: This field is used to navigate to the file pointed to by RECORD1. 15,99992 LOOKUP2 ; COMPUTED MUMPS CODE: S X="`"_+$P(^VA(15,D0,0),U,2) ALGORITHM: S X="`"_+$P(^VA(15,D0,0),U,2) DESCRIPTION: This field is used to navigate to the file pointed to by RECORD2. TECHNICAL DESCR: This field is used to navigate to the file pointed to by RECORD2. 15,99993 LOOKUP3 ; COMPUTED MUMPS CODE: S X="`"_D0 ALGORITHM: S X="`"_D0 LAST EDITED: AUG 08, 1989 DESCRIPTION: This computed field provides navigational capability to any file that points to this file and has a DINUM relationship. TECHNICAL DESCR: This computed field provides navigational capability to any file that points to this file and has a DINUM relationship. 15,999999901 MFI CONTROLLED 9999999;1 SET '1' FOR MERGE; '2' FOR INSTALL; LAST EDITED: JUL 03, 1990 DESCRIPTION: This field is for MultiFacility Integration software use only. TECHNICAL DESCR: This field is set for entries entered by MFI software. Any entry with a value in this field is under MFI control and cannot be seen by any user other than the MFI manager. The value of this field indicates whether this entry was created by an 'install' or a 'merge' command. If the local site is an integration site this field may have either value. If the local site is a facility all entries will be for 'merge' commands. UNEDITABLE CROSS-REFERENCE: 15^AMFIC 1)= S ^VA(15,"AMFIC",$E(X,1,30),DA)="" 2)= K ^VA(15,"AMFIC",$E(X,1,30),DA) This xref is set to allow the MFI duplicate resolution software direct access to MFI controlled entries. CROSS-REFERENCE: ^^TRIGGER^15^999999902 1)= K DIV S DIV=X,D0=DA,DIV(0)=D0 S Y(1)=$S($D(^VA(15,D0,9999999)):^(9999999),1:"") S X=$P(Y(1),U,2 ),X=X S DIU=X K Y S X=DIV S X=0 X ^DD(15,999999901,1,2,1.4) 1.4)= S DIH=$S($D(^VA(15,DIV(0),9999999)):^(9999999),1:""),DIV=X S $P(^(9999999),U,2)=DIV,DIH=15,DI G=999999902 D ^DICR:$O(^DD(DIH,DIG,1,0))>0 2)= Q CREATE VALUE)= S X=0 DELETE VALUE)= NO EFFECT FIELD)= MFI RESOLVED This trigger sets the MFI RESOLVED field to 0=UNRESOLVED when a value is entered into this field. It has no effect on the change/delete side because this field is uneditable. 15,999999902 MFI RESOLVED 9999999;2 SET '0' FOR UNRESOLVED; '1' FOR RESOLVED; LAST EDITED: JUL 03, 1990 DESCRIPTION: This field is for MultiFacility Integration software use only. TECHNICAL DESCR: This field is for MFI use only and is set to 0 by a trigger when the MFI CONTROLLED field is set. It is then set to 1 by the MFI duplicate resolution/merge software once it has completed this entry. NOTES: TRIGGERED by the MFI CONTROLLED field of the DUPLICATE RECORD File CROSS-REFERENCE: 15^AMFIR 1)= S:'X ^VA(15,"AMFIR",$E(X,1,30),DA)="" 2)= K ^VA(15,"AMFIR",$E(X,1,30),DA) This xref is set for unresolved entries only. When the entry is changed to resolved this xref is deleted. CROSS-REFERENCE: 15^AMFIP2^MUMPS 1)= I X S %=^VA(15,DA,9999999),%=$P(%,U,3) S:% ^VA(15,"AMFIP",%,DA)=X 2)= I X S %=^VA(15,DA,9999999),%=$P(%,U,3) S:% ^VA(15,"AMFIP",%,DA)="" This xref sets the value of the "AMFIP" xref to 1 once this entry is resolved. It sets it back to "" if this field is changed from resolved. 15,999999903 MFI PATIENT 9999999;3 POINTER TO PATIENT FILE (#2) LAST EDITED: JUL 03, 1990 DESCRIPTION: This field is for MultiFacility Integration software use only. TECHNICAL DESCR: This field is for MFI use only and contains the controlled patient for an 'install' command. So long as a patient is unresolved and under MFI control data for that patient will not be forwarded to other sites within an integration domain by the integration site. CROSS-REFERENCE: 15^AMFIP 1)= S ^VA(15,"AMFIP",$E(X,1,30),DA)="" 2)= K ^VA(15,"AMFIP",$E(X,1,30),DA) This xref contains the controlled patient when an entry in this file is under MFI control because of an 'install' command. 15,999999904 MFI FROM SITE 9999999;4 FREE TEXT INPUT TRANSFORM: K:$L(X)>6!($L(X)<6)!'(X?6N) X LAST EDITED: JUL 09, 1990 HELP-PROMPT: Answer must be 6 numeric characters in length. DESCRIPTION: This field is for MultiFacility Integration software use only. TECHNICAL DESCR: This field is for MFI use only and contains the six digit IHS standard code for the site that originated the install or merge command that caused this duplicate recored entry to be created. FILES POINTED TO FIELDS DUPLICATE RECORD (#15) MERGE PACKAGES:STATUS (#.02) NEW PERSON (#200) RECORD1 (#.01) RECORD2 (#.02) WHO CREATED (#.09) WHO VERIFIED (#.11) WHO CHANGED (#.12) IDENTIFYING SERVICE:WHO DETERMINED (#.03) PACKAGE (#9.4) MERGE PACKAGES:PACKAGE (#.01) PATIENT (#2) RECORD1 (#.01) RECORD2 (#.02) MFI PATIENT (#999999903) XDR MERGE PROCESS (#15.2) MERGE PROCESS (#.2) INPUT TEMPLATE(S): PRINT TEMPLATE(S): XDR BRIEF LIST MAR 12, 2002@11:37 USER #0 DUPLICATE RECORD LIST XDR MERGED LIST JUN 19, 1991@09:24 USER #0 DUPLICATE RECORD LIST This template prints a list of merged duplicates form the duplicate record file. SORT TEMPLATE(S): XDR MERGED LIST NOV 09, 1998@13:48 USER #0 SORT BY: @MERGE STATUS// (MERGE STATUS equals 2 (MERGED)) WITHIN MERGE STATUS, SORT BY: @-DC DUPE MATCH PERCENTILE// (DC DUPE MATCH PERCENTILE not null) WITHIN DC DUPE MATCH PERCENTILE, SORT BY: @DATE RESOLVED// (DATE RESOLVED not null) This template is used to print out a listing of all merged entries from the duplicate record file. XDR NOT READY TO MERGE LIST NOV 09, 1998@13:50 USER #0 SORT BY: @STATUS// (STATUS equals V (VERIFIED DUPLICATE)) WITHIN STATUS, SORT BY: @MERGE STATUS// (MERGE STATUS equals 0 (NOT READY)) WITHIN MERGE STATUS, SORT BY: @-DC DUPE MATCH PERCENTILE// (DC DUPE MATCH PERCENTILE not null) WITHIN DC DUPE MATCH PERCENTILE, SORT BY: @DATE FOUND// (DATE FOUND not null) This template is used to print out Verified Duplicates that have a 'Merge Status' of Not Ready. XDR POTENTIAL DUPLICATE LIST DEC 03, 1997@12:02 USER #0 SORT BY: @STATUS="POTENTIAL DUPLICATE, UNVERIFIED";L1;L1// (STATUS=""POTENTIAL DUPLICATE, UNVERIFIED"") WITHIN STATUS="POTENTIAL DUPLICATE, UNVERIFIED", SORT BY: @-DC DUPE MATCH PERCENTILE// (DC DUPE MATCH PERCENTILE not null) WITHIN DC DUPE MATCH PERCENTILE, SORT BY: @DATE FOUND// (DATE FOUND not null) This template is used to produce a listing of all Potential, Unverified Duplicates of a given file of the Duplicate Record File. XDR READY TO MERGE LIST NOV 09, 1998@13:51 USER #0 SORT BY: @STATUS// (STATUS equals V (VERIFIED DUPLICATE)) WITHIN STATUS, SORT BY: @MERGE STATUS// (MERGE STATUS equals 1 (READY)) WITHIN MERGE STATUS, SORT BY: @-DC DUPE MATCH PERCENTILE// (DC DUPE MATCH PERCENTILE not null) WITHIN DC DUPE MATCH PERCENTILE, SORT BY: @DATE FOUND// (DATE FOUND not null) This template is used to produce a listing of all Verified Duplicates that have a merge status of Ready for a given file from the Duplicate Record File. FORM(S)/BLOCK(S):