| 1 | EASXDR ;ALB/BRM - ROUTINE TO MERGE ENTRIES DURING PATIENT MERGE; ; 5/10/02 9:27am
 | 
|---|
| 2 |  ;;1.0;ENROLLMENT APPLICATION SYSTEM;**10**;Mar 15, 2001
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN(ARRAY) ;Entry point called with the name of the array containing the
 | 
|---|
| 5 |  ; from and to pointers of the record being merged.  The array is
 | 
|---|
| 6 |  ; formatted as follows:
 | 
|---|
| 7 |  ;    ARRAY(FROM_IEN,TO_IEN,"FROM_IEN;DPT(","TO_IEN;DPT(")=""
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  ; The code in this routine will prevent duplicate dependent entries
 | 
|---|
| 10 |  ; from being created when the from and to records are the same
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  N EASARY,IEN,DFNFR,DFNTO,IENFR,IENTO,OKTOMRG
 | 
|---|
| 13 |  F DFNFR=0:0 S DFNFR=$O(@ARRAY@(DFNFR))  Q:$G(DFNFR)'>0  D
 | 
|---|
| 14 |  .S DFNTO=$O(@ARRAY@(DFNFR,0))
 | 
|---|
| 15 |  .S IENFR=$O(@ARRAY@(DFNFR,DFNTO,0))
 | 
|---|
| 16 |  .S IENTO=$O(@ARRAY@(DFNFR,DFNTO,IENFR,0))
 | 
|---|
| 17 |  .;attempt to merge relation entries
 | 
|---|
| 18 |  .S OKTOMRG=$$CHKRELAT^EASXDR1(DFNFR,DFNTO,1)
 | 
|---|
| 19 |  Q
 | 
|---|
| 20 | OPTION ; entry point from 'Fix Duplicate Patient Relations' menu option
 | 
|---|
| 21 |  N DTOUT,DUOUT,DIRUT,DIROUT,DA,DIR,DIC,X,Y,DFN,DGMSGF,SSN,VETNAM
 | 
|---|
| 22 |  S DGMSGF=1
 | 
|---|
| 23 |  S DIR(0)="408.12,.03"
 | 
|---|
| 24 |  S DIR("A")="Select Patient SSN"
 | 
|---|
| 25 |  S DIR("?")="Select the SSN of the patient whose Patient Relation entries should be merged."
 | 
|---|
| 26 |  D ^DIR Q:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT))
 | 
|---|
| 27 |  W !
 | 
|---|
| 28 |  I '+Y W !?2,Y(0)," Cannot be merged.  Please select a new entry."
 | 
|---|
| 29 |  I $P(Y,";",2)["DGPR(408.13," D  G:'$D(DFN) OPTION
 | 
|---|
| 30 |  .I '$D(^DGPR(408.12,"C",Y)) W !?2,Y(0)," Cannot be merged.  Please select a new entry." Q
 | 
|---|
| 31 |  .S IEN12=$O(^DGPR(408.12,"C",Y,""))
 | 
|---|
| 32 |  .S DFN=$P($G(^DGPR(408.12,IEN12,0)),"^")
 | 
|---|
| 33 |  .S VETNAM=$P($G(^DPT(DFN,0)),"^")
 | 
|---|
| 34 |  .S SSN=$P($G(^DPT(DFN,0)),"^",9)
 | 
|---|
| 35 |  .W !?2,Y(0)," is not in the Patient (#2) file."
 | 
|---|
| 36 |  .W !!?2,"The following patient must be used to merge this entry:"
 | 
|---|
| 37 |  .W !?2,"SSN:",SSN,?20,"Patient Name:",VETNAM,!!
 | 
|---|
| 38 |  .K DIR,Y
 | 
|---|
| 39 |  .S DIR(0)="Y",DIR("B")="YES"
 | 
|---|
| 40 |  .S DIR("A")="Would you like to continue this merge using "_VETNAM
 | 
|---|
| 41 |  .S DIR("?",1)="Answer 'YES' if you would like to continue the merge process"
 | 
|---|
| 42 |  .S DIR("?",2)="using the displayed patient.  This will merge all duplicate"
 | 
|---|
| 43 |  .S DIR("?")="Patient Relations associated with the selected patient."
 | 
|---|
| 44 |  .D ^DIR Q:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT))
 | 
