1 | PSO160P1 ;BIR/BHW-Patch 160 Post Install routine - Part 1 ;11/24/03
|
---|
2 | ;;7.0;OUTPATIENT PHARMACY;**160**;DEC 1997
|
---|
3 | ;
|
---|
4 | EN ;Begin Processing. Entry point for PSO160DR
|
---|
5 | N PSRX,PSRXLDT,PSOTCNT,PSRXPROV,NVAPROV,PSRXDIV,PSORXTPB,PRVPSTAT
|
---|
6 | N NVAPROVE,PSRXDRG,PROVTYPE,PSRXRX,DIE,DR,DA
|
---|
7 | ;
|
---|
8 | ;If Date of Pharmacy Benefit = Inactivation of Benefit Date Don't Process
|
---|
9 | I PSOTDBG="" Q
|
---|
10 | I PSOTDBG=PSOTIBD Q
|
---|
11 | ;
|
---|
12 | S PSOTCNT=0
|
---|
13 | F S PSOTCNT=$O(^PS(55,PSOTDFN,"P",PSOTCNT)) Q:'PSOTCNT D
|
---|
14 | . ;Get Prescription Number
|
---|
15 | . S PSRX=$G(^PS(55,PSOTDFN,"P",PSOTCNT,0)) Q:'$L(PSRX)
|
---|
16 | . S PSRXLDT=$$GET1^DIQ(52,PSRX,21,"I") ;Get LOGIN DATE
|
---|
17 | . S PSRXLDT=$P(PSRXLDT,".",1) Q:'PSRXLDT
|
---|
18 | . ;
|
---|
19 | . ;Determine if Login Date within Benefit Range, If not Don't Process
|
---|
20 | . I (PSRXLDT<PSOTDBG)!((PSOTIBD'="")&(PSRXLDT>PSOTIBD)) Q
|
---|
21 | . ;
|
---|
22 | . ;Get PRESCRIPTION (#52) field TPB (#201), If already set, Don't Process
|
---|
23 | . S PSRXTPB=$$GET1^DIQ(52,PSRX,201,"I") Q:PSRXTPB
|
---|
24 | . ;
|
---|
25 | . ;Get Provider, If not defined OR not an NVA provider, Don't Process
|
---|
26 | . S PSRXPROV=$$GET1^DIQ(52,PSRX,4,"I") Q:'PSRXPROV
|
---|
27 | . S NVAPROV=$$GET1^DIQ(200,PSRXPROV,53.91,"I") Q:'NVAPROV
|
---|
28 | . ;
|
---|
29 | . ;Get Previous PATIENT STATUS (#3) prior to setting to NON-VA
|
---|
30 | . S PRVPSTAT=$$GET1^DIQ(52,PSRX,3)
|
---|
31 | . ;
|
---|
32 | . ;**********************************************************************
|
---|
33 | . ;Set TPB (#201) ="YES" & PATIENT STATUS (#3) = NON-VA in PRESCRIPTION (#52)
|
---|
34 | . S DIE="^PSRX(",DA=PSRX,DR="201///YES"
|
---|
35 | . S:$G(PATSTATC)'="" DR=DR_";3///"_PATSTATC
|
---|
36 | . D ^DIE K DIE,DA,DR
|
---|
37 | . ;
|
---|
38 | . ;If Unique TPB Clinic, Reset RX CLINIC to that clinic (Save Previous value)
|
---|
39 | . I TPBCL S DIE="^PSRX(",DA=PSRX,DR="5///"_TPBCLE D ^DIE K DIE,DA,DR
|
---|
40 | . ;
|
---|
41 | . ;**********************************************************************
|
---|
42 | . ;
|
---|
43 | . ;Get display fields and Set Temporary DB for E-mail Report
|
---|
44 | . S TPBCLP=$$GET1^DIQ(52,PSRX,5) ;Get Clinic
|
---|
45 | . S PSRXDRG=$$GET1^DIQ(52,PSRX,6) ;Get Drug (External Form)
|
---|
46 | . S PSRXRX=$$GET1^DIQ(52,PSRX,.01) ;Get Rx Number (External Form)
|
---|
47 | . I '$L(PSRXRX) S PSRXRX=PSRX
|
---|
48 | . S NVAPROVE=$$GET1^DIQ(200,PSRXPROV,.01) ;Get Provider Name (External Form)
|
---|
49 | . S PROVTYPE=$$GET1^DIQ(200,PSRXPROV,53.6) ;Get Provider type (External Form)
|
---|
50 | . S PSRXDIV=$$GET1^DIQ(52,PSRX,20) ;Get Division (External Form)
|
---|
51 | . I '$L(PSRXDIV) S PSRXDIV="Unknown Division"
|
---|
52 | . I $L(PROVTYPE) S NVAPROVE="*"_NVAPROVE
|
---|
53 | . ;
|
---|
54 | . ;Create Temporary global for E-mail Message
|
---|
55 | . S TEMP=PATSSN_U_PSRXDRG_U_NVAPROVE_U_TPBCLP_U_TPBCLE_U_PRVPSTAT_U_"NON-VA"_U_TPBCL
|
---|
56 | . S ^XTMP("PSO160P1",$J,"T",PSRXDIV,PATNAM,PSRXRX)=TEMP
|
---|
57 | . Q
|
---|
58 | Q
|
---|
59 | ;
|
---|
60 | ;======================================================================
|
---|
61 | ;Loop Temporary Global and Format for E-mail
|
---|
62 | MAIL ;
|
---|
63 | N PSRXDIV,PATNAM,PSRXRX,PSRXDRG,PATSSN,NVAPROVE,EMCNT,PATCNT,RXCNT,DASH
|
---|
64 | N DIVFLAG,PNAM,RXSTS,TEMP,TPBRX,RX,L,DATA,PATSSNL
|
---|
65 | S (PSRXDIV,PATNAM,PSRXRX,PSRXDRG,PATSSN,NVAPROVE)="",EMCNT=1
|
---|
66 | S (PATCNT,RXCNT,DIVFLAG,PATSSNL)=0,$P(DASH,"-",80)=""
|
---|
67 | ;
|
---|
68 | ;Create Header for Mail Report
|
---|
69 | D STORELN("The Post-Install process for PSO*7*160 - Part 1 successfully completed.")
|
---|
70 | D STORELN(" ")
|
---|
71 | D STORELN("Started on: "_$$FMTE^XLFDT($G(^XTMP("PSO160DR",$J,"START"))))
|
---|
72 | D STORELN("Finished on: "_$$FMTE^XLFDT($G(^XTMP("PSO160DR",$J,"FINISH"))))
|
---|
73 | D STORELN(" ")
|
---|
74 | ;
|
---|
75 | ;If no entries created above, skip reporting
|
---|
76 | I '$L($O(^XTMP("PSO160P1",$J,"T",""))) D G SEND
|
---|
77 | . D STORELN("No prescriptions have been marked as TPB (Transitional Pharmacy).")
|
---|
78 | . Q
|
---|
79 | ;
|
---|
80 | D STORELN("The following Prescriptions have been marked as TPB (Transitional Pharmacy")
|
---|
81 | D STORELN("Benefits) prescription by the post-install process.")
|
---|
82 | D STORELN(" ")
|
---|
83 | ;
|
---|
84 | F S PSRXDIV=$O(^XTMP("PSO160P1",$J,"T",PSRXDIV)) Q:'$L(PSRXDIV) D
|
---|
85 | . ;Check if Division Changed
|
---|
86 | . I DIVFLAG'=PSRXDIV D
|
---|
87 | . . ;Print Sub-Header
|
---|
88 | . . D STORELN("DIVISION: "_PSRXDIV)
|
---|
89 | . . D STORELN(DASH)
|
---|
90 | . . D STORELN($E("Patient Name (LAST4SSN)"_SP,1,25)_$E("Rx#"_SP,1,10)_$E("DRUG"_SP,1,24)_$E("PROVIDER"_SP,1,20))
|
---|
91 | . . D STORELN(DASH)
|
---|
92 | . . Q
|
---|
93 | . E S DIVFLAG=PSRXDIV
|
---|
94 | . ;
|
---|
95 | . S PATNAM=""
|
---|
96 | . F S PATNAM=$O(^XTMP("PSO160P1",$J,"T",PSRXDIV,PATNAM)) Q:'$L(PATNAM) D
|
---|
97 | . . S PSRXRX="",PATCNT=PATCNT+1
|
---|
98 | . . ;
|
---|
99 | . . F S PSRXRX=$O(^XTMP("PSO160P1",$J,"T",PSRXDIV,PATNAM,PSRXRX)) Q:'$L(PSRXRX) D
|
---|
100 | . . . S DATA=$G(^XTMP("PSO160P1",$J,"T",PSRXDIV,PATNAM,PSRXRX))
|
---|
101 | . . . S PATSSN=$P(DATA,U,1),PSRXDRG=$P(DATA,U,2),NVAPROVE=$P(DATA,U,3),TPBCLP=$P(DATA,U,4)
|
---|
102 | . . . S TPBCLE=$P(DATA,U,5),PRVPSTAT=$P(DATA,U,6),PATSTAT=$P(DATA,U,7),TPBCL=$P(DATA,U,8)
|
---|
103 | . . . ;Line 1
|
---|
104 | . . . S TEMP="",RXCNT=RXCNT+1
|
---|
105 | . . . S TEMP=$E(PATNAM_SP,1,20)
|
---|
106 | . . . S TEMP=$E($E(PATNAM,1,16)_" ("_$E(PATSSN,1,5)_")"_$E(SP,1,6-PATSSNL)_SP,1,25)
|
---|
107 | . . . S TEMP=TEMP_$E(PSRXRX_SP,1,11)
|
---|
108 | . . . S TEMP=TEMP_$E(PSRXDRG_SP,1,22)_" "
|
---|
109 | . . . S TEMP=TEMP_$E(NVAPROVE_SP,1,20)
|
---|
110 | . . . D STORELN(TEMP)
|
---|
111 | . . . ;Line 2 (clinic Line)
|
---|
112 | . . . S TEMP=$E(SP,1,25)
|
---|
113 | . . . I (TPBCLP'=TPBCLE)&(TPBCL) S TEMP=TEMP_"Clinic: Old: "_$E(TPBCLP,1,16)_" New: "_$E(TPBCLE,1,17)
|
---|
114 | . . . E S TEMP=TEMP_"Clinic: "_$E(TPBCLP,1,46)
|
---|
115 | . . . D STORELN(TEMP)
|
---|
116 | . . . ;Line 3 (Patient status line)
|
---|
117 | . . . S TEMP=$E(SP,1,25)
|
---|
118 | . . . I PRVPSTAT'=PATSTAT S TEMP=TEMP_"Rx Patient Status: Old: "_$E(PRVPSTAT,1,17)_" New: "_$E(PATSTAT_SP,1,7)
|
---|
119 | . . . E S TEMP=TEMP_"Rx Patient Status: "_$E(PATSTAT_SP,1,25)
|
---|
120 | . . . D STORELN(TEMP)
|
---|
121 | . . . D STORELN(" ")
|
---|
122 | . . . Q
|
---|
123 | . . Q
|
---|
124 | . ;Print Totals only if End of Division
|
---|
125 | . D STORELN("Total: "_PATCNT_" Patients and "_RXCNT_" Prescriptions")
|
---|
126 | . D STORELN(" ")
|
---|
127 | . D STORELN("* Non-VA Provider has a PROVIDER TYPE")
|
---|
128 | . S (PATCNT,RXCNT)=0
|
---|
129 | . Q
|
---|
130 | ;======================================================================
|
---|
131 | SEND ;Send Completion E-mail.
|
---|
132 | N DIFROM
|
---|
133 | ;
|
---|
134 | ;Setup Mailman Variables
|
---|
135 | S XMSUB="PSO*7*160 - LIST OF PRESCRIPTIONS MARKED AS TPB"
|
---|
136 | S XMDUZ="Patch PSO*7*160" D SXMY^PSOTPCUL("PSO TPB GROUP")
|
---|
137 | S XMY(DUZ)="",XMTEXT="^XTMP(""PSO160P1"","_$J_",""M"","
|
---|
138 | ;
|
---|
139 | ;Send E-mail
|
---|
140 | D ^XMD
|
---|
141 | K XMTEXT,XMSUB,XMDUZ,XMY
|
---|
142 | S:$D(ZTQUEUED) ZTREQ="@"
|
---|
143 | Q
|
---|
144 | ;
|
---|
145 | ;======================================================================
|
---|
146 | ;Store E-mail line in "M" subscript.
|
---|
147 | STORELN(LINE) ;
|
---|
148 | S EMCNT=EMCNT+1
|
---|
149 | S ^XTMP("PSO160P1",$J,"M",EMCNT)=LINE
|
---|
150 | Q
|
---|