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

APCHPWH3.m

Go to the documentation of this file.
  1. APCHPWH3 ; IHS/CMI/LAB - PCC HEALTH SUMMARY - MAIN DRIVER PART 2 ;
  1. ;;2.0;IHS PCC SUITE;**2,5,7,11**;MAY 14, 2009;Build 58
  1. ;
  1. ;
  1. MEDS ;EP - medications component
  1. ;get all meds in the past year +30 days
  1. NEW APCHMEDS,APCHMED,X,M,I,N,D,APCHKEEP,APCHGRP,APCHRXN,APCHRXO,APCHRX0,APCHSREF,APCHSTAT,C,APCHN,APCHI,APCHD,APCHC
  1. NEW X,M,D,N,C,Z,P,I
  1. ;
  1. S APCHMEDS=""
  1. D GETMEDS^APCHSMU1(APCHSDFN,$$FMADD^XLFDT(DT,-395),DT,,,,,.APCHMEDS)
  1. ;store each drug by inverse date
  1. K APCHMED
  1. S X=0 F S X=$O(APCHMEDS(X)) Q:X'=+X D
  1. .S M=$P(APCHMEDS(X),U,4)
  1. .S D=$P(^AUPNVMED(M,0),U,1)
  1. .S N=$S($P(^AUPNVMED(M,0),U,4)]"":$P(^AUPNVMED(M,0),U,4),1:$P(^PSDRUG(D,0),U,1))
  1. .S APCHMED(N,D,(9999999-$P(APCHMEDS(X),U,1)))=APCHMEDS(X)
  1. ;now get rid of all except the latest one
  1. K APCHKEEP
  1. S N="" F S N=$O(APCHMED(N)) Q:N="" D
  1. .S D=0 F S D=$O(APCHMED(N,D)) Q:D="" D
  1. ..Q:$D(APCHKEEP(N,D))
  1. ..S X=$O(APCHMED(N,D,0))
  1. ..S APCHKEEP(N,D,X)=APCHMED(N,D,X)
  1. ;
  1. ;now put into groups
  1. K APCHGRP
  1. S N="" F S N=$O(APCHKEEP(N)) Q:N="" D
  1. .S D=0 F S D=$O(APCHKEEP(N,D)) Q:D="" D
  1. ..S X=0 F S X=$O(APCHKEEP(N,D,X)) Q:X'=+X D
  1. ...;get status, if expired or discontinued put in group 2, 3 all others go in group 1
  1. ...;skip 1,2,4,10,13,15
  1. ...S M=$P(APCHKEEP(N,D,X),U,4)
  1. ...S Z=""
  1. ...S APCHRXN=$O(^PSRX("APCC",M,0))
  1. ...I APCHRXN D Q
  1. ....S APCHSTAT=$P($G(^PSRX(APCHRXN,"STA")),U,1)
  1. ....Q:APCHSTAT=""
  1. ....Q:APCHSTAT=1
  1. ....Q:APCHSTAT=2
  1. ....Q:APCHSTAT=4
  1. ....Q:APCHSTAT=10
  1. ....Q:APCHSTAT=13
  1. ....Q:APCHSTAT=15
  1. ....S C=$S(+APCHRXN:$D(^PS(55,APCHSDFN,"P","CP",APCHRXN)),1:0)
  1. ....S I=$S(C:120,1:14)
  1. ....I APCHSTAT=11 D Q
  1. .....Q:$$FMDIFF^XLFDT(DT,$P($G(^PSRX(APCHRXN,2)),U,6))>I
  1. .....S APCHGRP(2,N,D,X)=APCHKEEP(N,D,X),$P(APCHGRP(2,N,D,X),U,10)=$P($G(^PSRX(APCHRXN,2)),U,6) S Z=2 D SET Q
  1. ....S C=$S(+APCHRXN:$D(^PS(55,APCHSDFN,"P","CP",APCHRXN)),1:0)
  1. ....S I=31
  1. ....I APCHSTAT=12!(APCHSTAT=14)&($$FMDIFF^XLFDT(DT,$P(^AUPNVMED(M,0),U,8))<I) S APCHGRP(3,N,D,X)=APCHKEEP(N,D,X),$P(APCHGRP(3,N,D,X),U,12)=$P(^AUPNVMED(M,0),U,8) S Z=3 D SET Q
  1. ....I APCHSTAT=12!(APCHSTAT=14) Q ;only past 30/120 days
  1. ....S APCHGRP(1,N,D,X)=APCHKEEP(N,D,X) S Z=1 D SET
  1. ....I APCHSTAT=3 S $P(APCHGRP(1,N,D,X),U,11)=$P($G(^PSRX(APCHRXN,"H")),U,1)
  1. ...S APCHGRP(1,N,D,X)=APCHKEEP(N,D,X) S Z=1 D SET1
  1. ...Q
  1. ..Q
  1. .Q
  1. S D=DT
  1. F S D=$O(^PS(55,APCHSDFN,"P","A",D)) Q:D'=+D D
  1. .S N=0 F S N=$O(^PS(55,APCHSDFN,"P","A",D,N)) Q:'N D
  1. ..Q:'$$HOLD(N)
  1. ..S X=$$VAL^XBDIQ1(52,N,6)
  1. ..S APCHGRP(1,X,$P(^PSRX(N,0),U,6),D)=D_U_$$VAL^XBDIQ1(52,N,6)_U_$$VAL^XBDIQ1(52,N,6)
  1. ..S $P(APCHGRP(1,X,$P(^PSRX(N,0),U,6),D),U,11)=$$EXTSET^XBFUNC(52,99,$P($G(^PSRX(N,"H")),U,1))
  1. ..S $P(APCHGRP(1,X,$P(^PSRX(N,0),U,6),D),U,13)=N
  1. ;get pending order
  1. ;S P=APCHSDFN_";DPT("
  1. ;S D=0 F S D=$O(^OR(100,"AC",P,D)) Q:D'=+D D
  1. ;.S I=0 F S I=$O(^OR(100,"AC",P,D,I)) Q:I'=+I D
  1. ;..S G=$$VALI^XBDIQ1(100,I,12)
  1. ;..Q:'G
  1. ;..Q:$P($G(^DIC(9.4,G,0)),U,2)'="PSO"
  1. ;..Q:$$VAL^XBDIQ1(100,I,5)'="PENDING"
  1. ;..S X=0 F S X=$O(^OR(100,I,.1,X)) Q:X'=+X D
  1. ;...S N=$P(^OR(100,I,.1,X,0),U) I N]"" S N=$P($G(^OR(101.43,N,0)),U)
  1. ;...I N S APCHGRP(1.5,N,99,(9999999-$P(D,".")))=(9999999-$P(D,"."))_U_N
  1. ;display them now, this was a pain
  1. D SUBHEAD^APCHPWHU
  1. D S^APCHPWH1("MEDICATIONS - This is a list of medications and other items you are")
  1. D S^APCHPWH1("taking including non-prescription medications, herbal, dietary, and")
  1. D S^APCHPWH1("traditional supplements. Please let us know if this list is not ")
  1. D S^APCHPWH1("complete.")
  1. I '$D(APCHGRP) D S^APCHPWH1("No medications are on file. Please tell us if there are any that we missed.",1) Q
  1. S APCHC=0
  1. S APCHN=""
  1. F S APCHN=$O(APCHGRP(1,APCHN)) Q:APCHN="" D
  1. .S APCHI=0 F S APCHI=$O(APCHGRP(1,APCHN,APCHI)) Q:APCHI'=+APCHI D
  1. ..S APCHD=0 F S APCHD=$O(APCHGRP(1,APCHN,APCHI,APCHD)) Q:APCHD'=+APCHD D
  1. ...S Z=APCHGRP(1,APCHN,APCHI,APCHD)
  1. ...S APCHC=APCHC+1
  1. ...S X="",$E(X,1)=APCHC_".",$E(X,7)=APCHN,$E(X,47)=$S($P(Z,U,6)]"":"Rx#: "_$P(Z,U,6),1:""),$E(X,61)=$S($P(Z,U,7)]"":"Refills left: "_$P(Z,U,7),1:"") D S^APCHPWH1(X,1)
  1. ...;attempt to wrap directions 58 characters
  1. ...K ^UTILITY($J,"W") S X=$P(Z,U,8),DIWL=0,DIWR=58 D ^DIWP
  1. ...S X="",$E(X,7)="Directions: "_$S($L($G(^UTILITY($J,"W",0,1,0)))>1:$G(^UTILITY($J,"W",0,1,0)),$L($G(^UTILITY($J,"W",0,1,0)))=1:"No directions on file",1:" ") D S^APCHPWH1(X)
  1. ...I $G(^UTILITY($J,"W",0))>1 F F=2:1:$G(^UTILITY($J,"W",0)) S X="",$E(X,19)=$G(^UTILITY($J,"W",0,F,0)) D S^APCHPWH1(X)
  1. ...K ^UTILITY($J,"W")
  1. ...I $P(Z,U,11)]"" D S^APCHPWH1(" Ordered but not dispensed: "_$P(Z,U,11))
  1. I $D(APCHGRP(2)) D
  1. .D S^APCHPWH1("==========",1)
  1. .D S^APCHPWH1("Your prescription for these medications has expired. You need to talk")
  1. .D S^APCHPWH1("with your prescriber to get a new prescription for these medications.")
  1. .D S^APCHPWH1(" ")
  1. .S APCHN="" F S APCHN=$O(APCHGRP(2,APCHN)) Q:APCHN="" D
  1. ..S APCHI=0 F S APCHI=$O(APCHGRP(2,APCHN,APCHI)) Q:APCHI'=+APCHI D
  1. ...S APCHD=0 F S APCHD=$O(APCHGRP(2,APCHN,APCHI,APCHD)) Q:APCHD'=+APCHD D
  1. ....S Z=APCHGRP(2,APCHN,APCHI,APCHD)
  1. ....S APCHC=APCHC+1
  1. ....S X="",$E(X,1)=APCHC_".",$E(X,7)=APCHN,$E(X,47)=$S($P(Z,U,6)]"":"Rx#: "_$P(Z,U,6),1:""),$E(X,61)=$S($P(Z,U,7)]"":"Refills left: "_$P(Z,U,7),1:"") D S^APCHPWH1(X,1)
  1. ....;S X="",$E(X,7)="Directions: "_$P(Z,U,8) D S^APCHPWH1(X)
  1. ....K ^UTILITY($J,"W") S X=$P(Z,U,8),DIWL=0,DIWR=58 D ^DIWP
  1. ....S X="",$E(X,7)="Directions: "_$S($L($G(^UTILITY($J,"W",0,1,0)))>1:$G(^UTILITY($J,"W",0,1,0)),$L($G(^UTILITY($J,"W",0,1,0)))=1:"No directions on file",1:" ") D S^APCHPWH1(X)
  1. ....I $G(^UTILITY($J,"W",0))>1 F F=2:1:$G(^UTILITY($J,"W",0)) S X="",$E(X,19)=$G(^UTILITY($J,"W",0,F,0)) D S^APCHPWH1(X)
  1. ....K ^UTILITY($J,"W")
  1. ....S X="",$E(X,7)="Last date filled: "_$$FMTE^XLFDT($P(Z,U))_" Expired on: "_$$FMTE^XLFDT($P(Z,U,10)) D S^APCHPWH1(X)
  1. I $D(APCHGRP(3)) D
  1. .D S^APCHPWH1("==========",1)
  1. .D S^APCHPWH1("These medications have been stopped. You should not take these")
  1. .D S^APCHPWH1("medications. Talk to your pharmacist about ways to safely get rid")
  1. .D S^APCHPWH1("of these medications if you have them at home.")
  1. .D S^APCHPWH1(" ")
  1. .S APCHN="" F S APCHN=$O(APCHGRP(3,APCHN)) Q:APCHN="" D
  1. ..S APCHI=0 F S APCHI=$O(APCHGRP(3,APCHN,APCHI)) Q:APCHI'=+APCHI D
  1. ...S APCHD=0 F S APCHD=$O(APCHGRP(3,APCHN,APCHI,APCHD)) Q:APCHD'=+APCHD D
  1. ....S Z=APCHGRP(3,APCHN,APCHI,APCHD)
  1. ....S APCHC=APCHC+1
  1. ....S X="",$E(X,1)=APCHC_".",$E(X,7)=APCHN,$E(X,47)=$S($P(Z,U,6)]"":"Rx#: "_$P(Z,U,6),1:""),$E(X,61)=$S($P(Z,U,7)]"":"Refills left: "_$P(Z,U,7),1:"") D S^APCHPWH1(X,1)
  1. ....;S X="",$E(X,7)="Directions: "_$P(Z,U,8) D S^APCHPWH1(X)
  1. ....K ^UTILITY($J,"W") S X=$P(Z,U,8),DIWL=0,DIWR=58 D ^DIWP
  1. ....S X="",$E(X,7)="Directions: "_$S($L($G(^UTILITY($J,"W",0,1,0)))>1:$G(^UTILITY($J,"W",0,1,0)),$L($G(^UTILITY($J,"W",0,1,0)))=1:"No directions on file",1:" ") D S^APCHPWH1(X)
  1. ....I $G(^UTILITY($J,"W",0))>1 F F=2:1:$G(^UTILITY($J,"W",0)) S X="",$E(X,19)=$G(^UTILITY($J,"W",0,F,0)) D S^APCHPWH1(X)
  1. ....K ^UTILITY($J,"W")
  1. ....S X="",$E(X,7)="Discontinued on: "_$$FMTE^XLFDT($P(Z,U,12)) D S^APCHPWH1(X)
  1. Q
  1. ;
  1. SET1 ;
  1. S $P(APCHGRP(Z,N,D,X),U,6)=$P($G(^AUPNVMED(M,11)),U,2)
  1. S $P(APCHGRP(Z,N,D,X),U,8)=$P(^AUPNVMED(M,0),U,5)
  1. S $P(APCHGRP(Z,N,D,X),U,7)=$P($G(^AUPNVMED(M,11)),U,7)
  1. Q
  1. SET ;
  1. S $P(APCHGRP(Z,N,D,X),U,6)=$P(^PSRX(APCHRXN,0),U)
  1. S $P(APCHGRP(Z,N,D,X),U,8)=$P(^AUPNVMED(M,0),U,5)
  1. S APCHSRX=APCHRXN,APCHSREF=0 D REF^APCHS7O S $P(APCHGRP(Z,N,D,X),U,7)=APCHSREF
  1. Q
  1. HOLD(S) ;EP - is this prescription on hold?
  1. NEW X
  1. S X=$P($G(^PSRX(S,"STA")),U,1)
  1. I X=3 Q 1
  1. ;I X=5 Q 1
  1. ;I X=16 Q 1
  1. ;version 6
  1. S X=$P($G(^PSRX(S,0)),U,15)
  1. I X=3 Q 1
  1. ;I X=5 Q 1
  1. ;I X=16 Q 1
  1. Q 0
  1. ;
  1. ;
  1. HIV ;EP - HIV component
  1. I $$AGE^AUPNPAT(APCHSDFN,DT)<13 Q
  1. I $$AGE^AUPNPAT(APCHSDFN,DT)>64 Q
  1. Q:$$HIVDX(DFN,DT)
  1. NEW APCHHIVT,APCH5Y,B
  1. S B=$$DOB^AUPNPAT(APCHSDFN)
  1. S APCH5Y=($E(DT,1,3)-5)_$E(DT,4,7)
  1. S APCHHIVT=$$HIVTEST(APCHSDFN,APCH5Y,DT)
  1. I APCHHIVT Q ;had a test
  1. D SUBHEAD^APCHPWHU
  1. D S^APCHPWH1("SCREEN FOR HUMAN IMMUNODEFICIENCY VIRUS (HIV)")
  1. D S^APCHPWH1("HIV is a virus that causes a serious infection. HIV infection")
  1. D S^APCHPWH1("can cause sickness and death. A person can have HIV for many years")
  1. D S^APCHPWH1("and not know it. Everyone should be tested for HIV when they are")
  1. D S^APCHPWH1("between 13 and 64 years old. According to our records, you have not")
  1. D S^APCHPWH1("had an HIV test. Talk to your provider about how you can get an")
  1. D S^APCHPWH1("HIV test.")
  1. Q
  1. ;
  1. HIVDX(P,EDATE) ; any HIV dx ever or problem list HIV dx
  1. NEW APCHG
  1. S Y="APCHG("
  1. S BDATE=$$FMADD^XLFDT(EDATE,-365)
  1. S X=P_"^LAST DX [BGP HIV/AIDS DXS;DURING "_$$FMTE^XLFDT(BDATE)_"-"_$$FMTE^XLFDT(EDATE) S E=$$START1^APCLDF(X,Y)
  1. I $D(APCHG(1)) Q 1
  1. S T=$O(^ATXAX("B","BGP HIV/AIDS DXS",0))
  1. S X=0,G="" F S X=$O(^AUPNPROB("AC",P,X)) Q:X'=+X!(G]"") D
  1. .Q:$P(^AUPNPROB(X,0),U,12)="D"
  1. .Q:$P(^AUPNPROB(X,0),U,8)>EDATE
  1. .S Y=$P(^AUPNPROB(X,0),U)
  1. .Q:'$$ICD^ATXAPI(Y,T,9)
  1. .S G=1
  1. .Q
  1. I G Q G
  1. I $T(ATAG^BQITDUTL)]"" S X=$$ATAG^BQITDUTL(P,"HIV") I $P(X,U),($P(X,U,2)="P"!($P(X,U,2)="A")) Q 1
  1. Q ""
  1. ;
  1. LAB(P,T,LT,LN) ;EP
  1. I '$G(LT) S LT=""
  1. S LN=$G(LN)
  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)) S G=Y Q
  1. ...I LN]"",$$VAL^XBDIQ1(9000010.09,Y,.01)=LN 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 Q ""
  1. Q 1
  1. ;
  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. HIVTEST(P,BDATE,EDATE) ;
  1. NEW APCHC,APCHT,T,X,APCHLT,E,D,B,L,J,G,APCHT1,APCHA
  1. NEW BD,ED,Y,D,V
  1. K APCHA
  1. S APCHC=0
  1. S T=$O(^ATXAX("B","BGP CPT HIV TESTS",0))
  1. I T D
  1. .;go through visits in a date range for this patient, check cpts
  1. .S ED=(9999999-EDATE),BD=9999999-BDATE,G=0
  1. .F S ED=$O(^AUPNVSIT("AA",P,ED)) Q:ED=""!($P(ED,".")>BD)!(G) D
  1. ..S V=0 F S V=$O(^AUPNVSIT("AA",P,ED,V)) Q:V'=+V D
  1. ...Q:'$D(^AUPNVSIT(V,0))
  1. ...Q:'$D(^AUPNVCPT("AD",V))
  1. ...S X=0 F S X=$O(^AUPNVCPT("AD",V,X)) Q:X'=+X D
  1. ....I $$ICD^ATXAPI($P(^AUPNVCPT(X,0),U),T,1) S G=1
  1. ....Q
  1. ...Q
  1. ..Q
  1. I G Q G
  1. S T=$O(^ATXAX("B","BGP HIV TEST LOINC CODES",0))
  1. S APCHLT=$O(^ATXLAB("B","BGP HIV TEST TAX",0))
  1. S B=9999999-BDATE,E=9999999-EDATE,G=0 S D=E-1 F S D=$O(^AUPNVLAB("AE",P,D)) Q:D'=+D!(D>B) D
  1. .S L=0 F S L=$O(^AUPNVLAB("AE",P,D,L)) Q:L'=+L!(G) D
  1. ..S X=0 F S X=$O(^AUPNVLAB("AE",P,D,L,X)) Q:X'=+X!(G) D
  1. ...Q:'$D(^AUPNVLAB(X,0))
  1. ...S V=$P(^AUPNVLAB(X,0),U,3)
  1. ...I APCHLT,$P(^AUPNVLAB(X,0),U),$D(^ATXLAB(APCHLT,21,"B",$P(^AUPNVLAB(X,0),U))),'$D(APCHA((9999999-D))) S G=1 Q
  1. ...Q:'T
  1. ...S J=$P($G(^AUPNVLAB(X,11)),U,13) Q:J=""
  1. ...Q:'$$LOINC(J,T)
  1. ...I '$D(APCHA((9999999-D))) S G=1
  1. ...Q
  1. Q G
  1. ;
  1. GOALS ;EP
  1. NEW APCHEDUC,X,N,APCHGOAL,APCHX,APCHY,APCHZ
  1. D EDUC(APCHSDFN,.APCHEDUC)
  1. D GOAL(APCHSDFN,.APCHGOAL)
  1. D SUBHEAD^APCHPWHU
  1. I '$D(APCHEDUC),'$D(APCHGOAL) D Q
  1. .D S^APCHPWH1("My Healthcare Goals - No goals recorded")
  1. D S^APCHPWH1("My Healthcare Goals")
  1. S N="" F S N=$O(APCHEDUC(N)) Q:N="" D
  1. .S X=""
  1. .S Y="",Y=$P(N,"-") I Y]"" S Y=$O(^AUTTEDMT("B",Y,0)) I Y S Y=$P($G(^AUTTEDMT(Y,0)),U)
  1. .S T=$S(Y]"":Y_"-"_$P(N,"-",2),1:N),$E(X,2)=T D S^APCHPWH1(X)
  1. .S X="",$E(X,4)="Goal: "_$P(APCHEDUC(N),U,4) D S^APCHPWH1(X)
  1. I $D(APCHEDUC) D S^APCHPWH1(" ")
  1. Q:'$D(APCHGOAL)
  1. S APCHX=0 F S APCHX=$O(APCHGOAL(APCHX)) Q:APCHX'=+APCHX D
  1. .K ^UTILITY($J,"W") S X=$P($G(^AUPNGOAL(APCHX,11)),U,1),DIWL=0,DIWR=60 D ^DIWP
  1. .S X="",X="Goal Name: "_$S($L($G(^UTILITY($J,"W",0,1,0)))>1:$G(^UTILITY($J,"W",0,1,0)),$L($G(^UTILITY($J,"W",0,1,0)))=1:"This goal has not been named.",1:" ") D S^APCHPWH1(X)
  1. .I $G(^UTILITY($J,"W",0))>1 F F=2:1:$G(^UTILITY($J,"W",0)) S X="",$E(X,12)=$G(^UTILITY($J,"W",0,F,0)) D S^APCHPWH1(X)
  1. .K ^UTILITY($J,"W")
  1. .S X="",$E(X,2)="Start: "_$$FMTE^XLFDT($P(^AUPNGOAL(APCHX,0),U,9))_" Follow up: "_$$FMTE^XLFDT($P(^AUPNGOAL(APCHX,0),U,10)) D S^APCHPWH1(X)
  1. .S X="" S APCHY=0 F S APCHY=$O(^AUPNGOAL(APCHX,10,APCHY)) Q:APCHY'=+APCHY S:X]"" X=X_", " S X=X_$P(^APCDTPGT($P(^AUPNGOAL(APCHX,10,APCHY,0),U,1),0),U,1)
  1. .K ^UTILITY($J,"W") S DIWL=0,DIWR=65 D ^DIWP
  1. .S X="",X=" Type: "_$S($L($G(^UTILITY($J,"W",0,1,0)))>1:$G(^UTILITY($J,"W",0,1,0)),$L($G(^UTILITY($J,"W",0,1,0)))=1:" ",1:" ") D S^APCHPWH1(X)
  1. .I $G(^UTILITY($J,"W",0))>1 F F=2:1:$G(^UTILITY($J,"W",0)) S X="",$E(X,9)=$G(^UTILITY($J,"W",0,F,0)) D S^APCHPWH1(X)
  1. .K ^UTILITY($J,"W")
  1. .;
  1. .S APCHY=0 F S APCHY=$O(^AUPNGOAL(APCHX,21,APCHY)) Q:APCHY'=+APCHY D
  1. ..S APCHZ=0 F S APCHZ=$O(^AUPNGOAL(APCHX,21,APCHY,11,APCHZ)) Q:APCHZ'=+APCHZ D
  1. ...S X="",$E(X,2)="Step#"_$P(^AUPNGOAL(APCHX,21,APCHY,11,APCHZ,0),U,1)_": "_$P($G(^AUPNGOAL(APCHX,21,APCHY,11,APCHZ,11)),U,1)
  1. ...K ^UTILITY($J,"W") S DIWL=0,DIWR=60 D ^DIWP
  1. ...S X="",X=$S($L($G(^UTILITY($J,"W",0,1,0)))>1:$G(^UTILITY($J,"W",0,1,0)),$L($G(^UTILITY($J,"W",0,1,0)))=1:"This STEP has not been defined.",1:" ") D S^APCHPWH1(X)
  1. ...I $G(^UTILITY($J,"W",0))>1 F F=2:1:$G(^UTILITY($J,"W",0)) S X="",$E(X,10)=$G(^UTILITY($J,"W",0,F,0)) D S^APCHPWH1(X)
  1. ...K ^UTILITY($J,"W")
  1. ...S X=" Start: "_$$FMTE^XLFDT($P(^AUPNGOAL(APCHX,21,APCHY,11,APCHZ,0),U,5))_" Follow up: "_$$FMTE^XLFDT($P(^AUPNGOAL(APCHX,21,APCHY,11,APCHZ,0),U,6)) D S^APCHPWH1(X)
  1. .Q
  1. Q
  1. EDUC(P,DATA) ;EP pass back array of all educ topics
  1. ;any topic that begins with ASM or 493
  1. K DATA
  1. I '$G(P) Q
  1. NEW APCHE,X,E,%,G,A,N,D,I
  1. K ^TMP($J,"A")
  1. S A="^TMP($J,""A"","
  1. S X=P_"^ALL EDUC;DURING "_$$FMTE^XLFDT($$FMADD^XLFDT(DT,-365))_"-"_$$FMTE^XLFDT(DT) S E=$$START1^APCLDF(X,A)
  1. I '$D(^TMP($J,"A",1)) Q
  1. S %=0 F S %=$O(^TMP($J,"A",%)) Q:%'=+% D
  1. .S D=$P(^TMP($J,"A",%),U,1)
  1. .S I=+$P(^TMP($J,"A",%),U,4)
  1. .S N=$P(^AUPNVPED(I,0),U)
  1. .Q:'N
  1. .I $P(^AUPNVPED(I,0),U,14)="" Q ;only those with goal stuff
  1. .S APCHE($P(^TMP($J,"A",%),U,2),9999999-D)=$$VAL^XBDIQ1(9000010.16,+$P(^TMP($J,"A",%),U,4),.06)_U_$$VAL^XBDIQ1(9000010.16,+$P(^TMP($J,"A",%),U,4),.13)_U_$$VAL^XBDIQ1(9000010.16,+$P(^TMP($J,"A",%),U,4),.14)
  1. S N="" F S N=$O(APCHE(N)) Q:N="" S DATA(N)=(9999999-$O(APCHE(N,0)))_U_APCHE(N,$O(APCHE(N,0)))
  1. K APCHE,^TMP($J,"A")
  1. Q
  1. ;
  1. GOAL(P,DATA) ;EP - pass back array in chronological order by start date and ien
  1. K DATA
  1. I '$G(P) Q
  1. NEW APCHE,X,E,%,G,A,N,D,I
  1. S X=0 F S X=$O(^AUPNGOAL("AC",P,X)) Q:X'=+X D
  1. .Q:'$D(^AUPNGOAL(X,0))
  1. .Q:$P(^AUPNGOAL(X,0),U,1)="N" ;not set excluded
  1. .Q:$P(^AUPNGOAL(X,0),U,11)="ME" ;MET
  1. .Q:$P(^AUPNGOAL(X,0),U,11)="D" ;deleted
  1. .Q:$P(^AUPNGOAL(X,0),U,11)="S" ;changed
  1. .S DATA(X)=""
  1. Q