| 1 | EASXDRPT ;ALB/AEG - DUP PT RELATION REPORT ;7-12-02
 | 
|---|
| 2 |  ;;1.0;ENROLLMENT APPLICATION SYSTEM;**10**;Mar 15,2001
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | RPT ; Option Entry Point.
 | 
|---|
| 5 |  D TEXT^EASXDRUT
 | 
|---|
| 6 |  W !
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | EN1 ; Device Handler.
 | 
|---|
| 9 |  N %ZIS
 | 
|---|
| 10 |  S %ZIS="QM" D ^%ZIS
 | 
|---|
| 11 |  I POP W !!,?5,"REPORT CANCELLED!",$C(7),! G STOPIT
 | 
|---|
| 12 |  I $D(IO("Q")) D QUEIT G STOPIT
 | 
|---|
| 13 |  I '$D(IO("Q")) D  Q
 | 
|---|
| 14 |  .I $E(IOST,1,2)="C-" D WAIT^DICD,START Q
 | 
|---|
| 15 |  .E  D START Q
 | 
|---|
| 16 |  Q
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 | START ;
 | 
|---|
| 19 |  D SETUP^EASXDRUT
 | 
|---|
| 20 |  D INIT,FIND,PURGE
 | 
|---|
| 21 |  D PRINT^EASXRPT1
 | 
|---|
| 22 |  D QUIT
 | 
|---|
| 23 |  Q
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | INIT ; Setup scratch globals and initialize processing.
 | 
|---|
| 26 |  N EASA,EASB,EASC,EASAA,EASAB,EASAC,QUO
 | 
