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

AGEDERR.m

Go to the documentation of this file.
  1. AGEDERR ; IHS/SD/TPF - MAIN EDIT CHECK 'DRIVERS'
  1. ;;7.1;PATIENT REGISTRATION;**1,2**;JAN 31, 2007
  1. ;
  1. ;THIS CONTAINS EDIT CHECKS 26 - 36
  1. ;ALL CALLS HERE PERTAIN TO EDIT CHECKS SPECIFIED BY THE
  1. ;"PATIENT REGISTRATION REQUIREMENTS DOCUMENT JAN 29, 2004 FINAL VERSION"
  1. ;COMPILED BY ADRIAN LUJAN
  1. ;THESE ARE REFERRED TO AS "EDIT CHECKS" OR ERRORS OR WARNINGS
  1. ;
  1. ;THERE ARE TWO TYPES OF EDIT CHECK RESULTS - ERRORS AND WARNINGS.
  1. ;THE RESULT STRING WILL BE RETURNED. IN THE RESULT STRING OF "1^W^001" THE
  1. ;FIRST PIECE MEANS THE RESULT WAS TRUE (YES THERE IS AN ERROR OR WARNING),
  1. ;THE SECOND PIECE MEANS THIS IS A WARNING EDIT CHECK AND THE THIRD PIECE
  1. ;MEANS THE ERROR CODE IS 1. THE ERRORS/WARNINGS ARE STORED IN THE 'AG PATIENT
  1. ;REGISTRATION ERROR CODES' FILE #9009061.5
  1. ;
  1. W !,"ALL CALLS TO THIS ROUTINE SHOULD BE DONE VIA TAG EPs"
  1. Q ;DO NOT CALL ROOT
  1. ;EDIT CHECK #29 - MEDICARE ELIGIBILITY DATA INCOMPLETE
  1. MCRELINC(DFN,FINDCALL) ;EP
  1. N X,SEQ,MISSING,AGINS
  1. Q:DFN="" 1
  1. I '$$HASELIG^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. I '$$CURRUPD^AGEDERR2(DFN,1095) Q 0
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. S FINDCALL="FINDMCR"
  1. ;IF SELECTION IS DEFINED WE'RE COMING FROM AGED4A AND THE USER HAS
  1. ;SELECTED AN INSURER FROM THE AGINS ARRAY
  1. I $G(AGSELECT)'="" S AGINS(1)=AGSELECT
  1. E D
  1. .;USER HAS NOT SELECTED FROM AGED4A SO LETS CREATE OUR OWN AGINS
  1. .;ARRAY BASED ON VALUE OF 'FINDCALL'
  1. .I FINDCALL'="" S FINDCALL=FINDCALL_U_"AGINS("_DFN_")"
  1. .S SEL=0
  1. .I FINDCALL="" D FINDALL(DFN,.AGINS)
  1. .E D @FINDCALL
  1. S SEQ=0,MISSING=0
  1. F S SEQ=$O(AGINS(SEQ)) Q:SEQ="" D Q:MISSING
  1. .;DO NOT CHECK FOR ERRORS ON INSURANCE THAT IS INACTIVE NEW SPECS REC'D 1/20/05
  1. .Q:'$$ISACTIVE^AGINS($P(AGINS(SEQ),U,5),$P(AGINS(SEQ),U,6))
  1. .;END NEW SPECS REC'D 1/20/05
  1. .S INNAME=$P(AGINS(SEQ),U)
  1. .S POLNUM=$P(AGINS(SEQ),U,9)
  1. .S MISSING=$P(AGINS(SEQ),U,9)="" Q:MISSING
  1. .S MISSING=$P(AGINS(SEQ),U,5)="" Q:MISSING
  1. .S MISSING=$P(AGINS(SEQ),U,4)="" Q:MISSING
  1. .N X
  1. .S X=$P($G(^AUPNMCR(DFN,21)),U,2)
  1. .S MISSING=X="" Q:MISSING
  1. .I $$AGE^AUPNPAT(DFN)>65 D
  1. ..S X=$O(^AUPNMSP("C",DFN,""))
  1. ..S MISSING=X="" Q:MISSING
  1. .N X
  1. .S X=$P($G(^AUPNPAT(DFN,0)),U,4)
  1. .S MISSING=X="" Q:MISSING
  1. .N X
  1. K AGINS
  1. Q MISSING_U_$$ERRDATA(29)_"|"_$G(POLNUM)_"|"_$G(INNAME)
  1. ;EDIT CHECK #30 - MEDICAID COVERAGE TYPE MISSING
  1. MCDCOVMS(DFN,FINDCALL) ;EP
  1. N X,SEQ,MISSING,AGINS
  1. Q:'DFN 1
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. I '$$CURRUPD^AGEDERR2(DFN,1095) Q 0
  1. I '$$HASELIG^AGEDERR2(DFN) Q 0
  1. S FINDCALL="FINDMCD" ;THIS EDIT CHECK ONLY FOR MEDICAID
  1. ;IF SELECTION IS DEFINED WE'RE COMING FROM AGED4A AND THE USER HAS
  1. ;SELECTED AN INSURER FROM THE AGINS ARRAY
  1. I $G(AGSELECT)'="" S AGINS(1)=AGSELECT
  1. E D
  1. .;USER HAS NOT SELECTED FROM AGED4A SO LETS CREATE OUR OWN AGINS
  1. .;ARRAY BASED ON VALUE OF 'FINDCALL'
  1. .I FINDCALL'="" S FINDCALL=FINDCALL_U_"AGINS("_DFN_")"
  1. .S SEL=0
  1. .I FINDCALL="" D FINDALL(DFN,.AGINS)
  1. .E D @FINDCALL
  1. S MISSING=$$CHKAGINS(4,30,"","9,1")
  1. K AGINS,FORMAT
  1. Q MISSING
  1. ;EDIT CHECK #31 - MEDICAID RATE MISSING
  1. MCGRTMS(DFN,FINDCALL) ;EP
  1. N X,SEQ,MISSING,AGINS
  1. Q:'DFN 1
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. I '$$CURRUPD^AGEDERR2(DFN,1095) Q 0
  1. I '$$HASELIG^AGEDERR2(DFN) Q 0
  1. S FINDCALL="FINDMCD" ;THIS EDIT CHECK ONLY FOR MEDICAID
  1. ;IF SELECTION IS DEFINED WE'RE COMING FROM AGED4A AND THE USER HAS
  1. ;SELECTED AN INSURER FROM THE AGINS ARRAY
  1. I $G(AGSELECT)'="" S AGINS(1)=AGSELECT
  1. E D
  1. .;USER HAS NOT SELECTED FROM AGED4A SO LETS CREATE OUR OWN AGINS
  1. .;ARRAY BASED ON VALUE OF 'FINDCALL'
  1. .I FINDCALL'="" S FINDCALL=FINDCALL_U_"AGINS("_DFN_")"
  1. .S SEL=0
  1. .I FINDCALL="" D FINDALL(DFN,.AGINS)
  1. .E D @FINDCALL
  1. ;NEW SPECS TO BE IN NEXT VERSION OR PATCH
  1. ;OVERRIRDE EDITCHECK DEPNEDING ON SOME OTHER FIELD E.G. IN INSURER FILE FIELD
  1. ;'MEDICAID RATE CODE REQUIRED
  1. S MISSING=$$CHKAGINS(15,31,"","9,1")
  1. K FORMAT
  1. K AGINS,FORMAT
  1. Q MISSING
  1. ;EDIT CHECK #32 - PATIENT BENEFITS INCOMPLETE
  1. PATBENIN(DFN,FINDCALL) ;EP
  1. N X,SEQ,MISSING,AGINS
  1. Q:'DFN 1
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. I '$$CURRUPD^AGEDERR2(DFN,1095) Q 0
  1. I '$$HASELIG^AGEDERR2(DFN) Q 0
  1. Q:FINDCALL'="FINDPVT" 0 ;THIS EDIT CHECK ONLY FOR PRIVATE INSURANCE
  1. ;IF SELECTION IS DEFINED WE'RE COMING FROM AGED4A AND THE USER HAS
  1. ;SELECTED AN INSURER FROM THE AGINS ARRAY
  1. I $G(AGSELECT)'="" S AGINS(1)=AGSELECT
  1. E D
  1. .;USER HAS NOT SELECTED FROM AGED4A SO LETS CREATE OUR OWN AGINS
  1. .;ARRAY BASED ON VALUE OF 'FINDCALL'
  1. .I FINDCALL'="" S FINDCALL=FINDCALL_U_"AGINS("_DFN_")"
  1. .S SEL=0
  1. .I FINDCALL="" D FINDALL(DFN,.AGINS)
  1. .E D @FINDCALL
  1. S MISSING=$$CHKAGINS(26,32,"",9)&$$CHKAGINS(27,32,"",9) Q:MISSING MISSING
  1. S MISSING=$$CHKAGINS(28,32,"",9)!$$CHKAGINS(29,32,"",9) Q:MISSING MISSING
  1. K AGINS
  1. Q MISSING
  1. ;EDIT CHECK #33 - INSURER SEQUENCING REQUIRED
  1. ;ALSO LOCATED IN ^AGUTILS
  1. SEQMAN(SITE) ;EP
  1. ;NEW SPECS REC'D 1/20/05
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. I '$$CURRUPD^AGEDERR2(DFN,1095) Q 0
  1. I '$$HASELIG^AGEDERR2(DFN) Q 0
  1. I '$$FACCHK^AGEDERR2(DFN) Q 0
  1. ;Q $P($G(^AGFAC(SITE,21)),U)
  1. Q 1
  1. ;END NEW SPECS
  1. ;EDIT CHECK # 34 - PATIENT CASE OPEN TO BENEFITS COORDINATOR
  1. ;RETURNS TRUE IF PATIENT HAS AN OPEN CASE
  1. PATREFBC(DFN) ;EP
  1. ;NEW SPECS REC'D 1/20/05
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. I '$$CURRUPD^AGEDERR2(DFN,1095) Q 0
  1. I '$$HASELIG^AGEDERR2(DFN) Q 0
  1. ;END NEW SPECS
  1. N X
  1. S X=$O(^AUPNBENR("B",DFN,""))
  1. Q:X="" 0
  1. S SUBREC=0,MISSING=0
  1. F S SUBREC=$O(^AUPNBENR(X,11,SUBREC)) Q:+SUBREC=0 D Q:MISSING
  1. .S CASEREC=$G(^AUPNBENR(X,11,SUBREC,0))
  1. .S Y=$P(CASEREC,U) D DD^%DT S DTREF=Y
  1. .S MISSING=$P(CASEREC,U,7)="O"!($P(CASEREC,U,7)="") Q:MISSING
  1. Q MISSING_U_$$ERRDATA(34)_"|"_$G(DTREF)
  1. ;EDIT CHECK # 35 - MOTHER AND FATHER'S EMPLOYER DATA MISSING
  1. ;IF PATIENT IS A MINOR
  1. ;RETURNS TRUE IF BOTH MISSING
  1. PAREMPL(DFN) ;EP
  1. Q:'DFN 1
  1. ;NEW SPECS REC'D 1/20/05
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. I '$$CURRUPD^AGEDERR2(DFN,1095) Q 0
  1. I '$$HASELIG^AGEDERR2(DFN) Q 0
  1. ;END NEW SPECS
  1. Q:'$$ISMINOR(DFN) 0
  1. N X
  1. S X=$G(^AUPNPAT(DFN,27))
  1. Q:'$P(X,U)&('$P(X,U,2)) 1
  1. Q 0
  1. ;EDIT CHECK #36
  1. ;FOLLOWING CHECK ONLY APPLIES TO RAILROAD, MEDICAID AND MEDICARE NAME
  1. PHNAME(DFN,FINDCALL) ;EP
  1. N X,SEQ,MISSING,AGINS
  1. Q:DFN="" 1
  1. Q:FINDCALL="FINDMCD" 0 ;DOES NOT APPLY TO MEDICAID AG*7.1*1 IM19436
  1. S MISSING=0
  1. ;NEW SPECS REC'D 1/20/05
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. I '$$CURRUPD^AGEDERR2(DFN,1095) Q 0
  1. I '$$HASELIG^AGEDERR2(DFN) Q 0
  1. ;END NEW SPECS
  1. ;IF SELECTION IS DEFINED WE'RE COMING FROM AGED4A AND THE USER HAS
  1. ;SELECTED AN INSURER FROM THE AGINS ARRAY
  1. ;I $G(AGSELECT)'="" S AGINS(1)=AGSELECT
  1. ;E D
  1. ;.;USER HAS NOT SELECTED FROM AGED4A SO LETS CREATE OUR OWN AGINS
  1. ;.;ARRAY BASED ON VALUE OF 'FINDCALL'
  1. ;.I FINDCALL'="" S FINDCALL=FINDCALL_U_"AGINS("_DFN_")"
  1. ;.S SEL=0
  1. ;.I FINDCALL="" F FINDCALL="FINDMCR","FINDMCD","FINDRRE" S FINDCALL=FINDCALL_U_"AGINS("_DFN_")" D @FINDCALL
  1. ;.E D @FINDCALL
  1. ;CHECK TO SEE IF MCR NAME, MCD NAME, RR NAME EXISTS
  1. ;S MISSING=$$CHKAGINS(8,36,"","9,1") Q:MISSING MISSING
  1. ;CHECK TO SEE IF MCR NAME, MCD NAME, RR NAME IS IN CORRECT FORMAT
  1. ;S MISSING=$$CHKAGINS(8,36,"D NAME^AUPNPED S X=$G(X)=""""","9,1")
  1. ;K AGINS
  1. ;Q MISSING
  1. ;I $G(AGSELECT)'="" S AGINS(1)=AGSELECT S MISSING=$$PHNMCHK(.AGINS) Q MISSING
  1. ;BUG POINTED OUT BY ADRIAN DURING PATCH 1 TESTING
  1. I $G(AGSELECT)'="" Q:$P(AGSELECT,U,10)'="R"&($P(AGSELECT,U,10)'="D") 0 S AGINS(1)=AGSELECT S MISSING=$$PHNMCHK(.AGINS) Q MISSING
  1. E D
  1. .;USER HAS NOT SELECTED FROM AGED4A SO LETS CREATE OUR OWN AGINS
  1. .;ARRAY BASED ON VALUE OF 'FINDCALL'
  1. .I FINDCALL'="" S FINDCALL=FINDCALL_U_"AGINS("_DFN_")"
  1. .S SEL=0
  1. .;I FINDCALL="" F FINDCALL="FINDMCR","FINDMCD","FINDRRE" S FINDCALL=FINDCALL_U_"AGINS("_DFN_")" D @FINDCALL Q:MISSING
  1. .I FINDCALL="" F FINDCALL="FINDMCR","FINDRRE" S FINDCALL=FINDCALL_U_"AGINS("_DFN_")" D @FINDCALL Q:MISSING ;AG*7.1*1 IM19436
  1. .E D @FINDCALL
  1. .;CHECK TO SEE IF MCR NAME, MCD NAME, RR NAME EXISTS
  1. . S MISSING=$$PHNMCHK(.AGINS)
  1. K AGINS
  1. Q MISSING
  1. PHNMCHK(AGINS) ;EP
  1. ;CHECK TO SEE IF THE NAME IS POPULATED
  1. S MISSING=$$CHKAGINS(8,36,"","9,1") Q:MISSING MISSING
  1. ;CHECK TO SEE IF MCR NAME, MCD NAME, RR NAME IS IN CORRECT FORMAT
  1. S MISSING=$$CHKAGINS(8,36,"D NAME^AUPNPED S X=$G(X)=""""","9,1")
  1. Q MISSING
  1. ;NO ERROR # ASSIGNED AT THIS TIME
  1. CHKDEATH(DFN) ;EP - CHECK IF DATE OF DEATH FIELD IS POPULATED
  1. I $P($G(^DPT(DFN,.35)),U) Q 1
  1. Q 0
  1. ;IS PATIENT A MINOR <18
  1. ISMINOR(DFN) ;EP - CHECK IF PATIENT IS A MINOR AGE PER SANDRI LAHI
  1. Q:'DFN 1
  1. ;NEW SPECS REC'D 1/20/05
  1. I $$DECEASED^AGEDERR2(DFN) Q 0
  1. I '$$PTACTIVE^AGEDERR2(DFN) Q 0
  1. I '$$CURRUPD^AGEDERR2(DFN,1095) Q 0
  1. I '$$HASELIG^AGEDERR2(DFN) Q 0
  1. ;END NEW SPECS
  1. S D0=DFN
  1. X $P($G(^DD(2,.033,0)),U,5,299)
  1. Q X<18 ;HARD CODED PER SANDRI LAHI
  1. ;BUILD AGINS ARRAY CALLING ALL FIND TAGS WITHIN ROUTINE AGINS
  1. FINDALL(DFN,AGINS) ;EP
  1. N SEL
  1. S SEL=0
  1. F FINDCALL="FINDMCR","FINDMCD","FINDRRE","FINDPVT","FINDTPL","FINDWC","FINDGUAR" D
  1. .;DO NOT DO CALLS TO WORKMAN'S COMP OR THIRD PARTY OR GURANTOR WHEN VERSION NOT 7.1
  1. .Q:($G(AGOPT("VERSION"))<7.1)&((FINDCALL="FINDTPL")!(FINDCALL="FINDWC")!(FINDCALL="FINDGUAR"))
  1. .S FINDCALL=FINDCALL_U_"AGINS("_DFN_")"
  1. .D @FINDCALL
  1. Q
  1. ;CALL WHEN CHECKING THE AGINS ARRAY FOR SOMETHING MISSING
  1. ;PASS THE 'ERROR' NUMBER THIS IS CHECKING
  1. ;PASS THE 'PIECE' IN THE AGINS ARRAY NODE YOUR CHECKING FOR MISSING
  1. ;DATA RETURNS TRUE IF THE PIECE IS MISSING IN ANY NODE OF THE AGINS
  1. ;ARRAY PLUS THE ERROR INFO. IF YOU ARE CHECKING FOR A PATTERN ETC
  1. ;SEND IT AS 'FORMAT' ELSE THE CHECK IS ONLY FOR MISSING DATA.
  1. ;'RETPIECE' IS THE PIECES OF INFO YOU WANT RETURNED IF THE DATA IS
  1. ;MISSING OR IMPROPERLY FORMATTED (USED TO HELP IDENTIFY WHERE TO
  1. ;CORRECT THE DATA)\ 'FORMAT'- SEND AS XECUTABLE M CODE THAT RETURNS
  1. ;X AS TRUE IF WRONG PATTERN OR INCORRECT IN SOME WAY
  1. CHKAGINS(PIECE,ERROR,FORMAT,RETPIECE) ;EP
  1. S RETPIECE=$G(RETPIECE)
  1. N SEQ,MISSING,X
  1. S SEQ=0,MISSING=0
  1. F S SEQ=$O(AGINS(SEQ)) Q:SEQ="" D Q:MISSING
  1. .;DO NOT CHECK FOR ERRORS ON INSURANCE THAT IS INACTIVE NEW SPECS REC'D 1/20/05
  1. .;ERROR 18 IS CHECKED REGARDLESS OF WHETHER THE POLICY IS INACTIVE OR NOT
  1. .;PER ADRIAN 2/4/2005
  1. .;ALMOST TIME TO ADD A CALL FOR "ERROR OVERRIDES"
  1. .I ERROR'=18 Q:'$$ISACTIVE^AGINS($P(AGINS(SEQ),U,5),$P(AGINS(SEQ),U,6))
  1. .;END NEW SPECS REC'D 1/20/05
  1. .;NEW REQUEST OF APRIL 15,2005 PER ADRIAN
  1. .;CHECK TO SEE IF OVERRIDES EXIST IN THE 'AG PATIENT REGISTRATION ERROR CODES
  1. .;FILE FOR A PARTICULAR ERROR
  1. .I $$OVERRIDE(ERROR,AGINS(SEQ)) S MISSING=0 Q
  1. .I FORMAT="" S MISSING=$P(AGINS(SEQ),U,PIECE)=""
  1. .E S X=$P(AGINS(SEQ),U,PIECE) X FORMAT S MISSING=X
  1. .S:MISSING MISSING=MISSING_U_$$ERRDATA(ERROR)
  1. I MISSING F P=1:1 Q:$P(RETPIECE,",",P)="" S RET=$P(RETPIECE,",",P) S MISSING=MISSING_"|"_$P(AGINS(SEQ),U,RET)
  1. Q MISSING
  1. ;
  1. OVERRIDE(ERROR,RECORD) ;
  1. N OVERRIDE,RETURN
  1. Q:$G(^AGEDERRS(ERROR,12))="" 0
  1. X $G(^AGEDERRS(ERROR,12))
  1. Q RETURN
  1. ;CALL THIS WITH ERROR NUMBERS YOU WISH TO CHECK IN FOLLOWING
  1. ;MANNER. 'ERRORS' IS AN ARRAY DEFINED WITH THE FIRST SUBSCRIPT
  1. ;EQUAL TO THE ERROR NUMBER YOU WISH TO CHECK. YOU CAN CHECK
  1. ;MULTIPLE ERRORS. PASS IN ARRAY(1)="" TO CHECK ERROR #1
  1. ;'VARS' IS AN ARRAY OF VALUES IN THE FORM VAR("DFN")=3456 THE
  1. ;SUBSCRIPT IN THE ARRAY SHOULD MATCH THE VARIABLE NAME OF THE
  1. ;ERROR CALL I.E. DFN,SITE,FINDCALL ARE ALL POSSIBLE SUBSCRIPTS
  1. ;TO SET VARIABLES USED TO PASS INFO TO THE FUNCTIONS
  1. ;PASS 'DISPLAY' AS TRUE IF YOU WANT THIS ROUTINE TO DISPLAY THE
  1. ;ERRORS
  1. EDITCHEK(ERRORS,VARS,DISPLAY) ;EP
  1. ;LOAD VARIABLES
  1. S VAR=""
  1. F S VAR=$O(VARS(VAR)) Q:VAR="" N @VAR S X1="@VAR=VARS(VAR)",@X1
  1. S ERRORNUM=0
  1. F S ERRORNUM=$O(ERRORS(ERRORNUM)) Q:ERRORNUM="" D
  1. .S AGERRCAL=$P($G(^AGEDERRS(ERRORNUM,0)),U,4,5)
  1. .I $P(AGERRCAL,U)=""!($P(AGERRCAL,U,2)="") S ERRORS(ERRORNUM)="0^Routine or tag not defined." Q
  1. .S AGERNODE=$G(^AGEDERRS(ERRORNUM,0))
  1. .S AGERRTYP=$P($G(^AGEDERRS(ERRORNUM,0)),U,2)
  1. .S AGERRMSG=$P($G(^AGEDERRS(ERRORNUM,0)),U,3)
  1. .S AGERRSOL=$$GET1^DIQ(9009061.5,ERRORNUM,501,"Z","AGERRSOL","ERRMSG")
  1. .I 1 D
  1. ..S AGERRCAL="S MISSING=$$"_AGERRCAL
  1. ..X AGERRCAL
  1. ..I MISSING S ERRORS(ERRORNUM)=MISSING M ERRORS(ERRORNUM,"SOLUTION")=AGERRSOL S ERRORS("C",AGERRTYP,ERRORNUM)=""
  1. ..E S ERRORS(ERRORNUM)=0
  1. I DISPLAY D DISPLAY(.ERRORS)
  1. Q
  1. DISPLAY(ERRORS) ;EP
  1. N ERRNUM,ERRTYPE,ERRNODE,TRUE,X
  1. S ERRNUM=""
  1. F S ERRNUM=$O(ERRORS(ERRNUM)) Q:'ERRNUM D
  1. .S ERRNODE=ERRORS(ERRNUM)
  1. .S TRUE=$P(ERRNODE,U)
  1. .Q:'TRUE
  1. .I $P(ERRNODE,U,2)="" S ERRNODE=ERRNODE_U_$$ERRDATA(ERRNUM)
  1. .S ERRCODE=$P(ERRNODE,U,2)
  1. .S ERRTYPE=$P(ERRNODE,U,3)
  1. .S ERRMESG=$P($P(ERRNODE,U,4),"|")
  1. .S ERRINFO=$P(ERRNODE,"|",2,10)
  1. .I ERRMESG[("#") D
  1. ..S ERRMESG=$P(ERRMESG,"#")_ERRINFO_$P(ERRMESG,"#",2)
  1. .I ERRTYPE="E" W $$S^AGVDF("RVN")
  1. .W !,"***"_$S(ERRTYPE="E":"ERROR",ERRTYPE="W":"WARNING",ERRTYPE="F":"FATAL ERROR",ERRTYPE="A":"ALERT",1:"UNKNOWN")
  1. .S X=ERRCODE
  1. .S X="000"_X
  1. .W ?11,$E(X,$L(X)-2,$L(X))_":"
  1. .W ?16,ERRMESG
  1. .I ERRTYPE="E" W $$S^AGVDF("RVF")
  1. Q
  1. ;RETURN ARRAY OF EDIT CHECSK TO PERFORM BASED ON PAGE NUMBER
  1. FETCHERR(PAGENUM,ARRAY) ;EP
  1. N ERRNUM
  1. I PAGENUM="ALL"!(PAGENUM="") D Q
  1. .S ERRNUM=0
  1. .F S ERRNUM=$O(^AGEDERRS(ERRNUM)) Q:'ERRNUM!(ERRNUM=999) S ARRAY(ERRNUM)=""
  1. S ERRNUM=0
  1. F S ERRNUM=$O(^AGEDERRS("AB",PAGENUM,ERRNUM)) Q:ERRNUM="" S ARRAY(ERRNUM)=""
  1. Q
  1. ;VERIFY ROUTINE AND TAG ARE VALID
  1. CHECKRTN(ERRCALL) ;EP
  1. S X=$P(ERRCALL,U,2)
  1. X ^%ZOSF("TEST")
  1. Q $T
  1. ;RETURN ERROR DATA
  1. ERRDATA(ERR) ;EP
  1. Q $P($G(^AGEDERRS(ERR,0)),U,1,3)
  1. ;ERROR #?? NOT USED AT THIS TIME
  1. ;CLASSIFICATION/BENEFICIARY STATUS INDICATES NON-INDIAN
  1. ;RETURNS TRUE IF NON-INDIAN
  1. NONIND(DFN) ;EP
  1. N CLASS,CLASSNAM
  1. Q:DFN="" 1
  1. S CLASS=$P($G(^AUPNPAT(DFN,11)),U,11)
  1. Q:'CLASS 0
  1. S CLASSNAM=$P($G(^AUTTBEN(CLASS,0)),U)
  1. Q CLASSNAM[("NON-INDIAN")
  1. ;CHECK GUARANTOR ADDRESS
  1. GUARADD(GUARINFO) ;EP
  1. N MISSING
  1. Q:GUARINFO="" 1
  1. S MISSING=0
  1. S GUARPTR=U_$P(GUARINFO,U,14)
  1. I GUARPTR[("AUTNINS")!(GUARPTR[("AUTNEMPL")) D Q MISSING
  1. .S X=$G(@GUARPTR)
  1. .S MISSING=X="" Q:MISSING
  1. .S MISSING=$P(X,U,2)="" Q:MISSING
  1. .S MISSING=$P(X,U,3)="" Q:MISSING
  1. .S MISSING=$P(X,U,4)="" Q:MISSING
  1. .S MISSING=$P(X,U,5)="" Q:MISSING
  1. I GUARPTR[("AUPNPAT") D Q MISSING
  1. .S DPTPTR=$P($P(GUARINFO,U,2),",")
  1. .S:DPTPTR="" MISSING=1 Q:MISSING
  1. .S GUARPTR="^DPT("_DPTPTR_",.11)"
  1. .S X=$G(@GUARPTR)
  1. .S MISSING=X="" Q:MISSING
  1. .S MISSING=$P(X,U)="" Q:MISSING
  1. .S MISSING=$P(X,U,4)="" Q:MISSING
  1. .S MISSING=$P(X,U,5)="" Q:MISSING
  1. .S MISSING=$P(X,U,6)="" Q:MISSING
  1. Q MISSING