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

APCHPMH1.m

Go to the documentation of this file.
  1. APCHPMH1 ; IHS/CMI/LAB - Patient Wellness Handout ;
  1. ;;2.0;IHS PCC SUITE;**5,11**;MAY 14, 2009;Build 58
  1. ;
  1. ;
  1. ;
  1. EP(APCHSDFN) ;PEP - PASS DFN get back array of patient care summary
  1. ;at this point you are stuck with ^TMP("APCHPHS",$J,"PMH"
  1. ;CHANGE TO GO TO NEW PWH
  1. S APCHPWHT=$O(^APCHPWHT("B","ADULT REGULAR",0))
  1. D EP^APCHPWH1(APCHSDFN,APCHPWHT)
  1. Q
  1. K ^TMP("APCHPHS",$J,"PMH")
  1. S ^TMP("APCHPHS",$J,"PMH",0)=0
  1. D SETARRAY
  1. Q
  1. SETARRAY ;set up array containing dm care summary
  1. ;CHECK TO SEE IF START1^APCLDF EXISTS
  1. S X="APCLDF" X ^%ZOSF("TEST") I '$T Q
  1. S X="PATIENT WELLNESS HANDOUT Report Date: "_$$FMTE^XLFDT(DT) D S(X)
  1. S X=$P($P(^DPT(APCHSDFN,0),U),",",2)_" "_$P($P(^DPT(APCHSDFN,0),U),",")_" HRN: "_$$HRN^AUPNPAT(APCHSDFN,DUZ(2)),$E(X,50)=$S($P(^APCCCTRL(DUZ(2),0),U,13)]"":$P(^APCCCTRL(DUZ(2),0),U,13),1:$P(^DIC(4,DUZ(2),0),U)) D S(X,2)
  1. I $G(APCDVSIT)]"",$D(^AUPNVSIT("AC",APCHSDFN,APCDVSIT)) S APCHPROV=$$PRIMPROV^APCLV(APCDVSIT)
  1. S X=$$VAL^XBDIQ1(2,APCHSDFN,.111),$E(X,50)=$S($G(APCHPROV)]"":APCHPROV,1:$$VAL^XBDIQ1(9000001,APCHSDFN,.14)) D S(X)
  1. S X=$$VAL^XBDIQ1(2,APCHSDFN,.114)_$S($$VAL^XBDIQ1(2,APCHSDFN,.114)]"":", ",1:" ")_$$VAL^XBDIQ1(2,APCHSDFN,.115)_" "_$$VAL^XBDIQ1(2,APCHSDFN,.116),Y=$P(^AUTTLOC(DUZ(2),0),U,11),$E(X,50)=Y D S(X)
  1. S X=$$VAL^XBDIQ1(2,APCHSDFN,.131) D S(X)
  1. S X="Hello "_$S($$SEX^AUPNPAT(APCHSDFN)="M":"Mr. ",1:"Ms. ")_$E($P($P(^DPT(APCHSDFN,0),U),","))_$$LOW^XLFSTR($E($P($P(^DPT(APCHSDFN,0),U),","),2,99))_"," D S(X,1)
  1. S X="Thank you for choosing "_$S($P(^APCCCTRL(DUZ(2),0),U,13)]"":$P(^APCCCTRL(DUZ(2),0),U,13),1:$P(^DIC(4,DUZ(2),0),U))_"." D S(X,1)
  1. S X="This sheet is a new way for you and your doctor to look at your health." D S(X,1)
  1. ;
  1. IMMUN ;
  1. K APCHIMM
  1. S X="Immunizations(shots). Getting shots protects you from some diseases and" D S(X,1)
  1. S X="illnesses." D S(X)
  1. S X="" D S(X) ;*17*
  1. D IMMFORC^BIRPC(.APCHIMM,APCHSDFN)
  1. I $E($G(APCHIMM),1,2)="No" S X="",$E(X,5)="You have all your immunizations. That's Great!" D S(X)
  1. I $E($G(APCHIMM),1,2)=" " F APCHIMMN=1:1 S APCHIMMT=$P($P(APCHIMM,U,APCHIMMN),"|") Q:$G(APCHIMMT)']"" D
  1. .I $E(APCHIMMT,1,2)=" " S APCHIMMT=$E(APCHIMMT,3,99)
  1. .I $G(APCHIMMT)]"" S APCHI(APCHIMMN)=APCHIMMT
  1. .Q
  1. I $D(APCHI) S APCHICTR=0 D
  1. .F S APCHICTR=$O(APCHI(APCHICTR)) Q:'APCHICTR D
  1. ..Q:$L(APCHI(APCHICTR))<3
  1. ..S APCHIMDU=APCHICTR
  1. .I +$G(APCHIMDU)>0 S X=APCHIMDU_$S(APCHIMDU>1:" Immunizations Due:",1:" Immunization Due") D S(X,1)
  1. .F I=1:1:APCHIMDU S X="",$E(X,5)=APCHI(I) D S(X)
  1. .Q
  1. ;
  1. MEAS ;
  1. S X="Weight is a good measure of health - and it depends on how tall you are." D S(X,1)
  1. S X="" D S(X) ;*17*
  1. D GETHWBBP(APCHSDFN)
  1. ;Convert APCHX("HT") to ft & inches
  1. I $G(APCHX("HT"))]"" S APCHFEET=APCHX("HT")/12,APCHINCH=$P(APCHFEET,".",2),APCHINCH="."_APCHINCH*12,APCHINCH=$J(APCHINCH,2,0),APCHFEET=$P(APCHFEET,".")
  1. I $G(APCHX("HT"))]"" S X="",$E(X,5)="You are "_APCHFEET_" feet and "_APCHINCH_" inches tall." D S(X)
  1. ;
  1. I $G(APCHX("WT"))="" S X="",$E(X,5)="No weight on file." D S(X)
  1. I $G(APCHX("HT"))']"" S X="",$E(X,5)="No height on file." D S(X)
  1. I $G(APCHX("WT"))]"" S X="",$E(X,5)="Your last weight was "_$J(APCHX("WT"),3,0)_" pounds on "_$$FMTE^XLFDT(APCHX("WTD"))_"." D S(X)
  1. I $G(APCHX("WT"))]"",$$FMDIFF^XLFDT(DT,APCHX("WTD"))>120 S X="",$E(X,5)="You should have your weight rechecked at your next visit" D S(X)
  1. I $G(APCHX("WTD"))]"",APCHX("WTD")=DT,$G(APCHX("BMI"))]"" D
  1. .S X="",$E(X,5)="Your Body Mass Index today was "_APCHX("BMI")_". This is a good way to" D S(X)
  1. .S X="",$E(X,5)="compare your height and weight." D S(X)
  1. .Q
  1. I $G(APCHX("WTD"))]"",APCHX("WTD")<DT,$G(APCHX("BMI"))]"" D
  1. .S X="",$E(X,5)="Your Body Mass Index on "_$$FMTE^XLFDT(APCHX("WTD"))_" was "_APCHX("BMI")_"." D S(X)
  1. .Q
  1. I $G(APCHX("BMI"))]"",APCHX("BMI")<25 S X="",$E(X,5)="You are at a healthy weight. Keep up the good work!" D S(X)
  1. I APCHX("BMI")>26 D
  1. .S X="",$E(X,5)="You are above a healthy weight. Too much weight can lead to lots" D S(X)
  1. .S X="",$E(X,5)="of health problems - diabetes, heart disease, back pain, leg pains," D S(X)
  1. .S X="",$E(X,5)="and more. Ask your provider about things you can do to fix your weight." D S(X)
  1. .Q
  1. ;
  1. I $G(APCHX("BP"))]"" S APCHSBP=$P(APCHX("BP"),"/"),APCHDBP=$P(APCHX("BP"),"/",2),X="Blood pressure is a good measure of health." D S(X,1)
  1. S X="" D S(X) ;*17*
  1. I $G(APCHX("BP"))]"" S X="",$E(X,5)="Your last blood pressure was "_APCHSBP_" over "_APCHDBP_" on "_$$FMTE^XLFDT(APCHX("BPD"))_"." D S(X) D
  1. .I $$AGE^AUPNPAT(APCHSDFN)>21,$$FMDIFF^XLFDT(DT,APCHX("BPD"))>365 S X="",$E(X,5)="You should have your blood pressure checked at your next visit." D S(X)
  1. .I $$AGE^AUPNPAT(APCHSDFN)>3,$$AGE^AUPNPAT(APCHSDFN)<22,$$FMDIFF^XLFDT(DT,APCHX("BPD"))>720 S X="You should have your blood pressure checked at your next visit" D S(X)
  1. .Q
  1. I $$AGE^AUPNPAT(APCHSDFN)>21,$G(APCHX("BP"))']"" S X="Blood pressure is a good measure of health." D S(X,1) S X="",$E(X,5)="You should have your blood pressure checked at your next visit." D S(X)
  1. I $$AGE^AUPNPAT(APCHSDFN)>3,$$AGE^AUPNPAT(APCHSDFN)<22,$G(APCHX("BP"))']"" S X="Blood pressure is a good measure of health." D S(X,1) S X="",$E(X,5)="You should have your blood pressure checked at your next visit." D S(X)
  1. CKDP ;
  1. ;does pt have chronic kidney disease?
  1. D CKD
  1. I $G(APCHX("BP"))]"" S APCHHBP=0 D
  1. .I $G(APCHDBP)<80,$G(APCHSBP)<140 Q
  1. .I $G(APCHDBP)>90!($G(APCHSBP)>140) S APCHHBP=1 Q
  1. .I $$DMDX(APCHSDFN)="Yes",$G(APCHDBP)>80!($G(APCHSBP)>130) S APCHHBP=1
  1. .I $G(APCHCKD)=1,$G(APCHDBP)>80!($G(APCHSBP)>130) S APCHHBP=1
  1. I $G(APCHHBP)=0 S X="",$E(X,5)="Your blood pressure is good. That's great news!" D S(X)
  1. I $G(APCHHBP)=1 D
  1. .S X="",$E(X,5)="Your blood pressure is too high. Easy ways to make it better are" D S(X)
  1. .S X="",$E(X,5)="eating healthy foods and walking or getting more physical activity." D S(X)
  1. .S X="",$E(X,5)="If you take medicine to lower your blood pressure, be sure to take" D S(X)
  1. .S X="",$E(X,5)="it every day." D S(X)
  1. .;S X="" D S(X)
  1. ;
  1. ALLERG ;
  1. S X="Allergies, reactions that you've had to medicines or other things are very" D S(X,1)
  1. S X="important. Below are the allergies that we know. If anything is wrong or" D S(X)
  1. S X="missing, please let your provider know." D S(X)
  1. S X="" D S(X)
  1. S APCHSALD=0,APCHSALP=0,APCHSALG=0
  1. D EN^APCHPALG ;get allergies from allergy tracking and problem list
  1. ;I $D(APCHENT) S X="",$E(X,5)="From Allergy Tracking System:",$E(X,45)="(v)=verified (u)=unverified" D S(X)
  1. I $D(APCHENT) S X="",$E(X,5)="From Allergy Tracking System:" D S(X)
  1. I $D(APCHENT("A")) F S APCHSALD=$O(APCHENT("A",APCHSALD)) Q:APCHSALD'=+APCHSALD D
  1. .Q:$G(APCHSALD)']""
  1. .F I $D(APCHENT("A")) S APCHSALP=$O(APCHENT("A",APCHSALD,APCHSALP)) Q:APCHSALP="" Q:APCHSALD'=+APCHSALD D
  1. ..S APCHSALG=1
  1. ..S X="",$E(X,5)=$G(APCHENT("A",APCHSALD,APCHSALP)) D S(X)
  1. ..Q
  1. I $D(APCHENT("P")) F S APCHSALD=$O(APCHENT("P",APCHSALD)) Q:APCHSALD'=+APCHSALD D
  1. .Q:$G(APCHSALD)']""
  1. .F I $D(APCHENT("P")) S APCHSALP=$O(APCHENT("P",APCHSALD,APCHSALP)) Q:APCHSALP="" Q:APCHSALD'=+APCHSALD D
  1. ..S APCHSALG=1
  1. ..S X="",$E(X,5)=$G(APCHENT("P",APCHSALD,APCHSALP)) D S(X)
  1. ..Q
  1. I $D(APCHENT("U")) F S APCHSALD=$O(APCHENT("U",APCHSALD)) Q:APCHSALD'=+APCHSALD D
  1. .Q:$G(APCHSALD)']""
  1. .F I $D(APCHENT("U")) S APCHSALP=$O(APCHENT("U",APCHSALD,APCHSALP)) Q:APCHSALP="" Q:APCHSALD'=+APCHSALD D
  1. ..S APCHSALG=1
  1. ..S X="",$E(X,5)=$G(APCHENT("A",APCHSALD,APCHSALP)) D S(X)
  1. ..Q
  1. ;
  1. S APCHSALD=0,APCHSALP=0,APCHSAPR=0
  1. D PROBA^APCHPALG ;get allergies from Problem List
  1. I $D(APCHSPT) S X="",$E(X,5)="From Problem List" D S(X,1)
  1. I $D(APCHSPT) F S APCHSALD=$O(APCHSPT(APCHSALD)) Q:APCHSALD'=+APCHSALD D
  1. .S APCHSALP=$O(APCHSPT(APCHSALP))
  1. .Q:APCHSALP'=+APCHSALP
  1. .S APCHSAPR=1
  1. .S X="",$E(X,5)=$G(APCHSPT(APCHSALP)) D S(X)
  1. .Q
  1. I APCHSALG=0,APCHSAPR=0 S X="",$E(X,5)="No allergies on file." D S(X)
  1. ;
  1. D MEDS^APCHPMH3
  1. D CLOSE^APCHPMH3 ;CMI/GRL 12/3/07 *17*
  1. Q
  1. CKD ;Does patient have chronic kidney disease (CKD)?
  1. S APCHCKD=0
  1. ;get last serum creatinine value
  1. S T=$O(^ATXLAB("B","DM AUDIT CREATININE TAX",0)) I $G(T)]"" S APCHLCRV=$$LAB^APCHPMH2(APCHSDFN,T),APCHLCRD=$P($G(APCHLCRV),"|||",2),APCHLCRV=$P($G(APCHLCRV),"|||") I $G(APCHLCRV)]"" D
  1. .I $$SEX^AUPNPAT(APCHSDFN)="F",APCHLCRV>1.3 S APCHCKD=1
  1. .I $$SEX^AUPNPAT(APCHSDFN)="M",APCHLCRV>1.5 S APCHCKD=1
  1. ;get last urine protein value
  1. Q:APCHCKD=1 S T=$O(^ATXLAB("B","DM AUDIT URINE PROTEIN TAX",0)) I $G(T)]"" S APCHLUPV=$$LAB^APCHPMH2(APCHSDFN,T),APCHLUPD=$P($G(APCHLUPV),"|||",2),APCHLUPV=$P($G(APCHLUPV),"|||") I $G(APCHLUPV)]"" D
  1. .I +APCHLUPV>200 S APCHCKD=1
  1. ;get last A/C ratio value
  1. Q:APCHCKD=1 S T=$O(^ATXLAB("B","DM AUDIT A/C RATIO TAX",0)) I $G(T)]"" S APCHLACV=$$LAB^APCHPMH2(APCHSDFN,T),APCHLACD=$P($G(APCHLACV),"|||",2),APCHLACV=$P($G(APCHLACV),"|||") I $G(APCHLACV)]"" D
  1. .I +APCHLACV>200 S APCHCKD=1
  1. ;get estimated GFR
  1. Q:APCHCKD=1 S T=$O(^ATXLAB("B","BGP GPRA ESTIMATED GFR TAX",0)) I $G(T)]"" S APCHLEGV=$$LAB^APCHPMH2(APCHSDFN,T),APCHLEGD=$P($G(APCHLEGV),"|||",2),APCHLEGV=$P($G(APCHLEGV),"|||") I $G(APCHLEGV)]"" D
  1. .I APCHLEGV<60 S APCHCKD=1
  1. Q
  1. ;
  1. ;
  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("APCHPHS",$J,"PMH",0),U)+1,$P(^TMP("APCHPHS",$J,"PMH",0),U)=%
  1. S ^TMP("APCHPHS",$J,"PMH",%)=X
  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. GETHWBBP(P) ;get last height, height date, weight, weight date, BMI and BP for patient P, return in APCHX("HT"),APCHX("HTD"),APCHX("WT"),APCHX("WTD"),APCHX("BMI")
  1. K APCHX
  1. S APCHX("HT")="",APCHX("HTD")="",APCHX("WT")="",APCHX("WTD")="",APCHX("BMI")="",APCHX("WC")="",APCHX("WCD")=""
  1. LASTHT ;
  1. Q:'$D(^AUPNVSIT("AC",P))
  1. Q:'$D(^AUPNVMSR("AC",P))
  1. NEW APCHY
  1. S %=P_"^LAST MEAS HT" NEW X S E=$$START1^APCLDF(%,"APCHY(") S APCHX("HT")=$P($G(APCHY(1)),U,2),APCHX("HTD")=$P($G(APCHY(1)),U)
  1. S APCHX("HT")=$S(APCHX("HT")]"":$J(APCHX("HT"),2,0),1:"")
  1. LASTWT ;
  1. K APCHY S %=P_"^LAST MEAS WT" NEW X S E=$$START1^APCLDF(%,"APCHY(") S APCHX("WT")=$P($G(APCHY(1)),U,2),APCHX("WTD")=$P($G(APCHY(1)),U)
  1. LASTBP ;
  1. K APCHY S %=P_"^LAST MEAS BP" NEW X S E=$$START1^APCLDF(%,"APCHY(") S APCHX("BP")=$P($G(APCHY(1)),U,2),APCHX("BPD")=$P($G(APCHY(1)),U)
  1. LASTWC ;
  1. K APCHY S %=P_"^LAST MEAS WC" NEW X S E=$$START1^APCLDF(%,"APCHY(") S APCHX("WC")=$P($G(APCHY(1)),U,2),APCHX("WCD")=$P($G(APCHY(1)),U)
  1. BMI ;
  1. I $$AGE^AUPNPAT(P)<19,(APCHX("WTD")'=APCHX("HTD")) Q
  1. I APCHX("WT")=""!('APCHX("HT")) Q
  1. S %=""
  1. S W=APCHX("WT")*.45359,H=(APCHX("HT")*0.0254),H=(H*H),%=(W/H),%=$J(%,4,1)
  1. S APCHX("BMI")=%
  1. Q
  1. ;
  1. DMDX(P) ;
  1. ;check problem list OR must have 3 diagnoses
  1. N T S T=$O(^ATXAX("B","SURVEILLANCE DIABETES",0))
  1. I 'T Q ""
  1. N X,Y,I S (X,Y,I)=0 F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(I) I $D(^AUPNPROB(X,0)),$P(^AUPNPROB(X,0),U,12)'="D" S Y=$P(^AUPNPROB(X,0),U) I $$ICD^ATXAPI(Y,T,9) S I=1
  1. I I Q "Yes"
  1. NEW APCHX
  1. S APCHX=""
  1. S X=P_"^LAST 3 DX [SURVEILLANCE DIABETES" S E=$$START1^APCLDF(X,"APCHX(") G:E DMX I $D(APCHX(3)) S APCHX="Yes"
  1. I $G(APCHX)="" S APCHX="No"
  1. DMX ;
  1. Q APCHX
  1. ;