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

BUDHRP7B.m

Go to the documentation of this file.
BUDHRP7B ; IHS/CMI/LAB - UDS REPORT PROCESSOR ;
 ;;13.0;IHS/RPMS UNIFORM DATA SYSTEM;;OCT 12, 2018;Build 90
 ;
HTN ;EP - list of HTN
 ;is patient pregnant during the time period BUDDD and BUDED
 S BUDDOB=$P(^DPT(DFN,0),U,3)
 S BUDDDB=($E(BUDBD,1,3)-85)_"0101"
 S BUDDDE=($E(BUDBD,1,3)-19)_"1231"
 Q:BUDDOB>BUDDDE
 Q:BUDDOB<BUDDDB
 Q:BUDMEDV<1
 ;
 S BUDP=$$HTNDX(DFN,$$DOB^AUPNPAT(DFN),BUDCCAD)
 I '$P(BUDP,U) Q  ;not dx'ed before june 30
 ;PREGNANCY
 Q:$$HOSPIND^BUDHRP6C(DFN,BUDBD,BUDED)
 Q:$$PREG^BUDHRP6B(DFN,BUDBD,BUDED,BUDBD)
 Q:$$EXCL(DFN,BUDDOB,BUDED)
 S BUDP=$$HTNDX(DFN,$$DOB^AUPNPAT(DFN),BUDED,1)
 S BUDRACEX=$$RACE^BUDHRPTC(DFN),BUDRACE=$P(BUDRACEX,U,2),BUDRACEP=$P(BUDRACEX,U,5)
 S BUDRACEE=$$RACE^BUDHRP7I(BUDRACE)
 S BUDR=""
 S BUDHTHN=$P($$HISP^BUDHRPTC(DFN),U,1)
 I +BUDHTHN=1 S BUDETHNN="Hispanic or Latino"
 I +BUDHTHN=2 S BUDETHNN="Non-Hispanic/Latino"
 I +BUDHTHN=3 S BUDETHNN="Unreported/Refused to Report"
 I BUDRACEP=8,+BUDHTHN=3 S BUDR=1 G SETSECTB
 I +BUDHTHN=1 S BUDR=BUDRACEP G SETSECTB
 I +BUDHTHN=2 S BUDR=BUDRACEP G SETSECTB
 ;I +BUDHTHN=3,BUDRACEP=8 S BUDR=1
SETSECTB ;
 S $P(BUDSECTB(+BUDHTHN,BUDR),U,1)=$P($G(BUDSECTB(+BUDHTHN,BUDR)),U,1)+1  ;COL 1
 S $P(BUDSECTB(+BUDHTHN,BUDR),U,2)=$P($G(BUDSECTB(+BUDHTHN,BUDR)),U,2)+1  ;COL 2
 ;TOTAL LINE
 S $P(BUDSECTB(4),U,1)=$P($G(BUDSECTB(4)),U,1)+1
 S $P(BUDSECTB(4),U,2)=$P($G(BUDSECTB(4)),U,2)+1
 ;SUBTOTAL LINE
 S $P(BUDSECTB(+BUDHTHN),U,1)=$P($G(BUDSECTB(+BUDHTHN)),U,1)+1
 S $P(BUDSECTB(+BUDHTHN),U,2)=$P($G(BUDSECTB(+BUDHTHN)),U,2)+1
 I $G(BUDHTRL) S ^XTMP("BUDHRP7",BUDJ,BUDH,"HTR",BUDRACEP,+BUDHTHN,BUDCCOM,BUDAGE,$P(^DPT(DFN,0),U),DFN)=$P(BUDP,"^",2)
 ;I $G(BUDHTEL) S ^XTMP("BUDHRP7",BUDJ,BUDH,"HTE",BUDETHNN,BUDCCOM,BUDAGE,$P(^DPT(DFN,0),U),DFN)=$P(BUDP,"^",2)
 ;now check BP
 S BUDDP=$$LASTBP(DFN,BUDBD,BUDED)
 I BUDDP]"" S BUDV=$$BPCHK(BUDDP) G SET
 ;now check cpts
 S T=$O(^ATXAX("B","BUD SYSTOLIC BP CPTS",0))
 S BUDS=$$CPT^BUDHDU(DFN,BUDBD,BUDED,T,6)
 S T=$O(^ATXAX("B","BUD DIASTOLIC BP CPTS",0))
 S BUDD=$$CPT^BUDHDU(DFN,BUDBD,BUDED,T,6)
 I 'BUDS,'BUDD S BUDV=0_U_"NO BP TAKEN DURING THE REPORT PERIOD" G SET  ;DIDN'T HAVE BOTH IN TIME PERIOD
 S S=$P(BUDS,U,3)
 S D=$P(BUDD,U,3)
 S G=0
 I S="3074F",D="3078F" S G=1
 I S="3074F",D="3079F" S G=1
 I S="3075F",D="3078F" S G=1
 I S="3075F",D="3079F" S G=1
 S BUDV=G_U_"CPTs: "_$P(BUDS,U,3)_" on "_$$FMTE^XLFDT($P(BUDS,U,2))_" and "_$P(BUDD,U,3)_" on "_$$FMTE^XLFDT($P(BUDD,U,2))
