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

LREPI3.m

Go to the documentation of this file.
  1. 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
  1. ;
  1. ; Reference to ^DGPT supported by IA #418
  1. ; Reference to DGPTFUT supported by IA #6130
  1. ; Reference to ^SC supported by IA #10040
  1. ; Reference to ^DIC(21 supported by IA #4280
  1. ; Reference to ICN supported by IA #2701
  1. ; Reference to VAFHLPID supported by IA # 263
  1. ; Reference to VAFHLPV1 supported by IA # 3018
  1. ; Reference to ^DIC(5 supported by IA # 10056
  1. ; Reference to $$BADADR^DGUTL3 supported by IA #4080
  1. ; Reference to VADPT supported by IA #10061
  1. ; Reference to ^AUPNVPOV supported by IA # 3094
  1. ; Reference to ^AUPNVSIT supported by IA #3530
  1. ; Reference to $$STA^XUAF4(IEN) supported by IA #2171
  1. ; Reference to $$PTR2CODE^DGUTL4 supported by IA #3799
  1. ; Reference to $$CODEN^ICDEX supported by IA #5747
  1. ;
  1. NTE ;TO BUILD THE NTE SEGMENT TO DEFINE THE EPI
  1. S LRDATA="NTE"_HLFS_LRNTE_HLFS_$P(^LAB(69.5,LRPATH,0),U,9)_LRCS_$P(^LAB(69.5,LRPATH,0),U,1)
  1. S LRCNT=LRCNT+1,^TMP("HLS",$J,LRCNT)=$$UP^XLFSTR(LRDATA)
  1. S ^TMP("LREPIREP",$J,LRCNT)=$$UP^XLFSTR(LRDATA)
  1. S LRMSGSZ=LRMSGSZ+$L(LRDATA)
  1. S LRNTE=LRNTE+1
  1. Q
  1. DG1 ;BUILD THE DG1 FOR ICD CODES
  1. K ^TMP($J,"DG1")
  1. S IFN=+$G(^TMP($J,LRPROT,DFN,LRENDT,LRPATH,LRINVD,LRND))
  1. DG11 Q:+IFN'>0
  1. N LRDGPT,LRPDX,LRADMDT,LRDGMV
  1. D PTFICD^DGPTFUT("701",IFN,,.LRDGPT)
  1. Q:$G(LRDGPT)=""
  1. S LRPDX=$P($G(LRDGPT(0)),"^")
  1. S LRADMDT=$$HLDATE^HLFNC($P(LRDGPT,"^",3))
  1. ; Date of Interest is Discharge Date if present, otherwise Current
  1. ; System Date
  1. N LRDTINT S LRDTINT=$S($P(LRDGPT,"^",10)]"":$P(LRDGPT,"^",10),1:DT)
  1. ;SEARCH FOR LEGIONAIRS HERE
  1. I $P($G(^DGPT(IFN,300)),U,3)=1 D
  1. .I '$D(LRICDX) S LRCSYS=$$ICDSYS^LREPICD(LRDTINT,"D"),LRICDX=$S(LRCSYS="ICD":0,LRCSYS="10D":1,1:-1)
  1. .I 'LRICDX S LRICDIEN=+$$CODEN^ICDEX("482.84 ",80) Q:+LRICDIEN'>0 S ^TMP($J,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
  1. .I LRICDX,LRICDX'=-1 F XCODE="A48.1","A48.2","A48.8" D Q:'$D(LRICDIEN)
  1. ..S LRICDIEN(XCODE)=+$$CODEN^ICDEX(XCODE,80) I +LRICDIEN(XCODE)'>0 K LRICDIEN(XCODE) Q
  1. ..S ^TMP($J,"DG1",LRICDIEN(XCODE))=LRPDX_"^"_LRADMDT
  1. S LRI=-1 F S LRI=$O(LRDGPT(LRI)) Q:LRI="" D
  1. .S LRICDIEN=$P(LRDGPT(LRI),"^") Q:+LRICDIEN'>0
  1. .S ^TMP($J,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
  1. ;SEARCH SUB FIELDS
  1. D PTFIEN^DGPTFUT("501",IFN,.LRDGMV)
  1. S LRMV=0 F S LRMV=$O(LRDGMV(LRMV)) Q:'LRMV K LRDGPT D PTFICD^DGPTFUT("501",IFN,LRMV,.LRDGPT) D:$D(LRDGPT)>9
  1. .;SEARCH FOR LEGIONAIRS HERE IN SUB FILE
  1. .I $P($G(^DGPT(IFN,"M",LRMV,300)),U,3)=1 D
  1. ..I 'LRICDX S LRICDIEN=$$CODEN^ICDEX("482.84 ",80) Q:+LRICDIEN'>0 S ^TMP($J,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
  1. ..I LRICDX,LRICDX'=-1 F XCODE="A48.1","A48.2","A48.8" D Q:'$D(LRICDIEN)
  1. ...S LRICDIEN(XCODE)=+$$CODEN^ICDEX(XCODE,80) I +LRICDIEN(XCODE)'>0 K LRICDIEN(XCODE) Q
  1. ...S ^TMP($J,"DG1",LRICDIEN(XCODE))=LRPDX_"^"_LRADMDT
  1. .S LRI=0 F S LRI=$O(LRDGPT(LRI)) Q:'LRI D
  1. ..S LRICDIEN=$P(LRDGPT(LRI),"^") Q:+LRICDIEN'>0
  1. ..S ^TMP($J,"DG1",LRICDIEN)=LRPDX_"^"_LRADMDT
  1. Q:'$D(^TMP($J,"DG1"))
  1. BLD S LRICDIEN=0 F S LRICDIEN=$O(^TMP($J,"DG1",LRICDIEN)) Q:+LRICDIEN'>0 D
  1. .S:'$D(DGCNT) DGCNT=1
  1. .N LRTMP,LRXSYS
  1. .K LRCSYS S LRCSYS=$$ICDSYS^LREPICD(LRDTINT,"D") Q:$P(LRCSYS,U,1)=-1
  1. .S LRTMP=$$ICDDATA^ICDXCODE(LRCSYS,LRICDIEN,$G(LRDTINT,""),)
  1. .K LRDATA,LREPICSY
  1. .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")
  1. .Q:LREPICSY'=LRXSYS
  1. .S LRDATA="DG1"_HLFS_DGCNT_HLFS_HLFS_$P(LRTMP,U,2)
  1. .S LRDATA=LRDATA_LRCS_$P(LRTMP,U,4)_LRCS_LREPICSY
  1. .I LRPROT=LRPROTX S LRDATA=LRDATA_HLFS_$P(^TMP($J,"DG1",LRICDIEN),"^",2)_HLFS_HLFS_$S(LRICDIEN=$P(^TMP($J,"DG1",LRICDIEN),"^"):"PR",1:"")
  1. .S ^TMP("HL7",$J,DGCNT)=$$UP^XLFSTR(LRDATA),DGCNT=DGCNT+1
  1. K ^TMP($J,"DG1"),LRDATA,DGCNT,LRICDIEN,LRMV,LRICDX,LRCSYS,XCODE
  1. Q
  1. PID ;TO BUILD PID SEGMENT
  1. K MSG
  1. S FLDS="1,2,3,5,7,8,10BT,19,22BT" S MSG=$$EN^VAFHLPID(DFN,FLDS,LRPID)
  1. ;MADE CHANGE FOR PID SEGMENTS TOO LONG;CKA;06/30/04
  1. D DEM^VADPT
  1. I $D(VAFPID(1)) D
  1. .S $P(MSG,HLFS,11)=VADM(12),MSG=MSG_VAFPID(1),$P(MSG,HLFS,23)=VADM(11)
  1. S ICN=$$GETICN^MPIF001(DFN)
  1. S:ICN<0 $P(MSG,HLFS,4)=$P(MSG,HLFS,4)_LRCS_""""""_LRCS_"VAMPI"
  1. S:ICN>0 $P(MSG,HLFS,4)=$P(MSG,HLFS,4)_LRCS_ICN_LRCS_"VAMPI"
  1. ;ADDITIONAL DATA ADDED HERE HOMELESSNESS
  1. S:$$BADADR^DGUTL3(DFN)=2 $P(MSG,HLFS,12)="HOMELESS"
  1. ;NOW GET PERIOD OF SERVICE
  1. K VAEL D ELIG^VADPT
  1. S:$G(VAEL(2))'="" $P(MSG,HLFS,28)=$P($G(^DIC(21,+VAEL(2),0)),U,3)
  1. K VAEL
  1. ;GET ZIP IF THERE
  1. K VAPA D ADD^VADPT
  1. S $P(MSG,HLFS,12)=$P(MSG,HLFS,12)_LRCS_LRCS_LRCS_VAPA(5)_LRCS_$G(VAPA(6))_LRCS_LRCS_LRCS_LRCS
  1. 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
  1. .S $P(MSG,HLFS,12)=$P(MSG,HLFS,12)_$G(CTYCD)_"^"_$G(CTY)
  1. K VAPA,CTY,CTYN,CTYCD,LRRACE
  1. I $P(MSG,HLFS,12)="~~~~~~~~" S $P(MSG,HLFS,12)=""
  1. S LRRACE=$$PTR2CODE^DGUTL4($P(VADM(8),U))
  1. I $L(MSG)>245 D
  1. .S $P(MSG,HLFS,11)=VADM(12),$P(MSG,HLFS,23)=VADM(11)
  1. S:$P(MSG,HLFS,11)="""""~""""~0005~""""~""""~CDC" $P(MSG,HLFS,11)=""
  1. S:$P(MSG,HLFS,23)="""""~""""~0189~""""~""""~CDC" $P(MSG,HLFS,23)=""
  1. S $P(MSG,HLFS,11)=LRRACE_"~"_$P(MSG,HLFS,11)
  1. I $P(MSG,HLFS,11)="~" S $P(MSG,HLFS,11)=""
  1. S LRPID=LRPID+1,LRCNT=LRCNT+1,^TMP("HLS",$J,LRCNT)=$$UP^XLFSTR(MSG)
  1. S ^TMP("LREPIREP",$J,LRCNT)=$$UP^XLFSTR(MSG)
  1. S LRMSGSZ=LRMSGSZ+$L(MSG)
  1. K FLDS,VAEL,ICN,VAFPID,VADM
  1. Q
  1. PV1 ;TO BUILD PV1 SEGMENT
  1. K PTF,Y,C,LRDATA,MSG,LRPATLOC
  1. S LRDATA=""
  1. I $P(^TMP($J,LRPROT,DFN,LRENDT),U)="I" D
  1. .S FLDS="1,2,3,36,39,44,45" S LRDATA=$$IN^VAFHLPV1(DFN,LRENDT,FLDS,"","","","")
  1. I $P(LRDATA,HLFS)="" S $P(LRDATA,HLFS)="PV1"
  1. S $P(LRDATA,HLFS,2)=LRPV1
  1. S $P(LRDATA,HLFS,7)=""
  1. S $P(LRDATA,HLFS,3)=$P(^TMP($J,LRPROT,DFN,LRENDT),U)
  1. I $P(LRDATA,HLFS,3)="O" D
  1. .S LRPATLOC=$P(^TMP($J,LRPROT,DFN,LRENDT),U,2)
  1. .S LRFILE=$P(LRPATLOC,";",2)
  1. .S LRIFN=$P(LRPATLOC,";")
  1. .I LRFILE="SC(" D
  1. ..I $P($G(^SC(LRIFN,0)),U,4)'="" D
  1. ...S LRPATLOC=$$STA^XUAF4($P($G(^SC(LRIFN,0)),U,4))
  1. .I LRFILE="DIC(4" D
  1. ..I $$STA^XUAF4(LRIFN)'="" D
  1. ...S LRPATLOC=$$STA^XUAF4(LRIFN)
  1. .S $P(LRDATA,HLFS,39)=LRPATLOC
  1. .K LRPATLOC,LRFILE,LRIFN
  1. S:$P(^TMP($J,LRPROT,DFN,LRENDT),U,3)="UPDT" $P(LRDATA,HLFS,3)="U"
  1. S $P(LRDATA,HLFS,45)=$$HLDATE^HLFNC(LRENDT)
  1. S:$P(LRDATA,HLFS,46)="""""" $P(LRDATA,HLFS,46)=""
  1. ;MADE CHANGE FOR FUTURE DISCHARGE DATES;CKA 6/30/2004
  1. S:$P(LRDATA,HLFS,46)>LRRPE $P(LRDATA,HLFS,46)=""
  1. S PTF=$P(^TMP($J,LRPROT,DFN,LRENDT),U,2) I +PTF>0 D
  1. .Q:'$D(^DGPT(PTF,0))
  1. .Q:$P(^DGPT(PTF,0),U,6)'=3
  1. .Q:'$D(^DGPT(PTF,70))
  1. .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))
  1. .S (Y,LRDTY)=$P(^DGPT(PTF,70),U,3)
  1. .Q:+Y'>0
  1. .S Y=$$EXTERNAL^DILFD(45,72,,Y) ;removed direct reference to ^DD(45,72
  1. .;S C=$P(^DD(45,72,0),U,2) D Y^DIQ ;RLM
  1. .S $P(LRDATA,HLFS,37)=LRDTY_LRCS_Y_LRCS_"VA45"
  1. .S $P(LRDATA,HLFS,40)=$P(^DGPT(PTF,0),U,3)
  1. S LRCNT=LRCNT+1,^TMP("HLS",$J,LRCNT)=$$UP^XLFSTR(LRDATA),LRPV1=LRPV1+1
  1. S ^TMP("LREPIREP",$J,LRCNT)=$$UP^XLFSTR(LRDATA)
  1. S LRMSGSZ=LRMSGSZ+$L(LRDATA)
  1. I $P(LRDATA,HLFS,3)="O" D D MOVE^LREPI2
  1. .S VIFN=0
  1. .F S VIFN=$O(^AUPNVPOV("AA",DFN,9999999-$P(LRENDT,"."),VIFN)) Q:+VIFN'>0 D
  1. ..S LRVISIT=$P(^AUPNVSIT($P(^AUPNVPOV(VIFN,0),U,3),812),U,2)
  1. ..I LRVISIT'=26 S LRVISIT=0 Q
  1. ..S LRICDN=$P($G(^AUPNVPOV(VIFN,0)),U)
  1. ..Q:LRICDN=""
  1. ..N LRTMP
  1. ..I $G(LRCSYS)="" S LRCSYS=$$CSI^ICDEX(80,LRICDN)
  1. ..S LRTMP=$$ICDDATA^ICDXCODE(LRCSYS,LRICDN,,)
  1. ..;LR*5.2*552: correct undef error on LREPICSY
  1. ..;Section BLD has different calls to determine LRCSYS and LRTMP.
  1. ..;But the output generated is the same.
  1. ..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")
  1. ..Q:LREPICSY'=LRXSYS
  1. ..;end LR*5.2*552
  1. ..S:'$D(DGCNT) DGCNT=1
  1. ..S LRDATA="DG1"_HLFS_DGCNT_HLFS_LREPICSY_HLFS_$P(LRTMP,U,2)
  1. ..S LRDATA=LRDATA_LRCS_$P(LRTMP,U,4)_LRCS_LREPICSY
  1. ..S LRDATA=LRDATA_HLFS_$$HLDATE^HLFNC(LRENDT)_HLFS_HLFS_$S($P(^AUPNVPOV(VIFN,0),U,12)="P":"PR",1:"")
  1. ..S ^TMP("HL7",$J,DGCNT)=$$UP^XLFSTR(LRDATA)
  1. .. S DGCNT=DGCNT+1
  1. K DGCNT,VIFN,LRICDN,LRICDIEN,LRDATA,LRVISIT
  1. Q:$G(PTF)'>0
  1. Q:'$D(^DGPT(PTF,0))
  1. Q:$P(^DGPT(PTF,0),U,6)'=3
  1. S IFN=PTF D DG11
  1. D MOVE^LREPI2
  1. K PTF,Y,C,LRDATA,LRDTY,IFN,LRICDIEN,LRICDN,LROLLOC,VIFN
  1. Q
  1. ;