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

BUDCRP6R.m

Go to the documentation of this file.
  1. BUDCRP6R ; IHS/CMI/LAB - UDS REPORT PROCESSOR ;
  1. ;;10.0;IHS/RPMS UNIFORM DATA SYSTEM;;FEB 04, 2016;Build 50
  1. ;
  1. BMI(P,BDATE,EDATE,AGE) ;EP
  1. NEW HDATE,BUDCMIH,W,H,X,WD
  1. S BUDCMIH="",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),BUDCMIH=(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),BUDCMIH=(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),BUDCMIH=(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(^AUPNVPOV(BUDLD,0),U,1) ;$P($$ICDDX^ICDEX($P(^AUPNVPOV(BUDLD,0),U),D),U,2) D
  1. .. I $$ICD^ATXCHK(ICD,$O(^ATXAX("B","BGP PREGNANCY DIAGNOSES 2",0)),9) 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
  1. G ;EP
  1. NEW BUDGOT
  1. S BUDGOT=""
  1. S BUDDOB=$P(^DPT(DFN,0),U,3)
  1. S BUDX18RB=($E(BUDBD,1,3)-18)_"1231"
  1. Q:BUDDOB>BUDX18RB
  1. Q:BUDMEDV<1
  1. S BUDX18TH=$E(BUDDOB,1,3)+18_$E(BUDDOB,4,7)
  1. I '$$VBBD^BUDCRP6V(DFN,$$FMADD^XLFDT(BUDX18TH,1),BUDED) Q
  1. S X=$$GETV^BUDCRP6U(DFN,BUDDOB,BUDED,BUDSITE)
  1. Q:X<2
  1. K BUDTOBS,BUDTOBD
  1. S BUDTOBDD=$E(BUDBD,1,3)-1_$E(BUDBD,4,7)
  1. S BUDB24M=$$VD^APCLV(BUDLASTV),BUDB24M=$E(BUDB24M,1,3)-2_$E(BUDB24M,4,7)
  1. S BUDTOBS=$$TOBACCO(DFN,BUDB24M,$$VD^APCLV(BUDLASTV)) ;SCREENED IN 24 MONTHS PRIOR TO OR ON LAST VISIT
  1. ;I BUDTOBS]"",$P(BUDTOBS,U,3)'<BUDTOBDD S BUDSECG1("ABM")=$G(BUDSECG1("ABM"))+1,BUDGOT=1
  1. S BUDUSER=$$TOBACCO^BUDCRP6U(DFN,BUDB24M,BUDED)
  1. S BUDCESS=""
  1. I BUDTOBS]"",BUDUSER="" S BUDGOT=1
  1. I BUDTOBS]"",BUDUSER]"" S BUDCESS=$$TOBCESS^BUDCRP6U(DFN,BUDB24M,BUDED) I BUDCESS]"" S BUDGOT=1
  1. I BUDGOT S BUDSECG1("ABM")=$G(BUDSECG1("ABM"))+1
  1. S1 ;put the rest in demoninator
  1. S BUDSECG1("PTS")=$G(BUDSECG1("PTS"))+1 D
  1. .I $G(BUDTUA2L) D
  1. ..I 'BUDGOT S ^XTMP("BUDCRP6B",BUDJ,BUDH,"TUA2",BUDAGE,$P(^DPT(DFN,0),U),BUDCOM,DFN)=BUDTOBS_"|"_$S(BUDUSER]"":$P(BUDUSER,U,1)_" "_$$DATE^BUDCUTL1($P(BUDUSER,U,2))_"|"_$P(BUDCESS,U,1)_" "_$$DATE^BUDCUTL1($P(BUDCESS,U,3)),1:"")
  1. .I $G(BUDTUA1L) D
  1. ..I BUDGOT S ^XTMP("BUDCRP6B",BUDJ,BUDH,"TUA1",BUDAGE,$P(^DPT(DFN,0),U),BUDCOM,DFN)=BUDTOBS_"|"_$S(BUDUSER]"":$P(BUDUSER,U,1)_" "_$$DATE^BUDCUTL1($P(BUDUSER,U,2))_"|"_$P(BUDCESS,U,1)_" "_$$DATE^BUDCUTL1($P(BUDCESS,U,3)),1:"")
  1. Q
  1. ;
  1. TOBACCO(P,BDATE,EDATE) ;
  1. ;TOBACCO SCREENING IN DATE RANGE?
  1. NEW BUDTOB,BUDX,BUDPV,BUDLAST
  1. K BUDLAST
  1. D TOBACCO1
  1. I BUDTOB]"" S BUDLAST($P(BUDTOB,U,3))=BUDTOB
  1. ;PATIENT ED
  1. S BUDTOB=$$TOBPED(P,BDATE,EDATE)
  1. I BUDTOB]"" S X=$P(BUDTOB,U,3),BUDLAST(X)=BUDTOB
  1. ;V10.0 ICD10
  1. K BUDG S %=P_"^ALL DX;DURING "_BDATE_"-"_EDATE,E=$$START1^APCLDF(%,"BUDG(")
  1. S T=$O(^BUDCTSSC("B","TOBACCO SCREEN DXS",0))
  1. S X=0,G="" F S X=$O(BUDG(X)) Q:X'=+X D
  1. .S Y=+$P(BUDG(X),U,4)
  1. .S Y=$P($G(^AUPNVPOV(Y,0)),U,1)
  1. .I $D(^BUDCTSSC("AD",Y,T)) S BUDLAST($P(BUDG(X),U,1))=$P(BUDG(X),U,2)_U_$$FMTE^XLFDT($P(BUDG(X),U,1))_U_$P(BUDG(X),U,1)
  1. ;I G]"" Q G
  1. ;S BUDPV=$$LASTDX^BUDCUTL1(P,"BUD TOBACCO SCREEN DXS",BDATE,EDATE)
  1. ;I BUDPV S BUDLAST($P(BUDPV,U,3))=$P(BUDPV,U,2)_U_$$FMTE^XLFDT($P(BUDPV,U,3))_U_$P(BUDPV,U,3) ; Q BUDTOB
  1. S BUDCPT=$$CPT^BUDCUTL1(P,BDATE,EDATE,$O(^ATXAX("B","BUD TOBACCO SCREEN CPTS",0)),7)
  1. I BUDCPT]"" S BUDLAST($P(BUDCPT,U,3))=BUDCPT ;S BUDTOB=BUDCPT Q BUDTOB
  1. I '$D(BUDLAST) Q ""
  1. S BUDX=0 F S BUDX=$O(BUDLAST(BUDX)) Q:BUDX'=+BUDX S BUDTOB=BUDX
  1. Q BUDLAST(BUDTOB)
  1. TOBACCO1 ;
  1. K BUDTOB
  1. S BUDTOB=$$LASTHF(P,"TOBACCO (SMOKING)",BDATE,EDATE) K O,D,H
  1. I BUDTOB]"" S BUDLAST($P(BUDTOB,U,3))=BUDTOB
  1. S BUDTOB=$$LASTHF(P,"TOBACCO (SMOKELESS - CHEWING/DIP)",BDATE,EDATE) K O,D,H
  1. I BUDTOB]"",'$D(BUDLAST($P(BUDTOB,U,3))) S BUDLAST($P(BUDTOB,U,3))=BUDTOB
  1. ;S BUDTOB=$$LASTHF(P,"TOBACCO (EXPOSURE)",BDATE,EDATE) K O,D,H
  1. ;I BUDTOB]"" S BUDLAST($P(BUDTOB,U,3))=BUDTOB
  1. ;S BUDTOB=$$LASTHF(P,"TOBACCO",BDATE,EDATE) K O,D,H
  1. ;I BUDTOB]"" S BUDLAST($P(BUDTOB,U,3))=BUDTOB
  1. Q
  1. ;
  1. LASTHF(P,C,BDATE,EDATE) ;EP
  1. S C=$O(^AUTTHF("B",C,0))
  1. I '$G(C) Q ""
  1. S (H,D)=0 K O
  1. F S H=$O(^AUTTHF("AC",C,H)) Q:'+H D
  1. .Q:'$D(^AUPNVHF("AA",P,H))
  1. .S D="" F S D=$O(^AUPNVHF("AA",P,H,D)) Q:D'=+D D
  1. ..Q:(9999999-D)>EDATE
  1. ..Q:(9999999-D)<BDATE
  1. ..S O(D)=$O(^AUPNVHF("AA",P,H,D,""))
  1. .Q
  1. S D=$O(O(0))
  1. I D="" Q D
  1. Q $$VAL^XBDIQ1(9000010.23,O(D),.01)_"^"_$$FMTE^XLFDT(9999999-D)_"^"_(9999999-D)
  1. ;
  1. TOBPED(P,BDATE,EDATE) ;EP
  1. NEW Y,X,E,D,T,%,BUDG,BUDPED,SN
  1. K BUDPED
  1. S Y="BUDG("
  1. S X=P_"^ALL EDUC;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. I '$D(BUDG) Q ""
  1. S SN=$O(^BGPSNOMM("B","TOBACCO SCREEN PATIENT ED",0))
  1. S (X,D)=0,%="",T="" F S X=$O(BUDG(X)) Q:X'=+X D
  1. .S T=$P(^AUPNVPED(+$P(BUDG(X),U,4),0),U)
  1. .Q:'T
  1. .Q:'$D(^AUTTEDT(T,0))
  1. .S T=$P(^AUTTEDT(T,0),U,2)
  1. .I $P(T,"-")="TO" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-",2)="TO" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-",2)="SHS" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="305.1" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="649.00" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="649.01" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="649.02" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="649.03" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="649.04" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="V15.82" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="1034F" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="1035F" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="1036F" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $P(T,"-")="1000F" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $E($P(T,"-"),1,3)="F17" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I $E($P(T,"-"),1,6)="O99.33" S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. .I SN,$P(T,"-")]"",$D(^BGPSNOMM(SN,11,"B",$P(T,"-"))) S BUDPED($P(BUDG(X),U))=T_U_$$FMTE^XLFDT($P(BUDG(X),U))_U_$P(BUDG(X),U) Q
  1. I '$D(BUDPED) Q ""
  1. S X=0 F S X=$O(BUDPED(X)) Q:X'=+X S %=X
  1. Q BUDPED(%)
  1. CAD2HD ;EP
  1. D S(),S(),S()
  1. D S("***** CONFIDENTIAL PATIENT INFORMATION, COVERED BY THE PRIVACY ACT *****")
  1. D S($P(^VA(200,DUZ,0),U,2)_" "_$$FMTE^XLFDT(DT))
  1. D S("*** RPMS Uniform Data System (UDS) ***")
  1. D S("Patient List for Table 6B, Section I")
  1. D S("Coronary Artery Disease: Lipid Therapy")
  1. D S($P(^DIC(4,BUDSITE,0),U))
  1. S X="Reporting Period: "_$$FMTE^XLFDT(BUDBD)_" to "_$$FMTE^XLFDT(BUDED) D S(X)
  1. S X="Population: "_$S($G(BUDCEN)=1:"Indian/Alaskan Native (Classification 01)",$G(BUDCEN)=2:"Not Indian Alaskan/Native (Not Classification 01)",$G(BUDCEN)=3:"All (both Indian/Alaskan Natives and Non 01)",1:"") D S(X)
  1. D S()
  1. D S("This report provides a list of all patients 18 years of age and older")
  1. D S("with an active diagnosis of Coronary Artery Disease (CAD) including ")
  1. D S("myocardial infarction (MI) or have had cardiac surgery and whose last ")
  1. D S("LDL was greater than or equal to 130 or last recorded LDL is greater than")
  1. D S("1yr from last visit in the report year who were not prescribed a ")
  1. D S("lipid-lowering therapy medication or has no documented evidence of use by")
  1. D S("patient of lipid lowering medication during the report period or has an ")
  1. D S("allergy or adverse reaction to lipid-lowering therapy medications, had at")
  1. D S("least two medical visits ever, and had a medical visit during the report")
  1. D S("period.")
  1. D S("Age is calculated as of December 31.")
  1. D S("PATIENT NAME^HRN^COMMUNITY^SEX^AGE^Date of DX^DX or Svc CD^Medication^LDL")
  1. I BUDROT="P",'BUDX2ALG W "CAD Patients with LDL >=130 w/o Lipid Lowering Medication",!
  1. I BUDROT="P",BUDX2ALG W "CAD Patients w/LDL =>130 and an ALG or ADV Reaction to Lipid Lowering Medication"
  1. I BUDROT="D",'BUDX2ALG D S("CAD Patients with LDL >=130 w/o Lipid Lowering Medication")
  1. I BUDROT="D",BUDX2ALG D S("CAD Patients w/LDL =>130 and an ALG or ADV Reaction to Lipid Lowering Medication")
  1. Q
  1. S(V) ;
  1. S BUDDECNT=BUDDECNT+1
  1. S ^TMP($J,"BUDDEL",BUDDECNT)=$G(V)
  1. Q
  1. ;------