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

BHSMEDR.m

Go to the documentation of this file.
  1. BHSMEDR ;IHS/MSC/MGH - Health Summary for MED RECONCILIATION ;01-May-2014 11:12;DU
  1. ;;1.0;HEALTH SUMMARY COMPONENTS;**4,6,8,9**;March 17, 2006;Build 16
  1. ;;---------------------------------------------------------------
  1. ; IHS/CMI/LAB - APCHS7R -- SUMMARY PRODUCTION COMPONENTS ;
  1. ;;2.0;IHS PCC SUITE;**2**;MAY 14, 2009
  1. ;
  1. ;Patch 6 for non-VA meds
  1. SET ;
  1. S BHSRX=P,BHSREF=0 D REF
  1. S BHSTAT(C,N,D,(9999999-F),M)=$S(P:$P(^PSRX(P,0),U),1:"")_U_BHSREF
  1. S $P(BHSTAT(C,N,D,(9999999-F),M),U,10)=P
  1. S BHMDSP(D,N,F)=""
  1. Q
  1. MEDRCON ; ************* MEDS BY PRESCRIPTION STATUS *************
  1. ;
  1. CONT ; <SETUP>
  1. N BHSPAT,BHSQ
  1. S BHSPAT=DFN
  1. I '$D(^AUPNVMED("AC",BHSPAT)),'$D(^PS(52.41,"P",BHSPAT)) Q
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. ; <BUILD>
  1. NEW BHMEDS,BHSTAT,BHCNT,BHMDSP,BHDI,BHDT,BHM,BHN,BHSSGY,BHSIG,BHZ,BHSN,BHST,BHI,BHD,BHS11
  1. NEW X,F,M,V,D,N,P,C,E,S,R,J,BHSITE,BHSORT,BHSP,BHSREF,BHSRFL,BHSRX,BHSVDF,BHT,BHSNVA
  1. S BHCNT=0
  1. K BHMEDS,BHMDSP
  1. D GETMEDS^APCHSMU1(BHSPAT,$$FMADD^XLFDT(DT,-395),DT,,,,,.BHMEDS)
  1. ;I '$D(APCHMEDS) D MEDX Q
  1. ;NOW REORDER THEM BY STATUS
  1. K BHSTAT
  1. S X=0 F S X=$O(BHMEDS(X)) Q:X'=+X D
  1. .S P=""
  1. .S F=$P(BHMEDS(X),U,1) ;FILL DATE
  1. .S M=$P(BHMEDS(X),U,4) ;vmed ien
  1. .S V=$P(BHMEDS(X),U,5) ;visit ien
  1. .S D=$P(^AUPNVMED(M,0),U) ;drug ien
  1. .S N=$P(^AUPNVMED(M,0),U,4) ;non table drug name
  1. .I N="" S N=$P(^PSDRUG(D,0),U) ;drug name
  1. .I $P($G(^AUPNVSIT(X,0)),U,7)="E" S C="OUTSIDE MEDICATIONS" D SET Q
  1. .I $P($G(^AUPNVSIT(X,11)),U,8) S C="OUTSIDE MEDICATIONS" D SET Q
  1. .S P=$O(^PSRX("APCC",M,0))
  1. .I 'P S C="OUTSIDE MEDICATIONS" D SET Q
  1. .I '$D(^PSRX(P,0)) S P="",C="OUTSIDE MEDICATIONS" D SET Q
  1. .;Patch 8 for autofinished meds
  1. .I $$VALI^XBDIQ1(52,P,9999999.23)=1 S C="OUTSIDE PHARMACY MEDS" D SET Q
  1. .S S=$$VALI^XBDIQ1(52,P,100) ;GET STATUS
  1. .I S=0 S C="ACTIVE MEDICATIONS" D SET Q
  1. .I S=3 S C="HOLD" D SET Q
  1. .I S=5 S C="SUSPENDED" D SET Q
  1. .I S=11 D Q
  1. ..;get expiration date
  1. ..S E=$P($G(^PSRX(P,3)),U,6)
  1. ..S R=$$CHRONIC^APCHS72(M) ;chronic flag
  1. ..I 'R D Q
  1. ...;not chronic, check to see if expired in past 14 days, if not quit
  1. ...S J=$$FMDIFF^XLFDT(DT,E)
  1. ...Q:J>14 ;more than 14 days ago so don't display
  1. ...;check to see if same drug is already listed somewhere
  1. ...Q:$O(BHMDSP(D,N,F)) ;another of same drug after this date
  1. ...S C="EXPIRED" D SET Q
  1. ..;chronic = check 120 days
  1. ..S J=$$FMDIFF^XLFDT(DT,E)
  1. ..Q:J>120 ;expired more than 120 days ago
  1. ..Q:$O(BHMDSP(D,N,F)) ;another one there so don't display this one
  1. ..S C="EXPIRED" D SET Q
  1. .I S=12!(S=14) D
  1. ..S E=$P(^AUPNVMED(M,0),U,8) ;discontinued date in v med
  1. ..I E="" S E=$P($G(^PSRX(P,3)),U,5) ;canceled date in 52
  1. ..I $$FMDIFF^XLFDT(DT,E)>30 Q ;only discontinueds in past 30 days
  1. ..Q:$O(BHMDSP(D,N,F))
  1. ..S C="DISCONTINUED MEDICATIONS" D SET Q
  1. GETNVA ;NVA from file 55
  1. N L,D,N,X,DC
  1. S X=0 F S X=$O(^PS(55,BHSPAT,"NVA",X)) Q:X'=+X D
  1. .S DC=0
  1. .I $P($G(^PS(55,BHSPAT,"NVA",X,999999911)),U,1) D Q:DC=1
  1. ..I $D(^AUPNVMED($P(^PS(55,BHSPAT,"NVA",X,999999911),U,1),0)) D
  1. ...I $P($G(^PS(55,BHSPAT,"NVA",X,0)),U,6)'="" S DC=1
  1. .S L=$P($P($G(^PS(55,BHSPAT,"NVA",X,0)),U,10),".")
  1. .S L=9999999-L
  1. .S D=$P(^PS(55,BHSPAT,"NVA",X,0),U,2)
  1. .I D="" S D="NO DRUG IEN"
  1. .S N=$S(D:$P(^PSDRUG(D,0),U,1),1:$P(^PS(50.7,$P(^PS(55,BHSPAT,"NVA",X,0),U,1),0),U,1))
  1. .S BHSTAT("NVA",N,D,(9999999-L))=U_"N",$P(BHSTAT("NVA",N,D,(9999999-L)),U,8)=$P(^PS(55,BHSPAT,"NVA",X,0),U,4)_" "_$P(^PS(55,BHSPAT,"NVA",X,0),U,5)_U_$P(^PS(55,BHSPAT,"NVA",X,0),U,7)
  1. .S $P(BHSTAT("NVA",N,D,(9999999-L)),U,10)=X
  1. GETPEND ;
  1. NEW PEN,ORD
  1. F PEN=0:0 S PEN=$O(^PS(52.41,"P",BHSPAT,PEN)) Q:'PEN S ORD=^PS(52.41,PEN,0),BHI=$P(ORD,"^",8),BHD=+$P(ORD,"^",9) D:$P(ORD,"^",3)'="DC"&($P(ORD,"^",3)'="DE")&($P(ORD,"^",3)'="HD")
  1. .S BHN=$S(BHD:$P($G(^PSDRUG(BHD,0)),"^"),+BHI&('BHD):$P(^PS(50.7,BHI,0),"^")_" "_$P(^PS(50.606,$P(^PS(50.7,BHI,0),"^",2),0),"^"),1:"") Q:BHN']""
  1. .S BHSTAT("PENDING",BHN,PEN)=$$VAL^XBDIQ1(52.41,PEN,13)
  1. .S C=0,X="" F S C=$O(^PS(52.41,PEN,"SIG",C)) Q:'C S X=X_$S(X]"":" ",1:"")_^PS(52.41,PEN,"SIG",C,0)
  1. .S $P(BHSTAT("PENDING",BHN,PEN),U,2)=X
  1. DISP ;DISPLAY MEDS
  1. ;ACTIVE MEDS FIRST - ALL OF THEM
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. I '$D(BHSTAT("ACTIVE MEDICATIONS")) G OUT
  1. W "ACTIVE MEDICATIONS",!
  1. S BHCNT=0
  1. S BHT=1
  1. S BHN="" F S BHN=$O(BHSTAT("ACTIVE MEDICATIONS",BHN)) Q:BHN=""!($D(GMTSQIT)) D
  1. .S BHDI="" F S BHDI=$O(BHSTAT("ACTIVE MEDICATIONS",BHN,BHDI)) Q:BHDI=""!($D(GMTSQIT)) D
  1. ..S BHDT=0 F S BHDT=$O(BHSTAT("ACTIVE MEDICATIONS",BHN,BHDI,BHDT)) Q:BHDT'=+BHDT!($D(GMTSQIT)) D
  1. ...S BHM=0 F S BHM=$O(BHSTAT("ACTIVE MEDICATIONS",BHN,BHDI,BHDT,BHM)) Q:BHM'=+BHM!($D(GMTSQIT)) S BHZ=BHSTAT("ACTIVE MEDICATIONS",BHN,BHDI,BHDT,BHM) D MEDDSP
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. I '$D(BHSTAT("OUTSIDE PHARMACY MEDS")) G OUT
  1. W "OUTSIDE PHARMACY MEDS",!
  1. S BHCNT=0
  1. S BHT=1
  1. S BHN="" F S BHN=$O(BHSTAT("OUTSIDE PHARMACY MEDS",BHN)) Q:BHN=""!($D(GMTSQIT)) D
  1. .S BHDI="" F S BHDI=$O(BHSTAT("OUTSIDE PHARMACY MEDS",BHN,BHDI)) Q:BHDI=""!($D(GMTSQIT)) D
  1. ..S BHDT=0 F S BHDT=$O(BHSTAT("OUTSIDE PHARMACY MEDS",BHN,BHDI,BHDT)) Q:BHDT'=+BHDT!($D(GMTSQIT)) D
  1. ...S BHM=0 F S BHM=$O(BHSTAT("OUTSIDE PHARMACY MEDS",BHN,BHDI,BHDT,BHM)) Q:BHM'=+BHM!($D(GMTSQIT)) S BHZ=BHSTAT("OUTSIDE PHARMACY MEDS",BHN,BHDI,BHDT,BHM) D MEDDSP
  1. OUT ;OUTSIDE MEDICATIONS
  1. I '$D(BHSTAT("OUTSIDE MEDICATIONS"))&('$D(BHSTAT("NVA"))) G HOLD
  1. W "--------------------",!
  1. W "OUTSIDE MEDICATIONS",!
  1. S BHN="" F S BHN=$O(BHSTAT("OUTSIDE MEDICATIONS",BHN)) Q:BHN=""!($D(GMTSQIT)) D
  1. .S BHDI="" F S BHDI=$O(BHSTAT("OUTSIDE MEDICATIONS",BHN,BHDI)) Q:BHDI=""!($D(GMTSQIT)) D
  1. ..S BHDT=0 S BHDT=$O(BHSTAT("OUTSIDE MEDICATIONS",BHN,BHDI,BHDT)) Q:BHDT'=+BHDT!($D(GMTSQIT)) D
  1. ...S BHM=0 S BHM=$O(BHSTAT("OUTSIDE MEDICATIONS",BHN,BHDI,BHDT,BHM)) Q:BHM'=+BHM!($D(GMTSQIT)) S BHZ=BHSTAT("OUTSIDE MEDICATIONS",BHN,BHDI,BHDT,BHM) D MEDDSPO
  1. ;now display nva
  1. S BHN="" F S BHN=$O(BHSTAT("NVA",BHN)) Q:BHN=""!($D(GMTSQIT)) D
  1. .S BHDI="" F S BHDI=$O(BHSTAT("NVA",BHN,BHDI)) Q:BHDI=""!($D(GMTSQIT)) D
  1. ..S BHDT=0 S BHDT=$O(BHSTAT("NVA",BHN,BHDI,BHDT)) Q:BHDT'=+BHDT!($D(GMTSQIT)) D
  1. ...S BHZ=BHSTAT("NVA",BHN,BHDI,BHDT) D MEDDSPN
  1. HOLD ;HOLD MEDICATIONS
  1. I '$D(BHSTAT("HOLD MEDICATIONS")) G SUSPEND
  1. S BHT=3
  1. W "--------------------",!
  1. W "ACTIVE NOT DISPENSED MEDICATIONS",!
  1. S BHN="" F S BHN=$O(BHSTAT("HOLD MEDICATIONS",BHN)) Q:BHN=""!($D(GMTSQIT)) D
  1. .S BHDI="" F S BHDI=$O(BHSTAT("HOLD MEDICATIONS",BHN,BHDI)) Q:BHDI=""!($D(GMTSQIT)) D
  1. ..S BHDT=0 F S BHDT=$O(BHSTAT("HOLD MEDICATIONS",BHN,BHDI,BHDT)) Q:BHDT'=+BHDT!($D(GMTSQIT)) D
  1. ...S BHM=0 F S BHM=$O(BHSTAT("HOLD MEDICATIONS",BHN,BHDI,BHDT,BHM)) Q:BHM'=+BHM!($D(GMTSQIT)) S BHZ=BHSTAT("HOLD MEDICATIONS",BHN,BHDI,BHDT,BHM) D MEDDSP
  1. SUSPEND ;
  1. I '$D(BHSTAT("SUSPEND MEDICATIONS")) G PENDING
  1. S BHT=4
  1. W !,"--------------------",!
  1. W "SUSPENDED MEDICATIONS",!
  1. S BHN="" F S BHN=$O(BHSTAT("SUSPEND MEDICATIONS",BHN)) Q:BHN=""!($D(GMTSQIT)) D
  1. .S BHDI="" F S BHDI=$O(BHSTAT("SUSPEND MEDICATIONS",BHN,BHDI)) Q:BHDI=""!($D(GMTSQIT)) D
  1. ..S BHDT=0 F S BHDT=$O(BHSTAT("SUSPEND MEDICATIONS",BHN,BHDI,BHDT)) Q:BHDT'=+BHDT!($D(GMTSQIT)) D
  1. ...S BHM=0 F S BHM=$O(BHSTAT("SUSPEND MEDICATIONS",BHN,BHDI,BHDT,BHM)) Q:BHM'=+BHM!($D(GMTSQIT)) S BHZ=BHSTAT("SUSPEND MEDICATIONS",BHN,BHDI,BHDT,BHM) D MEDDSP
  1. PENDING ;
  1. I '$D(BHSTAT("PENDING")) G EXPIRED
  1. W "--------------------",!
  1. W "PENDING MEDICATIONS",!
  1. S BHN="" F S BHN=$O(BHSTAT("PENDING",BHN)) Q:BHN=""!($D(GMTSQIT)) D
  1. .S BHDI="" F S BHDI=$O(BHSTAT("PENDING",BHN,BHDI)) Q:BHDI=""!($D(GMTSQIT)) D
  1. ..S BHZ=BHSTAT("PENDING",BHN,BHDI) D MEDDSPP
  1. EXPIRED ;
  1. I '$D(BHSTAT("EXPIRED MEDICATIONS")) G DISCONT
  1. S BHT=6
  1. W "--------------------",!
  1. W "CHRONIC AND RECENTLY EXPIRED MEDICATIONS",!
  1. S BHN="" F S BHN=$O(BHSTAT("EXPIRED MEDICATIONS",BHN)) Q:BHN=""!($D(GMTSQIT)) D
  1. .S BHDI="" F S BHDI=$O(BHSTAT("EXPIRED MEDICATIONS",BHN,BHDI)) Q:BHDI=""!($D(GMTSQIT)) D
  1. ..S BHDT=0 F S BHDT=$O(BHSTAT("EXPIRED MEDICATIONS",BHN,BHDI,BHDT)) Q:BHDT'=+BHDT!($D(GMTSQIT)) D
  1. ...S BHM=0 F S BHM=$O(BHSTAT("EXPIRED MEDICATIONS",BHN,BHDI,BHDT,BHM)) Q:BHM'=+BHM!($D(GMTSQIT)) S BHZ=BHSTAT("EXPIRED MEDICATIONS",BHN,BHDI,BHDT,BHM) D MEDDSP
  1. DISCONT ;
  1. I '$D(BHSTAT("DISCONTINUED MEDICATIONS")) G MEDX
  1. S BHT=7
  1. W "--------------------",!
  1. W "RECENTLY DISCONTINUED MEDICATIONS",!
  1. S BHN="" F S BHN=$O(BHSTAT("DISCONTINUED MEDICATIONS",BHN)) Q:BHN=""!($D(GMTSQIT)) D
  1. .S BHDI="" F S BHDI=$O(BHSTAT("DISCONTINUED MEDICATIONS",BHN,BHDI)) Q:BHDI=""!($D(GMTSQIT)) D
  1. ..S BHDT=0 F S BHDT=$O(BHSTAT("DISCONTINUED MEDICATIONS",BHN,BHDI,BHDT)) Q:BHDT'=+BHDT!($D(GMTSQIT)) D
  1. ...S BHM=0 F S BHM=$O(BHSTAT("DISCONTINUED MEDICATIONS",BHN,BHDI,BHDT,BHM)) Q:BHM'=+BHM!($D(GMTSQIT)) S BHZ=BHSTAT("DISCONTINUED MEDICATIONS",BHN,BHDI,BHDT,BHM) D MEDDSP
  1. MEDX ;
  1. Q
  1. MEDDSPP ;DISPLAY MEDICATION
  1. N BHSRX,BHSORD
  1. S BHCNT=BHCNT+1
  1. S BHS11=$G(^AUPNVMED(BHZ,11))
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. W BHCNT,".",?6,BHN W:$P(BHZ,U,2) ?60,"Refills: ",$S('$P(BHZ,U,1):"NONE",1:$P(BHZ,U,1)) W !
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. K ^UTILITY($J,"W") S X=$P(BHZ,U,2),DIWL=0,DIWR=60 D ^DIWP
  1. W ?6,"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:" "),!
  1. I $G(^UTILITY($J,"W",0))>1 F F=2:1:$G(^UTILITY($J,"W",0)) Q:$D(GMTSQIT) D
  1. .D CKP^GMTSUP Q:$D(GMTSQIT)
  1. .W ?19,$G(^UTILITY($J,"W",0,F,0)),!
  1. K ^UTILITY($J,"W")
  1. S BHSORD=$$GET1^DIQ(52.41,BHDI,.01,"I")
  1. I +BHSORD D RECON^BHSMED(BHSORD,"M")
  1. E D
  1. .N NVA
  1. .S NVA=+$P(BHS11,U,8)
  1. .I NVA'="" D
  1. ..S BHSORD=$P($G(^PS(55,DFN,"NVA",NVA,0)),U,8)
  1. ..D RECON^BHSMED(BHSORD,"M")
  1. Q
  1. MEDDSPO ;DISPLAY MEDICATION
  1. N BHSRX,BHSORD
  1. S BHSN=^AUPNVMED(BHM,0)
  1. S BHCNT=BHCNT+1
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. W BHCNT,".",?6,BHN W:$P(BHZ,U,2) ?60,"Refills left: ",$S('$P(BHZ,U,2):"NONE",1:$P(BHZ,U,2)) W !
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. S BHSIG=$P(^AUPNVMED(BHM,0),U,5) D SIG
  1. S X=BHSSGY
  1. K ^UTILITY($J,"W") S DIWL=0,DIWR=60 D ^DIWP
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. W ?6,"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:" "),!
  1. I $G(^UTILITY($J,"W",0))>1 F F=2:1:$G(^UTILITY($J,"W",0)) Q:$D(GMTSQIT) D
  1. .D CKP^GMTSUP Q:$D(GMTSQIT)
  1. .W ?19,$G(^UTILITY($J,"W",0,F,0)),!
  1. K ^UTILITY($J,"W")
  1. S BHSRX=$P(BHZ,U,10)
  1. S BHSORD=$$GET1^DIQ(52,BHSRX,39.3,"I")
  1. I +BHSORD D RECON^BHSMED(BHSORD,"M")
  1. E D
  1. .N NVA
  1. .S NVA=BHSRX
  1. .I NVA'="" D
  1. ..S BHSORD=$P($G(^PS(55,DFN,"NVA",NVA,0)),U,8)
  1. ..D RECON^BHSMED(BHSORD,"M")
  1. Q
  1. MEDDSP ;DISPLAY MEDICATION
  1. N BHSRX,BHSORD
  1. S BHSN=^AUPNVMED(BHM,0)
  1. S BHS11=^AUPNVMED(BHM,11)
  1. S BHCNT=BHCNT+1
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. W BHCNT,".",?6,BHN,?40,"Rx #:",$P(BHZ,U,1),?60,"Refills left: ",$S('$P(BHZ,U,2):"NONE",1:$P(BHZ,U,2)),!
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. S BHSIG=$P(^AUPNVMED(BHM,0),U,5) D SIG
  1. S X=BHSSGY
  1. K ^UTILITY($J,"W") S DIWL=0,DIWR=60 D ^DIWP
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. W ?6,"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:" "),!
  1. I $G(^UTILITY($J,"W",0))>1 F F=2:1:$G(^UTILITY($J,"W",0)) Q:$D(GMTSQIT) D
  1. .D CKP^GMTSUP Q:$D(GMTSQIT)
  1. .W ?19,$G(^UTILITY($J,"W",0,F,0)),!
  1. K ^UTILITY($J,"W")
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. I BHT=1!(BHT=6) W ?6,"Last Filled: ",$$D(9999999-BHDT) D
  1. .S BHSORT="" I BHT=1 S BHSORT=$P($G(^AUPNVMED(BHM,11)),U)
  1. .I BHSORT["RETURNED TO STOCK" W " ---",BHSORT," ",$$FMTE^XLFDT($P(^AUPNVMED(BHM,0),U,8),"2D")
  1. I BHT=6 I $P(BHZ,U,1) S E=$P($G(^PSRX($P(BHZ,U,1),3)),U,6) W ?30,"Expired: ",$$D(E)
  1. W !
  1. I BHT=3 W ?6,"Hold Reason: " I $P(BHZ,U,1) W $P($G(^PSRX($P(BHZ,U,1),"H")),U,1)
  1. I BHT=7 W ?6,"Discontinued: " D
  1. .S E=$P(^AUPNVMED(BHM,0),U,8) ;discontinued date in v med
  1. .I E="",$P(BHZ,U,1) S E=$P($G(^PSRX($P(BHZ,U,1),3)),U,5) ;canceled date in 52
  1. .W $$D(E),!
  1. S BHSRX=$P(BHZ,U,10)
  1. S BHSORD=$$GET1^DIQ(52,BHSRX,39.3,"I")
  1. I +BHSORD D RECON^BHSMED(BHSORD,"M")
  1. E D
  1. .N NVA
  1. .S NVA=BHSRX
  1. .I NVA'="" D
  1. ..S BHSORD=$P($G(^PS(55,DFN,"NVA",NVA,0)),U,8)
  1. ..D RECON^BHSMED(BHSORD,"M")
  1. Q
  1. MEDDSPN ;
  1. S BHCNT=BHCNT+1
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. W BHCNT,".",?6,BHN,! ;W:$P(APCHZ,U,2) ?60,"Refills left: ",$S('$P(APCHZ,U,2):"NONE",1:$P(APCHZ,U,2)) W !
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. S BHSIG=$P(BHZ,U,8) D SIG
  1. S X=BHSSGY
  1. K ^UTILITY($J,"W") S DIWL=0,DIWR=60 D ^DIWP
  1. D CKP^GMTSUP Q:$D(GMTSQIT)
  1. W ?6,"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:" "),!
  1. I $G(^UTILITY($J,"W",0))>1 F F=2:1:$G(^UTILITY($J,"W",0)) Q:$D(GMTSQIT) D
  1. .D CKP^GMTSUP Q:$D(GMTSQIT)
  1. .W ?19,$G(^UTILITY($J,"W",0,F,0)),!
  1. I $P(BHZ,U,9) W !?19,"DATE DISCONTINUED: ",$$FMTE^XLFDT($P(BHZ,U,9))
  1. K ^UTILITY($J,"W")
  1. S BHSNVA=$P(BHZ,U,10)
  1. S BHSORD=$P($G(^PS(55,DFN,"NVA",BHSNVA,0)),U,8)
  1. I +BHSORD D RECON^BHSMED(BHSORD,"M")
  1. E D
  1. .N NVA
  1. .S NVA=BHSNVA
  1. .I NVA'="" D
  1. ..S BHSORD=$P($G(^PS(55,DFN,"NVA",NVA,0)),U,8)
  1. ..D RECON^BHSMED(BHSORD,"M")
  1. Q
  1. D(D) ;
  1. I D="" Q ""
  1. Q $E(D,4,5)_"-"_$E(D,6,7)_"-"_$E(D,2,3)
  1. ;
  1. SIG ;CONSTRUCT THE FULL TEXT FROM THE ENCODED SIG
  1. S BHSSGY="" F BHSP=1:1:$L(BHSIG," ") S X=$P(BHSIG," ",BHSP) 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(BHSIG," ",BHSP-1),Y=$E(Y,$L(Y)) S:Y>1 X=$P(^(9),"^",1)
  1. . S BHSSGY=BHSSGY_X_" "
  1. Q
  1. ;
  1. REF ;DETERMINE THE NUMBER OF REFILLS REMAINING
  1. I 'BHSRX S BHSREF=$P($G(^AUPNVMED(M,11)),U,7) S:BHSREF="" BHSREF=0 Q
  1. S BHSRFL=$P(^PSRX(BHSRX,0),U,9) S BHSREF=0 F S BHSREF=$O(^PSRX(BHSRX,1,BHSREF)) Q:'BHSREF S BHSRFL=BHSRFL-1
  1. S BHSREF=BHSRFL
  1. Q
  1. ;
  1. ;
  1. SITE ;DETERMINE IF OUTSIDE LOCATION INFO PRESENT
  1. S BHSITE=""
  1. I $D(^AUPNVSIT(BHSVDF,21))#2 S BHSITE=$P(^(21),U) Q
  1. Q:$P(^AUPNVSIT(BHSVDF,0),U,6)=""
  1. I $P(^AUPNVSIT(BHSVDF,0),U,6)'=DUZ(2) S BHSITE=$E($P(^DIC(4,$P(^AUPNVSIT(BHSVDF,0),U,6),0),U),1,30)
  1. Q
  1. ;
  1. CS(D) ;
  1. I $P(^PSDRUG(D,0),U,3)="" Q 0
  1. NEW Y S Y=$P(^PSDRUG(D,0),U,3)
  1. ;I Y[1 Q 1
  1. I Y[2 Q 1
  1. I Y[3 Q 1
  1. I Y[4 Q 1
  1. I Y[5 Q 1
  1. ;I Y["C" Q 1
  1. ;I Y["A" Q 1
  1. Q 0
  1. ;
  1. CTR(X,Y) ;EP - Center X in a field Y wide.
  1. Q $J("",$S($D(Y):Y,1:IOM)-$L(X)\2)_X