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

PSDPAT2.m

Go to the documentation of this file.
  1. PSDPAT2 ;B'ham ISC/JPW - Print Patient/Drug Report (summary) ; 1 Feb 94
  1. ;;3.0;CONTROLLED SUBSTANCES ;**68,72**;13 Feb 97;Build 8
  1. D NOW^%DTC S Y=+$E(%,1,12) X ^DD("DD") S RPDT=Y
  1. S (PG,PSDOUT)=0,$P(LN,"-",80)=""
  1. I '$D(^TMP("PSDPATL",$J)) D HDR W !!,?45,"**** NO DISPENSING SUMMARY ****" Q
  1. PRINT ;prints data for dispensing
  1. D HDR Q:PSDOUT
  1. S LOOP="" F S LOOP=$O(^TMP("PSDPATL",$J,LOOP)) Q:LOOP=""!(PSDOUT) D:$Y+4>IOSL HDR Q:PSDOUT D Q:PSDOUT
  1. .W !,LOOP,?55,$J(+$P(^TMP("PSDPATL",$J,LOOP),"^",3),6),?70,$J(+$P(^(LOOP),"^",2),6),!
  1. DONE I SUM,$E(IOST)'="C" W @IOF
  1. Q
  1. HDR ;lists header information
  1. I $E(IOST,1,2)="C-",PG W ! K DA,DIR S DIR(0)="E" D ^DIR K DIR I 'Y S PSDOUT=1 Q
  1. W:$Y @IOF S PG=PG+1 W !,?22,"ACTIVITY",?70,"PG "_PG,!,?29,"** SUMMARY **",!,?27,"Date: ",$P(PSDATE,"^")," to ",$P(PSDATE,"^",2),!!,"NAOU: ",NAOUN,!!
  1. W "DRUG",?55,"QUANTITY USED",?70,"BALANCE",!,LN,!
  1. Q
  1. ;; ADDED FOR 3*68 - RJS
  1. SET ;sets data
  1. N PSDREA
  1. Q:'$D(^PSD(58.81,PSDA,0)) S PSD0=^(0),PSDQTY=+$P(PSD0,U,6),PSD=$P(PSD0,U,4),PSDREA=$P(PSD0,U,16)
  1. S PSD9=$G(^PSD(58.81,PSDA,9)) S PSDSOQT=+$P(PSD9,U,3),PSDWQT=+$P(PSD9,U,4)
  1. I +$P(PSD0,U,5) S PSDDRG1=+$P(PSD0,U,5)
  1. I PSDTYP=17,'+$P(^PSD(58.81,PSDA,9),"^",1) D
  1. .S PSDTYP=9,PSDQTY=PSDQTY*-1,PSDREA="DEFECTIVE DOSE"
  1. I PSDTYP=17 S $P(PSDRG(+PSDRUG),U,2)=+$P(PSDRG(+PSDRUG),U,2)+PSDSOQT+PSDWQT
  1. S PSD3=$G(^PSD(58.81,PSDA,3)) S PSDRET=+$P(PSD3,U),PSDRQT=+$P(PSD3,U,2),PSDRRE=$P(PSD3,U,3),PSDDQT=+$P(PSD3,U,5),PSDDRE=$P(PSD3,U,6),PSDDT=+$P(PSD3,U,4)
  1. S DFN=+$P($G(PSD9),U) D DEM^VADPT
  1. S PSDPAT=$S(PSDTYP=18:"WASTED AMOUNT",PSDTYP=11:"INITIALIZE BALANCE",PSDTYP=9:"BALANCE ADJUSTMENT",PSDTYP=23:"COUNT VERIFICATION",'VAERR:VADM(1),1:"UNKNOWN")
  1. S:PSDTYP=2!(PSDTYP=3) PSDPAT="PHARMACY DISP#"_$P(PSD0,U,17),PSDTYP=0,PSDTR=PSDA
  1. S PSDNR1=$S($P(PSD9,U,2)'="":$P(PSD9,U,2),1:$P(PSD0,U,7))
  1. S:PSDNR1'=$P(PSD0,U,7) PSDNR1(1)=$P(PSD0,U,7)
  1. S:+$G(PSDNR1) PSDNR1=$S($P($G(^VA(200,+PSDNR1,0)),U)]"":$P(^(0),U),1:"UNKNOWN")
  1. S PSDNR2=$P($G(PSD9),U,6) S:PSDNR2 PSDNR2=$S($P($G(^VA(200,+PSDNR2,0)),U)]"":$P(^(0),U),1:"")
  1. S PSDRN=$S($P($G(^PSDRUG(+PSDRUG,0)),U)]"":$P(^(0),U),1:"ZZ/"_PSDRUG_" NAME MISSING")
  1. SET1 ;sets ^TMP("PSDPAT"
  1. I PSDTYP=17,'+$P(^PSD(58.81,PSDA,9),"^",1) S PSDTYP=9
  1. I $G(^PSD(58.81,PSDA,1)),$P(PSD3,U,1)'="" D CHKRET Q:PSD<PSDSD
  1. I $P(PSD3,U,4)'="" D CHKDEST
  1. I PSDTYP=0 D CHKNOD7
  1. S PSDQTY=$S(PSDTYP=17:0,1:PSDQTY),PSDRQT=$S(PSDTYP=17:PSDRQT,1:-PSDRQT)
  1. I PSD>PSDED N PSDEND S PSDEND=1
  1. I '$G(PSDEND) D
  1. .Q:PSD<PSDSD
  1. .K PSDATA
  1. .I '$D(PSDREA) N PSDREA S PSDREA=$P(PSD0,U,16)
  1. .S PSDATA=PSDQTY_U_PSDNR1_U_PSDNR2_U_PSDTYP_U_PSDWQT_U_PSDREA_U_PSDBAL_U_$G(PSDNR1(1))_U_PSDRQT_U_PSDRRE_U_PSDDRG1_U_PSDSOQT_"^^^"_PSDRET_U_PSDDT
  1. .S PSDCNT=PSDCNT+1 D PSDPAT,PSDPATL I $P(PSD3,U,4)'=""
  1. I $G(PSDEND) D
  1. .Q:PSD<PSDSD
  1. .S PSDATA=1 D PSDPATL
  1. I $G(PSDTRQT),PSDTFDT<PSDED D
  1. .I '$G(PSDEND) D
  1. ..I PSD<PSDED,PSD>PSDSD S PSDATA="0^^^"_PSDTYP_"^^^"_PSDBAL_"^^^^^^^^^"_U_PSDTFDT_U_PSDNR1_U_PSDT2N_U_PSDTTDT_U_PSDTTNR_U_PSDTPRV_U_PSDTRQT_U_PSDSTAT
  1. ..S PSDQTY=PSDTRQT*-1
  1. ..N PSD S PSD=PSDTFDT,PSDCNT=PSDCNT+1 D PSDPAT,PSDPATL
  1. . I $G(PSDEND) S PSDATA=1 D PSDPATL
  1. .S PSDEND=$G(^TMP("PSDPAT1",$J,PSDRUG,PSDA))
  1. I $G(PSDTRQT),(PSDTFDT>PSDED!(PSDTFDT=PSDED)) N PSDEND S PSDQTY=PSDTRQT*-1,PSDEND=1 D
  1. .I $G(PSDEND) S PSDATA=1 D PSDPATL
  1. K PSDATA,PSDQTY,PSDTRQT,PSDNR1,PSDNR2,PSD0,PSD3,PSD7,PSDTR Q
  1. SET2 ;SETS ^TMP("PSDPAT"
  1. N PSDTRDT,PSDPAT
  1. S PSD0=$G(^PSD(58.81,PSDA,0)),PSDRN=$S($P($G(^PSDRUG(+PSDRUG,0)),U)]"":$P(^(0),U),1:"ZZ/"_PSDRUG_" NAME MISSING")
  1. S PSDTRDT=$P(^PSD(58.81,PSDA,1),U,4),PSDPAT="PHARMACY DISP #"_$P(PSD0,U,17),PSD=$P(PSD0,U,4)
  1. Q:$D(^TMP("PSDPAT",$J,PSDRN,PSDTRDT))
  1. I PSDTYP=5 S PSD7=$G(^PSD(58.81,+PSDA,7)) D NODE7
  1. S PSDTR=PSDA D
  1. .D CHKNOD7
  1. .I $G(PSDTRQT) D
  1. ..I PSD<PSDED,PSD>PSDSD S PSDEND=0
  1. ..I '$G(PSDEND) D
  1. ...K PSDATA
  1. ...S PSDCNT=PSDCNT+1,PSDPAT="PHARMACY DISP #"_$P(PSD0,U,17),PSDATA="^^^0^^^^^^^^^^^^^"_PSDTFDT_U_PSDTFN_U_PSDT2N_U_PSDTTDT_U_PSDTTNR_U_PSDTPRV_U_PSDTRQT_U_PSDSTAT
  1. ...D PSDPAT,PSDPATL
  1. ..S PSDEND=$G(^TMP("PSDPAT1",$J,PSDRUG,PSDA))
  1. K PSDATA,PSDQTY,PSDTRQT,PSDNR1,PSDNR2,PSD0,PSD3,PSD7,PSDTR
  1. Q
  1. CHKNOD7 ; COLLECTS TRANSFER DATA
  1. S PSD7=$G(^PSD(58.81,+PSDTR,7)) Q:$G(PSD7)=""
  1. S PSDSTAT=$P($G(^PSD(58.81,+PSDTR,0)),U,11)
  1. S PSDTFDT=+$P(PSD7,U),PSDTTON=+$P(PSD7,U,3),PSDT2N=$P($G(^PSD(58.8,PSDTTON,0)),U),PSDTTDT=+$P(PSD7,U,4),PSDTPRV=+$P(PSD7,U,6),PSDTRQT=+$P(PSD7,U,7)
  1. S PSDTFN=$S($P(PSD7,U,2):$P(PSD7,U,2),1:$P(PSD0,U,7))
  1. S:PSDTFN'=$P(PSD0,U,7) PSDTFN(1)=$P(PSD0,U,7) S PSDTFN=$S($P($G(^VA(200,+PSDTFN,0)),U)]"":$P(^(0),U),1:"UNKNOWN")
  1. S PSDTTNR=$P($G(PSD7),U,5) S:PSDTTNR PSDTTNR=$S($P($G(^VA(200,+PSDTTNR,0)),U)]"":$P(^(0),U),1:"")
  1. Q
  1. NODE7 ; SETS TRANSFERS BETWEEN NAOU'S
  1. I $P(PSD3,U,1)'="" D CHKRET Q:PSD<PSDSD
  1. I $P(PSD3,U,4)'="" D CHKDEST Q:PSD<PSDSD
  1. S (PSDTFDT,PSDTFN,PSDTTDT,PSDTTNR,PSDTPRV,PSDTRQT,PSDSTAT)=""
  1. S PSDTTON=+$P(^PSD(58.81,$P(PSD7,U,6),0),U,18),PSDT2N=$P($G(^PSD(58.8,PSDTTON,0)),U),PSDTRQT=+PSDQTY
  1. I PSD<PSDED,PSD>PSDSD S PSDEND=0
  1. I '$G(PSDEND) D
  1. .S PSDTFN=+$P(^PSD(58.81,$P(PSD7,U,6),7),U,2) S:PSDTFN PSDTFN=$S($P($G(^VA(200,+PSDTFN,0)),U)]"":$P(^(0),U),1:"")
  1. .S PSDTRQT=$P(^PSD(58.81,$P(PSD7,U,6),7),U,7)
  1. .K PSDATA S PSDATA=PSDQTY_U_PSDNR1_U_PSDNR2_U_PSDTYP_U_PSDWQT_U_$P(PSD0,U,16)_"^^"_$G(PSDNR1(1))_U_PSDRQT_U_PSDRRE
  1. .S PSDATA=PSDATA_U_PSDDRG1_U_PSDSOQT_"^^^^^^^"_PSDT2N_U_U_PSDTFN_"^^"_PSDTRQT_U,PSDCNT=PSDCNT+1
  1. .Q:PSD<PSDSD
  1. .D PSDPAT,PSDPATL
  1. .S PSDEND=$G(^TMP("PSDPAT1",$J,PSDRUG,PSDA))
  1. I $G(PSDEND) D PSDPAT,PSDPATL
  1. I $P(PSD7,U,1) S PSDTR=PSDA D
  1. .D CHKNOD7
  1. .I PSD<PSDED,PSD>PSDSD S PSDEND=0
  1. .I '$G(PSDEND) D
  1. ..K PSDATA
  1. ..S $P(PSDATA,U,4)=PSDTYP,$P(PSDATA,U,17)=PSDTFDT,PSDATA=PSDATA_U_PSDTFN_U_PSDT2N_U_PSDTTDT_U_PSDTTNR_U_PSDTPRV_U_PSDTRQT_U_PSDSTAT
  1. ..S PSDCNT=PSDCNT+1,PSDQTY=PSDTRQT*-1 D PSDPAT,PSDPATL
  1. .S PSDEND=$G(^TMP("PSDPAT1",$J,PSDRUG,PSDA))
  1. I $G(PSDEND) s PSDATA=1 D PSDPATL
  1. Q
  1. CHKRET ; SETS RETURNED ITEM INFORMATION
  1. N PSD,PSDNR1,PSDNR2,PSDQTY S PSD=$P(^PSD(58.81,PSDA,0),U,19),(PSDQTY,PSDWQT,PSDSOQT,PSDDQT,PSDDRE)=0
  1. S PSDNR1=+$P(^PSD(58.81,PSDA,1),U,10),PSDNR1=$S($P($G(^VA(200,+PSDNR1,0)),U)]"":$P(^(0),U),1:"UNKNOWN")
  1. S PSDNR2=+$P(^PSD(58.81,PSDA,1),U,14) S:PSDNR2 PSDNR2=$S($P($G(^VA(200,+PSDNR2,0)),U)]"":$P(^(0),U),1:"")
  1. S PSDRET=+$P(PSD3,U),PSDRQT=+$P(PSD3,U,2),PSDRRE=$P(PSD3,U,3),PSDDQT=+$P(PSD3,U,5),PSDDRE=$P(PSD3,U,6),PSDDT=+$P(PSD3,U,4)
  1. K PSDATA
  1. S PSDQTY=PSDRQT*-1
  1. I PSD>PSDED N PSDEND S PSDEND=1
  1. I '$G(PSDEND) D
  1. .I PSD<PSDED D
  1. ..S PSDATA="0^"_PSDNR1_U_PSDNR2_"^99^0^"_$P(PSD0,U,16)_"^0^^"_PSDRQT_U_PSDRRE_U_PSDDRG1_"^0^0^0^"_PSDRET
  1. ..S PSDCNT=PSDCNT+1
  1. ..D PSDPAT,PSDPATL
  1. ..S PSDRQT=0,(PSDRRE,PSDRET)=""
  1. I $G(PSDEND) D
  1. .Q:PSD<PSDSD
  1. .S PSDATA=1 D PSDPATL
  1. S PSDRQT=0,PSDRRE="" K PSDATA
  1. Q
  1. CHKDEST ; SETS DESTROYED ITEM INFORMATION
  1. N PSD,PSDNR1,PSDNR2,PSDQTY S PSD=$P(PSD3,U,4)
  1. S PSDNR1=+$P(^PSD(58.81,PSDA,1),U,10),PSDNR1=$S($P($G(^VA(200,+PSDNR1,0)),U)]"":$P(^(0),U),1:"UNKNOWN")
  1. S PSDNR2=+$P(^PSD(58.81,PSDA,1),U,14) S:PSDNR2 PSDNR2=$S($P($G(^VA(200,+PSDNR2,0)),U)]"":$P(^(0),U),1:"")
  1. S PSDDQT=$P(PSD3,U,5),PSDDRE=$P(PSD3,U,6) K PSDATA
  1. I PSD>PSDED N PSDEND S PSDEND=1
  1. I '$G(PSDEND) D
  1. .Q:PSD<PSDSD
  1. .S PSDATA="0^"_PSDNR1_U_PSDNR2_"^4^0^"_$P(PSD0,U,16)_"^0^^0^0^"_PSDDRG1_"^0^"_PSDDQT_U_PSDDRE
  1. .S PSDCNT=PSDCNT+1 D PSDPAT
  1. .S PSDQTY=PSDDQT*-1,PSDATA=1 D PSDPATL
  1. I $G(PSDEND) S PSDQTY=PSDDQT*-1,PSDATA=1 D PSDPATL
  1. K PSDATA
  1. Q
  1. PSDPAT ;sets ^TMP("PSDPAT"
  1. Q:'$D(PSDATA)
  1. S ^TMP("PSDPAT",$J,PSDRN,PSD,PSDPAT,PSDCNT)=PSDATA
  1. Q
  1. PSDPATL ;sets ^TMP("PSDPATL"
  1. Q:'$D(PSDATA)
  1. S:'$D(^TMP("PSDPATL",$J,PSDRN)) ^TMP("PSDPATL",$J,PSDRN)=0
  1. S ^TMP("PSDPATL",$J,PSDRN)=+^TMP("PSDPATL",$J,PSDRN)+($S(PSDTYP=18:-PSDQTY,PSDTYP=17:-((PSDSOQT+PSDWQT)-PSDRQT),1:PSDQTY)),$P(^(PSDRN),U,2)=+PSDRG(PSDRUG)
  1. S $P(^TMP("PSDPATL",$J,PSDRN),U,3)=+$P(^TMP("PSDPATL",$J,PSDRN),U,3)+$P(PSDRG(+PSDRUG),U,2)
  1. Q