1 | PSO283P1 ;BIR/MFR-EXPIRATION DATE PROBLEM TALLY (Cont.) ;05/03/07
|
---|
2 | ;;7.0;OUTPATIENT PHARMACY;**283**;DEC 1997;Build 28
|
---|
3 | ;External reference to ^PS(59.7 is supported by DBIA 694
|
---|
4 | ;
|
---|
5 | MAIL ;
|
---|
6 | N PSOTX,XMY,XMDUZ,XMSUB,XMTEXT,DIFROM
|
---|
7 | S XMY($S($G(PSODUZ):PSODUZ,1:+$G(DUZ)))=""
|
---|
8 | S XMDUZ=.5
|
---|
9 | S XMSUB="Patch PSO*7*283 - Rx EXPIRATION DATE PROBLEM TALLY"
|
---|
10 | S XMY("RUZBACKI.RON@FORUM.VA.GOV")=""
|
---|
11 | S XMY("ANWER.MOHAMED@FORUM.VA.GOV")=""
|
---|
12 | S XMY("WILLIAMSON.ERIC@FORUM.VA.GOV")=""
|
---|
13 | S XMY("WILLETTE.CANDY@FORUM.VA.GOV")=""
|
---|
14 | S XMY("ROCHA.MARCELO@FORUM.VA.GOV")=""
|
---|
15 | S XMY("BARRON.LUANNE@FORUM.VA.GOV")=""
|
---|
16 | S XMY("JONES.TRES@FORUM.VA.GOV")=""
|
---|
17 | D SETTXT
|
---|
18 | ;
|
---|
19 | S XMTEXT="PSOTX(" D ^XMD
|
---|
20 | Q
|
---|
21 | ;
|
---|
22 | DISPLAY ; Displays the current results
|
---|
23 | N PSOINST,J,DIR,PSOTX,DIR
|
---|
24 | S PSOINST=$P($$SITE^VASITE(),"^",2)_" ("_+$$SITE^VASITE()_")"
|
---|
25 | D SETTXT W !
|
---|
26 | F J=1:1 Q:'$D(PSOTX(J)) D
|
---|
27 | . W !,PSOTX(J)
|
---|
28 | . I '(J#19) K DIR S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR
|
---|
29 | Q
|
---|
30 | ;
|
---|
31 | SETTXT ; Set the PSOTXT array with the Mailman message or screen display
|
---|
32 | N EXCEL,J,Z,LINE,JOBSTS,STS,LOGLN,NMSP
|
---|
33 | S LINE=0,NMSP="PSO283PI"
|
---|
34 | D SETLN("Expiration Date problem tally patch for Outpatient Pharmacy prescriptions")
|
---|
35 | D SETLN("=========================================================================")
|
---|
36 | S JOBSTS=$$JOBSTS()
|
---|
37 | S:JOBSTS="N" STS="NEVER RUN"
|
---|
38 | S:JOBSTS="S" STS="STOPPED ON "_$$FMTE^XLFDT($G(^XTMP(NMSP,"STOPPED")))
|
---|
39 | S:JOBSTS="R" STS="RUNNING"
|
---|
40 | S:JOBSTS="C" STS="COMPLETED ON "_$$FMTE^XLFDT($G(^XTMP(NMSP,"COMPLETED")))
|
---|
41 | S:$G(^XTMP(NMSP,"LASTRX")) STS=STS_" (Last Rx IEN: "_$G(^XTMP(NMSP,"LASTRX"))_")"
|
---|
42 | D SETLN("Current status: "_STS)
|
---|
43 | D SETLN(" ")
|
---|
44 | D SETLN("1. Institution : "_PSOINST)
|
---|
45 | D SETLN(" PATIENTS")
|
---|
46 | D SETLN("Group 1: RX'S WITH NO EXPIRATION DATE WITH ICN# W/NO ICN#")
|
---|
47 | D SETLN("------------------------------------- ---------- ----------")
|
---|
48 | D SETLN("2. Calc exp date > CUTOFF (update HDR) "_$$TOT(2)_" "_$$TOT(102))
|
---|
49 | D SETLN("3. Calc exp date < CUTOFF,CPRS active (update HDR/CPRS) "_$$TOT(3)_" "_$$TOT(103))
|
---|
50 | D SETLN("4. Calc exp date < CUTOFF,CPRS non-active (update HDR) "_$$TOT(4)_" "_$$TOT(104))
|
---|
51 | D SETLN("5. No CPRS order# (Update HDR) "_$$TOT(5)_" "_$$TOT(105))
|
---|
52 | D SETLN(" ")
|
---|
53 | D SETLN("Group 2: RX'S IN EXPIRED STATUS")
|
---|
54 | D SETLN("-------------------------------")
|
---|
55 | D SETLN("6. CPRS active (update CPRS/HDR) "_$$TOT(6)_" "_$$TOT(106))
|
---|
56 | D SETLN("7. Exp>366 days,reset date,CPRS order# (update CPRS/HDR)"_$$TOT(7)_" "_$$TOT(107))
|
---|
57 | D SETLN("8. Exp>366 days,reset date,no CPRS order# (update HDR) "_$$TOT(8)_" "_$$TOT(108))
|
---|
58 | D SETLN(" ")
|
---|
59 | D SETLN("Group 3: RX'S PAST EXPIRATION DATE BUT STILL ACTIVE")
|
---|
60 | D SETLN("---------------------------------------------------")
|
---|
61 | D SETLN("9. CPRS active (update CPRS/HDR) "_$$TOT(9)_" "_$$TOT(109))
|
---|
62 | D SETLN("10. CPRS DC'd or expired (update HDR) "_$$TOT(10)_" "_$$TOT(110))
|
---|
63 | D SETLN("11. No CPRS order# (HDR will run own update) "_$$TOT(11)_" "_$$TOT(111))
|
---|
64 | D SETLN(" ")
|
---|
65 | D SETLN("Group 4: RX's IN DELETED STATUS")
|
---|
66 | D SETLN("-------------------------------")
|
---|
67 | D SETLN("12. No CPRS order# (update HDR) "_$$TOT(12)_" "_$$TOT(112))
|
---|
68 | D SETLN(" ")
|
---|
69 | D SETLN("OTHER")
|
---|
70 | D SETLN("-----")
|
---|
71 | D SETLN("13. BAD RX's: NO PATIENT,DRUG or ISSUE DT (NO UPDATES): "_$$TOT(13))
|
---|
72 | D SETLN(" ")
|
---|
73 | D SETLN("14. TOTAL NUMBER OF PRESCRIPTIONS ANALYZED: "_$$TOT(14))
|
---|
74 | D SETLN(" ")
|
---|
75 | D SETLN("Up-arrow ('^') separated values (patients WITH ICN#):")
|
---|
76 | S EXCEL=PSOINST F J=2:1:14 S EXCEL=EXCEL_"^"_+$G(^XTMP(NMSP,J))
|
---|
77 | D SETLN(EXCEL)
|
---|
78 | D SETLN(" ")
|
---|
79 | D SETLN("Up-arrow ('^') separated values (patients WITHOUT ICN#):")
|
---|
80 | S EXCEL=PSOINST F J=102:1:112 S EXCEL=EXCEL_"^"_+$G(^XTMP(NMSP,J))
|
---|
81 | D SETLN(EXCEL_"^"_+$G(^XTMP(NMSP,13))_"^"_+$G(^XTMP(NMSP,14)))
|
---|
82 | D SETLN(" ")
|
---|
83 | D SETLN("Run Log:")
|
---|
84 | D SETLN("------------------------------------------------------------------------------")
|
---|
85 | D SETLN("SEQ DATE/TIME INITIATOR ACTION")
|
---|
86 | D SETLN("------------------------------------------------------------------------------")
|
---|
87 | I '$D(^XTMP(NMSP,"LOG")) D SETLN("No entries.")
|
---|
88 | F J=1:1 Q:'$D(^XTMP(NMSP,"LOG",J)) D
|
---|
89 | . S Z=^XTMP(NMSP,"LOG",J)
|
---|
90 | . S LOGLN=$J(J,3),$E(LOGLN,5)=$$FMTE^XLFDT(+Z,2)
|
---|
91 | . S $E(LOGLN,23)=$E($$GET1^DIQ(200,$P(Z,"^",2),.01),1,25),$E(LOGLN,50)=$P(Z,"^",3)
|
---|
92 | . D SETLN(LOGLN)
|
---|
93 | D SETLN("<END>")
|
---|
94 | Q
|
---|
95 | ;
|
---|
96 | SETLN(TEXT) ; Add a new line to the mailman message text
|
---|
97 | S LINE=$G(LINE)+1,PSOTX(LINE)=TEXT
|
---|
98 | Q
|
---|
99 | ;
|
---|
100 | TOT(FLD) ; returns the field to be displayed
|
---|
101 | Q $J($FNUMBER(+$G(^XTMP(NMSP,FLD)),","),10)
|
---|
102 | ;
|
---|
103 | JOB(ZTDTH) ; Queue the job to run
|
---|
104 | N ZTRTN,ZTIO,ZTDESC,ZTSK,PSODUZ,ZTSAVE
|
---|
105 | S ZTRTN="EN^PSO283PI",ZTIO=""
|
---|
106 | S ZTDESC="Patch PSO*7*283 - Rx Expiration Date problem tally job (run >D ^PSO283PI)"
|
---|
107 | L -^XTMP(NMSP)
|
---|
108 | S PSODUZ=DUZ,ZTSAVE("PSODUZ")=""
|
---|
109 | D ^%ZTLOAD
|
---|
110 | I $D(ZTSK) D
|
---|
111 | . D LOG("QUEUED")
|
---|
112 | . H 2 D MES^XPDUTL("*** Task #"_ZTSK_" Queued! ***")
|
---|
113 | . D BMES^XPDUTL("")
|
---|
114 | . H 1
|
---|
115 | K XPDQUES
|
---|
116 | Q
|
---|
117 | ;
|
---|
118 | JOBSTS() ; Returns the current job status
|
---|
119 | L +^XTMP(NMSP):0 E Q "R"
|
---|
120 | L -^XTMP(NMSP)
|
---|
121 | I '$D(^XTMP(NMSP,"STARTED")) Q "N"
|
---|
122 | I $G(^XTMP(NMSP,"COMPLETED")) Q "C"
|
---|
123 | Q "S"
|
---|
124 | ;
|
---|
125 | CALCEXP ; CALCULATE THE EXPIRATION DATE
|
---|
126 | N X,%DT,X1,X2,PSOARR,PSDEA,PSOCS,DA,QQ
|
---|
127 | K PSOARR D GETS^DIQ(50,DRUG_",","3","I","PSOARR")
|
---|
128 | S PSDEA=$G(PSOARR(50,DRUG_",",3,"I"))
|
---|
129 | S X1=ISSUEDT,X2=DAYSSUP*(NUMREFS+1)\1
|
---|
130 | S PSOCS=0
|
---|
131 | F QQ=1:1 Q:$E(PSDEA,QQ)="" I $E(+PSDEA,QQ)>1,$E(+PSDEA,QQ)<6 D I PSOCS Q
|
---|
132 | . S PSOCS=1
|
---|
133 | S X2=$S(DAYSSUP=X2:X2,+$G(PSOCS):184,1:366)
|
---|
134 | D C^%DTC S EXPIRDT=$P(X,".")
|
---|
135 | Q
|
---|
136 | ;
|
---|
137 | LOG(COMMENT) ; Running Log
|
---|
138 | N LOGCNT
|
---|
139 | S LOGCNT=+$O(^XTMP(NMSP,"LOG",""),-1)+1
|
---|
140 | S ^XTMP(NMSP,"LOG",LOGCNT)=$$NOW^XLFDT()_"^"_$S($G(PSODUZ):PSODUZ,1:+$G(DUZ))_"^"_COMMENT
|
---|
141 | Q
|
---|