SET ;
 I $P(BUDV,U) D
 .S $P(BUDSECTB(+BUDHTHN,BUDR),U,3)=$P($G(BUDSECTB(+BUDHTHN,BUDR)),U,3)+1
 .S $P(BUDSECTB(4),U,3)=$P($G(BUDSECTB(4)),U,3)+1
 .S $P(BUDSECTB(+BUDHTHN),U,3)=$P($G(BUDSECTB(+BUDHTHN)),U,3)+1
 ;I $P(BUDV,U) S $P(BUDSECTE(8),U,BUDHTHN)=$P($G(BUDSECTE(8)),U,BUDHTHN)+1,$P(BUDSECTE(8),U,9)=$P($G(BUDSECTE(8)),U,9)+1
 I $G(BUDHTCRL),$P(BUDV,U,1) S ^XTMP("BUDHRP7",BUDJ,BUDH,"HTCR",BUDRACEP,+BUDHTHN,BUDCCOM,BUDAGE,$P(^DPT(DFN,0),U),DFN)=$P(BUDP,"^",2)_"^"_$P(BUDV,U,2)
 I $G(BUDHTURL),'$P(BUDV,U,1) S ^XTMP("BUDHRP7",BUDJ,BUDH,"HTUR",BUDRACEP,+BUDHTHN,BUDCCOM,BUDAGE,$P(^DPT(DFN,0),U),DFN)=$P(BUDP,"^",2)_"#"_$P(BUDV,U,2)
 ;I $G(BUDHTCEL),$P(BUDV,U,1) S ^XTMP("BUDHRP7",BUDJ,BUDH,"HTCE",BUDETHNN,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=$P(BUDP,"^",2)_"^"_$P(BUDV,U,2)
 ;I $G(BUDHTUEL),'$P(BUDV,U,1) S ^XTMP("BUDHRP7",BUDJ,BUDH,"HTUE",BUDETHNN,$P(^DPT(DFN,0),U),BUDCCOM,DFN)=$P(BUDP,"^",2)_"^"_$P(BUDV,U,2)
 Q
 ;
EXCL(P,BDATE,EDATE) ;EP
 NEW BUDVS,TIEN,CTR,VIEN,VDATE,X,Y,Z,BUDTOB,BDATE
 S BDATE=$$DOB^AUPNPAT(P)
 D ALLV^APCLAPIU(P,BDATE,EDATE,"BUDVS")
 S BUDTOB=0
 S TIEN=$O(^BUDHTSSC("B","T7 HTN EXCLUSIONS",0))
 S CTR=0 F  S CTR=$O(BUDVS(CTR)) Q:CTR'=+CTR!(BUDTOB)  D
 .S VIEN=$P(BUDVS(CTR),U,5)
 .S VDATE=$P(BUDVS(CTR),U,1)
 .;POV/SNOMED
 .S X=0 F  S X=$O(^AUPNVPOV("AD",VIEN,X)) Q:X'=+X!(BUDTOB)  D
 ..Q:'$D(^AUPNVPOV(X,0))
 ..S Y=$$VALI^XBDIQ1(9000010.07,X,.01) I $D(^BUDHTSSC("AD",Y,TIEN)) S BUDTOB=1 Q
 ..S Y=$$VAL^XBDIQ1(9000010.07,X,1101)
 ..Q:Y=""
 ..I $D(^BUDHTSSC("AS",Y,TIEN)) S BUDTOB=1 Q
 .;CPT
 .S X=0 F  S X=$O(^AUPNVCPT("AD",VIEN,X)) Q:X'=+X!(BUDTOB)  D
 ..Q:'$D(^AUPNVCPT(X,0))
 ..S Y=$$VAL^XBDIQ1(9000010.18,X,.01)
 ..Q:Y=""
 ..I $D(^BUDHTSSC("AC",Y,TIEN)) S BUDTOB=1 Q
 .;V TRANS
 .S X=0 F  S X=$O(^AUPNVTC("AD",VIEN,X)) Q:X'=+X!(BUDTOB)  D
 ..Q:'$D(^AUPNVTC(X,0))
 ..S Y=$$VAL^XBDIQ1(9000010.33,X,.07)
 ..Q:Y=""
 ..I $D(^BUDHTSSC("AC",Y,TIEN)) S BUDTOB=1 Q
 .;V PROC
 .S X=0 F  S X=$O(^AUPNVPRC("AD",VIEN,X)) Q:X'=+X!(BUDTOB)  D
 ..Q:'$D(^AUPNVPRC(X,0))
 ..S Y=$$VALI^XBDIQ1(9000010.08,X,.01)
 ..I $D(^BUDHTSSC("AP",Y,TIEN)) S BUDTOB=1 Q
 I BUDTOB Q 1
 S Y=$$PLCL^BUDHDU(P,"T7 HTN EXCLUSIONS",EDATE,0)
 I Y Q 1
 Q ""
BPCHK(BP) ;
 NEW S,D
 S S=$P($P(BP,U,4),"/")
 S D=$P($P(BP,U,4),"/",2)
 I S>139 Q 0_U_$P(BP,U,4)_"  "_$$FMTE^XLFDT($P(BP,U,2))
 I D>89 Q 0_U_$P(BP,U,4)_"  "_$$FMTE^XLFDT($P(BP,U,2))
 Q 1_U_$P(BP,U,4)_"  "_$$FMTE^XLFDT($P(BP,U,2))
RACE(R) ;EP
 I R="Unreported" Q 8
 I R="Asian" Q 1
 I R="Native Hawaiian" Q 2
 I R="Other Pacific Islander" Q 3
 I R="Black/African American" Q 4
 I R="American Indian/Alaska Native" Q 5
 I R="White" Q 6
 Q ""
HTNDX(P,BDATE,EDATE,STOP) ;EP
 NEW BUDDX,B,CNT,BUDD,BUDG,BUDALL
 S STOP=$G(STOP)
 S B=0,CNT=0,BUDD="",BUDALL=""  ;if there is one before time frame set this to 1
 ;
 ;V10.0 ICD10
 K BUDG S %=P_"^ALL DX;DURING "_BDATE_"-"_EDATE,E=$$START1^APCLDF(%,"BUDG(")
 S T=$O(^BUDHTSSC("B","T7 HTN DIAGNOSES",0))
 S X=0,G="" F  S X=$O(BUDG(X)) Q:X'=+X!(G)  D
 .S Y=+$P(BUDG(X),U,4)
 .S Z=$P($G(^AUPNVPOV(Y,0)),U,1)
 .S V=$P(BUDG(X),U,5)
 .S C=$$PRIMPROV^APCLV(V,"D")
 .Q:C=53
 .Q:$P(^AUPNVSIT(V,0),U,7)="C"
 .I $D(^BUDHTSSC("AD",Z,T)) S G=1_"^"_$P(BUDG(X),U,5)_"|"_$P(BUDG(X),U,2) Q
 .S S=$$VAL^XBDIQ1(9000010.07,Y,1101) I S]"",$D(^BUDHTSSC("AS",S,T)) S G=1_"^"_$P(BUDG(X),U,5)_"|"_S Q
 I G]"" Q G
