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

BUDARP6R.m

Go to the documentation of this file.
  1. BUDARP6R ; IHS/CMI/LAB - UDS REPORT PROCESSOR 01 Dec 2013 5:11 PM ;
  1. ;;10.0;IHS/RPMS UNIFORM DATA SYSTEM;;FEB 04, 2016;Build 50
  1. ;
  1. BMI(P,BDATE,EDATE,AGE) ;EP
  1. NEW HDATE,BUDBMIH,W,H,X,WD
  1. S BUDBMIH="",WD=""
  1. I AGE>18,AGE<51 D Q WD
  1. .S HDATE=$$FMADD^XLFDT(BDATE,-(5*365)),HDATE=$$FMTE^XLFDT(HDATE)
  1. .;S BDATE=$$FMADD^XLFDT(BDATE,-(5*365))
  1. .S BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
  1. .S W=$$WT(P,BDATE,EDATE)
  1. .S WD=$P(W,U,2)
  1. .S W=$P(W,U,1) I W=""!(W="?") Q
  1. .;S HDATE=$$FMTE^XLFDT($$FMADD^XLFDT($P(^DPT(P,0),U,3),(19*365)))
  1. .;S HDATE=BDATE
  1. .S H=$$HT(P,HDATE,EDATE) I H="" Q
  1. .S W=W*.45359,H=(H*.0254),H=(H*H),BUDBMIH=(W/H)
  1. I AGE>50 D Q WD
  1. .S HDATE=$$FMADD^XLFDT(BDATE,-(2*365)),HDATE=$$FMTE^XLFDT(HDATE)
  1. .S BDATE=$$FMTE^XLFDT(BDATE),EDATE=$$FMTE^XLFDT(EDATE)
  1. .S W=$$WT(P,BDATE,EDATE)
  1. .S WD=$P(W,U,2)
  1. .S W=$P(W,U,1) I W=""!(W="?") Q
  1. .;S HDATE=$$FMTE^XLFDT($$FMADD^XLFDT($P(^DPT(P,0),U,3),(19*365)))
  1. .S HDATE=BDATE
  1. .S H=$$HT(P,HDATE,EDATE) I H="" Q
  1. .S W=W*.45359,H=(H*.0254),H=(H*H),BUDBMIH=(W/H)
  1. I AGE<19 D Q WD
  1. .S X=$$HTWTSD(P,BDATE,EDATE)
  1. .I '$P(X,"^") Q
  1. .I '$P(X,"^",2) Q
  1. .S W=$P(X,"^"),H=$P(X,"^",2),WD=$P(X,U,3)
  1. .S W=W*.45359,H=(H*.0254),H=(H*H),BUDBMIH=(W/H)
  1. .Q
  1. Q ""
  1. HT(P,BDATE,EDATE) ;EP
  1. I 'P Q ""
  1. NEW %,BUDARRY,H,E
  1. S %=P_"^LAST MEAS HT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BUDARRY(") S H=$P($G(BUDARRY(1)),U,2)
  1. I H="" Q H
  1. I H["?" Q ""
  1. S H=$J(H,2,0)
  1. Q H
  1. WT(P,BDATE,EDATE) ;EP
  1. I 'P Q ""
  1. NEW %,E,BUDLW,X,BUDLN,BUDL,BUDLD,BUDLZ,BUDLX,ICD,BUDLWD
  1. K BUDL S BUDLW="",BUDLWD="" S BUDLX=P_"^LAST 24 MEAS WT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(BUDLX,"BUDL(")
  1. S BUDLN=0 F S BUDLN=$O(BUDL(BUDLN)) Q:BUDLN'=+BUDLN!(BUDLW]"") D
  1. .S BUDLZ=$P(BUDL(BUDLN),U,5)
  1. .I '$D(^AUPNVPOV("AD",BUDLZ)) S BUDLW=$P(BUDL(BUDLN),U,2) Q
  1. . S BUDLD=0 F S BUDLD=$O(^AUPNVPOV("AD",BUDLZ,BUDLD)) Q:'BUDLD!(BUDLW]"") D
  1. .. S D=$P(BUDL(BUDLN),U)
  1. .. S ICD=$P($$ICDDX^ICDCODE($P(^AUPNVPOV(BUDLD,0),U),D),U,2) D
  1. ...I $E(ICD,1,3)="V22" Q
  1. ...I $E(ICD,1,3)="V23" Q
  1. ...I $E(ICD,1,3)="V27" Q
  1. ...I $E(ICD,1,3)="V28" Q
  1. ...I ICD>629.9999&(ICD<676.95) Q
  1. ...I ICD>61.49&(ICD<61.71) Q
  1. ...S BUDLW=$P(BUDL(BUDLN),U,2),BUDLWD=$P(BUDL(BUDLN),U,1)
  1. ..Q
  1. Q BUDLW_U_BUDLWD
  1. HTWTSD(P,BDATE,EDATE) ;get last ht / wt on same day
  1. I '$G(P) Q ""
  1. KILL BUDLWTS,BUDLHTS,%,X,BUDLWTS1,BUDLHTS1,Y
  1. ;get all hts during time frame
  1. S %=P_"^ALL MEAS HT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BUDLHTS(")
  1. S Y=0 F S Y=$O(BUDLHTS(Y)) Q:Y'=+Y I $P(BUDLHTS(Y),U,2)="?"!($P(BUDLHTS(Y),U,2)="") K BUDLHTS(Y)
  1. ;set the array up by date
  1. K BUDLHTS1 S X=0 F S X=$O(BUDLHTS(X)) Q:X'=+X S BUDLHTS1($P(BUDLHTS(X),U))=X
  1. ;get all wts during time frame
  1. S %=P_"^ALL MEAS WT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(%,"BUDLWTS(")
  1. S Y=0 F S Y=$O(BUDLWTS(Y)) Q:Y'=+Y I $P(BUDLWTS(Y),U,2)="?"!($P(BUDLWTS(Y),U,2)="") K BUDLWTS(Y)
  1. ;set the array up by date
  1. K BUDLWTS1 S X=0 F S X=$O(BUDLWTS(X)) Q:X'=+X S BUDLWTS1($P(BUDLWTS(X),U))=X
  1. S BUDLCHT="",X=9999999 F S X=$O(BUDLWTS1(X),-1) Q:X=""!(BUDLCHT]"") I $D(BUDLHTS1(X)) S BUDLCHT=$P(BUDLWTS(BUDLWTS1(X)),U,2)_U_$P(BUDLHTS(BUDLHTS1(X)),U,2)_U_X
  1. Q BUDLCHT