BDMD813 ; IHS/CMI/LAB - 2008 DIABETES AUDIT ;
;;2.0;DIABETES MANAGEMENT SYSTEM;**2**;JUN 14, 2007
;LORI - ADD V04,81
;
;cmi/anch/maw 9/12/2007 code set versioning in PLDMDXS
;
FLU(P,BDATE,EDATE) ;EP
NEW BDM,X,E,%,%DT,BD,B,D,C,Y,LFLU,TFLU,Z,G,T
S X=EDATE,%DT="P" D ^%DT S (BD,E)=Y
S (B,BD)=$$FMADD^XLFDT(BD,-(15*30)),BD=$$FMTE^XLFDT(BD)
;B-int fm beg
;E-int fm end
S LFLU="" K TFLU
I $$BI D LASTFLUN
I '$$BI D LASTFLUO
S LFLU=$O(TFLU(0))
I LFLU]"" S LFLU=9999999-LFLU
K BDM S %=P_"^LAST DX V04.8;DURING "_BD_"-"_EDATE,E=$$START1^APCLDF(%,"BDM(")
I $D(BDM(1)) D
.Q:LFLU>$P(BDM(1),U)
.S LFLU=$P(BDM(1),U)
K BDM S %=P_"^LAST DX V04.81;DURING "_BD_"-"_EDATE,E=$$START1^APCLDF(%,"BDM(")
I $D(BDM(1)) D
.Q:LFLU>$P(BDM(1),U)
.S LFLU=$P(BDM(1),U)
K BDM S %=P_"^LAST DX V06.6;DURING "_BD_"-"_EDATE,E=$$START1^APCLDF(%,"BDM(")
I $D(BDM(1)) D
.Q:LFLU>$P(BDM(1),U)
.S LFLU=$P(BDM(1),U)
K BDM S %=P_"^LAST PROCEDURE 99.52;DURING "_BD_"-"_EDATE,E=$$START1^APCLDF(%,"BDM(")
I $D(BDM(1)) D
.Q:LFLU>$P(BDM(1),U)
.S LFLU=$P(BDM(1),U)
;check CPT codes in year prior to date range
S X=EDATE,%DT="P" D ^%DT S ED=Y
S X=BD,%DT="P" D ^%DT S BD=Y
S T=$O(^ATXAX("B","DM AUDIT FLU CPTS",0))
K BDM I T S BDM(1)=$$CPT^BDMD812(P,BD,ED,T,3) D
.I BDM(1)="" K BDM Q
.Q:LFLU>$P(BDM(1),U)
.S LFLU=$P(BDM(1),U)
I LFLU]"" Q "Yes "_$$DATE(LFLU)
;
NEW G S G=$$REFUSAL^BDMD817(P,9999999.14,$O(^AUTTIMM("C",$S($$BI:88,1:12),0)),BD,EDATE)
I G,$P(G,U,2)'="N" Q "Refused"
I G Q "No - Not Medically Indicated"
S G=$$REFUSAL^BDMD817(P,9999999.14,$O(^AUTTIMM("C",15,0)),BD,EDATE)
I G,$P(G,U,2)'="N" Q "Refused"
I G Q "No - Not Medically Indicated"
S G=$$REFUSAL^BDMD817(P,9999999.14,$O(^AUTTIMM("C",16,0)),BD,EDATE)
I G,$P(G,U,2)'="N" Q "Refused"
I G Q "No - Not Medically Indicated"
S G=$$REFUSAL^BDMD817(P,9999999.14,$O(^AUTTIMM("C",111,0)),BD,EDATE)
I G,$P(G,U,2)'="N" Q "Refused"
I G Q "No - Not Medically Indicated"
S G="" F Z=15,16,88,111 Q:G S X=0,Y=$O(^AUTTIMM("C",Z,0)) I Y F S X=$O(^BIPC("AC",P,Y,X)) Q:X'=+X!(G) D
.S R=$P(^BIPC(X,0),U,3)
.Q:R=""
.Q:'$D(^BICONT(R,0))
.Q:$P(^BICONT(R,0),U,1)'["Refusal"
.S D=$P(^BIPC(X,0),U,4)
.Q:D=""
.Q:$P(^BIPC(X,0),U,4)<BD
.Q:$P(^BIPC(X,0),U,4)>ED
.S G=1
I G Q "Refused"
Q "No"
PNEU(P,EDATE) ;EP
NEW BDM,X,E,B,%DT,Y,TPN,D,LPN,G,C,Z,T
K TPN
S %DT="P",X=EDATE D ^%DT S E=Y ;set E = ending date in fm format
S B=$$DOB^AUPNPAT(P) ;b is DOB
I '$$BI D LASTPNO ;pre v7
I $$BI D LASTPNN ;get td from v imm
S LPN=$O(TPN(0))
I LPN]"" S LPN=9999999-LPN
;now check cpt codes
S T=$O(^ATXAX("B","DM AUDIT PNEUMO CPTS",0))
K C I T S C=$$CPT^BDMD812(P,B,E,T,3) D
.I C="" Q
.Q:LPN>$P(C,U)
.S LPN=$P(C,U)
I LPN]"" Q "Yes - "_$$DATE(LPN)
S G=$$REFUSAL^BDMD817(P,9999999.14,$O(^AUTTIMM("C",$S($$BI:33,1:19),0)),$$DOB^AUPNPAT(P,"E"),EDATE)
I G,$P(G,U,2)'="N" Q "Refused"
I G Q "No - Not Medically Indicated"
I '$$BI Q "No"
S G=$$REFUSAL^BDMD817(P,9999999.14,$O(^AUTTIMM("C",100,0)),$$DOB^AUPNPAT(P,"E"),EDATE)
I G,$P(G,U,2)'="N" Q "Refused"
I G Q "No - Not Medically Indicated"
S G=$$REFUSAL^BDMD817(P,9999999.14,$O(^AUTTIMM("C",109,0)),$$DOB^AUPNPAT(P,"E"),EDATE)
I G,$P(G,U,2)'="N" Q "Refused"
I G Q "No - Not Medically Indicated"
S X=EDATE,%DT="P" D ^%DT S E=Y
S G="" F Z=33,100,109 Q:G S X=0,Y=$O(^AUTTIMM("C",Z,0)) I Y F S X=$O(^BIPC("AC",P,Y,X)) Q:X'=+X!(G) D
.S R=$P(^BIPC(X,0),U,3)
.Q:R=""
.Q:'$D(^BICONT(R,0))
.Q:$P(^BICONT(R,0),U,1)'["Refusal"
.S D=$P(^BIPC(X,0),U,4)
.Q:D=""
.Q:$P(^BIPC(X,0),U,4)>ED
.S G=1
I G Q "Refused"
Q "No"
LASTFLUN ;
S X=0 F S X=$O(^AUPNVIMM("AC",P,X)) Q:X'=+X D
.S Y=$P(^AUPNVIMM(X,0),U) Q:'Y
.Q:'$D(^AUTTIMM(Y,0))
.S Y=$P(^AUTTIMM(Y,0),U,3)
.S D=$P(^AUPNVIMM(X,0),U,3) Q:'D
.S D=$P($P($G(^AUPNVSIT(D,0)),U),".")
.I D<B Q ;too early
.I D>E Q ;after time frame
.I Y=88 S TFLU(9999999-D)="" Q
.I Y=15 S TFLU(9999999-D)="" Q
.I Y=16 S TFLU(9999999-D)="" Q
.I Y=111 S TFLU(9999999-D)="" Q
Q
LASTFLUO ;
S X=0 F S X=$O(^AUPNVIMM("AC",P,X)) Q:X'=+X D
.S Y=$P(^AUPNVIMM(X,0),U) Q:'Y
.S Y=$P(^AUTTIMM(Y,0),U,3)
.S D=$P(^AUPNVIMM(X,0),U,3) Q:'D
.S D=$P($P($G(^AUPNVSIT(D,0)),U),".")
.I D<B Q ;too early
.I D>E Q ;after time frame
.I Y=12 S TFLU(9999999-D)="" Q
Q
LASTPNN ;
S X=0 F S X=$O(^AUPNVIMM("AC",P,X)) Q:X'=+X D
.S Y=$P(^AUPNVIMM(X,0),U) Q:'Y
.Q:'$D(^AUTTIMM(Y,0))
.S Y=$P(^AUTTIMM(Y,0),U,3)
.S D=$P(^AUPNVIMM(X,0),U,3) Q:'D
.S D=$P($P($G(^AUPNVSIT(D,0)),U),".")
.I D<B Q ;too early
.I D>E Q ;after time frame
.I Y=33 S TPN(9999999-D)="" Q
.I Y=100 S TPN(9999999-D)="" Q
.I Y=109 S TPN(9999999-D)="" Q
Q
LASTPNO ;
S X=0 F S X=$O(^AUPNVIMM("AC",P,X)) Q:X'=+X D
.S Y=$P(^AUPNVIMM(X,0),U) Q:'Y
.S Y=$P(^AUTTIMM(Y,0),U,3)
.S D=$P(^AUPNVIMM(X,0),U,3) Q:'D
.S D=$P($P($G(^AUPNVSIT(D,0)),U),".")
.I D<B Q ;too early
.I D>E Q ;after time frame
.I Y=19 S TPN(9999999-D)="" Q
Q
BI() ;
Q $S($O(^AUTTIMM(0))>100:1,1:0)
BPS(P,BDATE,EDATE,F) ;EP ;
I $G(F)="" S F="E"
NEW X,BDM,E,BDML,BDMLL,BDMV
S BDMLL=0,BDMV=""
K BDM
S X=P_"^LAST 50 MEAS BP;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BDM(")
S BDML=0 F S BDML=$O(BDM(BDML)) Q:BDML'=+BDML!(BDMLL=3) S BDMBP=$P($G(BDM(BDML)),U,2) D
.Q:$$CLINIC^APCLV($P(BDM(BDML),U,5),"C")=30
.S BDMLL=BDMLL+1
.I F="E" S $P(BDMV,";",BDMLL)=BDMBP_" "_$$FMTE^XLFDT($P(BDM(BDML),U))
.I F="I" S $P(BDMV,";",BDMLL)=$P(BDMBP," ")
Q BDMV
HTNDX(P,EDATE) ;EP - is HTN on problem list
I '$G(P) Q ""
I '$D(^DPT(P)) Q ""
NEW %,BDM,E,X
K BDM
S %=P_"^PROBLEM [DM AUDIT PROBLEM HTN DIAGNOSES" S E=$$START1^APCLDF(%,"BDM(")
I $D(BDM(1)) Q "Yes"
K BDM
S X=P_"^LAST 3 DX [SURVEILLANCE HYPERTENSION;DURING "_$$FMTE^XLFDT($$DOB^AUPNPAT(P))_"-"_EDATE S E=$$START1^APCLDF(X,"BDM(") I $D(BDM(3)) Q "Yes"
Q "No"
LASTHT(P,EDATE,F) ;PEP - return last ht and date
I 'P Q ""
I $G(F)="" S F="E"
I '$D(^AUPNVSIT("AC",P)) Q ""
NEW %,BDMARRY,H,E,W,BDATE
S %DT="P",X=EDATE D ^%DT S EDATE=Y
S BDATE=$P(^DPT(P,0),U,3)
S %=P_"^LAST MEAS HT;DURING "_BDATE_"-"_EDATE NEW X S E=$$START1^APCLDF(%,"BDMARRY(") S H=$P($G(BDMARRY(1)),U,2)
I H="" Q H
I F="I" Q H
S H=$J(H,5,2)
Q H_" inches "_$$DATE($P(BDMARRY(1),U))
LASTWT(P,EDATE,F) ;PEP - return last wt
I 'P Q ""
I $G(F)="" S F="E"
NEW %,BDMARRY,E,BDMW,X,BDMN,BDM,BDMD,BDMZ,BDMX,W,H
S %DT="P",X=EDATE D ^%DT S EDATE=Y
S BDATE=$$FMADD^XLFDT(EDATE,-(2*365))
NEW BDMV221 S BDMV221=$O(^ICD9("BA","V22.1 ",""))
K BDM S BDMW="" S BDMX=P_"^LAST 24 MEAS WT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(BDMX,"BDM(")
S BDMN=0 F S BDMN=$O(BDM(BDMN)) Q:BDMN'=+BDMN!(BDMW]"") D
. S BDMZ=$P(BDM(BDMN),U,5)
. I '$D(^AUPNVPOV("AD",BDMZ)) S BDMW=$P(BDM(BDMN),U,2)_" lbs "_$$DATE($P(BDM(BDMN),U)) Q
. S BDMD=0 F S BDMD=$O(^AUPNVPOV("AD",BDMZ,BDMD)) Q:'BDMD!(BDMW]"") D
.. I $P(^AUPNVPOV(BDMD,0),U)'=BDMV221 S BDMW=$P(BDM(BDMN),U,2)_" lbs "_$$DATE($P(BDM(BDMN),U))
..Q
Q $S(F="E":BDMW,1:+BDMW)
CMSFDX(P,R,T) ;EP - return date/dx of dm in register
I '$G(P) Q ""
I '$G(R) Q ""
I $G(T)="" Q ""
NEW D1,Y,X,D,G S X=0,(D,Y)="" F S X=$O(^ACM(44,"C",P,X)) Q:X'=+X I $P(^ACM(44,X,0),U,4)=R D
.S D=$P($G(^ACM(44,X,"SV")),U,2),D1=D,D=$$FMTE^XLFDT(D)
.S Y=$$VAL^XBDIQ1(9002244,X,.01)
.I D1="" S D1=0
.S G(9999999-D1)=D_"^"_D1_"^"_Y
I '$O(G(0)) Q ""
S Y=0,G=$O(G(Y))
S D=$P(G(G),U),D1=$P(G(G),U,2),Y=$P(G(G),U,3)
Q $S(T="D":$G(D),T="DX":$G(Y),T="ID":$G(D1),1:"")
;
PLDMDOO(P,F) ;EP
I '$G(P) Q ""
I $G(F)="" S F="E"
NEW T S T=$O(^ATXAX("B","SURVEILLANCE DIABETES",0))
I 'T Q ""
NEW D,X,I S D="",X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
.S I=$P(^AUPNPROB(X,0),U)
.I $$ICD^ATXCHK(I,T,9) D
..I $P(^AUPNPROB(X,0),U,13)]"" S D($P(^AUPNPROB(X,0),U,13))=""
..Q
.Q
S D=$O(D(0)) Q $S(F="E":$$FMTE^XLFDT(D),1:$O(D(0)))
PLDMDXS(P) ;EP - get all DM dxs from problem list
I '$G(P) Q ""
NEW T S T=$O(^ATXAX("B","SURVEILLANCE DIABETES",0))
I 'T Q "<diabetes taxonomy missing>"
NEW D,X,I S D="",X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
.S I=$P(^AUPNPROB(X,0),U)
.;I $$ICD^ATXCHK(I,T,9) S:D]"" D=D_";" S D=D_$P(^ICD9(I,0),U) ;cmi/anch/maw 9/12/2007 orig line
.I $$ICD^ATXCHK(I,T,9) S:D]"" D=D_";" S D=D_$P($$ICDDX^ICDCODE(I),U,2) ;cmi/anch/maw 9/12/2007 csv
.Q
Q D
;
FRSTDMDX(P,F) ;EP return date of first dm dx
I '$G(P) Q ""
I $G(F)="" S F="E"
NEW X,E,BDM,Y
S Y="BDM("
S X=P_"^FIRST DX [SURVEILLANCE DIABETES" S E=$$START1^APCLDF(X,Y) S Y=$P($G(BDM(1)),U)
Q $S(F="E":$$FMTE^XLFDT(Y),1:Y)
LASTDMDX(P,D) ;EP - last pcc dm dx
I '$G(P) Q ""
NEW X,E,BDM,Y
S Y="BDM("
S X=P_"^LAST DX [DM AUDIT TYPE II DXS;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_D S E=$$START1^APCLDF(X,Y)
I $D(BDM(1)) Q "Type 2"
K BDM S X=P_"^LAST DX [DM AUDIT TYPE I DXS;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_D S E=$$START1^APCLDF(X,Y)
I $D(BDM(1)) Q "Type 1"
Q ""
INCHES ;
NEW F,FI,Z
S (X,Z)=$$LASTHT^BDMD813(BDMPD,BDMRED,"I")
Q:X=""
S X=X/12 ;get feet
S F=$P(X,".")
S FI=F*12 ;GET INCHES
S X=Z-FI
S X=$J(X,5,2)
;W !,Z," ",F," ",FI," ",X H 1
;I X S X=X/12,X=$P(X,"."),X=X*12,X=Z=X,X=$J(X,5,2)
Q
DATE(D) ;EP
I D="" Q D
Q $E(D,4,5)_"/"_$E(D,6,7)_"/"_$E(D,2,3)
BDMD813 ; IHS/CMI/LAB - 2008 DIABETES AUDIT ;
+1 ;;2.0;DIABETES MANAGEMENT SYSTEM;**2**;JUN 14, 2007
+2 ;LORI - ADD V04,81
+3 ;
+4 ;cmi/anch/maw 9/12/2007 code set versioning in PLDMDXS
+5 ;
FLU(P,BDATE,EDATE) ;EP
+1 NEW BDM,X,E,%,%DT,BD,B,D,C,Y,LFLU,TFLU,Z,G,T
+2 SET X=EDATE
SET %DT="P"
DO ^%DT
SET (BD,E)=Y
+3 SET (B,BD)=$$FMADD^XLFDT(BD,-(15*30))
SET BD=$$FMTE^XLFDT(BD)
+4 ;B-int fm beg
+5 ;E-int fm end
+6 SET LFLU=""
KILL TFLU
+7 IF $$BI
DO LASTFLUN
+8 IF '$$BI
DO LASTFLUO
+9 SET LFLU=$ORDER(TFLU(0))
+10 IF LFLU]""
SET LFLU=9999999-LFLU
+11 KILL BDM
SET %=P_"^LAST DX V04.8;DURING "_BD_"-"_EDATE
SET E=$$START1^APCLDF(%,"BDM(")
+12 IF $DATA(BDM(1))
Begin DoDot:1
+13 IF LFLU>$PIECE(BDM(1),U)
QUIT
+14 SET LFLU=$PIECE(BDM(1),U)
End DoDot:1
+15 KILL BDM
SET %=P_"^LAST DX V04.81;DURING "_BD_"-"_EDATE
SET E=$$START1^APCLDF(%,"BDM(")
+16 IF $DATA(BDM(1))
Begin DoDot:1
+17 IF LFLU>$PIECE(BDM(1),U)
QUIT
+18 SET LFLU=$PIECE(BDM(1),U)
End DoDot:1
+19 KILL BDM
SET %=P_"^LAST DX V06.6;DURING "_BD_"-"_EDATE
SET E=$$START1^APCLDF(%,"BDM(")
+20 IF $DATA(BDM(1))
Begin DoDot:1
+21 IF LFLU>$PIECE(BDM(1),U)
QUIT
+22 SET LFLU=$PIECE(BDM(1),U)
End DoDot:1
+23 KILL BDM
SET %=P_"^LAST PROCEDURE 99.52;DURING "_BD_"-"_EDATE
SET E=$$START1^APCLDF(%,"BDM(")
+24 IF $DATA(BDM(1))
Begin DoDot:1
+25 IF LFLU>$PIECE(BDM(1),U)
QUIT
+26 SET LFLU=$PIECE(BDM(1),U)
End DoDot:1
+27 ;check CPT codes in year prior to date range
+28 SET X=EDATE
SET %DT="P"
DO ^%DT
SET ED=Y
+29 SET X=BD
SET %DT="P"
DO ^%DT
SET BD=Y
+30 SET T=$ORDER(^ATXAX("B","DM AUDIT FLU CPTS",0))
+31 KILL BDM
IF T
SET BDM(1)=$$CPT^BDMD812(P,BD,ED,T,3)
Begin DoDot:1
+32 IF BDM(1)=""
KILL BDM
QUIT
+33 IF LFLU>$PIECE(BDM(1),U)
QUIT
+34 SET LFLU=$PIECE(BDM(1),U)
End DoDot:1
+35 IF LFLU]""
QUIT "Yes "_$$DATE(LFLU)
+36 ;
+37 NEW G
SET G=$$REFUSAL^BDMD817(P,9999999.14,$ORDER(^AUTTIMM("C",$SELECT($$BI:88,1:12),0)),BD,EDATE)
+38 IF G
IF $PIECE(G,U,2)'="N"
QUIT "Refused"
+39 IF G
QUIT "No - Not Medically Indicated"
+40 SET G=$$REFUSAL^BDMD817(P,9999999.14,$ORDER(^AUTTIMM("C",15,0)),BD,EDATE)
+41 IF G
IF $PIECE(G,U,2)'="N"
QUIT "Refused"
+42 IF G
QUIT "No - Not Medically Indicated"
+43 SET G=$$REFUSAL^BDMD817(P,9999999.14,$ORDER(^AUTTIMM("C",16,0)),BD,EDATE)
+44 IF G
IF $PIECE(G,U,2)'="N"
QUIT "Refused"
+45 IF G
QUIT "No - Not Medically Indicated"
+46 SET G=$$REFUSAL^BDMD817(P,9999999.14,$ORDER(^AUTTIMM("C",111,0)),BD,EDATE)
+47 IF G
IF $PIECE(G,U,2)'="N"
QUIT "Refused"
+48 IF G
QUIT "No - Not Medically Indicated"
+49 SET G=""
FOR Z=15,16,88,111
IF G
QUIT
SET X=0
SET Y=$ORDER(^AUTTIMM("C",Z,0))
IF Y
FOR
SET X=$ORDER(^BIPC("AC",P,Y,X))
IF X'=+X!(G)
QUIT
Begin DoDot:1
+50 SET R=$PIECE(^BIPC(X,0),U,3)
+51 IF R=""
QUIT
+52 IF '$DATA(^BICONT(R,0))
QUIT
+53 IF $PIECE(^BICONT(R,0),U,1)'["Refusal"
QUIT
+54 SET D=$PIECE(^BIPC(X,0),U,4)
+55 IF D=""
QUIT
+56 IF $PIECE(^BIPC(X,0),U,4)<BD
QUIT
+57 IF $PIECE(^BIPC(X,0),U,4)>ED
QUIT
+58 SET G=1
End DoDot:1
+59 IF G
QUIT "Refused"
+60 QUIT "No"
PNEU(P,EDATE) ;EP
+1 NEW BDM,X,E,B,%DT,Y,TPN,D,LPN,G,C,Z,T
+2 KILL TPN
+3 ;set E = ending date in fm format
SET %DT="P"
SET X=EDATE
DO ^%DT
SET E=Y
+4 ;b is DOB
SET B=$$DOB^AUPNPAT(P)
+5 ;pre v7
IF '$$BI
DO LASTPNO
+6 ;get td from v imm
IF $$BI
DO LASTPNN
+7 SET LPN=$ORDER(TPN(0))
+8 IF LPN]""
SET LPN=9999999-LPN
+9 ;now check cpt codes
+10 SET T=$ORDER(^ATXAX("B","DM AUDIT PNEUMO CPTS",0))
+11 KILL C
IF T
SET C=$$CPT^BDMD812(P,B,E,T,3)
Begin DoDot:1
+12 IF C=""
QUIT
+13 IF LPN>$PIECE(C,U)
QUIT
+14 SET LPN=$PIECE(C,U)
End DoDot:1
+15 IF LPN]""
QUIT "Yes - "_$$DATE(LPN)
+16 SET G=$$REFUSAL^BDMD817(P,9999999.14,$ORDER(^AUTTIMM("C",$SELECT($$BI:33,1:19),0)),$$DOB^AUPNPAT(P,"E"),EDATE)
+17 IF G
IF $PIECE(G,U,2)'="N"
QUIT "Refused"
+18 IF G
QUIT "No - Not Medically Indicated"
+19 IF '$$BI
QUIT "No"
+20 SET G=$$REFUSAL^BDMD817(P,9999999.14,$ORDER(^AUTTIMM("C",100,0)),$$DOB^AUPNPAT(P,"E"),EDATE)
+21 IF G
IF $PIECE(G,U,2)'="N"
QUIT "Refused"
+22 IF G
QUIT "No - Not Medically Indicated"
+23 SET G=$$REFUSAL^BDMD817(P,9999999.14,$ORDER(^AUTTIMM("C",109,0)),$$DOB^AUPNPAT(P,"E"),EDATE)
+24 IF G
IF $PIECE(G,U,2)'="N"
QUIT "Refused"
+25 IF G
QUIT "No - Not Medically Indicated"
+26 SET X=EDATE
SET %DT="P"
DO ^%DT
SET E=Y
+27 SET G=""
FOR Z=33,100,109
IF G
QUIT
SET X=0
SET Y=$ORDER(^AUTTIMM("C",Z,0))
IF Y
FOR
SET X=$ORDER(^BIPC("AC",P,Y,X))
IF X'=+X!(G)
QUIT
Begin DoDot:1
+28 SET R=$PIECE(^BIPC(X,0),U,3)
+29 IF R=""
QUIT
+30 IF '$DATA(^BICONT(R,0))
QUIT
+31 IF $PIECE(^BICONT(R,0),U,1)'["Refusal"
QUIT
+32 SET D=$PIECE(^BIPC(X,0),U,4)
+33 IF D=""
QUIT
+34 IF $PIECE(^BIPC(X,0),U,4)>ED
QUIT
+35 SET G=1
End DoDot:1
+36 IF G
QUIT "Refused"
+37 QUIT "No"
LASTFLUN ;
+1 SET X=0
FOR
SET X=$ORDER(^AUPNVIMM("AC",P,X))
IF X'=+X
QUIT
Begin DoDot:1
+2 SET Y=$PIECE(^AUPNVIMM(X,0),U)
IF 'Y
QUIT
+3 IF '$DATA(^AUTTIMM(Y,0))
QUIT
+4 SET Y=$PIECE(^AUTTIMM(Y,0),U,3)
+5 SET D=$PIECE(^AUPNVIMM(X,0),U,3)
IF 'D
QUIT
+6 SET D=$PIECE($PIECE($GET(^AUPNVSIT(D,0)),U),".")
+7 ;too early
IF D<B
QUIT
+8 ;after time frame
IF D>E
QUIT
+9 IF Y=88
SET TFLU(9999999-D)=""
QUIT
+10 IF Y=15
SET TFLU(9999999-D)=""
QUIT
+11 IF Y=16
SET TFLU(9999999-D)=""
QUIT
+12 IF Y=111
SET TFLU(9999999-D)=""
QUIT
End DoDot:1
+13 QUIT
LASTFLUO ;
+1 SET X=0
FOR
SET X=$ORDER(^AUPNVIMM("AC",P,X))
IF X'=+X
QUIT
Begin DoDot:1
+2 SET Y=$PIECE(^AUPNVIMM(X,0),U)
IF 'Y
QUIT
+3 SET Y=$PIECE(^AUTTIMM(Y,0),U,3)
+4 SET D=$PIECE(^AUPNVIMM(X,0),U,3)
IF 'D
QUIT
+5 SET D=$PIECE($PIECE($GET(^AUPNVSIT(D,0)),U),".")
+6 ;too early
IF D<B
QUIT
+7 ;after time frame
IF D>E
QUIT
+8 IF Y=12
SET TFLU(9999999-D)=""
QUIT
End DoDot:1
+9 QUIT
LASTPNN ;
+1 SET X=0
FOR
SET X=$ORDER(^AUPNVIMM("AC",P,X))
IF X'=+X
QUIT
Begin DoDot:1
+2 SET Y=$PIECE(^AUPNVIMM(X,0),U)
IF 'Y
QUIT
+3 IF '$DATA(^AUTTIMM(Y,0))
QUIT
+4 SET Y=$PIECE(^AUTTIMM(Y,0),U,3)
+5 SET D=$PIECE(^AUPNVIMM(X,0),U,3)
IF 'D
QUIT
+6 SET D=$PIECE($PIECE($GET(^AUPNVSIT(D,0)),U),".")
+7 ;too early
IF D<B
QUIT
+8 ;after time frame
IF D>E
QUIT
+9 IF Y=33
SET TPN(9999999-D)=""
QUIT
+10 IF Y=100
SET TPN(9999999-D)=""
QUIT
+11 IF Y=109
SET TPN(9999999-D)=""
QUIT
End DoDot:1
+12 QUIT
LASTPNO ;
+1 SET X=0
FOR
SET X=$ORDER(^AUPNVIMM("AC",P,X))
IF X'=+X
QUIT
Begin DoDot:1
+2 SET Y=$PIECE(^AUPNVIMM(X,0),U)
IF 'Y
QUIT
+3 SET Y=$PIECE(^AUTTIMM(Y,0),U,3)
+4 SET D=$PIECE(^AUPNVIMM(X,0),U,3)
IF 'D
QUIT
+5 SET D=$PIECE($PIECE($GET(^AUPNVSIT(D,0)),U),".")
+6 ;too early
IF D<B
QUIT
+7 ;after time frame
IF D>E
QUIT
+8 IF Y=19
SET TPN(9999999-D)=""
QUIT
End DoDot:1
+9 QUIT
BI() ;
+1 QUIT $SELECT($ORDER(^AUTTIMM(0))>100:1,1:0)
BPS(P,BDATE,EDATE,F) ;EP ;
+1 IF $GET(F)=""
SET F="E"
+2 NEW X,BDM,E,BDML,BDMLL,BDMV
+3 SET BDMLL=0
SET BDMV=""
+4 KILL BDM
+5 SET X=P_"^LAST 50 MEAS BP;DURING "_BDATE_"-"_EDATE
SET E=$$START1^APCLDF(X,"BDM(")
+6 SET BDML=0
FOR
SET BDML=$ORDER(BDM(BDML))
IF BDML'=+BDML!(BDMLL=3)
QUIT
SET BDMBP=$PIECE($GET(BDM(BDML)),U,2)
Begin DoDot:1
+7 IF $$CLINIC^APCLV($PIECE(BDM(BDML),U,5),"C")=30
QUIT
+8 SET BDMLL=BDMLL+1
+9 IF F="E"
SET $PIECE(BDMV,";",BDMLL)=BDMBP_" "_$$FMTE^XLFDT($PIECE(BDM(BDML),U))
+10 IF F="I"
SET $PIECE(BDMV,";",BDMLL)=$PIECE(BDMBP," ")
End DoDot:1
+11 QUIT BDMV
HTNDX(P,EDATE) ;EP - is HTN on problem list
+1 IF '$GET(P)
QUIT ""
+2 IF '$DATA(^DPT(P))
QUIT ""
+3 NEW %,BDM,E,X
+4 KILL BDM
+5 SET %=P_"^PROBLEM [DM AUDIT PROBLEM HTN DIAGNOSES"
SET E=$$START1^APCLDF(%,"BDM(")
+6 IF $DATA(BDM(1))
QUIT "Yes"
+7 KILL BDM
+8 SET X=P_"^LAST 3 DX [SURVEILLANCE HYPERTENSION;DURING "_$$FMTE^XLFDT($$DOB^AUPNPAT(P))_"-"_EDATE
SET E=$$START1^APCLDF(X,"BDM(")
IF $DATA(BDM(3))
QUIT "Yes"
+9 QUIT "No"
LASTHT(P,EDATE,F) ;PEP - return last ht and date
+1 IF 'P
QUIT ""
+2 IF $GET(F)=""
SET F="E"
+3 IF '$DATA(^AUPNVSIT("AC",P))
QUIT ""
+4 NEW %,BDMARRY,H,E,W,BDATE
+5 SET %DT="P"
SET X=EDATE
DO ^%DT
SET EDATE=Y
+6 SET BDATE=$PIECE(^DPT(P,0),U,3)
+7 SET %=P_"^LAST MEAS HT;DURING "_BDATE_"-"_EDATE
NEW X
SET E=$$START1^APCLDF(%,"BDMARRY(")
SET H=$PIECE($GET(BDMARRY(1)),U,2)
+8 IF H=""
QUIT H
+9 IF F="I"
QUIT H
+10 SET H=$JUSTIFY(H,5,2)
+11 QUIT H_" inches "_$$DATE($PIECE(BDMARRY(1),U))
LASTWT(P,EDATE,F) ;PEP - return last wt
+1 IF 'P
QUIT ""
+2 IF $GET(F)=""
SET F="E"
+3 NEW %,BDMARRY,E,BDMW,X,BDMN,BDM,BDMD,BDMZ,BDMX,W,H
+4 SET %DT="P"
SET X=EDATE
DO ^%DT
SET EDATE=Y
+5 SET BDATE=$$FMADD^XLFDT(EDATE,-(2*365))
+6 NEW BDMV221
SET BDMV221=$ORDER(^ICD9("BA","V22.1 ",""))
+7 KILL BDM
SET BDMW=""
SET BDMX=P_"^LAST 24 MEAS WT;DURING "_BDATE_"-"_EDATE
SET E=$$START1^APCLDF(BDMX,"BDM(")
+8 SET BDMN=0
FOR
SET BDMN=$ORDER(BDM(BDMN))
IF BDMN'=+BDMN!(BDMW]"")
QUIT
Begin DoDot:1
+9 SET BDMZ=$PIECE(BDM(BDMN),U,5)
+10 IF '$DATA(^AUPNVPOV("AD",BDMZ))
SET BDMW=$PIECE(BDM(BDMN),U,2)_" lbs "_$$DATE($PIECE(BDM(BDMN),U))
QUIT
+11 SET BDMD=0
FOR
SET BDMD=$ORDER(^AUPNVPOV("AD",BDMZ,BDMD))
IF 'BDMD!(BDMW]"")
QUIT
Begin DoDot:2
+12 IF $PIECE(^AUPNVPOV(BDMD,0),U)'=BDMV221
SET BDMW=$PIECE(BDM(BDMN),U,2)_" lbs "_$$DATE($PIECE(BDM(BDMN),U))
+13 QUIT
End DoDot:2
End DoDot:1
+14 QUIT $SELECT(F="E":BDMW,1:+BDMW)
CMSFDX(P,R,T) ;EP - return date/dx of dm in register
+1 IF '$GET(P)
QUIT ""
+2 IF '$GET(R)
QUIT ""
+3 IF $GET(T)=""
QUIT ""
+4 NEW D1,Y,X,D,G
SET X=0
SET (D,Y)=""
FOR
SET X=$ORDER(^ACM(44,"C",P,X))
IF X'=+X
QUIT
IF $PIECE(^ACM(44,X,0),U,4)=R
Begin DoDot:1
+5 SET D=$PIECE($GET(^ACM(44,X,"SV")),U,2)
SET D1=D
SET D=$$FMTE^XLFDT(D)
+6 SET Y=$$VAL^XBDIQ1(9002244,X,.01)
+7 IF D1=""
SET D1=0
+8 SET G(9999999-D1)=D_"^"_D1_"^"_Y
End DoDot:1
+9 IF '$ORDER(G(0))
QUIT ""
+10 SET Y=0
SET G=$ORDER(G(Y))
+11 SET D=$PIECE(G(G),U)
SET D1=$PIECE(G(G),U,2)
SET Y=$PIECE(G(G),U,3)
+12 QUIT $SELECT(T="D":$GET(D),T="DX":$GET(Y),T="ID":$GET(D1),1:"")
+13 ;
PLDMDOO(P,F) ;EP
+1 IF '$GET(P)
QUIT ""
+2 IF $GET(F)=""
SET F="E"
+3 NEW T
SET T=$ORDER(^ATXAX("B","SURVEILLANCE DIABETES",0))
+4 IF 'T
QUIT ""
+5 NEW D,X,I
SET D=""
SET X=0
FOR
SET X=$ORDER(^AUPNPROB("AC",P,X))
IF X'=+X
QUIT
Begin DoDot:1
+6 SET I=$PIECE(^AUPNPROB(X,0),U)
+7 IF $$ICD^ATXCHK(I,T,9)
Begin DoDot:2
+8 IF $PIECE(^AUPNPROB(X,0),U,13)]""
SET D($PIECE(^AUPNPROB(X,0),U,13))=""
+9 QUIT
End DoDot:2
+10 QUIT
End DoDot:1
+11 SET D=$ORDER(D(0))
QUIT $SELECT(F="E":$$FMTE^XLFDT(D),1:$ORDER(D(0)))
PLDMDXS(P) ;EP - get all DM dxs from problem list
+1 IF '$GET(P)
QUIT ""
+2 NEW T
SET T=$ORDER(^ATXAX("B","SURVEILLANCE DIABETES",0))
+3 IF 'T
QUIT "<diabetes taxonomy missing>"
+4 NEW D,X,I
SET D=""
SET X=0
FOR
SET X=$ORDER(^AUPNPROB("AC",P,X))
IF X'=+X
QUIT
Begin DoDot:1
+5 SET I=$PIECE(^AUPNPROB(X,0),U)
+6 ;I $$ICD^ATXCHK(I,T,9) S:D]"" D=D_";" S D=D_$P(^ICD9(I,0),U) ;cmi/anch/maw 9/12/2007 orig line
+7 ;cmi/anch/maw 9/12/2007 csv
IF $$ICD^ATXCHK(I,T,9)
IF D]""
SET D=D_";"
SET D=D_$PIECE($$ICDDX^ICDCODE(I),U,2)
+8 QUIT
End DoDot:1
+9 QUIT D
+10 ;
FRSTDMDX(P,F) ;EP return date of first dm dx
+1 IF '$GET(P)
QUIT ""
+2 IF $GET(F)=""
SET F="E"
+3 NEW X,E,BDM,Y
+4 SET Y="BDM("
+5 SET X=P_"^FIRST DX [SURVEILLANCE DIABETES"
SET E=$$START1^APCLDF(X,Y)
SET Y=$PIECE($GET(BDM(1)),U)
+6 QUIT $SELECT(F="E":$$FMTE^XLFDT(Y),1:Y)
LASTDMDX(P,D) ;EP - last pcc dm dx
+1 IF '$GET(P)
QUIT ""
+2 NEW X,E,BDM,Y
+3 SET Y="BDM("
+4 SET X=P_"^LAST DX [DM AUDIT TYPE II DXS;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_D
SET E=$$START1^APCLDF(X,Y)
+5 IF $DATA(BDM(1))
QUIT "Type 2"
+6 KILL BDM
SET X=P_"^LAST DX [DM AUDIT TYPE I DXS;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_D
SET E=$$START1^APCLDF(X,Y)
+7 IF $DATA(BDM(1))
QUIT "Type 1"
+8 QUIT ""
INCHES ;
+1 NEW F,FI,Z
+2 SET (X,Z)=$$LASTHT^BDMD813(BDMPD,BDMRED,"I")
+3 IF X=""
QUIT
+4 ;get feet
SET X=X/12
+5 SET F=$PIECE(X,".")
+6 ;GET INCHES
SET FI=F*12
+7 SET X=Z-FI
+8 SET X=$JUSTIFY(X,5,2)
+9 ;W !,Z," ",F," ",FI," ",X H 1
+10 ;I X S X=X/12,X=$P(X,"."),X=X*12,X=Z=X,X=$J(X,5,2)
+11 QUIT
DATE(D) ;EP
+1 IF D=""
QUIT D
+2 QUIT $EXTRACT(D,4,5)_"/"_$EXTRACT(D,6,7)_"/"_$EXTRACT(D,2,3)