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

RGPRSSN.m

Go to the documentation of this file.
  1. RGPRSSN ;WAS/FHM-MPI/PD PSEUDO/MISSING SSN REPORT ;6/25/98
  1. ;;1.0;CLINICAL INFO RESOURCE NETWORK;**19,34**;30 Apr 99
  1. ;
  1. ;Reference to ^DIC(8 supported by IA #427
  1. ;Reference to ^DGPM( supported by IA #966
  1. ;Reference to ^SCE( supported by IA #2443
  1. ;Reference to ADM^VADPT2 supported by IA #325
  1. ;
  1. ;EXTRACT BAD SSN AND SORTS THEM BY CLASSIFICATION
  1. W !,"This report will provide a list of:"
  1. W !,"(1) any B Cross-references (there is no 'zero' node but a B x-ref)"
  1. W !," on the patient file,"
  1. W !,"(2) patients with Pseudo SSNs who have not had activity within the past 3 years,"
  1. W !,"(3) patients with Pseudo SSNs who have had activity within the past 3 years.",!
  1. W !,"The Reports are sorted by Primary Eligibility Code. The report can"
  1. W !,"be queued if desired."
  1. W !,!,"For MPI/PD purposes, general advice is to concentrate first on"
  1. W !,"getting correct SSNs for the patients who HAVE had activity within"
  1. W !,"the past 3 years.",!
  1. S %ZIS="QM" D ^%ZIS G EXIT:POP
  1. K ^TMP($J)
  1. I $D(IO("Q")) D Q
  1. .S ZTRTN="DQ^RGPRSSN",ZTDESC="MPI/PD SSN VALIDATION"
  1. .D ^%ZTLOAD D HOME^%ZIS K IO("Q")
  1. DQ N DTOUT,DUOUT S RGFS=1,PRNTCODE="",RGPRNTCO=""
  1. U IO W @IOF,!,"MPI/PD Report of Pseudo, missing & potentially false SSNs "
  1. D NOW^%DTC D YX^%DTC
  1. W ?55,Y,!
  1. W !,"Bad B Cross References Report"
  1. W !,"Please contact IRM for assistance with bad B Cross references."
  1. W !,"----------------------------------------------------------------------------"
  1. S BREF=0
  1. S NAME=""
  1. F S NAME=$O(^DPT("B",NAME)) Q:NAME="" D
  1. .S REFNO=0
  1. .S REFNO=$O(^DPT("B",NAME,REFNO)) Q:REFNO=""
  1. .IF $D(^DPT(REFNO,0)) S NODE=^DPT(REFNO,0),RGSSN=$P(NODE,"^",9)
  1. .E S BREF=1 W !,"B Cross Reference with no 0 Node in DPT: DFN= ",REFNO Q
  1. .IF RGSSN="" S RGSSN="None"
  1. .IF RGSSN'?9N S SCRATCH=$$SETGBL
  1. .IF RGSSN="123456789" S SCRATCH=$$SETGBL
  1. .IF RGSSN="000000000" S SCRATCH=$$SETGBL
  1. .IF RGSSN="111111111" S SCRATCH=$$SETGBL
  1. .IF RGSSN="222222222" S SCRATCH=$$SETGBL
  1. .IF RGSSN="333333333" S SCRATCH=$$SETGBL
  1. .IF RGSSN="444444444" S SCRATCH=$$SETGBL
  1. .IF RGSSN="555555555" S SCRATCH=$$SETGBL
  1. .IF RGSSN="666666666" S SCRATCH=$$SETGBL
  1. .IF RGSSN="777777777" S SCRATCH=$$SETGBL
  1. .IF RGSSN="888888888" S SCRATCH=$$SETGBL
  1. .IF RGSSN?1"9"8N S SCRATCH=$$SETGBL
  1. .QUIT
  1. IF BREF=0 W !,"*** No Bad B Cross References Found in your account.***"
  1. LST S (ACTIV1,ECODE1,NAME1,REFNO1)=""
  1. LST1 S ACTIV1=$O(^TMP($J,ACTIV1)) G EXIT:ACTIV1="" D HEADER G EXIT:$D(DUOUT)!($D(DTOUT))
  1. LST2 S ECODE1=$O(^TMP($J,ACTIV1,ECODE1)) G LST1:ECODE1="" D:$Y>(IOSL-4) HEADER,HEAD2 G:$D(DUOUT)!($D(DTOUT)) EXIT W ! S SCRATCH=$$GETECODE
  1. LST3 S NAME1=$O(^TMP($J,ACTIV1,ECODE1,NAME1)) G LST2:NAME1="" D:$Y>(IOSL-4) HEADER,HEAD2 G:$D(DUOUT)!($D(DTOUT)) EXIT
  1. S REFNO1=^TMP($J,ACTIV1,ECODE1,NAME1)
  1. S (PHONE,RGSSN,ECODE)="None"
  1. ;Using VADPT for PHONE# , SSN ,eligibility code, and Name
  1. K VAPTYP,VAHOW,VAROOT,VADM,VAEL,VAPA,VATEST S DFN=REFNO1 D ADD^VADPT,DEM^VADPT,ELIG^VADPT S NAME=VADM(1),RGSSN=$P(VADM(2),U),PHONE=VAPA(8),ECODE=$P(VAEL(1),U)
  1. K VAPTYP,VAHOW,VAROOT,VADM,VAEL,VAPA,VATEST
  1. S ACTIVITY=$$ACTIVE(REFNO1)
  1. W !,?10,ECODE,?20,NAME1,?54,RGSSN,?65,PHONE
  1. GOTO LST3
  1. EXIT D ^%ZISC
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. K ^TMP($J)
  1. K ACTIV1,ACTIVITY,BREF,ECODE,ECODE1,NAME,NAME1,NODE,NODE2,NODE3
  1. K NODE4,PHONE,PRNTCODE,REFNO,REFNO1,RGFS,RGPRNTCO,SCRATCH,RGSSN,ZTREQ,%ZIS,NODE1,POP,ZTDESC,ZTRTN
  1. QUIT
  1. SETGBL() ;SETS GLOBAL
  1. S ECODE=""
  1. K VAEL S DFN=REFNO D ELIG^VADPT S ECODE=$P(VAEL(1),U)
  1. IF ECODE="" S ECODE="None"
  1. S ACTIVITY=$$ACTIVE(REFNO)
  1. S ^TMP($J,ACTIVITY,ECODE,NAME)=REFNO
  1. QUIT 1
  1. GETECODE() ;
  1. S PRNTCODE="None"
  1. IF $D(^DIC(8,ECODE1,0)) S NODE4=^DIC(8,ECODE1,0),PRNTCODE=$P(NODE4,"^",1)
  1. W !,PRNTCODE S RGFS=0
  1. QUIT 1
  1. LTD(DFN) ;
  1. ;FIND LAST TREATMENT DATE
  1. ;INPUT: DFN
  1. ;OUTPUT: LTD LAST TREATMENT DATE
  1. ;
  1. ;
  1. N LTD,X
  1. ;
  1. ; - NEED A PATIENT
  1. I '$G(DFN) S LTD=0 G LTDQ
  1. ;
  1. ; - IF CURRENT INPATIENT, SET LTD = TODAY AND QUIT
  1. ;Current admission movement from ADM^VAPDT2
  1. K VADMVT,VAINDT D ADM^VADPT2 I $L(VADMVT) S LTD=DT K VADMVT,VAERR,VAINDT G LTDQ
  1. K VADMVT,VAERR,VAINDT
  1. ;
  1. ; - GET THE LAST DISCHARGE DATE
  1. S LTD=+$O(^DGPM("ATID3",DFN,"")) S:LTD LTD=9999999.9999999-LTD\1 S:LTD>DT LTD=DT
  1. ;
  1. ; - GET THE LAST REGISTRATION DATE AND COMPARE IT TO LTD
  1. K VAROOT,VARP,^UTILITY("VARP",$J) S VARP("F")=2000101 D REG^VADPT I $D(^UTILITY("VARP",$J,1,"I")) S X=$P(^("I"),U) I X S X=X\1 S:X>LTD LTD=X
  1. K ^UTILITY("VARP",$J),VARP,VAERR
  1. ;
  1. ; - GET THE LAST STOP AND COMPARE TO LTD
  1. ; Look at Outpatient Encounter, ^SDV is going away
  1. ; Use an API instead of ordering through global
  1. N OPIEN S OPIEN=$$GETLAST^SDOE(DFN,2000101,"C")
  1. I $G(^SCE(+OPIEN,0)) S LTD=$P(^SCE(OPIEN,0),"^",1)\1
  1. ;
  1. LTDQ ;
  1. Q $S(LTD:LTD,1:0)
  1. ;
  1. ACTIVE(DFN) ;
  1. N LTD,TODAY,DIFF
  1. S LTD=$$LTD(DFN)
  1. Q:LTD'>0 "NO"
  1. Q:$L(LTD)'=7 1_"^"_LTD_"^"_"ZERO"
  1. S TODAY=$$NOW^XLFDT\1
  1. S DIFF=$$FMDIFF^XLFDT(TODAY,LTD)
  1. ; if difference is > 1096 days or 3 years
  1. I DIFF>1096 Q "NO"
  1. Q "YES"
  1. I ($E(IOST,1,2)="C-")&(IO=IO(0)) D
  1. . S DIR(0)="E"
  1. . D ^DIR K DIR
  1. Q:$D(DUOUT)!($D(DTOUT))
  1. ;;;W:$D(IOF) @IOF
  1. W @IOF,!,"MPI/PD Report of Pseudo, missing & potentially false SSNs "
  1. D NOW^%DTC D YX^%DTC
  1. W ?55,Y,! K Y
  1. W !,?20,"Patient activity within past 3 years = ",$G(ACTIV1)
  1. W !,?1,"Primary"
  1. W !,?1,"Elig Code"
  1. W !,?10,"Elig.",?20,"Name",?54,"SSN",?65,"Home Phone"
  1. W !,"-----------------------------------------------------------------------------"
  1. Q
  1. HEAD2 ;SUB HEADER
  1. Q:$D(DUOUT)!($D(DTOUT))
  1. I RGFS=0,PRNTCODE=RGPRNTCO W !,PRNTCODE
  1. E I RGFS=0 W !,PRNTCODE S RGPRNTCO=PRNTCODE
  1. Q