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

AGEDERR2.m

Go to the documentation of this file.
  1. AGEDERR2 ; IHS/SD/EFG - EDIT CHECK CALLS ; MAR 19, 2010
  1. ;;7.1;PATIENT REGISTRATION;**2,7,9,11,12**;AUG 25, 2005;Build 1
  1. ;IHS/OIT/NKD AG*7.1*11 MU2 MULTIPLE RACES
  1. ;IHS/OIT/NKD AG*7.1*12 INSURER TYPE
  1. ;THIS RTN CONTAINS EDIT CHK SUBRTNS FOR USE IN THE EDIT
  1. ;CHK SYSTEM
  1. ;
  1. Q
  1. HASELIG(DFN) ;EP - DOES THE PATIENT HAVE ELIGIBILITY AT ALL
  1. N X
  1. S X=1_U
  1. I '$D(^AUPNMCR("B",DFN))&'$D(^AUPNMCD("B",DFN))&'$D(^AUPNRRE("B",DFN))&'$D(^AUPNPRVT("B",DFN)) Q 0
  1. I $D(^AUPNMCR("B",DFN)) S X=X_"MCR"_U
  1. I $D(^AUPNMCD("B",DFN)) S X=X_"MCD"_U
  1. I $D(^AUPNRRE("B",DFN)) S X=X_"RRE"_U
  1. I $D(^AUPNPRVT("B",DFN)) S X=X_"PVT"_U
  1. Q $$ACTELIG(DFN,X)_U_X
  1. ;DOES THE PATIENT HAVE ACTIVE ELIGIBILITY?
  1. ;ELIGSTR = STRING FROM ABOVE
  1. ACTELIG(DFN,ELIGSTR) ;EP - DOES THE PATIENT HAVE ACTIVE ELIGIBILITY?
  1. N AGINS,PIECE,SEL,ACTIVE,SEQ,CALL
  1. S SEL=0,ACTIVE=0
  1. F PIECE=2:1:$L(ELIGSTR) S TYPE=$P(ELIGSTR,U,PIECE) Q:TYPE=""!(ACTIVE) D
  1. .S CALL="FIND"_TYPE_U_"AGINS("_DFN_")"
  1. .D @CALL
  1. .S ACTIVE=0
  1. .S SEQ=0
  1. .F S SEQ=$O(AGINS(SEQ)) Q:SEQ=""!ACTIVE D
  1. ..S ACTIVE=$$ISACTIVE^AGINS($P(AGINS(SEQ),U,5),$P(AGINS(SEQ),U,6))
  1. Q ACTIVE
  1. ;THIS TAG IS USED TO DETERMINE WHAT DATE TO USE AS THE AOB DATE
  1. AOBCHEK(DFN) ;EP - DETERMINE AOB DATE TO CHECK FOR OVERDUE
  1. N AGINS,SEL,ACTIVE,SEQ,CALL,BEGDT,ENDDT,MSTRESDT,MSTREEDT,TARDT
  1. S SEL=0,ACTIVE=0
  1. S CALL="FINDPVT^AGINS("_DFN_")"
  1. D @CALL
  1. S ACTIVE=0
  1. S MSTRESDT=0,MSTREEDT=0
  1. S SEQ=0
  1. F S SEQ=$O(AGINS(SEQ)) Q:SEQ="" D
  1. .S BEGDT=$P(AGINS(SEQ),U,5)
  1. .S ENDDT=$P(AGINS(SEQ),U,6)
  1. .Q:'$$ISACTIVE^AGINS(BEGDT,ENDDT)
  1. .I BEGDT>MSTRESDT S MSTRESDT=BEGDT
  1. .I ENDDT>MSTREEDT S MSTREEDT=ENDDT
  1. S TARDT=MSTRESDT
  1. Q TARDT
  1. ISDEPEND(DFN) ;EP - IF PATIENT IS LISTED AS A DEPENDENT IN THE POLICY HOLDER
  1. ;FILE, DISPLAY THE ERROR
  1. N ISDEPEND
  1. S ISDEPEND=0
  1. I '$D(^AUPNPRVT("B",DFN)) Q 0
  1. S REC=0
  1. F S REC=$O(^AUPNPRVT(DFN,11,REC)) Q:'REC!ISDEPEND D
  1. .I $P($G(^AUPNPRVT(DFN,11,REC,0)),U,5)'=25&($D(^AUPN3PPH("C",DFN))) S ISDEPEND=1 Q
  1. Q ISDEPEND
  1. CURRUPD(DFN,DAYS) ;EP - HAS THE PATIENT BEEN UPDATED IN THE PAST YEAR
  1. N X2,X1,X
  1. S X2=$P($G(^AUPNPAT(DFN,0)),U,3) ;DATE OF LAST REG. UPDATE
  1. I X2="" S X2=$P($G(^AUPNPAT(DFN,0)),U,2) ;DATE ESTABLISHED
  1. I X2="" S X2=DT-40000
  1. S X1=DT
  1. D ^%DTC
  1. I X>DAYS Q 0
  1. Q 1
  1. OVER65(DFN) ;EP - CHECK TO SEE IF PATIENT IS OVER 65 YEARS OLD
  1. Q $$AGE^AUPNPAT(DFN)>65
  1. DECEASED(DFN) ;EP - IS THE PATIENT DECEASED?
  1. Q $P($G(^DPT(DFN,.35)),U)'=""
  1. PTACTIVE(DFN) ;EP - SEE IF PATIENT IS ACTIVE IN AT LEAST ONE FACILTY
  1. S ACTIVE=0
  1. S FAC=0
  1. F S FAC=$O(^AUPNPAT(DFN,41,FAC)) Q:'FAC!ACTIVE D
  1. .I $P($G(^AUPNPAT(DFN,41,FAC,0)),U,5)="" S ACTIVE=1 Q
  1. Q ACTIVE
  1. ;CALLED BY SEQMAN^AGEDERR TO FIND FAC FOR EDIT CHECK # 33
  1. FACCHK(DFN) ;EP - CALLED BY SEQMAN^AGEDERR TO FIND FAC FOR EDIT CHECK # 33
  1. N FAC
  1. S SEQREQ=0
  1. S FAC=0
  1. F S FAC=$O(^AUPNPAT(DFN,41,FAC)) Q:'FAC!SEQREQ D
  1. .I $$NEEDTOSQ^AGUTILS(DFN,FAC) S SEQREQ=1 Q
  1. Q SEQREQ
  1. ;RETURN TRUE IF ALL ADDRESS FIELDS ARE EMPTY
  1. ;ONLY CHECKED FOR INSURER AND EMPLOYER FILES
  1. ;CALLED FROM AGEDGUAR.
  1. GUARADD(GUARINFO) ;EP
  1. N ALLMISS
  1. S ALLMISS=0
  1. Q:GUARINFO="" 0
  1. S GUARPTR=U_$P(GUARINFO,U,14)
  1. Q:GUARPTR[("AUPNPAT") 1 ;ALWAYS ALLOWED TO EDIT PATIENT ADDRESS
  1. Q:GUARPTR'[("AUTNINS")&(GUARPTR'[("AUTNEMPL")) 0
  1. S X=$G(@GUARPTR)
  1. S ALLMISS=X="" Q:ALLMISS
  1. S ALLMISS=($P(X,U,2)="")&($P(X,U,3)="")&($P(X,U,4)="")&($P(X,U,5)="")
  1. Q ALLMISS
  1. ISMCD(INSPTR) ;EP - RETURN TRUE IF MEDICAID INSURER
  1. Q:INSPTR="" 0
  1. ;Q $P($G(^AUTNINS(INSPTR,2)),U)="D"
  1. Q $$INSTYP^AGUTL(INSPTR)="D" ;IHS/OIT/NKD AG*7.1*12
  1. ;ERROR CHECK # 37 DOES PATIENT HAVE INTERNET ACCESS?
  1. WEB(DFN) ;
  1. Q:DFN="" 1
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. S LSTUPD=$O(^AUPNPAT(DFN,81,"B",""),-1)
  1. Q:LSTUPD="" 1
  1. S X2=LSTUPD
  1. S X1=DT
  1. D ^%DTC
  1. Q X>365
  1. ;EDIT CHK #53 - PATIENT RACE MISSING - AG*7.1*9
  1. ;WARNING VERSION (SEE EDIT CHECK #52 FOR ERROR VERSION)
  1. ;RETURNS TRUE IF MISSING
  1. PRACE(DFN) ;EP
  1. ;N RACE
  1. Q:DFN="" 1
  1. ;
  1. ;Quit if Race required
  1. I $$RQRACE^AGEDERR4(DUZ(2)) Q 0
  1. ;
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. ;
  1. ;IHS/OIT/NKD AG*7.1*11 MU2 - CHANGED WARNING TO USE RACE MULTIPLE
  1. ;S RACE=$$GET1^DIQ(2,DFN_",",".06","I")
  1. ;I RACE]"" Q 0
  1. I +$$RACE^AGUTL(DFN)>0 Q 0
  1. Q 1
  1. ;EDIT CHK #52 - PATIENT RACE MISSING - AG*7.1*9
  1. ;ERROR VERSION (SEE EDIT CHECK #53 FOR WARNING VERSION)
  1. ;RETURNS TRUE IF MISSING
  1. PRACEE(DFN) ;EP
  1. ;N RACE
  1. Q:DFN="" 1
  1. ;
  1. ;Quit if Race optional
  1. I '$$RQRACE^AGEDERR4(DUZ(2)) Q 0
  1. ;
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. ;
  1. ;IHS/OIT/NKD AG*7.1*11 MU2 - CHANGED ERROR TO USE RACE MULTIPLE
  1. ;S RACE=$$GET1^DIQ(2,DFN_",",".06","I")
  1. ;I RACE]"" Q 0
  1. I +$$RACE^AGUTL(DFN)>0 Q 0
  1. Q 1
  1. ;EDIT CHK #38 - PATIENT ETHNICITY OR METHOD OF COLLECTION MISSING - AG*7.1*7
  1. ;WARNING VERSION (SEE EDIT CHECK #51 FOR ERROR VERSION)
  1. ;RETURNS TRUE IF MISSING
  1. PETHNIC(DFN) ;EP
  1. N ETHNIC,MOC
  1. Q:DFN="" 1
  1. ;
  1. ;Quit if Ethnicity required
  1. I $$RQETH^AGEDERR4(DUZ(2)) Q 0 ;AG*7.1*9
  1. ;
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. ;
  1. S ETHNIC=$O(^DPT(DFN,.06,0))
  1. I ETHNIC S MOC=$$GET1^DIQ(2.06,ETHNIC_","_DFN_",",".02","I") I MOC="" Q 1 ;Method of Collection
  1. I ETHNIC S ETHNIC=$$GET1^DIQ(2.06,ETHNIC_","_DFN_",",".01","I")
  1. I ETHNIC]"" Q 0 ;Ethnicity
  1. Q 1
  1. ;EDIT CHK #51 - PATIENT ETHNICITY OR METHOD OF COLLECTION MISSING - AG*7.1*9
  1. ;ERROR VERSION (SEE EDIT CHECK #38 FOR WARNING VERSION)
  1. ;RETURNS TRUE IF MISSING
  1. PETHNICE(DFN) ;EP
  1. N ETHNIC,MOC
  1. Q:DFN="" 1
  1. ;
  1. ;Quit if Ethnicity optional
  1. I '$$RQETH^AGEDERR4(DUZ(2)) Q 0 ;AG*7.1*9
  1. ;
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. ;
  1. S ETHNIC=$O(^DPT(DFN,.06,0))
  1. I ETHNIC S MOC=$$GET1^DIQ(2.06,ETHNIC_","_DFN_",",".02","I") I MOC="" Q 1 ;Method of Collection
  1. I ETHNIC S ETHNIC=$$GET1^DIQ(2.06,ETHNIC_","_DFN_",",".01","I")
  1. I ETHNIC]"" Q 0 ;Ethnicity
  1. Q 1
  1. ;EDIT CHK #39 - PATIENT MIGRANT STATUS OR TYPE MISSING - AG*7.1*7
  1. ;RETURNS TRUE IF MISSING
  1. PMIG(DFN) ;EP
  1. N MIG,MSTS,MTYP
  1. Q:DFN="" 1
  1. ;
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. ;
  1. ;Quit if not getting displayed
  1. I $G(AGOPT(26))'="Y" Q 0 ;AG*7.1*9
  1. ;
  1. S MIG=$$CMIG^AGED10A(DFN)
  1. S MSTS=$P($P(MIG,U,3),":")
  1. I MSTS="" Q 1 ;Error if no status
  1. I MSTS="N" Q 0 ;Quit if status in "NO"
  1. ;
  1. S MTYP=$P($P(MIG,U,4),":")
  1. I MSTS="Y",MTYP="" Q 1 ;Error if status is yes and no type
  1. Q 0
  1. ;EDIT CHK #40 - PATIENT HOMELESS STATUS OR TYPE MISSING - AG*7.1*7
  1. ;RETURNS TRUE IF MISSING
  1. PHOM(DFN) ;EP
  1. N HOM,HSTS,HTYP
  1. Q:DFN="" 1
  1. ;
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. ;
  1. ;Quit if not getting displayed
  1. I $G(AGOPT(27))'="Y" Q 0 ;AG*7.1*9
  1. ;
  1. S HOM=$$CHOM^AGED10A(DFN)
  1. S HSTS=$P($P(HOM,U,3),":")
  1. I HSTS="" Q 1 ;Error if no status
  1. I HSTS="N" Q 0 ;Quit if status in "NO"
  1. ;
  1. S HTYP=$P($P(HOM,U,4),":")
  1. I HSTS="Y",HTYP="" Q 1 ;Error if status is yes and no type
  1. Q 0
  1. ;EDIT CHK #41 - PATIENT PRIMARY LANGUAGE MISSING - AG*7.1*7
  1. ;WARNING VERSION (SEE EDIT CHK #50 FOR ERROR VERSION)
  1. ;RETURNS TRUE IF MISSING
  1. LPRM(DFN) ;EP
  1. N LNG,VAL
  1. Q:DFN="" 1
  1. ;
  1. ;Quit if Primary Language required
  1. I $$RQPRM^AGEDERR4(DUZ(2)) Q 0 ;AG*7.1*9
  1. ;
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. ;
  1. S VAL=$$CLANG^AGED10B(DFN)
  1. S LNG=$P($P(VAL,U,2),":",2)
  1. I LNG="" Q 1
  1. I LNG'="ENGLISH",$P($P(VAL,U,3),":")="" Q 1 ;Check Interpreter Required
  1. I LNG="ENGLISH"!($P(VAL,U,5)["ENGLISH"),$P($P(VAL,U,6),":")="" Q 1 ;Check English Proficiency
  1. Q 0
  1. ;EDIT CHK #50 - PATIENT PRIMARY LANGUAGE MISSING - AG*7.1*9
  1. ;ERROR VERSION (SEE EDIT CHK #41 FOR WARNING VERSION)
  1. ;RETURNS TRUE IF MISSING
  1. LPRME(DFN) ;EP
  1. N LNG,VAL
  1. Q:DFN="" 1
  1. ;
  1. ;Quit if Primary Language optional
  1. I '$$RQPRM^AGEDERR4(DUZ(2)) Q 0 ;AG*7.1*9
  1. ;
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. ;
  1. S VAL=$$CLANG^AGED10B(DFN)
  1. S LNG=$P($P(VAL,U,2),":",2)
  1. I LNG="" Q 1
  1. I LNG'="ENGLISH",$P($P(VAL,U,3),":")="" Q 1 ;Check Interpreter Required
  1. I LNG="ENGLISH"!($P(VAL,U,5)["ENGLISH"),$P($P(VAL,U,6),":")="" Q 1 ;Check English Proficiency
  1. Q 0
  1. ;EDIT CHK #42 - PATIENT PREFERRED LANGUAGE MISSING - AG*7.1*7
  1. ;WARNING VERSION (SEE EDIT CHK #49 FOR ERROR VERSION)
  1. ;RETURNS TRUE IF MISSING
  1. LPRE(DFN) ;EP
  1. N DEF,IEN,PRE,PRMX,FND,LNG,OLNG,ERROR
  1. Q:DFN="" 1
  1. ;
  1. ;Quit if Preferred Language required
  1. I $$RQPRF^AGEDERR4(DUZ(2)) Q 0 ;AG*7.1*9
  1. ;
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. ;
  1. ;Error if blank
  1. S DEF=$$CLANG^AGED10B(DFN) ;AG*7.1*9 - Changed from AGPATDFN to DFN
  1. S PRE=$P($P(DEF,U,4),":",2)
  1. I PRE="" Q 1
  1. ;
  1. ;Error if Preferred Language not in the Primary or Other Spoken Language fields
  1. S IEN=$P(DEF,U) ;IEN
  1. S PRMX=$P($P(DEF,U,2),":",2) ;External Primary Language
  1. I PRMX=PRE Q 0 ;No Error if Primary equals Preferred
  1. ;
  1. D GETS^DIQ(9000001.86,IEN_","_DFN_",",".05*","E","OLNG","ERROR")
  1. S (FND,IEN)="" F S IEN=$O(OLNG("9000001.8605",IEN)) Q:IEN="" D Q:FND=1
  1. . S LNG=$G(OLNG("9000001.8605",IEN,".01","E")) Q:LNG=""
  1. . I PRE=LNG S FND=1
  1. I FND="" Q 1 ;Error if Preferred not in Other Spoken Language list either
  1. Q 0
  1. ;EDIT CHK #49 - PATIENT PREFERRED LANGUAGE MISSING - AG*7.1*9
  1. ;ERROR VERSION (SEE EDIT CHK #42 FOR WARNING VERSION)
  1. ;RETURNS TRUE IF MISSING
  1. LPREE(DFN) ;EP
  1. N DEF,IEN,PRE,PRMX,FND,LNG,OLNG,ERROR
  1. Q:DFN="" 1
  1. ;
  1. ;Quit if Preferred Language optional
  1. I '$$RQPRF^AGEDERR4(DUZ(2)) Q 0 ;AG*7.1*9
  1. ;
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. ;
  1. ;Error if blank
  1. S DEF=$$CLANG^AGED10B(DFN) ;AG*7.1*9 - Changed from AGPATDFN to DFN
  1. S PRE=$P($P(DEF,U,4),":",2)
  1. I PRE="" Q 1
  1. ;
  1. ;Error if Preferred Language not in the Primary or Other Spoken Language fields
  1. S IEN=$P(DEF,U) ;IEN
  1. S PRMX=$P($P(DEF,U,2),":",2) ;External Primary Language
  1. I PRMX=PRE Q 0 ;No Error if Primary equals Preferred
  1. ;
  1. D GETS^DIQ(9000001.86,IEN_","_DFN_",",".05*","E","OLNG","ERROR")
  1. S (FND,IEN)="" F S IEN=$O(OLNG("9000001.8605",IEN)) Q:IEN="" D Q:FND=1
  1. . S LNG=$G(OLNG("9000001.8605",IEN,".01","E")) Q:LNG=""
  1. . I PRE=LNG S FND=1
  1. I FND="" Q 1 ;Error if Preferred not in Other Spoken Language list either
  1. Q 0
  1. ;EDIT CHK #43 - PATIENT HOUSEHOLD INCOME PERIOD MISSING - AG*7.1*7
  1. ;RETURNS TRUE IF MISSING
  1. HIP(DFN) ;EP
  1. N HIC,HIP
  1. Q:DFN="" 1
  1. ;
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. ;
  1. I AGOPT(22)="N" Q 0
  1. S HIC=$$GET1^DIQ(9000001,DFN_",",".36","E")
  1. I HIC'>0 Q 0
  1. S HIP=$$GET1^DIQ(9000001,DFN_",","8701","E")
  1. I HIP="" Q 1
  1. Q 0