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

IVMPRECA.m

Go to the documentation of this file.
  1. IVMPRECA ;ALB/KCL,BRM,PJR,RGL,CKN,TDM,KUM - DEMOGRAPHICS MESSAGE CONSISTENCY CHECK ;7/06/24 11:16AM
  1. ;;2.0;INCOME VERIFICATION MATCH;**5,6,12,34,58,56,115,144,121,151,145,164,210,215**;21-OCT-94;Build 14
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. ; This routine will perform data validation checks on uploadable
  1. ; demographic fields received from the IVM Center to ensure they
  1. ; are accurate prior to their upload into DHCP.
  1. ;
  1. ;
  1. ; Called from routine IVMPREC6 before uploadable demographic fields
  1. ; are stored in DHCP.
  1. ;
  1. ;ICRs
  1. ; Reference to NAME,^DI(.85 in ICR #6062
  1. ;
  1. EN ; - Entry point to create temp array and perform msg consistency checks
  1. ;
  1. N DFN,IVMCNTY,IVMCR,IVMEG,IVMFLAG,IVMFLD,IVMNUM,IVMSTR,IVMSTPTR,X,IVMSEG
  1. N COMP,CNTR,NOPID,ADDRTYPE,ADDSEQ,TELESEQ,COMMTYPE,TCFLG,TMPARRY,PID3ARRY,CNTR2
  1. N MULTDONE
  1. K IVMRACE
  1. S IVMNUM=IVMDA ; 'current' line in ^HL(772,"IN",...
  1. S DODSEG=0 ;Initialize flag for DOD information
  1. S GUARSEG=0 ;Initialize flag for Guardian information
  1. ;
  1. ; - check the format of the HL7 demographic message
  1. D NEXT I $E(IVMSTR,1,3)'="PID" S HLERR="Missing PID segment" G ENQ
  1. S CNTR=1,NOPID=0,PIDSTR(CNTR)=$P(IVMSTR,HLFS,2,999)
  1. ;Handle wrapped PID segment
  1. F I=1:1 D Q:NOPID
  1. . D NEXT I $E(IVMSTR,1,4)="ZPD^" S NOPID=1 Q
  1. . S CNTR=CNTR+1,PIDSTR(CNTR)=IVMSTR
  1. D BLDPID^IVMPREC6(.PIDSTR,.IVMPID) ;Create IVMPID subscript by seq #
  1. ;convert "" to null for PID segment
  1. S CNTR="" F S CNTR=$O(IVMPID(CNTR)) Q:CNTR="" D
  1. . I $O(IVMPID(CNTR,"")) D Q
  1. . . S CNTR2="" F S CNTR2=$O(IVMPID(CNTR,CNTR2)) Q:CNTR2="" D
  1. . . . S IVMPID(CNTR,CNTR2)=$$CLEARF(IVMPID(CNTR,CNTR2),$E(HLECH))
  1. . I CNTR=11 S IVMPID(CNTR)=$$CLEARF(IVMPID(CNTR),$E(HLECH)) Q
  1. . I IVMPID(CNTR)=HLQ S IVMPID(CNTR)=""
  1. I $E(IVMSTR,1,3)'="ZPD" S HLERR="Missing ZPD segment" G ENQ
  1. S IVMSTR("ZPD")=$P(IVMSTR,HLFS,2,999)
  1. I $P(IVMSTR("ZPD"),HLFS,8)'="" S GUARSEG=1
  1. I $P(IVMSTR("ZPD"),HLFS,9)'="" S DODSEG=1
  1. D NEXT I $E(IVMSTR,1,3)="ZEL" S HLERR="ZEL segment should not be sent in Z05 message" G ENQ
  1. ;I $E(IVMSTR,1,3)="ZTA" D NEXT ;Skip ZTA -coming later
  1. I $E(IVMSTR,1,3)'="ZTA" S HLERR="Missing ZTA segment" G ENQ
  1. S IVMSTR("ZTA")=$P(IVMSTR,HLFS,2,999)
  1. ; IVM*2.0*164 - ADD LOGIC FOR ZAV SEGMENTS
  1. D NEXT
  1. S IVMSEG="" F S IVMSEG=$E(IVMSTR,1,3) Q:IVMSEG="ZGD" D
  1. . D NEXT
  1. ;
  1. ; D NEXT
  1. I $E(IVMSTR,1,3)'="ZGD" S HLERR="Missing ZGD segment" G ENQ
  1. S IVMSTR("ZGD")=$P(IVMSTR,HLFS,2,999)
  1. ;
  1. ; - perform field validation checks for PID segment
  1. M TMPARRY(3)=IVMPID(3) D PARSPID3^IVMUFNC(.TMPARRY,.PID3ARY)
  1. S DFN=$G(PID3ARY("PI")),ICN=$G(PID3ARY("NI"))
  1. K TMPARRY,PID3ARY
  1. I '$$MATCH^IVMUFNC(DFN,ICN,"","","I",.ERRMSG) S HLERR=ERRMSG G ENQ
  1. S IVMDFN=DFN ;Store DFN in temp variable to use later
  1. ;I IVMPID(19)'=$P(^DPT(DFN,0),"^",9) S HLERR="Couldn't match IVM SSN with DHCP SSN" G ENQ
  1. ;
  1. S X=IVMPID(7) I X]"",($$FMDATE^HLFNC(X)>DT) S HLERR="Date of Birth greater than current date" G ENQ
  1. ;
  1. S X=IVMPID(8) I X]"",X'="M",X'="F" S HLERR="Invalid code sent for Patient sex" G ENQ
  1. ;
  1. ; Marital Status
  1. S X=$G(IVMPID(16)) I (X'="")&(X'="D")&(X'="M")&(X'="W")&(X'="U")&(X'="A")&(X'="S") D G ENQ
  1. . S HLERR="Invalid code sent for Patient Marital Status" G ENQ
  1. ; Religion
  1. S X=$G(IVMPID(17)) I X'="" S X=$O(^DIC(13,"C",+X,"")) I X="" D G ENQ
  1. . S HLERR="Invalid code sent for Patient Religion"
  1. ; Ethnicity
  1. S X=$P($G(IVMPID(22)),$E(HLECH),4) I X]"" S X=$O(^DIC(10.2,"AHL7",X,"")) I X="" D G ENQ
  1. . S HLERR="Invalid code sent for Patient Ethnicity" G ENQ
  1. ;
  1. ; - if address - perform validation checks on addr fields
  1. ;Get all address from seq. 11 of PID segment
  1. I 'DODSEG,'GUARSEG D
  1. . D PID11 Q:$D(HLERR)
  1. . D PID10 Q:$D(HLERR)
  1. . D PID13
  1. G ENQ:$D(HLERR)
  1. ;
  1. ; - perform field validation check for ZPD and ZGD segment
  1. ; - I X]"" was changed to I X below for IVM*2*56
  1. S X=$P(IVMSTR("ZPD"),HLFS,9) I X,($$FMDATE^HLFNC(X)<$P($G(^DPT(+DFN,0)),"^",3))!($$FMDATE^HLFNC(X)>$$NOW^XLFDT) S HLERR="Invalid date of death" G ENQ
  1. ; IVM*2.0*210 - Validate Preferred Language
  1. S X=$P(IVMSTR("ZPD"),HLFS,46) I X="""""" S X=""
  1. S X=$TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  1. I X]"",+X'=888,+X'=999,'$$FIND1^DIC(.85,,"MX",X) S HLERR="Invalid Preferred Language" G ENQ
  1. ; IVM*2*121 - Added new check for ZGD
  1. N ZGD3
  1. S ZGD3=$P(IVMSTR("ZGD"),HLFS,3)
  1. S X=$P(IVMSTR("ZGD"),HLFS,2)
  1. I X=HLQ S HLERR="Invalid Guardian Type" G ENQ
  1. I X,X'=1 S HLERR="Invalid Guardian Type" G ENQ
  1. I X=1,((ZGD3=HLQ)!(ZGD3="")) S HLERR="Invalid Guardian Type" G ENQ
  1. ;
  1. ;
  1. ENQ ; - send acknowledgement (ACK) 'AE' msg to the IVM Center
  1. I $D(HLERR) D ACK^IVMPREC
  1. Q
  1. ;
  1. ;
  1. ADDRCHK ; - validate address fields sent by IVM Center
  1. N HLERRDEF
  1. ;I ADDRTYPE="N" D Q ;Birth City & State
  1. ;. I $P(X,$E(HLECH),3)']"" S HLERR="Invalid address - Missing birth city" Q
  1. ;. I $P(X,$E(HLECH),4)']"" S HLERR="Invalid address - Missing birth state abbreviation" Q
  1. ;. S IVMSTPTR=+$O(^DIC(5,"C",$P(X,$E(HLECH),4),0))
  1. ;. I 'IVMSTPTR S HLERR="Invalid birth state abbreviation" Q
  1. ;
  1. S HLERRDEF="Invalid "_$S(ADDRTYPE="CA":"Confidential ",1:"")_"address - "
  1. S CNTRY=$P(X,$E(HLECH),6) I CNTRY']"" S HLERR=HLERRDEF_"Missing Country" Q
  1. I '$$CNTRCONV^IVMPREC8(CNTRY) S HLERR=HLERRDEF_"Invalid Country" Q
  1. S FORFLG=$S(CNTRY="USA":0,1:1)
  1. I $P(X,$E(HLECH),1)']"" S HLERR=HLERRDEF_"Missing street address [line 1]" Q
  1. I $P(X,$E(HLECH),3)']"" S HLERR=HLERRDEF_"Missing city" Q
  1. ;I $P(X,$E(HLECH),4)']"" S HLERR=HLERRDEF_"Missing "_$S('FORFLG:"state abbreviation",1:"province") Q
  1. ;I $P(X,$E(HLECH),5)']"" S HLERR=HLERRDEF_"Missing "_$S('FORFLG:"zip code",1:"postal code") Q
  1. I $P(X,$E(HLECH),4)']"",'FORFLG S HLERR=HLERRDEF_"Missing State abbreviation" Q
  1. I $P(X,$E(HLECH),5)']"",'FORFLG S HLERR=HLERRDEF_"Missing Zip Code" Q
  1. I 'FORFLG D Q:$D(HLERR)
  1. . S IVMCNTY=$P(X,$E(HLECH),9)
  1. . I IVMCNTY']"" S HLERR=HLERRDEF_"Missing county code" Q
  1. I $L($P(X,$E(HLECH),1))>35!($L($P(X,$E(HLECH),1))<3) S HLERR="Invalid "_$S(ADDRTYPE="CA":"Confidential ",1:"")_"street address [line 1]" Q
  1. I $P(X,$E(HLECH),2)]"",(($L($P(X,$E(HLECH),2))>30)!($L($P(X,$E(HLECH),2))<3)) S HLERR="Invalid "_$S(ADDRTYPE="CA":"Confidential ",1:"")_"street address [line 2]" Q
  1. I ADDRTYPE'="CA" I $L($P(X,$E(HLECH),3))>15!($L($P(X,$E(HLECH),3))<2) S HLERR="Invalid city" Q
  1. ; IVM*2.0*164 - Uncomment below
  1. I ADDRTYPE="CA" I $L($P(X,$E(HLECH),3))>30!($L($P(X,$E(HLECH),3))<2) S HLERR="Invalid Confidential city" Q
  1. ;
  1. ; - save state pointer for county code validation only if not foreign address
  1. I 'FORFLG D Q:$D(HLERR)
  1. .S IVMSTPTR=+$O(^DIC(5,"C",$P(X,$E(HLECH),4),0))
  1. .I 'IVMSTPTR S HLERR="Invalid "_$S(ADDRTYPE="CA":"Confidential ",1:"")_"state abbreviation" Q
  1. .I '$O(^DIC(5,IVMSTPTR,1,"C",IVMCNTY,0)) D Q:$G(HLERR)]""
  1. ..N STFIPS
  1. ..S STFIPS=IVMSTPTR
  1. ..S:$L(STFIPS)<2 STFIPS="0"_STFIPS
  1. ..Q:$$FIPSCHK^XIPUTIL(STFIPS_IVMCNTY) ;county code is valid
  1. ..S HLERR="Invalid "_$S(ADDRTYPE="CA":"Confidential ",1:"")_"county code"
  1. .S X=$P(X,$E(HLECH),5) D ZIPIN^VAFADDR I $D(X)[0 S HLERR="Invalid "_$S(ADDRTYPE="CA":"Confidential ",1:"")_"zip code" Q
  1. Q
  1. ;
  1. ;
  1. NEXT ; - get the next HL7 segment in the message from HL7 Transmission (#772) file
  1. S IVMNUM=$O(^TMP($J,IVMRTN,IVMNUM)),IVMSTR=$G(^(+IVMNUM,0))
  1. Q
  1. ;
  1. PID10 ; Perform consistency checks for seq. 10
  1. ; Get all Race data from seq. 10 of PID segment
  1. N RACEVAL,RACEDA,RACEFLG,RACESQ
  1. S RACEFLG=1 ;Flag to check if Race data exist.
  1. I $D(IVMPID(10)) D
  1. . I $O(IVMPID(10,"")) D Q
  1. . . S RACESQ=0 F S RACESQ=$O(IVMPID(10,RACESQ)) Q:((RACESQ="")!($D(HLERR))!('RACEFLG)) D
  1. . . . I $G(IVMPID(10,RACESQ))="" S RACEFLG=0 Q
  1. . . . S RACEVAL=$P($P(IVMPID(10,RACESQ),$E(HLECH),1),"-",1,2)
  1. . . . I RACEVAL="" S HLERR="Missing Race Value - PID Seq 10" Q
  1. . . . S IVMRACE(1,RACEVAL)=IVMPID(10,RACESQ)
  1. . I $G(IVMPID(10))="" S RACEFLG=0 Q
  1. . I $P($P(IVMPID(10),$E(HLECH),1),"-",1,2)="" S HLERR="Missing Race Value - PID Seq 10" Q
  1. . S RACEVAL=$P($P(IVMPID(10),$E(HLECH),1),"-",1,2)
  1. . I RACEVAL="" S HLERR="Missing Race Value - PID Seq 10" Q
  1. . S IVMRACE(1,RACEVAL)=IVMPID(10)
  1. Q:$D(HLERR)
  1. ;perform consistency checks on Race
  1. I RACEFLG D
  1. . S RACEVAL="" F S RACEVAL=$O(IVMRACE(1,RACEVAL)) Q:RACEVAL=""!$D(HLERR) D
  1. . . S RACEDA=$$CODE2PTR^DGUTL4(RACEVAL,1,2)
  1. . . I RACEVAL="UNK-SLF" S RACEDA=$$CODE2PTR^DGUTL4("9999-4",1,2)
  1. . . I RACEDA<1 S HLERR="Invalid Race Value - PID Seq 10" Q
  1. . . S IVMRACE(2,RACEDA)=IVMRACE(1,RACEVAL)
  1. Q
  1. ;
  1. PID11 ; Perform consistency check for seq. 11
  1. S CONFADCT=""
  1. I $D(IVMPID(11)) D
  1. . I $O(IVMPID(11,"")) D Q
  1. . . S ADDSEQ=0 F S ADDSEQ=$O(IVMPID(11,ADDSEQ)) Q:ADDSEQ=""!($D(HLERR)) D
  1. . . . I $G(IVMPID(11,ADDSEQ))="" S HLERR="Invalid Address - Missing Address information" Q
  1. . . . S ADDRTYPE=$P($G(IVMPID(11,ADDSEQ)),$E(HLECH),7)
  1. . . . I ADDRTYPE="" S HLERR="Invalid Address - Missing Address Type" Q
  1. . . . ; I ADDRTYPE="P"!(ADDRTYPE="VAB1")!(ADDRTYPE="VAB2")!(ADDRTYPE="VAB3")!(ADDRTYPE="VAB4") S ADDRESS(ADDRTYPE)=IVMPID(11,ADDSEQ)
  1. . . . Q:'$D(IVMALADT(ADDRTYPE))
  1. . . . I IVMALADT(ADDRTYPE)="" S ADDRESS(ADDRTYPE)=IVMPID(11,ADDSEQ)
  1. . . . ;IVM*2.0*164 - Uncomment below to enable confidentail address processing
  1. . . . I $P(IVMALADT(ADDRTYPE),"^")="CA" D
  1. . . . . S ADDRESS("CA")=IVMPID(11,ADDSEQ)
  1. . . . . S CONFADCT=$P(IVMALADT(ADDRTYPE),"^",2)
  1. . . . . S CONFADCT(CONFADCT)=""
  1. . I $G(IVMPID(11))="" S HLERR="Invalid Address - Missing Address information" Q
  1. . S ADDRTYPE=$P($G(IVMPID(11)),$E(HLECH),7)
  1. . I ADDRTYPE="" S HLERR="Invalid Address - Missing Address Type" Q
  1. . ; I ADDRTYPE="P"!(ADDRTYPE="VAB1")!(ADDRTYPE="VAB2")!(ADDRTYPE="VAB3")!(ADDRTYPE="VAB4") S ADDRESS(ADDRTYPE)=IVMPID(11)
  1. . Q:'$D(IVMALADT(ADDRTYPE))
  1. . I IVMALADT(ADDRTYPE)="" S ADDRESS(ADDRTYPE)=IVMPID(11)
  1. . I $P(IVMALADT(ADDRTYPE),"^")="CA" D
  1. . . S ADDRESS("CA")=IVMPID(11)
  1. . . S CONFADCT=$P(IVMALADT(ADDRTYPE),"^",2)
  1. . . S CONFADCT(CONFADCT)=""
  1. Q:$D(HLERR)
  1. ;perform consistency checks on Permanent and all bad address
  1. I '$D(ADDRESS) S HLERR="Invalid Address - Invalid Address Type" Q
  1. S ADDRTYPE="" F S ADDRTYPE=$O(ADDRESS(ADDRTYPE)) Q:((ADDRTYPE="")!($G(HLERR)'="")) S X=$G(ADDRESS(ADDRTYPE)) D ADDRCHK
  1. Q
  1. ;
  1. PID13 ; Perform consistency checks for seq. 13
  1. ;Get communication data for all types from seq. 13 or PID segment
  1. S TCFLG=1 ;Flag to check if Telecom data exist.
  1. I $D(IVMPID(13)) D
  1. . I $O(IVMPID(13,"")) D Q
  1. . . S TELESEQ=0 F S TELESEQ=$O(IVMPID(13,TELESEQ)) Q:((TELESEQ="")!($D(HLERR))!('TCFLG)) D
  1. . . . I $G(IVMPID(13,TELESEQ))="" S TCFLG=0 Q
  1. . . . I $P(IVMPID(13,TELESEQ),$E(HLECH),2)="" S HLERR="Invalid Communication Data - Missing Communication Type - PID Seq 13" Q
  1. . . . S TELECOM($P(IVMPID(13,TELESEQ),$E(HLECH),2))=IVMPID(13,TELESEQ)
  1. . I $G(IVMPID(13))="" S TCFLG=0 Q
  1. . I $P(IVMPID(13),$E(HLECH),2)="" S HLERR="Invalid Communication Data - Missing Communication Type - PID Seq 13" Q
  1. . S TELECOM($P(IVMPID(13),$E(HLECH),2))=IVMPID(13)
  1. Q:$D(HLERR)
  1. ;perform consistency checks on all types of communication data.
  1. I TCFLG D
  1. . S COMMTYPE="" F S COMMTYPE=$O(TELECOM(COMMTYPE)) Q:COMMTYPE=""!$D(HLERR) D
  1. . . I COMMTYPE="NET" D Q
  1. . . . S X=$P(TELECOM(COMMTYPE),$E(HLECH),4)
  1. . . . I X]"",'$$CHKEMAIL^IVMPREC8(X) S HLERR="Invalid Email address"
  1. . .;IVM*2.0*215 - Remove validation for phone numbers
  1. . .;S X=$P(TELECOM(COMMTYPE),$E(HLECH)) I X]"",(($L(X)>20)!($L(X)<4)) S HLERR="Invalid phone number"
  1. Q
  1. ;
  1. CLEARF(NODE,DEL,IGNORE) ;
  1. ; Input: NODE - SEGMENT/SEQ.
  1. ; DEL - Delimiter (optional - default is ^)
  1. ; IGNORE - String of seq # to avoid (optional)
  1. N I
  1. I $G(DEL)="" S DEL=HLFS
  1. F I=1:1:$L(NODE,DEL) D
  1. . I $G(IGNORE)[(","_I_",") Q ;Ignore this seq. to convert
  1. . I $P(NODE,DEL,I)=HLQ S $P(NODE,DEL,I)=""
  1. Q NODE
  1. ;
  1. ZPDPA ; compare ZPD with DHCP
  1. ; IVM*2.0*215 - Moved ZPD tag from IVMPREC8 and renamed it to ZPDPA tag to fix size error
  1. ; ZPD tag in IVMPREC8 now calls ZPDPA
  1. N STFLG
  1. S STFLG=0
  1. S IVMPIECE=$E(IVMXREF,4,5)
  1. I IVMXREF="ZPD09"!(IVMXREF="ZPD31")!(IVMXREF="ZPD32") Q:$$DODCK(DFN)
  1. ; IVM*2.0*210-Quit if IVM-Language Date/Time is older
  1. I IVMXREF="ZPD46"!(IVMXREF="ZPD47") Q:'$$LANGCK^IVMPREC9(DFN)
  1. ;
  1. I $P(IVMSEG,HLFS,IVMPIECE)]"" D
  1. .; - set var to HL7 field
  1. .S IVMFLD=$P(IVMSEG,HLFS,IVMPIECE)
  1. .; - if HL7 date convert to FM date
  1. .; IVM*2.0*210-ADD ZPD47
  1. .I IVMXREF["ZPD09"!(IVMXREF["ZPD13")!(IVMXREF["ZPD32")!(IVMXREF["ZPD47") S IVMFLD=$$FMDATE^HLFNC(IVMFLD)
  1. .; IVM*2.0*214 - Restore lines mistakenly removed by patch 210 and extract only 4 ~ pieces
  1. .; - if HL7 name format convert to FM
  1. .I IVMXREF["ZPD06"!(IVMXREF["ZPD07") S IVMFLD=$$FMNAME^HLFNC($S($L(IVMFLD,HLECH)>4:$P(IVMFLD,HLECH,1,4),1:IVMFLD))
  1. .;
  1. .; IVM*2.0*210-call VADPT for DHCP demographics
  1. .D DEM^VADPT
  1. .; - execute code on the 1 node and get DHCP field
  1. .S IVMDHCP="" X:$D(^IVM(301.92,+IVMDEMDA,1)) ^(1) S IVMDHCP=Y
  1. .I IVMFLD]"",(IVMFLD'=IVMDHCP) S STFLG=1 D STORE^IVMPREC9 Q
  1. .I $P(IVMSEG,"^",IVMPIECE)'="""""" D
  1. ..I IVMXREF["ZPD09" D STORE^IVMPREC9
  1. I IVMXREF["ZPD08",STFLG,$$AUTORINC^IVMPREC9(DFN) Q
  1. I IVMXREF["ZPD32",$$AUTODOD^IVMLDEMD(DFN)
  1. ; IVM*2.0*210 - Preferred Language and Date/Time
  1. I IVMXREF["ZPD47",$$AUTOLANG^IVMPREC9(DFN)
  1. Q
  1. ;
  1. DODCK(DFN) ;this will check if Date of Death needs to be uploaded or not.
  1. ; IVM*2.0*215 - Moved DODCK tag from IVMPREC8 to fix size error
  1. ;2 reqs are:
  1. ; 1. When the DOD is received from ESR with a Source of Death Notification equal to "Death Certificate on file and the
  1. ; VistA DOD is null or empty then VistA will upload the Date of Death from ESR
  1. ; 2. When DOD is Received from ESR and VistA DOD is already populated then Vista will ignore the DOD from ESR and VistA
  1. ; will not create an entry in the IVM demographic upload option.
  1. ;
  1. ; Inputs: DFN for ^DPT
  1. ; IVMXREF (must be ZPD09, ZPD31 and ZPD32)
  1. ; IVMSEG (the ZPD data)
  1. ; IVMFLD (the field number in ^DPT(DFN)
  1. ; IVMPIECE (the piece number of IVMSEG)
  1. ; IVMDHCP (the data from ^DPT(DFN)
  1. ;
  1. N DODARRAY,QUIT
  1. ;
  1. S (CKDEL,QUIT)=0
  1. ;
  1. I $P(IVMSEG,"^",9)="""""" Q 0
  1. D GETS^DIQ(2,DFN,".351:.355","","DODARRAY")
  1. S DOD=DODARRAY(2,DFN_",",.351)
  1. I DOD'="" Q 1
  1. I $P(IVMSEG,"^",31)=3,DOD="" S QUIT=0 ;Death Certificate not on File
  1. I $P(IVMSEG,"^",31)=3,DOD'="" S QUIT=1
  1. ;
  1. Q QUIT ;
  1. ;