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

BQIDCAH.m

Go to the documentation of this file.
  1. BQIDCAH ;PRXM/HC/ALA-Ad Hoc Search ; 16 Nov 2005 6:26 PM
  1. ;;2.6;ICARE MANAGEMENT SYSTEM;;Jul 07, 2017;Build 72
  1. ;
  1. Q
  1. ;
  1. PARMS(DATA,CDATA,FGLOB,PARMS,MPARMS,APARMS,MAPARMS) ;EP - Execute Ad Hoc Search
  1. ;
  1. ;Description
  1. ; Ad Hoc Search which can be an assortment of parameters including;
  1. ; GENDER, COMMUNITY, PROVIDER, VISIT DATES, AGE
  1. ;Input
  1. ; FGLOB = From global (only sent for filters)
  1. ; PARMS = Array of parameters and their values
  1. ; MPARMS = Multiple array of a parameter
  1. ;Expected to return DATA
  1. ;
  1. NEW JJ,KK,UID,TGLOB,SEX,COMM,PROV,FROM,THRU,AGE,CRIT1,MRANGE,MRFROM,MRTHRU
  1. NEW CRIT2,NM,DXCAT,PLIDEN,NUMVIS,COMMTX,BEN,VDATA,VNDATA,VODATA,EMPL,VISOP
  1. NEW CLIN,DXOP,RANGE,RFROM,RTHRU,DEC,DECCOD,BNEW,VCRIT1,VCRIT2,DECFDT,DECTDT
  1. NEW ALLERGY,ALLOP,LFROM,LTHRU,LRANGE,LRFROM,LRTHRU,LAB,MED,MFROM,MTHRU,VSDTM
  1. NEW VIS,MEDTX,LABTX,MDOP,LIV,LBOP,INAC,IEN,CPOP,CFROM,CTHRU,CRANGE,CPT,CPTX
  1. NEW PROB,PROP,PPFROM,PPTHRU,PRANGE,PRSTAT,NUMLAB,SETLAB,ETHN,RACE,PLANG,PCOMM
  1. NEW DBFROM,DBTHRU,PRNDC,PRNRV,PRNAC,CRIT,ALNAS,ALNKN,LNOT,MNOT,PFROM,PTHRU
  1. NEW CNOT,CPTTX,CPFROM,CPTHRU,MD,PRFROM,PRTHRU,PROBTX,EDUFROM,EDUTHRU,EDURANGE
  1. NEW EDUTX,EDUC,EDUPICK,EDUTOP,EDUNOT,EDUOP,EDFROM,EDTHRU,EFROM,ETHRU,MDNAC
  1. NEW MDNDC,MDNRV,REMCODE,RMDFROM,RMDTHRU,RMDRANGE,OVD,FUT,RMFROM,RDFROM,RMTHRU
  1. NEW RDTHRU,DEMO,POV,POVTX,PVFROM,PVTHRU,PVRANGE,POVS,POVSB,MEAS,MSNOT,MSFROM,MSTHRU
  1. NEW MSRANGE,MSOP,PVOP,BPOP,ABPOP
  1. ;
  1. I '$D(PARMS),'$D(MPARMS),'$D(APARMS),'$D(MAPARMS) Q
  1. S NM=""
  1. F S NM=$O(PARMS(NM)) Q:NM="" S @NM=PARMS(NM)
  1. ;
  1. S SEX=$G(SEX,""),COMM=$G(COMM,"")
  1. S ETHN=$G(ETHN,""),RACE=$G(RACE,""),PLANG=$G(PLANG,""),PCOMM=$G(PCOMM,"")
  1. S DBFROM=$G(DBFROM,""),DBTHRU=$G(DBTHRU,"")
  1. S FROM=$G(FROM,""),THRU=$G(THRU,""),FGLOB=$G(FGLOB,"")
  1. S DXCAT=$G(DXCAT,""),PLIDEN=$G(PLIDEN,"")
  1. S BEN=$G(BEN,"") ; Beneficiary
  1. S DXOP=$G(DXOP,"!"),VISOP=$G(VISOP,"!"),BPOP=$G(BPOP,"!"),ABPOP=$G(ABPOP,"!")
  1. S RANGE=$G(RANGE,"")
  1. S DEC=$G(DEC,"N"),DECCOD=$G(DECCOD,"") ; Deceased
  1. S LIV=$G(LIV,"Y") ; Living
  1. S DEMO=$G(DEMO,"E") ; Demo patients
  1. S INAC=$G(INAC,"N") ; Inactive patients
  1. S DECFDT=$G(DECFDT,""),DECTDT=$G(DECTDT,"") ;Deceased Date Range
  1. S DECCOD=$G(DECCOD,"")
  1. S ALLERGY=$G(ALLERGY,""),ALLOP=$G(ALLOP,"!"),ALNAS=$G(ALNAS,""),ALNKN=$G(ALNKN,"")
  1. S LAB=$G(LAB,""),MED=$G(MED,""),CPT=$G(CPT,""),POV=$G(POV,""),POVS=$G(POVS,""),MEAS=$G(MEAS,"")
  1. S LABTX=$G(LABTX,""),MEDTX=$G(MEDTX,""),CPTTX=$G(CPTTX,""),POVTX=$G(POVTX,""),POVSB=$G(POVSB,"")
  1. S LBOP=$G(LBOP,"!"),MDOP=$G(MDOP,"!"),CPOP=$G(CPOP,"!"),PROP=$G(PROP,"!"),EDUOP=$G(EDUOP,"!"),PVOP=$G(PVOP,"!"),MSOP=$G(MSOP,"!")
  1. S EMPL=$G(EMPL,"")
  1. S LNOT=$S($G(LNOT)="Y":1,1:0),MNOT=$S($G(MNOT)="Y":1,1:0),CNOT=$S($G(CNOT)="Y":1,1:0),EDUNOT=$S($G(EDUNOT)="Y":1,1:0)
  1. S MSNOT=$S($G(MSNOT)="Y":1,1:0)
  1. S PROB=$G(PROB,""),PRSTAT=$G(PRSTAT,""),PRNDC=$G(PRNDC,""),PRNRV=$G(PRNRV,""),PRNAC=$G(PRNAC,"")
  1. S PROBTX=$G(PROBTX,"")
  1. S EDUTX=$G(EDUTX,""),EDUC=$G(EDUC,""),EDUPICK=$G(EDUPICK,""),EDUTOP=$G(EDUTOP,"")
  1. S OVD=$G(OVD,0),FUT=$G(FUT,0)
  1. ;
  1. ; If timeframe is selected populate start and end dates
  1. I RANGE'="",$G(PPIEN)'="" D RANGE^BQIDCAH1(RANGE,PPIEN,"RANGE") S RFROM=$G(RFROM,""),RTHRU=$G(RTHRU,"")
  1. S FROM=$S($G(RFROM)'="":RFROM,1:$G(FROM))
  1. S THRU=$S($G(RTHRU)'="":RTHRU,1:$G(THRU))
  1. K RFROM,RTHRU
  1. ;
  1. I $G(LRANGE)'="",$G(PPIEN)'="" D RANGE^BQIDCAH1(LRANGE,PPIEN,"LRANGE") S LRFROM=$G(RFROM,""),LRTHRU=$G(RTHRU,"")
  1. S LFROM=$S($G(LRFROM)'="":LRFROM,1:$G(LFROM))
  1. S LTHRU=$S($G(LRTHRU)'="":LRTHRU,1:$G(LTHRU))
  1. K RFROM,RTHRU
  1. ;
  1. I $G(MRANGE)'="",$G(PPIEN)'="" D RANGE^BQIDCAH1(MRANGE,PPIEN,"MRANGE") S MRFROM=$G(RFROM,""),MRTHRU=$G(RTHRU,"")
  1. S MFROM=$S($G(MRFROM)'="":MRFROM,1:$G(MFROM))
  1. S MTHRU=$S($G(MRTHRU)'="":MRTHRU,1:$G(MTHRU))
  1. K RFROM,RTHRU
  1. ;
  1. I $G(CRANGE)'="",$G(PPIEN)'="" D RANGE^BQIDCAH1(CRANGE,PPIEN,"CRANGE") S CPFROM=$G(RFROM,""),CPTHRU=$G(RTHRU,"")
  1. S CFROM=$S($G(CPFROM)'="":CPFROM,1:$G(CFROM))
  1. S CTHRU=$S($G(CPTHRU)'="":CPTHRU,1:$G(CTHRU))
  1. K RFROM,RTHRU
  1. ;
  1. I $G(PRANGE)'="",$G(PPIEN)'="" D RANGE^BQIDCAH1(PRANGE,PPIEN,"PRANGE") S PPFROM=$G(RFROM,""),PPTHRU=$G(RTHRU,"")
  1. S PFROM=$S($G(PPFROM)'="":PPFROM,1:$G(PRFROM))
  1. S PTHRU=$S($G(PPTHRU)'="":PPTHRU,1:$G(PRTHRU))
  1. K RFROM,RTHRU
  1. ;
  1. I $G(EDURANGE)'="",$G(PPIEN)'="" D RANGE^BQIDCAH1(EDURANGE,PPIEN,"EDURANGE") S EDFROM=$G(RFROM,""),EDTHRU=$G(RTHRU,"")
  1. S EFROM=$S($G(EDFROM)'="":EDFROM,1:$G(EDUFROM))
  1. S ETHRU=$S($G(EDTHRU)'="":EDTHRU,1:$G(EDUTHRU))
  1. K RFROM,RTHRU
  1. ;
  1. I $G(RMDRANGE)'="",$G(PPIEN)'="" D RANGE^BQIDCAH1(RMDRANGE,PPIEN,"RMDRANGE") S RDFROM=$G(RFROM,""),RDTHRU=$G(RTHRU,"")
  1. S RMFROM=$S($G(RDFROM)'="":RDFROM,1:$G(RMDFROM))
  1. S RMTHRU=$S($G(RDTHRU)'="":RDTHRU,1:$G(RMDTHRU))
  1. K RFROM,RTHRU,RDFROM,RDTHRU
  1. ;
  1. I $G(PVRANGE)'="",$G(PPIEN)'="" D RANGE^BQIDCAH1(PVRANGE,PPIEN,"PVRANGE") S RDFROM=$G(RFROM,""),RDTHRU=$G(RTHRU,"")
  1. S PVFROM=$S($G(RDFROM)'="":RDFROM,1:$G(PVFROM))
  1. S PVTHRU=$S($G(RDTHRU)'="":RDTHRU,1:$G(PVTHRU))
  1. K RFROM,RTHRU,RDFROM,RDTHRU
  1. ;
  1. I $G(MSRANGE)'="",$G(PPIEN)'="" D RANGE^BQIDCAH1(MSRANGE,PPIEN,"MSRANGE") S RDFROM=$G(RFROM,""),RDTHRU=$G(RTHRU,"")
  1. S MSFROM=$S($G(RDFROM)'="":RDFROM,1:$G(MSFROM))
  1. S MSTHRU=$S($G(RDTHRU)'="":RDTHRU,1:$G(MSTHRU))
  1. K RFROM,RTHRU,RDFROM,RDTHRU
  1. ;
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. F KK=0:1:10 K ^TMP("BQITO"_KK,UID)
  1. S VDATA=$NA(^TMP("BQIAVIS",UID)),VNDATA=$NA(^TMP("BQINOVIS",UID))
  1. S VODATA=$NA(^TMP("BQIOTHVIS",UID)),CRIT=$NA(^TMP("BQICRIT",UID))
  1. K @VDATA,@VNDATA,@VODATA
  1. ;
  1. S JJ=0
  1. S TGLOB=$NA(^TMP("BQITO"_JJ,UID))
  1. ;
  1. ;If DEMO="O" Only include DEMO patients set up patients in file
  1. I $G(DEMO)="O" D D UPD
  1. . NEW DIEN,DN
  1. . S DIEN=$O(^DIBT("B","RPMS DEMO PATIENT NAMES","")) I DIEN'="" D
  1. .. S DN="" F S DN=$O(^DIBT(DIEN,1,DN)) Q:DN="" S @TGLOB@(DN)=""
  1. . S DIEN="DEMO,PATIENT",DN="" F S DN=$O(^DPT("B",DIEN,DN)) Q:DN="" S @TGLOB@(DN)=""
  1. . F S DIEN=$O(^DPT("B",DIEN)) Q:DIEN'["DEMO,PATIENT" S DN="" F S DN=$O(^DPT("B",DIEN,DN)) Q:DN="" S @TGLOB@(DN)=""
  1. ;
  1. ;Alternate cross-reference test
  1. ;I $G(FROM)'="",$G(PROV)'="" D PRVS^BQIDCAH2(TGLOB,PROV,FROM,THRU),UPD
  1. ;
  1. I $G(EMPL)'="" D EMP^BQIDCAH4(FGLOB,TGLOB,EMPL,.MPARMS),UPD
  1. ;
  1. I $G(PLIDEN)'=""!$D(MPARMS("PLIDEN")) D PNL^BQIDCAH4(FGLOB,TGLOB,PLIDEN,.MPARMS),UPD
  1. ;
  1. I $G(DXCAT)'=""!$D(MPARMS("DXCAT")) D DIAG^BQIDCAH1(FGLOB,TGLOB,DXCAT,.MPARMS),UPD
  1. ;
  1. I $G(COMM)'=""!$D(MPARMS("COMM")) D COMM(FGLOB,TGLOB,COMM,.MPARMS),UPD
  1. ;
  1. I $G(COMMTX)'=""!$D(MPARMS("COMMTX")) D
  1. . N COM,COMLST,IEN,PCOMM
  1. . I $G(COMMTX)'="" D COMMTX(COMMTX,.COMLST)
  1. . I $D(MPARMS("COMMTX")) D
  1. .. S COM=""
  1. .. F S COM=$O(MPARMS("COMMTX",COM)) Q:COM="" D COMMTX(COM,.COMLST)
  1. . I $G(FGLOB)="" D
  1. .. S COM=""
  1. .. F S COM=$O(COMLST(COM)) Q:COM="" D COMM(FGLOB,TGLOB,COM,.MPARMS)
  1. . I $G(FGLOB)'="",$D(COMLST) D
  1. .. S IEN=0
  1. .. F S IEN=$O(@FGLOB@(IEN)) Q:'IEN D
  1. ... S PCOMM=$P($G(^AUPNPAT(IEN,11)),U,18)
  1. ... Q:PCOMM=""
  1. ... I $D(COMLST(PCOMM)) S @TGLOB@(IEN)=""
  1. . D UPD
  1. ;
  1. I $G(BEN)'=""!$D(MPARMS("BEN")) D BEN^BQIDCAH1(FGLOB,TGLOB,BEN,.MPARMS),UPD
  1. I $G(SEX)'="" D GEN^BQIDCAH5(FGLOB,TGLOB,SEX),UPD
  1. I $G(RACE)'=""!$D(MPARMS("RACE")) D RACE^BQIDCAH5(FGLOB,TGLOB,RACE,.MPARMS),UPD
  1. I $G(ETHN)'=""!$D(MPARMS("ETHN")) D ETHN^BQIDCAH5(FGLOB,TGLOB,ETHN,.MPARMS),UPD
  1. I $G(PCOMM)'="" D PCOMM^BQIDCAH5(FGLOB,TGLOB,PCOMM),UPD
  1. I $G(PLANG)'="" D PLANG^BQIDCAH5(FGLOB,TGLOB,PLANG),UPD
  1. ;
  1. I $G(DBFROM)'="" D DOB^BQIDCAH5(FGLOB,TGLOB,DBFROM,DBTHRU),UPD
  1. ;
  1. ; If age is a single value then that is criteria 1 and criteria 2 is blank
  1. I $G(AGE)'="" D
  1. . S CRIT1=AGE,CRIT2=""
  1. . D AGE(FGLOB,TGLOB,CRIT1,CRIT2),UPD
  1. ;
  1. ; If age is a multiple value then criteria 1 is the first and criteria 2 is the second MPARMS("AGE",#)
  1. I $D(MPARMS("AGE")) D
  1. . NEW N
  1. . S N="",N=$O(MPARMS("AGE",N)),CRIT1=N
  1. . S N=$O(MPARMS("AGE",N)) I N'="" S CRIT2=N
  1. . S CRIT1=$G(CRIT1,""),CRIT2=$G(CRIT2,"")
  1. . D AGE(FGLOB,TGLOB,CRIT1,CRIT2),UPD
  1. ;
  1. I $G(PROB)'=""!$D(MPARMS("PROB"))!($G(PROBTX)'="") D PROB^BQIDCAH4(FGLOB,TGLOB,PROB,PROBTX,PFROM,PTHRU,.MPARMS),UPD
  1. I $G(PRNDC)'="" D NDC^BQIDCAH4(FGLOB,TGLOB),UPD
  1. I $G(PRNRV)'="" S PFROM=$$DATE^BQIUL1("T-365"),PTHRU=DT D NRV^BQIDCAH4(FGLOB,TGLOB,PFROM,PTHRU),UPD
  1. I $G(PRNAC)'="" D NAC^BQIDCAH4(FGLOB,TGLOB,PFROM,PTHRU),UPD
  1. ;
  1. I $G(FROM)'="" D VIS^BQIDCAH2(FGLOB,TGLOB,FROM,THRU,.MAPARMS),UPD
  1. I $G(FROM)="",$G(RANGE)'="" D VIS^BQIDCAH2(FGLOB,TGLOB,FROM,THRU,.MAPARMS),UPD
  1. ;
  1. I $G(LAB)'=""!$D(MPARMS("LAB"))!($G(LABTX)'="") D LAB^BQIDCAH3(FGLOB,TGLOB,LAB,LABTX,LFROM,LTHRU,LNOT,.MPARMS,.MAPARMS),UPD
  1. ;
  1. I $G(EDUC)'=""!($D(MPARMS("EDUC"))!($G(EDUTX)'="")!($G(EDUTOP)'="")!($G(EDUPICK)'="")) D EDU^BQIDCAH5(FGLOB,TGLOB,EDUC,EDUTX,EFROM,ETHRU,EDUNOT,.MPARMS),UPD
  1. ;
  1. I $G(MED)'=""!$D(MPARMS("MED"))!($G(MEDTX)'="") D MED^BQIDCAH3(FGLOB,TGLOB,MED,MEDTX,MFROM,MTHRU,MNOT,.MPARMS),UPD
  1. I $G(MDNDC)'="" D MND^BQIDCAH4(FGLOB,TGLOB),UPD
  1. I $G(MDNRV)'="" S MFROM=$$DATE^BQIUL1("T-365"),MTHRU=DT D MLR^BQIDCAH4(FGLOB,TGLOB,MFROM,MTHRU),UPD
  1. I $G(MDNAC)'="" D NAM^BQIDCAH4(FGLOB,TGLOB,MFROM,MTHRU),UPD
  1. ;
  1. I $G(CPT)'=""!$D(MPARMS("CPT"))!($G(CPTTX)'="") D CPT^BQIDCAH3(FGLOB,TGLOB,CPT,CPTTX,CFROM,CTHRU,CNOT,.MPARMS),UPD
  1. ;
  1. I $G(POV)'=""!$D(MPARMS("POV"))!($G(POVTX)'="") D POV^BQIDCAH6(FGLOB,TGLOB,POV,POVTX,PVFROM,PVTHRU,CNOT,.MPARMS),UPD
  1. I $G(POVS)'=""!$D(MPARMS("POVS"))!($G(POVSB)'="") D POVS^BQIDCAH6(FGLOB,TGLOB,POVS,POVSB,PVFROM,PVTHRU,CNOT,.MPARMS),UPD
  1. ;
  1. I $G(MEAS)'=""!($D(MPARMS("MEAS"))) D MEAS^BQIDCAH7(FGLOB,TGLOB,MEAS,MSFROM,MSTHRU,MSNOT,.MPARMS),UPD
  1. I $G(REMCODE)'=""!($D(MPARMS("REMCODE"))) D REM^BQIDCAH6(FGLOB,TGLOB,REMCODE,RMFROM,RMTHRU,OVD,FUT,.MPARMS),UPD
  1. ;
  1. ;I $G(PROV)'="" D PROV^BQIDCAH2(FGLOB,TGLOB,PROV),UPD
  1. ;
  1. I $G(ALLERGY)'=""!$D(MPARMS("ALLERGY"))!($G(ALNAS)'="")!($G(ALNKN)'="") D ALGY^BQIDCAH6(FGLOB,TGLOB,ALLERGY,.MPARMS),UPD
  1. ;
  1. D STAT(FGLOB,TGLOB,LIV,DEC,INAC),UPD
  1. ;
  1. S DATA=$NA(^TMP("BQIAHOC",UID)),CDATA=$NA(^TMP("BQIAHOCC",UID))
  1. K @DATA,@CDATA
  1. M @CDATA=@CRIT
  1. I $D(@TGLOB)>0 D
  1. . S IEN="" F S IEN=$O(@TGLOB@(IEN)) Q:IEN="" D
  1. .. I $G(DEMO)="E",$$DEMO^APCLUTL(IEN,"E")=1 Q
  1. .. S @DATA@(IEN)=""
  1. ;
  1. I $D(@TGLOB)'>0,$G(FGLOB)'="" D
  1. . S IEN="" F S IEN=$O(@FGLOB@(IEN)) Q:IEN="" D
  1. .. I $G(DEMO)="E",$$DEMO^APCLUTL(IEN,"E")=1 Q
  1. .. S @DATA@(IEN)=""
  1. ;
  1. F KK=0:1:JJ K ^TMP("BQITO"_KK,UID)
  1. K @VDATA,@VODATA
  1. I $D(@CRIT) K @CRIT
  1. Q
  1. ;
  1. UPD ;EP
  1. S JJ=JJ+1,FGLOB=TGLOB,TGLOB=$NA(^TMP("BQITO"_JJ,UID))
  1. Q
  1. ;
  1. AGE(FGLOB,TGLOB,CRIT1,CRIT2) ;EP - Age search
  1. I $G(TGLOB)="" Q
  1. I $G(CRIT1)="" Q
  1. ;
  1. NEW IEN,AGE,DOD
  1. S IEN=0
  1. I $G(FGLOB)'="" D
  1. . F S IEN=$O(@FGLOB@(IEN)) Q:'IEN D ACHK^BQIDCAH1(.IEN)
  1. ;
  1. I $G(FGLOB)="" D
  1. . F S IEN=$O(^AUPNPAT(IEN)) Q:'IEN D ACHK^BQIDCAH1(.IEN)
  1. Q
  1. ;
  1. COMM(FGLOB,TGLOB,COM,MPARMS) ;EP - Community search
  1. I $G(TGLOB)="" Q
  1. I $G(COM)]"" D COMM1
  1. I $D(MPARMS("COMM")) S COM="" F S COM=$O(MPARMS("COMM",COM)) Q:COM="" D COMM1
  1. Q
  1. ;
  1. COMM1 ;EP
  1. ; Get Community Name and use x-ref for speed improvement.
  1. ; If community ien is passed use it to determine if patient community matches ***
  1. NEW COMM,COMMNM ;***
  1. S (COMM,COMMNM)=COM ;***
  1. I COMM?1.N S COMMNM=$$GET1^DIQ(9999999.05,COM,.01,"E") ;***
  1. ;
  1. NEW IEN
  1. S IEN=0
  1. I $G(FGLOB)'="" D
  1. . F S IEN=$O(@FGLOB@(IEN)) Q:'IEN D
  1. .. I COMM?.N,$P($G(^AUPNPAT(IEN,11)),U,17)'=COMM Q ;***
  1. .. I COMM'?.N,$P($G(^AUPNPAT(IEN,11)),U,18)'=COMMNM Q ;***
  1. .. S @TGLOB@(IEN)=""
  1. ;
  1. I $G(FGLOB)="" D
  1. . F S IEN=$O(^AUPNPAT("AC",COMMNM,IEN)) Q:IEN="" D
  1. .. ;I $P($G(^AUPNPAT(IEN,41,DUZ(2),0)),U,3)'="" Q
  1. .. I COMM?.N,$P($G(^AUPNPAT(IEN,11)),U,17)'=COMM Q ;***
  1. .. S @TGLOB@(IEN)=""
  1. Q
  1. ;
  1. COMMTX(TAX,COML) ;EP
  1. ; Get a list of communities for the specified community taxonomy
  1. I $G(TAX)="" Q
  1. N TAXNM,COMM,IEN
  1. I TAX'?.N S TAXNM=TAX,TAX=$O(^ATXAX("B",TAXNM,"")) I TAX=""!($O(^ATXAX("B",TAXNM,TAX))'="") Q
  1. ; Currently CRS only uses community names and matches these to the patient's
  1. ; community without regard to state, etc.
  1. S COMM=""
  1. F S COMM=$O(^ATXAX(TAX,21,"B",COMM)) Q:COMM="" D
  1. . I '$D(^AUTTCOM("B",COMM)) Q
  1. . S COML(COMM)=""
  1. Q
  1. ;
  1. DECHK(DDFN) ;EP Is patient eligible based on date of death
  1. NEW DOD,DFLG,DCD
  1. S DOD=$P($G(^DPT(DDFN,.35)),U,1)
  1. I DOD="" Q 0
  1. ;
  1. ;Date of Death Checks
  1. ;
  1. ;New Method - Date Range
  1. I $G(DECFDT)="",$G(DECTDT)="",DOD'="" S DFLG=1 Q DFLG
  1. I $G(DECFDT)'=""!($G(DECTDT)'="") S DFLG=1 D Q DFLG
  1. . I $G(DECFDT)'="",DOD<DECFDT S DFLG=0 Q
  1. . I $G(DECTDT)'="",DOD>DECTDT S DFLG=0
  1. ;
  1. ;Old Method - Single Deceased as of Date
  1. ;I DECDT="" Q 1
  1. ;I $G(DECDT)'="",DOD'>DECDT Q 1
  1. ;
  1. ; Multiple causes of death
  1. I $D(MPARMS("DECCOD")) S DFLG=0 D Q DFLG
  1. . S DCD="" F S DCD=$O(MPARMS("DECCOD",DCD)) Q:DCD="" I $P($G(^AUPNPAT(DDFN,11)),U,14)=DCD S DFLG=1
  1. ; single cause of death
  1. I $G(DECCOD)'="",$P($G(^AUPNPAT(DDFN,11)),U,14)=DECCOD Q 1
  1. ;
  1. Q 0
  1. ;
  1. STAT(FGLOB,TGLOB,LIV,DEC,INAC) ;EP Check patients status
  1. I $G(TGLOB)="" Q
  1. NEW IEN
  1. S IEN=0
  1. I $G(FGLOB)'="" D Q
  1. . F S IEN=$O(@FGLOB@(IEN)) Q:'IEN D STCK
  1. ;
  1. I $G(FGLOB)="" D
  1. . F S IEN=$O(^AUPNPAT(IEN)) Q:'IEN D STCK
  1. Q
  1. ;
  1. STCK ;EP - Check
  1. ; If all are checked for yes, all patients are included
  1. I LIV="Y",DEC="Y",INAC="Y" S @TGLOB@(IEN)="" Q
  1. ; If none are checked, no patients are included
  1. I LIV="N",DEC="N",INAC="N" Q
  1. ; if living and deceased are included but not inactives
  1. I LIV="Y",DEC="Y",INAC="N" D
  1. . ; Active HRN, include
  1. . I $$HRN^BQIUL1(IEN) S @TGLOB@(IEN)="" Q
  1. ; Include living but not deceased
  1. I LIV="Y",DEC="N",INAC="Y" D
  1. . ; If they are not active and not deceased, include
  1. . I '$$HRN^BQIUL1(IEN),'$$DECHK(IEN) S @TGLOB@(IEN)="" Q
  1. ; If living, not deceased and not inactive, include
  1. I LIV="Y",DEC="N",INAC="N" D
  1. . I $$HRN^BQIUL1(IEN),'$$DECHK(IEN) S @TGLOB@(IEN)="" Q
  1. I LIV="N",DEC="Y",INAC="Y" D
  1. . ; Decease but active
  1. . I $$DECHK(IEN),$$HRN^BQIUL1(IEN) S @TGLOB@(IEN)="" Q
  1. I LIV="N",DEC="N",INAC="Y" D
  1. . ; inactive
  1. . I '$$HRN^BQIUL1(IEN) S @TGLOB@(IEN)="" Q
  1. I LIV="N",DEC="Y",INAC="N" D
  1. . ; Deceased but not inactive
  1. . I $$DECHK(IEN),$$HRN^BQIUL1(IEN) S @TGLOB@(IEN)="" Q
  1. Q