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

BQITBMI.m

Go to the documentation of this file.
  1. BQITBMI ;PRXM/HC/ALA-Calculate BMI value ; 04 Apr 2006 1:22 PM
  1. ;;2.1;ICARE MANAGEMENT SYSTEM;;Feb 07, 2011
  1. ;
  1. ;**Program Description**
  1. ; This program calculates BMI and other measurements for a patient
  1. ; and time frame.
  1. Q
  1. ;
  1. OBMI(BDFN,TMFRAME) ;EP
  1. NEW BHT,BWT,BDATE,EDATE,HT,WT,HDATE,WDATE,DATE,QFL,IEN,HVISIT,HVSDTM,AGE
  1. NEW BDATE19,CAGE,BDATE50
  1. NEW WVISIT,WVSDTM,BGPBMIH,HIEN,WIEN
  1. ;I $G(TMFRAME)="" S TMFRAME="T-60M"
  1. S BHT=$$FIND1^DIC(9999999.07,,"X","HT")
  1. S BWT=$$FIND1^DIC(9999999.07,,"X","WT")
  1. S BDATE=(9999999-DT)
  1. S EDATE=(9999999-$$DATE^BQIUL1(TMFRAME))
  1. S BDATE19=$$DATE^BQIUL1("T-12M")
  1. S BDATE50=$$DATE^BQIUL1("T-24M")
  1. S CAGE=$$AGE^BQIAGE(BDFN) ; patient's current age
  1. ; Patients younger than 2 years cannot have BMI calculated.
  1. I CAGE<2 Q ""
  1. S HT="",WT="",HDATE="",WDATE=""
  1. S BDATE=BDATE-.01 ;Make range inclusive
  1. S DATE=BDATE,QFL=0
  1. S TMDATA=$NA(^TMP("BQIBM",UID))
  1. K @TMDATA
  1. FD ; Find data
  1. F S DATE=$O(^AUPNVMSR("AA",BDFN,BHT,DATE)) Q:DATE=""!(DATE>EDATE) D Q:QFL
  1. . S IEN=""
  1. . F S IEN=$O(^AUPNVMSR("AA",BDFN,BHT,DATE,IEN)) Q:IEN=""!(QFL) D
  1. .. ; if the new ENTERED IN ERROR field exists, exclude the record if it is marked as an error
  1. .. I $$VFIELD^DILFD(9000010.01,2) Q:$$GET1^DIQ(9000010.01,IEN_",",2,"I")=1
  1. .. S HT=$P(^AUPNVMSR(IEN,0),U,4),HDATE=DATE
  1. .. S HVISIT=$P(^AUPNVMSR(IEN,0),U,3),HIEN=IEN
  1. .. I $P($G(^AUPNVSIT(HVISIT,0)),U,11)=1 Q
  1. .. S HVSDTM=$P(^AUPNVSIT(HVISIT,0),U,1)
  1. .. ; If patient <19 years only look at the last year
  1. .. I CAGE<19,HVSDTM<BDATE19 S HT="",HDATE="" Q
  1. .. I CAGE>49,HVSDTM<BDATE50 S HT="",HDATE="" Q
  1. .. S @TMDATA@(BDFN,"CRITERIA",HVSDTM,"BMI-Height")=HVISIT
  1. .. S $P(@TMDATA@(BDFN,"CRITERIA",HVSDTM,"BMI-Height"),U,3)=IEN_U_"9000010.01"
  1. .. S $P(@TMDATA@(BDFN,"V",HVSDTM),U,2)=HT
  1. ;
  1. S DATE=BDATE,QFL=0
  1. F S DATE=$O(^AUPNVMSR("AA",BDFN,BWT,DATE)) Q:DATE=""!(DATE>EDATE) D Q:QFL
  1. . S IEN=""
  1. . F S IEN=$O(^AUPNVMSR("AA",BDFN,BWT,DATE,IEN)) Q:IEN=""!(QFL) D
  1. .. ; if the new ENTERED IN ERROR field exists, exclude the record if it is marked as an error
  1. .. I $$VFIELD^DILFD(9000010.01,2) Q:$$GET1^DIQ(9000010.01,IEN_",",2,"I")=1
  1. .. S WT=$P(^AUPNVMSR(IEN,0),U,4),WDATE=DATE
  1. .. S WVISIT=$P(^AUPNVMSR(IEN,0),U,3),WIEN=IEN
  1. .. I $P($G(^AUPNVSIT(WVISIT,0)),U,11)=1 Q
  1. .. S WVSDTM=$P(^AUPNVSIT(WVISIT,0),U,1)
  1. .. I WT'="" S AGE=$$AGE^BQIAGE(BDFN,WVSDTM) D
  1. ... ; If patient <19 years only look at the last year
  1. ... I CAGE<19,WVSDTM<BDATE19 S WT="",WDATE="" Q
  1. ... I CAGE>49,WVSDTM<BDATE50 S WT="",WDATE="" Q
  1. ... S @TMDATA@(BDFN,"CRITERIA",WVSDTM,"BMI-Weight")=WVISIT
  1. ... S $P(@TMDATA@(BDFN,"CRITERIA",WVSDTM,"BMI-Weight"),U,3)=IEN_U_"9000010.01"
  1. ... S $P(@TMDATA@(BDFN,"V",WVSDTM),U,1)=WT
  1. ;
  1. S VSDTM="",QFL=0,HT="",WT=""
  1. F S VSDTM=$O(@TMDATA@(BDFN,"V",VSDTM),-1) Q:VSDTM="" D Q:QFL
  1. . I CAGE<19,VSDTM<BDATE19 K @TMDATA@(BDFN,"V",VSDTM) Q
  1. . I CAGE>50,VSDTM<BDATE50 K @TMDATA@(BDFN,"V",VSDTM) Q
  1. . S RESULTS=@TMDATA@(BDFN,"V",VSDTM)
  1. . I CAGE<19 D Q
  1. .. S HT=$P(RESULTS,"^",2),WT=$P(RESULTS,"^",1)
  1. .. I HT=""!(WT="") Q
  1. .. S HVISIT=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Height"),U,1)
  1. .. S HIEN=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Height"),U,3)
  1. .. S WVISIT=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Weight"),U,1)
  1. .. S WIEN=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Weight"),U,3)
  1. .. S QFL=1
  1. . I HT="" D
  1. .. S HT=$P(RESULTS,"^",2) I HT="" Q
  1. .. S HVISIT=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Height"),U,1)
  1. .. S HIEN=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Height"),U,3)
  1. .. I WT'="" Q
  1. .. I WT="" S WT=$P(RESULTS,"^",1) I WT="" Q
  1. .. S WVISIT=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Weight"),U,1)
  1. .. S WIEN=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Weight"),U,3)
  1. . I WT="" D
  1. .. S WT=$P(RESULTS,"^",1) I WT="" Q
  1. .. S WVISIT=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Weight"),U,1)
  1. .. S WIEN=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Weight"),U,3)
  1. .. I HT'="" Q
  1. .. I HT="" S HT=$P(RESULTS,"^",2) I HT="" Q
  1. .. S HVISIT=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Height"),U,1)
  1. .. S HIEN=$P(@TMDATA@(BDFN,"CRITERIA",VSDTM,"BMI-Height"),U,3)
  1. . I HT'=""&(WT'="") S QFL=1
  1. ;
  1. I +HT=0!(+WT=0) Q ""
  1. ;
  1. K @TMDATA
  1. S WT=WT*.45359,HT=(HT*.0254),HT=(HT*HT),BGPBMIH=(WT/HT)
  1. S AGE=$$AGE^BQIAGE(BDFN,$P(^AUPNVSIT(WVISIT,0),U,1)\1)
  1. Q BGPBMIH_"^"_AGE_"^"_HVISIT_","_WVISIT_"^"_HIEN_","_WIEN
  1. ;
  1. OB(BDFN,BBMI,AGE) ;EP - obese
  1. ;Description - Checks if a patient is classified as obese
  1. ;Input
  1. ; BDFN - Patient IEN
  1. ; BBMI - Patient BMI value
  1. ; AGE - Age of patient when measure was taken
  1. NEW SEX,R
  1. I $G(BBMI)="" Q 0
  1. I AGE<2 Q 0
  1. S SEX=$P(^DPT(BDFN,0),U,2)
  1. I SEX="" Q 0
  1. S R=0,R=$O(^APCLBMI("H",SEX,AGE,R))
  1. I 'R S R=$O(^APCLBMI("H",SEX,AGE)) I R S R=$O(^APCLBMI("H",SEX,R,""))
  1. I 'R Q 0
  1. I BBMI>$P(^APCLBMI(R,0),U,7)!(BBMI<$P(^APCLBMI(R,0),U,6)) Q "0^Outside Data Check Limits"
  1. I BBMI'<$P(^APCLBMI(R,0),U,5) Q 1
  1. Q 0
  1. ;
  1. OW(BDFN,BBMI,AGE) ;EP - overweight
  1. ;Description - Checks if a patient is classified as overweight
  1. ;Input
  1. ; BDFN - Patient IEN
  1. ; BBMI - Patient BMI value
  1. ; AGE - Age of patient when measure was taken
  1. NEW SEX,R
  1. I $G(BBMI)="" Q 0
  1. I AGE<2 Q 0
  1. S SEX=$P(^DPT(BDFN,0),U,2)
  1. I SEX="" Q 0
  1. S R=0,R=$O(^APCLBMI("H",SEX,AGE,R))
  1. I 'R S R=$O(^APCLBMI("H",SEX,AGE)) I R S R=$O(^APCLBMI("H",SEX,R,""))
  1. I 'R Q 0
  1. I BBMI>$P(^APCLBMI(R,0),U,7)!(BBMI<$P(^APCLBMI(R,0),U,6)) Q "0^Outside Data Check Limits"
  1. I BBMI'<$P(^APCLBMI(R,0),U,4),BBMI<$P(^APCLBMI(R,0),U,5) Q 1
  1. Q 0
  1. ;
  1. BP(BDFN,TMFRAME) ;EP -- Blood Pressure for a single patient
  1. ; Get the Mean Blood Pressure value for a patient and a time frame
  1. ;Input
  1. ; BDFN - Patient IEN
  1. ; TMFRAME - Time frame in relative date format
  1. ;
  1. ; Get a list of all BP measures in the time frame
  1. NEW N,TBP,TTBP,BDATE,EDATE,E,%,VISIT,CT,TSYS,TDIA,SYS,VIENS
  1. K TBP,TTBP
  1. S BDATE=(9999999-DT)
  1. S EDATE=(9999999-$$DATE^BQIUL1(TMFRAME))
  1. ;
  1. S BTYP=$$FIND1^DIC(9999999.07,,"X","BP")
  1. S BCLN=$$FIND1^DIC(40.7,"","Q","30","C","","ERROR")
  1. S DATE=BDATE-.01,CT=0,QFL=0
  1. F S DATE=$O(^AUPNVMSR("AA",BDFN,BTYP,DATE)) Q:DATE=""!(DATE>EDATE) D Q:QFL
  1. . S IEN=""
  1. . F S IEN=$O(^AUPNVMSR("AA",BDFN,BTYP,DATE,IEN),-1) Q:IEN=""!(QFL) D
  1. .. S VISIT=$P(^AUPNVMSR(IEN,0),U,3) I VISIT="" Q
  1. .. ; if the new ENTERED IN ERROR field exists, exclude the record if it is marked as an error
  1. .. I $$VFIELD^DILFD(9000010.01,2) Q:$$GET1^DIQ(9000010.01,IEN_",",2,"I")=1
  1. .. I $P(^AUPNVSIT(VISIT,0),U,8)=BCLN Q
  1. .. I $P(^AUPNVSIT(VISIT,0),U,11)=1 Q
  1. .. S CT=CT+1
  1. .. S TBP(CT)=$P(^AUPNVSIT(VISIT,0),U,1)\1_U_$P(^AUPNVMSR(IEN,0),U,4)_U_"BP"_U_IEN_";AUPNVMSR"_U_VISIT
  1. ; check for multiple BPs in the same visit and use the lowest BP
  1. S N="" F S N=$O(TBP(N)) Q:'N D
  1. . S VISIT=$P(TBP(N),U,5),SYS=$P($P(TBP(N),U,2),"/",1)
  1. . I VISIT=""!(SYS="") Q
  1. . S TTBP(VISIT,SYS)=N
  1. S CT=0,VISIT="",TSYS="",TDIA="",VIENS="",IENS=""
  1. F S VISIT=$O(TTBP(VISIT),-1) Q:VISIT=""!(CT=3) D
  1. . S SYS=$O(TTBP(VISIT,"")),N=TTBP(VISIT,SYS)
  1. . S DIA=$P($P(TBP(N),U,2),"/",2)
  1. . NEW RIEN
  1. . S RIEN=$P($P(TBP(N),U,4),";",1),IENS=IENS_RIEN_","
  1. . S TSYS=TSYS+SYS,TDIA=TDIA+DIA,CT=CT+1,VIENS=VIENS_VISIT_","
  1. K TBP,TTBP
  1. I CT<2 Q ""
  1. Q $J((TSYS/CT),3,0)_U_$J((TDIA/CT),2,0)_U_VIENS_U_IENS
  1. ;
  1. ABP(TMFRAME,TPGLOB) ;EP -- Blood Pressure for all patients
  1. ; Input
  1. ; TMFRAME - Timeframe for search
  1. ; TPGLOB - Temporary global
  1. NEW BDATE,EDATE,TMDATA,BTYP,IEN,BCLN,DATE,VISIT,MIEN,DFN,RESULT,TTBP
  1. NEW TDIA,TSYS,DIA,SYS,N,VIENS,CT,IENS,BQBDT
  1. NEW UID
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. S BDATE=$$DATE^BQIUL1(TMFRAME),EDATE=DT
  1. S BTYP=$$FIND1^DIC(9999999.07,,"X","BP")
  1. S BCLN=$$FIND1^DIC(40.7,"","Q","30","C","","ERROR")
  1. S TMDATA=$NA(^TMP("BQIBPA",UID))
  1. K @TMDATA
  1. S DATE=BDATE
  1. F S DATE=$O(^AUPNVSIT("B",DATE)) Q:DATE=""!((DATE\1)>EDATE) D
  1. . S VISIT=""
  1. . F S VISIT=$O(^AUPNVSIT("B",DATE,VISIT)) Q:VISIT="" D
  1. .. I $$GET1^DIQ(9000010,VISIT_",",.08,"I")=BCLN Q
  1. .. I $$GET1^DIQ(9000010,VISIT_",",.11,"I")=1 Q
  1. .. S MIEN=""
  1. .. F S MIEN=$O(^AUPNVMSR("AD",VISIT,MIEN),-1) Q:MIEN="" D
  1. ... I $$GET1^DIQ(9000010.01,MIEN_",",.01,"I")'=BTYP Q
  1. ... ; if the new ENTERED IN ERROR field exists, exclude the record if it is marked as an error
  1. ... I $$VFIELD^DILFD(9000010.01,2) Q:$$GET1^DIQ(9000010.01,MIEN_",",2,"I")=1
  1. ... S DFN=$$GET1^DIQ(9000010.01,MIEN_",",.02,"I") I DFN="" Q
  1. ... S RESULT=$$GET1^DIQ(9000010.01,MIEN_",",.04,"E") I RESULT="" Q
  1. ... ;I $G(@TMDATA@(DFN))'<3 Q
  1. ... S @TMDATA@(DFN)=$G(@TMDATA@(DFN))+1
  1. ... S @TMDATA@(DFN,"V","BP",DATE,MIEN)=VISIT_"^"_$$GET1^DIQ(9000010.01,MIEN_",",.04,"E")
  1. ;
  1. S DFN=""
  1. F S DFN=$O(@TMDATA@(DFN)) Q:DFN="" D
  1. . I $G(@TMDATA@(DFN))<2 K @TMDATA@(DFN) Q
  1. . S BQBDT="" K TTBP
  1. . F S BQBDT=$O(@TMDATA@(DFN,"V","BP",BQBDT),-1) Q:BQBDT="" D
  1. .. S N="" F S N=$O(@TMDATA@(DFN,"V","BP",BQBDT,N)) Q:N="" D
  1. ... S VISIT=$P(@TMDATA@(DFN,"V","BP",BQBDT,N),U,1),SYS=$P($P(@TMDATA@(DFN,"V","BP",BQBDT,N),U,2),"/",1)
  1. ... S TTBP(VISIT,N,SYS)=$P(@TMDATA@(DFN,"V","BP",BQBDT,N),U,2)
  1. . S VISIT="",TSYS=0,TDIA=0,VIENS="",CT=0,IENS=""
  1. . F S VISIT=$O(TTBP(VISIT),-1) Q:VISIT="" D Q:CT>2
  1. .. S MIEN=""
  1. .. F S MIEN=$O(TTBP(VISIT,MIEN),-1) Q:MIEN="" D Q:CT>2
  1. ... S SYS=$O(TTBP(VISIT,MIEN,"")),N=TTBP(VISIT,MIEN,SYS)
  1. ... S DIA=$P(N,"/",2)
  1. ... S TSYS=(TSYS+SYS),TDIA=(TDIA+DIA),CT=CT+1,VIENS=VIENS_VISIT_","
  1. ... S IENS=IENS_MIEN_","
  1. . K TTBP
  1. . S @TPGLOB@(DFN)=$J((TSYS/CT),3,0)_U_$J((TDIA/CT),2,0)_U_VIENS_U_IENS
  1. K @TMDATA
  1. Q
  1. ;
  1. ABMI(TMFRAME,TPGLOB) ;EP - Get BMIs for all patients
  1. ; Input
  1. ; TMFRAME - Timeframe for search
  1. ; TPGLOB - Temporary global
  1. ;
  1. NEW BDATE,EDATE,BHT,BWT,TMDATA,DATE,VISIT,MIEN,BTYP,RESULT,DFN,AGE,H,W,HT,WT
  1. NEW QFL,RESULTS,VSDTM,BMI,CAGE,HVISIT,WVISIT,HVSDTM,WVSDTM,UID
  1. NEW BDATE19,BDATE50
  1. S UID=$S($G(ZTSK):"Z"_ZTSK,1:$J)
  1. ;I $G(TMFRAME)="" S TMFRAME="T-60M"
  1. S BDATE19=$$DATE^BQIUL1("T-12M") ; Patients <19 are limited to the past year
  1. S BDATE50=$$DATE^BQIUL1("T-24M")
  1. S BDATE=$$DATE^BQIUL1(TMFRAME),EDATE=DT
  1. S BHT=$$FIND1^DIC(9999999.07,,"X","HT")
  1. S BWT=$$FIND1^DIC(9999999.07,,"X","WT")
  1. S TMDATA=$NA(^TMP("BQIBM",UID))
  1. K @TMDATA
  1. S DATE=EDATE
  1. F S DATE=$O(^AUPNVSIT("B",DATE),-1) Q:DATE=""!((DATE\1)<BDATE) D
  1. . S VISIT=""
  1. . F S VISIT=$O(^AUPNVSIT("B",DATE,VISIT)) Q:VISIT="" D
  1. .. I $$GET1^DIQ(9000010,VISIT_",",.11,"I")=1 Q
  1. .. S MIEN=""
  1. .. F S MIEN=$O(^AUPNVMSR("AD",VISIT,MIEN),-1) Q:MIEN="" D
  1. ... S BTYP=$$GET1^DIQ(9000010.01,MIEN_",",.01,"I")
  1. ... I BTYP'=BHT,BTYP'=BWT Q
  1. ... ; if the new ENTERED IN ERROR field exists, exclude the record if it is marked as an error
  1. ... I $$VFIELD^DILFD(9000010.01,2) Q:$$GET1^DIQ(9000010.01,MIEN_",",2,"I")=1
  1. ... S DFN=$$GET1^DIQ(9000010.01,MIEN_",",.02,"I") I DFN="" Q
  1. ... S CAGE=$$AGE^BQIAGE(DFN)
  1. ... ; Patients younger than 2 years cannot have BMI calculated.
  1. ... I CAGE<2 Q
  1. ... S RESULT=$$GET1^DIQ(9000010.01,MIEN_",",.04,"E") I RESULT="" Q
  1. ... S @TMDATA@(DFN)=CAGE
  1. ... I BTYP=BHT D
  1. .... S H=RESULT
  1. .... I $P($G(@TMDATA@(DFN,"V",DATE)),"^",2)="" S $P(@TMDATA@(DFN,"V",DATE),"^",2)=H
  1. .... I $P($G(@TMDATA@(DFN,"CRITERIA",DATE,"BMI-Height")),U,1)="" S $P(@TMDATA@(DFN,"CRITERIA",DATE,"BMI-Height"),U,1)=VISIT
  1. .... I $P($G(@TMDATA@(DFN,"CRITERIA",DATE,"BMI-Height")),U,3)="" S $P(@TMDATA@(DFN,"CRITERIA",DATE,"BMI-Height"),U,3)=MIEN_U_"9000010.01"
  1. ... I BTYP=BWT D
  1. .... I $P($G(@TMDATA@(DFN,"V",DATE)),"^",1)="" S $P(@TMDATA@(DFN,"V",DATE),"^",1)=RESULT
  1. .... I $P($G(@TMDATA@(DFN,"CRITERIA",DATE,"BMI-Weight")),U,1)="" S $P(@TMDATA@(DFN,"CRITERIA",DATE,"BMI-Weight"),U,1)=VISIT
  1. .... I $P($G(@TMDATA@(DFN,"CRITERIA",DATE,"BMI-Weight")),U,3)="" S $P(@TMDATA@(DFN,"CRITERIA",DATE,"BMI-Weight"),U,3)=MIEN_U_"9000010.01"
  1. ;
  1. S DFN=""
  1. F S DFN=$O(@TMDATA@(DFN)) Q:DFN="" D
  1. . S VSDTM="",QFL=0,HT="",WT=""
  1. . F S VSDTM=$O(@TMDATA@(DFN,"V",VSDTM),-1) Q:VSDTM="" D Q:QFL
  1. .. S CAGE=$$AGE^BQIAGE(DFN)
  1. .. I CAGE<19,VSDTM<BDATE19 Q
  1. .. I CAGE>49,VSDTM<BDATE50 Q
  1. .. S RESULTS=@TMDATA@(DFN,"V",VSDTM)
  1. .. I CAGE<19 D Q
  1. ... S HT=$P(RESULTS,"^",2),WT=$P(RESULTS,"^",1)
  1. ... I HT=""!(WT="") Q
  1. ... S HVISIT=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Height"),U,1)
  1. ... S HIEN=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Height"),U,3)
  1. ... S WVISIT=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Weight"),U,1)
  1. ... S WIEN=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Weight"),U,3)
  1. ... S QFL=1
  1. ... S WT=WT*.45359,HT=(HT*.0254),HT=(HT*HT),BMI=(WT/HT)
  1. ... S AGE=$$AGE^BQIAGE(DFN,$P(^AUPNVSIT(WVISIT,0),U,1)\1)
  1. ... S @TPGLOB@(DFN)=BMI_"^"_AGE_"^"_CAGE,QFL=1
  1. ... S $P(@TPGLOB@(DFN,"CRITERIA","BMI-Height","V",HVISIT,HIEN),U,1)=$P(^AUPNVSIT(HVISIT,0),U,1)
  1. ... S $P(@TPGLOB@(DFN,"CRITERIA","BMI-Weight","V",WVISIT,WIEN),U,1)=$P(^AUPNVSIT(WVISIT,0),U,1)
  1. .. I HT="" D
  1. ... S HT=$P(RESULTS,"^",2) I HT="" Q
  1. ... S HVISIT=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Height"),U,1)
  1. ... S HIEN=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Height"),U,3)
  1. ... I WT'="" Q
  1. ... I WT="" S WT=$P(RESULTS,"^",1) I WT="" Q
  1. ... S WVISIT=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Weight"),U,1)
  1. ... S WIEN=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Weight"),U,3)
  1. .. I WT="" D
  1. ... S WT=$P(RESULTS,"^",1) I WT="" Q
  1. ... S WVISIT=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Weight"),U,1)
  1. ... S WIEN=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Weight"),U,3)
  1. ... ;S AGE=$$AGE^BQIAGE(DFN,VSDTM)
  1. ... I HT'="" Q
  1. ... I HT="" S HT=$P(RESULTS,"^",2) I HT="" Q
  1. ... S HVISIT=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Height"),U,1)
  1. ... S HIEN=$P(@TMDATA@(DFN,"CRITERIA",VSDTM,"BMI-Height"),U,3)
  1. .. ;I HT'=""&(WT'="") Q
  1. .. I HT=""!(WT="") Q
  1. .. S WT=WT*.45359,HT=(HT*.0254),HT=(HT*HT),BMI=(WT/HT)
  1. .. S AGE=$$AGE^BQIAGE(DFN,$P(^AUPNVSIT(WVISIT,0),U,1)\1)
  1. .. S @TPGLOB@(DFN)=BMI_"^"_AGE_"^"_CAGE,QFL=1
  1. .. S $P(@TPGLOB@(DFN,"CRITERIA","BMI-Height","V",HVISIT,HIEN),U,1)=$P(^AUPNVSIT(HVISIT,0),U,1)
  1. .. S $P(@TPGLOB@(DFN,"CRITERIA","BMI-Weight","V",WVISIT,WIEN),U,1)=$P(^AUPNVSIT(WVISIT,0),U,1)
  1. K @TMDATA
  1. Q