|---|
| 45 |  .I 'Y K DFN Q
 | 
|---|
| 46 |  .S Y=DFN
 | 
|---|
| 47 |  S DFN=+Y
 | 
|---|
| 48 |  S MSG=$$CHKRELAT^EASXDR1(DFN,DFN,0)
 | 
|---|
| 49 |  I 'MSG W !?2,"No Patient Relation entries were merged for this patient.",!! G OPTION
 | 
|---|
| 50 |  W !?2,+MSG_" Patient Relation "_$S(+MSG=1:"entry was",1:"entries were")_" successfully merged."
 | 
|---|
| 51 |  W !!?2,"Data deleted during this merge will be stored for 10 days"
 | 
|---|
| 52 |  W !?2,"in the following global: ^XTMP(""EASXDR1"",""DATA"","_DFN_")",!!
 | 
|---|
| 53 |  G OPTION
 | 
|---|
| 54 |  Q
 | 
|---|
| 55 | CHGACT(MRGFRIEN,MRGTOIEN,EFFDT) ;
 | 
|---|
| 56 |  N DIE,DIR,DIRUT,DTOUT,DUOUT,DIROUT,DIC,DA,DR,DIQ,X,Y,SSNFR,SSNTO
 | 
|---|
| 57 |  N ACTIVE
 | 
|---|
| 58 |  ; display data about each record
 | 
|---|
| 59 |  D FINDSSN(MRGFRIEN,.SSNFR),FINDSSN(MRGTOIEN,.SSNTO)
 | 
|---|
| 60 |  W:SSNFR'="" !!,"SSN:"_SSNFR
 | 
|---|
| 61 |  S DIC="^DGPR(408.12,",DA=MRGFRIEN,DIQ(0)="R" D EN^DIQ
 | 
|---|
| 62 |  W:SSNTO'="" !,"SSN:"_SSNTO
 | 
|---|
| 63 |  S DIC="^DGPR(408.12,",DA=MRGTOIEN,DIQ(0)="R" D EN^DIQ
 | 
|---|
| 64 |  ; ask user to enter the correct active flag for this date
 | 
|---|
| 65 |  S DIR(0)="Y"
 | 
|---|
| 66 |  S DIR("A")="Should the active flag be 'YES' or 'NO' for "_$$FMTE^XLFDT($G(EFFDT))
 | 
|---|
| 67 |  D ^DIR I $D(DIRUT)!$D(DTOUT)!$D(DUOUT)!$D(DIROUT) Q
 | 
|---|
| 68 |  S ACTIVE=Y
 | 
|---|
| 69 |  N IEN12,SUBIEN,ACTROOT,FDA,DIERR
 | 
|---|
| 70 |  F IEN12=MRGFRIEN,MRGTOIEN D
 | 
|---|
| 71 |  .S ACTROOT="^DGPR(408.12,"_IEN12_",""E"")"
 | 
|---|
| 72 |  .S SUBIEN=""
 | 
|---|
| 73 |  .Q:'$D(@ACTROOT@("B",EFFDT))
 | 
|---|
| 74 |  .F  S SUBIEN=$O(@ACTROOT@("B",EFFDT,SUBIEN)) Q:'SUBIEN  D
 | 
|---|
| 75 |  ..I $P($G(@ACTROOT@(SUBIEN,0)),"^",2)=ACTIVE Q
 | 
|---|
| 76 |  ..S FDA(408.1275,SUBIEN_","_IEN12_",",.02)=ACTIVE
 | 
|---|
| 77 |  ..D FILE^DIE("K","FDA","DIERR")
 | 
|---|
| 78 |  ; update arrays
 | 
|---|
| 79 |  K ^TMP($J,"EASXDR"),ERROR
 | 
