PSO283P1 ;BIR/MFR-EXPIRATION DATE PROBLEM TALLY (Cont.) ;05/03/07 ;;7.0;OUTPATIENT PHARMACY;**283**;DEC 1997;Build 28 ;External reference to ^PS(59.7 is supported by DBIA 694 ; MAIL ; N PSOTX,XMY,XMDUZ,XMSUB,XMTEXT,DIFROM S XMY($S($G(PSODUZ):PSODUZ,1:+$G(DUZ)))="" S XMDUZ=.5 S XMSUB="Patch PSO*7*283 - Rx EXPIRATION DATE PROBLEM TALLY" S XMY("RUZBACKI.RON@FORUM.VA.GOV")="" S XMY("ANWER.MOHAMED@FORUM.VA.GOV")="" S XMY("WILLIAMSON.ERIC@FORUM.VA.GOV")="" S XMY("WILLETTE.CANDY@FORUM.VA.GOV")="" S XMY("ROCHA.MARCELO@FORUM.VA.GOV")="" S XMY("BARRON.LUANNE@FORUM.VA.GOV")="" S XMY("JONES.TRES@FORUM.VA.GOV")="" D SETTXT ; S XMTEXT="PSOTX(" D ^XMD Q ; DISPLAY ; Displays the current results N PSOINST,J,DIR,PSOTX,DIR S PSOINST=$P($$SITE^VASITE(),"^",2)_" ("_+$$SITE^VASITE()_")" D SETTXT W ! F J=1:1 Q:'$D(PSOTX(J)) D . W !,PSOTX(J) . I '(J#19) K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR Q ; SETTXT ; Set the PSOTXT array with the Mailman message or screen display N EXCEL,J,Z,LINE,JOBSTS,STS,LOGLN,NMSP S LINE=0,NMSP="PSO283PI" D SETLN("Expiration Date problem tally patch for Outpatient Pharmacy prescriptions") D SETLN("=========================================================================") S JOBSTS=$$JOBSTS() S:JOBSTS="N" STS="NEVER RUN" S:JOBSTS="S" STS="STOPPED ON "_$$FMTE^XLFDT($G(^XTMP(NMSP,"STOPPED"))) S:JOBSTS="R" STS="RUNNING" S:JOBSTS="C" STS="COMPLETED ON "_$$FMTE^XLFDT($G(^XTMP(NMSP,"COMPLETED"))) S:$G(^XTMP(NMSP,"LASTRX")) STS=STS_" (Last Rx IEN: "_$G(^XTMP(NMSP,"LASTRX"))_")" D SETLN("Current status: "_STS) D SETLN(" ") D SETLN("1. Institution : "_PSOINST) D SETLN(" PATIENTS") D SETLN("Group 1: RX'S WITH NO EXPIRATION DATE WITH ICN# W/NO ICN#") D SETLN("------------------------------------- ---------- ----------") D SETLN("2. Calc exp date > CUTOFF (update HDR) "_$$TOT(2)_" "_$$TOT(102)) D SETLN("3. Calc exp date < CUTOFF,CPRS active (update HDR/CPRS) "_$$TOT(3)_" "_$$TOT(103)) D SETLN("4. Calc exp date < CUTOFF,CPRS non-active (update HDR) "_$$TOT(4)_" "_$$TOT(104)) D SETLN("5. No CPRS order# (Update HDR) "_$$TOT(5)_" "_$$TOT(105)) D SETLN(" ") D SETLN("Group 2: RX'S IN EXPIRED STATUS") D SETLN("-------------------------------") D SETLN("6. CPRS active (update CPRS/HDR) "_$$TOT(6)_" "_$$TOT(106)) D SETLN("7. Exp>366 days,reset date,CPRS order# (update CPRS/HDR)"_$$TOT(7)_" "_$$TOT(107)) D SETLN("8. Exp>366 days,reset date,no CPRS order# (update HDR) "_$$TOT(8)_" "_$$TOT(108)) D SETLN(" ") D SETLN("Group 3: RX'S PAST EXPIRATION DATE BUT STILL ACTIVE") D SETLN("---------------------------------------------------") D SETLN("9. CPRS active (update CPRS/HDR) "_$$TOT(9)_" "_$$TOT(109)) D SETLN("10. CPRS DC'd or expired (update HDR) "_$$TOT(10)_" "_$$TOT(110)) D SETLN("11. No CPRS order# (HDR will run own update) "_$$TOT(11)_" "_$$TOT(111)) D SETLN(" ") D SETLN("Group 4: RX's IN DELETED STATUS") D SETLN("-------------------------------") D SETLN("12. No CPRS order# (update HDR) "_$$TOT(12)_" "_$$TOT(112)) D SETLN(" ") D SETLN("OTHER") D SETLN("-----") D SETLN("13. BAD RX's: NO PATIENT,DRUG or ISSUE DT (NO UPDATES): "_$$TOT(13)) D SETLN(" ") D SETLN("14. TOTAL NUMBER OF PRESCRIPTIONS ANALYZED: "_$$TOT(14)) D SETLN(" ") D SETLN("Up-arrow ('^') separated values (patients WITH ICN#):") S EXCEL=PSOINST F J=2:1:14 S EXCEL=EXCEL_"^"_+$G(^XTMP(NMSP,J)) D SETLN(EXCEL) D SETLN(" ") D SETLN("Up-arrow ('^') separated values (patients WITHOUT ICN#):") S EXCEL=PSOINST F J=102:1:112 S EXCEL=EXCEL_"^"_+$G(^XTMP(NMSP,J)) D SETLN(EXCEL_"^"_+$G(^XTMP(NMSP,13))_"^"_+$G(^XTMP(NMSP,14))) D SETLN(" ") D SETLN("Run Log:") D SETLN("------------------------------------------------------------------------------") D SETLN("SEQ DATE/TIME INITIATOR ACTION") D SETLN("------------------------------------------------------------------------------") I '$D(^XTMP(NMSP,"LOG")) D SETLN("No entries.") F J=1:1 Q:'$D(^XTMP(NMSP,"LOG",J)) D . S Z=^XTMP(NMSP,"LOG",J) . S LOGLN=$J(J,3),$E(LOGLN,5)=$$FMTE^XLFDT(+Z,2) . S $E(LOGLN,23)=$E($$GET1^DIQ(200,$P(Z,"^",2),.01),1,25),$E(LOGLN,50)=$P(Z,"^",3) . D SETLN(LOGLN) D SETLN("") Q ; SETLN(TEXT) ; Add a new line to the mailman message text S LINE=$G(LINE)+1,PSOTX(LINE)=TEXT Q ; TOT(FLD) ; returns the field to be displayed Q $J($FNUMBER(+$G(^XTMP(NMSP,FLD)),","),10) ; JOB(ZTDTH) ; Queue the job to run N ZTRTN,ZTIO,ZTDESC,ZTSK,PSODUZ,ZTSAVE S ZTRTN="EN^PSO283PI",ZTIO="" S ZTDESC="Patch PSO*7*283 - Rx Expiration Date problem tally job (run >D ^PSO283PI)" L -^XTMP(NMSP) S PSODUZ=DUZ,ZTSAVE("PSODUZ")="" D ^%ZTLOAD I $D(ZTSK) D . D LOG("QUEUED") . H 2 D MES^XPDUTL("*** Task #"_ZTSK_" Queued! ***") . D BMES^XPDUTL("") . H 1 K XPDQUES Q ; JOBSTS() ; Returns the current job status L +^XTMP(NMSP):0 E Q "R" L -^XTMP(NMSP) I '$D(^XTMP(NMSP,"STARTED")) Q "N" I $G(^XTMP(NMSP,"COMPLETED")) Q "C" Q "S" ; CALCEXP ; CALCULATE THE EXPIRATION DATE N X,%DT,X1,X2,PSOARR,PSDEA,PSOCS,DA,QQ K PSOARR D GETS^DIQ(50,DRUG_",","3","I","PSOARR") S PSDEA=$G(PSOARR(50,DRUG_",",3,"I")) S X1=ISSUEDT,X2=DAYSSUP*(NUMREFS+1)\1 S PSOCS=0 F QQ=1:1 Q:$E(PSDEA,QQ)="" I $E(+PSDEA,QQ)>1,$E(+PSDEA,QQ)<6 D I PSOCS Q . S PSOCS=1 S X2=$S(DAYSSUP=X2:X2,+$G(PSOCS):184,1:366) D C^%DTC S EXPIRDT=$P(X,".") Q ; LOG(COMMENT) ; Running Log N LOGCNT S LOGCNT=+$O(^XTMP(NMSP,"LOG",""),-1)+1 S ^XTMP(NMSP,"LOG",LOGCNT)=$$NOW^XLFDT()_"^"_$S($G(PSODUZ):PSODUZ,1:+$G(DUZ))_"^"_COMMENT Q