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

APSPHLD.m

Go to the documentation of this file.
  1. APSPHLD ;IHS/MSC/PLS- Support for speed unhold ;24-May-2013 09:10;PLS
  1. ;;7.0;OUTPATIENT PHARMACY;**1013,1015**;DEC 1997;Build 62
  1. SPEED ;speed UNHOLD
  1. K LST,PSORX("FILL DATE")
  1. N APSPVAL,PSONOOR
  1. N VALMCNT I '$G(PSOCNT) S VALMSG="This patient has no Prescriptions!" S VALMBCK="" Q
  1. K PSOHLD,PSOFDR,DIR,DUOUT,DIRUT S DIR("A")="Select Orders by number",DIR(0)="LO^1:"_PSOCNT D ^DIR I $D(DIRUT)!($D(DTOUT))!($D(DUOUT)) K DIR,DIRUT,DTOUT,DUOUT S VALMBCK="" Q
  1. K DIR,DIRUT,DTOUT,PSOOELSE,DTOUT I +Y S (SPEED,PSOOELSE)=1 D FULL^VALM1 S LST=Y D G:$G(PSOHLD("DFLG"))!($G(PSOHLD("QFLG"))) SPEEDX
  1. .D ASKVAL(.APSPVAL)
  1. .Q:$G(APSPVAL("DFLG"))
  1. .F ORD=1:1:$L(LST,",") Q:$P(LST,",",ORD)']""!($G(PSOHLD("QFLG"))) S ORN=$P(LST,",",ORD) D:+PSOLST(ORN)=52
  1. ..D PSOL^PSSLOCK($P(PSOLST(ORN),"^",2)) I '$G(PSOMSG) W $C(7),!!,$S($P($G(PSOMSG),"^",2)'="":$P($G(PSOMSG),"^",2),1:"Another person is editing Rx "_$P(^PSRX($P(PSOLST(ORN),"^",2),0),"^")),! D PAUSE^VALM1 K PSOMSG Q
  1. ..I $P($G(^PSRX($P(PSOLST(ORN),"^",2),"STA")),"^")=11 D D ULK Q
  1. ...W $C(7),!!?5,"RX "_$P($G(^PSRX($P(PSOLST(ORN),"^",2),0)),"^")_" is in an EXPIRED status." W ! K DIR S DIR(0)="E",DIR("A")="Press Return to Continue" D ^DIR K DIR Q
  1. ...D:$G(PSOHLD("QFLG")) ULK
  1. ..S PSONOOR=APSPVAL("NOOR")
  1. ..D UHLD($P(PSOLST(ORN),U,2)),ULK
  1. S:'$G(PSOOELSE) VALMBCK=""
  1. S PSORXED=1 D ^PSOBUILD,BLD^PSOORUT1
  1. SPEEDX D EX K PSOREF,PSORX("BAR CODE"),PSOLIST,LFD,MAX,MIN,NODE,PS,PSOERR,REF,RF,RXO,RXN,RXP,RXS,SD,VAERR,PSORX("FILL DATE")
  1. K LST,SPEED,PSORXED,PSOREF,PSOFDR,PSOOELSE S:'$D(VALMBCK) VALMBCK="R"
  1. K PSORX("FILL DATE"),PSORX("MAIL/WINDOW"),PSORX("METHOD OF PICK-UP")
  1. Q
  1. ;
  1. ULK D PSOUL^PSSLOCK($P(PSOLST(ORN),"^",2))
  1. Q
  1. ;
  1. ULP D ULP^PSOHLD
  1. Q
  1. UHLD(DA) ;EP-
  1. S Y(0)=^PSRX(DA,0),STA=+$G(^("STA"))
  1. I STA=16 S VALMSG="Placed on HOLD by Provider!" K Y,STA D PSOUL^PSSLOCK(DA) D ULP S VALMBCK="" Q
  1. I STA'=3!('$D(^XUSEC("PSORPH",DUZ))) S VALMSG="Invalid Action Selection!",VALMBCK="" K Y,STA D PSOUL^PSSLOCK(DA) D ULP Q
  1. D FULL^VALM1 K DIR,DTOUT,DUOUT,DIRUT ;D NOOR^PSOHLD I $D(DIRUT) Q
  1. I DT>$P(^PSRX(DA,2),"^",6) D Q
  1. .S VALMSG="Medication Expired on "_$E($P(^PSRX(DA,2),"^",6),4,5)_"-"_$E($P(^(2),"^",6),6,7)_"-"_$E($P(^(2),"^",6),2,3) I $P(^PSRX(DA,"STA"),"^")<11 S $P(^PSRX(DA,"STA"),"^")=11
  1. .S ^PSRX(DA,"H")="",COMM="Medication Expired on "_$E($P(^(2),"^",6),4,5)_"-"_$E($P(^(2),"^",6),6,7)_"-"_$E($P(^(2),"^",6),2,3) D EN^PSOHLSN1(DA,"SC","ZE",COMM,"") K COMM
  1. EN S RXF=0 F I=0:0 S I=$O(^PSRX(DA,1,I)) Q:'I S RXF=I,RSDT=$P(^(0),"^")
  1. I RXF D I $D(Y) Q
  1. .S (PSDA,DA(1))=DA,DA=RXF,DIE="^PSRX("_DA(1)_",1,"
  1. .S RLDT=$P(^PSRX(DA(1),1,DA,0),"^",18)
  1. .S DR=$S('RLDT:".01R;2;",1:"")_"3COMMENTS"_";8///"_PSOSITE
  1. .S PSOUNHLD=1 D ^DIE K PSOUNHLD
  1. .S ZD(PSDA)=$P(^PSRX(DA(1),1,DA,0),U)
  1. .Q:$D(Y) S PSORX("FILL DATE")=$P(^PSRX(DA(1),1,DA,0),"^"),DA=PSDA K DA(1)
  1. S ACT=1,DIE="^PSRX(",FDT=$S($P(^PSRX(DA,2),U,2):$P(^PSRX(DA,2),U,2),1:DT)
  1. S RLDT=$P(^PSRX(DA,2),U,13)
  1. S DR="",RLDTP1=$P(RLDT,".",1)
  1. ;I 'RXF&'RLDT S DR="22//^S X=FDT;11;Q;"
  1. I 'RXF&'RLDT S DR="22///^S X=APSPVAL(""FILL DATE"");11///^S X=APSPVAL(""MAIL/WINDOW"");Q;"
  1. ;I RLDT&($P(^PSRX(DA,2),"^",2)="") S DR="22//^S X=RLDTP1;11;Q;"
  1. I RLDT&($P(^PSRX(DA,2),"^",2)="") S DR="22///^S X=RLDTP1;11///^S X=APSPVAL(""MAIL/WINDOW"");Q;"
  1. S DR=DR_"100///0;101///^S X=$S(RXF:$G(ZD(DA)),1:$P(^PSRX(DA,2),""^"",2))"
  1. ;
  1. S:'RXF DR=DR_";20///"_PSOSITE
  1. D ^DIE K FDT ;I $D(Y) S VALMBCK="R" Q
  1. S COMM="Medication Removed from Hold by Pharmacy" D EN^PSOHLSN1(DA,"OE","",COMM,PSONOOR) K COMM ;,PSONOOR
  1. S PSORX("FILL DATE")=$S('RXF:$P(^PSRX(DA,2),U,2),1:ZD(DA))
  1. K ^PSRX("AH",$P(^PSRX(DA,"H"),U),DA) S ^PSRX(DA,"H")=""
  1. D ACT^PSOHLDA S (NEW1,NEW11)="^^"
  1. S (RXF,RXFL(DA))=0 F JJ=0:0 S JJ=$O(^PSRX(DA,1,JJ)) Q:'JJ S (RXFL(DA),RXF)=JJ
  1. I $G(PSXSYS) D UNHOLD^PSOCMOPA Q:$G(XFLAG)
  1. I $G(DA) D RELC^PSOHLD Q:$G(PSOHRL)
  1. I PSORX("FILL DATE")>DT,$P(PSOPAR,U,6) D S^PSORXL Q
  1. S PCOMH(DA)="Medication Removed from Hold by Pharmacy"
  1. I $G(DA) S RXRH(DA)=DA
  1. I $P($G(^PSRX(DA,2)),U,15)'="" S $P(^PSRX(DA,2),U,14)=1,RXRP(DA)=1,$P(RXRP(DA),U,2)=$P($G(^PSRX(DA,0)),U,18) ; MARK PRESCRIPTION AND LABEL AS BEING REPRINTED WHEN UNHOLDING A RETURNED TO STOCK PRESCRIPTION
  1. I $G(PSORX("PSOL",1))']"" S PSORX("PSOL",1)=DA_"," Q
  1. F PSOX1=0:0 S PSOX1=$O(PSORX("PSOL",PSOX1)) Q:'PSOX1 S PSOX2=PSOX1
  1. I $L(PSORX("PSOL",PSOX2))+$L(DA)<220 S PSORX("PSOL",PSOX2)=PSORX("PSOL",PSOX2)_DA_","
  1. E S PSORX("PSOL",PSOX2+1)=DA_","
  1. D PSOUL^PSSLOCK($P(PSOLST(ORN),U,2))
  1. Q
  1. EX D PSOUL^PSSLOCK($P(PSOLST(ORN),"^",2)) D ^PSOBUILD
  1. K PSOHRL,PSOMSG,PSOPLCK,ST,PSL,PSNP,IR,NOW,DR,NEW1,NEW11,RTN,DA,PPL,RXN,RX0,RXS,DIK,RXP,FLD,ACT,DIE,DIC,DIR,DIE,X,Y,DIRUT,DUOUT,SUSPT,C,D0,LFD,I,PSDA,RFDATE,DI,DQ,%,RFN,XFLAG
  1. K HRX,PSHLD,PSOLIST,PSORX("FILL DATE"),STA,QTY,RFDT,PSORX0,PSRXN,RXF,JJ Q
  1. K PSORX("FILL DATE"),PSORX("MAIL/WINDOW"),PSORX("METHOD OF PICK-UP")
  1. ;
  1. ; Ask user for values to stuff.
  1. ASKVAL(APSPVAL) ;EP-
  1. N DATAARY,DIR
  1. S (DATAARY("DFLG"),DATAARY("QFLG"))=0
  1. S DATAARY("FIELD")=0
  1. D NOOR^PSOHLD
  1. I $D(DIRUT) S APSPVAL("DFLG")=1 Q
  1. S APSPVAL("NOOR")=PSONOOR
  1. S APSPVAL("DFLG")=0
  1. D FILLDT^PSODIR2(.DATAARY)
  1. I $G(DATAARY("DFLG")) S APSPVAL("DFLG")=1 Q
  1. S APSPVAL("FILL DATE")=DATAARY("FILL DATE")
  1. K DIR
  1. S DIR("B")="WINDOW"
  1. S DIR(0)="52,11" D ^DIR
  1. I $D(DIRUT) S APSPVAL("DFLG")=1
  1. S APSPVAL("MAIL/WINDOW")=Y
  1. Q