VAFCQRY3 ;ALB/CMC,CKN,KUM - CONT TO BLD PID 2.4 SEGMENT ;7/4/18 4:45PM
 ;;5.3;Registration;**575,707,754,944,941,1121**;Aug 13, 1993;Build 14
 ;Per VHA Directive 2004-038, this routine should not be modified.
 ;
 ; *941* #858271 - Sending Residential Address Fields 
 ;
CONT(DFN,APID,PID,HL,HLES,SARY,SEQ,ERROR,REP,COMP,SSN,VAFCMN) ; continue to bld pid segment
ADDR ;had to split routine
 N LVL1,LNGTH1
 S LVL1=0
 S LNGTH1=0
 I $D(SARY(11))!(SEQ="ALL") S APID(12)="" D
 .I $D(^DPT(DFN,0)) D
 ..;address info
 ..N COUNTY K HL7STRG
 ..S HL7STRG=$$GET1^DIQ(2,DFN_",",.111) D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
 ..S $P(APID(12),COMP)=HL7STRG I $P(APID(12),COMP)="" S $P(APID(12),COMP)=HL("Q") K HL7STRG
 ..K HL7STRG S HL7STRG=$$GET1^DIQ(2,DFN_",",.112) D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) ;**707 add HL7TXT call
 ..S $P(APID(12),COMP,2)=HL7STRG I $P(APID(12),COMP,2)="" S $P(APID(12),COMP,2)=HL("Q")
 ..K HL7STRG S HL7STRG=$$GET1^DIQ(2,DFN_",",.113) D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) ;**707 add HL7TXT call
 ..S $P(APID(12),COMP,8)=HL7STRG I $P(APID(12),COMP,8)="" S $P(APID(12),COMP,8)=HL("Q")
 ..K HL7STRG
 ..; **707 changes to include foreign address
 ..N CNTRY S CNTRY=$$GET1^DIQ(2,DFN_",",.1173) ;RETURN EXTERNAL VALUE from country code file #779.004 field .01
 ..I CNTRY="US" S CNTRY="USA"
 ..S HL7STRG=$$GET1^DIQ(2,DFN_",",.114) D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S $P(APID(12),COMP,3)=HL7STRG  I $P(APID(12),COMP,3)="" S $P(APID(12),COMP,3)=HL("Q")
 ..I CNTRY=""!(CNTRY="USA") D
 ...;have USA address
 ...S STATEIEN=$$GET1^DIQ(2,DFN_",",.115,"I") S $P(APID(12),COMP,4)=$$GET1^DIQ(5,+STATEIEN_",",1)
 ...I $P(APID(12),COMP,4)="" S $P(APID(12),COMP,4)=HL("Q")
 ...S $P(APID(12),COMP,5)=$$GET1^DIQ(2,DFN_",",.1112) I $P(APID(12),COMP,5)="" S $P(APID(12),COMP,5)=HL("Q")
 ...S $P(APID(12),COMP,6)=CNTRY I CNTRY="" S $P(APID(12),COMP,6)=HL("Q") ;country
 ..I CNTRY'="",(CNTRY'="USA") D
 ...;Check for foreign address fields
 ...S $P(APID(12),COMP,4)=$P($G(^DPT(DFN,.11)),"^",8) I $P(APID(12),COMP,4)="" S $P(APID(12),COMP,4)=HL("Q") ;province
 ...S $P(APID(12),COMP,5)=$P($G(^DPT(DFN,.11)),"^",9) I $P(APID(12),COMP,5)="" S $P(APID(12),COMP,5)=HL("Q") ;postal code
 ...S $P(APID(12),COMP,6)=CNTRY I CNTRY="" S $P(APID(12),COMP,6)=HL("Q") ;COUNTRY
 ...; ***707 end of code
 ..S $P(APID(12),COMP,7)="P"
