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