|---|
| 27 |  S QUO=""""
 | 
|---|
| 28 |  F EASA=1,2 D
 | 
|---|
| 29 |  .F EASB=1,2 D
 | 
|---|
| 30 |  ..F EASC=1,2 D
 | 
|---|
| 31 |  ...S EASAA=$S(EASA=1:"EASXDRPT",1:"DECEASED")
 | 
|---|
| 32 |  ...S EASAB=$S(EASB=1:"CATC",1:"CATOTHER")
 | 
|---|
| 33 |  ...S EASAC=$S(EASC=1:"NOCMOR",1:"CMORE")
 | 
|---|
| 34 |  ...S ROOT(EASA,EASB,EASC)="^TMP("_QUO_EASAA_QUO_","_QUO_EASAB_QUO_","_QUO_EASAC_QUO_","_$J_")"
 | 
|---|
| 35 |  ...Q
 | 
|---|
| 36 |  ..Q
 | 
|---|
| 37 |  .Q
 | 
|---|
| 38 |  Q
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | FIND ; Search for potential dups in file #408.12
 | 
|---|
| 41 |  N EASDOD,EASMTS,EASSRC,SRC,REC12,EASPER,EASREL,EASACT,EASCNT
 | 
|---|
| 42 |  N NODE
 | 
|---|
| 43 |  S DFN=0
 | 
|---|
| 44 |  F  S DFN=$O(^DGPR(408.12,"B",DFN)) Q:DFN'>0  D
 | 
|---|
| 45 |  .S EASDOD=$S($$GET1^DIQ(2,DFN_",",.351,"I")]"":2,1:1)
 | 
|---|
| 46 |  .S EASMTS=$S($P($$LST^DGMTU(DFN),U,4)="C":1,1:2)
 | 
|---|
| 47 |  .; The following call is supported via DBIA #2701
 | 
|---|
| 48 |  .S SRC=$$IFVCCI^MPIF001(DFN)
 | 
|---|
| 49 |  .S EASSRC=$S(SRC=1:2,1:1)
 | 
|---|
| 50 |  .S REC12=0
 | 
|---|
| 51 |  .F  S REC12=$O(^DGPR(408.12,"B",DFN,REC12)) Q:REC12'>0  D
 | 
|---|
| 52 |  ..S NODE=$G(^DGPR(408.12,REC12,0))
 | 
|---|
| 53 |  ..S EASPER=$$GET1^DIQ(408.12,REC12_",",.03,"E")
 | 
|---|
| 54 |  ..S:EASPER']"" EASPER="NO PERSON ENTRY"
 | 
|---|
| 55 |  ..S EASREL=$$GET1^DIQ(408.12,REC12_",",.02,"E")
 | 
|---|
| 56 |  ..S:EASREL']"" EASREL="NO RELATION ENTRY"
 | 
|---|
| 57 |  ..S EASCNT=1
 | 
|---|
| 58 |  ..I $D(DUPS(DFN,EASREL,EASPER)) D
 | 
|---|
| 59 |  ...S EASCNT=$O(DUPS(DFN,EASREL,EASPER,""),-1)+1
 | 
|---|
| 60 |  ..S DUPS(DFN,EASREL,EASPER,EASCNT)=REC12
 | 
|---|
| 61 |  ..I EASREL="NO RELATION ENTRY" D  Q
 | 
|---|
| 62 |  ...S @ROOT(EASDOD,EASMTS,EASSRC)@("NO RELATION",DFN,EASCNT)=REC12_U_EASPER
 | 
|---|
| 63 |  ..I EASPER="NO PERSON ENTRY" D  Q
 | 
|---|
| 64 |  ...S @ROOT(EASDOD,EASMTS,EASSRC)@("NO PERSON",DFN,EASCNT)=REC12_U_EASREL
 | 
|---|
| 65 |  ..S EASACT=$$ACTIVE(REC12)
 | 
|---|
| 66 |  ..S @ROOT(EASDOD,EASMTS,EASSRC)@(DFN,EASREL,EASCNT)=REC12_U_EASPER_U_EASACT
 | 
|---|
| 67 |  .K DUPS(DFN)
 | 
|---|
| 68 |  Q
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 | ACTIVE(REC12) ; Is relation entry active ?
 | 
|---|
| 71 |  N RETV,EASSUB,EASTIEN,ACTF
 | 
|---|
| 72 |  S (RETV,ACTF)="",EASSUB=0
 | 
|---|
| 73 |  F  S EASSUB=$O(^DGPR(408.12,REC12,"E",EASSUB)) Q:EASSUB'>0  D  Q:$L(RETV,"~")>1
 | 
|---|
| 74 |  .S ACTF=$$GET1^DIQ(408.1275,EASSUB_","_REC12_",",".02")
 | 
|---|
| 75 |  .Q:ACTF']"" RETV
 | 
|---|
| 76 |  .S EASTIEN=$$GET1^DIQ(408.1275,EASSUB_","_REC12_",",.04,"I")
 | 
|---|
| 77 |  .S EASTIEN=$S(EASTIEN>0:$$GET1^DIQ(408.31,EASTIEN_",",.019,"I"),1:"")
 | 
|---|
| 78 |  .S EASTIEN=$S(EASTIEN>0:$$GET1^DIQ(408.33,EASTIEN_",",.01,"E"),1:"")
 | 
|---|
| 79 |  .S RETV=ACTF_"~"_EASTIEN_"~"_EASSUB
 | 
|---|
| 80 |  Q RETV
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 | PURGE ; Purge non-duplicate from temp globals.
 | 
|---|
| 83 |  N AA,AB,AC
 | 
|---|
| 84 |  F AA=1,2 F AB=1,2 F AC=1,2 D MORE
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 | MORE ; Purge of non-dups continued.
 | 
|---|
| 88 |  N DFN,REL,LSTNUM,CNT,NODE2,CNT2
 | 
|---|
| 89 |  S (LNAME,DFN)=0
 | 
|---|
| 90 |  F  S DFN=$O(@ROOT(AA,AB,AC)@(DFN)) Q:DFN'>0  D
 | 
|---|
| 91 |  .S REL=""
 | 
|---|
| 92 |  .F  S REL=$O(@ROOT(AA,AB,AC)@(DFN,REL)) Q:REL']""  D
 | 
|---|
| 93 |  ..S LSTNUM=$O(@ROOT(AA,AB,AC)@(DFN,REL,""),-1)
 | 
|---|
| 94 |  ..I $D(@ROOT(AA,AB,AC)@(DFN,REL,LSTNUM,"E")) D  Q
 | 
|---|
| 95 |  ...S LNAME=$S($L(REL)>LNAME:$L(REL),1:LNAME)
 | 
|---|
| 96 |  ..D NAME
 | 
|---|
| 97 |  ..I $O(@ROOT(AA,AB,AC)@(DFN,REL,""))=LSTNUM D  Q
 | 
|---|
| 98 |  ...K @ROOT(AA,AB,AC)@(DFN,REL,LSTNUM)
 | 
|---|
| 99 |  ..S CNT=""
 | 
|---|
| 100 |  ..F  S CNT=$O(@ROOT(AA,AB,AC)@(DFN,REL,CNT)) Q:CNT'>0  D
 | 
|---|
| 101 |  ...S NODE2=@ROOT(AA,AB,AC)@(DFN,REL,CNT)
 | 
|---|
| 102 |  ...I $P(NODE2,U,4)']"" D
 | 
|---|
| 103 |  ....K @ROOT(AA,AB,AC)@(DFN,REL,CNT)
 | 
|---|
| 104 |  ...I $P(NODE2,U,4)]"" D
 | 
|---|
| 105 |  ....S LNAME=$S($L(REL)>LNAME:$L(REL),1:LNAME)
 | 
|---|
| 106 |  ...Q
 | 
|---|
| 107 |  ..Q
 | 
|---|
| 108 |  .Q
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 | NAME ; Check names
 | 
|---|
| 112 |  N CNT,CHKNAME,CNT2
 | 
|---|
| 113 |  S CNT=""
 | 
|---|
| 114 |  F  S CNT=$O(@ROOT(AA,AB,AC)@(DFN,REL,CNT)) Q:CNT'>0  D
 | 
|---|
| 115 |  .S CHKNAME=$P($G(@ROOT(AA,AB,AC)@(DFN,REL,CNT)),U,2)
 | 
|---|
| 116 |  .I CHKNAME["MERGING" D
 | 
|---|
| 117 |  ..S $P(@ROOT(AA,AB,AC)@(DFN,REL,CNT),U,4)="SHOULD BE MERGED"
 | 
|---|
| 118 |  .I $P($G(@ROOT(AA,AB,AC)@(DFN,REL,CNT)),U,4)]"" Q
 | 
|---|
| 119 |  .S CNT2=CNT
 | 
|---|
| 120 |  .F  S CNT2=$O(@ROOT(AA,AB,AC)@(DFN,REL,CNT2)) Q:CNT2'>0  D
 | 
|---|
| 121 |  ..I CHKNAME'=$P($G(@ROOT(AA,AB,AC)@(DFN,REL,CNT2)),U,2) Q
 | 
|---|
| 122 |  ..S $P(@ROOT(AA,AB,AC)@(DFN,REL,CNT2),U,4)="SHOULD BE MERGED"
 | 
|---|
| 123 |  ..S $P(@ROOT(AA,AB,AC)@(DFN,REL,CNT),U,4)="SHOULD BE MERGED"
 | 
|---|
| 124 |  Q
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 | QUIT ; Cleanup and quit.
 | 
|---|
| 127 |  N A,B,C
 | 
|---|
| 128 |  F A=1,2 D
 | 
|---|
| 129 |  .F B=1,2 D
 | 
|---|
| 130 |  ..F C=1,2 K @ROOT(A,B,C)
 | 
|---|
| 131 |  K DUPS,LNAME,POP,ROOT,ZTSK
 | 
|---|
| 132 |  K COL1,COL2,COL3,COL4,COL5,COL6,COL7,DAL,EQL,FSTP
 | 
|---|
| 133 |  Q
 | 
|---|
| 134 | STOPIT ;
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 | QUEIT ; Que task
 | 
|---|
| 137 |  N ZTDESC,ZTRTN,ZTSAVE
 | 
|---|
| 138 |  S ZTDESC="EAS DUPLICATE PT REL REPORT",ZTRTN="START^EASXDRPT"
 | 
|---|
| 139 |  S ZTSAVE("*")=""
 | 
|---|
| 140 |  W !
 | 
|---|
| 141 |  D ^%ZTLOAD
 | 
|---|
| 142 |  I $G(ZTSK)>0 W !!,">>> Task Number #"_$G(ZTSK)_" queued. <<<",! H .5
 | 
|---|
| 143 |  D HOME^%ZIS
 | 
|---|
| 144 |  Q
 | 
|---|