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

APCHS9B2.m

Go to the documentation of this file.
  1. APCHS9B2 ; IHS/CMI/LAB - DIABETIC CARE SUMMARY SUPPLEMENT ;
  1. ;;2.0;IHS PCC SUITE;**7**;MAY 14, 2009
  1. ;IHS/CMI/LAB patch 3 - patch 3 fixes various problems
  1. ;
  1. ;
  1. ;1/13/98 IHS/CMI/LAB patch 3 - added Q APCHX to TD+3 and FLU+3
  1. MORE ;EP
  1. S APCHSBEG=$$FMADD^XLFDT(DT,-365)
  1. S X="SMBG: "_$$SELF^APCHS9B3(APCHSDFN,APCHSBEG) D S(X,1)
  1. S X="DM Education Provided (in past yr): " D S(X)
  1. S X=" Last Dietitian Visit: "_$$DIETV^APCHS9B3(APCHSDFN) D S(X)
  1. K APCHX D EDUC I $D(APCHX) D
  1. .S %=0 F S %=$O(APCHX(%)) Q:%'=+% S X=" "_APCHX(%) D S(X)
  1. K APCHX,APCHY,%
  1. D EDUCREF^APCHS9B3 I $D(APCHX) S X="In the past year, the patient has declined the following Diabetes education:" D S(X,1) D
  1. .S %="" F S %=$O(APCHX(%)) Q:%="" S X=" "_%_" "_APCHX(%) D S(X)
  1. K APCHX,APCHY,%
  1. S X="Immunizations:" D S(X,1)
  1. S X="Flu vaccine since August 1st:",$E(X,32)=$$FLU^APCHS9B3(APCHSDFN) D S(X)
  1. S X="Pneumovax ever:",$E(X,32)=$$PNEU^APCHS9B5(APCHSDFN) D S(X)
  1. S X="Td in past 10 yrs:",$E(X,32)=$$TD^APCHS9B3(APCHSDFN,(DT-100000)) D S(X)
  1. S Y=$$PPDS^APCHS9B5(APCHSDFN) I Y]"" S X="PPD Status: "_Y D S(X)
  1. I Y="" S X="Last Documented PPD:",$E(X,27)=$$PPD^APCHS9B5(APCHSDFN) D S(X)
  1. S X="Last TB Status Health Factor: "_$$TB(APCHSDFN) S $E(X,50)="Last CHEST X-RAY: "_$$CHEST^APCHS9B6(APCHSDFN) D S(X)
  1. S APCHEKG=$$EKG^APCHS9B7(APCHSDFN),X="EKG:",$E(X,32)=$P(APCHEKG,U,1) S:$P(APCHEKG,U,2)]"" $E(X,54)=$P(APCHEKG,U,2) D S(X)
  1. L ;
  1. S X="Laboratory Results (most recent):" D S(X,1)
  1. S X="HbA1c:" S Y=$$HBA1C(APCHSDFN),$E(X,27)=$P(Y,"|||"),$E(X,42)=$P(Y,"|||",2),$E(X,56)=$P(Y,"|||",3) D S(X)
  1. S X="Next most recent HbA1c:" S Y=$$NLHGB(APCHSDFN),$E(X,27)=$P(Y,"|||"),$E(X,42)=$P(Y,"|||",2),$E(X,56)=$P(Y,"|||",3) D S(X)
  1. S X="Nephropathy Assessment" D S(X)
  1. S X=" Urine Protein:" S Y=$$URIN(APCHSDFN),$E(X,27)=$P(Y,"|||"),$E(X,42)=$P(Y,"|||",2),$E(X,56)=$P(Y,"|||",3) D S(X)
  1. S X=" Microalbuminuria:" S Y=$$MICRO(APCHSDFN),$E(X,27)=$P(Y,"|||"),$E(X,42)=$P(Y,"|||",2),$E(X,56)=$P(Y,"|||",3) D S(X)
  1. S X=" A/C Ratio:" S Y=$$ACRATIO(APCHSDFN),$E(X,27)=$P(Y,"|||"),$E(X,42)=$P(Y,"|||",2),$E(X,56)=$P(Y,"|||",3) D S(X)
  1. S X=" Creatinine:" S Y=$$CREAT(APCHSDFN),$E(X,27)=$P(Y,"|||"),$E(X,42)=$P(Y,"|||",2),$E(X,56)=$P(Y,"|||",3) D S(X)
  1. S X=" Estimated GFR:" S Y=$$GFR(APCHSDFN),$E(X,27)=$P(Y,"|||"),$E(X,42)=$P(Y,"|||",2),$E(X,56)=$P(Y,"|||",3) D S(X)
  1. S X="Total Cholesterol:" S Y=$$TCHOL(APCHSDFN),$E(X,27)=$P(Y,"|||"),$E(X,42)=$P(Y,"|||",2),$E(X,56)=$P(Y,"|||",3) D S(X)
  1. S X=" LDL Cholesterol:" S Y=$$CHOL(APCHSDFN),$E(X,27)=$P(Y,"|||"),$E(X,42)=$P(Y,"|||",2),$E(X,56)=$P(Y,"|||",3) D S(X)
  1. S V=$P(Y,"|||") I V'=+V D
  1. .;get last 3 and display next most recent 2
  1. .S APCHIEN=$P(Y,"|||",4)
  1. .S T=$O(^ATXLAB("B","DM AUDIT LDL CHOLESTEROL TAX",0)) D LDLLAB
  1. .I $D(APCHX) S X=" Next most recent LDL values:" D S(X)
  1. .S APCHY=0 F S APCHY=$O(APCHX(APCHY)) Q:APCHY'=+APCHY S X="",$E(X,27)=$P(APCHX(APCHY),U),$E(X,42)=$$FMTE^XLFDT($P(APCHX(APCHY),U,2)) D S(X)
  1. S X=" HDL Cholesterol:" S Y=$$HDL(APCHSDFN),$E(X,27)=$P(Y,"|||"),$E(X,42)=$P(Y,"|||",2),$E(X,56)=$P(Y,"|||",3) D S(X)
  1. S X=" Triglycerides:" S Y=$$TRIG(APCHSDFN),$E(X,27)=$P(Y,"|||"),$E(X,42)=$P(Y,"|||",2),$E(X,56)=$P(Y,"|||",3) D S(X)
  1. Q
  1. S(Y,F,C,T) ;set up array
  1. I '$G(F) S F=0
  1. I '$G(T) S T=0
  1. NEW %,X
  1. ;blank lines
  1. F F=1:1:F S X="" D S1
  1. S X=Y
  1. I $G(C) S L=$L(Y),T=(80-L)/2 D D S1 Q
  1. .F %=1:1:(T-1) S X=" "_X
  1. F %=1:1:T S X=" "_Y
  1. D S1
  1. Q
  1. S1 ;
  1. S %=$P(^TMP("APCHS",$J,"DCS",0),U)+1,$P(^TMP("APCHS",$J,"DCS",0),U)=%
  1. S ^TMP("APCHS",$J,"DCS",%)=X
  1. Q
  1. EDUC ;EP - gather up all education provided in past year in APCHX
  1. K APCHX,APCHY S %=APCHSDFN_"^ALL EDUC;DURING "_$$FMTE^XLFDT(APCHSBEG)_"-"_$$FMTE^XLFDT(DT) S E=$$START1^APCLDF(%,"APCHY(") ;IHS/CMI/LAB patch 3 1/13/98 added $$FMTE^XLFDT to _DT replaced " - " with "-"
  1. I '$D(APCHY) S APCHX(1)=" <No Education Topics recorded in past year>" K APCHY Q
  1. NEW X,APCHP K APCHP S X=0,E="" F S X=$O(APCHY(X)) Q:X'=+X S E=+$P(APCHY(X),U,4) I $P(^AUPNVPED(E,0),U,6)'=5 S E=$P(^AUPNVPED(E,0),U) I $$EDT(E) S APCHP($P(APCHY(X),U,2))=$$FMTE^XLFDT($P(APCHY(X),U))
  1. S %=0,E="" F S E=$O(APCHP(E)) Q:E="" S %=%+1,APCHX(%)=$E(E,1,24),$E(APCHX(%),27)=APCHP(E)
  1. K APCHY,APCHP
  1. Q
  1. EDT(E) ;
  1. ;is this ien in any taxonomy
  1. NEW T
  1. S T=$O(^ATXAX("B","DM AUDIT DIABETES EDUC TOPICS",0))
  1. I T,$D(^ATXAX(T,21,"B",E)) Q 1
  1. S T=$O(^ATXAX("B","DM AUDIT DIET EDUC TOPICS",0))
  1. I T,$D(^ATXAX(T,21,"B",E)) Q 1
  1. S T=$O(^ATXAX("B","DM AUDIT EXERCISE EDUC TOPICS",0))
  1. I T,$D(^ATXAX(T,21,"B",E)) Q 1
  1. S T=$O(^ATXAX("B","DM AUDIT OTHER EDUC TOPICS",0))
  1. I T,$D(^ATXAX(T,21,"B",E)) Q 1
  1. S T=$P(^AUTTEDT(E,0),U,2)
  1. I $P(T,"-")="DM" Q 1
  1. I $P(T,"-")="DMC" Q 1
  1. Q ""
  1. TB(P) ;
  1. I '$G(P) Q ""
  1. NEW APCHS,E,X
  1. K APCHS
  1. S X=P_"^LAST HEALTH [DM AUDIT TB HEALTH FACTORS" S E=$$START1^APCLDF(X,"APCHS(")
  1. I $D(APCHS(1)) Q $P($G(APCHS(1)),U,3)
  1. NEW %,Y
  1. S %=$O(^ATXAX("B","DM AUDIT TB HEALTH FACTORS",0))
  1. I '% Q ""
  1. S (X,Y)=0 F S X=$O(^AUPNHF("AA",P,X)) Q:X'=+X!(Y) I $D(^ATXAX(%,21,"B",X)) S Y=X
  1. I 'Y Q ""
  1. Q $P(^AUTTHF(Y,0),U)
  1. GFR(P) ;
  1. I '$G(P) Q ""
  1. S APCHC=""
  1. NEW T,T1,T2
  1. S T=$O(^LAB(60,"B","ESTIMATED GFR",0))
  1. S T1=$O(^ATXLAB("B","BGP GPRA ESTIMATED GFR TAX",0))
  1. S T2=$O(^ATXAX("B","BGP ESTIMATED GFR LOINC",0))
  1. NEW D,V,G,X,J S (D,G)=0 F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!(APCHC]"") D
  1. .S X=0 F S X=$O(^AUPNVLAB("AE",P,D,X)) Q:X'=+X!(APCHC]"") D
  1. ..S Y=0 F S Y=$O(^AUPNVLAB("AE",P,D,X,Y)) Q:Y'=+Y D
  1. ...Q:'$D(^AUPNVLAB(Y,0))
  1. ...I T,$P(^AUPNVLAB(Y,0),U)=T D
  1. ....I APCHC]"",$P(^AUPNVLAB(Y,0),U,4)="" Q
  1. ....S APCHC=$P(^AUPNVLAB(Y,0),U,4)_"|||"_$$FMTE^XLFDT($P($P(^AUPNVSIT($P(^AUPNVLAB(Y,0),U,3),0),U),"."))_"|||"_""_"|||"_Y Q
  1. ...I T1,$P(^AUPNVLAB(Y,0),U),$D(^ATXLAB(T1,21,"B",$P(^AUPNVLAB(Y,0),U))) D
  1. ....I APCHC]"",$P(^AUPNVLAB(Y,0),U,4)="" Q
  1. ....S APCHC=$P(^AUPNVLAB(Y,0),U,4)_"|||"_$$FMTE^XLFDT($P($P(^AUPNVSIT($P(^AUPNVLAB(Y,0),U,3),0),U),"."))_"|||"_""_"|||"_Y Q
  1. ...S J=$P($G(^AUPNVLAB(Y,11)),U,13) Q:J=""
  1. ...Q:'$$LOINC(J,T2)
  1. ...S APCHC=$P(^AUPNVLAB(Y,0),U,4)_"|||"_$$FMTE^XLFDT($P($P(^AUPNVSIT($P(^AUPNVLAB(Y,0),U,3),0),U),"."))_"|||"_""_"|||"_Y
  1. ...Q
  1. I APCHC]"" Q APCHC
  1. S T=$O(^ATXLAB("B","BGP GPRA ESTIMATED GFR TAX",0)) I 'T Q ""
  1. Q $$LAB(P,T)
  1. CHOL(P) ;EP
  1. I '$G(P) Q ""
  1. NEW T S T=$O(^ATXLAB("B","DM AUDIT LDL CHOLESTEROL TAX",0)),LT=$O(^ATXAX("B","BGP LDL LOINC CODES",0)) I 'T Q "<Taxonomy Missing>"
  1. Q $$LAB(P,T,LT)
  1. HDL(P) ;EP
  1. I '$G(P) Q ""
  1. NEW T S T=$O(^ATXLAB("B","DM AUDIT HDL TAX",0)),LT=$O(^ATXAX("B","BGP HDL LOINC CODES",0)) I 'T Q "<Taxonomy Missing>"
  1. Q $$LAB(P,T,LT)
  1. TCHOL(P) ;EP
  1. I '$G(P) Q ""
  1. NEW T S T=$O(^ATXLAB("B","DM AUDIT CHOLESTEROL TAX",0)),LT=$O(^ATXAX("B","BGP TOTAL CHOLESTEROL LOINC",0)) I 'T Q "<Taxonomy Missing>"
  1. Q $$LAB(P,T,LT)
  1. TRIG(P) ;EP
  1. I '$G(P) Q ""
  1. NEW T S T=$O(^ATXLAB("B","DM AUDIT TRIGLYCERIDE TAX",0)),LT=$O(^ATXAX("B","BGP TRIGLYCERIDE LOINC CODES",0)) I 'T Q "<Taxonomy Missing>"
  1. Q $$LAB(P,T,LT)
  1. CREAT(P) ;
  1. I '$G(P) Q ""
  1. NEW T S T=$O(^ATXLAB("B","DM AUDIT CREATININE TAX",0)),LT=$O(^ATXAX("B","BGP CREATININE LOINC CODES",0)) I 'T Q "<Taxonomy Missing>"
  1. Q $$LAB(P,T,LT)
  1. ;
  1. LAB(P,T,LT) ;EP
  1. I '$G(LT) S LT=""
  1. NEW D,V,G,X,J S (D,G)=0 F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!(G) D
  1. .S X=0 F S X=$O(^AUPNVLAB("AE",P,D,X)) Q:X'=+X!(G) D
  1. ..S Y=0 F S Y=$O(^AUPNVLAB("AE",P,D,X,Y)) Q:Y'=+Y!(G) D
  1. ...I $D(^ATXLAB(T,21,"B",X)),$P(^AUPNVLAB(Y,0),U,4)]"" S G=Y Q
  1. ...;IHS/CMI/LAB - don't check loinc code for now
  1. ...;IHS/CMI/LAB - yes, check loinc in patch 14
  1. ...;Q
  1. ...Q:'LT
  1. ...S J=$P($G(^AUPNVLAB(Y,11)),U,13) Q:J=""
  1. ...Q:'$$LOINC(J,LT)
  1. ...S G=Y
  1. ...Q
  1. ..Q
  1. .Q
  1. I 'G S R=$$REF(P,T) Q "||||||"_R
  1. Q $P(^AUPNVLAB(G,0),U,4)_"|||"_$$FMTE^XLFDT($P($P($G(^AUPNVSIT($P(^AUPNVLAB(G,0),U,3),0)),U),"."))_"|||"_$$VAL^XBDIQ1(9000010.09,G,.01)_" "_$$REF(P,T,$P($P($G(^AUPNVSIT($P(^AUPNVLAB(G,0),U,3),0)),U),"."))_"|||"_G
  1. LOINC(A,B) ;EP
  1. NEW %
  1. S %=$P($G(^LAB(95.3,A,9999999)),U,2)
  1. I %]"",$D(^ATXAX(B,21,"B",%)) Q 1
  1. S %=$P($G(^LAB(95.3,A,0)),U)_"-"_$P($G(^LAB(95.3,A,0)),U,15)
  1. I $D(^ATXAX(B,21,"B",%)) Q 1
  1. Q ""
  1. LDLLAB ;EP
  1. K APCHX
  1. NEW LT S LT=$O(^ATXAX("B","BGP LDL LOINC CODES",0))
  1. NEW D,V,X,G S (D,G)=0 F S D=$O(^AUPNVLAB("AE",APCHSPAT,D)) Q:D'=+D!(G>2) D
  1. .S X=0 F S X=$O(^AUPNVLAB("AE",APCHSPAT,D,X)) Q:X'=+X!(G>2) D
  1. ..S Y=0 F S Y=$O(^AUPNVLAB("AE",APCHSPAT,D,X,Y)) Q:Y'=+Y!(G>2) D
  1. ...Q:'$D(^AUPNVLAB(Y,0))
  1. ...I $P(^AUPNVLAB(Y,0),U,4)="" Q
  1. ...I Y=APCHIEN Q
  1. ...I $D(^ATXLAB(T,21,"B",X)) D Q
  1. ....S R=$P(^AUPNVLAB(Y,0),U,4) Q:R'=+R
  1. ....S APCHX(Y)=R_"^"_(9999999-D),G=G+1
  1. ...;Q ;IHS/CMI/LAB - don't check loinc codes for now
  1. ...Q:'LT
  1. ...S J=$P($G(^AUPNVLAB(Y,11)),U,13) Q:J=""
  1. ...Q:'$$LOINC(J,LT)
  1. ...S R=$P(^AUPNVLAB(Y,0),U,4) Q:R'=+R
  1. ...S APCHX(Y)=R_"^"_(9999999-D),G=G+1
  1. ...Q
  1. ..Q
  1. .Q
  1. Q
  1. DATE(D) ;EP - convert to slashed date
  1. I $G(D)="" Q ""
  1. Q $E(D,4,5)_"/"_$E(D,6,7)_"/"_$E(D,2,3)
  1. REF(P,T,D) ;return refusal string after date D for test is tax T
  1. I '$G(P) Q ""
  1. I '$G(T) Q ""
  1. I '$G(D) S D=""
  1. N APCHREF,APCHT,V S APCHT=0 F S APCHT=$O(^ATXLAB(T,21,"B",APCHT)) Q:APCHT'=+APCHT D
  1. .S V=$$REF1(P,60,APCHT,D) I V]"" S APCHREF(9999999-$P(V,U,3))=V
  1. I $D(APCHREF) S %=0,%=$O(APCHREF(%)) I % S V=APCHREF(%) Q V
  1. Q ""
  1. REF1(P,F,I,D,T) ; ;
  1. I '$G(P) Q ""
  1. I '$G(F) Q ""
  1. I '$G(I) Q ""
  1. I $G(D)="" S D=""
  1. I $G(T)="" S T="E"
  1. NEW X,N S X=$O(^AUPNPREF("AA",P,F,I,0))
  1. I 'X Q "" ;none of this item was refused
  1. S N=$O(^AUPNPREF("AA",P,F,I,X,0))
  1. NEW Y S Y=9999999-X
  1. I D]"",Y>D Q $S(T="I":Y,1:$$TYPEREF(N)_"-"_$$DATE(Y))
  1. I T="I" Q Y ;quit on internal form of date
  1. Q $$TYPEREF(N)_"-"_$$DATE(Y)
  1. ;
  1. TYPEREF(N) ;
  1. NEW % S %=$P(^AUPNPREF(N,0),U,7)
  1. I %="R"!(%="") Q "Declined"
  1. I %="N" Q "Not Med Ind"
  1. I %="F" Q "No Resp to F/U"
  1. Q ""
  1. NLHGB(P) ;return next to last HGBA1C
  1. I '$G(P) Q ""
  1. NEW T S T=$O(^ATXLAB("B","DM AUDIT HGB A1C TAX",0)) I 'T Q "<Taxonomy Missing>"
  1. NEW LT S LT=$O(^ATXAX("B","BGP HGBA1C LOINC CODES",0))
  1. NEW D,V,G,X,E S (D,G)=0,E="" F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!(G=2) D
  1. .S X=0 F S X=$O(^AUPNVLAB("AE",P,D,X)) Q:X'=+X!(G=2) D
  1. ..S Y=0 F S Y=$O(^AUPNVLAB("AE",P,D,X,Y)) Q:Y'=+Y!(G=2) D
  1. ...I $D(^ATXLAB(T,21,"B",X)),$P(^AUPNVLAB(Y,0),U,4)]"" S G=G+1,E=Y Q
  1. ...;Q ;IHS/CMI/LAB - DON'T CHECK LOINC CODES FOR NOW
  1. ...Q:'LT
  1. ...S J=$P($G(^AUPNVLAB(Y,11)),U,13) Q:J=""
  1. ...Q:'$$LOINC(J,LT)
  1. ...S G=G+1,E=Y
  1. ...Q
  1. ..Q
  1. .Q
  1. I G'=2 Q ""
  1. I 'E Q ""
  1. Q $P(^AUPNVLAB(E,0),U,4)_"|||"_$$FMTE^XLFDT($P($P(^AUPNVSIT($P(^AUPNVLAB(E,0),U,3),0),U),"."))
  1. HBA1C(P) ;
  1. I '$G(P) Q ""
  1. NEW T S T=$O(^ATXLAB("B","DM AUDIT HGB A1C TAX",0)),LT=$O(^ATXAX("B","BGP HGBA1C LOINC CODES",0)) I 'T Q "<Taxonomy Missing>"
  1. Q $$LAB(P,T,LT)
  1. URIN(P) ;
  1. I '$G(P) Q ""
  1. NEW T S T=$O(^ATXLAB("B","DM AUDIT URINE PROTEIN TAX",0)),LT=$O(^ATXAX("B","DM AUDIT URINE PROTEIN LOINC",0)) I 'T Q "<Taxonomy Missing>"
  1. Q $$LAB(P,T,LT)
  1. MICRO(P) ;
  1. I '$G(P) Q ""
  1. NEW T S T=$O(^ATXLAB("B","DM AUDIT MICROALBUMINURIA TAX",0)),LT=$O(^ATXAX("B","DM AUDIT MICROALBUMIN LOINC",0)) I 'T Q "<Taxonomy Missing>"
  1. Q $$LAB(P,T,LT)
  1. ACRATIO(P) ;
  1. I '$G(P) Q ""
  1. NEW T S T=$O(^ATXLAB("B","DM AUDIT A/C RATIO TAX",0)),LT=$O(^ATXAX("B","DM AUDIT A/C RATIO LOINC",0)) I 'T Q "<Taxonomy Missing>"
  1. Q $$LAB(P,T,LT)