- PSDWCHG ;BIR/JPW-CS Mass Ward (for Drug) Transfer ; 6 July 94
- ;;3.0; CONTROLLED SUBSTANCES ;;13 Feb 97
- I '$D(PSDSITE) D ^PSDSET Q:'$D(PSDSITE)
- S PSDUZ=DUZ
- W !!,"This routine will allow you to do a mass conversion of all drugs in an ",!,"active NAOU from an old Ward designation to a new Ward designation."
- W !!,"You may convert a single NAOU, several NAOUs, or enter ^ALL to convert",!,"all NAOUs.",!!
- NAOU ;ask NAOU
- K DA,DIC
- F S DIC=58.8,DIC("A")="Select NAOU: ",DIC(0)="QEA",DIC("S")="I $S('$D(^(""I"")):1,'^(""I""):1,^(""I"")>DT:1,1:0),$P(^(0),""^"",2)=""N"",$P(^(0),""^"",3)=+PSDSITE" D ^DIC K DIC Q:Y<0 S NAOU(+Y)=""
- I '$D(NAOU)&(X'="^ALL") G END
- I X="^ALL" F PSD=0:0 S PSD=$O(^PSD(58.8,PSD)) Q:'PSD I $S('$D(^PSD(58.8,PSD,"I")):1,'^("I"):1,^("I")>DT:1,1:0),$P($G(^(0)),"^",2)="N",$P($G(^(0)),"^",3)=+PSDSITE S NAOU(PSD)=""
- G:'$D(NAOU) END
- OLD ;asking for old (current) WARD (FOR DRUG)
- K DA,DIR,DIRUT S DIR(0)="PO^42:EM",DIR("A")="Select OLD WARD",DIR("?")="Enter the Ward that currently exists in the WARD (FOR DRUG) field." D ^DIR K DIR I (Y<0)!$D(DIRUT) G END
- S OLD=+Y,OLDN=$P(Y,"^",2)
- NEW ;asking new (replacement) WARD (FOR DRUG)
- K DA,DIR,DIRUT S DIR(0)="PO^42:EM",DIR("A")="Select NEW WARD",DIR("?")="Enter the new Ward you wish to replace "_OLDN D ^DIR K DIR I $D(DIRUT)!(Y<0) W !,"No Action Taken",! G END
- S NEW=+Y,NEWN=$P(Y,"^",2)
- QUE ;asks queueing information
- S QUE=0 W !! K DA,DIR,DIRUT S DIR(0)="Y",DIR("B")="YES",DIR("A")="Do you want to queue this job",DIR("?",1)="To queue this job to run at a later time and free up your terminal now,"
- S DIR("?")="accept the default, enter 'N' to run immediately or '^' to quit." D ^DIR K DIR I $D(DIRUT) W $C(7),!!,"The WARD change you selected will not be updated.",!! G END
- I 'Y W !!,"Converting WARD (for Drug) now..." G START
- S QUE=1 W !!,"You will be notified by MailMan when the job is completed.",!!
- S ZTIO="",ZTRTN="START^PSDWCHG",ZTDESC="CS MASS WARD CONVERSION" S (ZTSAVE("OLD"),ZTSAVE("OLDN"),ZTSAVE("NEW"),ZTSAVE("NEWN"),ZTSAVE("QUE"),ZTSAVE("PSDUZ"))="" S:$D(NAOU) ZTSAVE("NAOU(")="" D ^%ZTLOAD K ZTSK G END
- START ;loop to update ward conversion
- K ^TMP("PSDWCHG",$J) S (CNTN,CNTD)=0
- F PSDRG=0:0 S PSDRG=$O(^PSD(58.8,"D",PSDRG)) Q:'PSDRG F LOC=0:0 S LOC=$O(^PSD(58.8,"D",PSDRG,OLD,LOC)) Q:'LOC I $D(NAOU(LOC)),$P($G(^PSD(58.8,LOC,0)),"^",2)'="P",$D(^PSD(58.8,LOC,1,PSDRG,0)) S ^TMP("PSDWCHG",$J,LOC,PSDRG)=""
- I $D(^TMP("PSDWCHG",$J)) F LOC=0:0 S LOC=$O(^TMP("PSDWCHG",$J,LOC)) Q:'LOC S CNTN=CNTN+1 F PSDRG=0:0 S PSDRG=$O(^TMP("PSDWCHG",$J,LOC,PSDRG)) Q:'PSDRG S CNTD=CNTD+1 D CHG
- K ^TMP("PSDWCHG",$J) D:QUE MSG
- I 'QUE W $C(7),!!,"Total Stock Drugs converted: ",CNTD,!,"Total NAOU(s) converted: ",CNTN,!
- END K %,%H,%I,CNTD,CNTN,DA,DIC,DIE,DIR,DIR,DIRUT,DR,DTOUT,DUOUT,JJ,LOC,NAOU,NEW,NEWN,OLD,OLDN
- K PSD,PSDA,PSDOUT,PSDR,PSDRG,PSDUZ,QUE,RDT,SUB,X,XMDUZ,XMSUB,XMTEXT,XMY,Y,ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTSK,^TMP("PSDWCHG",$J)
- S:$D(ZTQUEUED) ZTREQ="@"
- Q
- CHG ;change wards
- K DA,DIK S DA(2)=LOC,DA(1)=PSDRG,DA=OLD,DIK="^PSD(58.8,"_DA(2)_",1,"_DA(1)_",1," D ^DIK K DIK
- I '$D(^PSD(58.8,LOC,1,PSDRG,1,NEW,0)) K DA S DA(2)=LOC,DA(1)=PSDRG,DA=NEW,DIE="^PSD(58.8,"_DA(2)_",1,"_DA(1)_",1,",DR=".01////"_NEW D ^DIE K DIE W:'QUE "."
- S SUB=0 F JJ=0:0 S JJ=$O(^PSD(58.8,LOC,1,PSDRG,1,JJ)) Q:'JJ S SUB=SUB+1
- S $P(^PSD(58.8,LOC,1,PSDRG,1,0),"^",3,4)=NEW_"^"_SUB
- Q
- MSG ;send mailman message with completed info
- K XMY,^TMP("PSDWCMSG",$J) D NOW^%DTC S Y=X X ^DD("DD") S RDT=Y S ^TMP("PSDWCMSG",$J,1,0)="CS PHARM Conversion background job has run to completion.",^TMP("PSDWCMSG",$J,2,0)="Run Date: "_RDT,^TMP("PSDWCMSG",$J,3,0)=""
- S ^TMP("PSDWCMSG",$J,4,0)="Old Ward: "_OLDN_" converted to New Ward: "_NEWN,^TMP("PSDWCMSG",$J,5,0)="Total number of NAOU(s) converted: "_CNTN
- S ^TMP("PSDWCMSG",$J,6,0)="Total number of Stock Drugs converted: "_CNTD
- S XMSUB="CS PHARM MASS WARD CONVERSION SUMMARY",XMTEXT="^TMP(""PSDWCMSG"",$J,",XMDUZ="CONTROLLED SUBSTANCES PHARMACY",XMY(PSDUZ)="" S:'$D(XMY) XMY(.5)="" D ^XMD K XMY,^TMP("PSDWCMSG",$J)
- Q
- PSDWCHG ;BIR/JPW-CS Mass Ward (for Drug) Transfer ; 6 July 94
- +1 ;;3.0; CONTROLLED SUBSTANCES ;;13 Feb 97
- +2 IF '$DATA(PSDSITE)
- DO ^PSDSET
- IF '$DATA(PSDSITE)
- QUIT
- +3 SET PSDUZ=DUZ
- +4 WRITE !!,"This routine will allow you to do a mass conversion of all drugs in an ",!,"active NAOU from an old Ward designation to a new Ward designation."
- +5 WRITE !!,"You may convert a single NAOU, several NAOUs, or enter ^ALL to convert",!,"all NAOUs.",!!
- NAOU ;ask NAOU
- +1 KILL DA,DIC
- +2 FOR
- SET DIC=58.8
- SET DIC("A")="Select NAOU: "
- SET DIC(0)="QEA"
- SET DIC("S")="I $S('$D(^(""I"")):1,'^(""I""):1,^(""I"")>DT:1,1:0),$P(^(0),""^"",2)=""N"",$P(^(0),""^"",3)=+PSDSITE"
- DO ^DIC
- KILL DIC
- IF Y<0
- QUIT
- SET NAOU(+Y)=""
- +3 IF '$DATA(NAOU)&(X'="^ALL")
- GOTO END
- +4 IF X="^ALL"
- FOR PSD=0:0
- SET PSD=$ORDER(^PSD(58.8,PSD))
- IF 'PSD
- QUIT
- IF $SELECT('$DATA(^PSD(58.8,PSD,"I")):1,'^("I"):1,^("I")>DT:1,1:0)
- IF $PIECE($GET(^(0)),"^",2)="N"
- IF $PIECE($GET(^(0)),"^",3)=+PSDSITE
- SET NAOU(PSD)=""
- +5 IF '$DATA(NAOU)
- GOTO END
- OLD ;asking for old (current) WARD (FOR DRUG)
- +1 KILL DA,DIR,DIRUT
- SET DIR(0)="PO^42:EM"
- SET DIR("A")="Select OLD WARD"
- SET DIR("?")="Enter the Ward that currently exists in the WARD (FOR DRUG) field."
- DO ^DIR
- KILL DIR
- IF (Y<0)!$DATA(DIRUT)
- GOTO END
- +2 SET OLD=+Y
- SET OLDN=$PIECE(Y,"^",2)
- NEW ;asking new (replacement) WARD (FOR DRUG)
- +1 KILL DA,DIR,DIRUT
- SET DIR(0)="PO^42:EM"
- SET DIR("A")="Select NEW WARD"
- SET DIR("?")="Enter the new Ward you wish to replace "_OLDN
- DO ^DIR
- KILL DIR
- IF $DATA(DIRUT)!(Y<0)
- WRITE !,"No Action Taken",!
- GOTO END
- +2 SET NEW=+Y
- SET NEWN=$PIECE(Y,"^",2)
- QUE ;asks queueing information
- +1 SET QUE=0
- WRITE !!
- KILL DA,DIR,DIRUT
- SET DIR(0)="Y"
- SET DIR("B")="YES"
- SET DIR("A")="Do you want to queue this job"
- SET DIR("?",1)="To queue this job to run at a later time and free up your terminal now,"
- +2 SET DIR("?")="accept the default, enter 'N' to run immediately or '^' to quit."
- DO ^DIR
- KILL DIR
- IF $DATA(DIRUT)
- WRITE $CHAR(7),!!,"The WARD change you selected will not be updated.",!!
- GOTO END
- +3 IF 'Y
- WRITE !!,"Converting WARD (for Drug) now..."
- GOTO START
- +4 SET QUE=1
- WRITE !!,"You will be notified by MailMan when the job is completed.",!!
- +5 SET ZTIO=""
- SET ZTRTN="START^PSDWCHG"
- SET ZTDESC="CS MASS WARD CONVERSION"
- SET (ZTSAVE("OLD"),ZTSAVE("OLDN"),ZTSAVE("NEW"),ZTSAVE("NEWN"),ZTSAVE("QUE"),ZTSAVE("PSDUZ"))=""
- IF $DATA(NAOU)
- SET ZTSAVE("NAOU(")=""
- DO ^%ZTLOAD
- KILL ZTSK
- GOTO END
- START ;loop to update ward conversion
- +1 KILL ^TMP("PSDWCHG",$JOB)
- SET (CNTN,CNTD)=0
- +2 FOR PSDRG=0:0
- SET PSDRG=$ORDER(^PSD(58.8,"D",PSDRG))
- IF 'PSDRG
- QUIT
- FOR LOC=0:0
- SET LOC=$ORDER(^PSD(58.8,"D",PSDRG,OLD,LOC))
- IF 'LOC
- QUIT
- IF $DATA(NAOU(LOC))
- IF $PIECE($GET(^PSD(58.8,LOC,0)),"^",2)'="P"
- IF $DATA(^PSD(58.8,LOC,1,PSDRG,0))
- SET ^TMP("PSDWCHG",$JOB,LOC,PSDRG)=""
- +3 IF $DATA(^TMP("PSDWCHG",$JOB))
- FOR LOC=0:0
- SET LOC=$ORDER(^TMP("PSDWCHG",$JOB,LOC))
- IF 'LOC
- QUIT
- SET CNTN=CNTN+1
- FOR PSDRG=0:0
- SET PSDRG=$ORDER(^TMP("PSDWCHG",$JOB,LOC,PSDRG))
- IF 'PSDRG
- QUIT
- SET CNTD=CNTD+1
- DO CHG
- +4 KILL ^TMP("PSDWCHG",$JOB)
- IF QUE
- DO MSG
- +5 IF 'QUE
- WRITE $CHAR(7),!!,"Total Stock Drugs converted: ",CNTD,!,"Total NAOU(s) converted: ",CNTN,!
- END KILL %,%H,%I,CNTD,CNTN,DA,DIC,DIE,DIR,DIR,DIRUT,DR,DTOUT,DUOUT,JJ,LOC,NAOU,NEW,NEWN,OLD,OLDN
- +1 KILL PSD,PSDA,PSDOUT,PSDR,PSDRG,PSDUZ,QUE,RDT,SUB,X,XMDUZ,XMSUB,XMTEXT,XMY,Y,ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTSK,^TMP("PSDWCHG",$JOB)
- +2 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- +3 QUIT
- CHG ;change wards
- +1 KILL DA,DIK
- SET DA(2)=LOC
- SET DA(1)=PSDRG
- SET DA=OLD
- SET DIK="^PSD(58.8,"_DA(2)_",1,"_DA(1)_",1,"
- DO ^DIK
- KILL DIK
- +2 IF '$DATA(^PSD(58.8,LOC,1,PSDRG,1,NEW,0))
- KILL DA
- SET DA(2)=LOC
- SET DA(1)=PSDRG
- SET DA=NEW
- SET DIE="^PSD(58.8,"_DA(2)_",1,"_DA(1)_",1,"
- SET DR=".01////"_NEW
- DO ^DIE
- KILL DIE
- IF 'QUE
- WRITE "."
- +3 SET SUB=0
- FOR JJ=0:0
- SET JJ=$ORDER(^PSD(58.8,LOC,1,PSDRG,1,JJ))
- IF 'JJ
- QUIT
- SET SUB=SUB+1
- +4 SET $PIECE(^PSD(58.8,LOC,1,PSDRG,1,0),"^",3,4)=NEW_"^"_SUB
- +5 QUIT
- MSG ;send mailman message with completed info
- +1 KILL XMY,^TMP("PSDWCMSG",$JOB)
- DO NOW^%DTC
- SET Y=X
- XECUTE ^DD("DD")
- SET RDT=Y
- SET ^TMP("PSDWCMSG",$JOB,1,0)="CS PHARM Conversion background job has run to completion."
- SET ^TMP("PSDWCMSG",$JOB,2,0)="Run Date: "_RDT
- SET ^TMP("PSDWCMSG",$JOB,3,0)=""
- +2 SET ^TMP("PSDWCMSG",$JOB,4,0)="Old Ward: "_OLDN_" converted to New Ward: "_NEWN
- SET ^TMP("PSDWCMSG",$JOB,5,0)="Total number of NAOU(s) converted: "_CNTN
- +3 SET ^TMP("PSDWCMSG",$JOB,6,0)="Total number of Stock Drugs converted: "_CNTD
- +4 SET XMSUB="CS PHARM MASS WARD CONVERSION SUMMARY"
- SET XMTEXT="^TMP(""PSDWCMSG"",$J,"
- SET XMDUZ="CONTROLLED SUBSTANCES PHARMACY"
- SET XMY(PSDUZ)=""
- IF '$DATA(XMY)
- SET XMY(.5)=""
- DO ^XMD
- KILL XMY,^TMP("PSDWCMSG",$JOB)
- +5 QUIT