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

AGRPTPDP.m

Go to the documentation of this file.
  1. AGRPTPDP ;IHS/SD/TPF - POTENTIAL DUPLICATE PATIENT REPORT
  1. ;;7.1;PATIENT REGISTRATION;**1,2,9**;AUG 25, 2005
  1. ;
  1. ;REPORT OF POTENTIAL DUPLICATE PATIENTS BASED ON 5 CRITERIA
  1. ;
  1. EN ;EP
  1. W @IOF
  1. S RPTREQ=$P($G(^VA(200,DUZ,0)),U) ;REPORT REQUESTED BY
  1. X ^%ZOSF("UCI")
  1. S UCI=$P(Y,",")
  1. S ROUTINE=$T(+0)
  1. S:$G(AGLINE("EQ"))="" $P(AGLINE("EQ"),"=",81)=""
  1. S:$G(AGLINE("-"))="" $P(AGLINE("-"),"-",81)=""
  1. W !,"This report is intended to help identify duplicate patient"
  1. W !,"records in the Registration system. The system can check"
  1. W !,"against the following fields:"
  1. W !!
  1. W !,"-Last Name and First initial of Patient"
  1. W !,"-Patient Date of Birth"
  1. W !,"-Social Security Number"
  1. W !,"-Current Community"
  1. W !,"-Mother's Maiden Name"
  1. W !!
  1. W !,"Choose at least two factors that you wish to check against for potential"
  1. W !,"duplicates. The system will also prompt to check over active"
  1. W !,"locations and inactive/deceased patients."
  1. W !
  1. K DIR
  1. S DIR(0)="E"
  1. D ^DIR
  1. ASKCRIT ;EP - ASK FOR CRITERIA
  1. W @IOF
  1. W !!
  1. W !,"Please choose at least two criteria in which you want this report to run:"
  1. S CRITERIA=""
  1. ASKAGAIN ;EP
  1. K DIR,DTOUT,DUOUT,DIROUT,DIRUT
  1. I CRITERIA="" S DIR("A")="Please make a selection"
  1. E S DIR("A")="Please make another selection"
  1. I CRITERIA="" S DIR(0)="SO^1:NAME;2:DOB;3:SSN;4:COM;5:MAIDEN;A:ALL",DIR("B")="All"
  1. E S DIR(0)="SO^1:NAME;2:DOB;3:SSN;4:COM;5:MAIDEN"
  1. S DIR("L",1)="1. Last Name and First initial of Patient"
  1. S DIR("L",2)="2. Date of Birth"
  1. S DIR("L",3)="3. Social Security Number"
  1. S DIR("L",4)="4. Current Community"
  1. S DIR("L",5)="5. Mother's Maiden Name"
  1. S DIR("L",6)=""
  1. S DIR("L")=""
  1. D ^DIR
  1. Q:$D(DTOUT)!($D(DUOUT))!($D(DIROUT))
  1. I Y'="" I CRITERIA'="",(CRITERIA[(Y_":"_Y(0))) W !,"CRITERIA ALREADY SELECTED" G ASKAGAIN
  1. I Y="" I (CRITERIA="")!($L(CRITERIA,U)<2) W !,"NOT ENOUGH CRITERIA SELECTED!" G ASKAGAIN
  1. I Y="",($L(CRITERIA,U)>1) D SELCRIT(CRITERIA) G ASKCRIT
  1. I Y(0)="ALL" S CRITERIA=$P($T(CRITTXT),";;",2) D SELCRIT(CRITERIA) G ASKCRIT
  1. I CRITERIA="" S CRITERIA=Y_":"_Y(0)
  1. E S CRITERIA=CRITERIA_U_Y_":"_Y(0)
  1. G ASKAGAIN
  1. SELCRIT(CRITERIA) ;EP
  1. A1 D SHOWCRIT(CRITERIA)
  1. W !
  1. K DIR
  1. S DIR("A")="Is this correct"
  1. S DIR("B")="Yes"
  1. S DIR(0)="Y"
  1. D ^DIR
  1. Q:'Y
  1. A2 D ASKLOC G:$D(DUOUT) A1 ;ASK IF TO INCLUDE ALL ACTIVE LOCATIONS
  1. A3 D ASKACTDE G:$D(DUOUT) A2 ;ASK IF TO INCLUDE INACTIVE AND DECEASED PATIENTS
  1. A4 D ASKDEV ;ASK FOR DEVICE
  1. G:POP A3
  1. I $G(IO("Q")) D QUE Q
  1. U IO
  1. D MAIN(CRITERIA)
  1. ;IF PRINTING TO A SLAVE PRINTER FREEZES UP, THE CAUSE IS THE 'CLOSE EXECUTE' IN
  1. ;THE 'TERMINAL TYPE' FILE IS NOT FILLED IN FOR THE 'SUBTYPE' OF THE SLAVE
  1. ;DEVICE CHOSEN.
  1. D ^%ZISC
  1. Q
  1. ASKDEV ;EP
  1. S %ZIS="Q"
  1. D ^%ZIS
  1. Q
  1. ASKLOC ;EP
  1. S ALLLOC=0
  1. K DIR
  1. S DIR("A")="Do you wish to include across all active locations"
  1. S DIR("B")="Yes"
  1. S DIR(0)="Y"
  1. D ^DIR
  1. S ALLLOC=+Y
  1. Q
  1. ASKACTDE ;EP
  1. S INCACTDE=0
  1. K DIR
  1. S DIR("A")="Do you wish to include inactive or deceased patients"
  1. S DIR("B")="No"
  1. S DIR(0)="Y"
  1. D ^DIR
  1. S INCACTDE=+Y
  1. Q
  1. MAIN(CRITERIA) ;MAIN
  1. K ^XTMP(ROUTINE)
  1. D NOW^%DTC S Y=% X ^DD("DD")
  1. S RPTDATE=Y
  1. S (LASTINI,DOB,SSN,COM,MAIDEN)=""
  1. S PATIEN=0
  1. F S PATIEN=$O(^AUPNPAT(PATIEN)) Q:+PATIEN=0 D
  1. .S DECEASE=$$CHKDEATH^AGEDERR(PATIEN)
  1. .I 'INCACTDE Q:DECEASE ;INCLUDE DECEASE AND INACTIVE IS NO QUIT
  1. .I CRITERIA[("NAME") D
  1. ..S NAME=$P($G(^DPT(PATIEN,0)),U)
  1. ..S LASTNAME=$P(NAME,",")
  1. ..S FIRSTINI=$E($P(NAME,",",2))
  1. ..S LASTINI=LASTNAME_" "_FIRSTINI
  1. .I CRITERIA[("DOB") D
  1. ..S DOB=$P($G(^DPT(PATIEN,0)),U,3)
  1. .I CRITERIA[("SSN") D
  1. ..S SSN=$P($G(^DPT(PATIEN,0)),U,9)
  1. .I CRITERIA[("COM") D
  1. ..S COM=$P($G(^AUPNPAT(PATIEN,11)),U,18) ;FREE TEXT - NOT A GOOD CRITERIA
  1. .I CRITERIA[("MAIDEN") D
  1. ..S MAIDEN=$P($G(^DPT(PATIEN,.24)),U,3) ;FREE TEXT - NOT A GOOD CRITERIA
  1. .S FUNNYSUB=LASTINI_U_DOB_U_SSN_U_COM_U_MAIDEN
  1. .S ^XTMP(ROUTINE,$J,FUNNYSUB,PATIEN)=""
  1. .S ^XTMP(ROUTINE,$J,FUNNYSUB)=$G(^XTMP(ROUTINE,$J,FUNNYSUB))+1
  1. W !,"DUPLICATE CHECK COMPLETE "
  1. D REPORT(CRITERIA)
  1. Q
  1. REPORT(CRITERIA) ;EP
  1. S PAGE=0
  1. S ESCAPE=0
  1. D HDR(CRITERIA)
  1. S FUNNYSUB=""
  1. F S FUNNYSUB=$O(^XTMP(ROUTINE,$J,FUNNYSUB)) Q:FUNNYSUB="" D Q:ESCAPE
  1. .S PATIEN=""
  1. .F LN1=1:1 S PATIEN=$O(^XTMP(ROUTINE,$J,FUNNYSUB,PATIEN)) Q:PATIEN="" D Q:ESCAPE
  1. ..Q:$G(^XTMP(ROUTINE,$J,FUNNYSUB))<2
  1. ..S PATNAME=$P($G(^DPT(PATIEN,0)),U)
  1. ..S DECEASE=$$CHKDEATH^AGEDERR(PATIEN)
  1. ..S PATDOB=$P($G(^DPT(PATIEN,0)),U,3)
  1. ..I PATDOB'="" S Y=PATDOB X ^DD("DD") S PATDOB=Y
  1. ..E S PATDOB="<none>"
  1. ..S MAIDEN=$P($G(^DPT(PATIEN,.24)),U,3)
  1. ..S CURCOM=$P($G(^AUPNPAT(PATIEN,11)),U,18)
  1. ..S:PATNAME="" PATNAME="<none>"
  1. ..S:MAIDEN="" MAIDEN="<none>"
  1. ..S:CURCOM="" CURCOM="<none>"
  1. ..S:MAIDEN="" MAIDEN="<none>"
  1. ..;I $Y>(IOSL-1),(IOST[("C-")) W ! K DIR S DIR(0)="E" D ^DIR S ESCAPE=$D(DUOUT) Q:ESCAPE D HDR(CRITERIA)
  1. ..I $D(IO("S")),($Y>(IOSL-1)),(IOST[("C-")) W ! K DIR S DIR(0)="E" D ^DIR S ESCAPE=$D(DUOUT) Q:ESCAPE D HDR(CRITERIA) ;IHS/SD/IHS 2/17/2006 IM19904 FIX SUBMITTED BY MICHAEL TAYLOR
  1. ..I $Y>(IOSL-1),(IOST'[("C-")) D HDR(CRITERIA)
  1. ..;W:LN1=1 !!,"COMPARISON STRING=",FUNNYSUB PROGRAMMER ONLY
  1. ..W !,$E(PATNAME,1,25),$S(DECEASE:"#",1:""),?26,PATDOB,?38,$E(MAIDEN,1,15),?54,$E(CURCOM,1,15)
  1. ..S HRNFAC=0
  1. ..F LN2=1:1 S HRNFAC=$O(^AUPNPAT(PATIEN,41,HRNFAC)) Q:+HRNFAC=0 D
  1. ...Q:'$$ACTFAC(HRNFAC)
  1. ...S PSEUDO=$P($G(^AUTTLOC(HRNFAC,1)),U,2)
  1. ...S INACTIVE=$S((U_"I"_U)[(U_$P($G(^AUPNPAT(PATIEN,41,HRNFAC,0)),U,5)_U):"*",1:"")
  1. ...I 'INCACTDE Q:INACTIVE
  1. ...S HRN=$P($G(^AUPNPAT(PATIEN,41,HRNFAC,0)),U,2)
  1. ...W:LN2'=1 !
  1. ...W ?69,PSEUDO,?73,HRN_INACTIVE
  1. ;I IOST[("C-") W ! K DIR S DIR(0)="E" D ^DIR
  1. I $D(IO("S")),(IOST[("C-")) W ! K DIR S DIR(0)="E" D ^DIR ;IHS/SD/IHS 2/17/2006 IM19904 FIX SUBMITTED BY MICHAEL TAYLOR
  1. Q
  1. ACTFAC(FAC) ;EP - IS THE FACILITY ACTIVE?
  1. S INACTDT=$P($G(^AUTTLOC(FAC,0)),U,21)
  1. Q:INACTDT="" 1
  1. I INACTDT>DT Q 1
  1. Q 0
  1. EXIT ;CLEANUP VARS
  1. K EFFDATE,EMPLECNT,COUNT,EMPLEE,EMPLEENM,EMPLEREC,EMPLRBEG,EMPLRCNT,EMPLREND
  1. K EMPLRNM,EMPLRREC,EMPREC
  1. Q
  1. SHOWCRIT(CRITERIA) ;EP - DISPLAY CRITERIA SELECTED
  1. S CRITSTR=""
  1. W !!,"You have selected "
  1. F PIECE=1:1 S SEL=$P(CRITERIA,U,PIECE) Q:SEL="" D
  1. .I PIECE'=1 W " and " S CRITSTR=CRITSTR_" and "
  1. .W "#"_$P($T(CRITTXT+SEL),";;",2)
  1. .S CRITSTR=CRITSTR_"#"_$P($T(CRITTXT+SEL),";;",2)
  1. Q
  1. HDR(CRITERIA) ;EP - MAIN HEADER
  1. S PAGE=PAGE+1
  1. W @IOF
  1. W !,RPTREQ,?69,"page ",PAGE
  1. W !
  1. D CENTER^AGUTILS("INDIAN HEALTH HOSPITAL") ;AG*7.1*9 - Fixed misspelled HEALTH
  1. W !
  1. D CENTER^AGUTILS("POTENTIAL DUPLICATE PATIENT FILES REPORT")
  1. W !
  1. D WRAP^AGUTILS("CHECKING AGAINST "_CRITSTR,20,"WC50")
  1. W !
  1. D CENTER^AGUTILS("UCI: "_UCI)
  1. W !
  1. D CENTER^AGUTILS("('*' = INACTIVE), ('#' = DECEASED)")
  1. W !!
  1. D CENTER^AGUTILS("as of "_RPTDATE)
  1. W !!
  1. W "PATIENT NAME",?26,"BIRTH DATE",?38,"MOTHERS MAIDEN",?54,"CUR. COMMUNITY",?69,"LOC",?73,"HRN"
  1. W !,"============",?26,"==========",?38,"==============",?54,"==============",?69,"===",?73,"======"
  1. Q
  1. QUE ;EP
  1. K IO("Q")
  1. S ZTRTN="MAIN^AGRPTPDP(CRITERIA)",ZTDESC="LISTING OF POTENTIAL DUPLICATE PATIENTS"
  1. S ZTSAVE("CRITERIA")=""
  1. S ZTSAVE("ALLLOC")=""
  1. S ZTSAVE("INCACTDE")=""
  1. S ZTSAVE("ROUTINE")=""
  1. S ZTSAVE("RPTREQ")=""
  1. S ZTSAVE("CRITSTR")=""
  1. S ZTSAVE("UCI")=""
  1. D ^%ZTLOAD W:$D(ZTSK) !,"REQUEST QUEUED AS TASK # "_ZTSK_" !",!
  1. Q
  1. CRITTXT ;;1:NAME^2:DOB^3:SSN^4:COM^5:MAIDEN
  1. ;;1-Last Name and First initial of Patient
  1. ;;2-Patient Date of Birth
  1. ;;3-Social Security Number
  1. ;;4-Current Community
  1. ;;5-Mother's Maiden Name
  1. ;;*END*