|---|
| 80 |  M ^TMP($J,"EASXDR","MRGTO",MRGTOIEN)=^DGPR(408.12,MRGTOIEN)
 | 
|---|
| 81 |  M ^TMP($J,"EASXDR","MRGFR",MRGFRIEN)=^DGPR(408.12,MRGFRIEN)
 | 
|---|
| 82 |  ;D LOOP^EASXDR1
 | 
|---|
| 83 |  Q
 | 
|---|
| 84 | FINDSSN(IEN40812,SSN) ;find SSN associated with Patient Relation entry
 | 
|---|
| 85 |  N ROOT,NODE12,POINT
 | 
|---|
| 86 |  S SSN="UNKNOWN"
 | 
|---|
| 87 |  S NODE12=$G(^DGPR(408.12,IEN40812,0))
 | 
|---|
| 88 |  S POINT=$P(NODE12,"^",3)
 | 
|---|
| 89 |  S ROOT="^"_$P(POINT,";",2)_$P(POINT,";")_")"
 | 
|---|
| 90 |  I '$D(@ROOT@(0)) Q
 | 
|---|
| 91 |  S SSN=$P($G(@ROOT@(0)),"^",9)
 | 
|---|
| 92 |  Q
 | 
|---|
| 93 | DELETE ; entry point from 'Delete Duplicate MT/Copay Dependents' menu option
 | 
|---|
| 94 |  N MSG,DTOUT,DUOUT,DIRUT,DIROUT,DA,DIR,DIC,X,Y,DFN,DGMSGF,SSN,VETNAM
 | 
|---|
| 95 |  S DGMSGF=1
 | 
|---|
| 96 |  S DIR(0)="408.12,.03"
 | 
|---|
| 97 |  S DIR("A")="Select MT/Copay Dependent to be deleted"
 | 
|---|
| 98 |  S DIR("?")="Select the SSN of the patient whose Patient Relation entries should be deleted."
 | 
|---|
| 99 |  D ^DIR Q:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT))
 | 
|---|
| 100 |  S IEN12=$O(^DGPR(408.12,"C",Y,""))
 | 
|---|
| 101 |  I 'IEN12 W !!?2,Y(0)," Cannot be deleted.  Please select a new entry.",! G DELETE
 | 
|---|
| 102 |  S DIC="^DGPR(408.12,",DA=IEN12,DIQ(0)="R" D EN^DIQ
 | 
|---|
| 103 |  K DIR,Y,DTOUT,DIROUT,DIRUT,DUOUT
 | 
|---|
| 104 |  S DIR(0)="Y",DIR("B")="NO"
 | 
|---|
| 105 |  S DIR("A")="Would you like to PERMANENTLY DELETE this record"
 | 
|---|
| 106 |  S DIR("?",1)="Answer 'YES' if you would like to continue the deletion process"
 | 
|---|
| 107 |  S DIR("?",2)="using the displayed patient.  This process will permanently delete the"
 | 
|---|
| 108 |  S DIR("?")="408.13, 408.21, and 408.22 file entries associated with the selected patient."
 | 
|---|
| 109 |  D ^DIR
 | 
|---|
| 110 |  G:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))!($D(DIROUT))!('Y) DELETE
 | 
|---|
| 111 |  S MSG=$$REMOVE^EASXDR1(IEN12,"")
 | 
|---|
| 112 |  I 'MSG W !?2,"No Patient Relation entries were deleted for this patient.",!! G DELETE
 | 
|---|
| 113 |  W !?2,+MSG_" Patient Relation "_$S(+MSG=1:"entry was",1:"entries were")_" successfully deleted."
 | 
|---|
| 114 |  W !!?2,"Data deleted during this process will be stored for 10 days"
 | 
|---|
| 115 |  W !?2,"in the following global: ^XTMP(""EASXDR1"",""DATA"",""DELETE"",408.12,"_IEN12_")",!!
 | 
|---|
| 116 |  G DELETE
 | 
|---|
| 117 |  Q
 | 
|---|