PSOTALK2 ;BIR/EJW - SCRIPTALK ENROLLMENT FUNCTIONS ;3-28-02
 ;;7.0;OUTPATIENT PHARMACY;**135,182,326**;DEC 1997;Build 11
 ;External reference ^PS(55 supported by DBIA 2228
 ;External reference ^TMP("TIUP", ^TIUPNAPI, ^TIU(8925.1 supported by DBIA 1911
ENROLL ;
 N PSOSTEN,PSOIND,PSOLAST,DFN
 S PSOIND=""
 I '$G(PSOFIRST) D INSTR S PSOFIRST=1
 W !
 K DIC W ! S DIC(0)="QEAM",DIC("A")="Select PATIENT: " D EN^PSOPATLK S Y=PSOPTLK K DIC,PSOPTLK I Y<1!($D(DUOUT))!($D(DTOUT)) D CLEAN Q
 S PSOPT=+Y
 S DFN=PSOPT D DEM^VADPT I +$G(VADM(6)) W !,"Patient is deceased",! G ENROLL
 I '$D(^PS(55,PSOPT)) D
 .S DIC="^PS(55,",DLAYGO=55
 .K DD,DO S DIC(0)="L",(DINUM,X)=PSOPT D FILE^DICN D:Y<1  K DIC,DA,DR,DD,DO
 ..S $P(^PS(55,PSOPT,0),"^")=PSOPT K DIK S DA=PSOPT,DIK="^PS(55,",DIK(1)=.01 D EN^DIK K DIK
 S PSOSTEN=$G(^PS(55,"ASTALK",PSOPT))
 S DIR(0)="Y",DIR("A")="SCRIPTALK PATIENT" S DIR("B")=$S(PSOSTEN:"Y",1:"N") D ^DIR K DIR
 S PSOSTEN=Y
 I PSOSTEN D MAIL,GETIND
 D SET55
 D NOTE(PSOPT)
 K PSOIND,PSOPT,PSOSTEN,PSOLAST,X,Y
 G ENROLL
 ;
SET55 ; SET MULTIPLE FOR SCRIPTALK ENROLLMENT AUDIT
 N PSODA,PSOERR,PSOIEN,PSOSTDT
 I PSOPT="" Q
 S PSOSTDT=$$NOW^XLFDT
 S PSODA(55.0108,"+1,"_PSOPT_",",.01)=PSOSTDT
 S PSODA(55.0108,"+1,"_PSOPT_",",1)=PSOSTEN
 S PSODA(55.0108,"+1,"_PSOPT_",",2)=PSOIND
 S PSODA(55.0108,"+1,"_PSOPT_",",3)=$G(DUZ)
 D UPDATE^DIE("","PSODA","PSOIEN","PSOERR")
 Q
 ;
GETIND ; GET INDICATION FOR ENROLLMENT
 S PSOLAST=$P($G(^PS(55,PSOPT,"SCTALK",0)),"^",4) I PSOLAST'="" S PSOIND=$P($G(^PS(55,PSOPT,"SCTALK",PSOLAST,0)),"^",3) ; IF PRIOR ANSWER WAS 'Y' - GET PRIOR INDICATION
 S DIR(0)="S^B:BLIND VETERAN;L:LOW VISION",DIR("A")="INDICATION" S DIR("B")=PSOIND D ^DIR K DIR
 S PSOIND=$G(Y)
 Q
 ;
INSTR ;
 W @IOF
 I $O(^TIU(8925.1,"B","SCRIPTALK ENROLLMENT",0))="" Q
 W !
 W !?3,"At the conclusion of this enrollment option, you will be given"
 W !?3,"the opportunity to sign a progress note recording the enrollment"
 W !?3,"of new ScripTalk patients. If you modify the record of a patient"
 W !?3,"that was previously enrolled, and they remain enrolled, you may"
 W !?3,"wish to either delete or edit the text of the generated note."
 W !!
 K PSOSQ,PSOTT,PSOSTP
 Q
 ;
NOTE(PSOPT) ;CREATE A PROGRESS NOTE FOR PATIENT 'PSOPT' ABOUT ENROLLMENT
 Q:'+$G(^PS(55,"ASTALK",PSOPT))  ; IF THIS PTS ENROLLMENT ISN'T ACTIVE
 S PSOTITL=$O(^TIU(8925.1,"B","SCRIPTALK ENROLLMENT",0))
 Q:'+PSOTITL  ;IF NO TITLE ON SYSTEM
 S PSOPTNM=$P($G(^DPT(PSOPT,0)),U,1)
 S PSOLINE=1
 S ^TMP("TIUP",$J,PSOLINE,0)=PSOPTNM_" was enrolled in ScripTalk today, and is now eligible to receive"
 S PSOLINE=PSOLINE+1
 S ^TMP("TIUP",$J,PSOLINE,0)="prescriptions with encoded speech-capable labels."
 S ^TMP("TIUP",$J,0)=U_U_PSOLINE_PSOLINE_U_DT_U
INSTALL K TIUDA
 D NEW^TIUPNAPI(.TIUDA,PSOPT,DUZ,$$NOW^XLFDT,PSOTITL)
 Q
 ;
CLEAN K PSOLINE,PSOPTNM,PSOTITL,PSOSTP,PSOPT,PSOFIRST
 K ^TMP("TIUP",$J)
 Q
 ;
AUDREP ;
 K DIC W ! S DIC(0)="QEAM",DIC("A")="Select PATIENT: " D EN^PSOPATLK S Y=PSOPTLK K DIC,PSOPTLK I Y<1!($D(DUOUT))!($D(DTOUT)) Q
 S PSOPT=+Y
 S ZTSAVE("*")=""
 W !!,"You may queue the report to print, if you wish.",!
 K %ZIS,POP,IOP S %ZIS="QM" D ^%ZIS I $G(POP) W !!,"Nothing queued to print.",! G DONE
 I $D(IO("Q")) S ZTRTN="AUDRQ^PSOTALK2",ZTDESC="Report of ScripTalk Enrollment",ZTSAVE("*")="" D ^%ZTLOAD K %ZSI W !,"Report queued to print.",! G DONE
AUDRQ ;
 U IO
 S PSOOUT=0,PSODV=$S($E(IOST)="C":"C",1:"P")
 S PSOPGCT=1
 D TITLEA I PSOOUT G DONE
 S PSOAUD=0 F  S PSOAUD=$O(^PS(55,PSOPT,"SCTALK",PSOAUD)) Q:PSOAUD=""  D  I PSOOUT Q
 .S PSONODE=$G(^PS(55,PSOPT,"SCTALK",PSOAUD,0))
 .S PSOSTAT=$P(PSONODE,"^",2)
 .S PSOTIME=$$FMTE^XLFDT($P(PSONODE,U,1)),PSOTIME=$P(PSOTIME,"@")_"  "_$P(PSOTIME,"@",2)
 .S PSOTIME=$P(PSOTIME,":",1,2)
 .I ($Y+5)>IOSL&('$G(PSOOUT)) D TITLEA I PSOOUT Q
 .W !,?2,PSOTIME
 .W ?25,$S(PSOSTAT:"YES",PSOSTAT=0:"NO",1:" ")
 .S PSOIND=$P(PSONODE,"^",3)
 .I 'PSOSTAT S PSOIND=""
 .W ?35,$S(PSOIND="B":"BLIND VETERAN",PSOIND="L":"LOW VISION",1:"")
 .I $P(PSONODE,"^",4)'="" D  W ?52,$E(PSODUZ,1,27)
 ..K DIC,X,Y S DIC="^VA(200,",DIC(0)="M",X="`"_+$P(PSONODE,"^",4) D ^DIC S PSODUZ=$S(+Y:$P(Y,"^",2),1:"UNKNOWN") K DIC,X,Y
 I PSOOUT G DONE
END ;
 I '$G(PSOOUT),$G(PSODV)="C" W !!,"** End of Report **" K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR K DIR
 I $G(PSODV)="C" W !
 E  W @IOF
DONE K PSOPT,PSOAUD,PSONODE,PSOIND,PSOSTAT,PSOPGCT,Y,IOP,POP,IO("Q"),DIRUT,DUOUT,DTOUT,PSODV,PSOOUT
 K PSODFN,PSOIND,PSOSSN,PSOPRINT,PSONM,^TMP($J,"PSOTALK2")
 D ^%ZISC S:$D(ZTQUEUED) ZTREQ="@"
 Q
 ;
TITLEA ;
 I $G(PSODV)="C",$G(PSOPGCT)'=1 W ! K DIR S DIR(0)="E" D ^DIR K DIR I 'Y S PSOOUT=1 Q
 W @IOF
 W !,"SCRIPTALK AUDIT HISTORY" S Y=DT X ^DD("DD") W ?40,"Date printed: ",Y,?70,"Page: ",PSOPGCT,!!
 S PSOPGCT=PSOPGCT+1
 W !,"Name: ",$E($P(^DPT(PSOPT,0),"^"),1,25),"    Currently enrolled: ",$S($G(^PS(55,"ASTALK",PSOPT)):"YES",1:"NO"),!!
 W !?24,"Previous",?35,"Previous"
 W !,?2,"Date-Time Set",?25,"Status",?35,"Indication",?52,"Entered by"
 W !,?2,"-------------------",?24,"--------",?35,"-------------",?52,"--------------------",!
 Q
 ;
ENQ ;
 W ! K DIR S DIR(0)="Y",DIR("B")="Y",DIR("A")="Do you want to report only active enrollees" D ^DIR K DIR D:$D(DIRUT) MESS G:Y["^"!($D(DIRUT)) DONE S PSOPRINT=$S(Y:1,1:0)
 W !!,"You may queue the report to print, if you wish.",!
 K %ZIS,POP,IOP S %ZIS="QM" D ^%ZIS I $G(POP) W !!,"Nothing queued to print.",! G DONE
 I $D(IO("Q")) S ZTRTN="RPENROLL^PSOTALK2",ZTDESC="Report of ScripTalk Enrollment",ZTSAVE("*")="" D ^%ZTLOAD K %ZSI W !,"Report queued to print.",! G DONE
RPENROLL ;
 U IO
 S PSOOUT=0,PSODV=$S($E(IOST)="C":"C",1:"P")
 S PSOPGCT=1
 D TITLEE I PSOOUT G DONE
 K ^TMP($J,"PSOTALK2")
 D GETDFN
 I '$D(^TMP($J,"PSOTALK2")) W !!,"No patients to report!",!! G DONE
 S PSONM="" F  S PSONM=$O(^TMP($J,"PSOTALK2",PSONM)) Q:PSONM=""  S PSOSSN="" F  S PSOSSN=$O(^TMP($J,"PSOTALK2",PSONM,PSOSSN)) Q:PSOSSN=""  D  I PSOOUT G DONE
 .S PSOIND=^TMP($J,"PSOTALK2",PSONM,PSOSSN)
 .I ($Y+5)>IOSL&('$G(PSOOUT)) D TITLEE I PSOOUT Q
 .W !,PSONM,?25," ",PSOSSN I 'PSOPRINT W ?43,$S(+$P(PSOIND,"^",3):"YES",1:"NO")
 .W !,?3,$S($P(PSOIND,"^",2)="B":"BLIND VETERAN",$P(PSOIND,"^",2)="L":"LOW VISION",1:" ")
 .W ?58,$$FMTE^XLFDT($P(PSOIND,"^")),!
 G END
 ;
TITLEE ;
 I $G(PSODV)="C",$G(PSOPGCT)'=1 W ! K DIR S DIR(0)="E" D ^DIR K DIR I 'Y S PSOOUT=1 Q
 W @IOF
 W !,"Report of ScripTalk Enrollment",?40,"Date printed: "_$$FMTE^XLFDT(DT),?70,"Page: ",PSOPGCT,!!
 S PSOPGCT=PSOPGCT+1
 W !,"Patient name",?25," SSN" I 'PSOPRINT W ?40,"Active enrollee?"
 W !?3,"Indication",?57,"Enrollment last updated"
 W !,"--------------",?25,"-----------" W:'PSOPRINT ?40,"-------------" W ?57,"-----------------------",!
 Q
 ;
GETDFN ;
 N DFN
 S PSODFN=0 F  S PSODFN=$O(^PS(55,"ASTALK",PSODFN)) Q:PSODFN=""  D
 .I PSOPRINT I '$G(^PS(55,"ASTALK",PSODFN)) Q
 .S DFN=PSODFN D DEM^VADPT I +$G(VADM(6)) Q  ; DECEASED
 .S PSOSEQ=$P($G(^PS(55,DFN,"SCTALK",0)),"^",4)
 .S PSOAUD=""
 .I PSOSEQ'="" S PSOAUD=$G(^PS(55,DFN,"SCTALK",PSOSEQ,0))
 .I $G(VA("PID"))="" S VA("PID")=" "
 .S ^TMP($J,"PSOTALK2",VADM(1),VA("PID"))=$P(PSOAUD,"^")_"^"_$P(PSOAUD,"^",3)_"^"_$G(^PS(55,"ASTALK",PSODFN))
 Q
 ;
MESS W !!,"No report printed!",!!
 Q
 ;
MAIL ; MAKE SURE MAIL STATUS IS COMPATIBLE WITH SCRIPTALK PATIENT
 N MAIL
 S MAIL=$G(^PS(55,PSOPT,0)) I $P(MAIL,"^",3)>1 Q
MAILP W !!,"REMINDER: CMOP does not fill ScripTalk prescriptions.Please select mail"
 W !,"status:  2 (DO NOT MAIL), 3 (LOCAL REGULAR MAIL) or 4 (LOCAL CERTFIED MAIL)."
 R !,"MAIL: ",MAIL:120
 I MAIL?1"^".E Q
 I MAIL<2!(MAIL>4) W !,"INVALID MAIL SETTING - ENTER 2,3, OR 4" G MAILP
 W "  ",$S(MAIL=2:"DO NOT MAIL",MAIL=3:"LOCAL REGULAR MAIL",1:"LOCAL CERTIFIED MAIL")
 S $P(^PS(55,PSOPT,0),"^",3)=MAIL
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOTALK2   7857     printed  Sep 23, 2025@20:12:08                                                                                                                                                                                                    Page 2
PSOTALK2  ;BIR/EJW - SCRIPTALK ENROLLMENT FUNCTIONS ;3-28-02
 +1       ;;7.0;OUTPATIENT PHARMACY;**135,182,326**;DEC 1997;Build 11
 +2       ;External reference ^PS(55 supported by DBIA 2228
 +3       ;External reference ^TMP("TIUP", ^TIUPNAPI, ^TIU(8925.1 supported by DBIA 1911
ENROLL    ;
 +1        NEW PSOSTEN,PSOIND,PSOLAST,DFN
 +2        SET PSOIND=""
 +3        IF '$GET(PSOFIRST)
               DO INSTR
               SET PSOFIRST=1
 +4        WRITE !
 +5        KILL DIC
           WRITE !
           SET DIC(0)="QEAM"
           SET DIC("A")="Select PATIENT: "
           DO EN^PSOPATLK
           SET Y=PSOPTLK
           KILL DIC,PSOPTLK
           IF Y<1!($DATA(DUOUT))!($DATA(DTOUT))
               DO CLEAN
               QUIT 
 +6        SET PSOPT=+Y
 +7        SET DFN=PSOPT
           DO DEM^VADPT
           IF +$GET(VADM(6))
               WRITE !,"Patient is deceased",!
               GOTO ENROLL
 +8        IF '$DATA(^PS(55,PSOPT))
               Begin DoDot:1
 +9                SET DIC="^PS(55,"
                   SET DLAYGO=55
 +10               KILL DD,DO
                   SET DIC(0)="L"
                   SET (DINUM,X)=PSOPT
                   DO FILE^DICN
                   if Y<1
                       Begin DoDot:2
 +11                       SET $PIECE(^PS(55,PSOPT,0),"^")=PSOPT
                           KILL DIK
                           SET DA=PSOPT
                           SET DIK="^PS(55,"
                           SET DIK(1)=.01
                           DO EN^DIK
                           KILL DIK
                       End DoDot:2
                   KILL DIC,DA,DR,DD,DO
               End DoDot:1
 +12       SET PSOSTEN=$GET(^PS(55,"ASTALK",PSOPT))
 +13       SET DIR(0)="Y"
           SET DIR("A")="SCRIPTALK PATIENT"
           SET DIR("B")=$SELECT(PSOSTEN:"Y",1:"N")
           DO ^DIR
           KILL DIR
 +14       SET PSOSTEN=Y
 +15       IF PSOSTEN
               DO MAIL
               DO GETIND
 +16       DO SET55
 +17       DO NOTE(PSOPT)
 +18       KILL PSOIND,PSOPT,PSOSTEN,PSOLAST,X,Y
 +19       GOTO ENROLL
 +20      ;
SET55     ; SET MULTIPLE FOR SCRIPTALK ENROLLMENT AUDIT
 +1        NEW PSODA,PSOERR,PSOIEN,PSOSTDT
 +2        IF PSOPT=""
               QUIT 
 +3        SET PSOSTDT=$$NOW^XLFDT
 +4        SET PSODA(55.0108,"+1,"_PSOPT_",",.01)=PSOSTDT
 +5        SET PSODA(55.0108,"+1,"_PSOPT_",",1)=PSOSTEN
 +6        SET PSODA(55.0108,"+1,"_PSOPT_",",2)=PSOIND
 +7        SET PSODA(55.0108,"+1,"_PSOPT_",",3)=$GET(DUZ)
 +8        DO UPDATE^DIE("","PSODA","PSOIEN","PSOERR")
 +9        QUIT 
 +10      ;
GETIND    ; GET INDICATION FOR ENROLLMENT
 +1       ; IF PRIOR ANSWER WAS 'Y' - GET PRIOR INDICATION
           SET PSOLAST=$PIECE($GET(^PS(55,PSOPT,"SCTALK",0)),"^",4)
           IF PSOLAST'=""
               SET PSOIND=$PIECE($GET(^PS(55,PSOPT,"SCTALK",PSOLAST,0)),"^",3)
 +2        SET DIR(0)="S^B:BLIND VETERAN;L:LOW VISION"
           SET DIR("A")="INDICATION"
           SET DIR("B")=PSOIND
           DO ^DIR
           KILL DIR
 +3        SET PSOIND=$GET(Y)
 +4        QUIT 
 +5       ;
INSTR     ;
 +1        WRITE @IOF
 +2        IF $ORDER(^TIU(8925.1,"B","SCRIPTALK ENROLLMENT",0))=""
               QUIT 
 +3        WRITE !
 +4        WRITE !?3,"At the conclusion of this enrollment option, you will be given"
 +5        WRITE !?3,"the opportunity to sign a progress note recording the enrollment"
 +6        WRITE !?3,"of new ScripTalk patients. If you modify the record of a patient"
 +7        WRITE !?3,"that was previously enrolled, and they remain enrolled, you may"
 +8        WRITE !?3,"wish to either delete or edit the text of the generated note."
 +9        WRITE !!
 +10       KILL PSOSQ,PSOTT,PSOSTP
 +11       QUIT 
 +12      ;
NOTE(PSOPT) ;CREATE A PROGRESS NOTE FOR PATIENT 'PSOPT' ABOUT ENROLLMENT
 +1       ; IF THIS PTS ENROLLMENT ISN'T ACTIVE
           if '+$GET(^PS(55,"ASTALK",PSOPT))
               QUIT 
 +2        SET PSOTITL=$ORDER(^TIU(8925.1,"B","SCRIPTALK ENROLLMENT",0))
 +3       ;IF NO TITLE ON SYSTEM
           if '+PSOTITL
               QUIT 
 +4        SET PSOPTNM=$PIECE($GET(^DPT(PSOPT,0)),U,1)
 +5        SET PSOLINE=1
 +6        SET ^TMP("TIUP",$JOB,PSOLINE,0)=PSOPTNM_" was enrolled in ScripTalk today, and is now eligible to receive"
 +7        SET PSOLINE=PSOLINE+1
 +8        SET ^TMP("TIUP",$JOB,PSOLINE,0)="prescriptions with encoded speech-capable labels."
 +9        SET ^TMP("TIUP",$JOB,0)=U_U_PSOLINE_PSOLINE_U_DT_U
INSTALL    KILL TIUDA
 +1        DO NEW^TIUPNAPI(.TIUDA,PSOPT,DUZ,$$NOW^XLFDT,PSOTITL)
 +2        QUIT 
 +3       ;
CLEAN      KILL PSOLINE,PSOPTNM,PSOTITL,PSOSTP,PSOPT,PSOFIRST
 +1        KILL ^TMP("TIUP",$JOB)
 +2        QUIT 
 +3       ;
AUDREP    ;
 +1        KILL DIC
           WRITE !
           SET DIC(0)="QEAM"
           SET DIC("A")="Select PATIENT: "
           DO EN^PSOPATLK
           SET Y=PSOPTLK
           KILL DIC,PSOPTLK
           IF Y<1!($DATA(DUOUT))!($DATA(DTOUT))
               QUIT 
 +2        SET PSOPT=+Y
 +3        SET ZTSAVE("*")=""
 +4        WRITE !!,"You may queue the report to print, if you wish.",!
 +5        KILL %ZIS,POP,IOP
           SET %ZIS="QM"
           DO ^%ZIS
           IF $GET(POP)
               WRITE !!,"Nothing queued to print.",!
               GOTO DONE
 +6        IF $DATA(IO("Q"))
               SET ZTRTN="AUDRQ^PSOTALK2"
               SET ZTDESC="Report of ScripTalk Enrollment"
               SET ZTSAVE("*")=""
               DO ^%ZTLOAD
               KILL %ZSI
               WRITE !,"Report queued to print.",!
               GOTO DONE
AUDRQ     ;
 +1        USE IO
 +2        SET PSOOUT=0
           SET PSODV=$SELECT($EXTRACT(IOST)="C":"C",1:"P")
 +3        SET PSOPGCT=1
 +4        DO TITLEA
           IF PSOOUT
               GOTO DONE
 +5        SET PSOAUD=0
           FOR 
               SET PSOAUD=$ORDER(^PS(55,PSOPT,"SCTALK",PSOAUD))
               if PSOAUD=""
                   QUIT 
               Begin DoDot:1
 +6                SET PSONODE=$GET(^PS(55,PSOPT,"SCTALK",PSOAUD,0))
 +7                SET PSOSTAT=$PIECE(PSONODE,"^",2)
 +8                SET PSOTIME=$$FMTE^XLFDT($PIECE(PSONODE,U,1))
                   SET PSOTIME=$PIECE(PSOTIME,"@")_"  "_$PIECE(PSOTIME,"@",2)
 +9                SET PSOTIME=$PIECE(PSOTIME,":",1,2)
 +10               IF ($Y+5)>IOSL&('$GET(PSOOUT))
                       DO TITLEA
                       IF PSOOUT
                           QUIT 
 +11               WRITE !,?2,PSOTIME
 +12               WRITE ?25,$SELECT(PSOSTAT:"YES",PSOSTAT=0:"NO",1:" ")
 +13               SET PSOIND=$PIECE(PSONODE,"^",3)
 +14               IF 'PSOSTAT
                       SET PSOIND=""
 +15               WRITE ?35,$SELECT(PSOIND="B":"BLIND VETERAN",PSOIND="L":"LOW VISION",1:"")
 +16               IF $PIECE(PSONODE,"^",4)'=""
                       Begin DoDot:2
 +17                       KILL DIC,X,Y
                           SET DIC="^VA(200,"
                           SET DIC(0)="M"
                           SET X="`"_+$PIECE(PSONODE,"^",4)
                           DO ^DIC
                           SET PSODUZ=$SELECT(+Y:$PIECE(Y,"^",2),1:"UNKNOWN")
                           KILL DIC,X,Y
                       End DoDot:2
                       WRITE ?52,$EXTRACT(PSODUZ,1,27)
               End DoDot:1
               IF PSOOUT
                   QUIT 
 +18       IF PSOOUT
               GOTO DONE
END       ;
 +1        IF '$GET(PSOOUT)
               IF $GET(PSODV)="C"
                   WRITE !!,"** End of Report **"
                   KILL DIR
                   SET DIR(0)="E"
                   SET DIR("A")="Press Return to continue"
                   DO ^DIR
                   KILL DIR
 +2        IF $GET(PSODV)="C"
               WRITE !
 +3       IF '$TEST
               WRITE @IOF
DONE       KILL PSOPT,PSOAUD,PSONODE,PSOIND,PSOSTAT,PSOPGCT,Y,IOP,POP,IO("Q"),DIRUT,DUOUT,DTOUT,PSODV,PSOOUT
 +1        KILL PSODFN,PSOIND,PSOSSN,PSOPRINT,PSONM,^TMP($JOB,"PSOTALK2")
 +2        DO ^%ZISC
           if $DATA(ZTQUEUED)
               SET ZTREQ="@"
 +3        QUIT 
 +4       ;
TITLEA    ;
 +1        IF $GET(PSODV)="C"
               IF $GET(PSOPGCT)'=1
                   WRITE !
                   KILL DIR
                   SET DIR(0)="E"
                   DO ^DIR
                   KILL DIR
                   IF 'Y
                       SET PSOOUT=1
                       QUIT 
 +2        WRITE @IOF
 +3        WRITE !,"SCRIPTALK AUDIT HISTORY"
           SET Y=DT
           XECUTE ^DD("DD")
           WRITE ?40,"Date printed: ",Y,?70,"Page: ",PSOPGCT,!!
 +4        SET PSOPGCT=PSOPGCT+1
 +5        WRITE !,"Name: ",$EXTRACT($PIECE(^DPT(PSOPT,0),"^"),1,25),"    Currently enrolled: ",$SELECT($GET(^PS(55,"ASTALK",PSOPT)):"YES",1:"NO"),!!
 +6        WRITE !?24,"Previous",?35,"Previous"
 +7        WRITE !,?2,"Date-Time Set",?25,"Status",?35,"Indication",?52,"Entered by"
 +8        WRITE !,?2,"-------------------",?24,"--------",?35,"-------------",?52,"--------------------",!
 +9        QUIT 
 +10      ;
ENQ       ;
 +1        WRITE !
           KILL DIR
           SET DIR(0)="Y"
           SET DIR("B")="Y"
           SET DIR("A")="Do you want to report only active enrollees"
           DO ^DIR
           KILL DIR
           if $DATA(DIRUT)
               DO MESS
           if Y["^"!($DATA(DIRUT))
               GOTO DONE
           SET PSOPRINT=$SELECT(Y:1,1:0)
 +2        WRITE !!,"You may queue the report to print, if you wish.",!
 +3        KILL %ZIS,POP,IOP
           SET %ZIS="QM"
           DO ^%ZIS
           IF $GET(POP)
               WRITE !!,"Nothing queued to print.",!
               GOTO DONE
 +4        IF $DATA(IO("Q"))
               SET ZTRTN="RPENROLL^PSOTALK2"
               SET ZTDESC="Report of ScripTalk Enrollment"
               SET ZTSAVE("*")=""
               DO ^%ZTLOAD
               KILL %ZSI
               WRITE !,"Report queued to print.",!
               GOTO DONE
RPENROLL  ;
 +1        USE IO
 +2        SET PSOOUT=0
           SET PSODV=$SELECT($EXTRACT(IOST)="C":"C",1:"P")
 +3        SET PSOPGCT=1
 +4        DO TITLEE
           IF PSOOUT
               GOTO DONE
 +5        KILL ^TMP($JOB,"PSOTALK2")
 +6        DO GETDFN
 +7        IF '$DATA(^TMP($JOB,"PSOTALK2"))
               WRITE !!,"No patients to report!",!!
               GOTO DONE
 +8        SET PSONM=""
           FOR 
               SET PSONM=$ORDER(^TMP($JOB,"PSOTALK2",PSONM))
               if PSONM=""
                   QUIT 
               SET PSOSSN=""
               FOR 
                   SET PSOSSN=$ORDER(^TMP($JOB,"PSOTALK2",PSONM,PSOSSN))
                   if PSOSSN=""
                       QUIT 
                   Begin DoDot:1
 +9                    SET PSOIND=^TMP($JOB,"PSOTALK2",PSONM,PSOSSN)
 +10                   IF ($Y+5)>IOSL&('$GET(PSOOUT))
                           DO TITLEE
                           IF PSOOUT
                               QUIT 
 +11                   WRITE !,PSONM,?25," ",PSOSSN
                       IF 'PSOPRINT
                           WRITE ?43,$SELECT(+$PIECE(PSOIND,"^",3):"YES",1:"NO")
 +12                   WRITE !,?3,$SELECT($PIECE(PSOIND,"^",2)="B":"BLIND VETERAN",$PIECE(PSOIND,"^",2)="L":"LOW VISION",1:" ")
 +13                   WRITE ?58,$$FMTE^XLFDT($PIECE(PSOIND,"^")),!
                   End DoDot:1
                   IF PSOOUT
                       GOTO DONE
 +14       GOTO END
 +15      ;
TITLEE    ;
 +1        IF $GET(PSODV)="C"
               IF $GET(PSOPGCT)'=1
                   WRITE !
                   KILL DIR
                   SET DIR(0)="E"
                   DO ^DIR
                   KILL DIR
                   IF 'Y
                       SET PSOOUT=1
                       QUIT 
 +2        WRITE @IOF
 +3        WRITE !,"Report of ScripTalk Enrollment",?40,"Date printed: "_$$FMTE^XLFDT(DT),?70,"Page: ",PSOPGCT,!!
 +4        SET PSOPGCT=PSOPGCT+1
 +5        WRITE !,"Patient name",?25," SSN"
           IF 'PSOPRINT
               WRITE ?40,"Active enrollee?"
 +6        WRITE !?3,"Indication",?57,"Enrollment last updated"
 +7        WRITE !,"--------------",?25,"-----------"
           if 'PSOPRINT
               WRITE ?40,"-------------"
           WRITE ?57,"-----------------------",!
 +8        QUIT 
 +9       ;
GETDFN    ;
 +1        NEW DFN
 +2        SET PSODFN=0
           FOR 
               SET PSODFN=$ORDER(^PS(55,"ASTALK",PSODFN))
               if PSODFN=""
                   QUIT 
               Begin DoDot:1
 +3                IF PSOPRINT
                       IF '$GET(^PS(55,"ASTALK",PSODFN))
                           QUIT 
 +4       ; DECEASED
                   SET DFN=PSODFN
                   DO DEM^VADPT
                   IF +$GET(VADM(6))
                       QUIT 
 +5                SET PSOSEQ=$PIECE($GET(^PS(55,DFN,"SCTALK",0)),"^",4)
 +6                SET PSOAUD=""
 +7                IF PSOSEQ'=""
                       SET PSOAUD=$GET(^PS(55,DFN,"SCTALK",PSOSEQ,0))
 +8                IF $GET(VA("PID"))=""
                       SET VA("PID")=" "
 +9                SET ^TMP($JOB,"PSOTALK2",VADM(1),VA("PID"))=$PIECE(PSOAUD,"^")_"^"_$PIECE(PSOAUD,"^",3)_"^"_$GET(^PS(55,"ASTALK",PSODFN))
               End DoDot:1
 +10       QUIT 
 +11      ;
MESS       WRITE !!,"No report printed!",!!
 +1        QUIT 
 +2       ;
MAIL      ; MAKE SURE MAIL STATUS IS COMPATIBLE WITH SCRIPTALK PATIENT
 +1        NEW MAIL
 +2        SET MAIL=$GET(^PS(55,PSOPT,0))
           IF $PIECE(MAIL,"^",3)>1
               QUIT 
MAILP      WRITE !!,"REMINDER: CMOP does not fill ScripTalk prescriptions.Please select mail"
 +1        WRITE !,"status:  2 (DO NOT MAIL), 3 (LOCAL REGULAR MAIL) or 4 (LOCAL CERTFIED MAIL)."
 +2        READ !,"MAIL: ",MAIL:120
 +3        IF MAIL?1"^".E
               QUIT 
 +4        IF MAIL<2!(MAIL>4)
               WRITE !,"INVALID MAIL SETTING - ENTER 2,3, OR 4"
               GOTO MAILP
 +5        WRITE "  ",$SELECT(MAIL=2:"DO NOT MAIL",MAIL=3:"LOCAL REGULAR MAIL",1:"LOCAL CERTIFIED MAIL")
 +6        SET $PIECE(^PS(55,PSOPT,0),"^",3)=MAIL
 +7        QUIT