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

APCHPST1.m

Go to the documentation of this file.
  1. APCHPST1 ; IHS/CMI/LAB - Patient Health Summary - Post Visit ;
  1. ;;2.0;IHS PCC SUITE;**5,7,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,"PHS"
  1. K ^TMP("APCHPHS",$J,"PHS")
  1. S ^TMP("APCHPHS",$J,"PHS",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 HEALTH SUMMARY 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) ;GARY - ADD CHECK FOR CURRENT VISIT PROVIDER
  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=$$FMTE^XLFDT(DT) 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 visiting with us! Here's some information about your visit." D S(X,1)
  1. S X="When you have any questions, contact your health care provider or write them" D S(X)
  1. S X="down and ask them at your next visit." D S(X)
  1. ;
  1. MEDS ;
  1. D EP^APCHPST2 ;meds/ allergies/ measurements
  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. ;
  1. LABTESTS ;
  1. ;S X="Lab tests can help measure health and some check to make sure that your" D S(X,1)
  1. ;S X="medicines are working right." D S(X)
  1. ;diabetes
  1. S APCHLHD=""
  1. I $$DMDX(APCHSDFN)="Yes" S T=$O(^ATXLAB("B","DM AUDIT HGB A1C TAX",0)) I $G(T)]"" S APCHLA1V=$$LAB(APCHSDFN,T),APCHLA1D=$P($G(APCHLA1V),"|||",2),APCHLA1V=$P($G(APCHLA1V),"|||") D
  1. .I APCHLA1D="",APCHLHD="" D APCHLHD S APCHLHD=1 S X="",$E(X,5)="You need to have your A1C checked to see if your diabetes is under control." D S(X)
  1. .I APCHLA1D]"" S X=APCHLA1D D ^%DT S APCHLA1D=Y S X1=DT,X2=APCHLA1D I $$FMDIFF^XLFDT(X1,X2)>180 D
  1. ..I APCHLHD=1 S X="",$E(X,5)="You need to have your A1C checked to see if your diabetes is under control." D S(X)
  1. ..I APCHLHD="" D APCHLHD S APCHLHD=1 S X="",$E(X,5)="You need to have your A1C checked to see if your diabetes is under control." D S(X)
  1. ..S T=$O(^ATXLAB("B","DM AUDIT CHOLESTEROL TAX",0)) I $G(T)]"" D
  1. ...S APCHLCHV=$$LAB(APCHSDFN,T),APCHLCHD=$P($G(APCHLCHV),"|||",2),APCHLCHV=$P($G(APCHLCHV),"|||") I APCHLCHD]"" S X=APCHLCHD D ^%DT S APCHLCHD=Y S X1=DT,X2=APCHLCHD I $$FMDIFF^XLFDT(X1,X2)>180 D
  1. ....I APCHLHD=1 S APCHCKCH=1 S X="",$E(X,5)="You need to have your cholesterol checked to prevent heart disease." D S(X)
  1. ....I APCHLHD="" D APCHLHD S APCHLHD=1 S X="",$E(X,5)="You need to have your cholesterol checked to prevent heart disease." D S(X)
  1. .Q
  1. ;cholesterol
  1. I $G(APCHCKCH)']"",$$AGE^AUPNPAT(APCHSDFN)>18,$$DMDX(APCHSDFN)="No" S T=$O(^ATXLAB("B","DM AUDIT CHOLESTEROL TAX",0)) I $G(T)]"" S APCHLCHV=$$LAB(APCHSDFN,T),APCHLCHD=$P($G(APCHLCHV),"|||",2),APCHLCHV=$P($G(APCHLCHV),"|||") D
  1. .I APCHLCHD="" D APCHLHD S APCHLHD=1 S X="",$E(X,5)="You need to have your cholesterol checked to prevent heart disease." D S(X)
  1. .I APCHLCHD]"" S X=APCHLCHD D ^%DT S APCHLCHD=Y S X1=DT,X2=APCHLCHD I $$FMDIFF^XLFDT(X1,X2)>1825 D APCHLHD S APCHLHD=1 S X="",$E(X,5)="You need to have your cholesterol checked to prevent heart disease." D S(X)
  1. ;
  1. D GETLABS
  1. I $D(APCHTST),$G(APCHLHD)="" D APCHLHD S APCHLHD=1
  1. I $D(APCHTST) S X="",$E(X,5)="Lab tests ordered today:" D S(X)
  1. S APCHSLAB=""
  1. F S APCHSLAB=$O(APCHTST(APCHSLAB)) Q:$G(APCHSLAB)']"" D
  1. .S X="",$E(X,10)=APCHSLAB D S(X)
  1. .I $O(APCHTST(APCHSLAB,0)) S APCHCTR=0 F S APCHCTR=$O(APCHTST(APCHSLAB,APCHCTR)) Q:'APCHCTR D
  1. ..S X="",$E(X,12)=$P(APCHTST(APCHSLAB,APCHCTR),U) D S(X)
  1. .Q
  1. ;
  1. IMMUN ;
  1. S X="Immunizations make your body stronger to fight infections." D S(X,1)
  1. ;
  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 $G(APCHIMM)]"",+APCHIMM S X="",$E(X,5)="Immunizations are due." D S(X)
  1. I $D(APCHI) S APCHICTR=0 D
  1. .S X="",$E(X,5)="You can get these immunizations today:" D S(X)
  1. .F S APCHICTR=$O(APCHI(APCHICTR)) Q:APCHICTR'=+APCHICTR D
  1. ..S APCHIMDU=$P(APCHI(APCHICTR),U),X="",$E(X,5)=APCHIMDU D S(X)
  1. ..Q
  1. ;
  1. MISC ;
  1. S X="Good health starts with you. Some basic rules can keep you safe." D S(X,1)
  1. S X="Here are two checklists to help you and your family safe." D S(X)
  1. S X="",$E(X,5)="To help protect yourself at home:" D S(X)
  1. S X="",$E(X,10)="Use smoke detectors. Remember to check the batteries every month." D S(X)
  1. S X="",$E(X,10)="Change the batteries every year. You may want to use a reminder." D S(X)
  1. S X="",$E(X,10)="For example, change the batteries around your birthday, some holiday" D S(X)
  1. S X="",$E(X,10)="or at daylight savings time." D S(X)
  1. S X="",$E(X,10)="Lock up guns and ammunition, and store them separately." D S(X)
  1. S X="",$E(X,10)="Keep good lights on in hallways, stairways and porches." D S(X)
  1. S X="",$E(X,10)="Fix, or get rid of, things you can trip on such as loose rugs," D S(X)
  1. S X="",$E(X,10)="electrical cords and toys." D S(X)
  1. S X="",$E(X,5)="To help protect you away from home:" D S(X,1)
  1. S X="",$E(X,10)="Wear seat belts - ALWAYS!" D S(X)
  1. S X="",$E(X,10)="Never drive after drinking alcohol-or get in a car with a driver" D S(X)
  1. S X="",$E(X,10)="who was drinking." D S(X)
  1. S X="",$E(X,10)="Always wear a safety helmet while riding a motorcycle or bicycle." D S(X)
  1. S X="",$E(X,10)="Look out for hazards where you work. Follow workplace safety rules." D S(X)
  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(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(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(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(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,"PHS",0),U)+1,$P(^TMP("APCHPHS",$J,"PHS",0),U)=%
  1. S ^TMP("APCHPHS",$J,"PHS",%)=X
  1. Q
  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. ;
  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. ...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(^AUPNVSIT($P(^AUPNVLAB(G,0),U,3),0),U),"."))_"|||"_$$REF(P,T,$P($P(^AUPNVSIT($P(^AUPNVLAB(G,0),U,3),0),U),"."))_"|||"_G
  1. LOINC(A,B) ;
  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. ;
  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. ;
  1. ;
  1. GETLABSX ;get lab tests ordered today
  1. ;
  1. S APCHLR=$G(^DPT(APCHSDFN,"LR"))
  1. I $G(APCHLR)]"" S APCHLRO=0,APCHTSTP=0 D
  1. .F S APCHLRO=$O(^LRO(69,DT,1,"AA",APCHLR,APCHLRO)) Q:APCHLRO="" Q:APCHLRO'=+APCHLRO D
  1. ..F S APCHTSTP=$O(^LRO(69,DT,1,APCHLRO,2,"B",APCHTSTP)) Q:APCHTSTP'=+APCHTSTP D
  1. ...S APCHTCTR=$O(^LRO(69,DT,1,APCHLRO,2,"B",APCHTSTP,0))
  1. ...S APCHTEST=$P(^LAB(60,APCHTSTP,0),U)
  1. ...S APCHTST(APCHTEST)=""
  1. ...Q
  1. ;
  1. ;
  1. GETLABS ;get todays labs from V Lab File
  1. S APCHSIVD=9999999-DT
  1. I $D(^AUPNVLAB("AE",APCHSDFN,APCHSIVD)) S APCHTSTP=0,APCHVLAB=0 D
  1. .F S APCHTSTP=$O(^AUPNVLAB("AE",APCHSDFN,APCHSIVD,APCHTSTP)) Q:APCHTSTP="" Q:APCHTSTP'=+APCHTSTP D
  1. ..S APCHTEST=$P(^LAB(60,APCHTSTP,0),U),APCHTST(APCHTEST)=""
  1. ..S APCHVLAB=$O(^AUPNVLAB("AE",APCHSDFN,APCHSIVD,APCHTSTP,APCHVLAB)) Q:APCHVLAB'=+APCHVLAB
  1. ..I $D(^AUPNVLAB(APCHVLAB,21)) S APCHCTR=0 F S APCHCTR=$O(^AUPNVLAB(APCHVLAB,21,APCHCTR)) Q:'APCHCTR D
  1. ...Q:APCHCTR'=+APCHCTR
  1. ...S APCHTST(APCHTEST,APCHCTR)=$P(^AUPNVLAB(APCHVLAB,21,APCHCTR,0),U)
  1. ..Q
  1. Q
  1. ;
  1. APCHLHD ;
  1. S X="Lab tests can help measure health and some check to make sure that your" D S(X,1)
  1. S X="medicines are working right." D S(X)
  1. ;