PROBDX ;
 S G=$$PLCL^BUDHDU(P,"T7 HTN DIAGNOSES",EDATE,0)
 I G Q 1_U_"Problem List: "_$P(G,U,2)_" on "_$$DATE^BUDHUTL1($P(G,U,3))
 Q ""
LASTBP(P,BDATE,EDATE) ;EP
 ;TABLE ALL BPs in date order
 I $G(F)="" S F="E"
 NEW BUDGLL,BUDGV,BUDG,A,B,E,Y,V,BUDBP,X,Z,BUDD
 S BUDGLL=0,BUDGV=""
 K ^TMP($J,"BPV")
 K BUDBP
 S BUDD=""
 S A="^TMP($J,""BPV"",",B=P_"^LAST 365 MEAS BP;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE),E=$$START1^APCLDF(B,A)
 I '$D(^TMP($J,"BPV",1)) Q ""
 ;SET UP ARRAY BY DATE
 S BUDBP=""
 K BUDG
 S Y=0 F  S Y=$O(^TMP($J,"BPV",Y)) Q:Y'=+Y  D
 .S V=$P(^TMP($J,"BPV",Y),U,5)
 .;I $$CLINIC^APCLV(V,"C")=30 Q
 .;Q:$$GDEV^BUD8D2(V)
 .Q:'$D(^AUPNVMSR("AD",V))
 .;NOW GET ALL BPS ON THIS VISIT
 .S X=0 F  S X=$O(^AUPNVMSR("AD",V,X)) Q:X'=+X  D
 ..Q:'$D(^AUPNVMSR(X,0))  ;BAD AD XREF
 ..S T=$P($G(^AUPNVMSR(X,0)),U)
 ..Q:T=""  ;BAD AD XREF
 ..Q:$P($G(^AUTTMSR(T,0)),U)'="BP"
 ..Q:$P($G(^AUPNVMSR(X,2)),U,1)
 ..S BUDD=(9999999-$$VD^APCLV(V))  ;use this date
 ..S BUDG(BUDD,X)=$P(^AUPNVMSR(X,0),U,4)
 K ^TMP($J,"BPV")
 I '$O(BUDG(0)) Q ""  ;no BPS
 S BUDD=$O(BUDG(0))  ;use this date and check all AND get lowest S and D
 S Y=0,S=99999,D=99999 F  S Y=$O(BUDG(BUDD,Y)) Q:Y'=+Y!(BUDBP]"")  D
 .S Z=$P(BUDG(BUDD,Y),U,1)  ;blood pressure value
 .I $P(Z,"/")<S S S=$P(Z,"/")
 .I $P(Z,"/",2)<D S D=$P(Z,"/",2)
 I S]"",D]"" S BUDBP=S_"/"_D
 K ^TMP($J,"BPV")
 I BUDBP="" Q ""
 Q 1_U_(9999999-BUDD)_U_"BP"_U_BUDBP