LREPI3 ;DALOI/SED - EMERGING PATHOGENS HL7 SEGMENTS ;Aug 20, 2021@09:32
 ;;5.2;LAB SERVICE;**132,175,260,281,320,315,421,442,526,552**;Sep 27, 1994;Build 2
 ;
 ; Reference to ^DGPT supported by IA #418
 ; Reference to DGPTFUT supported by IA #6130
 ; Reference to ^SC supported by IA #10040
 ; Reference to ^DIC(21 supported by IA #4280
 ; Reference to ICN supported by IA #2701
 ; Reference to VAFHLPID supported by IA # 263
 ; Reference to VAFHLPV1 supported by IA # 3018
 ; Reference to ^DIC(5 supported by IA # 10056
 ; Reference to $$BADADR^DGUTL3 supported by IA #4080
 ; Reference to VADPT supported by IA #10061
 ; Reference to ^AUPNVPOV supported by IA # 3094
 ; Reference to ^AUPNVSIT supported by IA #3530
 ; Reference to $$STA^XUAF4(IEN) supported by IA #2171
 ; Reference to $$PTR2CODE^DGUTL4 supported by IA #3799
 ; Reference to $$CODEN^ICDEX supported by IA #5747
 ;
NTE ;TO BUILD THE NTE SEGMENT TO DEFINE THE EPI
 S LRDATA="NTE"_HLFS_LRNTE_HLFS_$P(^LAB(69.5,LRPATH,0),U,9)_LRCS_$P(^LAB(69.5,LRPATH,0),U,1)
 S LRCNT=LRCNT+1,^TMP("HLS",$J,LRCNT)=$$UP^XLFSTR(LRDATA)
 S ^TMP("LREPIREP",$J,LRCNT)=$$UP^XLFSTR(LRDATA)
 S LRMSGSZ=LRMSGSZ+$L(LRDATA)
 S LRNTE=LRNTE+1
 Q
DG1 ;BUILD THE DG1 FOR ICD CODES
 K ^TMP($J,"DG1")
 S IFN=+$G(^TMP($J,LRPROT,DFN,LRENDT,LRPATH,LRINVD,LRND))
DG11 Q:+IFN'>0
 N LRDGPT,LRPDX,LRADMDT,LRDGMV
 D PTFICD^DGPTFUT("701",IFN,,.LRDGPT)
 Q:$G(LRDGPT)=""
 S LRPDX=$P($G(LRDGPT(0)),"^")
 S LRADMDT=$$HLDATE^HLFNC($P(LRDGPT,"^",3))
 ; Date of Interest is Discharge Date if present, otherwise Current
 ; System Date
 N LRDTINT S LRDTINT=$S($P(LRDGPT,"^",10)]"":$P(LRDGPT,"^",10),1:DT)
 ;SEARCH FOR LEGIONAIRS HERE
 I $P($G(^DGPT(IFN,300)),U,3)=1 D
 .I '$D(LRICDX) S LRCSYS=$$ICDSYS^LREPICD(LRDTINT,"D"),LRICDX=$S(LRCSYS="ICD":0,LRCSYS="10D":1,1:-1)
 .I 'LRICDX S LRICDIEN=+$$CODEN^ICDEX("482.84 ",80) Q:+LRICDIEN'>0  S ^TMP($J,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
 .I LRICDX,LRICDX'=-1 F XCODE="A48.1","A48.2","A48.8" D  Q:'$D(LRICDIEN)
 ..S LRICDIEN(XCODE)=+$$CODEN^ICDEX(XCODE,80) I +LRICDIEN(XCODE)'>0 K LRICDIEN(XCODE) Q
 ..S ^TMP($J,"DG1",LRICDIEN(XCODE))=LRPDX_"^"_LRADMDT
 S LRI=-1 F  S LRI=$O(LRDGPT(LRI)) Q:LRI=""  D
 .S LRICDIEN=$P(LRDGPT(LRI),"^") Q:+LRICDIEN'>0
 .S ^TMP($J,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
 ;SEARCH SUB FIELDS
 D PTFIEN^DGPTFUT("501",IFN,.LRDGMV)
 S LRMV=0 F  S LRMV=$O(LRDGMV(LRMV)) Q:'LRMV  K LRDGPT D PTFICD^DGPTFUT("501",IFN,LRMV,.LRDGPT)  D:$D(LRDGPT)>9
 .;SEARCH FOR LEGIONAIRS HERE IN SUB FILE
 .I $P($G(^DGPT(IFN,"M",LRMV,300)),U,3)=1 D
 ..I 'LRICDX S LRICDIEN=$$CODEN^ICDEX("482.84 ",80) Q:+LRICDIEN'>0  S ^TMP($J,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
 ..I LRICDX,LRICDX'=-1 F XCODE="A48.1","A48.2","A48.8" D  Q:'$D(LRICDIEN)
 ...S LRICDIEN(XCODE)=+$$CODEN^ICDEX(XCODE,80) I +LRICDIEN(XCODE)'>0 K LRICDIEN(XCODE) Q
 ...S ^TMP($J,"DG1",LRICDIEN(XCODE))=LRPDX_"^"_LRADMDT
 .S LRI=0 F  S LRI=$O(LRDGPT(LRI)) Q:'LRI  D
 ..S LRICDIEN=$P(LRDGPT(LRI),"^") Q:+LRICDIEN'>0
 ..S ^TMP($J,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
 Q:'$D(^TMP($J,"DG1"))
BLD S LRICDIEN=0 F  S LRICDIEN=$O(^TMP($J,"DG1",LRICDIEN)) Q:+LRICDIEN'>0  D
 .S:'$D(DGCNT) DGCNT=1
 .N LRTMP,LRXSYS
 .K LRCSYS S LRCSYS=$$ICDSYS^LREPICD(LRDTINT,"D") Q:$P(LRCSYS,U,1)=-1
 .S LRTMP=$$ICDDATA^ICDXCODE(LRCSYS,LRICDIEN,$G(LRDTINT,""),)
 .K LRDATA,LREPICSY
 .S LREPICSY=$S($P(LRTMP,U,20)=1:" I9",$P(LRTMP,U,20)=30:"I10",1:"UNKNOWN CODE SYSTEM"),LRXSYS=$S(LRCSYS="ICD":" I9",1:"I10")
 .Q:LREPICSY'=LRXSYS
 .S LRDATA="DG1"_HLFS_DGCNT_HLFS_HLFS_$P(LRTMP,U,2)
 .S LRDATA=LRDATA_LRCS_$P(LRTMP,U,4)_LRCS_LREPICSY
 .I LRPROT=LRPROTX S LRDATA=LRDATA_HLFS_$P(^TMP($J,"DG1",LRICDIEN),"^",2)_HLFS_HLFS_$S(LRICDIEN=$P(^TMP($J,"DG1",LRICDIEN),"^"):"PR",1:"")
 .S ^TMP("HL7",$J,DGCNT)=$$UP^XLFSTR(LRDATA),DGCNT=DGCNT+1
 K ^TMP($J,"DG1"),LRDATA,DGCNT,LRICDIEN,LRMV,LRICDX,LRCSYS,XCODE
 Q
PID ;TO BUILD PID SEGMENT
 K MSG
 S FLDS="1,2,3,5,7,8,10BT,19,22BT" S MSG=$$EN^VAFHLPID(DFN,FLDS,LRPID)
 ;MADE CHANGE FOR PID SEGMENTS TOO LONG;CKA;06/30/04
 D DEM^VADPT
 I $D(VAFPID(1)) D
 .S $P(MSG,HLFS,11)=VADM(12),MSG=MSG_VAFPID(1),$P(MSG,HLFS,23)=VADM(11)
 S ICN=$$GETICN^MPIF001(DFN)
 S:ICN<0 $P(MSG,HLFS,4)=$P(MSG,HLFS,4)_LRCS_""""""_LRCS_"VAMPI"
 S:ICN>0 $P(MSG,HLFS,4)=$P(MSG,HLFS,4)_LRCS_ICN_LRCS_"VAMPI"
 ;ADDITIONAL DATA ADDED HERE HOMELESSNESS
 S:$$BADADR^DGUTL3(DFN)=2 $P(MSG,HLFS,12)="HOMELESS"
 ;NOW GET PERIOD OF SERVICE
 K VAEL D ELIG^VADPT
 S:$G(VAEL(2))'="" $P(MSG,HLFS,28)=$P($G(^DIC(21,+VAEL(2),0)),U,3)
 K VAEL
 ;GET ZIP IF THERE
 K VAPA D ADD^VADPT
 S $P(MSG,HLFS,12)=$P(MSG,HLFS,12)_LRCS_LRCS_LRCS_VAPA(5)_LRCS_$G(VAPA(6))_LRCS_LRCS_LRCS_LRCS
 I VAPA(7)'="",VAPA(5)'="" S CTY=$P(VAPA(7),U,2),CTYN=$P(VAPA(7),U) I CTYN'="" S CTYCD=$P($G(^DIC(5,$P(VAPA(5),U),1,CTYN,0)),U,3) D
 .S $P(MSG,HLFS,12)=$P(MSG,HLFS,12)_$G(CTYCD)_"^"_$G(CTY)
 K VAPA,CTY,CTYN,CTYCD,LRRACE
 I $P(MSG,HLFS,12)="~~~~~~~~" S $P(MSG,HLFS,12)=""
 S LRRACE=$$PTR2CODE^DGUTL4($P(VADM(8),U))
 I $L(MSG)>245 D
 .S $P(MSG,HLFS,11)=VADM(12),$P(MSG,HLFS,23)=VADM(11)
 S:$P(MSG,HLFS,11)="""""~""""~0005~""""~""""~CDC" $P(MSG,HLFS,11)=""
 S:$P(MSG,HLFS,23)="""""~""""~0189~""""~""""~CDC" $P(MSG,HLFS,23)=""
 S $P(MSG,HLFS,11)=LRRACE_"~"_$P(MSG,HLFS,11)
 I $P(MSG,HLFS,11)="~" S $P(MSG,HLFS,11)=""
 S LRPID=LRPID+1,LRCNT=LRCNT+1,^TMP("HLS",$J,LRCNT)=$$UP^XLFSTR(MSG)
 S ^TMP("LREPIREP",$J,LRCNT)=$$UP^XLFSTR(MSG)
 S LRMSGSZ=LRMSGSZ+$L(MSG)
 K FLDS,VAEL,ICN,VAFPID,VADM
 Q
PV1 ;TO BUILD PV1 SEGMENT
 K PTF,Y,C,LRDATA,MSG,LRPATLOC
 S LRDATA=""
 I $P(^TMP($J,LRPROT,DFN,LRENDT),U)="I" D
 .S FLDS="1,2,3,36,39,44,45" S LRDATA=$$IN^VAFHLPV1(DFN,LRENDT,FLDS,"","","","")
 I $P(LRDATA,HLFS)="" S $P(LRDATA,HLFS)="PV1"
 S $P(LRDATA,HLFS,2)=LRPV1
 S $P(LRDATA,HLFS,7)=""
 S $P(LRDATA,HLFS,3)=$P(^TMP($J,LRPROT,DFN,LRENDT),U)
 I $P(LRDATA,HLFS,3)="O" D
 .S LRPATLOC=$P(^TMP($J,LRPROT,DFN,LRENDT),U,2)
 .S LRFILE=$P(LRPATLOC,";",2)
 .S LRIFN=$P(LRPATLOC,";")
 .I LRFILE="SC(" D
 ..I $P($G(^SC(LRIFN,0)),U,4)'="" D
 ...S LRPATLOC=$$STA^XUAF4($P($G(^SC(LRIFN,0)),U,4))
 .I LRFILE="DIC(4" D
 ..I $$STA^XUAF4(LRIFN)'="" D
 ...S LRPATLOC=$$STA^XUAF4(LRIFN)
 .S $P(LRDATA,HLFS,39)=LRPATLOC
 .K LRPATLOC,LRFILE,LRIFN
 S:$P(^TMP($J,LRPROT,DFN,LRENDT),U,3)="UPDT" $P(LRDATA,HLFS,3)="U"
 S $P(LRDATA,HLFS,45)=$$HLDATE^HLFNC(LRENDT)
 S:$P(LRDATA,HLFS,46)="""""" $P(LRDATA,HLFS,46)=""
 ;MADE CHANGE FOR FUTURE DISCHARGE DATES;CKA 6/30/2004
 S:$P(LRDATA,HLFS,46)>LRRPE $P(LRDATA,HLFS,46)=""
 S PTF=$P(^TMP($J,LRPROT,DFN,LRENDT),U,2) I +PTF>0 D
 .Q:'$D(^DGPT(PTF,0))
 .Q:$P(^DGPT(PTF,0),U,6)'=3
 .Q:'$D(^DGPT(PTF,70))
 .I +$P(^DGPT(PTF,70),U)>0,+$P(^DGPT(PTF,70),U)<LRRPE S $P(LRDATA,HLFS,46)=$$HLDATE^HLFNC($P(^DGPT(PTF,70),U))
 .S (Y,LRDTY)=$P(^DGPT(PTF,70),U,3)
 .Q:+Y'>0
 .S Y=$$EXTERNAL^DILFD(45,72,,Y) ;removed direct reference to ^DD(45,72
 .;S C=$P(^DD(45,72,0),U,2) D Y^DIQ ;RLM
 .S $P(LRDATA,HLFS,37)=LRDTY_LRCS_Y_LRCS_"VA45"
 .S $P(LRDATA,HLFS,40)=$P(^DGPT(PTF,0),U,3)
 S LRCNT=LRCNT+1,^TMP("HLS",$J,LRCNT)=$$UP^XLFSTR(LRDATA),LRPV1=LRPV1+1
 S ^TMP("LREPIREP",$J,LRCNT)=$$UP^XLFSTR(LRDATA)
 S LRMSGSZ=LRMSGSZ+$L(LRDATA)
 I $P(LRDATA,HLFS,3)="O" D  D MOVE^LREPI2
 .S VIFN=0
 .F  S VIFN=$O(^AUPNVPOV("AA",DFN,9999999-$P(LRENDT,"."),VIFN)) Q:+VIFN'>0  D
 ..S LRVISIT=$P(^AUPNVSIT($P(^AUPNVPOV(VIFN,0),U,3),812),U,2)
 ..I LRVISIT'=26 S LRVISIT=0 Q
 ..S LRICDN=$P($G(^AUPNVPOV(VIFN,0)),U)
 ..Q:LRICDN=""
 ..N LRTMP
 ..I $G(LRCSYS)="" S LRCSYS=$$CSI^ICDEX(80,LRICDN)
 ..S LRTMP=$$ICDDATA^ICDXCODE(LRCSYS,LRICDN,,)
 ..;LR*5.2*552: correct undef error on LREPICSY
 ..;Section BLD has different calls to determine LRCSYS and LRTMP.
 ..;But the output generated is the same.
 ..S LREPICSY=$S($P(LRTMP,U,20)=1:" I9",$P(LRTMP,U,20)=30:"I10",1:"UNKNOWN CODE SYSTEM"),LRXSYS=$S(LRCSYS=1:" I9",1:"I10")
 ..Q:LREPICSY'=LRXSYS
 ..;end LR*5.2*552
 ..S:'$D(DGCNT) DGCNT=1
 ..S LRDATA="DG1"_HLFS_DGCNT_HLFS_LREPICSY_HLFS_$P(LRTMP,U,2)
 ..S LRDATA=LRDATA_LRCS_$P(LRTMP,U,4)_LRCS_LREPICSY
 ..S LRDATA=LRDATA_HLFS_$$HLDATE^HLFNC(LRENDT)_HLFS_HLFS_$S($P(^AUPNVPOV(VIFN,0),U,12)="P":"PR",1:"")
 ..S ^TMP("HL7",$J,DGCNT)=$$UP^XLFSTR(LRDATA)
 .. S DGCNT=DGCNT+1
 K DGCNT,VIFN,LRICDN,LRICDIEN,LRDATA,LRVISIT
 Q:$G(PTF)'>0
 Q:'$D(^DGPT(PTF,0))
 Q:$P(^DGPT(PTF,0),U,6)'=3
 S IFN=PTF D DG11
 D MOVE^LREPI2
 K PTF,Y,C,LRDATA,LRDTY,IFN,LRICDIEN,LRICDN,LROLLOC,VIFN
 Q
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLREPI3   8372     printed  Sep 23, 2025@19:49:53                                                                                                                                                                                                      Page 2
LREPI3    ;DALOI/SED - EMERGING PATHOGENS HL7 SEGMENTS ;Aug 20, 2021@09:32
 +1       ;;5.2;LAB SERVICE;**132,175,260,281,320,315,421,442,526,552**;Sep 27, 1994;Build 2
 +2       ;
 +3       ; Reference to ^DGPT supported by IA #418
 +4       ; Reference to DGPTFUT supported by IA #6130
 +5       ; Reference to ^SC supported by IA #10040
 +6       ; Reference to ^DIC(21 supported by IA #4280
 +7       ; Reference to ICN supported by IA #2701
 +8       ; Reference to VAFHLPID supported by IA # 263
 +9       ; Reference to VAFHLPV1 supported by IA # 3018
 +10      ; Reference to ^DIC(5 supported by IA # 10056
 +11      ; Reference to $$BADADR^DGUTL3 supported by IA #4080
 +12      ; Reference to VADPT supported by IA #10061
 +13      ; Reference to ^AUPNVPOV supported by IA # 3094
 +14      ; Reference to ^AUPNVSIT supported by IA #3530
 +15      ; Reference to $$STA^XUAF4(IEN) supported by IA #2171
 +16      ; Reference to $$PTR2CODE^DGUTL4 supported by IA #3799
 +17      ; Reference to $$CODEN^ICDEX supported by IA #5747
 +18      ;
NTE       ;TO BUILD THE NTE SEGMENT TO DEFINE THE EPI
 +1        SET LRDATA="NTE"_HLFS_LRNTE_HLFS_$PIECE(^LAB(69.5,LRPATH,0),U,9)_LRCS_$PIECE(^LAB(69.5,LRPATH,0),U,1)
 +2        SET LRCNT=LRCNT+1
           SET ^TMP("HLS",$JOB,LRCNT)=$$UP^XLFSTR(LRDATA)
 +3        SET ^TMP("LREPIREP",$JOB,LRCNT)=$$UP^XLFSTR(LRDATA)
 +4        SET LRMSGSZ=LRMSGSZ+$LENGTH(LRDATA)
 +5        SET LRNTE=LRNTE+1
 +6        QUIT 
DG1       ;BUILD THE DG1 FOR ICD CODES
 +1        KILL ^TMP($JOB,"DG1")
 +2        SET IFN=+$GET(^TMP($JOB,LRPROT,DFN,LRENDT,LRPATH,LRINVD,LRND))
DG11       if +IFN'>0
               QUIT 
 +1        NEW LRDGPT,LRPDX,LRADMDT,LRDGMV
 +2        DO PTFICD^DGPTFUT("701",IFN,,.LRDGPT)
 +3        if $GET(LRDGPT)=""
               QUIT 
 +4        SET LRPDX=$PIECE($GET(LRDGPT(0)),"^")
 +5        SET LRADMDT=$$HLDATE^HLFNC($PIECE(LRDGPT,"^",3))
 +6       ; Date of Interest is Discharge Date if present, otherwise Current
 +7       ; System Date
 +8        NEW LRDTINT
           SET LRDTINT=$SELECT($PIECE(LRDGPT,"^",10)]"":$PIECE(LRDGPT,"^",10),1:DT)
 +9       ;SEARCH FOR LEGIONAIRS HERE
 +10       IF $PIECE($GET(^DGPT(IFN,300)),U,3)=1
               Begin DoDot:1
 +11               IF '$DATA(LRICDX)
                       SET LRCSYS=$$ICDSYS^LREPICD(LRDTINT,"D")
                       SET LRICDX=$SELECT(LRCSYS="ICD":0,LRCSYS="10D":1,1:-1)
 +12               IF 'LRICDX
                       SET LRICDIEN=+$$CODEN^ICDEX("482.84 ",80)
                       if +LRICDIEN'>0
                           QUIT 
                       SET ^TMP($JOB,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
 +13               IF LRICDX
                       IF LRICDX'=-1
                           FOR XCODE="A48.1","A48.2","A48.8"
                               Begin DoDot:2
 +14                               SET LRICDIEN(XCODE)=+$$CODEN^ICDEX(XCODE,80)
                                   IF +LRICDIEN(XCODE)'>0
                                       KILL LRICDIEN(XCODE)
                                       QUIT 
 +15                               SET ^TMP($JOB,"DG1",LRICDIEN(XCODE))=LRPDX_"^"_LRADMDT
                               End DoDot:2
                               if '$DATA(LRICDIEN)
                                   QUIT 
               End DoDot:1
 +16       SET LRI=-1
           FOR 
               SET LRI=$ORDER(LRDGPT(LRI))
               if LRI=""
                   QUIT 
               Begin DoDot:1
 +17               SET LRICDIEN=$PIECE(LRDGPT(LRI),"^")
                   if +LRICDIEN'>0
                       QUIT 
 +18               SET ^TMP($JOB,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
               End DoDot:1
 +19      ;SEARCH SUB FIELDS
 +20       DO PTFIEN^DGPTFUT("501",IFN,.LRDGMV)
 +21       SET LRMV=0
           FOR 
               SET LRMV=$ORDER(LRDGMV(LRMV))
               if 'LRMV
                   QUIT 
               KILL LRDGPT
               DO PTFICD^DGPTFUT("501",IFN,LRMV,.LRDGPT)
               if $DATA(LRDGPT)>9
                   Begin DoDot:1
 +22      ;SEARCH FOR LEGIONAIRS HERE IN SUB FILE
 +23                   IF $PIECE($GET(^DGPT(IFN,"M",LRMV,300)),U,3)=1
                           Begin DoDot:2
 +24                           IF 'LRICDX
                                   SET LRICDIEN=$$CODEN^ICDEX("482.84 ",80)
                                   if +LRICDIEN'>0
                                       QUIT 
                                   SET ^TMP($JOB,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
 +25                           IF LRICDX
                                   IF LRICDX'=-1
                                       FOR XCODE="A48.1","A48.2","A48.8"
                                           Begin DoDot:3
 +26                                           SET LRICDIEN(XCODE)=+$$CODEN^ICDEX(XCODE,80)
                                               IF +LRICDIEN(XCODE)'>0
                                                   KILL LRICDIEN(XCODE)
                                                   QUIT 
 +27                                           SET ^TMP($JOB,"DG1",LRICDIEN(XCODE))=LRPDX_"^"_LRADMDT
                                           End DoDot:3
                                           if '$DATA(LRICDIEN)
                                               QUIT 
                           End DoDot:2
 +28                   SET LRI=0
                       FOR 
                           SET LRI=$ORDER(LRDGPT(LRI))
                           if 'LRI
                               QUIT 
                           Begin DoDot:2
 +29                           SET LRICDIEN=$PIECE(LRDGPT(LRI),"^")
                               if +LRICDIEN'>0
                                   QUIT 
 +30                           SET ^TMP($JOB,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
                           End DoDot:2
                   End DoDot:1
 +31       if '$DATA(^TMP($JOB,"DG1"))
               QUIT 
BLD        SET LRICDIEN=0
           FOR 
               SET LRICDIEN=$ORDER(^TMP($JOB,"DG1",LRICDIEN))
               if +LRICDIEN'>0
                   QUIT 
               Begin DoDot:1
 +1                if '$DATA(DGCNT)
                       SET DGCNT=1
 +2                NEW LRTMP,LRXSYS
 +3                KILL LRCSYS
                   SET LRCSYS=$$ICDSYS^LREPICD(LRDTINT,"D")
                   if $PIECE(LRCSYS,U,1)=-1
                       QUIT 
 +4                SET LRTMP=$$ICDDATA^ICDXCODE(LRCSYS,LRICDIEN,$GET(LRDTINT,""),)
 +5                KILL LRDATA,LREPICSY
 +6                SET LREPICSY=$SELECT($PIECE(LRTMP,U,20)=1:" I9",$PIECE(LRTMP,U,20)=30:"I10",1:"UNKNOWN CODE SYSTEM")
                   SET LRXSYS=$SELECT(LRCSYS="ICD":" I9",1:"I10")
 +7                if LREPICSY'=LRXSYS
                       QUIT 
 +8                SET LRDATA="DG1"_HLFS_DGCNT_HLFS_HLFS_$PIECE(LRTMP,U,2)
 +9                SET LRDATA=LRDATA_LRCS_$PIECE(LRTMP,U,4)_LRCS_LREPICSY
 +10               IF LRPROT=LRPROTX
                       SET LRDATA=LRDATA_HLFS_$PIECE(^TMP($JOB,"DG1",LRICDIEN),"^",2)_HLFS_HLFS_$SELECT(LRICDIEN=$PIECE(^TMP($JOB,"DG1",LRICDIEN),"^"):"PR",1:"")
 +11               SET ^TMP("HL7",$JOB,DGCNT)=$$UP^XLFSTR(LRDATA)
                   SET DGCNT=DGCNT+1
               End DoDot:1
 +12       KILL ^TMP($JOB,"DG1"),LRDATA,DGCNT,LRICDIEN,LRMV,LRICDX,LRCSYS,XCODE
 +13       QUIT 
PID       ;TO BUILD PID SEGMENT
 +1        KILL MSG
 +2        SET FLDS="1,2,3,5,7,8,10BT,19,22BT"
           SET MSG=$$EN^VAFHLPID(DFN,FLDS,LRPID)
 +3       ;MADE CHANGE FOR PID SEGMENTS TOO LONG;CKA;06/30/04
 +4        DO DEM^VADPT
 +5        IF $DATA(VAFPID(1))
               Begin DoDot:1
 +6                SET $PIECE(MSG,HLFS,11)=VADM(12)
                   SET MSG=MSG_VAFPID(1)
                   SET $PIECE(MSG,HLFS,23)=VADM(11)
               End DoDot:1
 +7        SET ICN=$$GETICN^MPIF001(DFN)
 +8        if ICN<0
               SET $PIECE(MSG,HLFS,4)=$PIECE(MSG,HLFS,4)_LRCS_""""""_LRCS_"VAMPI"
 +9        if ICN>0
               SET $PIECE(MSG,HLFS,4)=$PIECE(MSG,HLFS,4)_LRCS_ICN_LRCS_"VAMPI"
 +10      ;ADDITIONAL DATA ADDED HERE HOMELESSNESS
 +11       if $$BADADR^DGUTL3(DFN)=2
               SET $PIECE(MSG,HLFS,12)="HOMELESS"
 +12      ;NOW GET PERIOD OF SERVICE
 +13       KILL VAEL
           DO ELIG^VADPT
 +14       if $GET(VAEL(2))'=""
               SET $PIECE(MSG,HLFS,28)=$PIECE($GET(^DIC(21,+VAEL(2),0)),U,3)
 +15       KILL VAEL
 +16      ;GET ZIP IF THERE
 +17       KILL VAPA
           DO ADD^VADPT
 +18       SET $PIECE(MSG,HLFS,12)=$PIECE(MSG,HLFS,12)_LRCS_LRCS_LRCS_VAPA(5)_LRCS_$GET(VAPA(6))_LRCS_LRCS_LRCS_LRCS
 +19       IF VAPA(7)'=""
               IF VAPA(5)'=""
                   SET CTY=$PIECE(VAPA(7),U,2)
                   SET CTYN=$PIECE(VAPA(7),U)
                   IF CTYN'=""
                       SET CTYCD=$PIECE($GET(^DIC(5,$PIECE(VAPA(5),U),1,CTYN,0)),U,3)
                       Begin DoDot:1
 +20                       SET $PIECE(MSG,HLFS,12)=$PIECE(MSG,HLFS,12)_$GET(CTYCD)_"^"_$GET(CTY)
                       End DoDot:1
 +21       KILL VAPA,CTY,CTYN,CTYCD,LRRACE
 +22       IF $PIECE(MSG,HLFS,12)="~~~~~~~~"
               SET $PIECE(MSG,HLFS,12)=""
 +23       SET LRRACE=$$PTR2CODE^DGUTL4($PIECE(VADM(8),U))
 +24       IF $LENGTH(MSG)>245
               Begin DoDot:1
 +25               SET $PIECE(MSG,HLFS,11)=VADM(12)
                   SET $PIECE(MSG,HLFS,23)=VADM(11)
               End DoDot:1
 +26       if $PIECE(MSG,HLFS,11)="""""~""""~0005~""""~""""~CDC"
               SET $PIECE(MSG,HLFS,11)=""
 +27       if $PIECE(MSG,HLFS,23)="""""~""""~0189~""""~""""~CDC"
               SET $PIECE(MSG,HLFS,23)=""
 +28       SET $PIECE(MSG,HLFS,11)=LRRACE_"~"_$PIECE(MSG,HLFS,11)
 +29       IF $PIECE(MSG,HLFS,11)="~"
               SET $PIECE(MSG,HLFS,11)=""
 +30       SET LRPID=LRPID+1
           SET LRCNT=LRCNT+1
           SET ^TMP("HLS",$JOB,LRCNT)=$$UP^XLFSTR(MSG)
 +31       SET ^TMP("LREPIREP",$JOB,LRCNT)=$$UP^XLFSTR(MSG)
 +32       SET LRMSGSZ=LRMSGSZ+$LENGTH(MSG)
 +33       KILL FLDS,VAEL,ICN,VAFPID,VADM
 +34       QUIT 
PV1       ;TO BUILD PV1 SEGMENT
 +1        KILL PTF,Y,C,LRDATA,MSG,LRPATLOC
 +2        SET LRDATA=""
 +3        IF $PIECE(^TMP($JOB,LRPROT,DFN,LRENDT),U)="I"
               Begin DoDot:1
 +4                SET FLDS="1,2,3,36,39,44,45"
                   SET LRDATA=$$IN^VAFHLPV1(DFN,LRENDT,FLDS,"","","","")
               End DoDot:1
 +5        IF $PIECE(LRDATA,HLFS)=""
               SET $PIECE(LRDATA,HLFS)="PV1"
 +6        SET $PIECE(LRDATA,HLFS,2)=LRPV1
 +7        SET $PIECE(LRDATA,HLFS,7)=""
 +8        SET $PIECE(LRDATA,HLFS,3)=$PIECE(^TMP($JOB,LRPROT,DFN,LRENDT),U)
 +9        IF $PIECE(LRDATA,HLFS,3)="O"
               Begin DoDot:1
 +10               SET LRPATLOC=$PIECE(^TMP($JOB,LRPROT,DFN,LRENDT),U,2)
 +11               SET LRFILE=$PIECE(LRPATLOC,";",2)
 +12               SET LRIFN=$PIECE(LRPATLOC,";")
 +13               IF LRFILE="SC("
                       Begin DoDot:2
 +14                       IF $PIECE($GET(^SC(LRIFN,0)),U,4)'=""
                               Begin DoDot:3
 +15                               SET LRPATLOC=$$STA^XUAF4($PIECE($GET(^SC(LRIFN,0)),U,4))
                               End DoDot:3
                       End DoDot:2
 +16               IF LRFILE="DIC(4"
                       Begin DoDot:2
 +17                       IF $$STA^XUAF4(LRIFN)'=""
                               Begin DoDot:3
 +18                               SET LRPATLOC=$$STA^XUAF4(LRIFN)
                               End DoDot:3
                       End DoDot:2
 +19               SET $PIECE(LRDATA,HLFS,39)=LRPATLOC
 +20               KILL LRPATLOC,LRFILE,LRIFN
               End DoDot:1
 +21       if $PIECE(^TMP($JOB,LRPROT,DFN,LRENDT),U,3)="UPDT"
               SET $PIECE(LRDATA,HLFS,3)="U"
 +22       SET $PIECE(LRDATA,HLFS,45)=$$HLDATE^HLFNC(LRENDT)
 +23       if $PIECE(LRDATA,HLFS,46)=""""""
               SET $PIECE(LRDATA,HLFS,46)=""
 +24      ;MADE CHANGE FOR FUTURE DISCHARGE DATES;CKA 6/30/2004
 +25       if $PIECE(LRDATA,HLFS,46)>LRRPE
               SET $PIECE(LRDATA,HLFS,46)=""
 +26       SET PTF=$PIECE(^TMP($JOB,LRPROT,DFN,LRENDT),U,2)
           IF +PTF>0
               Begin DoDot:1
 +27               if '$DATA(^DGPT(PTF,0))
                       QUIT 
 +28               if $PIECE(^DGPT(PTF,0),U,6)'=3
                       QUIT 
 +29               if '$DATA(^DGPT(PTF,70))
                       QUIT 
 +30               IF +$PIECE(^DGPT(PTF,70),U)>0
                       IF +$PIECE(^DGPT(PTF,70),U)<LRRPE
                           SET $PIECE(LRDATA,HLFS,46)=$$HLDATE^HLFNC($PIECE(^DGPT(PTF,70),U))
 +31               SET (Y,LRDTY)=$PIECE(^DGPT(PTF,70),U,3)
 +32               if +Y'>0
                       QUIT 
 +33      ;removed direct reference to ^DD(45,72
                   SET Y=$$EXTERNAL^DILFD(45,72,,Y)
 +34      ;S C=$P(^DD(45,72,0),U,2) D Y^DIQ ;RLM
 +35               SET $PIECE(LRDATA,HLFS,37)=LRDTY_LRCS_Y_LRCS_"VA45"
 +36               SET $PIECE(LRDATA,HLFS,40)=$PIECE(^DGPT(PTF,0),U,3)
               End DoDot:1
 +37       SET LRCNT=LRCNT+1
           SET ^TMP("HLS",$JOB,LRCNT)=$$UP^XLFSTR(LRDATA)
           SET LRPV1=LRPV1+1
 +38       SET ^TMP("LREPIREP",$JOB,LRCNT)=$$UP^XLFSTR(LRDATA)
 +39       SET LRMSGSZ=LRMSGSZ+$LENGTH(LRDATA)
 +40       IF $PIECE(LRDATA,HLFS,3)="O"
               Begin DoDot:1
 +41               SET VIFN=0
 +42               FOR 
                       SET VIFN=$ORDER(^AUPNVPOV("AA",DFN,9999999-$PIECE(LRENDT,"."),VIFN))
                       if +VIFN'>0
                           QUIT 
                       Begin DoDot:2
 +43                       SET LRVISIT=$PIECE(^AUPNVSIT($PIECE(^AUPNVPOV(VIFN,0),U,3),812),U,2)
 +44                       IF LRVISIT'=26
                               SET LRVISIT=0
                               QUIT 
 +45                       SET LRICDN=$PIECE($GET(^AUPNVPOV(VIFN,0)),U)
 +46                       if LRICDN=""
                               QUIT 
 +47                       NEW LRTMP
 +48                       IF $GET(LRCSYS)=""
                               SET LRCSYS=$$CSI^ICDEX(80,LRICDN)
 +49                       SET LRTMP=$$ICDDATA^ICDXCODE(LRCSYS,LRICDN,,)
 +50      ;LR*5.2*552: correct undef error on LREPICSY
 +51      ;Section BLD has different calls to determine LRCSYS and LRTMP.
 +52      ;But the output generated is the same.
 +53                       SET LREPICSY=$SELECT($PIECE(LRTMP,U,20)=1:" I9",$PIECE(LRTMP,U,20)=30:"I10",1:"UNKNOWN CODE SYSTEM")
                           SET LRXSYS=$SELECT(LRCSYS=1:" I9",1:"I10")
 +54                       if LREPICSY'=LRXSYS
                               QUIT 
 +55      ;end LR*5.2*552
 +56                       if '$DATA(DGCNT)
                               SET DGCNT=1
 +57                       SET LRDATA="DG1"_HLFS_DGCNT_HLFS_LREPICSY_HLFS_$PIECE(LRTMP,U,2)
 +58                       SET LRDATA=LRDATA_LRCS_$PIECE(LRTMP,U,4)_LRCS_LREPICSY
 +59                       SET LRDATA=LRDATA_HLFS_$$HLDATE^HLFNC(LRENDT)_HLFS_HLFS_$SELECT($PIECE(^AUPNVPOV(VIFN,0),U,12)="P":"PR",1:"")
 +60                       SET ^TMP("HL7",$JOB,DGCNT)=$$UP^XLFSTR(LRDATA)
 +61                       SET DGCNT=DGCNT+1
                       End DoDot:2
               End DoDot:1
               DO MOVE^LREPI2
 +62       KILL DGCNT,VIFN,LRICDN,LRICDIEN,LRDATA,LRVISIT
 +63       if $GET(PTF)'>0
               QUIT 
 +64       if '$DATA(^DGPT(PTF,0))
               QUIT 
 +65       if $PIECE(^DGPT(PTF,0),U,6)'=3
               QUIT 
 +66       SET IFN=PTF
           DO DG11
 +67       DO MOVE^LREPI2
 +68       KILL PTF,Y,C,LRDATA,LRDTY,IFN,LRICDIEN,LRICDN,LROLLOC,VIFN
 +69       QUIT 
 +70      ;