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

BQITNPH.m

Go to the documentation of this file.
  1. BQITNPH ;PRXM/HC/ALA-Nephropathy Definition ; 12 Apr 2006 2:13 PM
  1. ;;2.1;ICARE MANAGEMENT SYSTEM;;Feb 07, 2011
  1. Q
  1. ;
  1. DEF(TTGLOB) ;EP -- Nephropathy Definition
  1. ;Description
  1. ; DEF.05 formerly CVDAL.DEF.DX.1
  1. ;Input
  1. ; TTGLOB - Global reference where patients matching high cholesterol
  1. ; will be place. Subscripted by patient IEN.
  1. ;
  1. NEW BQREF,BQIRY,TAX,BQGLBT,TDFN,DFN,STOP
  1. ; Use taxonomy definitions
  1. S BQREF="BQIRY" K @BQREF
  1. S TAX="Nephropathy"
  1. D ARY^BQITUTL(TAX,BQREF)
  1. S BQGLBT=$NA(^TMP("BQITMP",UID))
  1. K @BQGLBT
  1. D POP^BQITDGN(.BQREF,BQGLBT)
  1. S TDFN="" F S TDFN=$O(@BQGLBT@(TDFN)) Q:TDFN="" D
  1. . NEW TX
  1. . S TX="" F S TX=$O(@BQGLBT@(TDFN,"CRITERIA",TX)) Q:TX="" D
  1. .. D STOR(TDFN,TX)
  1. K @BQGLBT
  1. ;
  1. ;Creatinine Lab test value check
  1. NEW CRDATA
  1. S FREF=9000010.09,GREF=$$ROOT^DILFD(FREF,"",1)
  1. S TREF=$NA(^TMP("BQITAX",UID)),CRDATA=$NA(^TMP("BQICREAT",UID))
  1. K @TREF,@CRDATA
  1. S TMFRAME="T-12M",ENDT=$$DATE^BQIUL1(TMFRAME),STDT=$$DT^XLFDT()
  1. S DTDIF=$$FMDIFF^XLFDT(STDT,ENDT,1),EXDT=""
  1. F TAX="DM AUDIT CREATININE TAX","BGP CREATININE LOINC CODES" D BLD^BQITUTL(TAX,TREF)
  1. S TIEN="" F S TIEN=$O(@TREF@(TIEN)) Q:TIEN="" D
  1. . S IEN=""
  1. . F S IEN=$O(@GREF@("B",TIEN,IEN)) Q:IEN="" D
  1. .. I $G(@GREF@(IEN,0))="" Q
  1. .. S DFN=$$GET1^DIQ(FREF,IEN,.02,"I") Q:DFN=""
  1. .. S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I") Q:VISIT=""
  1. .. S RESULT=$$GET1^DIQ(FREF,IEN,.04,"E") Q:RESULT=""
  1. .. I RESULT<2.0 Q
  1. .. S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:'VSDTM
  1. .. I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. .. I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. .. ; need to be separated by at least 90 days
  1. .. I '$D(@CRDATA@(DFN,VSDTM)) S @CRDATA@(DFN)=$G(@CRDATA@(DFN))+1
  1. .. S @CRDATA@(DFN,VSDTM)=RESULT_"^"_VISIT_"^"_IEN_"^"_FREF
  1. .. Q
  1. ;
  1. S DFN="" F S DFN=$O(@CRDATA@(DFN)) Q:DFN="" D
  1. . I @CRDATA@(DFN)<2 K @CRDATA@(DFN) Q
  1. . S DATE="",STOP=0
  1. . NEW DATE1,DATE2
  1. . F S DATE=$O(@CRDATA@(DFN,DATE),-1) Q:DATE="" D Q:STOP
  1. .. S DATE1=DATE,DATE2=$O(@CRDATA@(DFN,DATE1),-1) Q:DATE2=""
  1. .. I $$FMDIFF^XLFDT(DATE1,DATE2,1)<90 Q
  1. .. S RESULT=$P(@CRDATA@(DFN,DATE1),"^",1)
  1. .. S VISIT=$P(@CRDATA@(DFN,DATE1),"^",2)
  1. .. S IEN=$P(@CRDATA@(DFN,DATE1),"^",3)
  1. .. S RESULT1=$P(@CRDATA@(DFN,DATE2),"^",1)
  1. .. S VISIT1=$P(@CRDATA@(DFN,DATE2),"^",2)
  1. .. S IEN1=$P(@CRDATA@(DFN,DATE2),"^",3)
  1. .. S @BQGLBT@(DFN,"CRITERIA","Nephropathy-Creatinine Value","V",VISIT,IEN)=DATE1_U_U_IEN_U_FREF
  1. .. I DTDIF'="" S EXDT=$$FMADD^XLFDT(DATE1,DTDIF)
  1. .. S $P(@BQGLBT@(DFN,"CRITERIA","Nephropathy-Creatinine Value","V",VISIT,IEN),U,2)=EXDT
  1. .. S @BQGLBT@(DFN,"CRITERIA","Nephropathy-Creatinine Value","V",VISIT1,IEN1)=DATE2_U_U_IEN1_U_FREF
  1. .. I DTDIF'="" S EXDT=$$FMADD^XLFDT(DATE2,DTDIF)
  1. .. S $P(@BQGLBT@(DFN,"CRITERIA","Nephropathy-Creatinine Value","V",VISIT1,IEN1),U,2)=EXDT
  1. .. S TX="Nephropathy-Creatinine Value"
  1. .. D STOR(DFN,TX)
  1. .. S STOP=1 ; Criteria has been met for this patient - stop searching
  1. .. ;I RESULT'<2.0,RESULT1'<2.0 D STOR(DFN,TX)
  1. ;
  1. K @BQGLBT
  1. ;GFR Lab test value check
  1. NEW GFDATA
  1. S FREF=9000010.09,GREF=$$ROOT^DILFD(FREF,"",1)
  1. S TREF=$NA(^TMP("BQITAX",UID)),GFDATA=$NA(^TMP("BQIGFR",UID))
  1. K @TREF,@GFDATA
  1. S TMFRAME="T-12M",ENDT=$$DATE^BQIUL1(TMFRAME),STDT=$$DT^XLFDT()
  1. S DTDIF=$$FMDIFF^XLFDT(STDT,ENDT,1),EXDT=""
  1. F TAX="BGP GPRA ESTIMATED GFR TAX","BGP ESTIMATED GFR LOINC" D BLD^BQITUTL(TAX,TREF)
  1. ;D BLDSV^BQITUTL(95.3,"33914-3",TREF)
  1. S TIEN="" F S TIEN=$O(@TREF@(TIEN)) Q:TIEN="" D
  1. . S IEN=""
  1. . F S IEN=$O(@GREF@("B",TIEN,IEN),-1) Q:IEN="" D
  1. .. I $G(@GREF@(IEN,0))="" Q
  1. .. S DFN=$$GET1^DIQ(FREF,IEN,.02,"I") Q:DFN=""
  1. .. S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I") Q:VISIT=""
  1. .. S RESULT=$$GET1^DIQ(FREF,IEN,.04,"E") Q:RESULT=""
  1. .. I RESULT>30 Q
  1. .. S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:'VSDTM
  1. .. I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. .. I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. .. S @GFDATA@(DFN,VSDTM)=RESULT_"^"_VISIT_"^"_IEN_"^"_FREF
  1. .. S @GFDATA@(DFN)=$G(@GFDATA@(DFN))+1
  1. .. Q
  1. ;
  1. S DFN="" F S DFN=$O(@GFDATA@(DFN)) Q:DFN="" D
  1. . I @GFDATA@(DFN)<2 K @GFDATA@(DFN) Q
  1. . S DATE="",STOP=0
  1. . NEW DATE1,DATE2
  1. . F S DATE=$O(@GFDATA@(DFN,DATE),-1) Q:DATE="" D Q:STOP
  1. .. S DATE1=DATE,DATE2=$O(@GFDATA@(DFN,DATE1),-1) Q:DATE2=""
  1. .. ; need to be separated by at least 90 days
  1. .. I $$FMDIFF^XLFDT(DATE1,DATE2,1)<90 Q
  1. .. S RESULT=$P(@GFDATA@(DFN,DATE1),"^",1)
  1. .. S VISIT=$P(@GFDATA@(DFN,DATE1),"^",2)
  1. .. S IEN=$P(@GFDATA@(DFN,DATE1),"^",3)
  1. .. S RESULT1=$P(@GFDATA@(DFN,DATE2),"^",1)
  1. .. S VISIT1=$P(@GFDATA@(DFN,DATE2),"^",2)
  1. .. S IEN1=$P(@GFDATA@(DFN,DATE2),"^",3)
  1. .. S @BQGLBT@(DFN,"CRITERIA","Nephropathy-GFR Value","V",VISIT,IEN)=DATE1_U_U_IEN_U_FREF
  1. .. I DTDIF'="" S EXDT=$$FMADD^XLFDT(DATE1,DTDIF)
  1. .. S $P(@BQGLBT@(DFN,"CRITERIA","Nephropathy-GFR Value","V",VISIT,IEN),U,2)=EXDT
  1. .. S @BQGLBT@(DFN,"CRITERIA","Nephropathy-GFR Value","V",VISIT1,IEN1)=DATE2_U_U_IEN1_U_FREF
  1. .. I DTDIF'="" S EXDT=$$FMADD^XLFDT(DATE2,DTDIF)
  1. .. S $P(@BQGLBT@(DFN,"CRITERIA","Nephropathy-GFR Value","V",VISIT1,IEN1),U,2)=EXDT
  1. .. S TX="Nephropathy-GFR Value"
  1. .. D STOR(DFN,"Nephropathy-GFR Value")
  1. .. S STOP=1 ; Criteria has been met for this patient - stop searching
  1. .. ;I RESULT'>30,RESULT1'>30 D STOR(DFN,"Nephropathy-GFR Value")
  1. ;
  1. K @GFDATA,@CRDATA,@TREF,DFN,RESULT,RESULT1,DATE,DATE1,DATE2
  1. K TMFRAME,VISIT,VSDTM,ENDT,FREF,GREF,TREF,TAX,TIEN,IEN,TDFN,SDFN,@BQGLBT,IEN,IEN1
  1. Q
  1. ;
  1. STOR(SDFN,CRIT) ; Store the patient's met criteria
  1. S @TTGLOB@(SDFN)=$G(@TTGLOB@(SDFN))+1
  1. ;S @TTGLOB@(SDFN,"CRITERIA",CRIT)=""
  1. M @TTGLOB@(SDFN,"CRITERIA")=@BQGLBT@(SDFN,"CRITERIA")
  1. Q
  1. ;
  1. PAT(BTDFN,BTGLOB) ;EP -- Get nephropathy for a patient
  1. NEW VISIT,VISIT1,BQGLBT,BQDXN,BQREF,FREF,GREF,TREF,TMFRAME,TAX,IEN
  1. NEW TIEN,RESULT,VSDTM,RESULT1,DATE,DATE1,DATE2,ENDT,STOP
  1. S BQGLBT=$NA(^TMP("BQITMP",UID))
  1. S BQDXN=$$GDXN^BQITUTL("Nephropathy")
  1. S BQREF="BQIRY"
  1. D GDF^BQITUTL(BQDXN,BQREF)
  1. I $$PAT^BQITDGN(BQREF,BQGLBT,BTDFN) D STOR^BQITD05(BTDFN,"Risk-Nephropathy",BQGLBT)
  1. ;
  1. S FREF=9000010.09,GREF=$$ROOT^DILFD(FREF,"",1)
  1. S TREF=$NA(^TMP("BQITAX",UID)),CRDATA=$NA(^TMP("BQICREAT",UID))
  1. K @TREF,@CRDATA
  1. S TMFRAME="T-12M",ENDT=$$DATE^BQIUL1(TMFRAME),STDT=$$DT^XLFDT()
  1. S DTDIF=$$FMDIFF^XLFDT(STDT,ENDT,1),EXDT=""
  1. F TAX="DM AUDIT CREATININE TAX","BGP CREATININE LOINC CODES" D BLD^BQITUTL(TAX,TREF)
  1. S IEN=""
  1. F S IEN=$O(@GREF@("AC",BTDFN,IEN)) Q:IEN="" D
  1. . S TIEN=$$GET1^DIQ(FREF,IEN,.01,"I") I TIEN="" Q
  1. . I '$D(@TREF@(TIEN)) Q
  1. . S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I") Q:VISIT=""
  1. . S RESULT=$$GET1^DIQ(FREF,IEN,.04,"E") Q:RESULT=""
  1. . I RESULT<2.0 Q
  1. . S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:'VSDTM
  1. . I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. . I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. . I '$D(@CRDATA@(BTDFN,VSDTM)) S @CRDATA@(BTDFN)=$G(@CRDATA@(BTDFN))+1
  1. . S @CRDATA@(BTDFN,VSDTM)=RESULT_"^"_VISIT_"^"_IEN_"^"_FREF
  1. I $G(@CRDATA@(BTDFN))<2 K @CRDATA@(BTDFN)
  1. S DATE="",STOP=0
  1. NEW DATE1,DATE2
  1. F S DATE=$O(@CRDATA@(BTDFN,DATE),-1) Q:DATE="" D Q:STOP
  1. . S DATE1=DATE,DATE2=$O(@CRDATA@(BTDFN,DATE1),-1) Q:DATE2=""
  1. . I $$FMDIFF^XLFDT(DATE1,DATE2,1)<90 Q
  1. . S RESULT=$P(@CRDATA@(BTDFN,DATE1),"^",1)
  1. . S VISIT=$P(@CRDATA@(BTDFN,DATE1),"^",2)
  1. . S IEN=$P(@CRDATA@(BTDFN,DATE1),"^",3)
  1. . S RESULT1=$P(@CRDATA@(BTDFN,DATE2),"^",1)
  1. . S VISIT1=$P(@CRDATA@(BTDFN,DATE2),"^",2)
  1. . S IEN1=$P(@CRDATA@(BTDFN,DATE2),"^",3)
  1. . S @BQGLBT@(BTDFN,"CRITERIA","Nephropathy-Creatinine Value","V",VISIT,IEN)=DATE1_U_U_IEN_U_FREF
  1. . I DTDIF'="" S EXDT=$$FMADD^XLFDT(DATE1,DTDIF)
  1. . S $P(@BQGLBT@(BTDFN,"CRITERIA","Nephropathy-Creatinine Value","V",VISIT,IEN),U,2)=EXDT
  1. . S @BQGLBT@(BTDFN,"CRITERIA","Nephropathy-Creatinine Value","V",VISIT1,IEN1)=DATE2_U_U_IEN1_U_FREF
  1. . I DTDIF'="" S EXDT=$$FMADD^XLFDT(DATE2,DTDIF)
  1. . S $P(@BQGLBT@(BTDFN,"CRITERIA","Nephropathy-Creatinine Value","V",VISIT1,IEN1),U,2)=EXDT
  1. . S TX="Nephropathy-Creatinine Value"
  1. . D STOR^BQITD05(BTDFN,"Nephropathy-Creatinine Value",BQGLBT)
  1. . S STOP=1 ; Criteria has been met - stop searching
  1. ;
  1. S FREF=9000010.09,GREF=$$ROOT^DILFD(FREF,"",1)
  1. S TREF=$NA(^TMP("BQITAX",UID)),GFDATA=$NA(^TMP("BQIGFR",UID))
  1. K @GFDATA,@TREF
  1. S TMFRAME="T-12M",ENDT=$$DATE^BQIUL1(TMFRAME),STDT=$$DT^XLFDT()
  1. S DTDIF=$$FMDIFF^XLFDT(STDT,ENDT,1),EXDT=""
  1. F TAX="BGP GPRA ESTIMATED GFR TAX","BGP ESTIMATED GFR LOINC" D BLD^BQITUTL(TAX,TREF)
  1. ;D BLDSV^BQITUTL(95.3,"33914-3",TREF)
  1. S IEN=""
  1. F S IEN=$O(@GREF@("AC",BTDFN,IEN)) Q:IEN="" D
  1. . S TIEN=$$GET1^DIQ(FREF,IEN,.01,"I") I TIEN="" Q
  1. . I '$D(@TREF@(TIEN)) Q
  1. . S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I") Q:VISIT=""
  1. . S RESULT=$$GET1^DIQ(FREF,IEN,.04,"E") Q:RESULT=""
  1. . I RESULT<30 Q
  1. . S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:'VSDTM
  1. . I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. . I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. . S @GFDATA@(BTDFN,VSDTM)=RESULT_"^"_VISIT_"^"_IEN_"^"_FREF
  1. . S @GFDATA@(BTDFN)=$G(@GFDATA@(BTDFN))+1
  1. ;
  1. I $G(@GFDATA@(BTDFN))<2 K @GFDATA@(BTDFN)
  1. S DATE="",STOP=0
  1. NEW DATE1,DATE2
  1. F S DATE=$O(@GFDATA@(BTDFN,DATE),-1) Q:DATE="" D Q:STOP
  1. . S DATE1=DATE,DATE2=$O(@GFDATA@(BTDFN,DATE1),-1) Q:DATE2=""
  1. . ; need to be separated by at least 90 days
  1. . I $$FMDIFF^XLFDT(DATE1,DATE2,1)<90 Q
  1. . S RESULT=$P(@GFDATA@(BTDFN,DATE1),"^",1)
  1. . S VISIT=$P(@GFDATA@(BTDFN,DATE1),"^",2)
  1. . S IEN=$P(@GFDATA@(BTDFN,DATE1),"^",3)
  1. . S RESULT1=$P(@GFDATA@(BTDFN,DATE2),"^",1)
  1. . S VISIT1=$P(@GFDATA@(BTDFN,DATE2),"^",2)
  1. . S IEN1=$P(@GFDATA@(BTDFN,DATE2),"^",3)
  1. . S @BQGLBT@(BTDFN,"CRITERIA","Nephropathy-GFR Value","V",VISIT,IEN)=DATE1_U_U_IEN_U_FREF
  1. . I DTDIF'="" S EXDT=$$FMADD^XLFDT(DATE1,DTDIF)
  1. . S $P(@BQGLBT@(BTDFN,"CRITERIA","Nephropathy-GFR Value","V",VISIT,IEN),U,2)=EXDT
  1. . S @BQGLBT@(BTDFN,"CRITERIA","Nephropathy-GFR Value","V",VISIT1,IEN1)=DATE2_U_U_IEN1_U_FREF
  1. . I DTDIF'="" S EXDT=$$FMADD^XLFDT(DATE2,DTDIF)
  1. . S $P(@BQGLBT@(BTDFN,"CRITERIA","Nephropathy-GFR Value","V",VISIT1,IEN1),U,2)=EXDT
  1. . S TX="Nephropathy-GFR Value"
  1. . D STOR^BQITD05(BTDFN,"Nephropathy-GFR Value",BQGLBT)
  1. . S STOP=1 ; Criteria has been met - stop searching
  1. Q