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

APCLP613.m

Go to the documentation of this file.
  1. APCLP613 ; IHS/CMI/LAB - 2003 DIABETES AUDIT ;
  1. ;;2.0;IHS PCC SUITE;;MAY 14, 2009
  1. ;LORI - ADD V04,81
  1. ;
  1. ;cmi/anch/maw 9/12/2007 code set versioning in PLDMDXS,IFG,IGT,MS,ABNG
  1. ;
  1. BPS(P,BDATE,EDATE,F) ;EP ;
  1. I $G(F)="" S F="E"
  1. NEW X,APCL,E,APCLL,APCLLL,APCLV
  1. S APCLLL=0,APCLV=""
  1. K APCL
  1. S X=P_"^LAST 50 MEAS BP;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(X,"APCL(")
  1. S APCLL=0 F S APCLL=$O(APCL(APCLL)) Q:APCLL'=+APCLL!(APCLLL=3) S APCLBP=$P($G(APCL(APCLL)),U,2) D
  1. .Q:$$CLINIC^APCLV($P(APCL(APCLL),U,5),"C")=30
  1. .S APCLLL=APCLLL+1
  1. .I F="E" S $P(APCLV,";",APCLLL)=APCLBP_" "_$$FMTE^XLFDT($P(APCL(APCLL),U))
  1. .I F="I" S $P(APCLV,";",APCLLL)=$P(APCLBP," ")
  1. Q APCLV
  1. HTNDX(P,EDATE) ;EP - is HTN on problem list
  1. I '$G(P) Q ""
  1. I '$D(^DPT(P)) Q ""
  1. NEW %,APCL,E
  1. K APCL
  1. S %=P_"^PROBLEM [DM AUDIT PROBLEM HTN DIAGNOSES" S E=$$START1^APCLDF(%,"APCL(")
  1. I $D(APCL(1)) Q "Yes"
  1. K APCL
  1. S X=P_"^LAST 3 DX [SURVEILLANCE HYPERTENSION;DURING "_$$FMTE^XLFDT($$DOB^AUPNPAT(P))_"-"_EDATE S E=$$START1^APCLDF(X,"APCL(") I $D(APCL(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 %,APCLARRY,H,E,W
  1. S %=P_"^LAST MEAS HT;DURING "_$$FMTE^XLFDT($$DOB^AUPNPAT(P))_"-"_EDATE NEW X S E=$$START1^APCLDF(%,"APCLARRY(") S H=$P($G(APCLARRY(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(APCLARRY(1),U))
  1. LASTWC(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. S BDATE=$$FMADD^XLFDT(EDATE,-365)
  1. NEW %,APCLARRY,H,E,W
  1. S %=P_"^LAST MEAS WC;DURING "_BDATE_"-"_EDATE NEW X S E=$$START1^APCLDF(%,"APCLARRY(") S H=$P($G(APCLARRY(1)),U,2)
  1. Q H_" "_$$FMTE^XLFDT($P($G(APCLARRY(1)),U))
  1. LASTWT(P,EDATE,F) ;PEP - return last wt
  1. I 'P Q ""
  1. I $G(F)="" S F="E"
  1. S BDATE=$$FMADD^XLFDT(EDATE,-365)
  1. NEW %,APCLARRY,E,APCLW,X,APCLN,APCL,APCLD,APCLZ,APCLX,W,H,APCLC
  1. NEW APCLV221 S APCLV221=$O(^ICD9("BA","V22.1 ",""))
  1. K APCL S APCLW="" S APCLX=P_"^LAST 30 MEAS WT;DURING "_BDATE_"-"_EDATE S E=$$START1^APCLDF(APCLX,"APCL(")
  1. S APCLC=0,APCLN=0 F S APCLN=$O(APCL(APCLN)) Q:APCLN'=+APCLN!(APCLC>2) D
  1. . S APCLZ=$P(APCL(APCLN),U,5)
  1. . I '$D(^AUPNVPOV("AD",APCLZ)) S APCLC=APCLC+1,APCLW=APCLW_"|"_$P(APCL(APCLN),U,2)_" lbs "_$$FMTE^XLFDT($P(APCL(APCLN),U)) Q
  1. . S APCLD=0 F S APCLD=$O(^AUPNVPOV("AD",APCLZ,APCLD)) Q:'APCLD!(APCLW]"") D
  1. .. I $P(^AUPNVPOV(APCLD,0),U)'=APCLV221 S APCLC=APCLC+1,APCLW=APCLW_"|"_$P(APCL(APCLN),U,2)_" lbs "_$$FMTE^XLFDT($P(APCL(APCLN),U))
  1. ..Q
  1. Q $S(F="E":APCLW,1:+APCLW)
  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/12/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/12/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,APCL,Y
  1. S Y="APCL("
  1. S X=P_"^FIRST DX [SURVEILLANCE DIABETES" S E=$$START1^APCLDF(X,Y) S Y=$P($G(APCL(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,APCL,Y
  1. S Y="APCL("
  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(APCL(1)) Q "Type 2"
  1. K APCL 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(APCL(1)) Q "Type 1"
  1. Q ""
  1. ;
  1. IFG(P,APCLRET) ;EP
  1. K APCLRET
  1. NEW APCLC,APCL
  1. S APCLC=0
  1. K APCL
  1. ;look at problem list then povs
  1. ;return where found^dx code^provider narr^date (either visit date or doo from pl)
  1. ;look for first and last pov
  1. S X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
  1. .S I=$P(^AUPNPROB(X,0),U)
  1. .;S I=$P($G(^ICD9(I,0)),U) ;cmi/anch/maw 9/12/2007 orig line
  1. .S I=$P($$ICDDX^ICDCODE(I),U,2) ;cmi/anch/maw 9/12/2007 csv
  1. .Q:I'="790.21"
  1. .S APCLC=APCLC+1,APCLRET(APCLC)="Problem List: "_I_" Date of Onset: "_$$VAL^XBDIQ1(9000011,X,.13)
  1. .Q
  1. ;now look at first and last pov
  1. S Y="APCL("
  1. S X=P_"^LAST DX 790.21;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_DT S E=$$START1^APCLDF(X,Y)
  1. I $D(APCL(1)) S APCLC=APCLC+1,APCLRET(APCLC)="Last POV in PCC: "_$P(APCL(1),U,2)_" Date: "_$$FMTE^XLFDT($P(APCL(1),U))
  1. K APCL S X=P_"^FIRST DX 790.21;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_DT S E=$$START1^APCLDF(X,Y)
  1. I $D(APCL(1)) S APCLC=APCLC+1,APCLRET(APCLC)="First POV in PCC: "_$P(APCL(1),U,2)_" Date: "_$$FMTE^XLFDT($P(APCL(1),U))
  1. Q
  1. IGT(P,APCLRET) ;EP
  1. K APCLRET
  1. NEW APCLC,APCL
  1. S APCLC=0
  1. K APCL
  1. ;look at problem list then povs
  1. ;return where found^dx code^provider narr^date (either visit date or doo from pl)
  1. ;look for first and last pov
  1. S X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
  1. .S I=$P(^AUPNPROB(X,0),U)
  1. .;S I=$P($G(^ICD9(I,0)),U) ;cmi/anch/maw 9/12/2007 orig line
  1. .S I=$P($$ICDDX^ICDCODE(I),U,2) ;cmi/anch/maw 9/12/2007 csv
  1. .Q:I'="790.22"
  1. .S APCLC=APCLC+1,APCLRET(APCLC)="Problem List: "_I_" Date of Onset: "_$$VAL^XBDIQ1(9000011,X,.13)
  1. .Q
  1. ;now look at first and last pov
  1. S Y="APCL("
  1. S X=P_"^LAST DX 790.22;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_DT S E=$$START1^APCLDF(X,Y)
  1. I $D(APCL(1)) S APCLC=APCLC+1,APCLRET(APCLC)="Last POV in PCC: "_$P(APCL(1),U,2)_" Date: "_$$FMTE^XLFDT($P(APCL(1),U))
  1. K APCL S X=P_"^FIRST DX 790.22;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_DT S E=$$START1^APCLDF(X,Y)
  1. I $D(APCL(1)) S APCLC=APCLC+1,APCLRET(APCLC)="First POV in PCC: "_$P(APCL(1),U,2)_" Date: "_$$FMTE^XLFDT($P(APCL(1),U))
  1. Q
  1. MS(P,APCLRET) ;EP
  1. K APCLRET
  1. NEW APCLC,APCL
  1. S APCLC=0
  1. K APCL
  1. ;look at problem list then povs
  1. ;return where found^dx code^provider narr^date (either visit date or doo from pl)
  1. ;look for first and last pov
  1. S X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
  1. .S I=$P(^AUPNPROB(X,0),U)
  1. .;S I=$P($G(^ICD9(I,0)),U) ;cmi/anch/maw 9/12/2007 orig line
  1. .S I=$P($$ICDDX^ICDCODE(I),U,2) ;cmi/anch/maw 9/12/2007 csv
  1. .Q:I'="277.7"
  1. .S APCLC=APCLC+1,APCLRET(APCLC)="Problem List: "_I_" Date of Onset: "_$$VAL^XBDIQ1(9000011,X,.13)
  1. .Q
  1. ;now look at first and last pov
  1. S Y="APCL("
  1. S X=P_"^LAST DX 277.7;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_DT S E=$$START1^APCLDF(X,Y)
  1. I $D(APCL(1)) S APCLC=APCLC+1,APCLRET(APCLC)="Last POV in PCC: "_$P(APCL(1),U,2)_" Date: "_$$FMTE^XLFDT($P(APCL(1),U))
  1. K APCL S X=P_"^FIRST DX 277.7;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_DT S E=$$START1^APCLDF(X,Y)
  1. I $D(APCL(1)) S APCLC=APCLC+1,APCLRET(APCLC)="First POV in PCC: "_$P(APCL(1),U,2)_" Date: "_$$FMTE^XLFDT($P(APCL(1),U))
  1. Q
  1. ABNG(P,APCLRET) ;EP
  1. K APCLRET
  1. NEW APCLC
  1. S APCLC=0
  1. ;look at problem list then povs
  1. ;return where found^dx code^provider narr^date (either visit date or doo from pl)
  1. ;look for first and last pov
  1. S X=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X D
  1. .S I=$P(^AUPNPROB(X,0),U)
  1. .;S I=$P($G(^ICD9(I,0)),U) ;cmi/anch/maw 9/12/2007 orig line
  1. .S I=$P($$ICDDX^ICDCODE(I),U,2) ;cmi/anch/maw 9/12/2007 csv
  1. .Q:I'="790.29"
  1. .S APCLC=APCLC+1,APCLRET(APCLC)="Problem List: "_I_" Date of Onset: "_$$VAL^XBDIQ1(9000011,X,.13)
  1. .Q
  1. ;now look at first and last pov
  1. S Y="APCL("
  1. S X=P_"^LAST DX 790.29;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_DT S E=$$START1^APCLDF(X,Y)
  1. I $D(APCL(1)) S APCLC=APCLC+1,APCLRET(APCLC)="Last POV in PCC: "_$P(APCL(1),U,2)_" Date: "_$$FMTE^XLFDT($P(APCL(1),U))
  1. K APCL S X=P_"^FIRST DX 790.29;DURING "_$$DOB^AUPNPAT(P,"E")_"-"_DT S E=$$START1^APCLDF(X,Y)
  1. I $D(APCL(1)) S APCLC=APCLC+1,APCLRET(APCLC)="First POV in PCC: "_$P(APCL(1),U,2)_" Date: "_$$FMTE^XLFDT($P(APCL(1),U))
  1. Q