PSOCIDC8 ;BIR/LE - continuation of activity log corrections ;2/28/05 12:50pm
 ;;7.0;OUTPATIENT PHARMACY;**239,250**;DEC 1997
 ;External reference to ^XUSEC supported by DBIA 10076
 ;External reference to $$PROD^XUPROD(1) supported by DBIA 4440
 ;External references L and UL^PSSLOCK supported by DBIA 2789
 ;
CHECK ;
 Q:'$D(^PSRX(RXP,"A",0))&('$D(^PSRX(RXP,"COPAY",0)))
 N PSOMSG,PSONTIM,PSOCHECK,SEQ,CSEQ,CSEQ2
 S (PSOCHECK,SEQ,CSEQ)=0
 I $D(^PSRX(RXP,"A",0)) F  S SEQ=$O(^PSRX(RXP,"A",SEQ)) Q:SEQ=""  I $G(^PSRX(RXP,"A",SEQ,0))["BKGD CIDC" S PSOCHECK=1
 I $D(^PSRX(RXP,"COPAY",0)) F  S CSEQ=$O(^PSRX(RXP,"COPAY",CSEQ)) Q:CSEQ=""  I $G(^PSRX(RXP,"COPAY",CSEQ,0))["BKGD CIDC" S PSOCHECK=1
 Q:'PSOCHECK
CHECK1 ;
 D PSOL^PSSLOCK(RXP) S PSONTIM=$G(PSONTIM)+1 G CHECK1:'$G(PSOMSG)&($G(PSONTIM)<10)
 I '+$G(PSOMSG) S:'$G(FIXONE) ^XTMP(NAMSP,0,"LOCKED RX",RXP)="" S:('+$G(PSOMSG)&($G(FIXONE))) PSOFONE=1 W:$G(FIXONE) !,"Cannot lock Rx for correction.",!! Q
 ;
 I $D(^XTMP(NAMSP,0,"STOP")) S $P(^XTMP(NAMSP,0,"LAST"),"^",3)=$O(^PSRX("AD",PSODT),-1),$P(^XTMP(NAMSP,0,"LAST"),"^",4)=$O(^PSRX(RXP),-1) Q
 N AFLG,CFLG,CDAT,CHSEQ,ADATA,CDATA,DATA,ENTRY,EDAT,EFILL,ESEQ,MDATA,NEXT
 ;
 I $D(^PSRX(RXP,"A",0)) D
 . S SEQ=0 F  S SEQ=$O(^PSRX(RXP,"A",SEQ)) Q:SEQ=""  I $G(^PSRX(RXP,"A",SEQ,0))["BKGD CIDC" D  Q:AFLG
 .. M ^XTMP(NAMSP,"A",PSODFN,RXP,"A")=^PSRX(RXP,"A") S AFLG=1
 .. I $D(^PSRX(RXP,"COPAY")) M ^XTMP(NAMSP,"C",PSODFN,RXP,"COPAY")=^PSRX(RXP,"COPAY")
 .. E  S ^XTMP(NAMSP,"C",PSODFN,RXP)="No previous copay activity log in file 52"
 D:$G(AFLG) ACTLOG
 ;
 K CDATA S CFLG=0
 I $D(^PSRX(RXP,"COPAY",0)) D
 . S CSEQ=0 F  S CSEQ=$O(^PSRX(RXP,"COPAY",CSEQ)) Q:CSEQ=""  I $G(^PSRX(RXP,"COPAY",CSEQ,0))["BKGD CIDC" D  Q:CFLG
 .. I '$D(^XTMP(NAMSP,"C",PSODFN,RXP))&(^PSRX(RXP,"COPAY",CSEQ,0)'["CIDC CLEANUP") M ^XTMP(NAMSP,"C",PSODFN,RXP,"COPAY")=^PSRX(RXP,"COPAY")
 .. S CFLG=1
 D:$G(CFLG)!$G(AFLG) CPLOG
 D PSOUL^PSSLOCK(RXP)
 Q
 ;
ACTLOG ;ACTIVITY LOG
 S (CHSEQ,SEQ)=0
 F  S SEQ=$O(^PSRX(RXP,"A",SEQ)) Q:SEQ=""  S ENTRY=$G(^PSRX(RXP,"A",SEQ,0)) I ENTRY'="" D
 . I ENTRY'["BKGD CIDC" S CHSEQ=CHSEQ+1,CDATA(CHSEQ)=ENTRY Q
 . S MDATA($P(ENTRY,"^"),$P(ENTRY,"^",4),SEQ)=""
 ;
 ;Q:'$D(CDATA)&('$D(MDATA))
 ;
 ;***************************** FOR LIVE RUN
 I $D(CDATA)!($D(MDATA)) D
 .I $D(^PSRX(RXP,"A")) K ^PSRX(RXP,"A")
 .Q:'$D(CDATA)
 .S (CHSEQ,SEQ)=0 F  S SEQ=$O(CDATA(SEQ)) Q:SEQ=""  S ^PSRX(RXP,"A",SEQ,0)=CDATA(SEQ),CHSEQ=SEQ
 .S ^PSRX(RXP,"A",0)="^52.3DA^"_CHSEQ_"^"_CHSEQ
 .S ^XTMP(NAMSP,"LOG",PSONAM,PSODFN,RXP)=""
 ;*****************************
 ;***---------------------------------------->>>>>>>>>>  UN-COMMENT NEXT 3 LINES FOR TESTING ONLY AND COMMENT LIVE RUN
 ;S (CHSEQ,SEQ)=0 F  S SEQ=$O(CDATA(SEQ)) Q:SEQ=""  S ^XTMP("TST "_NAMSP,RXP,"A",SEQ,0)=CDATA(SEQ),CHSEQ=SEQ
 ;S ^XTMP("TST "_NAMSP,RXP,"A",0)="^52.3DA^"_CHSEQ_"^"_CHSEQ
 ;S ^XTMP("TST "_NAMSP,"LOG",PSONAM,PSODFN,RXP)=""
 ;
 Q
 ;
CPLOG ;COPAY ACTIVITY LOG
 S (EDAT,EFILL,ESEQ)="",(CHSEQ,CSEQ2)=0
 I '$D(^PSRX(RXP,"COPAY"))&($D(MDATA)) D  G SKP2
 . F  S EDAT=$O(MDATA(EDAT)) Q:EDAT=""  F  S EFILL=$O(MDATA(EDAT,EFILL)) Q:EFILL=""  F  S ESEQ=$O(MDATA(EDAT,EFILL,ESEQ)) Q:ESEQ=""  D
 .. S CHSEQ=CHSEQ+1,CDATA(CHSEQ)=EDAT_"^R^.5^"_EFILL_"^CIDC CLEANUP"
 ;
 F  S CSEQ2=$O(^PSRX(RXP,"COPAY",CSEQ2)) Q:CSEQ2=""  D
 . S DATA=^PSRX(RXP,"COPAY",CSEQ2,0),CDAT=$P(DATA,"^")
 . I DATA["-BKGD CIDC" S $P(DATA,"^",5)="CIDC CLEANUP"
SKP .;
 . I '$G(EDAT)&($D(MDATA)) S (EDAT,EFILL,ESEQ)="",EDAT=$O(MDATA(EDAT)),EFILL=$O(MDATA(EDAT,EFILL)),ESEQ=$O(MDATA(EDAT,EFILL,ESEQ))
 . I EDAT<CDAT&(EDAT'="") S CHSEQ=CHSEQ+1,CDATA(CHSEQ)=EDAT_"^R^.5^"_EFILL_"^CIDC CLEANUP" K MDATA(EDAT,EFILL,ESEQ) S EDAT="" G SKP
 . S CHSEQ=CHSEQ+1,CDATA(CHSEQ)=^PSRX(RXP,"COPAY",CSEQ2,0)
 . I CDATA(CHSEQ)["BKGD CIDC" S $P(CDATA(CHSEQ),"^",5)="CIDC CLEANUP"
 ;
 I $D(MDATA) S (EDAT,EFILL,ESEQ)=""  F  S EDAT=$O(MDATA(EDAT)) Q:EDAT=""  F  S EFILL=$O(MDATA(EDAT,EFILL)) Q:EFILL=""  F  S ESEQ=$O(MDATA(EDAT,EFILL,ESEQ)) Q:ESEQ=""  D
 . S CHSEQ=CHSEQ+1,CDATA(CHSEQ)=EDAT_"^R^.5^"_EFILL_"^CIDC CLEANUP"
SKP2 ;
 Q:'$D(CDATA)
 ;
 ;***************************** FOR LIVE RUN
 I $D(^PSRX(RXP,"COPAY")) K ^PSRX(RXP,"COPAY")
 S (CSEQ2,CHSEQ)=0 F  S CSEQ2=$O(CDATA(CSEQ2)) Q:CSEQ2=""  S ^PSRX(RXP,"COPAY",CSEQ2,0)=CDATA(CSEQ2),CHSEQ=CSEQ2
 S ^PSRX(RXP,"COPAY",0)="^52.0107DA^"_CHSEQ_"^"_CHSEQ
 S ^XTMP(NAMSP,"LOG",PSONAM,PSODFN,RXP)=""
 ;*****************************
 ;***---------------------------------------->>>>>>>>>>> UN-COMMENT NEXT 3 LINES FOR TESTING ONLY AND COMMENT LIVE RUN
 ;S (CSEQ2,CHSEQ)=0 F  S CSEQ2=$O(CDATA(CSEQ2)) Q:CSEQ2=""  S ^XTMP("TST "_NAMSP,RXP,"COPAY",CSEQ2,0)=CDATA(CSEQ2),CHSEQ=CSEQ2
 ;S ^XTMP("TST "_NAMSP,RXP,"COPAY",0)="^52.0107DA^"_CHSEQ_"^"_CHSEQ
 ;S ^XTMP("TST "_NAMSP,"LOG",PSONAM,PSODFN,RXP)=""
 Q
 ;
SITE ; SET UP VARIABLES NEEDED BY BILLING
 S PSOSITE=$S(YY=0:$P(^PSRX(RXP,2),"^",9),1:$P($G(^PSRX(RXP,1,YY,0)),"^",9))
 Q:PSOSITE=""
 S PSOPAR=$G(^PS(59,PSOSITE,1))
 S PSOPAR7=$G(^PS(59,PSOSITE,"IB"))
 S PSOSITE7=$P($G(^PS(59,PSOSITE,"IB")),"^")
 Q
 ;
MAIL3(MSG) ;management mail message
 S PSOINST=$P($G(^DIC(4,+$P($G(^XMB(1,1,"XUS")),"^",17),99)),"^")
 D NOW^%DTC S Y=% D DD^%DT S PSOEND=Y
 K PSOTEXT
 S:$G(DUZ) XMY(DUZ)=""
 ;S XMY("ELLZEY.LINDA@DOMAIN.EXT")=""
 S:$$PROD^XUPROD(1) XMY("ELLZEY.LINDA@DOMAIN.EXT")=""
 S XMDUZ="PSO*7*239 "_JOBN
 S XMSUB="STATION "_$G(PSOINST)
 S XMSUB=XMSUB_$S($$PROD^XUPROD(1):" (Prod)",1:" (Test)")
 S XMSUB=XMSUB_" Activity log and Copay Activity log correction "
 S PSOTEXT(1)=""
 S PSOTEXT(2)="Started "_PSOSTART
 S PSOTEXT(3)=""
 S PSOTEXT(4)="   "_MSG
 S PSOTEXT(5)=""
 S PSOTEXT(6)="NO FURTHER ACTION REQUIRED."
 S XMTEXT="PSOTEXT(" N DIFROM D ^XMD K XMDUZ,XMTEXT,XMSUB,PSOEND
 Q
 ;
MAIL ;
 D NOW^%DTC S Y=% D DD^%DT N PSOCXPDA,PSOTEXT,XMY,XMTEXT,PSORXP,PSONCNT,PSOEND2,PSOEND
 S PSOEND=Y,PSOEND2=$$FMTE^XLFDT(%,"1PS")
 I $G(DUZ) S XMY(DUZ)=""
 S XMDUZ="PSO*7*239 "_JOBN
 S XMSUB="Outpatient Pharmacy PSO*7*239 "_JOBN
 ;S XMY("ELLZEY.LINDA@DOMAIN.EXT")=""
 F PSOCXPDA=0:0 S PSOCXPDA=$O(^XUSEC("PSO COPAY",PSOCXPDA)) Q:'PSOCXPDA  S XMY(PSOCXPDA)=""
 I $O(XMY(""))="" Q  ; no recipients for mail message
 S PSOTEXT(1)="The "_JOBN_" job for the Outpatient Pharmacy"
 S PSOTEXT(2)="patch (PSO*7*239) started "_PSOSTART
 S PSOTEXT(3)="and completed "_PSOEND_"."
 S PSOTEXT(4)=" ",(PSORXP,PSONCNT)=""
 S PSOTEXT(5)=" "
 S PSOTEXT(6)=" "
 I $D(^XTMP("PSOCIDC7",0,"LOCKED RX")) D
 . F  S PSORXP=$O(^XTMP("PSOCIDC7",0,"LOCKED RX",PSORXP)) Q:PSORXP=""  S PSONCNT=PSONCNT+1
 . Q:'$G(PSONCNT)>0 
 . S PSOTEXT(5)="There were "_PSONCNT_" locked Rx(s) that could not be processed."
 . S PSOTEXT(6)="From programmer's mode, type D LOCKED^PSOCIDC9 for a report."
 S PSOTEXT(7)=" "
 ;
 S XMTEXT="PSOTEXT(" N DIFROM D ^XMD K XMDUZ,XMTEXT,XMSUB
 Q
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOCIDC8   6861     printed  Sep 23, 2025@20:01:37                                                                                                                                                                                                    Page 2
PSOCIDC8  ;BIR/LE - continuation of activity log corrections ;2/28/05 12:50pm
 +1       ;;7.0;OUTPATIENT PHARMACY;**239,250**;DEC 1997
 +2       ;External reference to ^XUSEC supported by DBIA 10076
 +3       ;External reference to $$PROD^XUPROD(1) supported by DBIA 4440
 +4       ;External references L and UL^PSSLOCK supported by DBIA 2789
 +5       ;
CHECK     ;
 +1        if '$DATA(^PSRX(RXP,"A",0))&('$DATA(^PSRX(RXP,"COPAY",0)))
               QUIT 
 +2        NEW PSOMSG,PSONTIM,PSOCHECK,SEQ,CSEQ,CSEQ2
 +3        SET (PSOCHECK,SEQ,CSEQ)=0
 +4        IF $DATA(^PSRX(RXP,"A",0))
               FOR 
                   SET SEQ=$ORDER(^PSRX(RXP,"A",SEQ))
                   if SEQ=""
                       QUIT 
                   IF $GET(^PSRX(RXP,"A",SEQ,0))["BKGD CIDC"
                       SET PSOCHECK=1
 +5        IF $DATA(^PSRX(RXP,"COPAY",0))
               FOR 
                   SET CSEQ=$ORDER(^PSRX(RXP,"COPAY",CSEQ))
                   if CSEQ=""
                       QUIT 
                   IF $GET(^PSRX(RXP,"COPAY",CSEQ,0))["BKGD CIDC"
                       SET PSOCHECK=1
 +6        if 'PSOCHECK
               QUIT 
CHECK1    ;
 +1        DO PSOL^PSSLOCK(RXP)
           SET PSONTIM=$GET(PSONTIM)+1
           if '$GET(PSOMSG)&($GET(PSONTIM)<10)
               GOTO CHECK1
 +2        IF '+$GET(PSOMSG)
               if '$GET(FIXONE)
                   SET ^XTMP(NAMSP,0,"LOCKED RX",RXP)=""
               if ('+$GET(PSOMSG)&($GET(FIXONE)))
                   SET PSOFONE=1
               if $GET(FIXONE)
                   WRITE !,"Cannot lock Rx for correction.",!!
               QUIT 
 +3       ;
 +4        IF $DATA(^XTMP(NAMSP,0,"STOP"))
               SET $PIECE(^XTMP(NAMSP,0,"LAST"),"^",3)=$ORDER(^PSRX("AD",PSODT),-1)
               SET $PIECE(^XTMP(NAMSP,0,"LAST"),"^",4)=$ORDER(^PSRX(RXP),-1)
               QUIT 
 +5        NEW AFLG,CFLG,CDAT,CHSEQ,ADATA,CDATA,DATA,ENTRY,EDAT,EFILL,ESEQ,MDATA,NEXT
 +6       ;
 +7        IF $DATA(^PSRX(RXP,"A",0))
               Begin DoDot:1
 +8                SET SEQ=0
                   FOR 
                       SET SEQ=$ORDER(^PSRX(RXP,"A",SEQ))
                       if SEQ=""
                           QUIT 
                       IF $GET(^PSRX(RXP,"A",SEQ,0))["BKGD CIDC"
                           Begin DoDot:2
 +9                            MERGE ^XTMP(NAMSP,"A",PSODFN,RXP,"A")=^PSRX(RXP,"A")
                               SET AFLG=1
 +10                           IF $DATA(^PSRX(RXP,"COPAY"))
                                   MERGE ^XTMP(NAMSP,"C",PSODFN,RXP,"COPAY")=^PSRX(RXP,"COPAY")
 +11                          IF '$TEST
                                   SET ^XTMP(NAMSP,"C",PSODFN,RXP)="No previous copay activity log in file 52"
                           End DoDot:2
                           if AFLG
                               QUIT 
               End DoDot:1
 +12       if $GET(AFLG)
               DO ACTLOG
 +13      ;
 +14       KILL CDATA
           SET CFLG=0
 +15       IF $DATA(^PSRX(RXP,"COPAY",0))
               Begin DoDot:1
 +16               SET CSEQ=0
                   FOR 
                       SET CSEQ=$ORDER(^PSRX(RXP,"COPAY",CSEQ))
                       if CSEQ=""
                           QUIT 
                       IF $GET(^PSRX(RXP,"COPAY",CSEQ,0))["BKGD CIDC"
                           Begin DoDot:2
 +17                           IF '$DATA(^XTMP(NAMSP,"C",PSODFN,RXP))&(^PSRX(RXP,"COPAY",CSEQ,0)'["CIDC CLEANUP")
                                   MERGE ^XTMP(NAMSP,"C",PSODFN,RXP,"COPAY")=^PSRX(RXP,"COPAY")
 +18                           SET CFLG=1
                           End DoDot:2
                           if CFLG
                               QUIT 
               End DoDot:1
 +19       if $GET(CFLG)!$GET(AFLG)
               DO CPLOG
 +20       DO PSOUL^PSSLOCK(RXP)
 +21       QUIT 
 +22      ;
ACTLOG    ;ACTIVITY LOG
 +1        SET (CHSEQ,SEQ)=0
 +2        FOR 
               SET SEQ=$ORDER(^PSRX(RXP,"A",SEQ))
               if SEQ=""
                   QUIT 
               SET ENTRY=$GET(^PSRX(RXP,"A",SEQ,0))
               IF ENTRY'=""
                   Begin DoDot:1
 +3                    IF ENTRY'["BKGD CIDC"
                           SET CHSEQ=CHSEQ+1
                           SET CDATA(CHSEQ)=ENTRY
                           QUIT 
 +4                    SET MDATA($PIECE(ENTRY,"^"),$PIECE(ENTRY,"^",4),SEQ)=""
                   End DoDot:1
 +5       ;
 +6       ;Q:'$D(CDATA)&('$D(MDATA))
 +7       ;
 +8       ;***************************** FOR LIVE RUN
 +9        IF $DATA(CDATA)!($DATA(MDATA))
               Begin DoDot:1
 +10               IF $DATA(^PSRX(RXP,"A"))
                       KILL ^PSRX(RXP,"A")
 +11               if '$DATA(CDATA)
                       QUIT 
 +12               SET (CHSEQ,SEQ)=0
                   FOR 
                       SET SEQ=$ORDER(CDATA(SEQ))
                       if SEQ=""
                           QUIT 
                       SET ^PSRX(RXP,"A",SEQ,0)=CDATA(SEQ)
                       SET CHSEQ=SEQ
 +13               SET ^PSRX(RXP,"A",0)="^52.3DA^"_CHSEQ_"^"_CHSEQ
 +14               SET ^XTMP(NAMSP,"LOG",PSONAM,PSODFN,RXP)=""
               End DoDot:1
 +15      ;*****************************
 +16      ;***---------------------------------------->>>>>>>>>>  UN-COMMENT NEXT 3 LINES FOR TESTING ONLY AND COMMENT LIVE RUN
 +17      ;S (CHSEQ,SEQ)=0 F  S SEQ=$O(CDATA(SEQ)) Q:SEQ=""  S ^XTMP("TST "_NAMSP,RXP,"A",SEQ,0)=CDATA(SEQ),CHSEQ=SEQ
 +18      ;S ^XTMP("TST "_NAMSP,RXP,"A",0)="^52.3DA^"_CHSEQ_"^"_CHSEQ
 +19      ;S ^XTMP("TST "_NAMSP,"LOG",PSONAM,PSODFN,RXP)=""
 +20      ;
 +21       QUIT 
 +22      ;
CPLOG     ;COPAY ACTIVITY LOG
 +1        SET (EDAT,EFILL,ESEQ)=""
           SET (CHSEQ,CSEQ2)=0
 +2        IF '$DATA(^PSRX(RXP,"COPAY"))&($DATA(MDATA))
               Begin DoDot:1
 +3                FOR 
                       SET EDAT=$ORDER(MDATA(EDAT))
                       if EDAT=""
                           QUIT 
                       FOR 
                           SET EFILL=$ORDER(MDATA(EDAT,EFILL))
                           if EFILL=""
                               QUIT 
                           FOR 
                               SET ESEQ=$ORDER(MDATA(EDAT,EFILL,ESEQ))
                               if ESEQ=""
                                   QUIT 
                               Begin DoDot:2
 +4                                SET CHSEQ=CHSEQ+1
                                   SET CDATA(CHSEQ)=EDAT_"^R^.5^"_EFILL_"^CIDC CLEANUP"
                               End DoDot:2
               End DoDot:1
               GOTO SKP2
 +5       ;
 +6        FOR 
               SET CSEQ2=$ORDER(^PSRX(RXP,"COPAY",CSEQ2))
               if CSEQ2=""
                   QUIT 
               Begin DoDot:1
 +7                SET DATA=^PSRX(RXP,"COPAY",CSEQ2,0)
                   SET CDAT=$PIECE(DATA,"^")
 +8                IF DATA["-BKGD CIDC"
                       SET $PIECE(DATA,"^",5)="CIDC CLEANUP"
SKP       ;
 +1                IF '$GET(EDAT)&($DATA(MDATA))
                       SET (EDAT,EFILL,ESEQ)=""
                       SET EDAT=$ORDER(MDATA(EDAT))
                       SET EFILL=$ORDER(MDATA(EDAT,EFILL))
                       SET ESEQ=$ORDER(MDATA(EDAT,EFILL,ESEQ))
 +2                IF EDAT<CDAT&(EDAT'="")
                       SET CHSEQ=CHSEQ+1
                       SET CDATA(CHSEQ)=EDAT_"^R^.5^"_EFILL_"^CIDC CLEANUP"
                       KILL MDATA(EDAT,EFILL,ESEQ)
                       SET EDAT=""
                       GOTO SKP
 +3                SET CHSEQ=CHSEQ+1
                   SET CDATA(CHSEQ)=^PSRX(RXP,"COPAY",CSEQ2,0)
 +4                IF CDATA(CHSEQ)["BKGD CIDC"
                       SET $PIECE(CDATA(CHSEQ),"^",5)="CIDC CLEANUP"
               End DoDot:1
 +5       ;
 +6        IF $DATA(MDATA)
               SET (EDAT,EFILL,ESEQ)=""
               FOR 
                   SET EDAT=$ORDER(MDATA(EDAT))
                   if EDAT=""
                       QUIT 
                   FOR 
                       SET EFILL=$ORDER(MDATA(EDAT,EFILL))
                       if EFILL=""
                           QUIT 
                       FOR 
                           SET ESEQ=$ORDER(MDATA(EDAT,EFILL,ESEQ))
                           if ESEQ=""
                               QUIT 
                           Begin DoDot:1
 +7                            SET CHSEQ=CHSEQ+1
                               SET CDATA(CHSEQ)=EDAT_"^R^.5^"_EFILL_"^CIDC CLEANUP"
                           End DoDot:1
SKP2      ;
 +1        if '$DATA(CDATA)
               QUIT 
 +2       ;
 +3       ;***************************** FOR LIVE RUN
 +4        IF $DATA(^PSRX(RXP,"COPAY"))
               KILL ^PSRX(RXP,"COPAY")
 +5        SET (CSEQ2,CHSEQ)=0
           FOR 
               SET CSEQ2=$ORDER(CDATA(CSEQ2))
               if CSEQ2=""
                   QUIT 
               SET ^PSRX(RXP,"COPAY",CSEQ2,0)=CDATA(CSEQ2)
               SET CHSEQ=CSEQ2
 +6        SET ^PSRX(RXP,"COPAY",0)="^52.0107DA^"_CHSEQ_"^"_CHSEQ
 +7        SET ^XTMP(NAMSP,"LOG",PSONAM,PSODFN,RXP)=""
 +8       ;*****************************
 +9       ;***---------------------------------------->>>>>>>>>>> UN-COMMENT NEXT 3 LINES FOR TESTING ONLY AND COMMENT LIVE RUN
 +10      ;S (CSEQ2,CHSEQ)=0 F  S CSEQ2=$O(CDATA(CSEQ2)) Q:CSEQ2=""  S ^XTMP("TST "_NAMSP,RXP,"COPAY",CSEQ2,0)=CDATA(CSEQ2),CHSEQ=CSEQ2
 +11      ;S ^XTMP("TST "_NAMSP,RXP,"COPAY",0)="^52.0107DA^"_CHSEQ_"^"_CHSEQ
 +12      ;S ^XTMP("TST "_NAMSP,"LOG",PSONAM,PSODFN,RXP)=""
 +13       QUIT 
 +14      ;
SITE      ; SET UP VARIABLES NEEDED BY BILLING
 +1        SET PSOSITE=$SELECT(YY=0:$PIECE(^PSRX(RXP,2),"^",9),1:$PIECE($GET(^PSRX(RXP,1,YY,0)),"^",9))
 +2        if PSOSITE=""
               QUIT 
 +3        SET PSOPAR=$GET(^PS(59,PSOSITE,1))
 +4        SET PSOPAR7=$GET(^PS(59,PSOSITE,"IB"))
 +5        SET PSOSITE7=$PIECE($GET(^PS(59,PSOSITE,"IB")),"^")
 +6        QUIT 
 +7       ;
MAIL3(MSG) ;management mail message
 +1        SET PSOINST=$PIECE($GET(^DIC(4,+$PIECE($GET(^XMB(1,1,"XUS")),"^",17),99)),"^")
 +2        DO NOW^%DTC
           SET Y=%
           DO DD^%DT
           SET PSOEND=Y
 +3        KILL PSOTEXT
 +4        if $GET(DUZ)
               SET XMY(DUZ)=""
 +5       ;S XMY("ELLZEY.LINDA@DOMAIN.EXT")=""
 +6        if $$PROD^XUPROD(1)
               SET XMY("ELLZEY.LINDA@DOMAIN.EXT")=""
 +7        SET XMDUZ="PSO*7*239 "_JOBN
 +8        SET XMSUB="STATION "_$GET(PSOINST)
 +9        SET XMSUB=XMSUB_$SELECT($$PROD^XUPROD(1):" (Prod)",1:" (Test)")
 +10       SET XMSUB=XMSUB_" Activity log and Copay Activity log correction "
 +11       SET PSOTEXT(1)=""
 +12       SET PSOTEXT(2)="Started "_PSOSTART
 +13       SET PSOTEXT(3)=""
 +14       SET PSOTEXT(4)="   "_MSG
 +15       SET PSOTEXT(5)=""
 +16       SET PSOTEXT(6)="NO FURTHER ACTION REQUIRED."
 +17       SET XMTEXT="PSOTEXT("
           NEW DIFROM
           DO ^XMD
           KILL XMDUZ,XMTEXT,XMSUB,PSOEND
 +18       QUIT 
 +19      ;
MAIL      ;
 +1        DO NOW^%DTC
           SET Y=%
           DO DD^%DT
           NEW PSOCXPDA,PSOTEXT,XMY,XMTEXT,PSORXP,PSONCNT,PSOEND2,PSOEND
 +2        SET PSOEND=Y
           SET PSOEND2=$$FMTE^XLFDT(%,"1PS")
 +3        IF $GET(DUZ)
               SET XMY(DUZ)=""
 +4        SET XMDUZ="PSO*7*239 "_JOBN
 +5        SET XMSUB="Outpatient Pharmacy PSO*7*239 "_JOBN
 +6       ;S XMY("ELLZEY.LINDA@DOMAIN.EXT")=""
 +7        FOR PSOCXPDA=0:0
               SET PSOCXPDA=$ORDER(^XUSEC("PSO COPAY",PSOCXPDA))
               if 'PSOCXPDA
                   QUIT 
               SET XMY(PSOCXPDA)=""
 +8       ; no recipients for mail message
           IF $ORDER(XMY(""))=""
               QUIT 
 +9        SET PSOTEXT(1)="The "_JOBN_" job for the Outpatient Pharmacy"
 +10       SET PSOTEXT(2)="patch (PSO*7*239) started "_PSOSTART
 +11       SET PSOTEXT(3)="and completed "_PSOEND_"."
 +12       SET PSOTEXT(4)=" "
           SET (PSORXP,PSONCNT)=""
 +13       SET PSOTEXT(5)=" "
 +14       SET PSOTEXT(6)=" "
 +15       IF $DATA(^XTMP("PSOCIDC7",0,"LOCKED RX"))
               Begin DoDot:1
 +16               FOR 
                       SET PSORXP=$ORDER(^XTMP("PSOCIDC7",0,"LOCKED RX",PSORXP))
                       if PSORXP=""
                           QUIT 
                       SET PSONCNT=PSONCNT+1
 +17               if '$GET(PSONCNT)>0
                       QUIT 
 +18               SET PSOTEXT(5)="There were "_PSONCNT_" locked Rx(s) that could not be processed."
 +19               SET PSOTEXT(6)="From programmer's mode, type D LOCKED^PSOCIDC9 for a report."
               End DoDot:1
 +20       SET PSOTEXT(7)=" "
 +21      ;
 +22       SET XMTEXT="PSOTEXT("
           NEW DIFROM
           DO ^XMD
           KILL XMDUZ,XMTEXT,XMSUB
 +23       QUIT 
 +24      ;