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

APCHPMH3.m

Go to the documentation of this file.
  1. APCHPMH3 ; IHS/CMI/LAB - Patient Wellness Handout ;
  1. ;;2.0;IHS PCC SUITE;;MAY 14, 2009
  1. ;
  1. ;
  1. ;
  1. MEDS ;EP - DISPLAY MEDS
  1. ;Suppress original text per Chris Lamer 11/29/07 *17*
  1. ;S X="Medicines are important - it helps to know" D S(X,1)
  1. ;S X="",$E(X,5)="Why you will take it?" D S(X,1) ;*17*
  1. ;S X="",$E(X,5)="When to take it?" D S(X)
  1. ;S X="",$E(X,5)="How much to take?" D S(X)
  1. ;S X="",$E(X,5)="What to do if you forget to take it?" D S(X)
  1. ;S X="",$E(X,5)="What could happen if you forget or take too much." D S(X)
  1. ;S X="Knowing these things will help the medicine work best for you." D S(X,1) ;*17*
  1. S X="Medications - here is a list of the medicines you are taking:" D S(X,1)
  1. S X="" D S(X)
  1. ;
  1. ;get all "active" meds
  1. S APCHSDLM=$$FMADD^XLFDT(DT,-365),APCHSDLM=9999999-APCHSDLM
  1. S APCHSIVD=0,APCHSMCT=0 F APCHSQ=0:0 S APCHSIVD=$O(^AUPNVMED("AA",APCHSDFN,APCHSIVD)) Q:APCHSIVD=""!(APCHSIVD>APCHSDLM) S APCHSMX=0 F APCHSQ=0:0 S APCHSMX=$O(^AUPNVMED("AA",APCHSDFN,APCHSIVD,APCHSMX)) Q:APCHSMX="" D MEDBLD
  1. I $G(APCHSMCT)=0 S X="",$E(X,5)="No current meds on file" D S(X)
  1. S APCHSMED=""
  1. F S APCHSMED=$O(APCHSM(APCHSMED)) Q:$G(APCHSMED)']"" D
  1. .S X="",$E(X,5)=APCHSMED D S(X)
  1. .K ^UTILITY($J,"W") S APCHSIG=$P($G(APCHSM(APCHSMED)),U,5),X=APCHSIG,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(X)
  1. .I $G(^UTILITY($J,"W",0))>1 F I=2:1:$G(^UTILITY($J,"W",0)) S X="",$E(X,7)=$G(^UTILITY($J,"W",0,I,0)) D S(X)
  1. .K ^UTILITY($J,"W")
  1. .Q
  1. D HOLD
  1. I '$D(APCHHM) Q
  1. S X="Medications ordered, but not yet dispensed" D S(X,1)
  1. S X="" D S(X)
  1. S APCHHMED=""
  1. F S APCHHMED=$O(APCHHM(APCHHMED)) Q:$G(APCHHMED)']"" D
  1. .S X="",$E(X,5)=APCHHMED D S(X)
  1. Q
  1. MEDBLD ;BUILD ARRAY OF MEDICATIONS
  1. ;
  1. K APCHSRXP,APCHSCOT
  1. Q:'$D(^AUPNVMED(APCHSMX,0))
  1. S APCHSN=^AUPNVMED(APCHSMX,0)
  1. Q:'$D(^PSDRUG($P(APCHSN,U,1)))
  1. S APCHSDTM=-APCHSIVD\1+9999999 ;Visit date from V Med .03 field
  1. Q:$P(APCHSN,U,8)]"" ;date discontinued
  1. S APCHSRXP=$S($D(^PSRX("APCC",APCHSMX)):$O(^(APCHSMX,0)),1:0) ;RX IEN
  1. I APCHSRXP>0 S RX0=^PSRX(APCHSRXP,0),RX2=^PSRX(APCHSRXP,2) I '$D(^PSRX(APCHSRXP,"STA")) D RXSTAT Q:ST="EXPIRED"!(ST="CANCELLED")!(ST="DELETED") ;CALCULATE RX STATUS IF V6
  1. I $G(APCHSRXP)'>0 S APCHSCOT=1 ;may be using COTS or med entered via PCC data entry
  1. I $P($G(^AUPNVMED(APCHSMX,12)),U,9)]"" S APCHSCOT=1 ;external key present
  1. S APCHSSTA=$P($G(^PSRX(APCHSRXP,0)),U,15) ;Active? RX File status
  1. Q:$G(APCHSSTA)>10 ;status is expired, deleted or cancelled
  1. I $G(^PSRX(APCHSRXP,"STA"))>10 Q ;Status is in "STA" node in V 7
  1. I $G(^PSRX(APCHSRXP,"STA"))=1 Q ;NON-VERIFIED
  1. I $G(^PSRX(APCHSRXP,"STA"))=4 Q ;DRUG INTERACTION
  1. S APCHSIG=""
  1. S APCHSIG=$P($G(APCHSN),U,5)
  1. D SIG ;get expanded sig
  1. S APCHSDYS=$P($G(APCHSN),U,7) ;days supply
  1. ;Q:APCHSDYS=1 ;quit if only 1 day supply
  1. I $G(APCHSCOT)=1,$G(APCHSDYS)]"",$$FMDIFF^XLFDT(DT,APCHSDTM)>$G(APCHSDYS) Q
  1. ;Q:$P($G(^AUPNVMED(APCHSMX,0)),U,6)=1 ;quit if qty=1
  1. I $P($G(^AUPNVMED(APCHSMX,0)),U,6)=1,APCHSDYS=1 Q ;quit if qty=1 AND days supply=1 **17**
  1. S APCHSMFX=$P(^PSDRUG(+APCHSN,0),U) D ;compare Drug File .01 field & V Med Name of Non Table Drug
  1. .Q:$P(APCHSN,U,4)=""
  1. .I $P($G(APCHSN),U,4)]"",$P($G(APCHSN),U,4)=$P(^PSDRUG(+APCHSN,0),U) Q
  1. .I $P($G(APCHSN),U,4)]"",$P($G(APCHSN),U,4)'=$P(^PSDRUG(+APCHSN,0),U) S APCHSMFX=$P(APCHSN,U,4)
  1. .Q
  1. I $G(APCHSM(APCHSMFX)) Q ;quit if med already exists
  1. S APCHSM(APCHSMFX)=+APCHSN_U_APCHSDYS ;PSDRUG ien^days supply
  1. I $G(APCHSRXP)>0 S $P(APCHSM(APCHSMFX),U,3)=APCHSRXP ;^PSRX ien
  1. S $P(APCHSM(APCHSMFX),U,4)=$G(ST) ;status from RXSTAT
  1. S $P(APCHSM(APCHSMFX),U,5)=$G(APCHSSGY)
  1. S APCHSMCT=APCHSMCT+1 ;number of active meds
  1. Q
  1. ;
  1. RXSTAT ;gets status of rx ... TAKEN FROM PSOFUNC ROUTINE
  1. Q:$D(^PSRX(APCHSRXP,"STA")) ;USING V7
  1. Q:$G(APCHSRXP)'>0
  1. S J=APCHSRXP
  1. S ST0=+$P(RX0,"^",15) I ST0<12,$O(^PS(52.5,"B",J,0)),$D(^PS(52.5,+$O(^(0)),0)),'$G(^("P")) S ST0=5
  1. I ST0<12,$P(RX2,"^",6),$P(RX2,"^",6)'>DT S ST0=11
  1. S ST=$P("ERROR^ACTIVE^NON-VERIFIED^REFILL FILL^HOLD^PENDING DUE TO DRUG INTERACTION^SUSPENDED^^^^^DONE^EXPIRED^CANCELLED^DELETED","^",ST0+2),$P(RX0,"^",15)=ST0
  1. Q
  1. ;S ST0=+$P(RX0,"^",15) I ST0<12,$O(^PS(52.5,"B",J,0)),$D(^PS(52.5,+$O(^(0)),0)),'$G(^("P")) S ST0=5
  1. ;I ST0<12,$P(RX2,"^",6)<DT S ST0=11
  1. ;S ST=$P("Error^Active^Non-Verified^Refill^Hold^Non-Verified^Suspended^^^^^Done^Expired^Discontinued^Deleted^Discontinued^Discontinued (Edit)^Provider Hold^","^",ST0+2),$P(RX0,"^",15)=ST0
  1. ;Q
  1. HOLD ;Now get meds in Pharmacy yet to be completed
  1. Q:'APCHSDFN
  1. S APCHSDT=DT
  1. F S APCHSDT=$O(^PS(55,APCHSDFN,"P","A",APCHSDT)) Q:APCHSDT'=+APCHSDT D
  1. .S APCHNMED=0 F S APCHNMED=$O(^PS(55,APCHSDFN,"P","A",APCHSDT,APCHNMED)) Q:'APCHNMED D
  1. ..I $G(^PSRX(APCHNMED,"STA"))=3!($G(^PSRX(APCHNMED,"STA"))=5) D
  1. ...S APCHHMED=$P(^PSRX(APCHNMED,0),U,6) I $G(APCHHMED)]"" S APCHHMED=$P(^PSDRUG(APCHHMED,0),U)
  1. ...S APCHHM(APCHHMED)=APCHNMED
  1. ..Q
  1. Q
  1. ;
  1. SIG ;CONSTRUCT THE FULL TEXT FROM THE ENCODED SIG
  1. S APCHSSGY="" F APCHSP=1:1:$L(APCHSIG," ") S X=$P(APCHSIG," ",APCHSP) I X]"" D
  1. . S Y=$O(^PS(51,"B",X,0)) I Y>0 S X=$P(^PS(51,Y,0),"^",2) I $D(^(9)) S Y=$P(APCHSIG," ",APCHSP-1),Y=$E(Y,$L(Y)) S:Y>1 X=$P(^(9),"^",1)
  1. . S APCHSSGY=APCHSSGY_X_" "
  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. ;
  1. ;
  1. CLOSE ;EP - Write closing statement per Chris Lamer 11/29/07 *17*
  1. ;
  1. S X="* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *" D S(X,1)
  1. S X="",$E(X,5)="This handout is yours to keep and contains information that is in your" D S(X)
  1. S X="",$E(X,5)="medical record (your chart). You can keep this handout for your records" D S(X)
  1. S X="",$E(X,5)="or share the information with other health care workers. Please let us" D S(X)
  1. S X="",$E(X,5)="know if anything is wrong or missing from your handout - we want to be" D S(X)
  1. S X="",$E(X,5)="sure it is correct." D S(X)
  1. S X="",$E(X,5)="Thank you and have a healthy day!" D S(X,1)
  1. Q