| 1 | PSOPOS13 ;BIR/VRN - Post install routine ;2/29/04 | 
|---|
| 2 | ;;7.0;OUTPATIENT PHARMACY;**167**;DEC 1997 | 
|---|
| 3 | ;External reference to ^DPT supported by DBIA 10035 | 
|---|
| 4 | ; | 
|---|
| 5 | ; POST-INSTALL ROUTINE TO RESET "CMP" XREF TO CORRECT DIVISION FILE 52.5 | 
|---|
| 6 | ; | 
|---|
| 7 | ENV ; | 
|---|
| 8 | ;Verify CMOP Transmissions are shut down | 
|---|
| 9 | K TSK,TSKNAM | 
|---|
| 10 | F TSKNAM="PSXR SCHEDULED CS TRANS","PSXR SCHEDULED NON-CS TRANS" K TSK D  I $G(TSK(1)) Q | 
|---|
| 11 | . D OPTSTAT^XUTMOPT(TSKNAM,.TSK) | 
|---|
| 12 | . Q | 
|---|
| 13 | I $G(TSK(1)) D  Q | 
|---|
| 14 | . W !!,"Cannot install the patch while the following Tasks are scheduled:" | 
|---|
| 15 | . W !,"1. PSXR SCHEDULED CS TRANS" | 
|---|
| 16 | . W !,"2. PSXR SCHEDULED NON-CS TRANS" | 
|---|
| 17 | . W !!,"Install Aborted!" | 
|---|
| 18 | . S XPDABORT=2 | 
|---|
| 19 | . Q | 
|---|
| 20 | ;Ask queue date and time | 
|---|
| 21 | Q:'$G(XPDENV) | 
|---|
| 22 | W ! K %DT D NOW^%DTC S %DT="RAEX",%DT(0)=%,%DT("A")="Queue the Post-Install to run at what Date@Time: " | 
|---|
| 23 | D ^%DT K %DT I $D(DTOUT)!(Y<0) W !!,"Cannot install the patch without queuing the post-install, install aborted!",! S XPDABORT=2 Q | 
|---|
| 24 | S @XPDGREF@("PSOQ13")=Y | 
|---|
| 25 | Q | 
|---|
| 26 | ; | 
|---|
| 27 | EN ; | 
|---|
| 28 | S ZTDTH=@XPDGREF@("PSOQ13") | 
|---|
| 29 | S ZTRTN="START^PSOPOS13",ZTDESC="Background job for to search for invalid division XREF in file 52.5",ZTIO="" | 
|---|
| 30 | D ^%ZTLOAD K ZTDTH,ZTRTN,ZTIO,ZTDESC | 
|---|
| 31 | I $D(ZTSK)&('$D(ZTQUEUED)) D BMES^XPDUTL("Task "_ZTSK_" Queued!") | 
|---|
| 32 | Q | 
|---|
| 33 | ; | 
|---|
| 34 | START ; | 
|---|
| 35 | K ^XTMP("PSOPOS13",$J) | 
|---|
| 36 | L +^XTMP("PSOPOS13"):0 I '$T S:$D(ZTQUEUED) ZTREQ="@" Q | 
|---|
| 37 | I '$G(DT) S DT=$$DT^XLFDT | 
|---|
| 38 | I '$D(^XTMP("PSOPOS13")) S X1=DT,X2=+90 D C^%DTC S ^XTMP("PSOPOS13",0)=$G(X)_"^"_DT | 
|---|
| 39 | S X1=DT,X2=-180 D C^%DTC S PSODT2=X | 
|---|
| 40 | D NOW^%DTC S ^XTMP("PSOPOS13","PSOTIMEX","START")=% | 
|---|
| 41 | D BMES^XPDUTL("Re-indexing ""CMP"" XREFs... Sending Mailman message upon completion.") | 
|---|
| 42 | SRCH ; SEARCH THROUGH "CMP" XREF | 
|---|
| 43 | N PSODIV,PSOC7 | 
|---|
| 44 | S PSOSTA="" F  S PSOSTA=$O(^PS(52.5,"CMP",PSOSTA)) Q:PSOSTA=""  D | 
|---|
| 45 | .S PSODEA="" F  S PSODEA=$O(^PS(52.5,"CMP",PSOSTA,PSODEA)) Q:PSODEA=""  D | 
|---|
| 46 | ..S PSODV=0 F  S PSODV=$O(^PS(52.5,"CMP",PSOSTA,PSODEA,PSODV)) Q:'PSODV  D | 
|---|
| 47 | ...S PSODT=(PSODT2-.001) F  S PSODT=$O(^PS(52.5,"CMP",PSOSTA,PSODEA,PSODV,PSODT)) Q:'PSODT  D | 
|---|
| 48 | ....S PSODFN="" F  S PSODFN=$O(^PS(52.5,"CMP",PSOSTA,PSODEA,PSODV,PSODT,PSODFN)) Q:PSODFN=""  D | 
|---|
| 49 | .....S PSOIEN="" F  S PSOIEN=$O(^PS(52.5,"CMP",PSOSTA,PSODEA,PSODV,PSODT,PSODFN,PSOIEN)) Q:PSOIEN=""  D | 
|---|
| 50 | ......I '$G(^PS(52.5,PSOIEN,0)) K ^PS(52.5,"CMP",PSOSTA,PSODEA,PSODV,PSODT,PSODFN,PSOIEN) Q | 
|---|
| 51 | ......Q:PSODV=$P(^PS(52.5,PSOIEN,0),"^",6) | 
|---|
| 52 | ......S ^XTMP("PSOPOS13",$J,PSODFN,PSODT,PSODV,PSOIEN)=PSOSTA_"^"_PSODT | 
|---|
| 53 | ......K ^PS(52.5,"CMP",PSOSTA,PSODEA,PSODV,PSODT,PSODFN,PSOIEN) | 
|---|
| 54 | ......S PSOC7=$P(^PS(52.5,PSOIEN,0),"^",7) | 
|---|
| 55 | ......I PSOC7'="" D SCMPX^PSOCMOP(PSOIEN,PSOC7) | 
|---|
| 56 | L -^XTMP("PSOPOS13") | 
|---|
| 57 | D GETLIST | 
|---|
| 58 | MAIL ; | 
|---|
| 59 | N CNT,TEXT,XMTEXT | 
|---|
| 60 | D NOW^%DTC S PSOTIMEB=% | 
|---|
| 61 | S Y=$G(^XTMP("PSOPOS13","PSOTIMEX","START")) D DD^%DT S PSOTIMEA=Y | 
|---|
| 62 | S Y=$G(PSOTIMEB) D DD^%DT S PSOTIMEB=Y | 
|---|
| 63 | S XMDUZ="Patch PSO*7*167",XMY(DUZ)="",XMSUB="PRESCRIPTION SUSPENSE File (#52.5) reset ""CMP"" Xref" | 
|---|
| 64 | K SP | 
|---|
| 65 | S $P(SP," ",71)="",LINE=0 | 
|---|
| 66 | D SETLN("Patch PSO*7*167 File (#52.5) ""CMP"" Xref clean-up is complete.") | 
|---|
| 67 | D SETLN(" ") | 
|---|
| 68 | D SETLN("It started on "_$G(PSOTIMEA)_".") | 
|---|
| 69 | D SETLN("It ended on "_$G(PSOTIMEB)_".") | 
|---|
| 70 | D SETLN(" ") | 
|---|
| 71 | D SETLN("""CMP"" CROSS-REFERENCES THAT WERE REINDEXED") | 
|---|
| 72 | S HDR="RX #",$E(HDR,18)="PATIENT NAME",$E(HDR,46)="CMOP STATUS",$E(HDR,59)="SUSPENSE DATE" | 
|---|
| 73 | D SETLN(HDR) | 
|---|
| 74 | D SETLN(" ") | 
|---|
| 75 | S CNT=0 | 
|---|
| 76 | S NAM="" F  S NAM=$O(^TMP($J,"PSOPOS14",NAM)) Q:NAM=""  D | 
|---|
| 77 | .S DFN="" F  S DFN=$O(^TMP($J,"PSOPOS14",NAM,DFN)) Q:DFN=""  D | 
|---|
| 78 | ..D PID^VADPT | 
|---|
| 79 | ..S PSOCQ="" | 
|---|
| 80 | ..F  S PSOCQ=$O(^TMP($J,"PSOPOS14",NAM,DFN,PSOCQ)) Q:PSOCQ=""  D | 
|---|
| 81 | ...S (PSORX,PSOPOS14,PSOSTAT,PSOSDT)="" | 
|---|
| 82 | ...F  S PSORX=$O(^TMP($J,"PSOPOS14",NAM,DFN,PSOCQ,PSORX)) Q:PSORX=""  D | 
|---|
| 83 | ....S PSOPOS14=^TMP($J,"PSOPOS14",NAM,DFN,PSOCQ,PSORX) | 
|---|
| 84 | ....S PSOSTAT=$P(PSOPOS14,"^",1) | 
|---|
| 85 | ....S Y=$P(PSOPOS14,"^",2) D DD^%DT | 
|---|
| 86 | ....S PSOSDT=Y | 
|---|
| 87 | ....S TEXT="" | 
|---|
| 88 | ....S $E(TEXT,1,17)=$E(PSORX_SP,1,12) | 
|---|
| 89 | ....S $E(TEXT,18,45)=$E($P($G(^DPT(DFN,0)),"^",1)_SP,1,20) | 
|---|
| 90 | ....S $E(TEXT,46,58)=$E(PSOSTAT_SP,1,11) | 
|---|
| 91 | ....S $E(TEXT,59,70)=$E(PSOSDT_SP,1,20) | 
|---|
| 92 | ....D SETLN(TEXT) S CNT=CNT+1 | 
|---|
| 93 | ; | 
|---|
| 94 | I CNT=0 D SETLN("No invalid Division Cross References") | 
|---|
| 95 | D SETLN(" ") | 
|---|
| 96 | D SETLN("**  END OF LIST **") | 
|---|
| 97 | ; | 
|---|
| 98 | S XMTEXT="^XTMP(""PSOPOS15"",$J,""M""," N DIFROM D ^XMD | 
|---|
| 99 | K PSOTIMEA,PSOTIMEB,XMDUZ,XMSUB,XMTEXT,PSODT2,PSOJOB,^TMP($J,"PSOPOS14"),^XTMP("PSOPOS15",$J,"M") | 
|---|
| 100 | K PSOPOS14,PSOSTAT,PSOSDT,CNT,DFN,MSG,NAM,PSODT,PSOSQ,PSOSQ1,PSOTXT | 
|---|
| 101 | S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
| 102 | Q | 
|---|
| 103 | ; | 
|---|
| 104 | SETLN(TXT)        ; Sets a line in the XTMP global for the Mailman Message | 
|---|
| 105 | S LINE=$G(LINE)+1 | 
|---|
| 106 | S ^XTMP("PSOPOS15",$J,"M",LINE)=TXT | 
|---|
| 107 | Q | 
|---|
| 108 | ; | 
|---|
| 109 | GETLIST ; | 
|---|
| 110 | K ^TMP($J,"PSOPOS14") | 
|---|
| 111 | S PSOJOB="" F  S PSOJOB=$O(^XTMP("PSOPOS13",PSOJOB)) Q:PSOJOB=""  D | 
|---|
| 112 | .S PSOSQ="" F  S PSOSQ=$O(^XTMP("PSOPOS13",PSOJOB,PSOSQ)) Q:PSOSQ=""  D | 
|---|
| 113 | ..S NAM=$P($G(^DPT(PSOSQ,0)),"^",1) I NAM="" S NAM="UNKNOWN" | 
|---|
| 114 | ..S PSOSQ1="" F  S PSOSQ1=$O(^XTMP("PSOPOS13",PSOJOB,PSOSQ,PSOSQ1)) Q:PSOSQ1=""  D | 
|---|
| 115 | ...S PSODIV1="" F  S PSODIV1=$O(^XTMP("PSOPOS13",PSOJOB,PSOSQ,PSOSQ1,PSODIV1)) Q:PSODIV1=""  D | 
|---|
| 116 | ....S PSORX="" F  S PSORX=$O(^XTMP("PSOPOS13",PSOJOB,PSOSQ,PSOSQ1,PSODIV1,PSORX)) Q:PSORX=""  D | 
|---|
| 117 | .....Q:'$D(^PS(52.5,PSORX,0)) | 
|---|
| 118 | .....S PSORX1=$P(^PS(52.5,PSORX,0),"^",1) | 
|---|
| 119 | .....I PSORX1'="" S PSORXP=$P($G(^PSRX(PSORX1,0)),"^",1) | 
|---|
| 120 | .....I PSORXP'="" S ^TMP($J,"PSOPOS14",NAM,PSOSQ,"CMP",PSORXP)=^XTMP("PSOPOS13",PSOJOB,PSOSQ,PSOSQ1,PSODIV1,PSORX) | 
|---|
| 121 | Q | 
|---|
| 122 | ; | 
|---|