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

APCLW21.m

Go to the documentation of this file.
  1. APCLW21 ; IHS/CMI/LAB - CALC WEIGHT REPORT ;
  1. ;;2.0;IHS PCC SUITE;**8,10,11**;MAY 14, 2009;Build 58
  1. ;
  1. ;cmi/anch/maw 9/12/2007 code set versioning PN
  1. ;
  1. START ;EP
  1. ;calculate 365 days ago and 1095 days ago
  1. S X1=DT,X2=-365 D C^%DTC S Y=X D DD^%DT S APCL1YR=Y
  1. S X1=DT,X2=-1095 D C^%DTC S Y=X D DD^%DT S APCL3YR=Y
  1. S Y=DT D DD^%DT S APCLDT=Y
  1. S APCLJOB=$J,APCLBTH=$H,(DFN,APCLGRAN)=0
  1. D XTMP^APCLOSUT("APCLW2","PCC OBESITY/PREVALANCE REPORT")
  1. PROC ;
  1. F S DFN=$O(^AUPNPAT(DFN)) Q:DFN'=+DFN D
  1. .Q:'$D(^DPT(DFN,0))
  1. .Q:$P(^DPT(DFN,0),U,19)
  1. .I APCLSEAT="" Q:$$DEMO^APCLUTL(DFN,$G(APCLDEMO))
  1. .I APCLSEAT]"" Q:'$D(^DIBT(APCLSEAT,1,DFN)) ;quit if not in Search Template
  1. .S Y=DFN D ^AUPNPAT
  1. .Q:AUPNSEX=""
  1. .Q:AUPNSEX="U"
  1. .Q:APCLSEX'="B"&(APCLSEX'=AUPNSEX) ;quit if want only one sex and this patient isn't that sex
  1. .Q:AUPNDOB=""
  1. .S APCLAGE=(AUPNDAYS\365.25)
  1. .;I $D(APCLAGER),APCLAGE<$P(APCLAGER,"-") Q
  1. .S APCLCLAS=$$BEN^AUPNPAT(DFN,"C")
  1. .Q:APCLCLAS=""
  1. .Q:APCLIBEN=1&(APCLCLAS'="01")
  1. .;I $D(APCLAGER),APCLAGE>$P(APCLAGER,"-",2) Q
  1. .S APCLHBD=$S(APCLAGE>19:$$FMTE^XLFDT($$FMADD^XLFDT($P(^DPT(DFN,0),U,3),(19*365))),1:APCL1YR)
  1. .S APCLBD=$S(APCLAGE>19:APCL3YR,1:APCL1YR) D GETWTHT
  1. .Q:'$D(APCLGWT) ;quit if no weights
  1. .Q:'$D(APCLGHT) ;quit if no heights
  1. .K APCLCWT,APCLCHT
  1. .I APCLAGE>19 D GETRECNT
  1. .I APCLAGE<20 D GETWHSD
  1. .Q:'$D(APCLCWT)
  1. .Q:'$D(APCLCHT)
  1. .S X2=AUPNDOB,X1=$P(APCLCWT,U,2) D ^%DTC S APCLAGE=(X\365.25) ;recalculate age based on date of weight
  1. .I $D(APCLAGER),APCLAGE<$P(APCLAGER,"-") Q
  1. .I $D(APCLAGER),APCLAGE>$P(APCLAGER,"-",2) Q
  1. .D CALCBMI
  1. .I $G(APCLBMIR)]"" Q:APCLBMI<$P(APCLBMIR,"-") Q:APCLBMI>$P(APCLBMIR,"-",2)
  1. .I APCLRTYP'="S" D SRT
  1. .I APCLRTYP="S" S (APCLOVR,APCLOBE)="N"
  1. .;find entry in reference table
  1. .;S APCLREF=$O(^APCLBMI("H",AUPNSEX,APCLAGE)) Q:APCLREF="" S APCLREF=$O(^APCLBMI("H",AUPNSEX,APCLREF,"")) Q:APCLREF=""
  1. .S APCLREF=$O(^APCLBMI("H",AUPNSEX,APCLAGE,0))
  1. .I 'APCLREF S APCLREF=$O(^APCLBMI("H",AUPNSEX,APCLAGE)) I APCLREF S APCLREF=$O(^APCLBMI("H",AUPNSEX,APCLREF,""))
  1. .Q:'APCLREF
  1. .I APCLBMI'<$P(^APCLBMI(APCLREF,0),U,5) S APCLOBE="Y",APCLOVR="N" G 1
  1. .I APCLBMI'<$P(^APCLBMI(APCLREF,0),U,4) S APCLOVR="Y",APCLOBE="N"
  1. 1 .I APCLBMI>$P(^APCLBMI(APCLREF,0),U,7)!(APCLBMI<$P(^APCLBMI(APCLREF,0),U,6)) D:APCLRPT="E" SET Q
  1. .Q:APCLRPT="E"
  1. .I APCLRPT="V",APCLOVR="N" Q
  1. .I APCLRPT="V",APCLOBE="Y" Q
  1. .I APCLRPT="B",APCLOBE="N" Q
  1. .I APCLRPT="C",APCLOBE="N",APCLOVR="N" Q
  1. .D SET
  1. .Q
  1. EOJ ;
  1. K APCL1YR,APCL3YR,APCLA,APCLBD,APCLMGI,APCLCHT,APCLCWT,APCLGHT,APCLGWT,APCLROWT,APCLROHT,APCLER,APCLMHT,APCLMWT,APCLX,APCLY,APCLNN,APCLREF
  1. K AUPNPAT,AUPNDOB,AUPNSEX,AUPNDAYS,AUPNDOD
  1. K DFN,X,Y,V,A,D,I,J,Z
  1. Q
  1. SRT ;
  1. S APCLNAME=$P(^DPT(DFN,0),U)
  1. S APCLHRN=$S($D(^AUPNPAT(DFN,41,DUZ(2),0)):$P(^(0),U,2),1:"NONE")
  1. S APCLSRT=""
  1. D @APCLSORT
  1. S (APCLOVR,APCLOBE)="N"
  1. Q
  1. B ;
  1. S APCLSRT=APCLBMI
  1. Q
  1. P ;
  1. S APCLSRT=APCLNAME
  1. Q
  1. A ;
  1. S APCLSRT=APCLAGE
  1. Q
  1. SET ;set for each age
  1. I APCLRTYP="S" S ^DIBT(APCLSTMP,1,DFN)="",APCLGRAN=APCLGRAN+1 Q
  1. S ^XTMP("APCLW2",APCLJOB,APCLBTH,"PATS",APCLSRT,DFN)=APCLNAME_U_APCLHRN_U_$P(APCLCHT,U)_U_$P(APCLCWT,U)_U_$P(APCLCWT,U,2)_U_APCLAGE_U_AUPNSEX_U_APCLBMI_U_APCLOVR_U_APCLOBE
  1. S APCLGRAN=APCLGRAN+1
  1. Q
  1. CALCBMI ;calculate BMI value
  1. ;S APCLMWT=APCLCWT/2.21,APCLMHT=APCLCHT*.025,APCLBMI=APCLMWT/(APCLMHT*APCLMHT)
  1. S APCLMWT=APCLCWT*.45359,APCLMHT=APCLCHT*.0254,APCLBMI=APCLMWT/(APCLMHT*APCLMHT)
  1. Q
  1. GETWTHT ;
  1. K APCLGHT,APCLGWT
  1. S APCLY="APCLGWT(",APCLX=DFN_"^ALL MEASUREMENT WT;DURING "_APCLBD_"-"_APCLDT S APCLER=$$START1^APCLDF(APCLX,APCLY)
  1. S X=0 F S X=$O(APCLGWT(X)) Q:X'=+X I '$P(APCLGWT(X),U,2) K APCLGWT(X)
  1. S APCLY="APCLGHT(",APCLX=DFN_"^ALL MEASUREMENT HT;DURING "_APCLHBD_"-"_APCLDT S APCLER=$$START1^APCLDF(APCLX,APCLY)
  1. S X=0 F S X=$O(APCLGHT(X)) Q:X'=+X I '$P(APCLGHT(X),U,2) K APCLGHT(X)
  1. PN ;kill off those that have prenatal code as dx
  1. ;S X=0 F S X=$O(APCLGWT(X)) Q:X'=+X S V=$P(APCLGWT(X),U,5),P=0 F S P=$O(^AUPNVPOV("AD",V,P)) Q:P'=+P S D=$P(^ICD9($P(^AUPNVPOV(P,0),U),0),U) D ;cmi/anch/maw 9/12/2007 orig line
  1. S X=0 F S X=$O(APCLGWT(X)) Q:X'=+X S V=$P(APCLGWT(X),U,5),P=0 F S P=$O(^AUPNVPOV("AD",V,P)) Q:P'=+P S D=$P($$ICDDX^ICDEX($P(^AUPNVPOV(P,0),U)),U,1) D ;cmi/anch/maw 9/12/2007 csv
  1. .I $$ICD^AUPNVUTL(D,$O(^ATXAX("B","BGP PREGNANCY DIAGNOSES 2",0)),9) K APCLGWT(X) Q
  1. .Q
  1. ;S X=0 F S X=$O(APCLGHT(X)) Q:X'=+X S V=$P(APCLGHT(X),U,5),P=0 F S P=$O(^AUPNVPOV("AD",V,P)) Q:P'=+P S D=$P(^ICD9($P(^AUPNVPOV(P,0),U),0),U) D ;cmi/anch/maw 9/12/2007 orig line
  1. S X=0 F S X=$O(APCLGHT(X)) Q:X'=+X S V=$P(APCLGHT(X),U,5),P=0 F S P=$O(^AUPNVPOV("AD",V,P)) Q:P'=+P S D=$P($$ICDDX^ICDEX($P(^AUPNVPOV(P,0),U)),U,1) D ;cmi/anch/maw 9/12/2007 csv
  1. .I $$ICD^AUPNVUTL(D,$O(^ATXAX("B","BGP PREGNANCY DIAGNOSES 2",0)),9) K APCLGHT(X) Q
  1. .Q
  1. RO ;set up by date
  1. K APCLROWT,APCLROHT
  1. S X=0 F S X=$O(APCLGWT(X)) Q:X'=+X S APCLROWT($P(APCLGWT(X),U))=X
  1. S X=0 F S X=$O(APCLGHT(X)) Q:X'=+X S APCLROHT($P(APCLGHT(X),U))=X
  1. Q
  1. ;
  1. GETWHSD ;check for height and weight on same date
  1. ;reverse $O THRU APCLROWT & CHECK APCLROHT
  1. S X=9999999 F S X=$O(APCLROWT(X),-1) Q:X=""!($D(APCLCHT)) I $D(APCLROHT(X)) S APCLCHT=$P(APCLGHT(APCLROHT(X)),U,2)_U_X,APCLCWT=$P(APCLGWT(APCLROWT(X)),U,2)_U_X
  1. Q
  1. GETRECNT ;get most recent in 3 yrs
  1. S X=9999999,X=$O(APCLROWT(X),-1) Q:X="" S APCLCWT=$P(APCLGWT(APCLROWT(X)),U,2)_U_X
  1. S X=9999999,X=$O(APCLROHT(X),-1) Q:X="" S APCLCHT=$P(APCLGHT(APCLROHT(X)),U,2)_U_X
  1. Q