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

BDMD313.m

Go to the documentation of this file.
  1. BDMD313 ; IHS/CMI/LAB - 2003 DIABETES AUDIT ;
  1. ;;2.0;DIABETES MANAGEMENT SYSTEM;**2**;JUN 14, 2007
  1. ;LORI - ADD V04,81
  1. ;
  1. ;cmi/anch/maw 9/10/2007 code set versioning in PLDMDXS
  1. ;
  1. FLU(P,BDATE,EDATE) ;EP
  1. NEW BDM,X,E,%,%DT,BD,B,D,C,Y,LFLU,TFLU,Z,G,T
  1. S X=EDATE,%DT="P" D ^%DT S (BD,E)=Y
  1. S (B,BD)=$$FMADD^XLFDT(BD,-(15*30)),BD=$$FMTE^XLFDT(BD)
  1. ;B-int fm beg
  1. ;E-int fm end
  1. S LFLU="" K TFLU
  1. I $$BI D LASTFLUN
  1. I '$$BI D LASTFLUO
  1. S LFLU=$O(TFLU(0))
  1. I LFLU]"" S LFLU=9999999-LFLU
  1. K BDM S %=P_"^LAST DX V04.8;DURING "_BD_"-"_EDATE,E=$$START1^APCLDF(%,"BDM(")
  1. I $D(BDM(1)) D
  1. .Q:LFLU>$P(BDM(1),U)
  1. .S LFLU=$P(BDM(1),U)
  1. K BDM S %=P_"^LAST DX V04.81;DURING "_BD_"-"_EDATE,E=$$START1^APCLDF(%,"BDM(")
  1. I $D(BDM(1)) D
  1. .Q:LFLU>$P(BDM(1),U)
  1. .S LFLU=$P(BDM(1),U)
  1. K BDM S %=P_"^LAST DX V06.6;DURING "_BD_"-"_EDATE,E=$$START1^APCLDF(%,"BDM(")
  1. I $D(BDM(1)) D
  1. .Q:LFLU>$P(BDM(1),U)
  1. .S LFLU=$P(BDM(1),U)
  1. K BDM S %=P_"^LAST PROCEDURE 99.52;DURING "_BD_"-"_EDATE,E=$$START1^APCLDF(%,"BDM(")
  1. I $D(BDM(1)) D
  1. .Q:LFLU>$P(BDM(1),U)
  1. .S LFLU=$P(BDM(1),U)
  1. ;check CPT codes in year prior to date range
  1. S X=EDATE,%DT="P" D ^%DT S ED=Y
  1. S X=BD,%DT="P" D ^%DT S BD=Y
  1. S T=$O(^ATXAX("B","DM AUDIT FLU CPTS",0))
  1. K BDM I T S BDM(1)=$$CPT^BDMD312(P,BD,ED,T,3) D
  1. .I BDM(1)="" K BDM Q
  1. .Q:LFLU>$P(BDM(1),U)
  1. .S LFLU=$P(BDM(1),U)
  1. I LFLU]"" Q "Yes "_$$FMTE^XLFDT(LFLU)
  1. ;
  1. NEW G S G=$$REFUSAL^BDMD317(P,9999999.14,$O(^AUTTIMM("C",$S($$BI:88,1:12),0)),BD,EDATE)
  1. I G,$P(G,U,2)'="N" Q "Refused"
  1. I G Q "No - Not Medically Indicated"
  1. S G=$$REFUSAL^BDMD317(P,9999999.14,$O(^AUTTIMM("C",15,0)),BD,EDATE)
  1. I G,$P(G,U,2)'="N" Q "Refused"
  1. I G Q "No - Not Medically Indicated"
  1. S G=$$REFUSAL^BDMD317(P,9999999.14,$O(^AUTTIMM("C",16,0)),BD,EDATE)
  1. I G,$P(G,U,2)'="N" Q "Refused"
  1. I G Q "No - Not Medically Indicated"
  1. S G=$$REFUSAL^BDMD317(P,9999999.14,$O(^AUTTIMM("C",111,0)),BD,EDATE)
  1. I G,$P(G,U,2)'="N" Q "Refused"
  1. I G Q "No - Not Medically Indicated"
  1. 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
  1. .S R=$P(^BIPC(X,0),U,3)
  1. .Q:R=""
  1. .Q:'$D(^BICONT(R,0))
  1. .Q:$P(^BICONT(R,0),U,1)'["Refusal"
  1. .S D=$P(^BIPC(X,0),U,4)
  1. .Q:D=""
  1. .Q:$P(^BIPC(X,0),U,4)<BD
  1. .Q:$P(^BIPC(X,0),U,4)>ED
  1. .S G=1
  1. I G Q "Refused"
  1. Q "No"
  1. PNEU(P,EDATE) ;EP
  1. NEW BDM,X,E,B,%DT,Y,TPN,D,LPN,G,C,Z,T
  1. K TPN
  1. S %DT="P",X=EDATE D ^%DT S E=Y ;set E = ending date in fm format
  1. S B=$$DOB^AUPNPAT(P) ;b is DOB
  1. I '$$BI D LASTPNO ;pre v7
  1. I $$BI D LASTPNN ;get td from v imm
  1. S LPN=$O(TPN(0))
  1. I LPN]"" S LPN=9999999-LPN
  1. ;now check cpt codes
  1. S T=$O(^ATXAX("B","DM AUDIT PNEUMO CPTS",0))
  1. K C I T S C=$$CPT^BDMD312(P,B,E,T,3) D
  1. .I C="" Q
  1. .Q:LPN>$P(C,U)
  1. .S LPN=$P(C,U)
  1. I LPN]"" Q "Yes - "_$$FMTE^XLFDT(LPN)
  1. S G=$$REFUSAL^BDMD317(P,9999999.14,$O(^AUTTIMM("C",$S($$BI:33,1:19),0)),$$DOB^AUPNPAT(P,"E"),EDATE)
  1. I G,$P(G,U,2)'="N" Q "Refused"
  1. I G Q "No - Not Medically Indicated"
  1. I '$$BI Q "No"
  1. S G=$$REFUSAL^BDMD317(P,9999999.14,$O(^AUTTIMM("C",100,0)),$$DOB^AUPNPAT(P,"E"),EDATE)
  1. I G,$P(G,U,2)'="N" Q "Refused"
  1. I G Q "No - Not Medically Indicated"
  1. S G=$$REFUSAL^BDMD317(P,9999999.14,$O(^AUTTIMM("C",109,0)),$$DOB^AUPNPAT(P,"E"),EDATE)
  1. I G,$P(G,U,2)'="N" Q "Refused"
  1. I G Q "No - Not Medically Indicated"
  1. S X=EDATE,%DT="P" D ^%DT S E=Y
  1. 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
  1. .S R=$P(^BIPC(X,0),U,3)
  1. .Q:R=""
  1. .Q:'$D(^BICONT(R,0))
  1. .Q:$P(^BICONT(R,0),U,1)'["Refusal"
  1. .S D=$P(^BIPC(X,0),U,4)
  1. .Q:D=""
  1. .Q:$P(^BIPC(X,0),U,4)>ED
  1. .S G=1
  1. I G Q "Refused"
  1. Q "No"
  1. LASTFLUN ;
  1. S X=0 F S X=$O(^AUPNVIMM("AC",P,X)) Q:X'=+X D
  1. .S Y=$P(^AUPNVIMM(X,0),U) Q:'Y
  1. .S Y=$P(^AUTTIMM(Y,0),U,3)
  1. .S D=$P(^AUPNVIMM(X,0),U,3) Q:'D
  1. .S D=$P($P($G(^AUPNVSIT(D,0)),U),".")
  1. .I D<B Q ;too early
  1. .I D>E Q ;after time frame
  1. .I Y=88 S TFLU(9999999-D)="" Q
  1. .I Y=15 S TFLU(9999999-D)="" Q
  1. .I Y=16 S TFLU(9999999-D)="" Q
  1. .I Y=111 S TFLU(9999999-D)="" Q
  1. Q
  1. LASTFLUO ;
  1. S X=0 F S X=$O(^AUPNVIMM("AC",P,X)) Q:X'=+X D
  1. .S Y=$P(^AUPNVIMM(X,0),U) Q:'Y
  1. .S Y=$P(^AUTTIMM(Y,0),U,3)
  1. .S D=$P(^AUPNVIMM(X,0),U,3) Q:'D
  1. .S D=$P($P($G(^AUPNVSIT(D,0)),U),".")
  1. .I D<B Q ;too early
  1. .I D>E Q ;after time frame
  1. .I Y=12 S TFLU(9999999-D)="" Q
  1. Q
  1. LASTPNN ;
  1. S X=0 F S X=$O(^AUPNVIMM("AC",P,X)) Q:X'=+X D
  1. .S Y=$P(^AUPNVIMM(X,0),U) Q:'Y
  1. .S Y=$P(^AUTTIMM(Y,0),U,3)
  1. .S D=$P(^AUPNVIMM(X,0),U,3) Q:'D
  1. .S D=$P($P($G(^AUPNVSIT(D,0)),U),".")
  1. .I D<B Q ;too early
  1. .I D>E Q ;after time frame
  1. .I Y=33 S TPN(9999999-D)="" Q
  1. .I Y=100 S TPN(9999999-D)="" Q
  1. .I Y=109 S TPN(9999999-D)="" Q
  1. Q
  1. LASTPNO ;
  1. S X=0 F S X=$O(^AUPNVIMM("AC",P,X)) Q:X'=+X D
  1. .S Y=$P(^AUPNVIMM(X,0),U) Q:'Y
  1. .S Y=$P(^AUTTIMM(Y,0),U,3)
  1. .S D=$P(^AUPNVIMM(X,0),U,3) Q:'D
  1. .S D=$P($P($G(^AUPNVSIT(D,0)),U),".")
  1. .I D<B Q ;too early
  1. .I D>E Q ;after time frame
  1. .I Y=19 S TPN(9999999-D)="" Q
  1. Q
  1. BI() ;
  1. Q $S($O(^AUTTIMM(0))>100:1,1:0)
  1. BPS(P,BDATE,EDATE,F) ;EP ;
  1. I $G(F)="" S F="E"
  1. NEW X,BDM,E,BDML,BDMLL,BDMV
  1. S BDMLL=0,BDMV=""
  1. K BDM
  1. S X=P_"^LAST 50 MEAS BP;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"BDM(")
  1. S BDML=0 F S BDML=$O(BDM(BDML)) Q:BDML'=+BDML!(BDMLL=3) S BDMBP=$P($G(BDM(BDML)),U,2) D
  1. .Q:$$CLINIC^APCLV($P(BDM(BDML),U,5),"C")=30
  1. .S BDMLL=BDMLL+1
  1. .I F="E" S $P(BDMV,";",BDMLL)=BDMBP_" "_$$FMTE^XLFDT($P(BDM(BDML),U))
  1. .I F="I" S $P(BDMV,";",BDMLL)=$P(BDMBP," ")
  1. Q BDMV
  1. HTNDX(P,EDATE) ;EP - is HTN on problem list
  1. I '$G(P) Q ""
  1. I '$D(^DPT(P)) Q ""
  1. NEW %,BDM,E
  1. K BDM
  1. S %=P_"^PROBLEM [DM AUDIT PROBLEM HTN DIAGNOSES" S E=$$START1^APCLDF(%,"BDM(")
  1. I $D(BDM(1)) Q "Yes"
  1. K BDM
  1. 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"
  1. Q "No"
  1. LASTHT(P,EDATE,F) ;PEP - return last ht and date
  1. I 'P Q ""
  1. I $G(F)="" S F="E"
  1. I '$D(^AUPNVSIT("AC",P)) Q ""
  1. NEW %,BDMARRY,H,E,W
  1. S %=P_"^LAST MEAS HT;DURING "_$$FMTE^XLFDT($$DOB^AUPNPAT(P))_"-"_EDATE NEW X S E=$$START1^APCLDF(%,"BDMARRY(") S H=$P($G(BDMARRY(1)),U,2)
  1. I H="" Q H
  1. S H=$J(H,4,1)
  1. I F="I" Q H
  1. Q H_" inches "_$$FMTE^XLFDT($P(BDMARRY(1),U))
  1. LASTWT(P,EDATE,F) ;PEP - return last wt
  1. I 'P Q ""
  1. I $G(F)="" S F="E"
  1. NEW %,BDMARRY,E,BDMW,X,BDMN,BDM,BDMD,BDMZ,BDMX,W,H
  1. NEW BDMV221 S BDMV221=$O(^ICD9("BA","V22.1 ",""))
  1. K BDM S BDMW="" S BDMX=P_"^LAST 24 MEAS WT;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_EDATE S E=$$START1^APCLDF(BDMX,"BDM(")
  1. S BDMN=0 F S BDMN=$O(BDM(BDMN)) Q:BDMN'=+BDMN!(BDMW]"") D
  1. . S BDMZ=$P(BDM(BDMN),U,5)
  1. . I '$D(^AUPNVPOV("AD",BDMZ)) S BDMW=$P(BDM(BDMN),U,2)_" lbs "_$$FMTE^XLFDT($P(BDM(BDMN),U)) Q
  1. . S BDMD=0 F S BDMD=$O(^AUPNVPOV("AD",BDMZ,BDMD)) Q:'BDMD!(BDMW]"") D
  1. .. I $P(^AUPNVPOV(BDMD,0),U)'=BDMV221 S BDMW=$P(BDM(BDMN),U,2)_" lbs "_$$FMTE^XLFDT($P(BDM(BDMN),U))
  1. ..Q
  1. Q $S(F="E":BDMW,1:+BDMW)
  1. CMSFDX(P,R,T) ;EP - return date/dx of dm in register
  1. I '$G(P) Q ""
  1. I '$G(R) Q ""
  1. I $G(T)="" Q ""
  1. NEW D1,Y,X,D,G S (G,X)=0,(D,Y)="" F S X=$O(^ACM(44,"C",P,X)) Q:X'=+X!(G) I $P(^ACM(44,X,0),U,4)=R D
  1. .S D=$P($G(^ACM(44,X,"SV")),U,2),D1=D,D=$$FMTE^XLFDT(D)
  1. .S Y=$$VAL^XBDIQ1(9002244,X,.01)
  1. Q $S(T="D":$G(D),T="DX":$G(Y),T="ID":$G(D1),1:"")
  1. ;
  1. PLDMDOO(P,F) ;EP
  1. I '$G(P) Q ""
  1. I $G(F)="" S F="E"
  1. NEW T S T=$O(^ATXAX("B","SURVEILLANCE DIABETES",0))
  1. I 'T Q ""
  1. NEW D,X,I S D="",X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
  1. .S I=$P(^AUPNPROB(X,0),U)
  1. .I $$ICD^ATXCHK(I,T,9) D
  1. ..I $P(^AUPNPROB(X,0),U,13)]"" S D($P(^AUPNPROB(X,0),U,13))=""
  1. ..Q
  1. .Q
  1. S D=$O(D(0)) Q $S(F="E":$$FMTE^XLFDT(D),1:$O(D(0)))
  1. PLDMDXS(P) ;EP - get all DM dxs from problem list
  1. I '$G(P) Q ""
  1. NEW T S T=$O(^ATXAX("B","SURVEILLANCE DIABETES",0))
  1. I 'T Q "<diabetes taxonomy missing>"
  1. NEW D,X,I S D="",X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
  1. .S I=$P(^AUPNPROB(X,0),U)
  1. .;I $$ICD^ATXCHK(I,T,9) S:D]"" D=D_";" S D=D_$P(^ICD9(I,0),U) ;cmi/anch/maw 9/10/2007 orig line
  1. .I $$ICD^ATXCHK(I,T,9) S:D]"" D=D_";" S D=D_$P($$ICDDX^ICDCODE(I),U,2) ;cmi/anch/maw 9/10/2007 csv
  1. .Q
  1. Q D
  1. ;
  1. FRSTDMDX(P,F) ;EP return date of first dm dx
  1. I '$G(P) Q ""
  1. I $G(F)="" S F="E"
  1. NEW X,E,BDM,Y
  1. S Y="BDM("
  1. S X=P_"^FIRST DX [SURVEILLANCE DIABETES" S E=$$START1^APCLDF(X,Y) S Y=$P($G(BDM(1)),U)
  1. Q $S(F="E":$$FMTE^XLFDT(Y),1:Y)
  1. LASTDMDX(P,D) ;EP - last pcc dm dx
  1. I '$G(P) Q ""
  1. NEW X,E,BDM,Y
  1. S Y="BDM("
  1. S X=P_"^LAST DX [DM AUDIT TYPE II DXS;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_D S E=$$START1^APCLDF(X,Y)
  1. I $D(BDM(1)) Q "Type 2"
  1. K BDM S X=P_"^LAST DX [DM AUDIT TYPE I DXS;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_D S E=$$START1^APCLDF(X,Y)
  1. I $D(BDM(1)) Q "Type 1"
  1. Q ""
  1. ;