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

AGGWVAL.m

Go to the documentation of this file.
  1. AGGWVAL ;VNGT/HS/ALA-AGG Window Validation Program ; 07 Apr 2010 7:05 PM
  1. ;;1.0;PATIENT REGISTRATION GUI;;Nov 15, 2010
  1. ;
  1. ;
  1. VAL(DATA,VFILE,PARMS) ;EP -- AGG WINDOW DATA VALIDATION
  1. ;
  1. ;Input
  1. ; VFILE - The vfile number or name
  1. ; PARMS - The parameters being checked for validation
  1. ;
  1. NEW UID,II,BQ,LIST,BN,PDATA,NAME,VALUE,HDR,CODN,VALID,VALFLD,BI,VFLD,TYPE,X,RESULT
  1. NEW VFIEN,MSG,HNDLR,IEN,CODE,REVAL
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S DATA=$NA(^TMP("AGGWVAL",UID))
  1. K @DATA
  1. S II=0,MSG=""
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^AGGWVAL D UNWIND^%ZTER" ; SAC 2006 2.2.3.3.2
  1. S VFILE=$G(VFILE,"") I VFILE="" S BMXSEC="RPC Failed: No Window selected" Q
  1. S VFIEN=$O(^AGG(9009068.3,"B",VFILE,""))
  1. S FILE=$P(^AGG(9009068.3,VFIEN,0),U,2)
  1. ;
  1. S @DATA@(II)="I00010RESULT^T00100MSG^T00001HANDLER^I00010IEN^T00008CODE^T00100REVALIDATE"_$C(30)
  1. ; Get list of parameters
  1. S PARMS=$G(PARMS,"")
  1. I PARMS="" D
  1. . S LIST="",BN=""
  1. . F S BN=$O(PARMS(BN)) Q:BN="" S LIST=LIST_PARMS(BN)
  1. . K PARMS
  1. . S PARMS=LIST
  1. . K LIST
  1. ;
  1. I PARMS="" S II=II+1,@DATA@(II)="1^"_$G(MSG)_U_$G(HNDLR)_U_$G(IEN)_U_$G(CODE)_U_$G(REVAL)_$C(30) G DONE
  1. ; Parse parameters
  1. F BQ=1:1:$L(PARMS,$C(28)) D Q:$G(BMXSEC)'=""
  1. . S PDATA=$P(PARMS,$C(28),BQ) Q:PDATA=""
  1. . S NAME=$P(PDATA,"=",1),VALUE=$P(PDATA,"=",2,99)
  1. . I NAME["{"!(NAME["}") S NAME=$$STRIP^XLFSTR(NAME,"{}")
  1. . S @NAME=VALUE
  1. . ; If value is DFN, it exists at the PCC Visit level not individual
  1. . ; V File level.
  1. . I VFILE'=9000010&(NAME="DFN"!(NAME="APCDDATE")) Q
  1. . S CODN=$O(^AGG(9009068.3,VFIEN,10,"AC",NAME,""))
  1. . I CODN="" S BMXSEC="RPC Failed: Parameter does not exist for this Window" Q
  1. . I $G(VALID)="" S VALID=$P($G(^AGG(9009068.3,VFIEN,10,CODN,2)),U,2)
  1. . I $G(VALFLD)="" S VALFLD=$P($G(^AGG(9009068.3,VFIEN,10,CODN,2)),U,1)
  1. ;
  1. ; Check that values exist for all fields needed for the validation
  1. F BI=1:1:$L(VALFLD,";") S VFLD=$P(VALFLD,";",BI) D
  1. . I VFLD["*" S VFLD=$$STRIP^XLFSTR(VFLD,"*") Q
  1. . I VFLD["{"!(VFLD["}") S VFLD=$$STRIP^XLFSTR(VFLD,"{}") Q
  1. . I $G(@VFLD)="" S BMXSEC="RPC Failed: Missing validation value for "_VFLD
  1. I $G(BMXSEC)'="" Q
  1. ;
  1. S VALID=$TR(VALID,"~","^"),RESULT=0
  1. ; Execute the validation tag
  1. D @VALID
  1. S II=II+1,@DATA@(II)=RESULT_U_$G(MSG)_U_$G(HNDLR)_U_$G(IEN)_U_$G(CODE)_U_$G(REVAL)_$C(30)
  1. ; Clean up validation variables
  1. F BI=1:1:$L(VALFLD,";") D
  1. . S VFLD=$P(VALFLD,";",BI),VFLD=$$STRIP^XLFSTR(VFLD,"*"),VFLD=$$STRIP^XLFSTR(VFLD,"+"),VFLD=$$STRIP^XLFSTR(VFLD,"{}")
  1. . K @VFLD
  1. ;
  1. DONE ;
  1. S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. NEW Y,ERRDTM
  1. S Y=$$NOW^XLFDT() X ^DD("DD") S ERRDTM=Y
  1. S BMXSEC="Recording that an error occurred at "_ERRDTM
  1. I $D(II),$D(DATA) S II=II+1,@DATA@(II)=$C(31)
  1. Q
  1. ;
  1. SSN(ASSN,DFN) ;EP - SSN
  1. ;I $G(ASSN)="",$G(NOSSN)="",$$ISREQ^AGGUL2(2,"SSN") S RESULT=-1,MSG="Enter a SSN or a Reason for No SSN" Q
  1. ;
  1. NEW DGY,AGGL,VERIFY
  1. S VERIFY=0,RESULT=1
  1. I +$G(DFN)=0,$G(ASSN)="" S RESULT=1 Q
  1. I $G(ASSN)'="",$L(ASSN)<9 S RESULT=-1,MSG="SSN should be 9 characters" Q
  1. I +$G(DFN)'=0,$P(^AUPNPAT(DFN,0),U,23)]"" D
  1. . I $D(^AUTTSSN($P(^AUPNPAT(DFN,0),U,23),0)) D
  1. .. I "V"[$P(^AUTTSSN($P(^AUPNPAT(DFN,0),U,23),0),U) S VERIFY=1
  1. I VERIFY S RESULT=-1,MSG="The SSN has been verified by the SSA and cannot be edited." Q
  1. I $G(ASSN)'="" D Q
  1. . S DGY=$O(^DPT("SSN",ASSN,0)) I DGY="" S RESULT=1 Q
  1. . I DGY>0,DGY'=DFN,$D(^DPT(DGY,0)) S RESULT=-1,MSG="SSN already used by another patient." Q
  1. I $E(ASSN,1,1)=9 S RESULT=-1,MSG="The SSN must not begin with 9" Q
  1. I $E(ASSN,1,3)="000",$E(ASSN,1,5)'="00000" S RESULT=-1,MSG="First three digits cannot be zeros." Q
  1. ;
  1. S RESULT=1
  1. Q
  1. ;
  1. NOSSN(NOSSN,ASSN,DFN) ;EP
  1. I $G(ASSN)="",$G(NOSSN)="",$$ISREQ^AGGUL2(2,"SSN") S RESULT=-1,MSG="Enter a SSN or a Reason for No SSN" Q
  1. I $G(ASSN)="",$G(NOSSN)'="" S RESULT=1 Q
  1. I $G(ASSN)'="",$G(NOSSN)'="" S RESULT=-1,MSG="Enter a SSN or a Reason for No SSN. You cannot enter both." Q
  1. Q
  1. ;
  1. HRN(HRN,DFN) ;EP - HRN
  1. NEW EDFN,LC
  1. S EDFN=$O(^AUPNPAT("D",HRN,""))
  1. I EDFN="" S RESULT=1 Q
  1. I EDFN=DFN S RESULT=1 Q
  1. S LC=0
  1. S LC=$O(^AUPNPAT("D",HRN,EDFN,LC))
  1. ; If the location of the patient with the existing same HRN is not the same location
  1. I LC'=DUZ(2) S RESULT=1 Q
  1. S RESULT=-1,MSG="HRN "_HRN_" is already assigned to patient "_$S($P($G(^DPT(EDFN,0)),U)'="":$P($G(^DPT(EDFN,0)),U),1:"UNDEFINED RECORD")
  1. Q
  1. ;
  1. IBQ(X,DFN,TBQ,AGGPTCLB) ;EP - Indian Blood Quantum
  1. N RTN,CLBEN
  1. ;
  1. ;Skip check if classification/beneficiary is not Indian/Alaskan Native
  1. S CLBEN=$O(^AUTTBEN("B","INDIAN/ALASKA NATIVE","")) ;Get Classification IEN
  1. I AGGPTCLB]"",AGGPTCLB'=CLBEN S RESULT=1,MSG="" Q
  1. ;
  1. D
  1. . I $L(TBQ)>11!($L(TBQ)<1) K TBQ Q
  1. . I "NF"[$E(TBQ) S TBQ=$S($E(TBQ)="F":"FULL",1:"NONE") Q
  1. . I $E(TBQ)'?1N&(($E(TBQ,1,3)'="UNK")&($E(TBQ,1,3)'="UNS")) K TBQ Q
  1. . I $E(TBQ)="U" S TBQ=$S($E(TBQ,3)="K":"UNKNOWN",1:"UNSPECIFIED") Q
  1. . I TBQ'?1.4N1"/"1.5N K TBQ Q
  1. . I $P(TBQ,"/",1)>$P(TBQ,"/",2)!(+$P(TBQ,"/",2)=0) K TBQ Q
  1. . S:$P(TBQ,"/",1)=$P(TBQ,"/",2) TBQ="FULL" Q
  1. ;
  1. D
  1. . I $L(X)>11!($L(X)<1) K X Q
  1. . I "NF"[$E(X) S X=$S($E(X)="F":"FULL",1:"NONE") Q
  1. . I $E(X)'?1N&(($E(X,1,3)'="UNK")&($E(X,1,3)'="UNS")) K X Q
  1. . I $E(X)="U" S X=$S($E(X,3)="K":"UNKNOWN",1:"UNSPECIFIED") Q
  1. . I X'?1.4N1"/"1.5N K X Q
  1. . I $P(X,"/",1)>$P(X,"/",2)!(+$P(X,"/",2)=0) K X Q
  1. . S:$P(X,"/",1)=$P(X,"/",2) X="FULL" Q
  1. ;
  1. S RESULT=1
  1. ;
  1. ;Set up fields to revalidate
  1. S REVAL="AGGPTELG;AGGPTCLB;AGGPTTRI;AGGPTTRQ"
  1. ;
  1. I $G(X)="" S RESULT=-1,MSG="Entry not valid" Q
  1. I $G(TBQ)="" Q
  1. ;
  1. ;Basic Quantum checks
  1. I RESULT=1,"UNKNOWN,NONE,UNSPECIFIED"[X,"UNKOWN,NONE,UNSPECIFIED"'[TBQ D
  1. . S MSG="Quantums are Inconsistent",RESULT=-1,CODE="AGGPTBLQ"
  1. ;
  1. I RESULT=1,TBQ="FULL",X'="FULL" D
  1. . S MSG="Quantums are Inconsistent",RESULT=-1,CODE="AGGPTBLQ"
  1. ;
  1. ;Check to see if main tribal quantum is greater than blood quantum
  1. I RESULT=1,$P($G(^AGFAC(DUZ(2),0)),U,2)="Y" S RTN=$$QUANT^AGGUL2(X,TBQ,0) I $P(RTN,U)=-1 S MSG="The Tribal Quantum cannot be greater than the Indian Blood Quantum",RESULT=-1
  1. Q
  1. ;
  1. TBQ(X,DFN,IBQ,AGGPTCLB) ;EP - Tribal Blood Quantum
  1. D TBQ^AGGWVAL1(X,DFN,IBQ,AGGPTCLB)
  1. Q
  1. ;
  1. OTQ(X) ;EP - Other Tribe Quantum
  1. D
  1. . I $L(X)>11!($L(X)<1) K X Q
  1. . I "NF"[$E(X) S X=$S($E(X)="F":"FULL",1:"NONE") Q
  1. . I $E(X)'?1N&(($E(X,1,3)'="UNK")&($E(X,1,3)'="UNS")) K X Q
  1. . I $E(X)="U" S X=$S($E(X,3)="K":"UNKNOWN",1:"UNSPECIFIED") Q
  1. . I X'?1.4N1"/"1.5N K X Q
  1. . I $P(X,"/",1)>$P(X,"/",2)!(+$P(X,"/",2)=0) K X Q
  1. . S:$P(X,"/",1)=$P(X,"/",2) X="FULL" Q
  1. ;
  1. I $G(X)="" S RESULT=-1,MSG="Entry not valid" Q
  1. S RESULT=1
  1. Q
  1. ;
  1. DELIP(CHOICE,RECORD) ;EP - Delete insurance policy
  1. N IN3PB
  1. S IN3PB=$$USED^AGUTILS(CHOICE,"",8,RECORD)
  1. I $L(IN3PB) D Q
  1. .S RESULT=-1,MSG="WARNING: This member has outstanding claims and/or bills!!!"
  1. .S MSG=MSG_" Deleting this member may cause data integrity problems"
  1. .S MSG=MSG_" in the Third Party Billing package!!"
  1. NEW DA,IENS,REL
  1. S DA(1)=CHOICE,DA=RECORD,IENS=$$IENS^DILF(.DA)
  1. S REL=$$GET1^DIQ(9000006.11,IENS,.05,"E")
  1. I REL="SELF" D Q
  1. . S RESULT=-1,MSG="THIS IS THE POLICY HOLDER. IF YOU DELETE THE POLICY HOLDER"
  1. . S MSG=MSG_" THE PRIVATE INSURANCE ELIGIBILITIES OF ALL MEMBERS OF THIS"
  1. . S MSG=MSG_" POLICY WILL BE DELETED INCLUDING THE POLICY HOLDER"
  1. . S MSG=MSG_" DO YOU REALLY WANT TO DO THIS?"
  1. S RESULT=1
  1. Q
  1. ;
  1. IMP(VALUE,AUPNDOB) ;EP - Imprecise date validation
  1. S RESULT=1,AUPNDOB=$G(AUPNDOB,"")
  1. I VALUE="B",AUPNDOB'="" S VALUE=AUPNDOB
  1. S VALUE=$$DATE^AGGUL1(VALUE)
  1. I VALUE="" S RESULT=-1,MSG="Invalid date" Q
  1. Q
  1. ;
  1. DRDTS(BDT,EDT) ;EP - Daily Reports Date Validation
  1. S RESULT=1
  1. I BDT="",EDT="" Q
  1. I '$D(DT) D DT^DICRW
  1. ; beginning date Check
  1. I BDT]"" D Q:(EDT="")!(RESULT=-1)
  1. . S BDT=$P($$DATE^AGGUL1(BDT),".")
  1. . I BDT="" S RESULT=-1,MSG="Must supply Beginning Date." Q
  1. . I BDT>DT S RESULT=-1,MSG="Do not use future dates." Q
  1. ; Ending date check
  1. I EDT]"" D Q:(BDT="")!(RESULT=-1)
  1. . S EDT=$P($$DATE^AGGUL1(EDT),".")
  1. . I EDT="" S RESULT=-1,MSG="Must supply Ending Date." Q
  1. . I EDT>DT S RESULT=-1,MSG="Do not use future dates." Q
  1. ; compare beginning and edning dates
  1. I BDT>EDT S RESULT=-1,MSG="INVALID ENTRY - The END is before the BEGINNING." Q
  1. Q
  1. ;
  1. VET(DFN,AGGPTVET) ;EP - Veteran validation
  1. NEW X,X1,X2,AGGPTDOB
  1. S RESULT=1
  1. I AGGPTVET="N" Q
  1. S AGGPTDOB=$P(^DPT(DFN,0),U,3)
  1. S X1=DT,X2=AGGPTDOB
  1. S X=$E(X1,1,3)-$E(X2,1,3)-($E(X1,4,7)<$E(X2,4,7))
  1. I X<17 S RESULT=-1,MSG="Applicant is TOO YOUNG to be a veteran...ONLY "_X_" YEARS OLD!!"
  1. Q
  1. ;
  1. MP(INSPTR,DFN) ; EP - for repeating insurers
  1. I $D(^AUPNPRVT("I",INSPTR,DFN)) S MSG="WARNING: If you proceed you will be ADDING an Insurer that the Patient already has an Eligibility Record for!"
  1. Q
  1. ;
  1. NAM(NAME) ; EP - Name validation
  1. NEW DG20NAME,X,ERROR
  1. S RESULT=1
  1. I NAME="" Q
  1. I NAME[", " S RESULT=-1,MSG="No space after the comma" Q
  1. S (DG20NAME,X)=NAME
  1. S (X,DG20NAME)=$$FORMAT^DPTNAME(.DG20NAME,3,35,,,.ERROR)
  1. S AE="",QFL=0
  1. F S AE=$O(ERROR(AE)) Q:AE="" D Q:QFL
  1. . I AE=1 S RESULT=-1,MSG="Name does not contain a comma",QFL=1 Q
  1. . S RESULT=-1,MSG="Name is not in correct format",QFL=1
  1. Q
  1. ;
  1. MAI(NAME) ; EP - Maiden name validation
  1. NEW DG20NAME,X,AE ;,ERROR
  1. S RESULT=1
  1. I NAME="" Q
  1. S (DG20NAME,X)=NAME
  1. S (X,DG20NAME)=$$FORMAT^DPTNAME(.DG20NAME,3,35,,2,.ERROR,1)
  1. S AE="",QFL=0
  1. F S AE=$O(ERROR(AE)) Q:AE="" D Q:QFL
  1. . I AE=1 S RESULT=-1,MSG="Name does not contain a comma",QFL=1 Q
  1. . S RESULT=-1,MSG="Name is not in correct format",QFL=1
  1. Q
  1. ;
  1. DOB(DOB) ; EP - Date of Birth Validation
  1. S RESULT=1
  1. I $G(DOB)="" Q
  1. S DOB=$$DATE^AGGUL1(DOB)
  1. I DOB<1701231 S RESULT=-1,MSG="Date must be later than 12/31/1870" Q
  1. I DOB>DT S RESULT=-1,MSG="Future dates not valid" Q
  1. Q
  1. ;
  1. DOD(DOD,DFN) ; EP - Date of Death validation
  1. S RESULT=1
  1. I $G(DOD)="" Q
  1. S DOD=$$DATE^AGGUL1(DOD)
  1. S DOB=$$GET1^DIQ(2,DFN_",",.03,"I") I DOB="" Q
  1. I DOD>DT S RESULT=-1,MSG="Future dates not valid" Q
  1. I DOD\1<DOB S RESULT=-1,MSG="Date cannot be before Date of Birth ("_$$FMTE^AGGUL1(DOB)_")" Q
  1. Q
  1. ;
  1. ELG(AGB,AGTP,AGQT,AGQI,AGEL) ; EP - Eligibility check
  1. D EN^AGGELCHK(AGB,AGTP,AGQT,AGQI,AGEL)
  1. S REVAL=""
  1. Q
  1. ;
  1. ELGS(AGB,AGTP,AGQT,AGQI,AGEL) ; EP - Eligibility check from Eligibility Status field
  1. S RESULT="",MSG="",CODE="",REVAL=""
  1. D EN^AGGELCHK(AGB,AGTP,AGQT,AGQI,AGEL)
  1. ;
  1. ;Determine whether to flag Eligibility Status field with an error
  1. ;Errors for other fields will be caught in revalidation
  1. I $G(RESULT)=-1,($G(CODE)="AGGPTCLB"!($G(CODE)="AGGPTTRI")) S RESULT=1,MSG="",CODE=""
  1. ;
  1. ;Set up fields to revalidate
  1. S REVAL="AGGPTCLB;AGGPTBLQ;AGGPTTRI;AGGPTTRQ"
  1. Q
  1. ;
  1. ELGC(AGB,AGTP,AGQT,AGQI,AGEL) ; EP - Eligibility check from Classification field
  1. S RESULT="",MSG="",CODE="",REVAL=""
  1. D EN^AGGELCHK(AGB,AGTP,AGQT,AGQI,AGEL)
  1. ;
  1. ;Determine whether to flag Classification field with an error
  1. ;Errors for other fields will be caught in revalidation
  1. I $G(RESULT)=-1,($G(CODE)="AGGPTELG"!($G(CODE)="AGGPTTRI")) S RESULT=1,MSG="",CODE=""
  1. ;
  1. ;Set up fields to revalidate
  1. S REVAL="AGGPTELG;AGGPTBLQ;AGGPTTRI;AGGPTTRQ"
  1. Q
  1. ;
  1. ELGT(AGB,AGTP,AGQT,AGQI,AGEL) ; EP - Eligibility check from Tribe of Membership field
  1. S RESULT="",MSG="",CODE="",REVAL=""
  1. D EN^AGGELCHK(AGB,AGTP,AGQT,AGQI,AGEL)
  1. ;
  1. ;Determine whether to flag Tribe of Membership field with an error
  1. ;Errors for other fields will be caught in revalidation
  1. I $G(RESULT)=-1,($G(CODE)="AGGPTCLB"!($G(CODE)="AGGPTELG")) S RESULT=1,MSG="",CODE=""
  1. ;
  1. ;Set up fields to revalidate
  1. S REVAL="AGGPTELG;AGGPTCLB;AGGPTBLQ;AGGPTTRQ"
  1. Q
  1. ;
  1. FM(AGGFTNME,AGGMTNME,DFN) ; EP = Family Member check
  1. NEW AGE
  1. S RESULT=1
  1. S AGE=$$AGE^AGGAGE(DFN)
  1. I AGE'<18 Q
  1. ;
  1. I $G(AGGFTNME)'="" D NAM(AGGFTNME) I RESULT'=1 Q
  1. I $G(AGGMTNME)'="" D NAM(AGGMTNME) I RESULT'=1 Q
  1. S REVAL="AGGFTEMN;AGGMTEMN;AGGFTNME;AGGMTNME"
  1. I $G(AGGFTNME)="",$G(AGGMTNME)="" S RESULT=-1,MSG="Minor must have either Father's name or Mother's name entered." Q
  1. Q
  1. ;
  1. FEMP(AGGFTEMN,AGGMTEMN,AGGFTNME,AGGMTNME,DFN) ; EP = Father's Employer check
  1. D FEMP^AGGWVAL1(AGGFTEMN,AGGMTEMN,AGGFTNME,AGGMTNME,DFN)
  1. Q
  1. ;
  1. MEMP(AGGMTEMN,AGGMTNME,AGGFTNME,AGGFTEMN,DFN) ; EP = Mother's Employer check
  1. D MEMP^AGGWVAL1(AGGMTEMN,AGGMTNME,AGGFTNME,AGGFTEMN,DFN)
  1. Q
  1. ;
  1. ROI(AGGPTROI) ; EP - Release of Information
  1. N RES
  1. S RESULT=1,MSG=""
  1. S RES=$$ROI^AGGALTRG(AGGPTROI) I $P(RES,U)=-1 S RESULT=-1,MSG=$P(RES,U,2)
  1. Q
  1. ;
  1. AOB(AOB) ;EP - Assignment of Benefits
  1. S RESULT=1,MSG=""
  1. S REVAL="AGGPTROI"
  1. I $$RQAOB^AGEDERR4(DUZ(2)),AOB="" S RESULT=-1,MSG="Assignment of Benefits is Required"
  1. Q
  1. ;
  1. ZIP(ZIP) ;EP - Zip Code Validation
  1. I $G(ZIP)="" S RESULT=1 Q
  1. S ZIP=$$STRIP^XLFSTR(ZIP,"-")
  1. I $L(ZIP)<5!($L(ZIP)>9) S RESULT=-1,MSG="Enter 5 or 9 digit zip code." Q
  1. I ZIP'?5N,(ZIP'?9N) S RESULT=-1,MSG="Enter numbers for zip code." Q
  1. S RESULT=1
  1. Q
  1. ;
  1. DTEMS(STRT,END) ; EP - Elig dates validation for Medicaid and Private Insurance
  1. D DTEMS^AGGARVAL(STRT,END)
  1. Q
  1. ;
  1. DTEME(END,STRT) ; EP
  1. D DTEME^AGGARVAL(END,STRT)
  1. Q
  1. ;
  1. DTMS(TRANSTYP,STRT,END) ; EP
  1. I TRANSTYP="A" S RESULT=1 Q
  1. D DTEMS^AGGARVAL(STRT,END)
  1. Q
  1. ;
  1. DTME(TRANSTYP,END,STRT) ; EP
  1. I TRANSTYP="A" S RESULT=1 Q
  1. D DTEME^AGGARVAL(END,STRT)
  1. Q
  1. ;
  1. HNUM(HNUM) ; EP
  1. S RESULT=1
  1. I $G(HNUM)="" Q
  1. I HNUM'?.N S RESULT=-1,MSG="Enter a number between 0 and 99" Q
  1. I HNUM<0!(HNUM>99) S RESULT=-1,MSG="Enter a number between 0 and 99"
  1. Q
  1. ;
  1. CERT(DCER) ; EP - Death Certificate
  1. S RESULT=1
  1. I $G(DCER)="" Q
  1. I $L(DCER)>8!($L(DCER)<6)!'(DCER?6.8N) S RESULT=-1,MSG="Death Certificate must be between 6 and 8 numbers only." Q
  1. Q