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

APCLW11.m

Go to the documentation of this file.
  1. APCLW11 ; IHS/CMI/LAB - CALC WEIGHT REPORT ;
  1. ;;2.0;IHS PCC SUITE;**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=APCLDATE,X2=-365 D C^%DTC S Y=X D DD^%DT S APCL1YR=Y
  1. S X1=APCLDATE,X2=-1095 D C^%DTC S Y=X D DD^%DT S APCL3YR=Y
  1. S Y=APCLDATE D DD^%DT S APCLDT=Y
  1. S APCLJOB=$J,APCLBTH=$H,(DFN,APCLBTUP,APCLBBMI,APCLBOVR,APCLBOBE,APCLBHGH,APCLFTUP,APCLMTUP,APCLMBMI,APCLFBMI,APCLFOVR,APCLMOVR,APCLFOBE,APCLMOBE,APCLFHGH,APCLMHGH)=0,(APCLBLOW,APCLFLOW,APCLMLOW)=9999999
  1. D XTMP^APCLOSUT("APCLW1","PCC OBESITY/PREVALANCE REPORT")
  1. I APCLAGEG="G" D SETGROUP^APCLW12
  1. I APCLAGEG'="G" F I=APCLLOWA:1:APCLHGHA F J="B","F","M" S ^XTMP("APCLW1",APCLJOB,APCLBTH,"TOTAL USABLE PATS",J,I)=0,^XTMP("APCLW1",APCLJOB,APCLBTH,"LOW",J,I)=9999999,^XTMP("APCLW1",APCLJOB,APCLBTH,"HIGH",J,I)=0 D
  1. .S ^XTMP("APCLW1",APCLJOB,APCLBTH,"TOTAL BMI",J,I)=0,^XTMP("APCLW1",APCLJOB,APCLBTH,"OBESE",J,I)=0,^XTMP("APCLW1",APCLJOB,APCLBTH,"OVERWEIGHT",J,I)=0
  1. ;
  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. .Q:$P(^DPT(DFN,0),U,3)>APCLDATE ;born after as of date
  1. .Q:$$DEMO^APCLUTL(DFN,$G(APCLDEMO))
  1. .I APCLSEAT]"" Q:'$D(^DIBT(APCLSEAT,1,DFN))
  1. .I APCLCMS,'$$ONREG(DFN,APCLCMS,APCLSTAT) Q
  1. .S Y=DFN D ^AUPNPAT
  1. .Q:AUPNSEX=""
  1. .Q:AUPNSEX="U" ;MU
  1. .Q:APCLSEX'="B"&(APCLSEX'=AUPNSEX) ;quit if want only one sex and this patient isn't that sex
  1. .Q:AUPNDOB=""
  1. .S ^(AUPNSEX)=$S($D(^XTMP("APCLW1",APCLJOB,APCLBTH,"TOTAL RECORDS",AUPNSEX)):^(AUPNSEX)+1,1:1)
  1. .I APCLSEX="B" S ^("B")=$S($D(^XTMP("APCLW1",APCLJOB,APCLBTH,"TOTAL RECORDS","B")):^("B")+1,1:1)
  1. .S X2=AUPNDOB,X1=APCLDATE D ^%DTC S AUPNDAYS=X
  1. .Q:AUPNDAYS<0
  1. .S APCLAGE=(AUPNDAYS\365.25)
  1. .;Q:APCLAGE<APCLLOWA
  1. .;Q:APCLAGE>APCLHGHA
  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. .S APCLCLAS=$$BEN^AUPNPAT(DFN,"C")
  1. .Q:APCLCLAS=""
  1. .Q:APCLIBEN=1&(APCLCLAS'="01")
  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. .Q:APCLAGE<APCLLOWA
  1. .Q:APCLAGE>APCLHGHA
  1. .D CALCBMI
  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,7)!(APCLBMI<$P(^APCLBMI(APCLREF,0),U,6)) Q
  1. .I APCLAGEG="G" D SETG^APCLW12
  1. .I APCLAGEG'="G" D SETE^APCLW12
  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. 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. ;get rid of ones with no value
  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^ATXAPI(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^ATXAPI(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
  1. ONREG(P,R,S) ;is this patient on this register with this status
  1. I $G(P)="" Q ""
  1. I $G(R)="" Q ""
  1. S S=$G(S)
  1. NEW D S D=$G(^ACM(41,"AC",P,R))
  1. I D="" Q ""
  1. I S="" Q 1
  1. I $P($G(^ACM(41,D,"DT")),U,1)'=S Q 0
  1. Q 1