| 1 | ESPDUP ;ALBANY/CJM - DELETES DUPLICATE ENTRIES IN MASTER NAME INDEX FILE;8/92 | 
|---|
| 2 | ;;1.0;POLICE & SECURITY;**17**;Mar 31, 1994 | 
|---|
| 3 | ; | 
|---|
| 4 | EN ;Allows duplicate names to be deleted from the Master Name Index file. | 
|---|
| 5 | ;The user is required to select the name which is the 'good' one. | 
|---|
| 6 | ; | 
|---|
| 7 | N NAME | 
|---|
| 8 | S (NAME("DELETE"),NAME("KEEP"))="" | 
|---|
| 9 | W !!,"Which name do you want to delete from the Master Name Index?" | 
|---|
| 10 | S NAME("DELETE")=$$SELECT | 
|---|
| 11 | Q:'NAME("DELETE") | 
|---|
| 12 | ; | 
|---|
| 13 | W !!,"** PLEASE NOTE **" | 
|---|
| 14 | W !,"Entries in the Master Name Index file are referenced from many other files." | 
|---|
| 15 | W !,"Before you are allowed to delete a duplicate entry you must first indicate" | 
|---|
| 16 | W !,"the correct entry to keep so that all references in all files can be changed" | 
|---|
| 17 | W !,"to the correct entry." | 
|---|
| 18 | W !!,"Which entry do you want to keep?",! | 
|---|
| 19 | ; | 
|---|
| 20 | F  D  Q:(NAME("DELETE")'=NAME("KEEP")) | 
|---|
| 21 | .S NAME("KEEP")=$$SELECT | 
|---|
| 22 | .I NAME("DELETE")=NAME("KEEP") W !,"You must select a different entry!",! | 
|---|
| 23 | Q:'NAME("KEEP") | 
|---|
| 24 | ; | 
|---|
| 25 | D:$$RUSURE(NAME("DELETE"),NAME("KEEP")) | 
|---|
| 26 | .; | 
|---|
| 27 | .;first update all the xrefs, replacing NAME("DELETE") with NAME("KEEP") | 
|---|
| 28 | .D REPLACE(NAME("DELETE"),NAME("KEEP")) | 
|---|
| 29 | .; | 
|---|
| 30 | .;next delete the duplicate entry | 
|---|
| 31 | .D DELETE(NAME("DELETE")) | 
|---|
| 32 | .W !!,"DONE",!! | 
|---|
| 33 | Q | 
|---|
| 34 | ; | 
|---|
| 35 | SELECT() ; | 
|---|
| 36 | ;asks user to select from file 910 | 
|---|
| 37 | ;returns ptr to file 910, the Master Name Index | 
|---|
| 38 | ; | 
|---|
| 39 | N Y,DINUM,DIC,X,DTIME,DLAYGO | 
|---|
| 40 | S DIC=910,DIC(0)="AEFMQ" | 
|---|
| 41 | S DIC("A")="Select a name: " | 
|---|
| 42 | D ^DIC | 
|---|
| 43 | I (Y=-1)!$D(DTOUT)!$D(DUOUT) Q 0 | 
|---|
| 44 | Q +Y | 
|---|
| 45 | ; | 
|---|
| 46 | REPLACE(OLD,NEW) ; | 
|---|
| 47 | ;replaces all pointers to file 910 = OLD with NEW | 
|---|
| 48 | ; | 
|---|
| 49 | N REF,COUNT,REC,SUBREC | 
|---|
| 50 | S COUNT=1 | 
|---|
| 51 | F  S REF=$P($T(REFS+COUNT),";;",2) Q:(REF="")  D | 
|---|
| 52 | .S COUNT=COUNT+1 | 
|---|
| 53 | .S REF("FILE")=$P(REF,"^"),REF("XREF")=$P(REF,"^",2),REF("SUB")=$P(REF,"^",3),REF("FIELD")=$P(REF,"^",4) | 
|---|
| 54 | .Q:REF("FILE")="" | 
|---|
| 55 | .Q:REF("XREF")="" | 
|---|
| 56 | .Q:REF("FIELD")="" | 
|---|
| 57 | .; | 
|---|
| 58 | .S REC=0 F  S REC=$O(^ESP(REF("FILE"),REF("XREF"),OLD,REC)) Q:'REC  D | 
|---|
| 59 | ..I REF("SUB")="" D | 
|---|
| 60 | ...D EDIT(REF("FILE"),REC,REF("FIELD"),NEW) | 
|---|
| 61 | ..E  S SUBREC=0 F  S SUBREC=$O(^ESP(REF("FILE"),REF("XREF"),OLD,REC,SUBREC)) Q:'SUBREC  D EDIT(REF("FILE"),REC,REF("FIELD"),NEW,REF("SUB"),SUBREC) | 
|---|
| 62 | Q | 
|---|
| 63 | ; | 
|---|
| 64 | DELETE(OLD) ; | 
|---|
| 65 | N DIK,DA | 
|---|
| 66 | S DIK="^ESP(910,",DA=OLD | 
|---|
| 67 | D ^DIK | 
|---|
| 68 | W !,"DELETED",! | 
|---|
| 69 | Q | 
|---|
| 70 | ; | 
|---|
| 71 | RUSURE(OLD,NEW) ; | 
|---|
| 72 | ; | 
|---|
| 73 | N DIR,DA,X,Y | 
|---|
| 74 | S DIR(0)="Y" | 
|---|
| 75 | S DIR("B")="NO" | 
|---|
| 76 | S DIR("A")="Replace "_$P($G(^ESP(910,OLD,0)),"^")_" with "_$P($G(^ESP(910,NEW,0)),"^")_" and then delete" | 
|---|
| 77 | W ! | 
|---|
| 78 | D ^DIR | 
|---|
| 79 | Q Y | 
|---|
| 80 | ; | 
|---|
| 81 | EDIT(FILE,REC,FIELD,VALUE,SUB,SUBREC) ; | 
|---|
| 82 | N DIE,DA,DR | 
|---|
| 83 | S DIE="^ESP("_FILE_"," | 
|---|
| 84 | S DR=FIELD_"////"_VALUE | 
|---|
| 85 | I $G(SUB)="" D | 
|---|
| 86 | .S DA=REC | 
|---|
| 87 | .D ^DIE | 
|---|
| 88 | E  D | 
|---|
| 89 | .Q:'SUBREC | 
|---|
| 90 | .S DIE=DIE_REC_","_SUB_"," | 
|---|
| 91 | .S DA(1)=REC | 
|---|
| 92 | .S DA=SUBREC | 
|---|
| 93 | .D ^DIE | 
|---|
| 94 | Q | 
|---|
| 95 | ; | 
|---|
| 96 | ; | 
|---|
| 97 | REFS ;;<file #>;<xref>;<subscript if in multiple>;<field #> | 
|---|
| 98 | ;;910.2^D^^.03 | 
|---|
| 99 | ;;910.2^I^^4.05 | 
|---|
| 100 | ;;910.2^J^^5.01 | 
|---|
| 101 | ;;910.2^V^^6.01 | 
|---|
| 102 | ;;910.2^BI^^6.02 | 
|---|
| 103 | ;;910.2^W^^6.03 | 
|---|
| 104 | ;;910.2^P^^6.04 | 
|---|
| 105 | ;;910.2^G^^6.05 | 
|---|
| 106 | ;;910.8^C^1^.04 | 
|---|
| 107 | ;;910.8^D^5^.03 | 
|---|
| 108 | ;;912^D^20^.02 | 
|---|
| 109 | ;;912^E^30^.02 | 
|---|
| 110 | ;;912^G^40^.02 | 
|---|
| 111 | ;;912^I^50^.02 | 
|---|
| 112 | ;;912^J^80^.11 | 
|---|
| 113 | ;;913^B^^.01 | 
|---|
| 114 | ;;914^E^^.09 | 
|---|
| 115 | ;; | 
|---|