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

BQITHCH.m

Go to the documentation of this file.
  1. BQITHCH ;PRXM/HC/ALA-High Cholesterol ; 12 Apr 2006 10:09 AM
  1. ;;2.1;ICARE MANAGEMENT SYSTEM;;Feb 07, 2011
  1. Q
  1. ;
  1. DEF(TTGLOB) ;EP -- High Cholesterol Definition
  1. ;Description
  1. ; DEF.04 formerly CVDAL.DEF.DX.2
  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
  1. ; Use taxonomy definitions
  1. S BQREF="BQIRY" K @BQREF
  1. S TAX="High Cholesterol"
  1. D ARY^BQITUTL(TAX,BQREF)
  1. S BQGLBT=$NA(^TMP("BQITMPH",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. ;LDL Lab test value check
  1. S FREF=9000010.09,GREF=$$ROOT^DILFD(FREF,"",1),TREF=$NA(^TMP("BQITAX",UID)) K @TREF
  1. S TMFRAME="T-60M",ENDT=$$DATE^BQIUL1(TMFRAME),STDT=$$DT^XLFDT()
  1. S DTDIF=$$FMDIFF^XLFDT(STDT,ENDT,1),EXDT=""
  1. F TAX="DM AUDIT LDL CHOLESTEROL TAX","BGP LDL 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),-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 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 RESULT=$$GET1^DIQ(FREF,IEN,.04,"E") Q:RESULT=""
  1. .. I RESULT<160 Q
  1. .. S $P(@BQGLBT@(DFN,"CRITERIA",TAX,"V",VISIT,IEN),U,1)=VSDTM,TX=TAX
  1. .. S $P(@BQGLBT@(DFN,"CRITERIA",TAX,"V",VISIT,IEN),U,3)=IEN_U_FREF
  1. .. I DTDIF'="" S EXDT=$$FMADD^XLFDT(VSDTM,DTDIF)
  1. .. I EXDT'="" S $P(@BQGLBT@(DFN,"CRITERIA",TAX,"V",VISIT,IEN),U,2)=EXDT
  1. .. D STOR(DFN,"Risk Factor-LDL Lab Test Value")
  1. K @BQGLBT
  1. ;
  1. ;Total Cholesterol Lab test value check
  1. S FREF=9000010.09,GREF=$$ROOT^DILFD(FREF,"",1),TREF=$NA(^TMP("BQITAX",UID)) K @TREF
  1. S TMFRAME="T-60M",ENDT=$$DATE^BQIUL1(TMFRAME),STDT=$$DT^XLFDT()
  1. S DTDIF=$$FMDIFF^XLFDT(STDT,ENDT,1),EXDT=""
  1. F TAX="DM AUDIT CHOLESTEROL TAX","BGP TOTAL CHOLESTEROL LOINC" 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),-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. .. I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. .. S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:'VSDTM
  1. .. I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. .. S RESULT=$$GET1^DIQ(FREF,IEN,.04,"E") Q:RESULT=""
  1. .. I RESULT'>239 Q
  1. .. ; setting "TOTAL" is used below in determining the non HDL value
  1. .. S @BQGLBT@(DFN,VSDTM,"TOTAL",IEN)=RESULT_"^"_VISIT_"^"_IEN_"^"_FREF
  1. .. S $P(@BQGLBT@(DFN,"CRITERIA",TAX,"V",VISIT,IEN),U,1)=VSDTM,TX=TAX
  1. .. S $P(@BQGLBT@(DFN,"CRITERIA",TAX,"V",VISIT,IEN),U,3)=IEN_U_FREF
  1. .. I DTDIF'="" S EXDT=$$FMADD^XLFDT(VSDTM,DTDIF)
  1. .. I EXDT'="" S $P(@BQGLBT@(DFN,"CRITERIA",TAX,"V",VISIT,IEN),U,2)=EXDT
  1. .. D STOR(DFN,"Risk Factor-Total Cholesterol Value")
  1. ;
  1. ;HDL Lab Test value check
  1. S FREF=9000010.09,GREF=$$ROOT^DILFD(FREF,"",1),TREF=$NA(^TMP("BQITAX",UID)) K @TREF
  1. F TAX="DM AUDIT HDL TAX","BGP HDL 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 SEX=$$GET1^DIQ(2,DFN,.02,"I")
  1. .. S VISIT=$$GET1^DIQ(FREF,IEN,.03,"I") Q:VISIT=""
  1. .. I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. .. S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:'VSDTM
  1. .. I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. .. S RESULT=$$GET1^DIQ(FREF,IEN,.04,"E") Q:RESULT=""
  1. .. S @BQGLBT@(DFN,VSDTM,"HDL",IEN)=RESULT_"^"_VISIT_"^"_IEN_"^"_FREF
  1. ;
  1. ; Check for value of Total minus value of HDL for most recent result
  1. NEW TVISIT,TVIEN,HVISIT,HVIEN
  1. S DFN=""
  1. F S DFN=$O(@BQGLBT@(DFN)) Q:DFN="" D
  1. . S DTM="",QFL=0
  1. . F S DTM=$O(@BQGLBT@(DFN,DTM),-1) Q:DTM="" D Q:QFL
  1. .. S HDL=$D(@BQGLBT@(DFN,DTM,"HDL"))
  1. .. S TOT=$D(@BQGLBT@(DFN,DTM,"TOTAL"))
  1. .. I HDL,TOT D Q:QFL
  1. ... S TIEN=$O(@BQGLBT@(DFN,DTM,"TOTAL",""))
  1. ... S TOTAL=$P(@BQGLBT@(DFN,DTM,"TOTAL",TIEN),"^",1)
  1. ... S TVISIT=$P(@BQGLBT@(DFN,DTM,"TOTAL",TIEN),"^",2)
  1. ... S TVIEN=$P(@BQGLBT@(DFN,DTM,"TOTAL",TIEN),"^",3)
  1. ... S HIEN=$O(@BQGLBT@(DFN,DTM,"HDL",""))
  1. ... S HDL=$P(@BQGLBT@(DFN,DTM,"HDL",HIEN),"^",1)
  1. ... S HVISIT=$P(@BQGLBT@(DFN,DTM,"HDL",HIEN),"^",2)
  1. ... S HVIEN=$P(@BQGLBT@(DFN,DTM,"HDL",HIEN),"^",3)
  1. ... S NHDL=TOTAL-HDL
  1. ... I NHDL'>189 Q
  1. ... S QFL=1
  1. ... S @BQGLBT@(DFN,"CRITERIA","NON HDL","V",TVISIT,TVIEN)=DTM_U_U_TVIEN_U_FREF
  1. ... S @BQGLBT@(DFN,"CRITERIA","NON HDL","V",HVISIT,HVIEN)=DTM_U_U_HVIEN_U_FREF
  1. ... S TX="NON HDL"
  1. ... D STOR(DFN,"Risk Factor-Non HDL")
  1. ;
  1. K DFN,DTM,HDL,TOT,IEN,NHDL,SEX,VISIT,VSDTM,TMFRAME,TAX,FREF,GREF
  1. K TIEN,ENDT,BQREF,@BQGLBT,TDFN,SDFN,TOTAL,RESULT,TREF,TIEN,HIEN,TX
  1. Q
  1. ;
  1. STOR(SDFN,CRIT) ; Store the patient's met criteria
  1. I $G(@TTGLOB@(SDFN))>2 Q
  1. I $D(@TTGLOB@(SDFN,"CRITERIA",CRIT))>0 Q
  1. S @TTGLOB@(SDFN)=$G(@TTGLOB@(SDFN))+1
  1. M @TTGLOB@(SDFN,"CRITERIA",CRIT,"V")=@BQGLBT@(SDFN,"CRITERIA",TX,"V")
  1. M @TTGLOB@(SDFN,"CRITERIA",CRIT,"P")=@BQGLBT@(SDFN,"CRITERIA",TX,"P")
  1. Q
  1. ;
  1. PAT(BTDFN,BTGLOB) ;EP -- Get cholesterol for a patient
  1. NEW BQDXN,BQREF
  1. S BQGLBT=$NA(^TMP("BQITMP",UID)) K @BQGLBT
  1. S BQDXN=$$GDXN^BQITUTL("High Cholesterol")
  1. S BQREF="BQIRY"
  1. D GDF^BQITUTL(BQDXN,BQREF)
  1. I $$PAT^BQITDGN(BQREF,BQGLBT,BTDFN) D
  1. . NEW TX
  1. . S TX=$O(@BQGLBT@(BTDFN,"CRITERIA",""))
  1. . D STOR^BQITD05(BTDFN,TX,BQGLBT)
  1. ;
  1. S FREF=9000010.09,GREF=$$ROOT^DILFD(FREF,"",1),TREF=$NA(^TMP("BQITAX",UID))
  1. K @TREF
  1. S TMFRAME="T-60M",ENDT=$$DATE^BQIUL1(TMFRAME),STDT=$$DT^XLFDT()
  1. S DTDIF=$$FMDIFF^XLFDT(STDT,ENDT,1),EXDT=""
  1. F TAX="DM AUDIT LDL CHOLESTEROL TAX","BGP LDL LOINC CODES" D BLD^BQITUTL(TAX,TREF)
  1. S IEN="",QFL=0
  1. F S IEN=$O(@GREF@("AC",BTDFN,IEN),-1) Q:IEN="" D Q:QFL
  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. . I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. . S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:'VSDTM
  1. . I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. . S RESULT=$$GET1^DIQ(FREF,IEN,.04,"E") Q:RESULT=""
  1. . I RESULT'>159 Q
  1. . S $P(@BQGLBT@(BTDFN,"CRITERIA",TAX,"V",VISIT,IEN),U,1)=VSDTM,TX=TAX
  1. . S $P(@BQGLBT@(BTDFN,"CRITERIA",TAX,"V",VISIT,IEN),U,3)=IEN_U_FREF
  1. . I DTDIF'="" S EXDT=$$FMADD^XLFDT(VSDTM,DTDIF)
  1. . I EXDT'="" S $P(@BQGLBT@(DFN,"CRITERIA",TAX,"V",VISIT,IEN),U,2)=EXDT
  1. . D STOR^BQITD05(BTDFN,TAX,BQGLBT)
  1. . S QFL=1
  1. ;
  1. S FREF=9000010.09,GREF=$$ROOT^DILFD(FREF,"",1),TREF=$NA(^TMP("BQITAX",UID))
  1. K @TREF,@BQGLBT
  1. F TAX="DM AUDIT CHOLESTEROL TAX","BGP TOTAL CHOLESTEROL LOINC" D BLD^BQITUTL(TAX,TREF)
  1. S IEN="",QFL=0
  1. F S IEN=$O(@GREF@("AC",BTDFN,IEN),-1) Q:IEN="" D Q:QFL
  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. . I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. . S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:'VSDTM
  1. . I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. . S RESULT=$$GET1^DIQ(FREF,IEN,.04,"E") Q:RESULT=""
  1. . I RESULT'>239 Q
  1. . S @BQGLBT@(BTDFN,VSDTM,"TOTAL",IEN)=RESULT_"^"_VISIT_"^"_IEN_"^"_FREF
  1. . S $P(@BQGLBT@(BTDFN,"CRITERIA",TAX,"V",VISIT,IEN),U,1)=VSDTM,TX=TAX
  1. . S $P(@BQGLBT@(BTDFN,"CRITERIA",TAX,"V",VISIT,IEN),U,3)=IEN_U_FREF
  1. . I DTDIF'="" S EXDT=$$FMADD^XLFDT(VSDTM,DTDIF)
  1. . I EXDT'="" S $P(@BQGLBT@(DFN,"CRITERIA",TAX,"V",VISIT,IEN),U,2)=EXDT
  1. . D STOR^BQITD05(BTDFN,TAX,BQGLBT)
  1. . S QFL=1
  1. . K @BQGLBT@(DFN,"CRITERIA")
  1. ;
  1. S FREF=9000010.09,GREF=$$ROOT^DILFD(FREF,"",1),TREF=$NA(^TMP("BQITAX",UID))
  1. K @TREF
  1. F TAX="DM AUDIT HDL TAX","BGP HDL LOINC CODES" D BLD^BQITUTL(TAX,TREF)
  1. S IEN=""
  1. F S IEN=$O(@GREF@("AC",BTDFN,IEN),-1) 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. . I $$GET1^DIQ(9000010,VISIT,.11,"I")=1 Q
  1. . S RESULT=$$GET1^DIQ(FREF,IEN,.04,"E") Q:RESULT=""
  1. . S VSDTM=$$GET1^DIQ(9000010,VISIT,.01,"I")\1 Q:'VSDTM
  1. . I $G(TMFRAME)'="",VSDTM<ENDT Q
  1. . S @BQGLBT@(BTDFN,VSDTM,"HDL",IEN)=RESULT_"^"_VISIT_"^"_IEN_"^"_FREF
  1. ;
  1. S DTM="",QFL=0
  1. F S DTM=$O(@BQGLBT@(BTDFN,DTM),-1) Q:DTM="" D Q:QFL
  1. . S HDL=$D(@BQGLBT@(BTDFN,DTM,"HDL"))
  1. . S TOT=$D(@BQGLBT@(BTDFN,DTM,"TOTAL"))
  1. . I HDL,TOT D
  1. .. S TIEN=$O(@BQGLBT@(BTDFN,DTM,"TOTAL",""))
  1. .. S TOTAL=$P(@BQGLBT@(BTDFN,DTM,"TOTAL",TIEN),"^",1)
  1. .. S TVISIT=$P(@BQGLBT@(BTDFN,DTM,"TOTAL",TIEN),"^",2)
  1. .. S TVIEN=$P(@BQGLBT@(BTDFN,DTM,"TOTAL",TIEN),"^",3)
  1. .. S HIEN=$O(@BQGLBT@(BTDFN,DTM,"HDL",""))
  1. .. S HDL=$P(@BQGLBT@(BTDFN,DTM,"HDL",HIEN),"^",1)
  1. .. S HVISIT=$P(@BQGLBT@(BTDFN,DTM,"HDL",HIEN),"^",2)
  1. .. S HVIEN=$P(@BQGLBT@(BTDFN,DTM,"HDL",HIEN),"^",3)
  1. .. S NHDL=TOTAL-HDL
  1. .. I NHDL'>189 Q
  1. .. S @BQGLBT@(BTDFN,"CRITERIA","NON HDL","V",TVISIT,TVIEN)=DTM_U_U_TVIEN_U_FREF
  1. .. S @BQGLBT@(BTDFN,"CRITERIA","NON HDL","V",HVISIT,HVIEN)=DTM_U_U_HVIEN_U_FREF
  1. .. S TX="NON HDL"
  1. .. D STOR^BQITD05(BTDFN,TX,BQGLBT)
  1. .. S QFL=1
  1. K @TREF,@BQGLBT,TIEN,HIEN,TX,HDL,TOT,TOTAL,NHDL,DTM,VISIT,RESULT,VSDTM,TMFRAME
  1. K TAX,FREF,GREF,IEN,TREF,TVISIT,TVIEN,HVISIT,HVIEN
  1. Q