- PSOCLUTL ;BHAM ISC/DMA - utilities for clozapine reporting system ;4 Oct 2019 12:29:40
- ;;7.0;OUTPATIENT PHARMACY;**28,56,122,222,268,457,574,612,621,545**;DEC 1997;Build 270
- ;External reference ^YSCL(603.01 supported by DBIA 2697
- ;External reference ^PS(55 supported by DBIA 2228
- ;
- REG ; Register Clozapine Patient
- N DIC,DIR,PSOCZPTS,PSOERR
- ; Added "M" to the DIC(0) ; PSO*7.0*574
- S DIC=55,DLAYGO=55,DIC(0)="AEQLM",DIC("A")="Select patient to register: " D ^DIC K DIC,DLAYGO G END:Y<0
- S PSO1=+Y,PSONAME=$$GET1^DIQ(2,PSO1,.01)
- D:$$GET1^DIQ(55,PSO1,52.1,"I")'=2 EN^PSOHLUP(PSO1) N ANQX
- ; BEGIN: JCH - PSO*7*612
- D FIND^DIC(603.01,"","","QX",PSO1,"","C","","","PSOCZPTS","PSOERR") ; Look for all NCC authorizations in 603.01
- ; PSO*7.0*574
- ;I '$$FIND1^DIC(603.01,,"Q",PSO1,"C") D Q
- I '$G(PSOCZPTS("DILIST",0)) D Q ; No NCC authorizations on file
- . N DIR,X,Y
- . W !!,PSONAME_" has not been authorized for Clozapine"
- . W !,"by the NCCC (National Clozapine Coordinating Center)."
- . W !,"This option is only available for known NCCC-registered patients."
- . W !,"To dispense clozapine under a temporary registration for an authorized emergency"
- . W !,"override situation, use the VistA Patient Prescription Processing option."
- . W !,"Contact the NCCC during regular business hours for registration.",!
- . S DIR(0)="E",DIR("A")="Press enter" D ^DIR
- ; END: JCH - PSO*7*612
- ;W !!,PSONAME_" has not been authorized for Clozapine",!,"by the NCCC in Dallas. Contact the NCCC in Dallas for authorization." D OVER G:'$G(%) REG S JADOVER=""
- S PSO4=$$GET1^DIQ(55,PSO1,53) I PSO4]"" W !!,PSONAME_" is already registered with number "_PSO4,!!,"Use the edit option to change registration data, or",!,"contact your supervisor",! G REG
- NUMBER ;
- S DIR(0)="55,53",Y=$$GET1^DIQ(603.01,$$FIND1^DIC(603.01,,"Q",PSO1,"C"),.01)
- S:Y]"" DIR("B")=Y
- D ^DIR S PSO2=Y K DIR I $D(DIRUT) W !,"Not registered",! D END G REG
- N PSOEX S PSOEX=$$FIND1^DIC(55,,"X",PSO2,"ASAND1")
- I PSOEX,PSOEX'=PSO1 W !,PSO2," is already assigned to ",$$GET1^DIQ(2,PSOEX,.01) W !,"Please contact your supervisor" D END G REG
- I '$D(JADOVER),'$$FIND1^DIC(603.01,"","X",PSO2,"B") D I '$G(%) W ! G NUMBER
- . W !!,"The NCCC in Dallas has not authorized "_PSO2_" to be used",!
- . W "at this facility. Contact the NCCC in Dallas for authorization." D OVER
- NUMBER1 ;
- S PSO3="A" ; (#54) CLOZAPINE STATUS
- PHY ;
- N DIC,DIR
- S DIC="^VA(200,",DIC(0)="AEQMZ",DIC("A")="Provider responsible: ",DIC("S")="I $$GET1^DIQ(200,+Y,53.1)]"""""
- D ^DIC K DIC I Y<0 D END D G:'$G(PSCLOZ) REG G END1
- .I '$G(PSCLOZ) W !!,"Not registered",!! Q
- .S ANQX=1 Q
- I $G(PSCLOZ) D PROVCHK(+Y) G:$G(ANQX) PHY
- S PSO4=+Y
- ;/RBN Begin NCC changes Ask if okay to register the unregistered patient - PSO*7.0*457
- N DFN,VADM S DFN=PSO1 D DEM^VADPT
- S SSN=$P(VADM(2),"^")
- S LSTFOUR=$E(SSN,6,9)
- I '$G(PSCLOZ) D
- . S DIR("A",1)="OK to register "_PSONAME_" ("_$G(LSTFOUR)_")"_" with number "_PSO2
- . S DIR("A")="as a"_$S('PSO3:" new",1:"n ongoing")_" patient in this program? "
- I $G(PSCLOZ) D
- . S DIR("A",2)="Would you like to override the registration requirement"
- . S DIR("A",1)="and assign a temporary local authorization number"
- . S DIR("A")="for "_PSONAME_" ("_$G(LSTFOUR)_")"_" with number "_PSO2_"? "
- S DIR(0)="YA",DIR("B")="NO" D ^DIR K DIR I Y=0!($D(DUOUT)) S ANQX=1 D END G END1
- ;/RBN End NCC changes to remove Pretreatment choice - PSO*7.0*457
- SAVE ;
- S DA=PSO1,DIE=55,DR="53////"_PSO2_";54////"_PSO3_";57////"_PSO4_";56////0" S:($$GET1^DIQ(55,PSO1,53)'=PSO2) DR=DR_";58////"_DT
- L +^PS(55,DA):DILOCKTM E W !!,$C(7),"Patient "_PSONAME_" is being edited by another user! Try Later." S ANQX=1 D END G END1
- D ^DIE L -^PS(55,DA)
- S:PSO2?1U6N $P(^XTMP("PSJ CLOZ",0),U,4)=PSO2 ; save last temp reg#
- ; BEGIN: JCH-PSO*7*612
- I PSO2?2U5N K ^XTMP("PSJ4D-"_PSO1),^XTMP("PSO4D-"_PSO1) ; Registering new NCCC clozapine authorization makes previous local overrides obsolete
- ; END: JCH-PSO*7*612
- END ;
- K %,%Y,C,D,D0,DA,DI,DQ,DIC,DIE,DR,PSO,PSO1,PSO2,PSO3,PSO4,PSOC,PSOLN,PSONAME,PSONO,PSOT,R,SSNVAERR,XMDUZ,XMSUB,XMTEXT,Y
- I '$G(PSCLOZ) K ^TMP($J),^TMP("PSO",$J)
- Q
- END1 ;
- I $G(ANQX) W !!,"Patient Not Registered"
- Q
- ;
- FACILITY ;Enter facility DEA number to set up clozapine system
- ;this entry point is no longer used. this functionality was taken over
- ;by the mental health package with the release of YS*5.01*18
- ;W ! S DIC=59,DIC(0)="AEQM",DIC("A")="Select site to participate in clozapine program : " D ^DIC G END:Y<0
- ;S DIE=DIC,DA=+Y,DR="1R;2R;" L +^PS(59,DA) D ^DIE L -^PS(59,DA) G FACILITY
- Q
- ;
- ;
- AGAIN ; re-enter patient - new number, status and provider
- S DIC=55,DIC(0)="AEQM",DIC("A")="Select clozapine patient : " D ^DIC K DIC G END:Y<0 S (DA,PSO1)=+Y,PSONAME=$$GET1^DIQ(2,DA,.01)
- I $$GET1^DIQ(55,DA,53)="" W !,PSONAME_" is not registered. Use the register option." G AGAIN
- ; BEGIN: JCH - PSO*7*612
- ;I '$$FIND1^DIC(603.01,,"Q",PSO1,"C") W !!,PSONAME_" has not been authorized for Clozapine",!,"by the NCCC in Dallas. Contact the NCCC in Dallas for authorization." D OVER G:'$G(%) AGAIN S JADOVER=""
- N PSOCZPTS,PSOERR
- D FIND^DIC(603.01,"","","QX",PSO1,"","C","","","PSOCZPTS","PSOERR") ; Look for all NCC authorizations in 603.01
- I '$G(PSOCZPTS("DILIST",0)) W !!,PSONAME_" has not been authorized for Clozapine",!,"by the NCCC in Dallas. Contact the NCCC in Dallas for authorization." D OVER G:'$G(%) AGAIN S JADOVER=""
- ; END: JCH - PSO*7*612
- S DIR(0)="55,53" D ^DIR G END:$D(DIRUT) S PSO2=Y
- N PSOEX S PSOEX=$$FIND1^DIC(55,,"X",PSO2,"ASAND1")
- I PSOEX,PSOEX'=PSO1 W !,PSO2," already assigned to ",$$GET1^DIQ(2,PSOEX,.01) G END
- I '$D(JADOVER),'$$FIND1^DIC(603.01,,"X",PSO2) W !!,"The NCCC in Dallas has not authorized "_PSO2_" for usage",!,"at this facility. Contact the NCCC in Dallas for authorization." D OVER G:'$G(%) END
- W !,"CLOZAPINE STATUS: "_$$GET1^DIQ(55,PSO1,54)
- S PSO3=$$GET1^DIQ(55,PSO1,54,"I")
- PHY1 ;
- S DIR(0)="55,57" D ^DIR G END:$D(DIRUT) I Y S PSO4=+Y
- ;I $$GET1^DIQ(200,PSO4,53.2)="" D G PHY1
- ;. W !!,"Only providers with DEA numbers entered in the New Person",!,"file can register patients in this program.",!!
- ;*545
- I $$DEA^XUSER(0,PSO4)="" D G PHY1
- .W !!,"Only providers with DEA numbers entered in the New Person",!,"file can register patients in this program.",!!
- I $$GET1^DIQ(55,PSO1,53)=PSO2,$$GET1^DIQ(55,PSO1,57,"I")=PSO4 D G END
- . W !!?5,"No changes made.",$C(7),!
- G SAVE
- ;
- OVER ;allow registration of patients and clozapine numbers not yet authorized by the NCCC.
- K DIR,% W ! S DIR("A")="Do you want to override this warning",DIR(0)="Y",DIR("B")="No" D ^DIR
- I Y S %=1
- K DIR,DIRUT,DUOUT Q
- ;
- CLOZPAT ;VERIFY PATIENT IS A CLOZAPINE PATIENT
- K CLOZPAT,CLOZST S CLOZST=$$GET1^DIQ(55,DFN,54,"I")
- I $L(CLOZST),CLOZST'="D" D
- .N CLOZNUM,CLOZUID S CLOZNUM=$$GET1^DIQ(55,DFN,53)
- .I CLOZNUM?1U6N S CLOZPAT=3 Q
- .S CLOZUID=$$FIND1^DIC(603.01,,"X",CLOZNUM) Q:'CLOZUID ;Q:'$D(^YSCL(603.01,CLOZUID,0))
- .S CLOZPAT=$$GET1^DIQ(603.01,CLOZUID,2,"I")
- .S CLOZPAT=$S($G(CLOZPAT)="M":2,$G(CLOZPAT)="B":1,$G(CLOZPAT)="W":0,1:90)
- Q
- ;
- PROVCHK(PROV) ;
- N PSJQUIT S (ANQX,PSJQUIT)=0 I '$G(PROV) Q
- ;I '$L($$DEA^XUSER(,PROV)) S (ANQX,PSJQUIT)=1 D Q
- ;.W !," ",!,"*** Provider must have a DEA# or VA# to write prescriptions for this drug."
- ;*545
- I $$DEA^XUSER(0,PROV)']"" S (ANQX,PSJQUIT)=1 D Q
- .W !!,"Only providers with DEA numbers entered in the New Person",!,"file can register patients in this program.",!!
- I '$$FIND1^DIC(200.051,","_PROV_",","X","YSCL AUTHORIZED") S (ANQX,PSJQUIT)=1 D
- .W !," ",!,"*** Provider must hold YSCL AUTHORIZED key to write prescriptions for clozapine."
- Q
- ;
- MSG1 ;
- W !!,"Permission to dispense clozapine has been denied. The results of the latest",!
- W "Lab Test drawn in the past 7 days show ANC results but No Matching WBC.",!
- W "If you wish to dispense outside the FDA and VA protocol ANC limits,",!
- W "document your request to Request for Override of Pharmacy Lockout ",!
- W "(from VHA Handbook 1160.02) Director of the",!
- W "VA National Clozapine Coordinating Center",!
- W "(Phone: 214-857-0068 Fax: 214-857-0339) for a one-time override permission.",!
- W !,"No order entered!"
- S ANQX=1
- Q
- MSG2 ;
- W !!,"Permission to dispense clozapine has been denied. The results of the latest",!
- W "Lab Test drawn in the past 7 days show No ANC results. If you wish to dispense",!
- W "outside the FDA and VA protocol ANC limits, document your request to Request",!
- W "for Override of Pharmacy Lockout (from VHA Handbook 1160.02) Director of the",!
- W "VA National Clozapine Coordinating Center",!
- W "(Phone: 214-857-0068 Fax: 214-857-0339) for a one-time override permission.",!
- W !,"No order entered!"
- S ANQX=1
- Q
- MSG3 ;
- W !,"A CBC/Differential including ANC Must Be Ordered and Monitored on a",!
- W "Daily basis until the ANC above 1000/mm3 with no signs of infection.",!
- W "If ANC is between 1000-1499, therapy can be continued but physician must order",!
- W "lab test three times weekly."
- Q
- MSG4 ;
- W !,"Permission to dispense clozapine has been denied. If the results of the latest"
- W !,"Lab Test drawn in the past 7 days show ANC below 1000/mm3 and you wish to"
- W !,"dispense outside the FDA and VA protocol ANC limits, document your request to"
- W !,"Request for Override of Pharmacy Lockout (from VHA Handbook 1160.02)"
- W !,"Director of the VA National Clozapine Coordinating Center"
- W !,"(Phone: 214-857-0068 Fax: 214-857-0339) for a one-time override permission.",!
- S ANQX=1
- Q
- MSG5 ;
- W !!,"Permission to dispense clozapine has been denied. Please contact the"
- W !,"Director of the VA National Clozapine Coordinating Center"
- W !!,"Request for Override of Pharmacy Lockout (from VHA Handbook 1160.02)"
- W !,"(Phone: 214-857-0068 Fax: 214-857-0339).",!
- Q
- MSG6 ; ; ** START NCC REMEDIATION ** 457 AND PSJ 327/RTW MSG 6 added for new critically low ANC levels clozapine override requirements
- W !!,"This clozapine drug may not be dispensed to the patient at this time based on the available lab tests related to the clozapine treatment program."
- W !!,"Please contact the NCCC to request an override in order to proceed with dispensing this drug. "
- W !!,"Request for Override of Pharmacy Lockout (from VHA Handbook 1160.02)"
- W !!,"The matching ANC counts which caused the lockout are of lab test results performed on "
- S ANQX=1,Y=$P(PSOYS,"^",6) X ^DD("DD") W $P(Y,"@")
- W !!,?5,"ANC: "_$P(PSOYS,"^",4),!
- Q
- MSG9 ;
- W !,"*** Permission to dispense clozapine has been denied based on the available"
- W !," lab tests related to the clozapine treatment program. ***"
- W !!,"For a National Override to dispense at the patient's normal frequency,"
- W !,"please contact the VA National Clozapine Coordinating Center to request"
- W !,"an Override of Pharmacy Lockout (from VHA Handbook 1160.02)"
- W !,"(Phone: 214-857-0068 Fax: 214-857-0339)."
- W !,"A Special Conditions Local Override can be approved for"
- W !,"(1) weather-related conditions, (2) mail order delays of clozapine, or"
- W !,"(3) inpatient going on leave. With Provider's documentation of approval,"
- W !,"you may dispense a one-time supply not to exceed 4 days.",!
- Q
- ;
- ;/RBN Begin of modifications for new message for IP 4 day overrride.
- MSG10 ;
- W !,"*** Permission to dispense clozapine has been denied based on the available"
- W !," lab tests related to the clozapine treatment program. ***"
- W !!,"For a National Override to dispense at the patient's normal frequency,"
- W !,"please contact the VA National Clozapine Coordinating Center to request an"
- W !,"Override of Pharmacy Lockout (from VHA Handbook 1160.02) (Phone: 214-857-0068"
- W !,"Fax: 214-857-0339)."
- W !,"A Special Conditions Local Override for Inpatients can be approved for an"
- W !,"IP Override Order with Outside Lab Results. With Provider's documentation of"
- W !,"approval, you may dispense a one-time IP supply not to exceed 4 days."
- W !,"The ANC from another facility must be recorded in the Progress note/comments"
- W !,"in pharmacy"
- Q
- ;
- CRXTMP(DFN,PSOYS) ; track OP 4 day supply
- S ^XTMP("PSO4D-"_DFN,0)=$$FMADD^XLFDT(DT,5)_U_DT_"^Clozapine Local Override 4 day supply tracking"
- S ^XTMP("PSO4D-"_DFN,"PSOYS")=PSOYS
- Q
- ;
- CRXTMPI(DFN,PSOYS) ; track IP 4 day supply
- S ^XTMP("PSJ4D-"_DFN,0)=$$FMADD^XLFDT(DT,5)_U_DT_"^Clozapine Local Override 4 day supply tracking"
- S ^XTMP("PSJ4D-"_DFN,"PSOYS")=PSOYS
- Q
- ;
- CLKEYWRN() ; uniform message to users - PSO*7*457
- Q "Provider must hold YSCL AUTHORIZED key to write medication orders for clozapine."
- ;
- GETREGYS(PSODFN) ; Get file 603.01 IEN currently registered to patient in file 55
- ;JCH - PSO*7*612
- N PSOCLZN,PSOYSIEN,PSOCLODT
- S PSOCLZN=$$GET1^DIQ(55,PSODFN,53)
- S PSOYSIEN=$$FIND1^DIC(603.01,,"Q",PSOCLZN,"B")
- Q PSOYSIEN
- ;
- QTYCHK(PSORXARY,NUMDAYS) ; check/adjust quantity, PSORXARY passed by ref., NUMDAYS is # of days
- Q:'($G(NUMDAYS)>0) ; required
- N J,SCHED,NMIN,QTY,TMSDLY
- S J=0,QTY=0 F S J=$O(PSORXARY("SCHEDULE",J)) Q:'J D
- . S SCHED=PSORXARY("SCHEDULE",J)
- . S NMIN=$$QTSCH^PSOSIG(SCHED) Q:'NMIN ;number of minutes between meds
- . S TMSDLY=1440/NMIN ;times daily
- . S QTY=QTY+(NUMDAYS*TMSDLY*$G(PSORXARY("DOSE ORDERED",J)))
- ;
- S:QTY PSORXARY("QTY")=(QTY+.99)\1,$P(PSORXARY("RX0"),U,7)=(QTY+.99)\1
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOCLUTL 13432 printed Apr 23, 2025@18:39:57 Page 2
- PSOCLUTL ;BHAM ISC/DMA - utilities for clozapine reporting system ;4 Oct 2019 12:29:40
- +1 ;;7.0;OUTPATIENT PHARMACY;**28,56,122,222,268,457,574,612,621,545**;DEC 1997;Build 270
- +2 ;External reference ^YSCL(603.01 supported by DBIA 2697
- +3 ;External reference ^PS(55 supported by DBIA 2228
- +4 ;
- REG ; Register Clozapine Patient
- +1 NEW DIC,DIR,PSOCZPTS,PSOERR
- +2 ; Added "M" to the DIC(0) ; PSO*7.0*574
- +3 SET DIC=55
- SET DLAYGO=55
- SET DIC(0)="AEQLM"
- SET DIC("A")="Select patient to register: "
- DO ^DIC
- KILL DIC,DLAYGO
- if Y<0
- GOTO END
- +4 SET PSO1=+Y
- SET PSONAME=$$GET1^DIQ(2,PSO1,.01)
- +5 if $$GET1^DIQ(55,PSO1,52.1,"I")'=2
- DO EN^PSOHLUP(PSO1)
- NEW ANQX
- +6 ; BEGIN: JCH - PSO*7*612
- +7 ; Look for all NCC authorizations in 603.01
- DO FIND^DIC(603.01,"","","QX",PSO1,"","C","","","PSOCZPTS","PSOERR")
- +8 ; PSO*7.0*574
- +9 ;I '$$FIND1^DIC(603.01,,"Q",PSO1,"C") D Q
- +10 ; No NCC authorizations on file
- IF '$GET(PSOCZPTS("DILIST",0))
- Begin DoDot:1
- +11 NEW DIR,X,Y
- +12 WRITE !!,PSONAME_" has not been authorized for Clozapine"
- +13 WRITE !,"by the NCCC (National Clozapine Coordinating Center)."
- +14 WRITE !,"This option is only available for known NCCC-registered patients."
- +15 WRITE !,"To dispense clozapine under a temporary registration for an authorized emergency"
- +16 WRITE !,"override situation, use the VistA Patient Prescription Processing option."
- +17 WRITE !,"Contact the NCCC during regular business hours for registration.",!
- +18 SET DIR(0)="E"
- SET DIR("A")="Press enter"
- DO ^DIR
- End DoDot:1
- QUIT
- +19 ; END: JCH - PSO*7*612
- +20 ;W !!,PSONAME_" has not been authorized for Clozapine",!,"by the NCCC in Dallas. Contact the NCCC in Dallas for authorization." D OVER G:'$G(%) REG S JADOVER=""
- +21 SET PSO4=$$GET1^DIQ(55,PSO1,53)
- IF PSO4]""
- WRITE !!,PSONAME_" is already registered with number "_PSO4,!!,"Use the edit option to change registration data, or",!,"contact your supervisor",!
- GOTO REG
- NUMBER ;
- +1 SET DIR(0)="55,53"
- SET Y=$$GET1^DIQ(603.01,$$FIND1^DIC(603.01,,"Q",PSO1,"C"),.01)
- +2 if Y]""
- SET DIR("B")=Y
- +3 DO ^DIR
- SET PSO2=Y
- KILL DIR
- IF $DATA(DIRUT)
- WRITE !,"Not registered",!
- DO END
- GOTO REG
- +4 NEW PSOEX
- SET PSOEX=$$FIND1^DIC(55,,"X",PSO2,"ASAND1")
- +5 IF PSOEX
- IF PSOEX'=PSO1
- WRITE !,PSO2," is already assigned to ",$$GET1^DIQ(2,PSOEX,.01)
- WRITE !,"Please contact your supervisor"
- DO END
- GOTO REG
- +6 IF '$DATA(JADOVER)
- IF '$$FIND1^DIC(603.01,"","X",PSO2,"B")
- Begin DoDot:1
- +7 WRITE !!,"The NCCC in Dallas has not authorized "_PSO2_" to be used",!
- +8 WRITE "at this facility. Contact the NCCC in Dallas for authorization."
- DO OVER
- End DoDot:1
- IF '$GET(%)
- WRITE !
- GOTO NUMBER
- NUMBER1 ;
- +1 ; (#54) CLOZAPINE STATUS
- SET PSO3="A"
- PHY ;
- +1 NEW DIC,DIR
- +2 SET DIC="^VA(200,"
- SET DIC(0)="AEQMZ"
- SET DIC("A")="Provider responsible: "
- SET DIC("S")="I $$GET1^DIQ(200,+Y,53.1)]"""""
- +3 DO ^DIC
- KILL DIC
- IF Y<0
- DO END
- Begin DoDot:1
- +4 IF '$GET(PSCLOZ)
- WRITE !!,"Not registered",!!
- QUIT
- +5 SET ANQX=1
- QUIT
- End DoDot:1
- if '$GET(PSCLOZ)
- GOTO REG
- GOTO END1
- +6 IF $GET(PSCLOZ)
- DO PROVCHK(+Y)
- if $GET(ANQX)
- GOTO PHY
- +7 SET PSO4=+Y
- +8 ;/RBN Begin NCC changes Ask if okay to register the unregistered patient - PSO*7.0*457
- +9 NEW DFN,VADM
- SET DFN=PSO1
- DO DEM^VADPT
- +10 SET SSN=$PIECE(VADM(2),"^")
- +11 SET LSTFOUR=$EXTRACT(SSN,6,9)
- +12 IF '$GET(PSCLOZ)
- Begin DoDot:1
- +13 SET DIR("A",1)="OK to register "_PSONAME_" ("_$GET(LSTFOUR)_")"_" with number "_PSO2
- +14 SET DIR("A")="as a"_$SELECT('PSO3:" new",1:"n ongoing")_" patient in this program? "
- End DoDot:1
- +15 IF $GET(PSCLOZ)
- Begin DoDot:1
- +16 SET DIR("A",2)="Would you like to override the registration requirement"
- +17 SET DIR("A",1)="and assign a temporary local authorization number"
- +18 SET DIR("A")="for "_PSONAME_" ("_$GET(LSTFOUR)_")"_" with number "_PSO2_"? "
- End DoDot:1
- +19 SET DIR(0)="YA"
- SET DIR("B")="NO"
- DO ^DIR
- KILL DIR
- IF Y=0!($DATA(DUOUT))
- SET ANQX=1
- DO END
- GOTO END1
- +20 ;/RBN End NCC changes to remove Pretreatment choice - PSO*7.0*457
- SAVE ;
- +1 SET DA=PSO1
- SET DIE=55
- SET DR="53////"_PSO2_";54////"_PSO3_";57////"_PSO4_";56////0"
- if ($$GET1^DIQ(55,PSO1,53)'=PSO2)
- SET DR=DR_";58////"_DT
- +2 LOCK +^PS(55,DA):DILOCKTM
- IF '$TEST
- WRITE !!,$CHAR(7),"Patient "_PSONAME_" is being edited by another user! Try Later."
- SET ANQX=1
- DO END
- GOTO END1
- +3 DO ^DIE
- LOCK -^PS(55,DA)
- +4 ; save last temp reg#
- if PSO2?1U6N
- SET $PIECE(^XTMP("PSJ CLOZ",0),U,4)=PSO2
- +5 ; BEGIN: JCH-PSO*7*612
- +6 ; Registering new NCCC clozapine authorization makes previous local overrides obsolete
- IF PSO2?2U5N
- KILL ^XTMP("PSJ4D-"_PSO1),^XTMP("PSO4D-"_PSO1)
- +7 ; END: JCH-PSO*7*612
- END ;
- +1 KILL %,%Y,C,D,D0,DA,DI,DQ,DIC,DIE,DR,PSO,PSO1,PSO2,PSO3,PSO4,PSOC,PSOLN,PSONAME,PSONO,PSOT,R,SSNVAERR,XMDUZ,XMSUB,XMTEXT,Y
- +2 IF '$GET(PSCLOZ)
- KILL ^TMP($JOB),^TMP("PSO",$JOB)
- +3 QUIT
- END1 ;
- +1 IF $GET(ANQX)
- WRITE !!,"Patient Not Registered"
- +2 QUIT
- +3 ;
- FACILITY ;Enter facility DEA number to set up clozapine system
- +1 ;this entry point is no longer used. this functionality was taken over
- +2 ;by the mental health package with the release of YS*5.01*18
- +3 ;W ! S DIC=59,DIC(0)="AEQM",DIC("A")="Select site to participate in clozapine program : " D ^DIC G END:Y<0
- +4 ;S DIE=DIC,DA=+Y,DR="1R;2R;" L +^PS(59,DA) D ^DIE L -^PS(59,DA) G FACILITY
- +5 QUIT
- +6 ;
- +7 ;
- AGAIN ; re-enter patient - new number, status and provider
- +1 SET DIC=55
- SET DIC(0)="AEQM"
- SET DIC("A")="Select clozapine patient : "
- DO ^DIC
- KILL DIC
- if Y<0
- GOTO END
- SET (DA,PSO1)=+Y
- SET PSONAME=$$GET1^DIQ(2,DA,.01)
- +2 IF $$GET1^DIQ(55,DA,53)=""
- WRITE !,PSONAME_" is not registered. Use the register option."
- GOTO AGAIN
- +3 ; BEGIN: JCH - PSO*7*612
- +4 ;I '$$FIND1^DIC(603.01,,"Q",PSO1,"C") W !!,PSONAME_" has not been authorized for Clozapine",!,"by the NCCC in Dallas. Contact the NCCC in Dallas for authorization." D OVER G:'$G(%) AGAIN S JADOVER=""
- +5 NEW PSOCZPTS,PSOERR
- +6 ; Look for all NCC authorizations in 603.01
- DO FIND^DIC(603.01,"","","QX",PSO1,"","C","","","PSOCZPTS","PSOERR")
- +7 IF '$GET(PSOCZPTS("DILIST",0))
- WRITE !!,PSONAME_" has not been authorized for Clozapine",!,"by the NCCC in Dallas. Contact the NCCC in Dallas for authorization."
- DO OVER
- if '$GET(%)
- GOTO AGAIN
- SET JADOVER=""
- +8 ; END: JCH - PSO*7*612
- +9 SET DIR(0)="55,53"
- DO ^DIR
- if $DATA(DIRUT)
- GOTO END
- SET PSO2=Y
- +10 NEW PSOEX
- SET PSOEX=$$FIND1^DIC(55,,"X",PSO2,"ASAND1")
- +11 IF PSOEX
- IF PSOEX'=PSO1
- WRITE !,PSO2," already assigned to ",$$GET1^DIQ(2,PSOEX,.01)
- GOTO END
- +12 IF '$DATA(JADOVER)
- IF '$$FIND1^DIC(603.01,,"X",PSO2)
- WRITE !!,"The NCCC in Dallas has not authorized "_PSO2_" for usage",!,"at this facility. Contact the NCCC in Dallas for authorization."
- DO OVER
- if '$GET(%)
- GOTO END
- +13 WRITE !,"CLOZAPINE STATUS: "_$$GET1^DIQ(55,PSO1,54)
- +14 SET PSO3=$$GET1^DIQ(55,PSO1,54,"I")
- PHY1 ;
- +1 SET DIR(0)="55,57"
- DO ^DIR
- if $DATA(DIRUT)
- GOTO END
- IF Y
- SET PSO4=+Y
- +2 ;I $$GET1^DIQ(200,PSO4,53.2)="" D G PHY1
- +3 ;. W !!,"Only providers with DEA numbers entered in the New Person",!,"file can register patients in this program.",!!
- +4 ;*545
- +5 IF $$DEA^XUSER(0,PSO4)=""
- Begin DoDot:1
- +6 WRITE !!,"Only providers with DEA numbers entered in the New Person",!,"file can register patients in this program.",!!
- End DoDot:1
- GOTO PHY1
- +7 IF $$GET1^DIQ(55,PSO1,53)=PSO2
- IF $$GET1^DIQ(55,PSO1,57,"I")=PSO4
- Begin DoDot:1
- +8 WRITE !!?5,"No changes made.",$CHAR(7),!
- End DoDot:1
- GOTO END
- +9 GOTO SAVE
- +10 ;
- OVER ;allow registration of patients and clozapine numbers not yet authorized by the NCCC.
- +1 KILL DIR,%
- WRITE !
- SET DIR("A")="Do you want to override this warning"
- SET DIR(0)="Y"
- SET DIR("B")="No"
- DO ^DIR
- +2 IF Y
- SET %=1
- +3 KILL DIR,DIRUT,DUOUT
- QUIT
- +4 ;
- CLOZPAT ;VERIFY PATIENT IS A CLOZAPINE PATIENT
- +1 KILL CLOZPAT,CLOZST
- SET CLOZST=$$GET1^DIQ(55,DFN,54,"I")
- +2 IF $LENGTH(CLOZST)
- IF CLOZST'="D"
- Begin DoDot:1
- +3 NEW CLOZNUM,CLOZUID
- SET CLOZNUM=$$GET1^DIQ(55,DFN,53)
- +4 IF CLOZNUM?1U6N
- SET CLOZPAT=3
- QUIT
- +5 ;Q:'$D(^YSCL(603.01,CLOZUID,0))
- SET CLOZUID=$$FIND1^DIC(603.01,,"X",CLOZNUM)
- if 'CLOZUID
- QUIT
- +6 SET CLOZPAT=$$GET1^DIQ(603.01,CLOZUID,2,"I")
- +7 SET CLOZPAT=$SELECT($GET(CLOZPAT)="M":2,$GET(CLOZPAT)="B":1,$GET(CLOZPAT)="W":0,1:90)
- End DoDot:1
- +8 QUIT
- +9 ;
- PROVCHK(PROV) ;
- +1 NEW PSJQUIT
- SET (ANQX,PSJQUIT)=0
- IF '$GET(PROV)
- QUIT
- +2 ;I '$L($$DEA^XUSER(,PROV)) S (ANQX,PSJQUIT)=1 D Q
- +3 ;.W !," ",!,"*** Provider must have a DEA# or VA# to write prescriptions for this drug."
- +4 ;*545
- +5 IF $$DEA^XUSER(0,PROV)']""
- SET (ANQX,PSJQUIT)=1
- Begin DoDot:1
- +6 WRITE !!,"Only providers with DEA numbers entered in the New Person",!,"file can register patients in this program.",!!
- End DoDot:1
- QUIT
- +7 IF '$$FIND1^DIC(200.051,","_PROV_",","X","YSCL AUTHORIZED")
- SET (ANQX,PSJQUIT)=1
- Begin DoDot:1
- +8 WRITE !," ",!,"*** Provider must hold YSCL AUTHORIZED key to write prescriptions for clozapine."
- End DoDot:1
- +9 QUIT
- +10 ;
- MSG1 ;
- +1 WRITE !!,"Permission to dispense clozapine has been denied. The results of the latest",!
- +2 WRITE "Lab Test drawn in the past 7 days show ANC results but No Matching WBC.",!
- +3 WRITE "If you wish to dispense outside the FDA and VA protocol ANC limits,",!
- +4 WRITE "document your request to Request for Override of Pharmacy Lockout ",!
- +5 WRITE "(from VHA Handbook 1160.02) Director of the",!
- +6 WRITE "VA National Clozapine Coordinating Center",!
- +7 WRITE "(Phone: 214-857-0068 Fax: 214-857-0339) for a one-time override permission.",!
- +8 WRITE !,"No order entered!"
- +9 SET ANQX=1
- +10 QUIT
- MSG2 ;
- +1 WRITE !!,"Permission to dispense clozapine has been denied. The results of the latest",!
- +2 WRITE "Lab Test drawn in the past 7 days show No ANC results. If you wish to dispense",!
- +3 WRITE "outside the FDA and VA protocol ANC limits, document your request to Request",!
- +4 WRITE "for Override of Pharmacy Lockout (from VHA Handbook 1160.02) Director of the",!
- +5 WRITE "VA National Clozapine Coordinating Center",!
- +6 WRITE "(Phone: 214-857-0068 Fax: 214-857-0339) for a one-time override permission.",!
- +7 WRITE !,"No order entered!"
- +8 SET ANQX=1
- +9 QUIT
- MSG3 ;
- +1 WRITE !,"A CBC/Differential including ANC Must Be Ordered and Monitored on a",!
- +2 WRITE "Daily basis until the ANC above 1000/mm3 with no signs of infection.",!
- +3 WRITE "If ANC is between 1000-1499, therapy can be continued but physician must order",!
- +4 WRITE "lab test three times weekly."
- +5 QUIT
- MSG4 ;
- +1 WRITE !,"Permission to dispense clozapine has been denied. If the results of the latest"
- +2 WRITE !,"Lab Test drawn in the past 7 days show ANC below 1000/mm3 and you wish to"
- +3 WRITE !,"dispense outside the FDA and VA protocol ANC limits, document your request to"
- +4 WRITE !,"Request for Override of Pharmacy Lockout (from VHA Handbook 1160.02)"
- +5 WRITE !,"Director of the VA National Clozapine Coordinating Center"
- +6 WRITE !,"(Phone: 214-857-0068 Fax: 214-857-0339) for a one-time override permission.",!
- +7 SET ANQX=1
- +8 QUIT
- MSG5 ;
- +1 WRITE !!,"Permission to dispense clozapine has been denied. Please contact the"
- +2 WRITE !,"Director of the VA National Clozapine Coordinating Center"
- +3 WRITE !!,"Request for Override of Pharmacy Lockout (from VHA Handbook 1160.02)"
- +4 WRITE !,"(Phone: 214-857-0068 Fax: 214-857-0339).",!
- +5 QUIT
- MSG6 ; ; ** START NCC REMEDIATION ** 457 AND PSJ 327/RTW MSG 6 added for new critically low ANC levels clozapine override requirements
- +1 WRITE !!,"This clozapine drug may not be dispensed to the patient at this time based on the available lab tests related to the clozapine treatment program."
- +2 WRITE !!,"Please contact the NCCC to request an override in order to proceed with dispensing this drug. "
- +3 WRITE !!,"Request for Override of Pharmacy Lockout (from VHA Handbook 1160.02)"
- +4 WRITE !!,"The matching ANC counts which caused the lockout are of lab test results performed on "
- +5 SET ANQX=1
- SET Y=$PIECE(PSOYS,"^",6)
- XECUTE ^DD("DD")
- WRITE $PIECE(Y,"@")
- +6 WRITE !!,?5,"ANC: "_$PIECE(PSOYS,"^",4),!
- +7 QUIT
- MSG9 ;
- +1 WRITE !,"*** Permission to dispense clozapine has been denied based on the available"
- +2 WRITE !," lab tests related to the clozapine treatment program. ***"
- +3 WRITE !!,"For a National Override to dispense at the patient's normal frequency,"
- +4 WRITE !,"please contact the VA National Clozapine Coordinating Center to request"
- +5 WRITE !,"an Override of Pharmacy Lockout (from VHA Handbook 1160.02)"
- +6 WRITE !,"(Phone: 214-857-0068 Fax: 214-857-0339)."
- +7 WRITE !,"A Special Conditions Local Override can be approved for"
- +8 WRITE !,"(1) weather-related conditions, (2) mail order delays of clozapine, or"
- +9 WRITE !,"(3) inpatient going on leave. With Provider's documentation of approval,"
- +10 WRITE !,"you may dispense a one-time supply not to exceed 4 days.",!
- +11 QUIT
- +12 ;
- +13 ;/RBN Begin of modifications for new message for IP 4 day overrride.
- MSG10 ;
- +1 WRITE !,"*** Permission to dispense clozapine has been denied based on the available"
- +2 WRITE !," lab tests related to the clozapine treatment program. ***"
- +3 WRITE !!,"For a National Override to dispense at the patient's normal frequency,"
- +4 WRITE !,"please contact the VA National Clozapine Coordinating Center to request an"
- +5 WRITE !,"Override of Pharmacy Lockout (from VHA Handbook 1160.02) (Phone: 214-857-0068"
- +6 WRITE !,"Fax: 214-857-0339)."
- +7 WRITE !,"A Special Conditions Local Override for Inpatients can be approved for an"
- +8 WRITE !,"IP Override Order with Outside Lab Results. With Provider's documentation of"
- +9 WRITE !,"approval, you may dispense a one-time IP supply not to exceed 4 days."
- +10 WRITE !,"The ANC from another facility must be recorded in the Progress note/comments"
- +11 WRITE !,"in pharmacy"
- +12 QUIT
- +13 ;
- CRXTMP(DFN,PSOYS) ; track OP 4 day supply
- +1 SET ^XTMP("PSO4D-"_DFN,0)=$$FMADD^XLFDT(DT,5)_U_DT_"^Clozapine Local Override 4 day supply tracking"
- +2 SET ^XTMP("PSO4D-"_DFN,"PSOYS")=PSOYS
- +3 QUIT
- +4 ;
- CRXTMPI(DFN,PSOYS) ; track IP 4 day supply
- +1 SET ^XTMP("PSJ4D-"_DFN,0)=$$FMADD^XLFDT(DT,5)_U_DT_"^Clozapine Local Override 4 day supply tracking"
- +2 SET ^XTMP("PSJ4D-"_DFN,"PSOYS")=PSOYS
- +3 QUIT
- +4 ;
- CLKEYWRN() ; uniform message to users - PSO*7*457
- +1 QUIT "Provider must hold YSCL AUTHORIZED key to write medication orders for clozapine."
- +2 ;
- GETREGYS(PSODFN) ; Get file 603.01 IEN currently registered to patient in file 55
- +1 ;JCH - PSO*7*612
- +2 NEW PSOCLZN,PSOYSIEN,PSOCLODT
- +3 SET PSOCLZN=$$GET1^DIQ(55,PSODFN,53)
- +4 SET PSOYSIEN=$$FIND1^DIC(603.01,,"Q",PSOCLZN,"B")
- +5 QUIT PSOYSIEN
- +6 ;
- QTYCHK(PSORXARY,NUMDAYS) ; check/adjust quantity, PSORXARY passed by ref., NUMDAYS is # of days
- +1 ; required
- if '($GET(NUMDAYS)>0)
- QUIT
- +2 NEW J,SCHED,NMIN,QTY,TMSDLY
- +3 SET J=0
- SET QTY=0
- FOR
- SET J=$ORDER(PSORXARY("SCHEDULE",J))
- if 'J
- QUIT
- Begin DoDot:1
- +4 SET SCHED=PSORXARY("SCHEDULE",J)
- +5 ;number of minutes between meds
- SET NMIN=$$QTSCH^PSOSIG(SCHED)
- if 'NMIN
- QUIT
- +6 ;times daily
- SET TMSDLY=1440/NMIN
- +7 SET QTY=QTY+(NUMDAYS*TMSDLY*$GET(PSORXARY("DOSE ORDERED",J)))
- End DoDot:1
- +8 ;
- +9 if QTY
- SET PSORXARY("QTY")=(QTY+.99)\1
- SET $PIECE(PSORXARY("RX0"),U,7)=(QTY+.99)\1
- +10 QUIT