| [613] | 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 | 
|---|