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

AUPNLKD.m

Go to the documentation of this file.
  1. AUPNLKD ; IHS/CMI/LAB - IHS PATIENT LOOKUP, QUICK DUPE CHECK ;
  1. ;;99.1;IHS DICTIONARIES (PATIENT);;MAR 09, 1999
  1. ;SEA/AMF-ALB/RMO - CHECK FOR DUPLICATES ON NEW PATIENT ENTRY JUNE 1987
  1. ;
  1. ; Upon exiting this routine AUPD will be the number of potential
  1. ; duplicates found, and the array AUPD(n) will contain those
  1. ; potential duplicate where 'n' is the patient's DFN.
  1. ;
  1. START ;
  1. D INIT ; Initialization
  1. D:$E(DOB,6,7)'="00" DOB ; Check patients with similar DOBs
  1. D:SSN'="" SSN ; Check patients with similar SSNs
  1. D EOJ
  1. Q
  1. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1. ;
  1. DOB ; CHECK SAME DOB + TRANSPOSED DAY
  1. F AUPIN=0:0 S AUPIN=$O(^DPT("ADOB",DOB,AUPIN)) Q:AUPIN="" D DOB1
  1. S AUPDOB=DOB,DOB=$E(DOB,1,5)_$E(DOB,7)_$E(DOB,6)
  1. F AUPIN=0:0 S AUPIN=$O(^DPT("ADOB",DOB,AUPIN)) Q:AUPIN="" D DOB1
  1. S DOB=AUPDOB
  1. Q
  1. ;
  1. DOB1 ;
  1. W "."
  1. Q:$D(^VA(15,"AFR","DPT(",AUPIN)) ; Quit if verified duplicate
  1. S AUPV=^DPT(AUPIN,0),AUPV1=$P(AUPV,U,1)
  1. Q:$P(AUPV,U,18)="I"
  1. Q:$P(AUPV,U,2)'=SEX
  1. I AUPV1?.E1P.E S AUPT=AUPV1 D PUNC S AUPV1=AUPT
  1. S AUPV1L=$P(AUPV1,",",1),AUPV1F=$P($P(AUPV1,",",2)," ",1),AUPV1M=$P($P(AUPV1,",",2)," ",2)
  1. I ($E(AUPNL,1,2)_$E(AUPNF,1,2))=($E(AUPV1L,1,2)_$E(AUPV1F,1,2)) D HIT Q
  1. I AUPNF=AUPV1F D HIT Q
  1. I AUPNL=AUPV1L,AUPNM=AUPV1F D HIT Q
  1. I AUPNL=AUPV1L,AUPV1M=AUPNF D HIT Q
  1. I $D(^DPT(AUPIN,.01)) D ALIAS
  1. Q:SSN=""
  1. S AUPV1=$P(AUPV,U,9)
  1. Q:AUPV1=""
  1. S AUPF=0 F K=1:1:9 Q:(AUPF>2) I $E(AUPV1,K)'=$E(SSN,K) S AUPF=AUPF+1
  1. I AUPF<3 D HIT Q
  1. Q
  1. ;
  1. ALIAS ;
  1. F AUPAN=0:0 S AUPAF=1,AUPAN=$O(^DPT(AUPIN,.01,AUPAN)) Q:AUPAN'=+AUPAN I $D(^(AUPAN,0)) D ALIAS2 I AUPAF D HIT Q
  1. K AUPAN,AUPAF
  1. Q
  1. ;
  1. ALIAS2 ;
  1. S AUPV1=$P(^(0),U,1)
  1. S AUPV1L=$P(AUPV1,",",1),AUPV1F=$P($P(AUPV1,",",2)," ",1),AUPV1M=$P($P(AUPV1,",",2)," ",2)
  1. I AUPV1L=AUPNL Q
  1. I AUPV1F=AUPNF Q
  1. I AUPV1M=AUPNF Q
  1. I AUPNF=AUPV1M Q
  1. S AUPAF=0
  1. Q
  1. ;
  1. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1. ;
  1. SSN ; CHECK SSNS WITH SAME FIRST FIVE DIGITS
  1. S AUPSSN=$E(SSN,1,5)_"0000" F AUPSSN=0:0 S AUPSSN=$O(^DPT("SSN",AUPSSN)) Q:AUPSSN=""!($E(AUPSSN,1,5)'=$E(SSN,1,5)) F AUPIN=0:0 S AUPIN=$O(^DPT("SSN",AUPSSN,AUPIN)) Q:AUPIN="" D SSN1
  1. Q
  1. ;
  1. SSN1 ;
  1. W "."
  1. Q:$D(AUPD(AUPIN)) ; Quit if already found
  1. Q:$D(^VA(15,"AFR","DPT(",AUPIN)) ; Quit if verified duplicate
  1. S AUPV1=^DPT(AUPIN,0)
  1. Q:$P(AUPV1,U,2)'=SEX
  1. I $P(AUPV1,",",1)=$P(AUPN,",",1)!($E(AUPV1,1,2)_$E($P(AUPV1,",",2),1,2)=($E(AUPN,1,2)_$E($P(AUPN,",",2),1,2))) S AUPD(AUPIN)="",AUPD=AUPD+1 Q
  1. S AUPV=$E(SSN,6,9),AUPV1=$E(AUPSSN,6,9)
  1. S AUPF=0 F K=1:1:4 Q:(AUPF>2) I $E(AUPV,K)'=$E(AUPV1,K) S AUPF=AUPF+1
  1. I AUPF<3 D HIT Q
  1. Q
  1. ;
  1. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1. ;
  1. HIT ; POTENTIAL DUPLICATE FOUND
  1. Q:$D(AUPD(AUPIN))
  1. S AUPD(AUPIN)=""
  1. S AUPD=AUPD+1
  1. Q
  1. ;
  1. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1. ;
  1. INIT ; INITIALIZATION
  1. K AUPD
  1. S AUPD=0,AUPN=AUPNM
  1. I $P(AUPN,",",1)?.E1P.E S AUPT=$P(AUPN,",",1) D PUNC S AUPN=AUPT_","_$P(AUPN,",",2,99)
  1. S AUPNL=$P(AUPN,",",1),AUPNF=$P($P(AUPN,",",2)," ",1),AUPNM=$P($P(AUPN,",",2)," ",2)
  1. Q
  1. ;
  1. PUNC ;
  1. F I=1:1:$L(AUPT) I $E(AUPT,I)?1P,$E(AUPT,I)'=",",$E(AUPT,I)'=" " S AUPT=$E(AUPT,1,I-1)_$E(AUPT,I+1,99)
  1. Q
  1. ;
  1. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1. ;
  1. EOJ ;
  1. K AUPAF,AUPAN,AUPDOB,AUPF,AUPIN,AUPN,AUPNF,AUPNL,AUPNM,AUPSSN,AUPT,AUPV,AUPV1,AUPV1F,AUPV1L,AUPV1M
  1. Q