- BHSMEDCS ;IHS/MSC/MGH - Health summary V Meds controlled substances;01-May-2014 11:10;DU
- ;;1.0;HEALTH SUMMARY COMPONENTS;**3,6,9**;March 17, 2006;Build 16
- ; IHS/CMI/LAB - PART 7 OF APCHS -- SUMMARY PRODUCTION COMPONENTS ;
- ; Patch 6 for non-VA and medical review
- ;
- MEDSNDUP ; ************* ALL, NON DUPLICATED *************
- N BHSPAT,X,Y,Z
- S BHSMTY="NODUP"
- S BHSPAT=DFN
- ;
- CONT ; <SETUP>
- Q:'$D(^AUPNVMED("AC",BHSPAT))
- D CKP^GMTSUP Q:$D(GMTSQIT)
- ; <BUILD>
- K ^TMP($J,"BHSMED")
- S BHSIVD=0 F S BHSIVD=$O(^AUPNVMED("AA",BHSPAT,BHSIVD)) Q:BHSIVD=""!(BHSIVD>GMTSDLM) S BHSMX=0 F S BHSMX=$O(^AUPNVMED("AA",BHSPAT,BHSIVD,BHSMX)) Q:BHSMX="" D
- .S M=+^AUPNVMED(BHSMX,0)
- .Q:'$D(^PSDRUG(M,0))
- .Q:'$$CS(M) ;controlled substances only
- .S $P(^TMP($J,"BHSMED",M),U)=$P($G(^TMP($J,"BHSMED",M)),U)+1
- .S X=$P(^TMP($J,"BHSMED",M),U)
- .I X<99 S $P(^TMP($J,"BHSMED",M),U,(X+1))=$$FMTE^XLFDT((9999999-BHSIVD),5)_";"_$$VAL^XBDIQ1(9000010.14,BHSMX,1202)_";"_$$VAL^XBDIQ1(9000010,$P(^AUPNVMED(BHSMX,0),U,3),.06)
- K ^TMP($J,"BHSMTB"),^TMP($J,"BHSMTP"),^TMP($J,"BHSNO")
- S BHSIVD=0 F BHSQ=0:0 S BHSIVD=$O(^AUPNVMED("AA",BHSPAT,BHSIVD)) Q:BHSIVD=""!(BHSIVD>GMTSDLM) S BHSMX=0 F BHSQ=0:0 S BHSMX=$O(^AUPNVMED("AA",BHSPAT,BHSIVD,BHSMX)) Q:BHSMX="" D MEDBLD
- D NONVA^BHSMED ;Get outside meds not in PCC
- ; <DISPLAY>
- ;REBUILD LIST BY NAME (TRADE OR GENERIC) AND DATE
- S (BHSIVD,BHSCC,BHSCRX)=0 F BHSQ=0:0 S BHSIVD=$O(^TMP($J,"BHSMTP",BHSIVD)) Q:'BHSIVD I $P(^TMP($J,"BHSMTP",BHSIVD),U,2)="C",$P(^TMP($J,"BHSMTP",BHSIVD),U,3)=0 D
- .S BHSCC=BHSCC+1 D MEDDSP
- S (BHSIVD)=0 F BHSQ=0:0 S BHSIVD=$O(^TMP($J,"BHSMTP",BHSIVD)) Q:'BHSIVD I $P(^TMP($J,"BHSMTP",BHSIVD),U,2)="C",$P(^TMP($J,"BHSMTP",BHSIVD),U,3)=1 D
- .S BHSCC=BHSCC+1 D MEDDSP
- S (BHSIVD,BHSCC)=0 F BHSQ=0:0 S BHSIVD=$O(^TMP($J,"BHSMTP",BHSIVD)) Q:'BHSIVD I $P(^TMP($J,"BHSMTP",BHSIVD),U,2)'="C",$P(^TMP($J,"BHSMTP",BHSIVD),U,3)=0 D
- .S BHSCC=BHSCC+1 D MEDDSP
- S (BHSIVD)=0 F BHSQ=0:0 S BHSIVD=$O(^TMP($J,"BHSMTP",BHSIVD)) Q:'BHSIVD I $P(^TMP($J,"BHSMTP",BHSIVD),U,2)'="C",$P(^TMP($J,"BHSMTP",BHSIVD),U,3)=1 D
- .S BHSCC=BHSCC+1 D MEDDSP
- ;CLEANUP
- ;Patch 6
- D MEDRU^BHSMED ;display last date reviewed/updated/nam
- K BHST,BHSFN
- MEDX K BHSIVD,BHSMX,BHSMFX,BHSQTY,BHSIG,BHSSGY,BHSEXP,BHSMTS,BHSMED,BHSDTM,BHSDAT,BHSDYS,BHSN,BHSDC,BHSVDF,BHSP,BHSNON,BHSDLU,BHSIEN,RXNORM
- K BHSNFL,BHI,BHSNSH,BHSNAB,BHSVSC,BHSITE,BHSRX,BHSORD,BHSDRG,BHSCRN,BHSREF,BHSRFL,BHSALL,BHSTXT,BHSMTY,BHSALT,BHSCRX,BHSCHR,BHSQ,M,Z,BHEXPD
- K ^TMP($J,"BHSMTB"),^TMP($J,"BHSMTP"),^TMP($J,"BHSNO"),^TMP($J,"BHSMED")
- K X1,X2,X,Y,BHSCC
- Q
- MEDBLD ;BUILD ARRAY OF MEDICATIONS
- ;APCHSDC=DATE DISCONTINUED,DYS=DAYS PRESCRIBED,SIG=DIRECTIONS
- ;VDF=VISIT FILE DATE
- Q:'$D(^AUPNVMED(BHSMX,0))
- S BHSN=^AUPNVMED(BHSMX,0)
- Q:'$D(^PSDRUG($P(BHSN,U,1)))
- Q:'$$CS($P(BHSN,U,1))
- S BHSDTM=-BHSIVD\1+9999999
- S BHSDC=$P(BHSN,U,8),BHSDYS=$P(BHSN,U,7),BHSMFX=$S($P(BHSN,U,4)="":+BHSN,$P(BHSN,U,4)=$P(^PSDRUG(+BHSN,0),U):+BHSN,1:$P(BHSN,U,4)),BHSCHR=$$CHRONIC^BHSMEDG(BHSMX),BHSCHR=$S(BHSCHR=1:"C",1:"Z")
- S BHSCRX=$$CS($P(BHSN,U))
- D @BHSMTY
- Q
- NODUP ;
- ;I $D(^TMP($J,"APCHSMTB",APCHSMFX)) Q
- ;S X="" F S X=$O(^TMP($J,"APCHSMTP",X)) Q:X="" I $P(X,"-",2)=APCHSMFX K ^TMP($J,"APCHSMTP",X)
- I $D(^TMP($J,"BHSMTP",BHSIVD_"-"_BHSMFX)) S ^TMP($J,"BHSMTP",BHSIVD_"-"_BHSMFX)=BHSMX_"^"_BHSCHR_"^"_BHSCRX
- I $D(^TMP($J,"BHSMTB",BHSMFX)) Q
- S ^TMP($J,"BHSMTB",BHSMFX)=BHSDC,^TMP($J,"BHSMTP",BHSIVD_"-"_BHSMFX)=BHSMX_"^"_BHSCHR_"^"_BHSCRX
- Q
- MEDDSP ;DISPLAY MEDICATION
- ;APCHSRX=RX# in FILE 52,CHRN=CHRONIC FLAG,REF=#REFILLS
- S BHSMX=$P(^TMP($J,"BHSMTP",BHSIVD),U)
- I 'BHSMX D NVADSP Q
- S BHSCRX=$P(^TMP($J,"BHSMTP",BHSIVD),U,3)
- S BHSN=^AUPNVMED(BHSMX,0)
- S BHSIEN=+BHSN
- S BHSRX=$S($D(^PSRX("APCC",BHSMX)):$O(^(BHSMX,0)),1:0)
- S BHSCRN=$S(+BHSRX:$D(^PS(55,BHSPAT,"P","CP",BHSRX)),1:0)
- S (X,BHSDTM)=-BHSIVD\1+9999999 D REGDT4^GMTSU S BHSDAT=X
- S BHSDC=$P(BHSN,U,8),BHSDYS=$P(BHSN,U,7),BHSQTY=$P(BHSN,U,6),BHSIG=$P(BHSN,U,5),BHSVDF=$P(BHSN,U,3),BHSMFX=+BHSN
- S X1=DT,X2=BHSDTM D ^%DTC ;Q:X>60&(X>(2*BHSDYS))
- S BHSEXP=""
- S BHSMED=$S($P(BHSN,U,4)="":$P(^PSDRUG(BHSMFX,0),U,1),1:$P(BHSN,U,4))
- S BHSALT=$P($G(^AUPNVMED(BHSMX,12)),U,12) ;IHS/CMI/GRL
- S BHEXPD=$$VALI^XBDIQ1(52,BHSRX,26) S BHEXPD=$$FMTE^XLFDT(BHEXPD,5)
- I BHSDC S X=BHSDC D REGDT4^GMTSU S BHSEXP="-- D/C "_X
- D SIG S BHSIG=BHSSGY
- D REF I BHSREF S BHSIG=BHSIG_" "_BHSREF_$S(BHSREF=1:" refill",1:" refills")_" left."
- D SITE
- D CKP^GMTSUP Q:$D(GMTSQIT)
- W BHSDAT,?10,?14,BHSMED W:BHSQTY " #",BHSQTY
- W:BHSDYS " (",BHSDYS," days) " W BHSEXP
- I BHEXPD]"" W "(expires "_BHEXPD_")"
- W !
- ;Patch 8 Add Rxnorm code here
- S RXNORM=$$GET1^DIQ(50,BHSMFX,9999999.27)
- I RXNORM'="" W ?14,"RxNorm: ",RXNORM,!
- I BHSITE]"" W ?14,"Dispensed at: ",BHSITE,!
- I $G(BHSALT)]"" I $E($G(BHSALT),1,6)'=$E($G(BHSMED),1,6) W ?14,"("_BHSALT_")",! ;IHS/CMI/GRL
- D CKP^GMTSUP Q:$D(GMTSQIT)
- S BHSICL=14,BHSNRQ="",BHSTXT=" "_BHSIG D PRTTXT^BHSUTL K BHSICL,BHSNRQ,BHSP
- S Y=$P(^TMP($J,"BHSMED",BHSIEN),U)
- Q:Y<2
- D CKP^GMTSUP Q:$D(GMTSQIT)
- W ?16,"Previous fill dates:",!
- F BHI=3:1 Q:$P($G(^TMP($J,"BHSMED",BHSIEN)),U,BHI)="" D
- .D CKP^GMTSUP Q:$D(GMTSQIT)
- .W ?16,$P($P($G(^TMP($J,"BHSMED",BHSIEN)),U,BHI),";",1)
- .W ?27,$P($P($G(^TMP($J,"BHSMED",BHSIEN)),U,BHI),";",2)
- .W ?57,$P($P($G(^TMP($J,"BHSMED",BHSIEN)),U,BHI),";",3),!
- S BHSORD=$$GET1^DIQ(52,BHSRX,39.3,"I")
- I +BHSORD D RECON^BHSMED(BHSORD,"M")
- E D
- .N NVA
- .S NVA=+$P(APCHORTS,U,8)
- .I NVA'="" D
- ..S BHSORD=$P($G(^PS(55,DFN,"NVA",NVA,0)),U,8)
- ..D RECON^BHSMED(BHSORD,"M")
- W !
- Q
- ;
- SIG ;CONSTRUCT THE FULL TEXT FROM THE ENCODED SIG
- S BHSSGY="" F BHSP=1:1:$L(BHSIG," ") S X=$P(BHSIG," ",BHSP) I X]"" D
- . 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)
- . S BHSSGY=BHSSGY_X_" "
- Q
- ;
- REF ;DETERMINE THE NUMBER OF REFILLS REMAINING
- I 'BHSRX S BHSREF=0 Q
- 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
- S BHSREF=BHSRFL
- Q
- ;
- ;
- SITE ;DETERMINE IF OUTSIDE LOCATION INFO PRESENT
- S BHSITE=""
- I $D(^AUPNVSIT(BHSVDF,21))#2 S BHSITE=$P(^(21),U) Q
- Q:$P(^AUPNVSIT(BHSVDF,0),U,6)=""
- 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)
- Q
- ;
- CS(D) ;
- I $P(^PSDRUG(D,0),U,3)="" Q 0
- NEW Y S Y=$P(^PSDRUG(D,0),U,3)
- ;I Y[1 Q 1
- I Y[2 Q 1
- I Y[3 Q 1
- I Y[4 Q 1
- I Y[5 Q 1
- ;I Y["C" Q 1
- ;I Y["A" Q 1
- Q 0
- ;
- CTR(X,Y) ;EP - Center X in a field Y wide.
- Q $J("",$S($D(Y):Y,1:IOM)-$L(X)\2)_X
- NVADSP ;
- S BHSEXP=""
- S (X,BHSDTM)=-BHSIVD\1+9999999 D REGDT4^GMTSU S BHSDAT=X
- S BHSDC=$P(^TMP($J,"BHSMTP",BHSIVD),U,5)
- S BHSMED=$P(^TMP($J,"BHSMTP",BHSIVD),U,3)
- I BHSDC S Y=BHSDC D REGDT4^GMTSU S BHSEXP="-- D/C "_Y
- S BHSIG=$P(^TMP($J,"BHSMTP",BHSIVD),U,4)
- D CKP^GMTSUP Q:$D(GMTSQIT)
- W BHSDAT,?14,BHSMED," ",BHSEXP,!
- D CKP^GMTSUP Q:$D(GMTSQIT)
- S BHSICL=14,BHSNRQ="",BHSTXT=BHSIG_" (EHR OUTSIDE MEDICATION)" D PRTTXT^BHSUTL K BHSICL,BHSNRQ,BHSP
- Q
- BHSMEDCS ;IHS/MSC/MGH - Health summary V Meds controlled substances;01-May-2014 11:10;DU
- +1 ;;1.0;HEALTH SUMMARY COMPONENTS;**3,6,9**;March 17, 2006;Build 16
- +2 ; IHS/CMI/LAB - PART 7 OF APCHS -- SUMMARY PRODUCTION COMPONENTS ;
- +3 ; Patch 6 for non-VA and medical review
- +4 ;
- MEDSNDUP ; ************* ALL, NON DUPLICATED *************
- +1 NEW BHSPAT,X,Y,Z
- +2 SET BHSMTY="NODUP"
- +3 SET BHSPAT=DFN
- +4 ;
- CONT ; <SETUP>
- +1 IF '$DATA(^AUPNVMED("AC",BHSPAT))
- QUIT
- +2 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +3 ; <BUILD>
- +4 KILL ^TMP($JOB,"BHSMED")
- +5 SET BHSIVD=0
- FOR
- SET BHSIVD=$ORDER(^AUPNVMED("AA",BHSPAT,BHSIVD))
- IF BHSIVD=""!(BHSIVD>GMTSDLM)
- QUIT
- SET BHSMX=0
- FOR
- SET BHSMX=$ORDER(^AUPNVMED("AA",BHSPAT,BHSIVD,BHSMX))
- IF BHSMX=""
- QUIT
- Begin DoDot:1
- +6 SET M=+^AUPNVMED(BHSMX,0)
- +7 IF '$DATA(^PSDRUG(M,0))
- QUIT
- +8 ;controlled substances only
- IF '$$CS(M)
- QUIT
- +9 SET $PIECE(^TMP($JOB,"BHSMED",M),U)=$PIECE($GET(^TMP($JOB,"BHSMED",M)),U)+1
- +10 SET X=$PIECE(^TMP($JOB,"BHSMED",M),U)
- +11 IF X<99
- SET $PIECE(^TMP($JOB,"BHSMED",M),U,(X+1))=$$FMTE^XLFDT((9999999-BHSIVD),5)_";"_$$VAL^XBDIQ1(9000010.14,BHSMX,1202)_";"_$$VAL^XBDIQ1(9000010,$PIECE(^AUPNVMED(BHSMX,0),U,3),.06)
- End DoDot:1
- +12 KILL ^TMP($JOB,"BHSMTB"),^TMP($JOB,"BHSMTP"),^TMP($JOB,"BHSNO")
- +13 SET BHSIVD=0
- FOR BHSQ=0:0
- SET BHSIVD=$ORDER(^AUPNVMED("AA",BHSPAT,BHSIVD))
- IF BHSIVD=""!(BHSIVD>GMTSDLM)
- QUIT
- SET BHSMX=0
- FOR BHSQ=0:0
- SET BHSMX=$ORDER(^AUPNVMED("AA",BHSPAT,BHSIVD,BHSMX))
- IF BHSMX=""
- QUIT
- DO MEDBLD
- +14 ;Get outside meds not in PCC
- DO NONVA^BHSMED
- +15 ; <DISPLAY>
- +16 ;REBUILD LIST BY NAME (TRADE OR GENERIC) AND DATE
- +17 SET (BHSIVD,BHSCC,BHSCRX)=0
- FOR BHSQ=0:0
- SET BHSIVD=$ORDER(^TMP($JOB,"BHSMTP",BHSIVD))
- IF 'BHSIVD
- QUIT
- IF $PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,2)="C"
- IF $PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,3)=0
- Begin DoDot:1
- +18 SET BHSCC=BHSCC+1
- DO MEDDSP
- End DoDot:1
- +19 SET (BHSIVD)=0
- FOR BHSQ=0:0
- SET BHSIVD=$ORDER(^TMP($JOB,"BHSMTP",BHSIVD))
- IF 'BHSIVD
- QUIT
- IF $PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,2)="C"
- IF $PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,3)=1
- Begin DoDot:1
- +20 SET BHSCC=BHSCC+1
- DO MEDDSP
- End DoDot:1
- +21 SET (BHSIVD,BHSCC)=0
- FOR BHSQ=0:0
- SET BHSIVD=$ORDER(^TMP($JOB,"BHSMTP",BHSIVD))
- IF 'BHSIVD
- QUIT
- IF $PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,2)'="C"
- IF $PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,3)=0
- Begin DoDot:1
- +22 SET BHSCC=BHSCC+1
- DO MEDDSP
- End DoDot:1
- +23 SET (BHSIVD)=0
- FOR BHSQ=0:0
- SET BHSIVD=$ORDER(^TMP($JOB,"BHSMTP",BHSIVD))
- IF 'BHSIVD
- QUIT
- IF $PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,2)'="C"
- IF $PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,3)=1
- Begin DoDot:1
- +24 SET BHSCC=BHSCC+1
- DO MEDDSP
- End DoDot:1
- +25 ;CLEANUP
- +26 ;Patch 6
- +27 ;display last date reviewed/updated/nam
- DO MEDRU^BHSMED
- +28 KILL BHST,BHSFN
- MEDX KILL BHSIVD,BHSMX,BHSMFX,BHSQTY,BHSIG,BHSSGY,BHSEXP,BHSMTS,BHSMED,BHSDTM,BHSDAT,BHSDYS,BHSN,BHSDC,BHSVDF,BHSP,BHSNON,BHSDLU,BHSIEN,RXNORM
- +1 KILL BHSNFL,BHI,BHSNSH,BHSNAB,BHSVSC,BHSITE,BHSRX,BHSORD,BHSDRG,BHSCRN,BHSREF,BHSRFL,BHSALL,BHSTXT,BHSMTY,BHSALT,BHSCRX,BHSCHR,BHSQ,M,Z,BHEXPD
- +2 KILL ^TMP($JOB,"BHSMTB"),^TMP($JOB,"BHSMTP"),^TMP($JOB,"BHSNO"),^TMP($JOB,"BHSMED")
- +3 KILL X1,X2,X,Y,BHSCC
- +4 QUIT
- MEDBLD ;BUILD ARRAY OF MEDICATIONS
- +1 ;APCHSDC=DATE DISCONTINUED,DYS=DAYS PRESCRIBED,SIG=DIRECTIONS
- +2 ;VDF=VISIT FILE DATE
- +3 IF '$DATA(^AUPNVMED(BHSMX,0))
- QUIT
- +4 SET BHSN=^AUPNVMED(BHSMX,0)
- +5 IF '$DATA(^PSDRUG($PIECE(BHSN,U,1)))
- QUIT
- +6 IF '$$CS($PIECE(BHSN,U,1))
- QUIT
- +7 SET BHSDTM=-BHSIVD\1+9999999
- +8 SET BHSDC=$PIECE(BHSN,U,8)
- SET BHSDYS=$PIECE(BHSN,U,7)
- SET BHSMFX=$SELECT($PIECE(BHSN,U,4)="":+BHSN,$PIECE(BHSN,U,4)=$PIECE(^PSDRUG(+BHSN,0),U):+BHSN,1:$PIECE(BHSN,U,4))
- SET BHSCHR=$$CHRONIC^BHSMEDG(BHSMX)
- SET BHSCHR=$SELECT(BHSCHR=1:"C",1:"Z")
- +9 SET BHSCRX=$$CS($PIECE(BHSN,U))
- +10 DO @BHSMTY
- +11 QUIT
- NODUP ;
- +1 ;I $D(^TMP($J,"APCHSMTB",APCHSMFX)) Q
- +2 ;S X="" F S X=$O(^TMP($J,"APCHSMTP",X)) Q:X="" I $P(X,"-",2)=APCHSMFX K ^TMP($J,"APCHSMTP",X)
- +3 IF $DATA(^TMP($JOB,"BHSMTP",BHSIVD_"-"_BHSMFX))
- SET ^TMP($JOB,"BHSMTP",BHSIVD_"-"_BHSMFX)=BHSMX_"^"_BHSCHR_"^"_BHSCRX
- +4 IF $DATA(^TMP($JOB,"BHSMTB",BHSMFX))
- QUIT
- +5 SET ^TMP($JOB,"BHSMTB",BHSMFX)=BHSDC
- SET ^TMP($JOB,"BHSMTP",BHSIVD_"-"_BHSMFX)=BHSMX_"^"_BHSCHR_"^"_BHSCRX
- +6 QUIT
- MEDDSP ;DISPLAY MEDICATION
- +1 ;APCHSRX=RX# in FILE 52,CHRN=CHRONIC FLAG,REF=#REFILLS
- +2 SET BHSMX=$PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U)
- +3 IF 'BHSMX
- DO NVADSP
- QUIT
- +4 SET BHSCRX=$PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,3)
- +5 SET BHSN=^AUPNVMED(BHSMX,0)
- +6 SET BHSIEN=+BHSN
- +7 SET BHSRX=$SELECT($DATA(^PSRX("APCC",BHSMX)):$ORDER(^(BHSMX,0)),1:0)
- +8 SET BHSCRN=$SELECT(+BHSRX:$DATA(^PS(55,BHSPAT,"P","CP",BHSRX)),1:0)
- +9 SET (X,BHSDTM)=-BHSIVD\1+9999999
- DO REGDT4^GMTSU
- SET BHSDAT=X
- +10 SET BHSDC=$PIECE(BHSN,U,8)
- SET BHSDYS=$PIECE(BHSN,U,7)
- SET BHSQTY=$PIECE(BHSN,U,6)
- SET BHSIG=$PIECE(BHSN,U,5)
- SET BHSVDF=$PIECE(BHSN,U,3)
- SET BHSMFX=+BHSN
- +11 ;Q:X>60&(X>(2*BHSDYS))
- SET X1=DT
- SET X2=BHSDTM
- DO ^%DTC
- +12 SET BHSEXP=""
- +13 SET BHSMED=$SELECT($PIECE(BHSN,U,4)="":$PIECE(^PSDRUG(BHSMFX,0),U,1),1:$PIECE(BHSN,U,4))
- +14 ;IHS/CMI/GRL
- SET BHSALT=$PIECE($GET(^AUPNVMED(BHSMX,12)),U,12)
- +15 SET BHEXPD=$$VALI^XBDIQ1(52,BHSRX,26)
- SET BHEXPD=$$FMTE^XLFDT(BHEXPD,5)
- +16 IF BHSDC
- SET X=BHSDC
- DO REGDT4^GMTSU
- SET BHSEXP="-- D/C "_X
- +17 DO SIG
- SET BHSIG=BHSSGY
- +18 DO REF
- IF BHSREF
- SET BHSIG=BHSIG_" "_BHSREF_$SELECT(BHSREF=1:" refill",1:" refills")_" left."
- +19 DO SITE
- +20 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +21 WRITE BHSDAT,?10,?14,BHSMED
- IF BHSQTY
- WRITE " #",BHSQTY
- +22 IF BHSDYS
- WRITE " (",BHSDYS," days) "
- WRITE BHSEXP
- +23 IF BHEXPD]""
- WRITE "(expires "_BHEXPD_")"
- +24 WRITE !
- +25 ;Patch 8 Add Rxnorm code here
- +26 SET RXNORM=$$GET1^DIQ(50,BHSMFX,9999999.27)
- +27 IF RXNORM'=""
- WRITE ?14,"RxNorm: ",RXNORM,!
- +28 IF BHSITE]""
- WRITE ?14,"Dispensed at: ",BHSITE,!
- +29 ;IHS/CMI/GRL
- IF $GET(BHSALT)]""
- IF $EXTRACT($GET(BHSALT),1,6)'=$EXTRACT($GET(BHSMED),1,6)
- WRITE ?14,"("_BHSALT_")",!
- +30 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +31 SET BHSICL=14
- SET BHSNRQ=""
- SET BHSTXT=" "_BHSIG
- DO PRTTXT^BHSUTL
- KILL BHSICL,BHSNRQ,BHSP
- +32 SET Y=$PIECE(^TMP($JOB,"BHSMED",BHSIEN),U)
- +33 IF Y<2
- QUIT
- +34 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +35 WRITE ?16,"Previous fill dates:",!
- +36 FOR BHI=3:1
- IF $PIECE($GET(^TMP($JOB,"BHSMED",BHSIEN)),U,BHI)=""
- QUIT
- Begin DoDot:1
- +37 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +38 WRITE ?16,$PIECE($PIECE($GET(^TMP($JOB,"BHSMED",BHSIEN)),U,BHI),";",1)
- +39 WRITE ?27,$PIECE($PIECE($GET(^TMP($JOB,"BHSMED",BHSIEN)),U,BHI),";",2)
- +40 WRITE ?57,$PIECE($PIECE($GET(^TMP($JOB,"BHSMED",BHSIEN)),U,BHI),";",3),!
- End DoDot:1
- +41 SET BHSORD=$$GET1^DIQ(52,BHSRX,39.3,"I")
- +42 IF +BHSORD
- DO RECON^BHSMED(BHSORD,"M")
- +43 IF '$TEST
- Begin DoDot:1
- +44 NEW NVA
- +45 SET NVA=+$PIECE(APCHORTS,U,8)
- +46 IF NVA'=""
- Begin DoDot:2
- +47 SET BHSORD=$PIECE($GET(^PS(55,DFN,"NVA",NVA,0)),U,8)
- +48 DO RECON^BHSMED(BHSORD,"M")
- End DoDot:2
- End DoDot:1
- +49 WRITE !
- +50 QUIT
- +51 ;
- SIG ;CONSTRUCT THE FULL TEXT FROM THE ENCODED SIG
- +1 SET BHSSGY=""
- FOR BHSP=1:1:$LENGTH(BHSIG," ")
- SET X=$PIECE(BHSIG," ",BHSP)
- IF X]""
- Begin DoDot:1
- +2 SET Y=$ORDER(^PS(51,"B",X,0))
- IF Y>0
- SET X=$PIECE(^PS(51,Y,0),"^",2)
- IF $DATA(^(9))
- SET Y=$PIECE(BHSIG," ",BHSP-1)
- SET Y=$EXTRACT(Y,$LENGTH(Y))
- IF Y>1
- SET X=$PIECE(^(9),"^",1)
- +3 SET BHSSGY=BHSSGY_X_" "
- End DoDot:1
- +4 QUIT
- +5 ;
- REF ;DETERMINE THE NUMBER OF REFILLS REMAINING
- +1 IF 'BHSRX
- SET BHSREF=0
- QUIT
- +2 SET BHSRFL=$PIECE(^PSRX(BHSRX,0),U,9)
- SET BHSREF=0
- FOR
- SET BHSREF=$ORDER(^PSRX(BHSRX,1,BHSREF))
- IF 'BHSREF
- QUIT
- SET BHSRFL=BHSRFL-1
- +3 SET BHSREF=BHSRFL
- +4 QUIT
- +5 ;
- +6 ;
- SITE ;DETERMINE IF OUTSIDE LOCATION INFO PRESENT
- +1 SET BHSITE=""
- +2 IF $DATA(^AUPNVSIT(BHSVDF,21))#2
- SET BHSITE=$PIECE(^(21),U)
- QUIT
- +3 IF $PIECE(^AUPNVSIT(BHSVDF,0),U,6)=""
- QUIT
- +4 IF $PIECE(^AUPNVSIT(BHSVDF,0),U,6)'=DUZ(2)
- SET BHSITE=$EXTRACT($PIECE(^DIC(4,$PIECE(^AUPNVSIT(BHSVDF,0),U,6),0),U),1,30)
- +5 QUIT
- +6 ;
- CS(D) ;
- +1 IF $PIECE(^PSDRUG(D,0),U,3)=""
- QUIT 0
- +2 NEW Y
- SET Y=$PIECE(^PSDRUG(D,0),U,3)
- +3 ;I Y[1 Q 1
- +4 IF Y[2
- QUIT 1
- +5 IF Y[3
- QUIT 1
- +6 IF Y[4
- QUIT 1
- +7 IF Y[5
- QUIT 1
- +8 ;I Y["C" Q 1
- +9 ;I Y["A" Q 1
- +10 QUIT 0
- +11 ;
- CTR(X,Y) ;EP - Center X in a field Y wide.
- +1 QUIT $JUSTIFY("",$SELECT($DATA(Y):Y,1:IOM)-$LENGTH(X)\2)_X
- NVADSP ;
- +1 SET BHSEXP=""
- +2 SET (X,BHSDTM)=-BHSIVD\1+9999999
- DO REGDT4^GMTSU
- SET BHSDAT=X
- +3 SET BHSDC=$PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,5)
- +4 SET BHSMED=$PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,3)
- +5 IF BHSDC
- SET Y=BHSDC
- DO REGDT4^GMTSU
- SET BHSEXP="-- D/C "_Y
- +6 SET BHSIG=$PIECE(^TMP($JOB,"BHSMTP",BHSIVD),U,4)
- +7 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +8 WRITE BHSDAT,?14,BHSMED," ",BHSEXP,!
- +9 DO CKP^GMTSUP
- IF $DATA(GMTSQIT)
- QUIT
- +10 SET BHSICL=14
- SET BHSNRQ=""
- SET BHSTXT=BHSIG_" (EHR OUTSIDE MEDICATION)"
- DO PRTTXT^BHSUTL
- KILL BHSICL,BHSNRQ,BHSP
- +11 QUIT