| 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 | ;
|
---|