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

PSORXRP1.m

Go to the documentation of this file.
  1. PSORXRP1 ;BIR/SAB-rx speed reprint listman ;Aug 31, 2021
  1. ;;7.0;OUTPATIENT PHARMACY;**11,27,120,156,148,367,641,441**;DEC 1997;Build 208
  1. ;External references PSOL and PSOUL^PSSLOCK supported by DBIA 2789
  1. SEL N PSODISP,PSOMGREP,VALMCNT,Y I '$G(PSOCNT) S VALMSG="This patient has no Prescriptions!" S VALMBCK="" Q
  1. S RXCNT=0 K PSOFDR,DIR,DUOUT,DIRUT S DIR("A")="Select Orders by number",DIR(0)="LO^1:"_PSOCNT D ^DIR S LST=Y I $D(DTOUT)!($D(DUOUT)) K DIR,DIRUT,DTOUT,DUOUT S VALMBCK="" Q
  1. K PSOSUSID N CNT,LSTCNT,ORD,ORN,PSOOELSE,TMP
  1. S CNT=0
  1. I +LST S PSOOELSE=1 S LSTCNT=$L(LST,",") F ORD=1:1:LSTCNT Q:$P(LST,",",ORD)']"" S ORN=$P(LST,",",ORD) I +$G(PSOLST(ORN))=52,$P($G(PSOLST(ORN)),U,3)="ACTIVE" D
  1. .N CHKPARK,LNG,ORD1,PSDRG,PSRX0,RXNUM,TMPLST
  1. .S CHKPARK=$P($G(PSOLST(+ORN)),"^",2) ;PAPI441
  1. .I CHKPARK'="",$G(^PSRX(CHKPARK,"PARK")),+$P($G(^PSRX(CHKPARK,"STA")),"^")=0 D
  1. ..S CNT=CNT+1,TMPLST=""
  1. ..S ORD1=0 I ORD>1 S ORD1=ORD-1
  1. ..S LNG=$L($P(LST,",",1,ORD))+2
  1. ..I ORD1>0 S TMPLST=$E(LST,1,$L($P(LST,",",1,ORD1)))
  1. ..I ORD<LSTCNT S TMPLST=$S($G(TMPLST)'="":TMPLST_",",1:"")_$E(LST,LNG,$L(LST))
  1. ..S LST=TMPLST
  1. ..S LSTCNT=LSTCNT-1,ORD=ORD-1
  1. ..;S VALMSG="Cannot Reprint! Medication is currently PARKED.",VALMBCK=""
  1. ..I CNT=1 D
  1. ...D FULL^VALM1
  1. ...;W !!,"Cannot Reprint! Medication is currently PARKED."
  1. ...;S VALMSG="Cannot Reprint! Medication is currently PARKED."
  1. ..;S X="" F S X=$O(PSOSD("ACTIVE",X)) Q:X="" I +PSOSD("ACTIVE",X)=+ORN D
  1. ..S PSRX0=$G(^PSRX(CHKPARK,0))
  1. ..S RXNUM=$P(PSRX0,U,1)
  1. ..S PSDRG=+$P(PSRX0,U,6)
  1. ..S PSDRG=$P($G(^PSDRUG(PSDRG,0)),U,1)
  1. ..;W !," #"_+ORN_" Rx #: "_RXNUM_" "_$G(PSDRG)
  1. ..S TMP("PSOSEL",(CNT+1))=" #"_+ORN_$E(" ",1,(6-$L(+ORN)))_"Rx #: "_RXNUM_$E(" ",1,(12-$L(RXNUM)))_$G(PSDRG)
  1. S Y=1
  1. I CNT>0 D
  1. .N LN
  1. .W !
  1. .S TMP("PSOSEL",1)="Cannot Reprint! Medication"_$S(CNT=1:" is",1:"s are")_" currently PARKED."
  1. .S LN=0 F S LN=$O(TMP("PSOSEL",LN)) Q:LN="" W !,$G(TMP("PSOSEL",LN))
  1. .W !!
  1. .N DIR,DIRUT,DUOUT
  1. .S DIR(0)="E" D ^DIR
  1. .W !!
  1. I Y=0 S (PSOOELSE,PSOREPX)=1 G SEL1
  1. K DIR,DIRUT,DTOUT,PSOREPX I +LST S PSOOELSE=1 D
  1. .I CNT=0 D FULL^VALM1
  1. .K DIR S DIR("A")="Number of Copies? ",DIR(0)="N^1:99:0",DIR("?")="Enter the number of copies you want (1 TO 99)",DIR("B")=1
  1. .D ^DIR K DIR S:$D(DIRUT) PSOREPX=1 Q:$D(DIRUT) S COPIES=Y
  1. .K DIR S DIR("A")="Print adhesive portion of label only? ",DIR(0)="Y",DIR("B")="No",DIR("?",1)="If entire label, including trailers are to print press RETURN for default."
  1. .S DIR("?")="Else if only bottle and mailing labels are to print enter Y or YES." D ^DIR K DIR S:$D(DIRUT) PSOREPX=1 Q:$D(DIRUT) S SIDE=Y
  1. .I $P(PSOPAR,"^",30),$$GET1^DIQ(59,PSOSITE_",",105,"I")=2.4 D Q:$G(PSOREPX)
  1. ..K DIR,DIRUT S DIR("A")="Do you want to resend to Dispensing System Device",DIR(0)="Y",DIR("B")="No"
  1. ..D ^DIR K DIR S:$D(DIRUT) PSOREPX=1 Q:$D(DIRUT) S PSODISP=$S(Y:0,1:1)
  1. .I $$GET1^DIQ(59,PSOSITE,134)'="" D Q:$D(DIRUT)
  1. ..K DIR,DIRUT S DIR("A")="Reprint the FDA Medication Guide",DIR(0)="Y",DIR("B")="No"
  1. ..D ^DIR K DIR S:$D(DIRUT) PSOREPX=1 Q:$D(DIRUT) S PSOMGREP=Y
  1. .K DIRUT,DIR S DIR("A")="Comments: ",DIR(0)="FA^5:60",DIR("?")="5-60 characters input required for activity log." S:$G(PCOMX)]"" DIR("B")=$G(PCOMX)
  1. .D ^DIR K DIR S:$D(DIRUT) PSOREPX=1 Q:$D(DIRUT) S (PCOM,PCOMX)=Y
  1. .S PSOCLC=DUZ
  1. .F ORD=1:1:$L(LST,",") Q:$P(LST,",",ORD)']"" S ORN=$P(LST,",",ORD),QFLG=0 D:+PSOLST(ORN)=52 RX
  1. .S VALMBCK="R"
  1. I '+LST,CNT>0 D
  1. .S VALMBCK="R"
  1. .S VALMSG="Cannot Reprint! Medication"_$S(CNT=1:" is",1:"s are")_" currently PARKED."
  1. .;I CNT=1 S VALMSG="Cannot Reprint! Medication is currently PARKED."
  1. .;I CNT>1 S VALMSG="Cannot Reprint! Medications are currently PARKED."
  1. SEL1 I $G(PSOREPX) S VALMBCK="R",VALMSG="No Labels Reprinted."
  1. K PSOREPX
  1. I '$G(PSOOELSE) S VALMBCK=""
  1. D ^PSOBUILD
  1. K PSOMSG,PSORPSRX,QFLG,%,DIR,DUOUT,DTOUT,DIROUT,DIRUT,PCOM,PCOMX,C,I,J,JJJ,K,RX,RXF,X,Z,P,PDA,PSPRXN,COPIES,SIDE,PPL,REPRINT,LST,PSOSUSID D KVA^VADPT
  1. Q
  1. RX ;process reprint request
  1. Q:$P(^PSRX($P(PSOLST(ORN),"^",2),"STA"),"^")>11
  1. I $$LMREJ^PSOREJU1($P(PSOLST(ORN),"^",2)) W $C(7),!!,"Rx "_$$GET1^DIQ(52,$P(PSOLST(ORN),"^",2),.01)_" has OPEN/UNRESOLVED 3rd Party Payer Rejects!" K DIR D PAUSE^VALM1 Q
  1. ;PSO*7*641 Suspense warning msg
  1. S PSOSUSID=$O(^PS(52.5,"B",$P(PSOLST(ORN),"^",2),0))
  1. I PSOSUSID,'$G(^PS(52.5,PSOSUSID,"P")) D Q
  1. . W $C(7),!!,"#"_ORN_" Rx "_$P(^PSRX($P(PSOLST(ORN),U,2),0),U)_" MAY NOT BE PRINTED using this option" W !,"use SUSPENSE FUNCTIONS Options." K DIR D PAUSE^VALM1 Q
  1. S PSORPSRX=$P(PSOLST(ORN),"^",2) D PSOL^PSSLOCK(PSORPSRX) I '$G(PSOMSG) W $C(7),!!,$S($P($G(PSOMSG),"^",2)'="":$P($G(PSOMSG),"^",2),1:"Another person is editing Rx "_$P($G(^PSRX(PSORPSRX,0)),"^")),! D PAUSE^VALM1 K PSORPSRX,PSOMSG Q
  1. S RX=$P(PSOLST(ORN),"^",2),STA=$P(^PSRX($P(PSOLST(ORN),"^",2),"STA"),"^") D CHK I $G(QFLG) D ULR Q
  1. S RXF=0,ZD(RX)=DT,REPRINT=1
  1. S RXRP($P(PSOLST(ORN),"^",2))=1_"^"_COPIES_"^"_SIDE
  1. I $G(PSODISP)=1 S RXRP($P(PSOLST(ORN),"^",2),"RP")=1
  1. I $G(PSOMGREP)=1 S RXRP($P(PSOLST(ORN),"^",2),"MG")=1
  1. S RXFL($P(PSOLST(ORN),"^",2))=0 F ZZZ=0:0 S ZZZ=$O(^PSRX($P(PSOLST(ORN),"^",2),1,ZZZ)) Q:'ZZZ S RXFL($P(PSOLST(ORN),"^",2))=ZZZ
  1. K ZZZ
  1. I $G(PSORX("PSOL",1))']"" S PSORX("PSOL",1)=RX_"," S ST="" D ACT1,ULR Q
  1. F PSOX1=0:0 S PSOX1=$O(PSORX("PSOL",PSOX1)) Q:'PSOX1 S PSOX2=PSOX1
  1. I $L(PSORX("PSOL",PSOX2))+$L(RX)<220 S PSORX("PSOL",PSOX2)=PSORX("PSOL",PSOX2)_RX_","
  1. E S PSORX("PSOL",PSOX2+1)=RX_","
  1. S ST="" D ACT1
  1. D ULR
  1. Q
  1. CHK ;check for valid reprint
  1. I DT>$P(^PSRX(RX,2),"^",6) D S QFLG=1 Q
  1. .I $P(^PSRX(RX,"STA"),"^")<11 S $P(^PSRX(RX,"STA"),"^")=11 D
  1. ..S COMM="Medication Expired on "_$E($P(^PSRX(RX,2),6),4,5)_"-"_$E($P(^(2),"^",6),6,7)_"-"_$E($P(^(2),"^",6),2,3) D EN^PSOHLSN1(RX,"SC","ZE",COMM) K COMM
  1. S DFN=PSODFN D DEM^VADPT I $P(VADM(6),"^",2)]"" D S QFLG=1 Q
  1. .S $P(^PSRX(RX,"STA"),"^")=12,PCOM="Patient Expired "_$P(VADM(6),"^",2),ST="C" D EN^PSOHLSN1(RX,"OD","",PCOM,"A")
  1. .D ACT1
  1. I $D(RXPR($P(PSOLST(ORN),"^",2)))!$D(RXRP($P(PSOLST(ORN),"^",2))) S QFLG=1 Q
  1. D VALID Q:$G(QFLG)
  1. S X=$O(^PS(52.5,"B",RX,0)) I X,'$G(^PS(52.5,X,"P")) S QFLG=1 Q
  1. I $G(X)'>0 G GOOD
  1. I $P($G(^PS(52.5,X,0)),"^",7)']"" G GOOD
  1. I $P($G(^PS(52.5,X,0)),"^",7)="Q" K X,XX S QFLG=1 Q
  1. I $P($G(^PS(52.5,X,0)),"^",7)="L" K X,XX S QFLG=1 Q
  1. GOOD K X
  1. I $D(^PS(52.4,RX)) S QFLG=1 Q
  1. I $D(^PS(52.4,"AREF",PSODFN,RX)) S QFLG=1 Q
  1. I $G(PSODIV),$D(^PSRX(RX,2)),+$P(^(2),"^",9),+$P(^(2),"^",9)'=PSOSITE S PSPOP=0,PSPRXN=RX D CHK1^PSOUTLA I $G(POERR)&(PSPOP) S QFLG=1 Q
  1. I STA=3!(STA=4)!(STA=12) S QFLG=1 Q
  1. Q
  1. ACT1 S RXF=0 F J=0:0 S J=$O(^PSRX(RX,1,J)) Q:'J S RXF=J S:J>5 RXF=J+1
  1. S IR=0 F J=0:0 S J=$O(^PSRX(RX,"A",J)) Q:'J S IR=J
  1. S IR=IR+1,^PSRX(RX,"A",0)="^52.3DA^"_IR_"^"_IR
  1. D NOW^%DTC S ^PSRX(RX,"A",IR,0)=%_"^"_$S($G(ST)'="C":"W",1:"C")_"^"_DUZ_"^"_RXF_"^"_PCOM_$S($G(ST)'="C":" ("_COPIES_" COPIES)",1:""),PCOMX=PCOM K PC,IR,PS,XX,%,%H,%I,RXF
  1. S:$P(^PSRX(RX,2),"^",15)&($G(ST)'="C") $P(^PSRX(RX,2),"^",14)=1
  1. Q
  1. VALID ;check for rx in label array
  1. I $O(PSORX("PSOL",0)) D
  1. .F PSOX1=0:0 S PSOX1=$O(PSORX("PSOL",PSOX1)) Q:'PSOX1 I PSORX("PSOL",PSOX1)[RX_"," S QFLG=1 Q
  1. Q
  1. ULR ;
  1. I $G(PSORPSRX) D PSOUL^PSSLOCK(PSORPSRX)
  1. Q