PSOTPPOS ;BIR/RTR-Patch 145 Post Install routine ;07/27/03
;;7.0;OUTPATIENT PHARMACY;**145**;DEC 1997
;Reference to SDPHARM supported by DBIA 4193
;Reference to SDPBE supported by DBIA 4194
;Reference to DIC(19 supported by DBIA 2246
;Reference to DIC(4 supported by DBIA 2251
;
G FILE
N PSOTPLLZ,PSOTPFLG
S PSOTPFLG=0
S PSOTPLLZ="" F S PSOTPLLZ=$O(^PS(53,"B","NON-VA",PSOTPLLZ)) Q:PSOTPLLZ="" D
.I $P($G(^PS(53,PSOTPLLZ,0)),"^")="NON-VA" S $P(^(0),"^",6)=5,PSOTPFLG=PSOTPFLG+1
I '$G(PSOTPFLG) D BMES^XPDUTL("Could not find a NON-VA entry in the RX PATIENT STATUS file.") D MES^XPDUTL("Please contact National Vista Support!")
I $G(PSOTPFLG)>1 D BMES^XPDUTL("Found multiple entries of NON-VA in the RX PATIENT STATUS file.") D MES^XPDUTL("Please contact National Vista Support!")
;
FILE ;Populate TPB file
;N VARIABLE
;S ZTDTH=""
;I $D(ZTQUEUED) S ZTDTH=$H
L +^XTMP("SDPSO145"):0 I '$T D Q
.D BMES^XPDUTL("Post-Init for patch PSO*7*145 is already running. Halting..")
;I ZTDTH="" D
;.D BMES^XPDUTL("Auto-Populate TPB ELIGIBILITY (#52.91) File.")
;.D BMES^XPDUTL("If no start date/time is entered when prompted, the background job will ")
;.D MES^XPDUTL("be queued to run NOW.")
;.D GETDATE
;.D BMES^XPDUTL("Queuing background job to populate TPB ELIGIBILITY (#52.91) File.")
;S ZTDTH=@XPDGREF@("PSOPINIT")
I '$G(^XTMP("SDPSO145","PSOTINIT")) D BMES^XPDUTL("Install aborted, cannot determine post-install task time..") Q
S ZTDTH=$G(^XTMP("SDPSO145","PSOTINIT")) L -^XTMP("SDPSO145")
S ZTRTN="START^PSOTPPOS",ZTIO="",ZTDESC="Populate TPB ELIGIBILITY FILE" D ^%ZTLOAD K ZTDTH,ZTRTN,ZTIO,ZTDESC
I $D(ZTSK)&('$D(ZTQUEUED)) D BMES^XPDUTL("Task Queued!")
Q
START ;Build TPC Eligibility file
I '$G(DT) S DT=$$DT^XLFDT
S U="^"
N PSOACTRX,PSOENRLD,PSOLPQT,PSONODAD,PSOTG1,PSOTG2,PSOTG3,PSOETOT,PSOITOT,PSOTLOCK,PSOTPSNM,PSOSTATI
S (PSOETOT,PSOITOT)=0
S PSOTLOCK=0
L +^XTMP("SDPSO145"):0 I '$T S PSOTLOCK=1 D MAIL S:$D(ZTQUEUED) ZTREQ="@" Q
K ^XTMP("SDPSO145")
S X1=DT,X2=+60 D C^%DTC S ^XTMP("SDPSO145",0)=$G(X)_"^"_DT K X1,X2
D NOW^%DTC S Y=% D DD^%DT S ^XTMP("SDPSO145","START")=$G(Y)
D ^SDPHARM
D ^SDPBE
I '$D(^XTMP("SDPSO145","PAT")) G PASS
S PSOTG1="" F S PSOTG1=$O(^XTMP("SDPSO145","PAT","E",PSOTG1)) Q:PSOTG1="" D
.I $D(^PS(52.91,PSOTG1,0)) Q ;Multiple Installs check
.S PSOLPQT=0
.S PSOTG2="" F S PSOTG2=$O(^XTMP("SDPSO145","PAT","E",PSOTG1,PSOTG2)) Q:PSOTG2=""!(PSOLPQT) S PSOTG3="" F S PSOTG3=$O(^XTMP("SDPSO145","PAT","E",PSOTG1,PSOTG2,PSOTG3)) Q:PSOTG3=""!(PSOLPQT) D
..S PSONODAD=$G(^XTMP("SDPSO145","PAT","E",PSOTG1,PSOTG2,PSOTG3))
..I $P($G(^PS(52.91,PSOTG1,0)),"^",5),'PSONODAD D Q ;Entry exists, if this date is sooner, replace, if you get a Station Number
...I PSOTG3'<$P($G(^PS(52.91,PSOTG1,0)),"^",5) Q
...I PSOTG2=$P($G(^PS(52.91,PSOTG1,0)),"^",8) K DIE,DA,DR S DIE="^PS(52.91,",DA=PSOTG1,DR="4////"_PSOTG3 D ^DIE K DIE,DA,DR Q
...K PSOTPSNM,PSOSTATI,DIC,DIQ,DD,DR S DIC=4,DR="99",DA=+PSOTG2,DIQ(0)="I",DIQ="PSOSTATI" D EN^DIQ1 S PSOTPSNM=$G(PSOSTATI(4,+PSOTG2,99,"I")) K DIC,DIQ,DR,DA,PSOSTATI
...I $G(PSOTPSNM)="" K PSOTPSNM Q
...K DA,DIE,DR S DIE="^PS(52.91,",DA=PSOTG1,DR="4////"_PSOTG3_";6////"_PSOTPSNM_";7////"_PSOTG2 D ^DIE K DA,DIE,DR
...K PSOTPSNM
..I $D(^PS(52.91,PSOTG1,0)),'PSONODAD D Q
...I PSOTG2=$P($G(^PS(52.91,PSOTG1,0)),"^",8) K DIE,DA,DR S DIE="^PS(52.91,",DA=PSOTG1,DR="4////"_PSOTG3 D ^DIE K DIE,DA,DR Q
...K PSOTPSNM,PSOSTATI,DIC,DIQ,DD,DR S DIC=4,DR="99",DA=+PSOTG2,DIQ(0)="I",DIQ="PSOSTATI" D EN^DIQ1 S PSOTPSNM=$G(PSOSTATI(4,+PSOTG2,99,"I")) K DIC,DIQ,DR,DA,PSOSTATI
...I $G(PSOTPSNM)="" K PSOTPSNM Q
...K DA,DIE,DR S DIE="^PS(52.91,",DA=PSOTG1,DR="4////"_PSOTG3_";6////"_PSOTPSNM_";7////"_PSOTG2 D ^DIE K DA,DIE,DR
...K PSOTPSNM
..I $D(^PS(52.91,PSOTG1,0)) Q
..K PSOENRLD S PSOENRLD=$$ENR^PSOTPCRX(PSOTG1,3030725) I '$G(PSOENRLD) S ^XTMP("SDPSO145","NOTEN",PSOTG1)="",PSOLPQT=1 Q
..K PSOACTRX S PSOACTRX=$$RX^PSOTPCRX(PSOTG1) I $G(PSOACTRX) D EWL^PSOTPCRX S PSOLPQT=1 Q
..K PSOTPSNM
..K PSOSTATI,DIC,DIQ,DD,DR S DIC=4,DR="99",DA=+PSOTG2,DIQ(0)="I",DIQ="PSOSTATI" D EN^DIQ1 S PSOTPSNM=$G(PSOSTATI(4,+PSOTG2,99,"I")) K DIC,DIQ,DR,DA,PSOSTATI
..I $G(PSOTPSNM)="" S ^XTMP("SDPSO145","PROB1",PSOTG1)="" K PSOTPSNM Q
..I '$D(^PS(52.91,PSOTG1,0)) K DIC S DIC="^PS(52.91,",DIC(0)="L",(X,DINUM)=PSOTG1,DIC("DR")="1////"_DT_";5////"_"E"_";6////"_PSOTPSNM_";7////"_PSOTG2 S:'$G(PSONODAD) DIC("DR")=DIC("DR")_";4////"_PSOTG3 D
...K DD,DO D FILE^DICN K DD,DO,DIE,X,DINUM
...I Y'>0 S ^XTMP("SDPSO145","PROB",PSOTG1)="" Q
...S PSOETOT=PSOETOT+1
...K ^XTMP("SDPSO145","PROB",PSOTG1)
...K ^XTMP("SDPSO145","PROB1",PSOTG1)
;LOOP THROUGH SCHEDULING XTMP HERE
D SCH^PSOTPCRX
PASS ;
S ^XTMP("SDPSO145","ELIG")=+$G(PSOETOT)
S ^XTMP("SDPSO145","INEL")=+$G(PSOITOT)
D EN^PSO145PS
D NOW^%DTC S Y=% D DD^%DT S ^XTMP("SDPSO145","STOP")=$G(Y) K Y
;***need HL7 routine name (moved to phase 2)
;I '$$PATCH^XPDUTL("PSO*7.0*145") S ZTRTN="NAME^EXTRACT",ZTIO="",ZTDESC="TPB EIGIBILITY FILE EXTRACT",ZTDTH=$H D ^%ZTLOAD K ZTRTN,ZTIO,ZTDESC,ZTDTH
D MAIL
L -^XTMP("SDPSO145")
K DA,DIE,DR S DA=$O(^DIC(19,"B","PSO TPB PATIENT ENTER/EDIT",0)) I DA S DIE="^DIC(19,",DR="2////"_"@" D ^DIE K DIE,DA,DR
S:$D(ZTQUEUED) ZTREQ="@"
Q
MAIL ;
N PSOTUCI,PSOTUCI1,XMTEXT,XMSUB,XMDUZ,XMY,PSOMLIN,PSOMLINN,PSOTDEL,PSOMNAME,PSOMLLP,PSOMLCT,PSOSTEXT,PSOQTIME,X,Y,%
S PSOMLINN="" S PSOMLIN=$P($G(^XMB(1,1,"XUS")),"^",17) I PSOMLIN'>0 S PSOMLIN=$G(DUZ(2))
I PSOMLIN S PSOMLINN=$P($G(^DIC(4,PSOMLIN,0)),"^")
S XMSUB=$S($G(PSOMLINN)="":"Unknown Institution",1:$G(PSOMLINN)_" ("_$G(PSOMLIN)_")")_" TPB FILE BUILD"
S XMDUZ="Patch PSO*7*145 Post Install" I $G(DUZ) S XMY(DUZ)=""
X ^%ZOSF("UCI") S PSOTUCI=$P($G(Y),",") S PSOTUCI1=$P($G(^%ZOSF("PROD")),",") I PSOTUCI=PSOTUCI1 D
.S XMY("TEMPLETON,SHANNON@DOMAIN.EXT")=""
.S XMY("BROCKERT,JUDITH@DOMAIN.EXT")=""
.S XMY("CHOW,ANGELA@DOMAIN.EXT")=""
.S XMY("RUZBACKI,RON@DOMAIN.EXT")=""
.S XMY("BARRON,LUANNE@DOMAIN.EXT")=""
.S XMY("WASHINGTON,JANET P@DOMAIN.EXT")=""
I $G(PSOTLOCK) D G MAILX
.D NOW^%DTC S Y=% X ^DD("DD") S PSOQTIME=Y
.K PSOSTEXT S PSOSTEXT(1)="The TPB ELIGIBILITY file building, and other post-install functions of",PSOSTEXT(2)="patch PSO*7*145, queued to run at "_$G(PSOQTIME)_",",PSOSTEXT(3)="was NOT run, because the XTMP patient global was locked."
.S PSOSTEXT(4)="This Post-Install may have been queued by another user. Please contact",PSOSTEXT(5)="Customer Support."
S PSOSTEXT(1)="The Post-Init from Patch PSO*7.0*145 is complete. The TPB ELIGIBILITY",PSOSTEXT(2)="File (#52.91) has been populated.",PSOSTEXT(3)=" "
S PSOSTEXT(4)="The job started at "_$G(^XTMP("SDPSO145","START")),PSOSTEXT(5)="The job ended at "_$G(^XTMP("SDPSO145","STOP")),PSOSTEXT(6)=" "
S PSOSTEXT(7)="Total number of eligible patients added to file = "_$G(^XTMP("SDPSO145","ELIG")),PSOSTEXT(8)="Total number of ineligible patients added to file = "_$G(^XTMP("SDPSO145","INEL")),PSOSTEXT(9)=" "
S PSOMLCT=10
S PSOTDEL="" F S PSOTDEL=$O(^XTMP("SDPSO145","PROB",PSOTDEL)) Q:PSOTDEL="" I $D(^PS(52.91,PSOTDEL,0)) K ^XTMP("SDPSO145","PROB",PSOTDEL)
S PSOTDEL="" F S PSOTDEL=$O(^XTMP("SDPDO145","PROB1",PSOTDEL)) Q:PSOTDEL="" I $D(^PS(52.91,PSOTDEL,0)) K ^XTMP("SDPSO145","PROB1",PSOTDEL)
I $O(^XTMP("SDPSO145","PROB",0)) D
.S PSOSTEXT(PSOMLCT)="The following patients qualify for the Transitional Pharmacy",PSOMLCT=PSOMLCT+1,PSOSTEXT(PSOMLCT)="Benefit, but were unable to be added to the file for unknown reasons:",PSOMLCT=PSOMLCT+1
.S PSOMLLP="" F S PSOMLLP=$O(^XTMP("SDPSO145","PROB",PSOMLLP)) Q:PSOMLLP="" D
..D PNM
..S PSOSTEXT(PSOMLCT)=$G(PSOMNAME)_$G(^XTMP("SDPSO145","PROB",PSOMLLP)),PSOMLCT=PSOMLCT+1
I PSOMLCT>10 S PSOSTEXT(PSOMLCT)=" ",PSOMLCT=PSOMLCT+1
I $O(^XTMP("SDPSO145","PROB1",0)) D
.S PSOSTEXT(PSOMLCT)="The following patients qualify for the Transitional Pharmacy",PSOMLCT=PSOMLCT+1,PSOSTEXT(PSOMLCT)="Benefit, but were unable to be added to the file because a Station Number",PSOMLCT=PSOMLCT+1
.S PSOSTEXT(PSOMLCT)="could not be found for the Institution associated with the patient:",PSOMLCT=PSOMLCT+1
.S PSOMLLP="" F S PSOMLLP=$O(^XTMP("SDPSO145","PROB1",PSOMLLP)) Q:PSOMLLP="" D
..D PNM
..S PSOSTEXT(PSOMLCT)=$G(PSOMNAME)_$G(^XTMP("SDPSO145","PROB1",PSOMLLP)),PSOMLCT=PSOMLCT+1
MAILX ;
I $O(XMY(""))'="" S XMTEXT="PSOSTEXT(" N DIFROM D ^XMD
K PSOSTEXT,XMTEXT,XMSUB,XMDUZ,XMY
Q
GETDATE ;
N PSONOW,PSOTODAY,X,Y,PSOSAVEY,PSOSAVEX,PSOXXX
S ZTDTH="",PSONOW=0
D NOW^%DTC S (Y,PSOTODAY)=% D DD^%DT
D BMES^XPDUTL("At the following prompt, enter a starting date@time")
D MES^XPDUTL("or enter NOW to queue the job immediately.")
D BMES^XPDUTL("If this prompting is during patch installation, you may not see what you type.")
W ! K %DT D NOW^%DTC S %DT="RAEX",%DT(0)=%,%DT("A")="Queue TPB Eligibility File building job for what Date@Time: "
D ^%DT K %DT I $D(DTOUT)!(Y<0) W "Task will be queued to run NOW" S ZTDTH=$H,PSONOW=1
S PSOSAVEY=Y
I 'PSONOW,PSOSAVEY>0 D
.S Y=PSOSAVEY D DD^%DT
.S PSOSAVEX=Y
I 'PSONOW,$G(PSOSAVEY)<0 K PSOXXX,PSOSAVEX,PSOSAVEY,X,Y,PSONOW,PSOTODAY G GETDATE
ASK ;
D BMES^XPDUTL("Task will be queued to run "_$S(PSONOW:"NOW",1:PSOSAVEX)_". Is that correct? ")
R PSOXXX:300 S:'$T!($G(PSOXXX)="") PSOXXX="Y" S PSOXXX=$$UP^XLFSTR(PSOXXX) I PSOXXX'="Y",PSOXXX'="YES",PSOXXX'="N",PSOXXX'="NO" W "Enter Y or N" G ASK
I PSOXXX'="Y",PSOXXX'="YES" K PSOXXX,PSOSAVEX,PSOSAVEY,X,Y,PSONOW,PSOTODAY G GETDATE
I PSOSAVEY>0,ZTDTH="" S ZTDTH=PSOSAVEY
I ZTDTH="" S ZTDTH=$H
Q
PNM ;
N DFN,VADM,VA,VAERR
K PSOMNANE,VADM
S DFN=+$G(PSOMLLP) I 'DFN Q
D DEM^VADPT I $G(VADM(1))="" K VADM Q
S PSOMNAME=$G(VADM(1))
K VADM
K VA,VAERR S DFN=+$G(PSOMLLP) D PID^VADPT6
S PSOMNAME=PSOMNAME_" "_"("_$G(VA("BID"))_")"
K VA,VAERR
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOTPPOS 9888 printed Oct 16, 2024@18:36:34 Page 2
PSOTPPOS ;BIR/RTR-Patch 145 Post Install routine ;07/27/03
+1 ;;7.0;OUTPATIENT PHARMACY;**145**;DEC 1997
+2 ;Reference to SDPHARM supported by DBIA 4193
+3 ;Reference to SDPBE supported by DBIA 4194
+4 ;Reference to DIC(19 supported by DBIA 2246
+5 ;Reference to DIC(4 supported by DBIA 2251
+6 ;
+7 GOTO FILE
+8 NEW PSOTPLLZ,PSOTPFLG
+9 SET PSOTPFLG=0
+10 SET PSOTPLLZ=""
FOR
SET PSOTPLLZ=$ORDER(^PS(53,"B","NON-VA",PSOTPLLZ))
if PSOTPLLZ=""
QUIT
Begin DoDot:1
+11 IF $PIECE($GET(^PS(53,PSOTPLLZ,0)),"^")="NON-VA"
SET $PIECE(^(0),"^",6)=5
SET PSOTPFLG=PSOTPFLG+1
End DoDot:1
+12 IF '$GET(PSOTPFLG)
DO BMES^XPDUTL("Could not find a NON-VA entry in the RX PATIENT STATUS file.")
DO MES^XPDUTL("Please contact National Vista Support!")
+13 IF $GET(PSOTPFLG)>1
DO BMES^XPDUTL("Found multiple entries of NON-VA in the RX PATIENT STATUS file.")
DO MES^XPDUTL("Please contact National Vista Support!")
+14 ;
FILE ;Populate TPB file
+1 ;N VARIABLE
+2 ;S ZTDTH=""
+3 ;I $D(ZTQUEUED) S ZTDTH=$H
+4 LOCK +^XTMP("SDPSO145"):0
IF '$TEST
Begin DoDot:1
+5 DO BMES^XPDUTL("Post-Init for patch PSO*7*145 is already running. Halting..")
End DoDot:1
QUIT
+6 ;I ZTDTH="" D
+7 ;.D BMES^XPDUTL("Auto-Populate TPB ELIGIBILITY (#52.91) File.")
+8 ;.D BMES^XPDUTL("If no start date/time is entered when prompted, the background job will ")
+9 ;.D MES^XPDUTL("be queued to run NOW.")
+10 ;.D GETDATE
+11 ;.D BMES^XPDUTL("Queuing background job to populate TPB ELIGIBILITY (#52.91) File.")
+12 ;S ZTDTH=@XPDGREF@("PSOPINIT")
+13 IF '$GET(^XTMP("SDPSO145","PSOTINIT"))
DO BMES^XPDUTL("Install aborted, cannot determine post-install task time..")
QUIT
+14 SET ZTDTH=$GET(^XTMP("SDPSO145","PSOTINIT"))
LOCK -^XTMP("SDPSO145")
+15 SET ZTRTN="START^PSOTPPOS"
SET ZTIO=""
SET ZTDESC="Populate TPB ELIGIBILITY FILE"
DO ^%ZTLOAD
KILL ZTDTH,ZTRTN,ZTIO,ZTDESC
+16 IF $DATA(ZTSK)&('$DATA(ZTQUEUED))
DO BMES^XPDUTL("Task Queued!")
+17 QUIT
START ;Build TPC Eligibility file
+1 IF '$GET(DT)
SET DT=$$DT^XLFDT
+2 SET U="^"
+3 NEW PSOACTRX,PSOENRLD,PSOLPQT,PSONODAD,PSOTG1,PSOTG2,PSOTG3,PSOETOT,PSOITOT,PSOTLOCK,PSOTPSNM,PSOSTATI
+4 SET (PSOETOT,PSOITOT)=0
+5 SET PSOTLOCK=0
+6 LOCK +^XTMP("SDPSO145"):0
IF '$TEST
SET PSOTLOCK=1
DO MAIL
if $DATA(ZTQUEUED)
SET ZTREQ="@"
QUIT
+7 KILL ^XTMP("SDPSO145")
+8 SET X1=DT
SET X2=+60
DO C^%DTC
SET ^XTMP("SDPSO145",0)=$GET(X)_"^"_DT
KILL X1,X2
+9 DO NOW^%DTC
SET Y=%
DO DD^%DT
SET ^XTMP("SDPSO145","START")=$GET(Y)
+10 DO ^SDPHARM
+11 DO ^SDPBE
+12 IF '$DATA(^XTMP("SDPSO145","PAT"))
GOTO PASS
+13 SET PSOTG1=""
FOR
SET PSOTG1=$ORDER(^XTMP("SDPSO145","PAT","E",PSOTG1))
if PSOTG1=""
QUIT
Begin DoDot:1
+14 ;Multiple Installs check
IF $DATA(^PS(52.91,PSOTG1,0))
QUIT
+15 SET PSOLPQT=0
+16 SET PSOTG2=""
FOR
SET PSOTG2=$ORDER(^XTMP("SDPSO145","PAT","E",PSOTG1,PSOTG2))
if PSOTG2=""!(PSOLPQT)
QUIT
SET PSOTG3=""
FOR
SET PSOTG3=$ORDER(^XTMP("SDPSO145","PAT","E",PSOTG1,PSOTG2,PSOTG3))
if PSOTG3=""!(PSOLPQT)
QUIT
Begin DoDot:2
+17 SET PSONODAD=$GET(^XTMP("SDPSO145","PAT","E",PSOTG1,PSOTG2,PSOTG3))
+18 ;Entry exists, if this date is sooner, replace, if you get a Station Number
IF $PIECE($GET(^PS(52.91,PSOTG1,0)),"^",5)
IF 'PSONODAD
Begin DoDot:3
+19 IF PSOTG3'<$PIECE($GET(^PS(52.91,PSOTG1,0)),"^",5)
QUIT
+20 IF PSOTG2=$PIECE($GET(^PS(52.91,PSOTG1,0)),"^",8)
KILL DIE,DA,DR
SET DIE="^PS(52.91,"
SET DA=PSOTG1
SET DR="4////"_PSOTG3
DO ^DIE
KILL DIE,DA,DR
QUIT
+21 KILL PSOTPSNM,PSOSTATI,DIC,DIQ,DD,DR
SET DIC=4
SET DR="99"
SET DA=+PSOTG2
SET DIQ(0)="I"
SET DIQ="PSOSTATI"
DO EN^DIQ1
SET PSOTPSNM=$GET(PSOSTATI(4,+PSOTG2,99,"I"))
KILL DIC,DIQ,DR,DA,PSOSTATI
+22 IF $GET(PSOTPSNM)=""
KILL PSOTPSNM
QUIT
+23 KILL DA,DIE,DR
SET DIE="^PS(52.91,"
SET DA=PSOTG1
SET DR="4////"_PSOTG3_";6////"_PSOTPSNM_";7////"_PSOTG2
DO ^DIE
KILL DA,DIE,DR
+24 KILL PSOTPSNM
End DoDot:3
QUIT
+25 IF $DATA(^PS(52.91,PSOTG1,0))
IF 'PSONODAD
Begin DoDot:3
+26 IF PSOTG2=$PIECE($GET(^PS(52.91,PSOTG1,0)),"^",8)
KILL DIE,DA,DR
SET DIE="^PS(52.91,"
SET DA=PSOTG1
SET DR="4////"_PSOTG3
DO ^DIE
KILL DIE,DA,DR
QUIT
+27 KILL PSOTPSNM,PSOSTATI,DIC,DIQ,DD,DR
SET DIC=4
SET DR="99"
SET DA=+PSOTG2
SET DIQ(0)="I"
SET DIQ="PSOSTATI"
DO EN^DIQ1
SET PSOTPSNM=$GET(PSOSTATI(4,+PSOTG2,99,"I"))
KILL DIC,DIQ,DR,DA,PSOSTATI
+28 IF $GET(PSOTPSNM)=""
KILL PSOTPSNM
QUIT
+29 KILL DA,DIE,DR
SET DIE="^PS(52.91,"
SET DA=PSOTG1
SET DR="4////"_PSOTG3_";6////"_PSOTPSNM_";7////"_PSOTG2
DO ^DIE
KILL DA,DIE,DR
+30 KILL PSOTPSNM
End DoDot:3
QUIT
+31 IF $DATA(^PS(52.91,PSOTG1,0))
QUIT
+32 KILL PSOENRLD
SET PSOENRLD=$$ENR^PSOTPCRX(PSOTG1,3030725)
IF '$GET(PSOENRLD)
SET ^XTMP("SDPSO145","NOTEN",PSOTG1)=""
SET PSOLPQT=1
QUIT
+33 KILL PSOACTRX
SET PSOACTRX=$$RX^PSOTPCRX(PSOTG1)
IF $GET(PSOACTRX)
DO EWL^PSOTPCRX
SET PSOLPQT=1
QUIT
+34 KILL PSOTPSNM
+35 KILL PSOSTATI,DIC,DIQ,DD,DR
SET DIC=4
SET DR="99"
SET DA=+PSOTG2
SET DIQ(0)="I"
SET DIQ="PSOSTATI"
DO EN^DIQ1
SET PSOTPSNM=$GET(PSOSTATI(4,+PSOTG2,99,"I"))
KILL DIC,DIQ,DR,DA,PSOSTATI
+36 IF $GET(PSOTPSNM)=""
SET ^XTMP("SDPSO145","PROB1",PSOTG1)=""
KILL PSOTPSNM
QUIT
+37 IF '$DATA(^PS(52.91,PSOTG1,0))
KILL DIC
SET DIC="^PS(52.91,"
SET DIC(0)="L"
SET (X,DINUM)=PSOTG1
SET DIC("DR")="1////"_DT_";5////"_"E"_";6////"_PSOTPSNM_";7////"_PSOTG2
if '$GET(PSONODAD)
SET DIC("DR")=DIC("DR")_";4////"_PSOTG3
Begin DoDot:3
+38 KILL DD,DO
DO FILE^DICN
KILL DD,DO,DIE,X,DINUM
+39 IF Y'>0
SET ^XTMP("SDPSO145","PROB",PSOTG1)=""
QUIT
+40 SET PSOETOT=PSOETOT+1
+41 KILL ^XTMP("SDPSO145","PROB",PSOTG1)
+42 KILL ^XTMP("SDPSO145","PROB1",PSOTG1)
End DoDot:3
End DoDot:2
End DoDot:1
+43 ;LOOP THROUGH SCHEDULING XTMP HERE
+44 DO SCH^PSOTPCRX
PASS ;
+1 SET ^XTMP("SDPSO145","ELIG")=+$GET(PSOETOT)
+2 SET ^XTMP("SDPSO145","INEL")=+$GET(PSOITOT)
+3 DO EN^PSO145PS
+4 DO NOW^%DTC
SET Y=%
DO DD^%DT
SET ^XTMP("SDPSO145","STOP")=$GET(Y)
KILL Y
+5 ;***need HL7 routine name (moved to phase 2)
+6 ;I '$$PATCH^XPDUTL("PSO*7.0*145") S ZTRTN="NAME^EXTRACT",ZTIO="",ZTDESC="TPB EIGIBILITY FILE EXTRACT",ZTDTH=$H D ^%ZTLOAD K ZTRTN,ZTIO,ZTDESC,ZTDTH
+7 DO MAIL
+8 LOCK -^XTMP("SDPSO145")
+9 KILL DA,DIE,DR
SET DA=$ORDER(^DIC(19,"B","PSO TPB PATIENT ENTER/EDIT",0))
IF DA
SET DIE="^DIC(19,"
SET DR="2////"_"@"
DO ^DIE
KILL DIE,DA,DR
+10 if $DATA(ZTQUEUED)
SET ZTREQ="@"
+11 QUIT
MAIL ;
+1 NEW PSOTUCI,PSOTUCI1,XMTEXT,XMSUB,XMDUZ,XMY,PSOMLIN,PSOMLINN,PSOTDEL,PSOMNAME,PSOMLLP,PSOMLCT,PSOSTEXT,PSOQTIME,X,Y,%
+2 SET PSOMLINN=""
SET PSOMLIN=$PIECE($GET(^XMB(1,1,"XUS")),"^",17)
IF PSOMLIN'>0
SET PSOMLIN=$GET(DUZ(2))
+3 IF PSOMLIN
SET PSOMLINN=$PIECE($GET(^DIC(4,PSOMLIN,0)),"^")
+4 SET XMSUB=$SELECT($GET(PSOMLINN)="":"Unknown Institution",1:$GET(PSOMLINN)_" ("_$GET(PSOMLIN)_")")_" TPB FILE BUILD"
+5 SET XMDUZ="Patch PSO*7*145 Post Install"
IF $GET(DUZ)
SET XMY(DUZ)=""
+6 XECUTE ^%ZOSF("UCI")
SET PSOTUCI=$PIECE($GET(Y),",")
SET PSOTUCI1=$PIECE($GET(^%ZOSF("PROD")),",")
IF PSOTUCI=PSOTUCI1
Begin DoDot:1
+7 SET XMY("TEMPLETON,SHANNON@DOMAIN.EXT")=""
+8 SET XMY("BROCKERT,JUDITH@DOMAIN.EXT")=""
+9 SET XMY("CHOW,ANGELA@DOMAIN.EXT")=""
+10 SET XMY("RUZBACKI,RON@DOMAIN.EXT")=""
+11 SET XMY("BARRON,LUANNE@DOMAIN.EXT")=""
+12 SET XMY("WASHINGTON,JANET P@DOMAIN.EXT")=""
End DoDot:1
+13 IF $GET(PSOTLOCK)
Begin DoDot:1
+14 DO NOW^%DTC
SET Y=%
XECUTE ^DD("DD")
SET PSOQTIME=Y
+15 KILL PSOSTEXT
SET PSOSTEXT(1)="The TPB ELIGIBILITY file building, and other post-install functions of"
SET PSOSTEXT(2)="patch PSO*7*145, queued to run at "_$GET(PSOQTIME)_","
SET PSOSTEXT(3)="was NOT run, because the XTMP patient global was locked."
+16 SET PSOSTEXT(4)="This Post-Install may have been queued by another user. Please contact"
SET PSOSTEXT(5)="Customer Support."
End DoDot:1
GOTO MAILX
+17 SET PSOSTEXT(1)="The Post-Init from Patch PSO*7.0*145 is complete. The TPB ELIGIBILITY"
SET PSOSTEXT(2)="File (#52.91) has been populated."
SET PSOSTEXT(3)=" "
+18 SET PSOSTEXT(4)="The job started at "_$GET(^XTMP("SDPSO145","START"))
SET PSOSTEXT(5)="The job ended at "_$GET(^XTMP("SDPSO145","STOP"))
SET PSOSTEXT(6)=" "
+19 SET PSOSTEXT(7)="Total number of eligible patients added to file = "_$GET(^XTMP("SDPSO145","ELIG"))
SET PSOSTEXT(8)="Total number of ineligible patients added to file = "_$GET(^XTMP("SDPSO145","INEL"))
SET PSOSTEXT(9)=" "
+20 SET PSOMLCT=10
+21 SET PSOTDEL=""
FOR
SET PSOTDEL=$ORDER(^XTMP("SDPSO145","PROB",PSOTDEL))
if PSOTDEL=""
QUIT
IF $DATA(^PS(52.91,PSOTDEL,0))
KILL ^XTMP("SDPSO145","PROB",PSOTDEL)
+22 SET PSOTDEL=""
FOR
SET PSOTDEL=$ORDER(^XTMP("SDPDO145","PROB1",PSOTDEL))
if PSOTDEL=""
QUIT
IF $DATA(^PS(52.91,PSOTDEL,0))
KILL ^XTMP("SDPSO145","PROB1",PSOTDEL)
+23 IF $ORDER(^XTMP("SDPSO145","PROB",0))
Begin DoDot:1
+24 SET PSOSTEXT(PSOMLCT)="The following patients qualify for the Transitional Pharmacy"
SET PSOMLCT=PSOMLCT+1
SET PSOSTEXT(PSOMLCT)="Benefit, but were unable to be added to the file for unknown reasons:"
SET PSOMLCT=PSOMLCT+1
+25 SET PSOMLLP=""
FOR
SET PSOMLLP=$ORDER(^XTMP("SDPSO145","PROB",PSOMLLP))
if PSOMLLP=""
QUIT
Begin DoDot:2
+26 DO PNM
+27 SET PSOSTEXT(PSOMLCT)=$GET(PSOMNAME)_$GET(^XTMP("SDPSO145","PROB",PSOMLLP))
SET PSOMLCT=PSOMLCT+1
End DoDot:2
End DoDot:1
+28 IF PSOMLCT>10
SET PSOSTEXT(PSOMLCT)=" "
SET PSOMLCT=PSOMLCT+1
+29 IF $ORDER(^XTMP("SDPSO145","PROB1",0))
Begin DoDot:1
+30 SET PSOSTEXT(PSOMLCT)="The following patients qualify for the Transitional Pharmacy"
SET PSOMLCT=PSOMLCT+1
SET PSOSTEXT(PSOMLCT)="Benefit, but were unable to be added to the file because a Station Number"
SET PSOMLCT=PSOMLCT+1
+31 SET PSOSTEXT(PSOMLCT)="could not be found for the Institution associated with the patient:"
SET PSOMLCT=PSOMLCT+1
+32 SET PSOMLLP=""
FOR
SET PSOMLLP=$ORDER(^XTMP("SDPSO145","PROB1",PSOMLLP))
if PSOMLLP=""
QUIT
Begin DoDot:2
+33 DO PNM
+34 SET PSOSTEXT(PSOMLCT)=$GET(PSOMNAME)_$GET(^XTMP("SDPSO145","PROB1",PSOMLLP))
SET PSOMLCT=PSOMLCT+1
End DoDot:2
End DoDot:1
MAILX ;
+1 IF $ORDER(XMY(""))'=""
SET XMTEXT="PSOSTEXT("
NEW DIFROM
DO ^XMD
+2 KILL PSOSTEXT,XMTEXT,XMSUB,XMDUZ,XMY
+3 QUIT
GETDATE ;
+1 NEW PSONOW,PSOTODAY,X,Y,PSOSAVEY,PSOSAVEX,PSOXXX
+2 SET ZTDTH=""
SET PSONOW=0
+3 DO NOW^%DTC
SET (Y,PSOTODAY)=%
DO DD^%DT
+4 DO BMES^XPDUTL("At the following prompt, enter a starting date@time")
+5 DO MES^XPDUTL("or enter NOW to queue the job immediately.")
+6 DO BMES^XPDUTL("If this prompting is during patch installation, you may not see what you type.")
+7 WRITE !
KILL %DT
DO NOW^%DTC
SET %DT="RAEX"
SET %DT(0)=%
SET %DT("A")="Queue TPB Eligibility File building job for what Date@Time: "
+8 DO ^%DT
KILL %DT
IF $DATA(DTOUT)!(Y<0)
WRITE "Task will be queued to run NOW"
SET ZTDTH=$HOROLOG
SET PSONOW=1
+9 SET PSOSAVEY=Y
+10 IF 'PSONOW
IF PSOSAVEY>0
Begin DoDot:1
+11 SET Y=PSOSAVEY
DO DD^%DT
+12 SET PSOSAVEX=Y
End DoDot:1
+13 IF 'PSONOW
IF $GET(PSOSAVEY)<0
KILL PSOXXX,PSOSAVEX,PSOSAVEY,X,Y,PSONOW,PSOTODAY
GOTO GETDATE
ASK ;
+1 DO BMES^XPDUTL("Task will be queued to run "_$SELECT(PSONOW:"NOW",1:PSOSAVEX)_". Is that correct? ")
+2 READ PSOXXX:300
if '$TEST!($GET(PSOXXX)="")
SET PSOXXX="Y"
SET PSOXXX=$$UP^XLFSTR(PSOXXX)
IF PSOXXX'="Y"
IF PSOXXX'="YES"
IF PSOXXX'="N"
IF PSOXXX'="NO"
WRITE "Enter Y or N"
GOTO ASK
+3 IF PSOXXX'="Y"
IF PSOXXX'="YES"
KILL PSOXXX,PSOSAVEX,PSOSAVEY,X,Y,PSONOW,PSOTODAY
GOTO GETDATE
+4 IF PSOSAVEY>0
IF ZTDTH=""
SET ZTDTH=PSOSAVEY
+5 IF ZTDTH=""
SET ZTDTH=$HOROLOG
+6 QUIT
PNM ;
+1 NEW DFN,VADM,VA,VAERR
+2 KILL PSOMNANE,VADM
+3 SET DFN=+$GET(PSOMLLP)
IF 'DFN
QUIT
+4 DO DEM^VADPT
IF $GET(VADM(1))=""
KILL VADM
QUIT
+5 SET PSOMNAME=$GET(VADM(1))
+6 KILL VADM
+7 KILL VA,VAERR
SET DFN=+$GET(PSOMLLP)
DO PID^VADPT6
+8 SET PSOMNAME=PSOMNAME_" "_"("_$GET(VA("BID"))_")"
+9 KILL VA,VAERR
+10 QUIT