BADADDR ..;BAD ADDRESS INDICATOR (if present overwrite the "P" ermanent type with the Bad Address type
 ..I $D(^DPT(DFN,.11)) N BADADR S BADADR=$P(^DPT(DFN,.11),"^",16) I BADADR'="" S $P(APID(12),COMP,7)="VAB"_BADADR
 ..S COUNTY=$$GET1^DIQ(2,DFN_",",.117) I COUNTY="" S COUNTY=HL("Q") ;**648 add COUNTY Code to PID-11, retained in PID-12 also
 ..S $P(APID(12),COMP,9)=COUNTY ;county code
 ..;place of birth information
 ..S CITY=$$GET1^DIQ(2,DFN_",",.092) S HL7STRG=CITY D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S CITY=HL7STRG D
 ...N X,POBPROV,POBCONT
 ...I $G(CITY)'="" S $P(X,COMP,3)=CITY
 ...I $G(CITY)="" S $P(X,COMP,3)=HL("Q")
 ...; Story 513045 (elz) use pob provence if it's there vs state
 ...S STATEIEN=$$GET1^DIQ(2,DFN_",",.093,"I"),STATE=$$GET1^DIQ(5,+STATEIEN_",",1),POBPROV=$$GET1^DIQ(2,DFN_",",.0932,"E") D
 ....I $L(POBPROV) S HL7STRG=POBPROV D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S $P(X,COMP,4)=HL7STRG
 ....I $G(STATE)'="",'$L(POBPROV) S $P(X,COMP,4)=STATE
 ....I $G(STATE)="",'$L(POBPROV) S $P(X,COMP,4)=HL("Q")
 ...; Story 513045 (elz) include pob country
 ...S POBCONT=$$GET1^DIQ(2,DFN_",",.0931) D
 ....I POBCONT="US" S POBCONT="USA"
 ....I POBCONT'="" S $P(X,COMP,6)=POBCONT
 ....I POBCONT="" S $P(X,COMP,6)=HL("Q")
 ... S $P(X,COMP,7)="N",APID(12)=$G(APID(12))_REP_X
CONF .;CONFIDENTIAL ADDRESS
 .I $D(^DPT(DFN,.141)) N CNFADD S CNFADD=$$GET1^DIQ(2,DFN_",",.14105) D
 ..N LINE1,LINE2,LINE3,STATEIEN,STATE,CNTRY,ZIP,LVL,LNGTH,NXT,CNFEND,CNFSTRT,SUBCOMP,CNTY,CITY
 ..S SUBCOMP=$E(HL("ECH"),4)
 ..S LINE1=$$GET1^DIQ(2,DFN_",",.1411) S HL7STRG=LINE1 D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S LINE1=HL7STRG
 ..S LINE2=$$GET1^DIQ(2,DFN_",",.1412) S HL7STRG=LINE2 D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S LINE2=HL7STRG
 ..S LINE3=$$GET1^DIQ(2,DFN_",",.1413) S HL7STRG=LINE3 D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S LINE3=HL7STRG
 ..S CNFSTRT=$$FMTHL7^XLFDT($$GET1^DIQ(2,DFN_",",.1417,"I")),CNFEND=$$FMTHL7^XLFDT($$GET1^DIQ(2,DFN_",",.1418,"I"))
 ..S CITY=$$GET1^DIQ(2,DFN_",",.1414) S HL7STRG=CITY D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S CITY=HL7STRG
 ..S CNTRY=$$GET1^DIQ(2,DFN_",",.14116)
 ..;if foriegn address
 ..I CNTRY=""!(CNTRY="USA")!(CNTRY="US") S:CNTRY="US" CNTRY="USA" S STATEIEN=$$GET1^DIQ(2,DFN_",",.1415,"I") S STATE=$$GET1^DIQ(5,+STATEIEN_",",1),CNTY=$$GET1^DIQ(2,DFN_",",.14111),ZIP=$$GET1^DIQ(2,DFN_",",.1416)
 ..E  S STATE=$$GET1^DIQ(2,DFN_",",.14114),ZIP=$$GET1^DIQ(2,DFN_",",.14115)  ;if USA address or null assume USA address
 ..S LVL=0,LNGTH=$L(APID(12))
 ..I $D(^DPT(DFN,.14,0)) N CNFTYP S CNFTYP=0 F  S CNFTYP=$O(^DPT(DFN,.14,CNFTYP)) Q:'CNFTYP  N CNFTYPA S CNFTYPA=$P(^DPT(DFN,.14,CNFTYP,0),"^",2) I CNFTYPA="Y" S CNFTYPA=$P(^DPT(DFN,.14,CNFTYP,0),"^") D
 ...S NXT=""
 ...S $P(NXT,COMP)=$S(LINE1'="":LINE1,1:HL("Q"))
 ...S $P(NXT,COMP,2)=$S(LINE2'="":LINE2,1:HL("Q"))
 ...S $P(NXT,COMP,8)=$S(LINE3'="":LINE3,1:HL("Q"))
 ...S $P(NXT,COMP,3)=$S(CITY'="":CITY,1:HL("Q"))
 ...S $P(NXT,COMP,4)=$S($G(STATE)'="":STATE,1:HL("Q"))
 ...S $P(NXT,COMP,5)=$S(ZIP'="":ZIP,1:HL("Q"))
 ...S $P(NXT,COMP,6)=$S(CNTRY'="":CNTRY,1:HL("Q"))
 ...S $P(NXT,COMP,7)=$S(CNFTYPA=1:"VACAE",CNFTYPA=2:"VACAA",CNFTYPA=3:"VACAC",CNFTYPA=4:"VACAM",CNFTYPA=5:"VACAO",1:HL("Q"))
 ...S $P(NXT,COMP,9)=$S($G(CNTY)'="":CNTY,1:HL("Q"))
 ...S $P(NXT,COMP,12)=CNFSTRT_SUBCOMP_CNFEND
 ...S NXT=REP_NXT
 ...I LVL=0 D
 ....I $L(APID(12)_NXT)'>244 S APID(12)=APID(12)_NXT Q
 ....I $L(APID(12)_NXT)>244 S LVL=1 S LNGTH=244-$L(APID(12)),APID(12)=APID(12)_$E(NXT,1,LNGTH) S LNGTH=LNGTH+1,NXT=$E(NXT,LNGTH,$L(NXT))
 ...I LVL>0 D
 ....I $L($G(APID(12,LVL))_NXT)'>245 S APID(12,LVL)=$G(APID(12,LVL))_NXT Q
 ....I $L($G(APID(12,LVL))_NXT)>245 S LNGTH=244-$L(APID(12,LVL)),APID(12,LVL)=APID(12,LVL)_$E(NXT,1,LNGTH) S LNGTH=LNGTH+1,NXT=$E(NXT,LNGTH,$L(NXT)) S LVL=LVL+1 S APID(12,LVL)=NXT
 ..S LVL1=LVL
 ..S LNGTH1=LNGTH
RESI .;KUM - 941 - TRANSMIT RESIDENTIAL ADDRESS
 .;jam; patch 941 - get current option and include RES Address in PID if not ambulatory care transmit
 .N XQOPT
 .D OP^XQCHK
 .I $D(^DPT(DFN,.115)),$P(XQOPT,"^",1)'["SCDX AMBCAR" D 
 ..N RESADD,LVL,LNGTH,RESDTA
 ..S RESDTA=0
 ..N LINE1,LINE2,LINE3,STATEIEN,STATE,CNTRY,ZIP,LVL,LNGTH,NXT,NXT1,RESEND,RESSTRT,SUBCOMP,CNTY,CITY
 ..S SUBCOMP=$E(HL("ECH"),4)
 ..S LINE1=$$GET1^DIQ(2,DFN_",",.1151) S HL7STRG=LINE1 D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S LINE1=HL7STRG
 ..S LINE2=$$GET1^DIQ(2,DFN_",",.1152) S HL7STRG=LINE2 D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S LINE2=HL7STRG
 ..S LINE3=$$GET1^DIQ(2,DFN_",",.1153) S HL7STRG=LINE3 D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S LINE3=HL7STRG
 ..;S RESSTRT=$$FMTHL7^XLFDT($$GET1^DIQ(2,DFN_",",.1161,"I")),RESEND=$$FMTHL7^XLFDT($$GET1^DIQ(2,DFN_",",.1162,"I"))
 ..S CITY=$$GET1^DIQ(2,DFN_",",.1154) S HL7STRG=CITY D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S CITY=HL7STRG
 ..S CNTRY=$$GET1^DIQ(2,DFN_",",.11573)
 ..;if foriegn address
 ..I CNTRY=""!(CNTRY="USA")!(CNTRY="US") S:CNTRY="US" CNTRY="USA" S STATEIEN=$$GET1^DIQ(2,DFN_",",.1155,"I") S STATE=$$GET1^DIQ(5,+STATEIEN_",",1),CNTY=$$GET1^DIQ(2,DFN_",",.1157),ZIP=$$GET1^DIQ(2,DFN_",",.1156)
 ..E  S STATE=$$GET1^DIQ(2,DFN_",",.11571),ZIP=$$GET1^DIQ(2,DFN_",",.11572)  ;if USA address or null assume USA address
 ..I '$G(LNGTH1) S LNGTH1=0
 ..S LNGTH=LNGTH1
 ..S LVL=LVL1
 ..S NXT=""
 ..I ($G(LINE1)'="")!($G(LINE2)'="")!($G(LINE3)'="")!($G(CITY)'="")!($G(STATE)'="")!($G(ZIP)'="")!($G(CNTRY)'="")!($G(CNTY)'="") S RESDTA=1
 ..S $P(NXT,COMP)=$S(LINE1'="":LINE1,1:HL("Q"))
 ..S $P(NXT,COMP,2)=$S(LINE2'="":LINE2,1:HL("Q"))
 ..S $P(NXT,COMP,8)=$S(LINE3'="":LINE3,1:HL("Q"))
 ..S $P(NXT,COMP,3)=$S(CITY'="":CITY,1:HL("Q"))
 ..S $P(NXT,COMP,4)=$S($G(STATE)'="":STATE,1:HL("Q"))
 ..S $P(NXT,COMP,5)=$S(ZIP'="":ZIP,1:HL("Q"))
 ..S $P(NXT,COMP,6)=$S(CNTRY'="":CNTRY,1:HL("Q"))
 ..S $P(NXT,COMP,7)="R"
 ..S $P(NXT,COMP,9)=$S($G(CNTY)'="":CNTY,1:HL("Q"))
 ..;S $P(NXT,COMP,10)=HL("Q")
 ..;S $P(NXT,COMP,12)=RESSTRT_SUBCOMP_RESEND
 ..S NXT=REP_NXT
 ..I RESDTA D
 ...I LVL=0 D
 ....I $L(APID(12)_NXT)'>244 S APID(12)=APID(12)_NXT Q
 ....I $L(APID(12)_NXT)>244 S LVL=1 S LNGTH=244-$L(APID(12)),APID(12)=APID(12)_$E(NXT,1,LNGTH) S LNGTH=LNGTH+1,NXT=$E(NXT,LNGTH,$L(NXT))
 ...I LVL>0 D
 ....I $L($G(APID(12,LVL))_NXT)'>245 S APID(12,LVL)=$G(APID(12,LVL))_NXT Q
 ....I $L($G(APID(12,LVL))_NXT)>245 S LNGTH=244-$L(APID(12,LVL)),APID(12,LVL)=APID(12,LVL)_$E(NXT,1,LNGTH) S LNGTH=LNGTH+1,NXT=$E(NXT,LNGTH,$L(NXT)) S LVL=LVL+1 S APID(12,LVL)=NXT
 I $D(SARY(12))!(SEQ="ALL") S APID(13)=$$GET1^DIQ(2,DFN_",",.117) I APID(13)="" S APID(13)=HL("Q")  ;county code **648 backwards compatibility only
PHONE I $D(SARY(13))!($D(SARY(14)))!(SEQ="ALL") D
 .;**707 change PID-13 to have home and work phones, cell, pager and e-mail address with the components ; **754 add confidential phone number to PID-13
 .N PHONEN,HNUM,WNUM,EMAIL,CELL,PAGER,CONFNUM,DGEXT,DGEXT2,DGCNTRY,DGAREA,DGPH ;**754
 .S PHONEN=$G(^DPT(DFN,.13))
 .; **707 change to ensure that null doesn't end up for any of these fields cmc 12/7/06
 .; **DG*5.3*1121 accommodate country code, area code, phone number, extension in pieces 5 to 8 in each phone number component
 .;S HNUM=$P(PHONEN,"^") I HNUM'="" S HNUM=$$HLPHONE^HLFNC(HNUM) I HNUM'="" S HL7STRG=HNUM D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S HNUM=HL7STRG_COMP_"PRN"_COMP_"PH"
 .S HNUM=$P(PHONEN,"^") I HNUM'="" D 
 ..;S HL7STRG=HNUM
 ..S HL7STRG=$TR(HNUM,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 ..D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S DGEXT="" S DGEXT2="" S DGCNTRY="" S DGAREA="" S DGPH=""
 ..S DGEXT=$P(HL7STRG,"X",2)
 ..S DGEXT=$$CONVPHAN(DGEXT)
 ..S DGEXT2=$$GET1^DIQ(2,DFN_",",.13211)
 ..S DGEXT2=$$CONVPHAN(DGEXT2)
 ..I DGEXT2'="" S DGEXT=DGEXT2
 ..S DGEXT=$E(DGEXT,1,6)
 ..S DGCNTRY=$$GET1^DIQ(2,DFN_",",.1327,"I")
 ..S DGCNTRY=$$CONVPHAN(DGCNTRY)
 ..I $G(DGCNTRY)="" S DGCNTRY=1
 ..S DGPH=$P(HL7STRG,"X",1)
 ..S DGPH=$$CONVPHAN(DGPH)
 ..S DGAREA=$E(DGPH,1,3)
 ..S DGPH=$E(DGPH,4,10)
 ..I DGPH="" S DGEXT="" S DGCNTRY="" S DGAREA=""
 ..S HNUM=HL7STRG_COMP_"PRN"_COMP_"PH"_COMP_COMP_DGCNTRY_COMP_DGAREA_COMP_DGPH_COMP_DGEXT
 .;S WNUM=$P(PHONEN,"^",2) I WNUM'="" S WNUM=$$HLPHONE^HLFNC(WNUM) I WNUM'="" S HL7STRG=WNUM D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S WNUM=HL7STRG_COMP_"WPN"_COMP_"PH"
 .S WNUM=$P(PHONEN,"^",2) I WNUM'="" D
 ..;S HL7STRG=WNUM
 ..S HL7STRG=$TR(WNUM,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 ..D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S DGEXT="" S DGEXT2="" S DGCNTRY="" S DGAREA="" S DGPH=""
 ..S DGEXT=$P(HL7STRG,"X",2)
 ..S DGEXT=$$CONVPHAN(DGEXT)
 ..S DGEXT2=$$GET1^DIQ(2,DFN_",",.13213)
 ..S DGEXT2=$$CONVPHAN(DGEXT2)
 ..I DGEXT2'="" S DGEXT=DGEXT2
 ..S DGEXT=$E(DGEXT,1,6)
 ..S DGCNTRY=$$GET1^DIQ(2,DFN_",",.1329,"I")
 ..S DGCNTRY=$$CONVPHAN(DGCNTRY)
 ..I $G(DGCNTRY)="" S DGCNTRY=1
 ..S DGPH=$P(HL7STRG,"X",1)
 ..S DGPH=$$CONVPHAN(DGPH)
 ..S DGAREA=$E(DGPH,1,3)
 ..S DGPH=$E(DGPH,4,10)
 ..I DGPH="" S DGEXT="" S DGCNTRY="" S DGAREA=""
 ..S WNUM=HL7STRG_COMP_"WPN"_COMP_"PH"_COMP_COMP_DGCNTRY_COMP_DGAREA_COMP_DGPH_COMP_DGEXT
 .;S CELL=$P(PHONEN,"^",4) I CELL'="" S CELL=$$HLPHONE^HLFNC(CELL) I CELL'="" S HL7STRG=CELL D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S CELL=HL7STRG_COMP_"ORN"_COMP_"CP"
 .S CELL=$P(PHONEN,"^",4) I CELL'="" D
 ..;S HL7STRG=CELL
 ..S HL7STRG=$TR(CELL,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 ..D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S DGEXT="" S DGEXT2="" S DGCNTRY="" S DGAREA="" S DGPH=""
 ..S DGEXT=$P(HL7STRG,"X",2)
 ..S DGEXT=$$CONVPHAN(DGEXT)
 ..S DGEXT2=$$GET1^DIQ(2,DFN_",",.13212)
 ..S DGEXT2=$$CONVPHAN(DGEXT2)
 ..I DGEXT2'="" S DGEXT=DGEXT2
 ..S DGEXT=$E(DGEXT,1,6)
 ..S DGCNTRY=$$GET1^DIQ(2,DFN_",",.1328,"I")
 ..S DGCNTRY=$$CONVPHAN(DGCNTRY)
 ..I $G(DGCNTRY)="" S DGCNTRY=1
 ..S DGPH=$P(HL7STRG,"X",1)
 ..S DGPH=$$CONVPHAN(DGPH)
 ..S DGAREA=$E(DGPH,1,3)
 ..S DGPH=$E(DGPH,4,10)
 ..I DGPH="" S DGEXT="" S DGCNTRY="" S DGAREA=""
 ..S CELL=HL7STRG_COMP_"ORN"_COMP_"CP"_COMP_COMP_DGCNTRY_COMP_DGAREA_COMP_DGPH_COMP_DGEXT
 .S PAGER=$P(PHONEN,"^",5) I PAGER'="" S PAGER=$$HLPHONE^HLFNC(PAGER) I PAGER'="" S HL7STRG=PAGER D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S PAGER=HL7STRG_COMP_"BPN"_COMP_"BP"
 .S EMAIL=$P(PHONEN,"^",3) I EMAIL'="" S HL7STRG=EMAIL D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S EMAIL=COMP_"NET"_COMP_"INTERNET"_COMP_HL7STRG
 .;S CONFNUM=$P(PHONEN,"^",15) I CONFNUM'="" S CONFNUM=$$HLPHONE^HLFNC(CONFNUM) I CONFNUM'="" S HL7STRG=CONFNUM D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S CONFNUM=HL7STRG_COMP_"VACPN"_COMP_"PH" ;**574
 .S CONFNUM=$P(PHONEN,"^",15) I CONFNUM'="" D
 ..;S HL7STRG=CONFNUM
 ..S HL7STRG=$TR(CONFNUM,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 ..D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S DGEXT="" S DGEXT2="" S DGCNTRY="" S DGAREA="" S DGPH=""
 ..S DGEXT=$P(HL7STRG,"X",2)
 ..S DGEXT=$$CONVPHAN(DGEXT)
 ..S DGEXT2=$$GET1^DIQ(2,DFN_",",.13214)
 ..S DGEXT2=$$CONVPHAN(DGEXT2)
 ..I DGEXT2'="" S DGEXT=DGEXT2
 ..S DGEXT=$E(DGEXT,1,6)
 ..S DGCNTRY=$$GET1^DIQ(2,DFN_",",.13201,"I")
 ..S DGCNTRY=$$CONVPHAN(DGCNTRY)
 ..I $G(DGCNTRY)="" S DGCNTRY=1
 ..S DGPH=$P(HL7STRG,"X",1)
 ..S DGPH=$$CONVPHAN(DGPH)
 ..S DGAREA=$E(DGPH,1,3)
 ..S DGPH=$E(DGPH,4,10)
 ..I DGPH="" S DGEXT="" S DGCNTRY="" S DGAREA=""
 ..S CONFNUM=HL7STRG_COMP_"VACPN"_COMP_"PH"_COMP_COMP_DGCNTRY_COMP_DGAREA_COMP_DGPH_COMP_DGEXT
 .; DG*5.3*1121 - End of changes
 .I HNUM'="" S APID(14)=HNUM
 .I WNUM'="",APID(14)'="" S APID(14)=APID(14)_REP_WNUM
 .I WNUM'="",APID(14)="" S APID(14)=WNUM
 .I CELL'="",APID(14)'="" S APID(14)=APID(14)_REP_CELL
 .I CELL'="",APID(14)="" S APID(14)=CELL
 .I PAGER'="",APID(14)'="" S APID(14)=APID(14)_REP_PAGER
 .I PAGER'="",APID(14)="" S APID(14)=PAGER
 .I EMAIL'="",APID(14)'="" S APID(14)=APID(14)_REP_EMAIL
 .I EMAIL'="",APID(14)="" S APID(14)=EMAIL
 .I CONFNUM'="",APID(14)'="" S APID(14)=APID(14)_REP_CONFNUM ;**754
 .I CONFNUM'="",APID(14)="" S APID(14)=CONFNUM ;**754
 .I APID(14)="" S APID(14)=HL("Q")
 I $D(SARY(14))!(SEQ="ALL") N WNUM S WNUM=$P($G(^DPT(DFN,.13)),"^",2) S WNUM=$$HLPHONE^HLFNC(WNUM) S HL7STRG=WNUM D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S APID(15)=HL7STRG I APID(15)="" S APID(15)=HL("Q")
 ;**707 keep work# in PID-14 for backwards compatability but should use PID-13 to get work#
 I $D(SARY(19))!(SEQ="ALL") S APID(20)=SSN  ;ssn passed in PID-3
 I $D(SARY(23))!(SEQ="ALL") D
 .S CITY=$$GET1^DIQ(2,DFN_",",.092) S HL7STRG=CITY D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S CITY=HL7STRG
 .S STATEIEN=$$GET1^DIQ(2,DFN_",",.093,"I") S STATE=$$GET1^DIQ(5,+STATEIEN_",",1) D
 .I CITY'=""&(STATE'="") S APID(24)=CITY_" "_STATE  ;place of birth (not used) use PID-11 with an 'N' instead
 .I CITY=""&(STATE="") S APID(24)=HL("Q")
 D CONT^VAFCQRY4(DFN,.APID,.PID,.HL,HLES,.SARY,SEQ,.ERROR,REP,COMP)
 ;**707 had to break routine
 Q
 ;
CONVPHAN(PH) ;Convert Alpha Phone number to Numeric
 S PH=$TR(PH," )(/#\-~`!@#$%^&*'|<>?,.+=_abcdefghijklmnopqrstvuwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","")
 Q PH
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HVAFCQRY3   15327     printed  Sep 23, 2025@20:38:11                                                                                                                                                                                                   Page 2
VAFCQRY3  ;ALB/CMC,CKN,KUM - CONT TO BLD PID 2.4 SEGMENT ;7/4/18 4:45PM
 +1       ;;5.3;Registration;**575,707,754,944,941,1121**;Aug 13, 1993;Build 14
 +2       ;Per VHA Directive 2004-038, this routine should not be modified.
 +3       ;
 +4       ; *941* #858271 - Sending Residential Address Fields 
 +5       ;
CONT(DFN,APID,PID,HL,HLES,SARY,SEQ,ERROR,REP,COMP,SSN,VAFCMN) ; continue to bld pid segment
ADDR      ;had to split routine
 +1        NEW LVL1,LNGTH1
 +2        SET LVL1=0
 +3        SET LNGTH1=0
 +4        IF $DATA(SARY(11))!(SEQ="ALL")
               SET APID(12)=""
               Begin DoDot:1
 +5                IF $DATA(^DPT(DFN,0))
                       Begin DoDot:2
 +6       ;address info
 +7                        NEW COUNTY
                           KILL HL7STRG
 +8                        SET HL7STRG=$$GET1^DIQ(2,DFN_",",.111)
                           DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
 +9                        SET $PIECE(APID(12),COMP)=HL7STRG
                           IF $PIECE(APID(12),COMP)=""
                               SET $PIECE(APID(12),COMP)=HL("Q")
                               KILL HL7STRG
 +10      ;**707 add HL7TXT call
                           KILL HL7STRG
                           SET HL7STRG=$$GET1^DIQ(2,DFN_",",.112)
                           DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
 +11                       SET $PIECE(APID(12),COMP,2)=HL7STRG
                           IF $PIECE(APID(12),COMP,2)=""
                               SET $PIECE(APID(12),COMP,2)=HL("Q")
 +12      ;**707 add HL7TXT call
                           KILL HL7STRG
                           SET HL7STRG=$$GET1^DIQ(2,DFN_",",.113)
                           DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
 +13                       SET $PIECE(APID(12),COMP,8)=HL7STRG
                           IF $PIECE(APID(12),COMP,8)=""
                               SET $PIECE(APID(12),COMP,8)=HL("Q")
 +14                       KILL HL7STRG
 +15      ; **707 changes to include foreign address
 +16      ;RETURN EXTERNAL VALUE from country code file #779.004 field .01
                           NEW CNTRY
                           SET CNTRY=$$GET1^DIQ(2,DFN_",",.1173)
 +17                       IF CNTRY="US"
                               SET CNTRY="USA"
 +18                       SET HL7STRG=$$GET1^DIQ(2,DFN_",",.114)
                           DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                           SET $PIECE(APID(12),COMP,3)=HL7STRG
                           IF $PIECE(APID(12),COMP,3)=""
                               SET $PIECE(APID(12),COMP,3)=HL("Q")
 +19                       IF CNTRY=""!(CNTRY="USA")
                               Begin DoDot:3
 +20      ;have USA address
 +21                               SET STATEIEN=$$GET1^DIQ(2,DFN_",",.115,"I")
                                   SET $PIECE(APID(12),COMP,4)=$$GET1^DIQ(5,+STATEIEN_",",1)
 +22                               IF $PIECE(APID(12),COMP,4)=""
                                       SET $PIECE(APID(12),COMP,4)=HL("Q")
 +23                               SET $PIECE(APID(12),COMP,5)=$$GET1^DIQ(2,DFN_",",.1112)
                                   IF $PIECE(APID(12),COMP,5)=""
                                       SET $PIECE(APID(12),COMP,5)=HL("Q")
 +24      ;country
                                   SET $PIECE(APID(12),COMP,6)=CNTRY
                                   IF CNTRY=""
                                       SET $PIECE(APID(12),COMP,6)=HL("Q")
                               End DoDot:3
 +25                       IF CNTRY'=""
                               IF (CNTRY'="USA")
                                   Begin DoDot:3
 +26      ;Check for foreign address fields
 +27      ;province
                                       SET $PIECE(APID(12),COMP,4)=$PIECE($GET(^DPT(DFN,.11)),"^",8)
                                       IF $PIECE(APID(12),COMP,4)=""
                                           SET $PIECE(APID(12),COMP,4)=HL("Q")
 +28      ;postal code
                                       SET $PIECE(APID(12),COMP,5)=$PIECE($GET(^DPT(DFN,.11)),"^",9)
                                       IF $PIECE(APID(12),COMP,5)=""
                                           SET $PIECE(APID(12),COMP,5)=HL("Q")
 +29      ;COUNTRY
                                       SET $PIECE(APID(12),COMP,6)=CNTRY
                                       IF CNTRY=""
                                           SET $PIECE(APID(12),COMP,6)=HL("Q")
 +30      ; ***707 end of code
                                   End DoDot:3
 +31                       SET $PIECE(APID(12),COMP,7)="P"
BADADDR   ;BAD ADDRESS INDICATOR (if present overwrite the "P" ermanent type with the Bad Address type
 +1                        IF $DATA(^DPT(DFN,.11))
                               NEW BADADR
                               SET BADADR=$PIECE(^DPT(DFN,.11),"^",16)
                               IF BADADR'=""
                                   SET $PIECE(APID(12),COMP,7)="VAB"_BADADR
 +2       ;**648 add COUNTY Code to PID-11, retained in PID-12 also
                           SET COUNTY=$$GET1^DIQ(2,DFN_",",.117)
                           IF COUNTY=""
                               SET COUNTY=HL("Q")
 +3       ;county code
                           SET $PIECE(APID(12),COMP,9)=COUNTY
 +4       ;place of birth information
 +5                        SET CITY=$$GET1^DIQ(2,DFN_",",.092)
                           SET HL7STRG=CITY
                           DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                           SET CITY=HL7STRG
                           Begin DoDot:3
 +6                            NEW X,POBPROV,POBCONT
 +7                            IF $GET(CITY)'=""
                                   SET $PIECE(X,COMP,3)=CITY
 +8                            IF $GET(CITY)=""
                                   SET $PIECE(X,COMP,3)=HL("Q")
 +9       ; Story 513045 (elz) use pob provence if it's there vs state
 +10                           SET STATEIEN=$$GET1^DIQ(2,DFN_",",.093,"I")
                               SET STATE=$$GET1^DIQ(5,+STATEIEN_",",1)
                               SET POBPROV=$$GET1^DIQ(2,DFN_",",.0932,"E")
                               Begin DoDot:4
 +11                               IF $LENGTH(POBPROV)
                                       SET HL7STRG=POBPROV
                                       DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                                       SET $PIECE(X,COMP,4)=HL7STRG
 +12                               IF $GET(STATE)'=""
                                       IF '$LENGTH(POBPROV)
                                           SET $PIECE(X,COMP,4)=STATE
 +13                               IF $GET(STATE)=""
                                       IF '$LENGTH(POBPROV)
                                           SET $PIECE(X,COMP,4)=HL("Q")
                               End DoDot:4
 +14      ; Story 513045 (elz) include pob country
 +15                           SET POBCONT=$$GET1^DIQ(2,DFN_",",.0931)
                               Begin DoDot:4
 +16                               IF POBCONT="US"
                                       SET POBCONT="USA"
 +17                               IF POBCONT'=""
                                       SET $PIECE(X,COMP,6)=POBCONT
 +18                               IF POBCONT=""
                                       SET $PIECE(X,COMP,6)=HL("Q")
                               End DoDot:4
 +19                           SET $PIECE(X,COMP,7)="N"
                               SET APID(12)=$GET(APID(12))_REP_X
                           End DoDot:3
                       End DoDot:2
CONF      ;CONFIDENTIAL ADDRESS
 +1                IF $DATA(^DPT(DFN,.141))
                       NEW CNFADD
                       SET CNFADD=$$GET1^DIQ(2,DFN_",",.14105)
                       Begin DoDot:2
 +2                        NEW LINE1,LINE2,LINE3,STATEIEN,STATE,CNTRY,ZIP,LVL,LNGTH,NXT,CNFEND,CNFSTRT,SUBCOMP,CNTY,CITY
 +3                        SET SUBCOMP=$EXTRACT(HL("ECH"),4)
 +4                        SET LINE1=$$GET1^DIQ(2,DFN_",",.1411)
                           SET HL7STRG=LINE1
                           DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                           SET LINE1=HL7STRG
 +5                        SET LINE2=$$GET1^DIQ(2,DFN_",",.1412)
                           SET HL7STRG=LINE2
                           DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                           SET LINE2=HL7STRG
 +6                        SET LINE3=$$GET1^DIQ(2,DFN_",",.1413)
                           SET HL7STRG=LINE3
                           DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                           SET LINE3=HL7STRG
 +7                        SET CNFSTRT=$$FMTHL7^XLFDT($$GET1^DIQ(2,DFN_",",.1417,"I"))
                           SET CNFEND=$$FMTHL7^XLFDT($$GET1^DIQ(2,DFN_",",.1418,"I"))
 +8                        SET CITY=$$GET1^DIQ(2,DFN_",",.1414)
                           SET HL7STRG=CITY
                           DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                           SET CITY=HL7STRG
 +9                        SET CNTRY=$$GET1^DIQ(2,DFN_",",.14116)
 +10      ;if foriegn address
 +11                       IF CNTRY=""!(CNTRY="USA")!(CNTRY="US")
                               if CNTRY="US"
                                   SET CNTRY="USA"
                               SET STATEIEN=$$GET1^DIQ(2,DFN_",",.1415,"I")
                               SET STATE=$$GET1^DIQ(5,+STATEIEN_",",1)
                               SET CNTY=$$GET1^DIQ(2,DFN_",",.14111)
                               SET ZIP=$$GET1^DIQ(2,DFN_",",.1416)
 +12      ;if USA address or null assume USA address
                          IF '$TEST
                               SET STATE=$$GET1^DIQ(2,DFN_",",.14114)
                               SET ZIP=$$GET1^DIQ(2,DFN_",",.14115)
 +13                       SET LVL=0
                           SET LNGTH=$LENGTH(APID(12))
 +14                       IF $DATA(^DPT(DFN,.14,0))
                               NEW CNFTYP
                               SET CNFTYP=0
                               FOR 
                                   SET CNFTYP=$ORDER(^DPT(DFN,.14,CNFTYP))
                                   if 'CNFTYP
                                       QUIT 
                                   NEW CNFTYPA
                                   SET CNFTYPA=$PIECE(^DPT(DFN,.14,CNFTYP,0),"^",2)
                                   IF CNFTYPA="Y"
                                       SET CNFTYPA=$PIECE(^DPT(DFN,.14,CNFTYP,0),"^")
                                       Begin DoDot:3
 +15                                       SET NXT=""
 +16                                       SET $PIECE(NXT,COMP)=$SELECT(LINE1'="":LINE1,1:HL("Q"))
 +17                                       SET $PIECE(NXT,COMP,2)=$SELECT(LINE2'="":LINE2,1:HL("Q"))
 +18                                       SET $PIECE(NXT,COMP,8)=$SELECT(LINE3'="":LINE3,1:HL("Q"))
 +19                                       SET $PIECE(NXT,COMP,3)=$SELECT(CITY'="":CITY,1:HL("Q"))
 +20                                       SET $PIECE(NXT,COMP,4)=$SELECT($GET(STATE)'="":STATE,1:HL("Q"))
 +21                                       SET $PIECE(NXT,COMP,5)=$SELECT(ZIP'="":ZIP,1:HL("Q"))
 +22                                       SET $PIECE(NXT,COMP,6)=$SELECT(CNTRY'="":CNTRY,1:HL("Q"))
 +23                                       SET $PIECE(NXT,COMP,7)=$SELECT(CNFTYPA=1:"VACAE",CNFTYPA=2:"VACAA",CNFTYPA=3:"VACAC",CNFTYPA=4:"VACAM",CNFTYPA=5:"VACAO",1:HL("Q"))
 +24                                       SET $PIECE(NXT,COMP,9)=$SELECT($GET(CNTY)'="":CNTY,1:HL("Q"))
 +25                                       SET $PIECE(NXT,COMP,12)=CNFSTRT_SUBCOMP_CNFEND
 +26                                       SET NXT=REP_NXT
 +27                                       IF LVL=0
                                               Begin DoDot:4
 +28                                               IF $LENGTH(APID(12)_NXT)'>244
                                                       SET APID(12)=APID(12)_NXT
                                                       QUIT 
 +29                                               IF $LENGTH(APID(12)_NXT)>244
                                                       SET LVL=1
                                                       SET LNGTH=244-$LENGTH(APID(12))
                                                       SET APID(12)=APID(12)_$EXTRACT(NXT,1,LNGTH)
                                                       SET LNGTH=LNGTH+1
                                                       SET NXT=$EXTRACT(NXT,LNGTH,$LENGTH(NXT))
                                               End DoDot:4
 +30                                       IF LVL>0
                                               Begin DoDot:4
 +31                                               IF $LENGTH($GET(APID(12,LVL))_NXT)'>245
                                                       SET APID(12,LVL)=$GET(APID(12,LVL))_NXT
                                                       QUIT 
 +32                                               IF $LENGTH($GET(APID(12,LVL))_NXT)>245
                                                       SET LNGTH=244-$LENGTH(APID(12,LVL))
                                                       SET APID(12,LVL)=APID(12,LVL)_$EXTRACT(NXT,1,LNGTH)
                                                       SET LNGTH=LNGTH+1
                                                       SET NXT=$EXTRACT(NXT,LNGTH,$LENGTH(NXT))
                                                       SET LVL=LVL+1
                                                       SET APID(12,LVL)=NXT
                                               End DoDot:4
                                       End DoDot:3
 +33                       SET LVL1=LVL
 +34                       SET LNGTH1=LNGTH
                       End DoDot:2
RESI      ;KUM - 941 - TRANSMIT RESIDENTIAL ADDRESS
 +1       ;jam; patch 941 - get current option and include RES Address in PID if not ambulatory care transmit
 +2                NEW XQOPT
 +3                DO OP^XQCHK
 +4                IF $DATA(^DPT(DFN,.115))
                       IF $PIECE(XQOPT,"^",1)'["SCDX AMBCAR"
                           Begin DoDot:2
 +5                            NEW RESADD,LVL,LNGTH,RESDTA
 +6                            SET RESDTA=0
 +7                            NEW LINE1,LINE2,LINE3,STATEIEN,STATE,CNTRY,ZIP,LVL,LNGTH,NXT,NXT1,RESEND,RESSTRT,SUBCOMP,CNTY,CITY
 +8                            SET SUBCOMP=$EXTRACT(HL("ECH"),4)
 +9                            SET LINE1=$$GET1^DIQ(2,DFN_",",.1151)
                               SET HL7STRG=LINE1
                               DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                               SET LINE1=HL7STRG
 +10                           SET LINE2=$$GET1^DIQ(2,DFN_",",.1152)
                               SET HL7STRG=LINE2
                               DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                               SET LINE2=HL7STRG
 +11                           SET LINE3=$$GET1^DIQ(2,DFN_",",.1153)
                               SET HL7STRG=LINE3
                               DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                               SET LINE3=HL7STRG
 +12      ;S RESSTRT=$$FMTHL7^XLFDT($$GET1^DIQ(2,DFN_",",.1161,"I")),RESEND=$$FMTHL7^XLFDT($$GET1^DIQ(2,DFN_",",.1162,"I"))
 +13                           SET CITY=$$GET1^DIQ(2,DFN_",",.1154)
                               SET HL7STRG=CITY
                               DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                               SET CITY=HL7STRG
 +14                           SET CNTRY=$$GET1^DIQ(2,DFN_",",.11573)
 +15      ;if foriegn address
 +16                           IF CNTRY=""!(CNTRY="USA")!(CNTRY="US")
                                   if CNTRY="US"
                                       SET CNTRY="USA"
                                   SET STATEIEN=$$GET1^DIQ(2,DFN_",",.1155,"I")
                                   SET STATE=$$GET1^DIQ(5,+STATEIEN_",",1)
                                   SET CNTY=$$GET1^DIQ(2,DFN_",",.1157)
                                   SET ZIP=$$GET1^DIQ(2,DFN_",",.1156)
 +17      ;if USA address or null assume USA address
                              IF '$TEST
                                   SET STATE=$$GET1^DIQ(2,DFN_",",.11571)
                                   SET ZIP=$$GET1^DIQ(2,DFN_",",.11572)
 +18                           IF '$GET(LNGTH1)
                                   SET LNGTH1=0
 +19                           SET LNGTH=LNGTH1
 +20                           SET LVL=LVL1
 +21                           SET NXT=""
 +22                           IF ($GET(LINE1)'="")!($GET(LINE2)'="")!($GET(LINE3)'="")!($GET(CITY)'="")!($GET(STATE)'="")!($GET(ZIP)'="")!($GET(CNTRY)'="")!($GET(CNTY)'="")
                                   SET RESDTA=1
 +23                           SET $PIECE(NXT,COMP)=$SELECT(LINE1'="":LINE1,1:HL("Q"))
 +24                           SET $PIECE(NXT,COMP,2)=$SELECT(LINE2'="":LINE2,1:HL("Q"))
 +25                           SET $PIECE(NXT,COMP,8)=$SELECT(LINE3'="":LINE3,1:HL("Q"))
 +26                           SET $PIECE(NXT,COMP,3)=$SELECT(CITY'="":CITY,1:HL("Q"))
 +27                           SET $PIECE(NXT,COMP,4)=$SELECT($GET(STATE)'="":STATE,1:HL("Q"))
 +28                           SET $PIECE(NXT,COMP,5)=$SELECT(ZIP'="":ZIP,1:HL("Q"))
 +29                           SET $PIECE(NXT,COMP,6)=$SELECT(CNTRY'="":CNTRY,1:HL("Q"))
 +30                           SET $PIECE(NXT,COMP,7)="R"
 +31                           SET $PIECE(NXT,COMP,9)=$SELECT($GET(CNTY)'="":CNTY,1:HL("Q"))
 +32      ;S $P(NXT,COMP,10)=HL("Q")
 +33      ;S $P(NXT,COMP,12)=RESSTRT_SUBCOMP_RESEND
 +34                           SET NXT=REP_NXT
 +35                           IF RESDTA
                                   Begin DoDot:3
 +36                                   IF LVL=0
                                           Begin DoDot:4
 +37                                           IF $LENGTH(APID(12)_NXT)'>244
                                                   SET APID(12)=APID(12)_NXT
                                                   QUIT 
 +38                                           IF $LENGTH(APID(12)_NXT)>244
                                                   SET LVL=1
                                                   SET LNGTH=244-$LENGTH(APID(12))
                                                   SET APID(12)=APID(12)_$EXTRACT(NXT,1,LNGTH)
                                                   SET LNGTH=LNGTH+1
                                                   SET NXT=$EXTRACT(NXT,LNGTH,$LENGTH(NXT))
                                           End DoDot:4
 +39                                   IF LVL>0
                                           Begin DoDot:4
 +40                                           IF $LENGTH($GET(APID(12,LVL))_NXT)'>245
                                                   SET APID(12,LVL)=$GET(APID(12,LVL))_NXT
                                                   QUIT 
 +41                                           IF $LENGTH($GET(APID(12,LVL))_NXT)>245
                                                   SET LNGTH=244-$LENGTH(APID(12,LVL))
                                                   SET APID(12,LVL)=APID(12,LVL)_$EXTRACT(NXT,1,LNGTH)
                                                   SET LNGTH=LNGTH+1
                                                   SET NXT=$EXTRACT(NXT,LNGTH,$LENGTH(NXT))
                                                   SET LVL=LVL+1
                                                   SET APID(12,LVL)=NXT
                                           End DoDot:4
                                   End DoDot:3
                           End DoDot:2
               End DoDot:1
 +42      ;county code **648 backwards compatibility only
           IF $DATA(SARY(12))!(SEQ="ALL")
               SET APID(13)=$$GET1^DIQ(2,DFN_",",.117)
               IF APID(13)=""
                   SET APID(13)=HL("Q")
PHONE      IF $DATA(SARY(13))!($DATA(SARY(14)))!(SEQ="ALL")
               Begin DoDot:1
 +1       ;**707 change PID-13 to have home and work phones, cell, pager and e-mail address with the components ; **754 add confidential phone number to PID-13
 +2       ;**754
                   NEW PHONEN,HNUM,WNUM,EMAIL,CELL,PAGER,CONFNUM,DGEXT,DGEXT2,DGCNTRY,DGAREA,DGPH
 +3                SET PHONEN=$GET(^DPT(DFN,.13))
 +4       ; **707 change to ensure that null doesn't end up for any of these fields cmc 12/7/06
 +5       ; **DG*5.3*1121 accommodate country code, area code, phone number, extension in pieces 5 to 8 in each phone number component
 +6       ;S HNUM=$P(PHONEN,"^") I HNUM'="" S HNUM=$$HLPHONE^HLFNC(HNUM) I HNUM'="" S HL7STRG=HNUM D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S HNUM=HL7STRG_COMP_"PRN"_COMP_"PH"
 +7                SET HNUM=$PIECE(PHONEN,"^")
                   IF HNUM'=""
                       Begin DoDot:2
 +8       ;S HL7STRG=HNUM
 +9                        SET HL7STRG=$TRANSLATE(HNUM,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 +10                       DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                           SET DGEXT=""
                           SET DGEXT2=""
                           SET DGCNTRY=""
                           SET DGAREA=""
                           SET DGPH=""
 +11                       SET DGEXT=$PIECE(HL7STRG,"X",2)
 +12                       SET DGEXT=$$CONVPHAN(DGEXT)
 +13                       SET DGEXT2=$$GET1^DIQ(2,DFN_",",.13211)
 +14                       SET DGEXT2=$$CONVPHAN(DGEXT2)
 +15                       IF DGEXT2'=""
                               SET DGEXT=DGEXT2
 +16                       SET DGEXT=$EXTRACT(DGEXT,1,6)
 +17                       SET DGCNTRY=$$GET1^DIQ(2,DFN_",",.1327,"I")
 +18                       SET DGCNTRY=$$CONVPHAN(DGCNTRY)
 +19                       IF $GET(DGCNTRY)=""
                               SET DGCNTRY=1
 +20                       SET DGPH=$PIECE(HL7STRG,"X",1)
 +21                       SET DGPH=$$CONVPHAN(DGPH)
 +22                       SET DGAREA=$EXTRACT(DGPH,1,3)
 +23                       SET DGPH=$EXTRACT(DGPH,4,10)
 +24                       IF DGPH=""
                               SET DGEXT=""
                               SET DGCNTRY=""
                               SET DGAREA=""
 +25                       SET HNUM=HL7STRG_COMP_"PRN"_COMP_"PH"_COMP_COMP_DGCNTRY_COMP_DGAREA_COMP_DGPH_COMP_DGEXT
                       End DoDot:2
 +26      ;S WNUM=$P(PHONEN,"^",2) I WNUM'="" S WNUM=$$HLPHONE^HLFNC(WNUM) I WNUM'="" S HL7STRG=WNUM D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S WNUM=HL7STRG_COMP_"WPN"_COMP_"PH"
 +27               SET WNUM=$PIECE(PHONEN,"^",2)
                   IF WNUM'=""
                       Begin DoDot:2
 +28      ;S HL7STRG=WNUM
 +29                       SET HL7STRG=$TRANSLATE(WNUM,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 +30                       DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                           SET DGEXT=""
                           SET DGEXT2=""
                           SET DGCNTRY=""
                           SET DGAREA=""
                           SET DGPH=""
 +31                       SET DGEXT=$PIECE(HL7STRG,"X",2)
 +32                       SET DGEXT=$$CONVPHAN(DGEXT)
 +33                       SET DGEXT2=$$GET1^DIQ(2,DFN_",",.13213)
 +34                       SET DGEXT2=$$CONVPHAN(DGEXT2)
 +35                       IF DGEXT2'=""
                               SET DGEXT=DGEXT2
 +36                       SET DGEXT=$EXTRACT(DGEXT,1,6)
 +37                       SET DGCNTRY=$$GET1^DIQ(2,DFN_",",.1329,"I")
 +38                       SET DGCNTRY=$$CONVPHAN(DGCNTRY)
 +39                       IF $GET(DGCNTRY)=""
                               SET DGCNTRY=1
 +40                       SET DGPH=$PIECE(HL7STRG,"X",1)
 +41                       SET DGPH=$$CONVPHAN(DGPH)
 +42                       SET DGAREA=$EXTRACT(DGPH,1,3)
 +43                       SET DGPH=$EXTRACT(DGPH,4,10)
 +44                       IF DGPH=""
                               SET DGEXT=""
                               SET DGCNTRY=""
                               SET DGAREA=""
 +45                       SET WNUM=HL7STRG_COMP_"WPN"_COMP_"PH"_COMP_COMP_DGCNTRY_COMP_DGAREA_COMP_DGPH_COMP_DGEXT
                       End DoDot:2
 +46      ;S CELL=$P(PHONEN,"^",4) I CELL'="" S CELL=$$HLPHONE^HLFNC(CELL) I CELL'="" S HL7STRG=CELL D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S CELL=HL7STRG_COMP_"ORN"_COMP_"CP"
 +47               SET CELL=$PIECE(PHONEN,"^",4)
                   IF CELL'=""
                       Begin DoDot:2
 +48      ;S HL7STRG=CELL
 +49                       SET HL7STRG=$TRANSLATE(CELL,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 +50                       DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                           SET DGEXT=""
                           SET DGEXT2=""
                           SET DGCNTRY=""
                           SET DGAREA=""
                           SET DGPH=""
 +51                       SET DGEXT=$PIECE(HL7STRG,"X",2)
 +52                       SET DGEXT=$$CONVPHAN(DGEXT)
 +53                       SET DGEXT2=$$GET1^DIQ(2,DFN_",",.13212)
 +54                       SET DGEXT2=$$CONVPHAN(DGEXT2)
 +55                       IF DGEXT2'=""
                               SET DGEXT=DGEXT2
 +56                       SET DGEXT=$EXTRACT(DGEXT,1,6)
 +57                       SET DGCNTRY=$$GET1^DIQ(2,DFN_",",.1328,"I")
 +58                       SET DGCNTRY=$$CONVPHAN(DGCNTRY)
 +59                       IF $GET(DGCNTRY)=""
                               SET DGCNTRY=1
 +60                       SET DGPH=$PIECE(HL7STRG,"X",1)
 +61                       SET DGPH=$$CONVPHAN(DGPH)
 +62                       SET DGAREA=$EXTRACT(DGPH,1,3)
 +63                       SET DGPH=$EXTRACT(DGPH,4,10)
 +64                       IF DGPH=""
                               SET DGEXT=""
                               SET DGCNTRY=""
                               SET DGAREA=""
 +65                       SET CELL=HL7STRG_COMP_"ORN"_COMP_"CP"_COMP_COMP_DGCNTRY_COMP_DGAREA_COMP_DGPH_COMP_DGEXT
                       End DoDot:2
 +66               SET PAGER=$PIECE(PHONEN,"^",5)
                   IF PAGER'=""
                       SET PAGER=$$HLPHONE^HLFNC(PAGER)
                       IF PAGER'=""
                           SET HL7STRG=PAGER
                           DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                           SET PAGER=HL7STRG_COMP_"BPN"_COMP_"BP"
 +67               SET EMAIL=$PIECE(PHONEN,"^",3)
                   IF EMAIL'=""
                       SET HL7STRG=EMAIL
                       DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                       SET EMAIL=COMP_"NET"_COMP_"INTERNET"_COMP_HL7STRG
 +68      ;S CONFNUM=$P(PHONEN,"^",15) I CONFNUM'="" S CONFNUM=$$HLPHONE^HLFNC(CONFNUM) I CONFNUM'="" S HL7STRG=CONFNUM D HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES) S CONFNUM=HL7STRG_COMP_"VACPN"_COMP_"PH" ;**574
 +69               SET CONFNUM=$PIECE(PHONEN,"^",15)
                   IF CONFNUM'=""
                       Begin DoDot:2
 +70      ;S HL7STRG=CONFNUM
 +71                       SET HL7STRG=$TRANSLATE(CONFNUM,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 +72                       DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                           SET DGEXT=""
                           SET DGEXT2=""
                           SET DGCNTRY=""
                           SET DGAREA=""
                           SET DGPH=""
 +73                       SET DGEXT=$PIECE(HL7STRG,"X",2)
 +74                       SET DGEXT=$$CONVPHAN(DGEXT)
 +75                       SET DGEXT2=$$GET1^DIQ(2,DFN_",",.13214)
 +76                       SET DGEXT2=$$CONVPHAN(DGEXT2)
 +77                       IF DGEXT2'=""
                               SET DGEXT=DGEXT2
 +78                       SET DGEXT=$EXTRACT(DGEXT,1,6)
 +79                       SET DGCNTRY=$$GET1^DIQ(2,DFN_",",.13201,"I")
 +80                       SET DGCNTRY=$$CONVPHAN(DGCNTRY)
 +81                       IF $GET(DGCNTRY)=""
                               SET DGCNTRY=1
 +82                       SET DGPH=$PIECE(HL7STRG,"X",1)
 +83                       SET DGPH=$$CONVPHAN(DGPH)
 +84                       SET DGAREA=$EXTRACT(DGPH,1,3)
 +85                       SET DGPH=$EXTRACT(DGPH,4,10)
 +86                       IF DGPH=""
                               SET DGEXT=""
                               SET DGCNTRY=""
                               SET DGAREA=""
 +87                       SET CONFNUM=HL7STRG_COMP_"VACPN"_COMP_"PH"_COMP_COMP_DGCNTRY_COMP_DGAREA_COMP_DGPH_COMP_DGEXT
                       End DoDot:2
 +88      ; DG*5.3*1121 - End of changes
 +89               IF HNUM'=""
                       SET APID(14)=HNUM
 +90               IF WNUM'=""
                       IF APID(14)'=""
                           SET APID(14)=APID(14)_REP_WNUM
 +91               IF WNUM'=""
                       IF APID(14)=""
                           SET APID(14)=WNUM
 +92               IF CELL'=""
                       IF APID(14)'=""
                           SET APID(14)=APID(14)_REP_CELL
 +93               IF CELL'=""
                       IF APID(14)=""
                           SET APID(14)=CELL
 +94               IF PAGER'=""
                       IF APID(14)'=""
                           SET APID(14)=APID(14)_REP_PAGER
 +95               IF PAGER'=""
                       IF APID(14)=""
                           SET APID(14)=PAGER
 +96               IF EMAIL'=""
                       IF APID(14)'=""
                           SET APID(14)=APID(14)_REP_EMAIL
 +97               IF EMAIL'=""
                       IF APID(14)=""
                           SET APID(14)=EMAIL
 +98      ;**754
                   IF CONFNUM'=""
                       IF APID(14)'=""
                           SET APID(14)=APID(14)_REP_CONFNUM
 +99      ;**754
                   IF CONFNUM'=""
                       IF APID(14)=""
                           SET APID(14)=CONFNUM
 +100              IF APID(14)=""
                       SET APID(14)=HL("Q")
               End DoDot:1
 +101      IF $DATA(SARY(14))!(SEQ="ALL")
               NEW WNUM
               SET WNUM=$PIECE($GET(^DPT(DFN,.13)),"^",2)
               SET WNUM=$$HLPHONE^HLFNC(WNUM)
               SET HL7STRG=WNUM
               DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
               SET APID(15)=HL7STRG
               IF APID(15)=""
                   SET APID(15)=HL("Q")
 +102     ;**707 keep work# in PID-14 for backwards compatability but should use PID-13 to get work#
 +103     ;ssn passed in PID-3
           IF $DATA(SARY(19))!(SEQ="ALL")
               SET APID(20)=SSN
 +104      IF $DATA(SARY(23))!(SEQ="ALL")
               Begin DoDot:1
 +105              SET CITY=$$GET1^DIQ(2,DFN_",",.092)
                   SET HL7STRG=CITY
                   DO HL7TXT^VAFCQRY1(.HL7STRG,.HL,HLES)
                   SET CITY=HL7STRG
 +106              SET STATEIEN=$$GET1^DIQ(2,DFN_",",.093,"I")
                   SET STATE=$$GET1^DIQ(5,+STATEIEN_",",1)
                   Begin DoDot:2
                   End DoDot:2
 +107     ;place of birth (not used) use PID-11 with an 'N' instead
                   IF CITY'=""&(STATE'="")
                       SET APID(24)=CITY_" "_STATE
 +108              IF CITY=""&(STATE="")
                       SET APID(24)=HL("Q")
               End DoDot:1
 +109      DO CONT^VAFCQRY4(DFN,.APID,.PID,.HL,HLES,.SARY,SEQ,.ERROR,REP,COMP)
 +110     ;**707 had to break routine
 +111      QUIT 
 +112     ;
CONVPHAN(PH) ;Convert Alpha Phone number to Numeric
 +1        SET PH=$TRANSLATE(PH," )(/#\-~`!@#$%^&*'|<>?,.+=_abcdefghijklmnopqrstvuwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ","")
 +2        QUIT PH
 +3       ;