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

PSOSUCAT.m

Go to the documentation of this file.
  1. PSOSUCAT ;EPIP/RTW -Print From Suspense By Category ;08/01/14 14:53
  1. ;;7.0;OUTPATIENT PHARMACY;**452**;DEC 1997;Build 56
  1. ;---------------------------------------------------------------------
  1. ; ICR# TYPE DESCRIPTION
  1. ;----- ------- ------------------------------------
  1. ;10026 Support ^DIK
  1. ;---------------------------------------------------------------------
  1. START N DIR,X,Y,DTOUT,DUOUT,PSOSULST,PSORESP,PSOSTPF,PSOMOD,PSOTAG
  1. S CNT=0
  1. s DIR("B")="ALL"
  1. S DIR(0)="SBO^A:ALL;N:Non-Controlled Drugs;C:Controlled Substances;S:Supplies;R:Refrigerated Items;D:Drugs;V:VA Classifications;E:Exit"
  1. S DIR("A")="Select Print Category"
  1. S DIR("T")=DTIME
  1. S DIR("?",1)="Enter 'A' ALL Prescriptions on Suspense for the Division"
  1. S DIR("?",2)=" 'N' Non-Controlled Rx or OTCs (Special Handling Code 6 or 9)"
  1. S DIR("?",3)=" 'C' Controlled Substance Prescriptions (DEA 1, 2, 3, 4, 5)"
  1. S DIR("?",4)=" 'S' Supply Prescriptions (Special Handling Code 'S')"
  1. S DIR("?",5)=" 'R' Refrigerated Prescriptions (Special Handling Code 'Q')"
  1. S DIR("?",6)=" 'D' Prescriptions by Selected Drugs"
  1. S DIR("?",7)=" 'V' Prescriptions by Selected VA Classifications"
  1. S DIR("?",8)=" or 'E' or '^' to Exit"
  1. S DIR("?")=" "
  1. D ^DIR K DIR I $D(DIRUT)!(Y="E") D MESS^PSOSULB1 G EXIT^PSOSULBL
  1. I Y="A" G ASK^PSOSULB1
  1. I Y="N" S PSORESP="N^Non-Controlled Drugs^DEA"
  1. I Y="C" S PSORESP="C^Controlled Substances^DEA"
  1. I Y="D" S PSORESP="D^Specific Drugs^DRUG"
  1. I Y="V" S PSORESP="V^Specific VA Class^CLASS"
  1. I Y="S" S PSORESP="S^Supplies^SUPPLY"
  1. I Y="R" S PSORESP="R^Refrigerated Items^FRIDGE"
  1. S PSOSULST($P(PSORESP,U,3))=""
  1. D INVR I $D(PSOSTPF) D MESS^PSOSULB1 G EXIT^PSOSULBL
  1. D DISPENSE I $D(PSOSTPF) D MESS^PSOSULB1 G EXIT^PSOSULBL
  1. I "SR"'[$P(PSORESP,U) D @$P(PSORESP,U) I $D(PSOSTPF) D MESS^PSOSULB1 G EXIT^PSOSULBL
  1. S PSOTAG="" F S PSOTAG=$O(PSOSULST(PSOTAG)) Q:PSOTAG']"" S PSOSULST(PSOTAG)=PSOMOD
  1. D CONT I $D(PSOSTPF) D MESS^PSOSULB1 G EXIT^PSOSULBL
  1. G ASK^PSOSULB1
  1. INVR N DIR
  1. S DIR(0)="SBAO^Include:Include "_$P(PSORESP,U,2)_";Exclude:Exclude "_$P(PSORESP,U,2)
  1. S DIR("A")=$P(PSORESP,U,2)_": ",DIR("B")="Include"
  1. S DIR("T")=DTIME
  1. D ^DIR S:$D(DIRUT) PSOSTPF=1 Q:$D(PSOSTPF)
  1. S PSOMOD=""
  1. I Y["Exclude" S PSOMOD="1"
  1. Q
  1. DISPENSE N DIR
  1. S DIR(0)="SBAO^M:Mail;W:Window;B:Both Mail and Window"
  1. S DIR("A")=$S($P(PSOMOD,U):"Exclude:",1:"Include:")_" Mail (M), Window (W), Both (B): ",DIR("B")="Both"
  1. S DIR("T")=DTIME
  1. D ^DIR S:$D(DIRUT) PSOSTPF=1 Q:$D(PSOSTPF)
  1. S PSOMOD=PSOMOD_"^"_$S((Y="B"):"",1:Y)
  1. Q
  1. INCLD N DIR,PSOPMT
  1. S DIR(0)="YO",DIR("B")="YES"
  1. S DIR("T")=DTIME
  1. S PSOPMT=$S(1:$P(PSOMOD,U),1:"")
  1. I $P(PSORESP,U)="N",$G(PSOPMT) D
  1. . S DIR("?")=" ",DIR("?",1)="Enter 'YES' to EXCLUDE refrigerated "_$P(PSORESP,U,2)_" from printing."
  1. . S DIR("?",2)="Enter 'NO' to print refrigerated "_$P(PSORESP,U,2)_" in addition to the"
  1. . S DIR("?",3)="other categories."
  1. I $P(PSORESP,U)="N",'$G(PSOPMT) D
  1. . S DIR("?")=" ",DIR("?",1)="Enter 'NO' to EXCLUDE refrigerated "_$P(PSORESP,U,2)_" from printing."
  1. . S DIR("?",2)="Enter 'YES' to print refrigerated "_$P(PSORESP,U,2)_"."
  1. I $P(PSORESP,U)="C",$G(PSOPMT) D
  1. . S DIR("?")=" "
  1. . S DIR("?",1)="Enter 'YES' to EXCLUDE refrigerated "_$P(PSORESP,U,2)_" of the selected range"
  1. . S DIR("?",2)="from printing."
  1. . S DIR("?",3)="Enter 'NO' to print refrigerated "_$P(PSORESP,U,2)_" of the selected range"
  1. . S DIR("?",4)="in addition to the other categories."
  1. I $P(PSORESP,U)="C",'$G(PSOPMT) D
  1. . S DIR("?")=" ",DIR("?",1)="Enter 'NO' to EXCLUDE refrigerated "_$P(PSORESP,U,2)_" of the selected range"
  1. . S DIR("?",2)="from printing."
  1. . S DIR("?",3)="Enter 'YES' to print refrigerated "_$P(PSORESP,U,2)_" of the selected range."
  1. S DIR("A")=$S($P(PSOMOD,U):"Exclude",1:"Include")_" Refrigerated Items" D ^DIR S:$D(DIRUT) PSOSTPF=1 Q:$D(PSOSTPF) S:Y>0 PSOMOD=PSOMOD_"^" S:Y=0 PSOMOD=PSOMOD_"^Q"
  1. I $P(PSORESP,U)="N",$G(PSOPMT) D
  1. . S DIR("?")=" "
  1. . S DIR("?",1)="Enter 'YES' to EXCLUDE Non-Controlled supplies from printing."
  1. . S DIR("?",2)="Enter 'NO' to print Non-Controlled supplies in addition to the"
  1. . S DIR("?",3)="other categories."
  1. I $P(PSORESP,U)="N",'$G(PSOPMT) D
  1. . S DIR("?")=" "
  1. . S DIR("?",1)="Enter 'NO' to EXCLUDE Non-Controlled supplies from printing."
  1. . S DIR("?",2)="Enter 'YES' to print Non-Controlled supplies."
  1. I $P(PSORESP,U)="N" S DIR("A")=$S($P(PSOMOD,U):"Exclude",1:"Include")_" Supplies" D ^DIR S:$D(DIRUT) PSOSTPF=1 Q:$D(PSOSTPF) S:Y>0 PSOMOD=PSOMOD_"^" S:Y=0 PSOMOD=PSOMOD_"^S"
  1. Q
  1. CONT N DIR
  1. S DIR(0)="YO"
  1. S DIR("A")="Print Suspended '"_$P(PSORESP,U,2)_"' selections" ;rtw
  1. I $P(PSOMOD,U) S DIR("A")="Print everything Suspended EXCEPT '"_$P(PSORESP,U,2)_"' selections" ;rtw
  1. S DIR("B")="NO"
  1. S DIR("T")=DTIME
  1. W ! D ^DIR S:Y'>0 PSOSTPF=1
  1. Q
  1. N N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
  1. S DIR(0)="SBO^Rx:Rx;OTC:OTC;Both:Both Rx and OTC"
  1. S DIR("A")="Include the following"
  1. I $P(PSOMOD,U) S DIR("A")="Exclude the following"
  1. S DIR("?",1)="Enter 'Rx' Prescriptions for Legend Drugs (Special Handling Code 6)"
  1. S DIR("?",2)=" 'OTC' Prescriptions for OTC Drugs (Special Handling Code 9)"
  1. S DIR("?",3)=" 'Both' Prescriptions for BOTH Legend and OTC Drugs"
  1. S DIR("?")=" "
  1. S DIR("B")="Both"
  1. S DIR("T")=DTIME
  1. D ^DIR K DIR S:$D(DIRUT)!(Y="E") PSOSTPF=1 Q:$D(PSOSTPF)
  1. I Y="Rx" S PSOSULST($P(PSORESP,U,3),6)=""
  1. I Y="OTC" S PSOSULST($P(PSORESP,U,3),9)=""
  1. I Y="Both" S PSOSULST($P(PSORESP,U,3),6)="",PSOSULST($P(PSORESP,U,3),9)=""
  1. D INCLD Q:$D(PSOSTPF)
  1. Q
  1. C N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
  1. S DIR(0)="LAO^1:5:0"
  1. S DIR("A")="Enter a list or range of CS Federal Schedules to INCLUDE (1-5): "
  1. I $P(PSOMOD,U) S DIR("A")="Enter list or range of CS Federal Schedules to EXCLUDE (1-5): "
  1. S DIR("B")="1-5"
  1. S DIR("?")="This response must be a list or range, e.g. 2,4 or 3-5."
  1. S DIR("T")=DTIME
  1. D ^DIR K DIR S:$D(DIRUT) PSOSTPF=1 Q:$D(PSOSTPF)
  1. N XX F XX=1:1:($L(Y,",")-1) S PSOSULST($P(PSORESP,U,3),+$P(Y,",",XX))=""
  1. D INCLD Q:$D(PSOSTPF)
  1. Q
  1. D N PSODRG,PSOSORT,PSOSRT,DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
  1. D DSLCT S:'$O(PSOSULST($P(PSORESP,U,3),"")) PSOSTPF=1 Q:$D(PSOSTPF) D
  1. . W !!,"Drugs Selected:"
  1. . S PSODRG=0 F S PSODRG=$O(PSOSULST($P(PSORESP,U,3),PSODRG)) Q:'PSODRG D
  1. .. S PSOSORT($P(^PSDRUG(PSODRG,0),U))=""
  1. . S PSOSRT="" F S PSOSRT=$O(PSOSORT(PSOSRT)) Q:PSOSRT="" D
  1. .. W !,PSOSRT
  1. Q
  1. DSLCT N DIC,X,Y,DTOUT,DUOUT
  1. S DIC=50,DIC(0)="AEQM"
  1. DSLCT2 D ^DIC Q:Y'>0 S PSOSULST($P(PSORESP,U,3),+Y)=""
  1. S DIC("A")="Select Another DRUG GENERIC NAME: "
  1. G DSLCT2
  1. Q
  1. V N PSOCLSS,PSOSORT,PSOSRT,DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
  1. D VSLCT S:'$O(PSOSULST($P(PSORESP,U,3),"")) PSOSTPF=1 Q:$D(PSOSTPF) D
  1. . W !!,"VA Classification Selected:"
  1. . S PSOCLSS=0 F S PSOCLSS=$O(PSOSULST($P(PSORESP,U,3),PSOCLSS)) Q:'PSOCLSS D
  1. .. S PSOSORT($P(^PS(50.605,PSOCLSS,0),U))=""
  1. . S PSOSRT="" F S PSOSRT=$O(PSOSORT(PSOSRT)) Q:PSOSRT="" D
  1. .. W !,PSOSRT
  1. Q
  1. VSLCT N DIC,X,Y,DTOUT,DUOUT
  1. S DIC=50.605,DIC(0)="AEQM"
  1. VSLCT2 N PSOCLSIN,PSOVACLS,CHLDCLSS
  1. D ^DIC Q:Y'>0 S PSOCLSIN=+Y S PSOSULST($P(PSORESP,U,3),+Y)=""
  1. S PSOVACLS=$P(^PS(50.605,PSOCLSIN,0),U)
  1. D VDISP,VSPLIT
  1. W !
  1. S DIC("A")="Select Another VA DRUG CLASS CODE: "
  1. G VSLCT2
  1. Q
  1. VDISP N OI,PSODRG
  1. N CNT S CNT=0
  1. S OI=0 F S OI=$O(^PSDRUG("AOC",OI)) Q:'OI S PSODRG=0 F S PSODRG=$O(^PSDRUG("AOC",OI,PSOVACLS,PSODRG)) Q:'PSODRG D
  1. . S CNT=CNT+1 I CNT=1 W !!,"Dispense Drugs for VA Class ",PSOVACLS," are:"
  1. . W !,$P(^PSDRUG(PSODRG,0),U)
  1. Q
  1. VSPLIT I $D(^PS(50.605,"AC",PSOCLSIN)) D
  1. . S CHLDCLSS=0 F S CHLDCLSS=$O(^PS(50.605,"AC",PSOCLSIN,CHLDCLSS)) D:$D(^PS(50.605,"AC",+CHLDCLSS)) VSPLIT2 Q:'+CHLDCLSS D
  1. .. S PSOSULST($P(PSORESP,U,3),+CHLDCLSS)="",PSOVACLS=$P(^PS(50.605,CHLDCLSS,0),"^") D VDISP
  1. Q
  1. VSPLIT2 N CHLDCLSS2
  1. S CHLDCLSS2=0 F S CHLDCLSS2=$O(^PS(50.605,"AC",CHLDCLSS,CHLDCLSS2)) Q:'+CHLDCLSS2 S PSOSULST($P(PSORESP,U,3),+CHLDCLSS2)="",PSOVACLS=$P(^PS(50.605,CHLDCLSS2,0),"^") D VDISP
  1. Q
  1. EN N PSODRUG,PSODEA,PSOIEN,PSOMW,PSOPP,PSONODE,PSOVACLS
  1. S PSOIEN=+$G(^PS(52.5,SFN,0)) Q:'PSOIEN S PSODRUG=$P($G(^PSRX(PSOIEN,0)),U,6)
  1. S PSODEA=$P($G(^PSDRUG(PSODRUG,0)),U,3),PSOVACLS=$P($G(^PSDRUG(PSODRUG,0)),U,2),PSOOK=+PSOSULST($O(PSOSULST("")))
  1. S PSONODE=$G(^PS(52.5,SFN,0)) D
  1. . I $P(PSONODE,"^",5) S PSOMW=$P($G(^PSRX(+$G(PSONODE),"Q",$P(PSONODE,"^",5),0)),"^",2) Q
  1. . I $P(PSONODE,"^",13)!($O(^PSRX(+$G(PSONODE),1,0))) D Q
  1. .. I $P(PSONODE,"^",13) S PSOMW=$P($G(^PSRX(+$G(PSONODE),1,$P(PSONODE,"^",13),0)),"^",2) Q
  1. .. F PSOPP=0:0 S PSOPP=$O(^PSRX(+$G(PSONODE),1,PSOPP)) Q:'PSOPP S PSOMW=$P($G(^PSRX(+$G(PSONODE),1,PSOPP,0)),"^",2)
  1. . S PSOMW=$P($G(^PSRX(+$G(PSONODE),0)),"^",11)
  1. D @$O(PSOSULST(""))
  1. Q
  1. DEA N XX
  1. S XX="" F S XX=$O(PSOSULST("DEA",XX)) Q:'XX I (PSODEA[XX)&(PSOMW[$P(PSOSULST("DEA"),U,2)) S PSOOK='PSOOK D
  1. . I (($P(PSOSULST("DEA"),U,3)="Q")&(PSODEA["Q"))!(($P(PSOSULST("DEA"),U,4)="S")&(PSODEA["S")) S PSOOK='PSOOK
  1. . I PSOOK'=+PSOSULST("DEA") Q
  1. Q
  1. DRUG N PSODRG
  1. S PSODRG="" F S PSODRG=$O(PSOSULST("DRUG",PSODRG)) Q:'PSODRG D
  1. . I (PSODRUG=PSODRG)&(PSOMW[$P(PSOSULST("DRUG"),U,2)) S PSOOK='PSOOK Q
  1. Q
  1. CLASS N PSOCLSS
  1. S PSOCLSS="" F S PSOCLSS=$O(PSOSULST("CLASS",PSOCLSS)) Q:'PSOCLSS D
  1. . I (PSOVACLS=$P(^PS(50.605,PSOCLSS,0),U))&(PSOMW[$P(PSOSULST("CLASS"),U,2)) S PSOOK='PSOOK Q
  1. Q
  1. SUPPLY I (PSODEA["S")&(PSOMW[$P(PSOSULST("SUPPLY"),U,2)) S PSOOK='PSOOK
  1. Q
  1. FRIDGE I (PSODEA["Q")&(PSOMW[$P(PSOSULST("FRIDGE"),U,2)) S PSOOK='PSOOK
  1. Q