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

BGP8PC1.m

Go to the documentation of this file.
  1. BGP8PC1 ;IHS/CMI/LAB - CALC MEASURES; ; 12 Apr 2018 11:08 AM
  1. ;;18.1;IHS CLINICAL REPORTING;;MAY 25, 2018;Build 66
  1. ;
  1. PROC ;EP
  1. S BGPBT=$H
  1. D JRNL^BGP8PCUT
  1. S BGPJ=$J,BGPH=$H
  1. K ^XTMP("BGP15TAX",$J),^XTMP("BGPSNOMEDSUBSET",$J)
  1. D UNFOLDTX^BGP8UTL2
  1. D XTMP^BGP8UTL("BGP8D","IPC Patient List")
  1. ;calculate 3 years before end of each time frame
  1. S BGP3YE=$$FMADD^XLFDT(BGPED,-1096)
  1. S BGPP3YE=$$FMADD^XLFDT(BGPPED,-1096)
  1. S BGPB3YE=$$FMADD^XLFDT(BGPBED,-1096)
  1. ;process each patient
  1. S DFN=0 F S DFN=$O(^AUPNPAT(DFN)) Q:DFN'=+DFN D
  1. .Q:'$D(^AUPNPAT(DFN,0))
  1. .;I DUZ=2881 Q:$$HRN^AUPNPAT(DFN,DUZ(2))'=144641
  1. .Q:$P($G(^DPT(DFN,0)),U)["DEMO,PATIENT"
  1. .S X=$O(^DIBT("B","RPMS DEMO PATIENT NAMES",0)) I X Q:$D(^DIBT(X,1,DFN))
  1. .D PROCCY,PROCPY,PROCBY
  1. N ;
  1. S BGPET=$H
  1. K ^XTMP("BGP15TAX",$J),^XTMP("BGPSNOMEDSUBSET",$J)
  1. Q
  1. ;
  1. PROCCY ;EP - current time period
  1. K ^TMP($J)
  1. K BGPG
  1. Q:'$D(^DPT(DFN,0))
  1. Q:$P(^DPT(DFN,0),U,2)=""
  1. Q:"FM"'[$P(^DPT(DFN,0),U,2)
  1. S BGPEDATE=BGPED,BGPTIME=1,BGPBDATE=BGPBD,BGPGBL="^BGPGPDCR("
  1. S BGPAGEB=$$AGE^AUPNPAT(DFN,BGPBDATE)
  1. S BGPAGEE=$$AGE^AUPNPAT(DFN,BGPEDATE)
  1. S BGPSEX=$P(^DPT(DFN,0),U,2)
  1. Q:'$$COMMBEN(DFN,BGPBEN,$G(BGPTAXI),$G(BGPCOMMI),$G(BGPSEAT),BGPEDATE)
  1. S BGPIPCUP=$$IPCACTUP(DFN,BGPBDATE,BGPEDATE) ;user pop
  1. D CALCIND
  1. K ^TMP($J)
  1. Q
  1. PROCPY ;
  1. K ^TMP($J)
  1. K BGPG
  1. Q:'$D(^DPT(DFN,0))
  1. Q:$P(^DPT(DFN,0),U,2)=""
  1. Q:"FM"'[$P(^DPT(DFN,0),U,2)
  1. S BGPEDATE=BGPPED,BGPTIME=2,BGPBDATE=BGPPBD,BGPGBL="^BGPGPDPR("
  1. S BGPAGEB=$$AGE^AUPNPAT(DFN,BGPBDATE)
  1. S BGPAGEE=$$AGE^AUPNPAT(DFN,BGPEDATE)
  1. S BGPSEX=$P(^DPT(DFN,0),U,2)
  1. Q:'$$COMMBEN(DFN,BGPBEN,$G(BGPTAXI),$G(BGPCOMMI),$G(BGPSEAT),BGPEDATE)
  1. S BGPIPCUP=$$IPCACTUP(DFN,BGPBDATE,BGPEDATE) ;user pop
  1. D CALCIND
  1. K ^TMP($J)
  1. Q
  1. PROCBY ;
  1. K ^TMP($J)
  1. K BGPG
  1. Q:'$D(^DPT(DFN,0))
  1. Q:$P(^DPT(DFN,0),U,2)=""
  1. Q:"FM"'[$P(^DPT(DFN,0),U,2)
  1. S BGPEDATE=BGPBED,BGPTIME=3,BGPBDATE=BGPBBD,BGPGBL="^BGPGPDBR("
  1. S BGPAGEB=$$AGE^AUPNPAT(DFN,BGPBDATE)
  1. S BGPAGEE=$$AGE^AUPNPAT(DFN,BGPEDATE)
  1. S BGPSEX=$P(^DPT(DFN,0),U,2)
  1. Q:'$$COMMBEN(DFN,BGPBEN,$G(BGPTAXI),$G(BGPCOMMI),$G(BGPSEAT),BGPEDATE)
  1. S BGPIPCUP=$$IPCACTUP(DFN,BGPBDATE,BGPEDATE) ;user pop
  1. D CALCIND
  1. K ^TMP($J)
  1. Q
  1. CALCIND ;
  1. D CALCIND^BGP8PCCI
  1. Q
  1. V2(P,BDATE,EDATE) ;EP
  1. I '$D(^AUPNVSIT("AC",P)) Q ""
  1. K ^TMP($J,"A")
  1. NEW A,B,X,G,V,R
  1. S R=$NA(^TMP($J,"A"))
  1. D ALLV^APCLAPIU(P,BDATE,EDATE,R)
  1. I '$D(^TMP($J,"A",1)) Q ""
  1. S (X,G)=0 F S X=$O(^TMP($J,"A",X)) Q:X'=+X!(G>1) S V=$P(^TMP($J,"A",X),U,5) D
  1. .Q:'$D(^AUPNVSIT(V,0))
  1. .Q:'$P(^AUPNVSIT(V,0),U,9)
  1. .Q:$P(^AUPNVSIT(V,0),U,11)
  1. .Q:"SAHO"'[$P(^AUPNVSIT(V,0),U,7)
  1. .Q:"V"[$P(^AUPNVSIT(V,0),U,3)
  1. .Q:$P(^AUPNVSIT(V,0),U,6)=""
  1. .S G=G+1
  1. .Q
  1. K ^TMP($J,"A")
  1. Q $S(G<2:"",1:1)
  1. ;
  1. COMMBEN(P,B,T,C,PP,EDATE) ;
  1. NEW X
  1. I PP,'$D(^DIBT(PP,1,P)) Q 0 ;PATIENT PANEL AND PATIENT NOT IN THE PANEL
  1. I PP,$D(^DIBT(PP,1,P)) Q 1 ;PATIENT IS IN PP
  1. I B=1,$$BEN^AUPNPAT(P,"C")'="01" Q 0 ;must be Indian/Alaskan Native
  1. I B=2,$$BEN^AUPNPAT(P,"C")="01" Q 0 ;must not be I/A
  1. S DOD=$$DOD^AUPNPAT(P) I DOD]"",DOD<EDATE Q 0
  1. I T="",C="" Q 1 ;all communities
  1. I C,$P($G(^AUPNPAT(P,11)),U,17)'=C Q 0
  1. I C,$P($G(^AUPNPAT(P,11)),U,17)=C Q 1
  1. S X=$P($G(^AUPNPAT(P,11)),U,18) I X="" Q 0
  1. I '$D(^ATXAX(T,21,"B",($P(^AUPNPAT(P,11),U,18)))),'$D(^ATXAX(T,21,"AA",$P(^AUPNPAT(P,11),U,18),$P(^AUPNPAT(P,11),U,18))) Q 0
  1. Q 1
  1. ;
  1. IPCACTUP(P,BDATE,EDATE) ;EP - is this patient in user pop?
  1. NEW X,DOD
  1. S DOD=$$DOD^AUPNPAT(P) I DOD]"",DOD<EDATE Q 0
  1. LVD I '$$V1(P,BDATE,EDATE) Q 0 ;did they have 1 visit to IPC clinic list
  1. Q 1
  1. ;
  1. V1(P,BDATE,EDATE) ;
  1. NEW R,X,G,F,S,B,BGPV
  1. D ALLV^APCLAPIU(P,BDATE,EDATE,"BGPV")
  1. S (X,G,F,S)=0 F S X=$O(BGPV(X)) Q:X'=+X!(G) S V=$P(BGPV(X),U,5) D
  1. .Q:'$D(^AUPNVSIT(V,0))
  1. .Q:'$P(^AUPNVSIT(V,0),U,9)
  1. .Q:$P(^AUPNVSIT(V,0),U,11)
  1. .Q:'$D(^AUPNVPRV("AD",V))
  1. .Q:"SAHOI"'[$P(^AUPNVSIT(V,0),U,7)
  1. .Q:$P(^AUPNVSIT(V,0),U,6)=""
  1. .I $P(^AUPNVSIT(V,0),U,7)="H" S G=1 Q ;H visit has no clinic
  1. .I $P(^AUPNVSIT(V,0),U,7)="I" S G=1 Q ;I visit has no clinic
  1. .S B=$$CLINIC^APCLV(V,"C")
  1. .Q:B=""
  1. .I $D(^BGPCTRL($O(^BGPCTRL("B",2018,0)),1101,"B",B)) S G=1 ;must be a primary clinic S G=V
  1. Q $S(G:1,1:0)
  1. DMC ;EP
  1. ;
  1. I 'BGPIPCUP S BGPSTOP=1 Q ;must be ipc up
  1. I '$$FDMPRIOR(DFN,$$FMADD^XLFDT(BGPBDATE,-1)) S BGPSTOP=1 Q ;NO DIAGNOSIS PRIOR TO REPORT PERIOD
  1. ;EXCLUSIONS
  1. S X=$$BLINDPL^BGP8D21A(DFN,BGPEDATE) I X S BGPSTOP=1 Q ;BLIND
  1. S X=$$LASTDX^BGP8UTL1(DFN,"BGP BILATERAL BLINDNESS DXS",$$DOB^AUPNPAT(DFN),BGPEDATE) I X S BGPSTOP=1 Q ;BLIND DX
  1. S X=$$EYEENUC^BGP8D21A(DFN,BGPEDATE) I X S BGPSTOP=1 Q ;BLIND
  1. S X=$$AMP^BGP8D27(DFN,BGPEDATE) I X S BGPSTOP=1 Q ;FOOT AMP
  1. ;
  1. S BGPVALUE=""
  1. S (BGPN1,BGPD1,BGPI1,BGPI2,BGPI3,BGPI4,BGPI5)=0
  1. S BGPD1=1 ;hit denominator
  1. ;
  1. S BGPI1=$$HGBA1C^BGP8D2(DFN,BGPBDATE,BGPEDATE)
  1. I BGPI1 S BGPVALUE=BGPVALUE_"A1c: "_$$DATE^BGP8UTL($P(BGPI1,U,3))_" "_$P(BGPI1,U,4)
  1. K X,Y,Z,%,A,B,C,D,E,H,BDATE,EDATE,P,V,S,F,J,K,G,I,L,T,BGPG
  1. 22 ;BPS to set numr 2
  1. S BGPV=""
  1. S BGPBP=$$LASTBP(DFN,BGPBDATE,BGPEDATE) ;RETURN 1^EXT DATE BP VALUE
  1. ;I BGPBP="" S BGPBP=$$BPCPT(DFN,BGPBDATE,BGPEDATE) I BGPBP]"" S BGPI2=1 G BPS
  1. I BGPBP="" G BPS
  1. S BGPI2=1
  1. S BGPV=$P(BGPBP,U,2)
  1. BPS ;
  1. I BGPV]"" S BGPVALUE=BGPVALUE_$S(BGPVALUE]"":"; ",1:"")_"BP: "_BGPV
  1. ;
  1. 23 ;
  1. 24 ;micro or pos urine & GFR
  1. S BGPGFR=$$GFR^BGP8D211(DFN,BGPBDATE,BGPEDATE)
  1. S BGPESRD=$$ESRD^BGP8D211(DFN,$P(^DPT(DFN,0),U,3),BGPEDATE)
  1. S BGPQUP=$$QUANTUP^BGP8D211(DFN,BGPBDATE,BGPEDATE)
  1. I $P(BGPESRD,U) S BGPI3=1
  1. I BGPGFR&(BGPQUP) S BGPI3=1
  1. I BGPI3 D
  1. .I BGPESRD S BGPVALUE=BGPVALUE_$S(BGPVALUE]"":"; ",1:"")_$S(BGPESRD]"":"ESRD: "_$$DATE^BGP8UTL($P(BGPESRD,U,3))_" "_$P(BGPESRD,U,2),1:"") Q
  1. .S BGPVALUE=BGPVALUE_$S(BGPVALUE]"":"; ",1:"")_"GFR: "_$$DATE^BGP8UTL($P(BGPGFR,U,2))
  1. .S BGPVALUE=BGPVALUE_" & UACR: "_$$DATE^BGP8UTL($P(BGPQUP,U,3))_" "_$P(BGPQUP,U,2)
  1. K BGPX,BGPC
  1. 25 ;
  1. S BGPEYE=$$EYE^BGP8D21(DFN,BGPBDATE,BGPEDATE)
  1. S A=0 I $P(BGPEYE,U)=1 S A=1
  1. S B=0 I $P(BGPEYE,U)=2 S B=1
  1. S C=0 I $P(BGPEYE,U)=3 S C=1
  1. S BGPI4=0 I A!(B)!(C) S BGPI4=1
  1. I BGPI4 S BGPVALUE=BGPVALUE_$S(BGPVALUE]"":"; ",1:"")_"EYE: "_$$DATE^BGP8UTL($P(BGPEYE,U,2))_" "_$P(BGPEYE,U,3)
  1. K BGPG
  1. K ^TMP($J,"A")
  1. 26 ;FOOT EXAM
  1. S BGPFOOT=$$FOOT^BGP8D213(DFN,BGPBDATE,BGPEDATE,1)
  1. S BGPI5=$P(BGPFOOT,U)
  1. I BGPI5 S BGPVALUE=BGPVALUE_$S(BGPVALUE]"":"; ",1:"")_"FOOT EXAM: "_$$DATE^BGP8UTL($P(BGPFOOT,U,2))_" "_$P(BGPFOOT,U,3)
  1. ALL I BGPI1,BGPI2,BGPI3,BGPI4,BGPI5 S BGPN1=1
  1. S BGPVALUE="IPCUP&DM DX|||"_BGPVALUE I BGPN1 S BGPVALUE=$P(BGPVALUE,"|||")_"|||*** "_$P(BGPVALUE,"|||",2)
  1. CU1 K BGPBP,BGPLDL,BGPEYE,BGPUP,BGPLHGB,BGPG,BGPX,BGPC,BGPGFR,BGPFOOT,BGPBLIND,BGPI1,BGPI2,BGPI3,BGPI4,BGPI5
  1. K ^TMP($J,"A")
  1. Q
  1. LASTBP(P,BDATE,EDATE) ;EP
  1. NEW S,D,C,E,BGPG,X,Y,G,T,M,A,Z,L
  1. S BGPG=$$LASTITEM^BGP8DU(P,BDATE,EDATE,"MEASUREMENT","BP")
  1. I BGPG Q 1_U_$$DATE^BGP8UTL($P(BGPG,U,2))_" "_$P(BGPG,U,4)
  1. K BGPG
  1. S T=$O(^ATXAX("B","BGP BP MEASURED CPT",0))
  1. I T D I X]"" Q 1_U_$$DATE^BGP8UTL($P(X,U,1))_" "_$P(X,U,2)
  1. .S X=$$CPT^BGP8DU(P,BDATE,EDATE,T,5) I X]"" Q
  1. S BGPG=$$LASTDX^BGP8UTL1(P,"BGP HYPERTENSION SCREEN DXS",BDATE,EDATE) I BGPG Q 1_U_$$DATE^BGP8UTL($P(BGPG,U,3))_" "_$P(BGPG,U,2)
  1. S S=$$CPT^BGP8DU(P,BDATE,EDATE,$O(^ATXAX("B","BGP SYSTOLIC BP CPTS",0)),5)
  1. S D=$$CPT^BGP8DU(P,BDATE,EDATE,$O(^ATXAX("B","BGP DIASTOLIC BP CPTS",0)),5)
  1. I S,D Q 1_U_$$DATE^BGP8UTL($P(S,U,1))_"&"_$$DATE^BGP8UTL($P(D,U,1))_" "_$P(S,U,2)_"/"_$P(D,U,2)
  1. Q ""
  1. FDMPRIOR(P,EDATE) ;EP
  1. I $G(P)="" Q ""
  1. NEW X,BGPG,E,Y
  1. K BGPG
  1. S Y="BGPG("
  1. S X=P_"^FIRST DX [SURVEILLANCE DIABETES;DURING "_$$DOB^AUPNPAT(P)_"-"_EDATE S E=$$START1^APCLDF(X,Y)
  1. I '$D(BGPG(1)) Q ""
  1. Q 1
  1. STUFF ;
  1. S X="BGP IPC",DA=976
  1. F S X=$O(^ATXAX("B",X)) Q:X=""!(X]"BGP IPCZZZZZZ") D
  1. .Q:$D(^BGPTAXR("B",X)) ;already in there
  1. .S DA=DA+1
  1. .S ^BGPTAXR(DA,0)=X_"^D^^0"
  1. .S ^BGPTAXR("B",X,DA)=""
  1. .S ^BGPTAXR(DA,12,0)="^90560.0812S^1^1"
  1. .S ^BGPTAXR(DA,12,1,0)=8
  1. .S ^BGPTAXR(DA,12,"B",8,1)=""
  1. .W !,X
  1. Q
  1. TESTBP ;
  1. S DFN=0
  1. F S DFN=$O(^AUPNPAT(DFN)) Q:DFN'=+DFN S BGPBP=$$LASTBP(DFN,3120101,DT) I BGPBP W !,DFN," ",BGPBP
  1. Q