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

BPXRMBMI.m

Go to the documentation of this file.
  1. BPXRMBMI ; SLC/PKR - This is an example of a computed finding. ;26-Sep-2006 13:44;MGH
  1. ;;1.5;CLINICAL REMINDERS;**1004**;Jun 19, 2000
  1. ;IHS/CIA/MGH Patch 1004 Routine for Computed findings for BMI
  1. ;=======================================================================
  1. BMI(DFN,TEST,DATE,VALUE,TEXT) ; EP Computed finding to return the BMI
  1. N BMI,HT,WT,HTDATE,WTDATE,HTDATA,WTDATA,X,Y,TODAY
  1. S (TEST,DATE,VALUE,TEXT)=""
  1. S X="TODAY" D ^%DT S TODAY=Y
  1. D CALCLATE I TEST=0 S DATE=TODAY,VALUE="" Q
  1. I (HTDATE'="")&(WTDATE'="") D
  1. .S DATE=$$MIN^XLFMTH(HTDATE,WTDATE)
  1. S TEST=1
  1. I BMI="" S VALUE="?"
  1. E S VALUE=BMI
  1. Q
  1. CALCLATE ;Calculate the BMI
  1. S HTDATA=$$LASTMSR($G(DFN),"HT") I HTDATA<1 S TEST=0 Q
  1. S WTDATA=$$LASTMSR($G(DFN),"WT") I WTDATA<1 S TEST=0 Q
  1. S BMI=""
  1. S HT=$P(HTDATA,U,1),HTDATE=$P(HTDATA,U,3)
  1. S WT=$P(WTDATA,U,1),WTDATE=$P(WTDATA,U,3)
  1. S WT=WT*.45359,HT=HT*.0254,HT=HT*HT,BMI=+$J(WT/HT,0,2)
  1. Q
  1. LASTMSR(DFN,MSR) ;--Returns most current measurement
  1. NEW VDT,IEN,X,TIU,LINE,ARR,DATE,STOP,BPX
  1. S MSR=$O(^AUTTMSR("B",MSR,0)) I MSR="" Q ""
  1. ;
  1. S STOP=$O(^AUPNVMSR("AA",DFN,MSR,0))\1 ;stop at most recent date
  1. I 'STOP Q "" ;none to be found
  1. S VDT=0
  1. F S VDT=$O(^AUPNVMSR("AA",DFN,MSR,VDT)) Q:'VDT!(VDT\1'=STOP) D
  1. . S IEN=0
  1. . F S IEN=$O(^AUPNVMSR("AA",DFN,MSR,VDT,IEN)) Q:'IEN D
  1. .. K ARR D ENP^XBDIQ1(9000010.01,IEN,".03;.04;1201","BPX(","I")
  1. .. ; value ^ visit ien ^ event date internal format
  1. .. S LINE=$G(BPX(.04))_U_$G(BPX(.03,"I"))_U_$G(BPX(1201,"I"))
  1. .. S DATE=$S($G(BPX(1201,"I"))]"":BPX(1201,"I"),1:(9999999-$P(VDT,"."))_"."_$P(VDT,".",2))
  1. .. S ARR(DATE,IEN)=LINE
  1. I '$D(ARR) Q ""
  1. S DATE=$O(ARR(""),-1),IEN=$O(ARR(DATE,""),-1),LINE=ARR(DATE,IEN)
  1. Q $G(LINE)
  1. HIBMI(DFN,TEST,DATE,VALUE,TEXT) ;EP Find BMI < 25
  1. N BMI,HT,WT,HTDATE,WTDATE,HTDATA,WTDATA,X,Y,TODAY
  1. S (TEST,DATE,VALUE,TEXT)=""
  1. S X="TODAY" D ^%DT S TODAY=Y
  1. D CALCLATE I TEST=0 S DATE=TODAY,VALUE="" Q
  1. S DATE=$$MIN^XLFMTH(HTDATE,WTDATE)
  1. I BMI="" S TEST=0,VALUE="?"
  1. I BMI>25 S TEST=1,VALUE=BMI
  1. I BMI=25 S TEST=1,VALUE=BMI
  1. I BMI<25 S TEST=0,VALUE=BMI
  1. Q
  1. HIPCENT(DFN,TEST,DATE,VALUE,TEXT) ;EP Find the patients wt percentile
  1. N PERCENT,WTDATE,X,Y,TODAY,PERC
  1. S X="TODAY" D ^%DT S TODAY=Y
  1. D PERCENT(DFN) I TEST=0 S DATE=TODAY,VALUE="" Q
  1. I PERC<85 S TEST=0,VALUE=PERC,DATE=WTDATE
  1. I PERC>85 S TEST=1,VALUE=PERC,DATE=WTDATE
  1. Q
  1. PERCENT(DFN) ;Find the wt percentile
  1. N MOAGE,AGE,SEX,WTDATA,WT
  1. S SEX=$$GET1^DIQ(2,DFN,.02,"I")
  1. S AGE=$$GET1^DIQ(2,DFN,.03,"I")
  1. D AGEMO
  1. S WTDATA=$$LASTMSR($G(DFN),"WT") I WTDATA<1 S TEST=0 Q
  1. S WT=$P(WTDATA,U,1),WTDATE=$P(WTDATA,U,3)
  1. S PERC=$$AUHTWT^APCHS2A2("WT",SEX,MOAGE,WT)
  1. I $E(PERC,1,1)=">"!($E(PERC,1,1)="<") S PERC=$E(PERC,2,$L(PERC))
  1. Q
  1. AGEMO ;Get age in months
  1. N YR,MO
  1. S X="TODAY" D ^%DT S TODAY=Y
  1. S YR=$E(TODAY,1,3)-$E(AGE,1,3),MO=$E(TODAY,4,5)-$E(AGE,4,5)
  1. I MO<0 S MO=MO+12,YR=YR-1
  1. S MOAGE=12*YR+MO
  1. Q